New upstream version 1.8.24

This commit is contained in:
Ludovic Rousseau 2018-10-12 11:16:36 +02:00
parent c13142777b
commit e4a22c05f5
88 changed files with 3176 additions and 1975 deletions

24
COPYING
View File

@ -78,30 +78,6 @@ Files src/auth.c and src/auth.h are:
* Author: Nikos Mavrogiannopoulos <nmav@redhat.com> * Author: Nikos Mavrogiannopoulos <nmav@redhat.com>
Files src/sd-daemon.c and src/sd-daemon.h are:
Copyright 2010 Lennart Poettering
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation files
(the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge,
publish, distribute, sublicense, and/or sell copies of the Software,
and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Files src/simclist.c and src/simclist.h are: Files src/simclist.c and src/simclist.h are:
* Copyright (c) 2007,2008,2009,2010,2011 Mij <mij@bitchx.it> * Copyright (c) 2007,2008,2009,2010,2011 Mij <mij@bitchx.it>
* *

View File

@ -1,3 +1,16 @@
1.8.24: Ludovic Rousseau
12 October 2018
- the project moved to https://pcsclite.apdu.fr/
- SCardGetStatusChange(): Fix a rare race condition
- SCardReleaseContext(): do not release a lock owned by another context
- SCardReconnect(): suspend card auto power off
- Allow "=" in serial driver filenames
- Add the thread id in the pcscd log lines
- pcsc-spy: correctly handle incomplete log file
- Simclist: avoid to divide by zero in list_findpos()
- Some other minor improvements
1.8.23: Ludovic Rousseau 1.8.23: Ludovic Rousseau
18 December 2017 18 December 2017
- use libsystemd instead sd-daemon.{c,h} - use libsystemd instead sd-daemon.{c,h}

View File

@ -1,4 +1,639 @@
commit 09f0f85b86e7488cf26642dd17150f76bed5300c (HEAD -> master) commit 73d95ada3221c060cbd7b6aa2375453f9d0e359b (HEAD -> master, origin/master, origin/HEAD)
Author: Ludovic Rousseau <ludovic.rousseau@free.fr>
Date: Fri Oct 12 10:43:51 2018 +0200
Release 1.8.23
ChangeLog | 13 +++++++++++++
configure.ac | 2 +-
2 files changed, 14 insertions(+), 1 deletion(-)
commit eaaf8edac2a960feb884bcf4cd90720757fca0bb
Author: Ludovic Rousseau <ludovic.rousseau@free.fr>
Date: Fri Oct 12 11:00:56 2018 +0200
Fix compiler warning: output may be truncated
winscard_msg.c: In function ClientSetupSession:
winscard_msg.c:134:2: warning: strncpy output may be truncated copying 108 bytes from a string of length 109 [-Wstringop-truncation]
strncpy(svc_addr.sun_path, socketName, sizeof(svc_addr.sun_path));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The source was sizeof(struct sockaddr_un) bytes long.
But the destination was sizeof(svc_addr.sun_path) bytes long only.
svc_addr is a struct sockaddr_un but the sun_path field is shorter (1
byte shorter according to the compiler) than the complete struct
sockaddr_un.
src/winscard_msg.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
commit 2bef09483a51c9835ae70f4647791c9c00b98861
Author: Ludovic Rousseau <ludovic.rousseau@free.fr>
Date: Fri Oct 12 10:53:41 2018 +0200
Fix compiler warning: cast between incompatible function
hotplug_libudev.c: In function HPRegisterForHotplugEvents:
hotplug_libudev.c:769:3: warning: cast between incompatible function types from void (*)(void *) to void * (*)(void *) [-Wcast-function-type]
(PCSCLITE_THREAD_FUNCTION( )) HPEstablishUSBNotifications, udev_monitor))
^
src/hotplug_libudev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
commit 3c80087b60fa30b45ee240f3c58a8562275c08f4
Author: Ludovic Rousseau <ludovic.rousseau@free.fr>
Date: Fri Oct 12 10:52:47 2018 +0200
Fix compiler warning: cast between incompatible function
eventhandler.c: In function EHSpawnEventHandler:
eventhandler.c:234:3: warning: cast between incompatible function types from void (*)(READER_CONTEXT *) {aka void (*)(struct ReaderContext *)} to void * (*)(void *) [-Wcast-function-type]
(PCSCLITE_THREAD_FUNCTION( ))EHStatusHandlerThread, (LPVOID) rContext);
^
src/eventhandler.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
commit d6ba979b448901a063af537ef8ad68ca0b76727a
Author: Ludovic Rousseau <ludovic.rousseau@free.fr>
Date: Fri Oct 12 10:51:48 2018 +0200
Fix compiler warning: cast between incompatible function
winscard_svc.c: In function CreateContextThread:
winscard_svc.c:237:3: warning: cast between incompatible function types from void (*)(void *) to void * (*)(void *) [-Wcast-function-type]
(PCSCLITE_THREAD_FUNCTION( )) ContextThread, (LPVOID) newContext);
^
src/winscard_svc.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
commit 0984e0f4a03e5e29bb5725b6f149f56c9e9c73c2
Author: Mateusz Piotrowski <0mp@FreeBSD.org>
Date: Tue Oct 9 12:10:13 2018 +0200
Remove license information for src/sd-daemon.{c,h}
Those files were removed in 30e10951.
COPYING | 24 ------------------------
1 file changed, 24 deletions(-)
commit db6b67acf7027ecbc275cdb8242cddf3e6508b26 (zotac/master, zmaster)
Author: Ludovic Rousseau <ludovic.rousseau@free.fr>
Date: Mon Oct 8 14:41:53 2018 +0200
Rename POWER_STATE_INUSE -> POWER_STATE_IN_USE
src/pcscd.h.in | 2 +-
src/winscard.c | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
commit 5467a3896755f05e406fda15be090b9376909d6e
Author: Ludovic Rousseau <ludovic.rousseau@free.fr>
Date: Mon Oct 8 14:29:20 2018 +0200
UT for SCardReconnect(): suspend card auto power off
Check the card is not auto powered off after 5 seconds when
SCardReconnect() is used.
UnitaryTests/CheckAutoPowerOff.py | 91 +++++++++++++++++++++++++++++++++++++++
1 file changed, 91 insertions(+)
commit 02dd27bfd19a88c051b91885472e5f6144f7a0a5
Author: Ludovic Rousseau <ludovic.rousseau@free.fr>
Date: Mon Oct 8 14:24:18 2018 +0200
SCardReconnect(): suspend card auto power off
When the card is reconnected the power state must be changed to
POWER_STATE_INUSE so that card auto power off is not triggered.
See associated Unitary Test CheckAutoPowerOff.py
Thanks to Christophe Ferrando for the bug report
src/winscard.c | 6 ++++++
1 file changed, 6 insertions(+)
commit c3bcdeb702658cd6233133b5f092292c9360a7d9
Author: Ludovic Rousseau <ludovic.rousseau@free.fr>
Date: Thu Oct 4 15:12:19 2018 +0200
MSGRemoveContext(): always disconnect the card
We need to call SCardDisconnect() in all cases so that the card use
counter is always decremented when a client disappear.
- when no lock is in use
- when a lock is in use
- but the lock is held by another context
- the lock is held by the current context
The bug effect was that smart card auto power off was not working
correctly.
src/winscard_svc.c | 3 +++
1 file changed, 3 insertions(+)
commit 46d174c492791bdb8205f29b3d5bfd903f4a798d
Author: Ludovic Rousseau <ludovic.rousseau@free.fr>
Date: Thu Oct 4 14:45:12 2018 +0200
MSGRemoveContext(): Do not reset the card if no lock
If the card was not locked (PC/SC transaction) then no need to reset it
when the context is released.
src/winscard_svc.c | 46 +++++++++++++++++++++++++++-------------------
1 file changed, 27 insertions(+), 19 deletions(-)
commit c2d79706d8074cc19c6d1e0a1b7a08137936911c
Author: Ludovic Rousseau <ludovic.rousseau@free.fr>
Date: Thu Oct 4 14:36:27 2018 +0200
MSGRemoveContext(): disconnect also if no lock is ongoing
If SCardDisconnect() is not called by the application it should be
called by pcscd to enable card auto power off.
This fixes a regression added by 57092b3.
src/winscard_svc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
commit dde4deb7f709c2a54d791249a3e08f94a3763ca5
Author: Ludovic Rousseau <ludovic.rousseau@free.fr>
Date: Tue Oct 2 14:30:11 2018 +0200
Unit Test for bug fixed in 57092b3
UnitaryTests/SCardBeginTransaction_SharedMode.py | 132 +++++++++++++++++++++++
1 file changed, 132 insertions(+)
commit 57092b35cab35a9d939cd9094c49d8ecac85f1d2
Author: Ludovic Rousseau <ludovic.rousseau@free.fr>
Date: Tue Oct 2 14:22:48 2018 +0200
MSGRemoveContext(): only release a owned transaction
SCardReleaseContext() shall NOT release a lock (PC/SC transaction)
owned by another context.
Thanks to Frederic Hoerni for the bug report
"[Pcsclite-muscle] closing client cancels ongoing transaction"
http://lists.infradead.org/pipermail/pcsclite-muscle/2018-September/001126.html
src/winscard_svc.c | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
commit ea1ecdeb0fcfb77863ac03615f2c82b48d9a9c9a
Author: Ludovic Rousseau <ludovic.rousseau@free.fr>
Date: Sat Sep 15 18:20:46 2018 +0200
Add the thread id in the log lines
src/debuglog.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
commit ded26af34a07d4bde9e86334519dc1799fbe6633
Author: Ludovic Rousseau <ludovic.rousseau@free.fr>
Date: Fri Jul 27 16:29:37 2018 +0200
Fix compiler warning: missing field 'rv' initializer
winscard_svc.c:814:44: warning: missing field 'rv' initializer
[-Wmissing-field-initializers]
struct wait_reader_state_change waStr = {0};
^
src/winscard_svc.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
commit e632d595fc7f1a7be73353ba2c9d89b509389917
Author: Ludovic Rousseau <ludovic.rousseau@free.fr>
Date: Fri Jul 27 16:28:35 2018 +0200
Fix compiler warning missing field 'rv' initializer
winscard_svc.c:428:47: warning: missing field 'rv' initializer
[-Wmissing-field-initializers]
struct wait_reader_state_change waStr = {0};
src/winscard_svc.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
commit 54224a4cbf60f95f2da5f0978c62656f3369b700
Author: Ludovic Rousseau <ludovic.rousseau@free.fr>
Date: Fri Jul 27 16:00:49 2018 +0200
Fix SCardGetStatusChange() broken in a previous patch 984f84df
The patch in 984f84df10e2d0f432039e3b31f94c74e95092eb broke the
execution of SCardGetStatusChange() when SCardCancel() is used.
The client was waiting for a message that was never sent by the server.
Fortunately the broken code was never released in a stable version of
pcsc-lite.
Thanks to Sam Van Den Berge for the bug report
"[Pcsclite-muscle] SCardCancel broken"
http://lists.infradead.org/pipermail/pcsclite-muscle/2018-July/001096.html
Hello,
It seems like SCardGetStatusChange is currently broken.
This can be tested with UnitaryTests/SCardCancel.
Before commit 984f84df10e2d0f432039e3b31f94c74e95092eb:
$ LD_LIBRARY_PATH=../src/.libs/ ./SCardCancel
SCardEstablishContext:[0x00000000] Command successful.
Press Enter to cancel within 3 seconds
Entering blocking call
Calling SCardCancel...
SCardGetStatusChange:[0x80100002] Command cancelled.
Blocking call canceled
Good
SCardCancel:[0x00000000] Command successful.
SCardReleaseContext:[0x00000000] Command successful.
Waiting thread...
After commit 984f84df10e2d0f432039e3b31f94c74e95092eb:
$ LD_LIBRARY_PATH=../src/.libs/ ./SCardCancel
SCardEstablishContext:[0x00000000] Command successful.
Press Enter to cancel within 3 seconds
Entering blocking call
Calling SCardCancel...
SCardCancel:[0x00000000] Command successful.
<<<<<<<<< SCardGetStatusChange hangs here >>>>>>>>>
I don't have a fix but I just wanted to report this. Besides this big
thank you for all your great work!
Kr,
Sam.
src/winscard_clnt.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
commit ddf725874447a339f4ed69c70e1ad70b3d6c4d1c
Author: Ludovic Rousseau <ludovic.rousseau@free.fr>
Date: Fri Jun 29 17:16:03 2018 +0200
Doxygen: documentation moved to pcsclite.apdu.fr
Update the update.sh script to update the Doxygen documentation pages.
doc/update.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
commit 01677078a426d82f913ca43583390f6cb9e5b29c
Author: Ludovic Rousseau <ludovic.rousseau@free.fr>
Date: Fri Jun 29 16:31:30 2018 +0200
Allow "=" in serial driver filenames
For example the configuration:
LIBPATH /tmp/lib/pcsc/drivers/lib=ccid.dylib
failed with:
00000057 configfile.l:165:evaluatetoken() Error with library /tmp/lib/pcsc/drivers/lib: No such file or directory
The problem was detected on Android 8.0 with file names such as:
/data/app/com.baimobile.android.enterprise.credential.service-4wM9GBtoaS74ZiA0Y25YuQ==/lib/arm64/lib_some_reader_driver.so
Thanks to Alan Kozlay for the bug report and patch.
src/configfile.l | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
commit 08664ae6e9b442ce6e6d54385dcba4d9cb70b2ca
Author: Ludovic Rousseau <ludovic.rousseau@free.fr>
Date: Fri Jun 29 16:28:13 2018 +0200
Doxygen: fix warning
PCSC/src/PCSC/ifdhandler.h:84: warning: Unsupported xml/html tag
<string> found
src/PCSC/ifdhandler.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
commit d412c4bb65cc26f124fd5adb5f81299b08789d8e
Author: Ludovic Rousseau <ludovic.rousseau@free.fr>
Date: Fri Jun 29 16:23:39 2018 +0200
Doxygen: do not document disabled functions
If USE_LIBSYSTEMD is not defined then ListenExistingSocket() is not
implemented and the associated Doxygen documentation should not be
present.
Fix Doxygen warning:
PCSC/src/winscard_msg_srv.c:193: warning: argument 'fd' of command @param is not found in the argument list of ProcessEventsServer(uint32_t *pdwClientID)
src/winscard_msg_srv.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
commit e4f50dc1cf264e0159524043a6f5fc1263942c32
Author: Ludovic Rousseau <ludovic.rousseau@free.fr>
Date: Fri Jun 29 16:19:55 2018 +0200
Doxygen: Use " " for FRIENDLYNAME
The FRIENDLYNAME declaration for reader.conf files must use " " if space
characters are present in the name.
src/PCSC/ifdhandler.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
commit f14658076f12dde739a0e94a71036f62f83b1259
Author: Ludovic Rousseau <ludovic.rousseau@free.fr>
Date: Mon May 28 11:32:21 2018 +0200
Makefile.am: do not distribute DRIVERS
The DRIVERS files has been removed because it was obsolete. Do not
include it in the generated tarball.
Makefile.am | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
commit 5616594ce51a9b1e1fa6d913b3f8001289924a15
Author: Ludovic Rousseau <ludovic.rousseau@free.fr>
Date: Mon May 21 23:06:44 2018 +0200
ifdhandler.h: fix PC/SC Driver Developers Kit URL
It is now at https://muscle.apdu.fr/musclecard.com/sourcedrivers.html
src/PCSC/ifdhandler.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
commit e93d7199fe69f35267421b51e673eca3b0e18b49
Author: Ludovic Rousseau <ludovic.rousseau@free.fr>
Date: Mon May 21 23:05:52 2018 +0200
HELP: fix Musle mailing list information
Move from muscle@lists.musclecard.com to pcsclite-muscle@lists.infradead.org
HELP | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
commit dd40b62179791d108de37dc164da672a12b39064
Author: Ludovic Rousseau <ludovic.rousseau@free.fr>
Date: Mon May 21 23:01:51 2018 +0200
DRIVERS: remove outdated file
Fixes issue #37
"drivers aren't available at given location"
https://github.com/LudovicRousseau/PCSC/issues/37
DRIVERS | 28 ----------------------------
1 file changed, 28 deletions(-)
commit 378ed84c4cfa0b373b793e62540549bf0eeb9b79
Author: Ludovic Rousseau <ludovic.rousseau@free.fr>
Date: Fri May 18 17:54:07 2018 +0200
Fix project URL
Move from pcsclite.alioth.debian.org to pcsclite.apdu.fr
UnitaryTests/BufferOverflow_SCardControl.c | 2 +-
UnitaryTests/BufferOverflow_SCardGetAttrib.c | 2 +-
UnitaryTests/BufferOverflow_SCardTransmit.c | 2 +-
doc/example/pcsc_demo.c | 2 +-
doc/org.debian.pcsc-lite.policy | 2 +-
doc/pcscd.8.in | 2 +-
src/PCSC/debuglog.h | 2 +-
src/PCSC/ifdhandler.h | 7 +++----
src/PCSC/pcsclite.h.in | 2 +-
src/PCSC/reader.h | 2 +-
src/PCSC/winscard.h | 2 +-
src/PCSC/wintypes.h | 2 +-
src/atrhandler.c | 2 +-
src/atrhandler.h | 2 +-
src/auth.c | 2 +-
src/auth.h | 2 +-
src/configfile.h | 2 +-
src/configfile.l | 2 +-
src/debug.c | 2 +-
src/debuglog.c | 2 +-
src/dyn_generic.h | 2 +-
src/dyn_hpux.c | 2 +-
src/dyn_macosx.c | 2 +-
src/dyn_unix.c | 2 +-
src/error.c | 2 +-
src/eventhandler.c | 2 +-
src/eventhandler.h | 2 +-
src/hotplug.h | 2 +-
src/hotplug_generic.c | 2 +-
src/hotplug_libudev.c | 2 +-
src/hotplug_libusb.c | 2 +-
src/hotplug_linux.c | 2 +-
src/hotplug_macosx.c | 2 +-
src/ifdwrapper.c | 2 +-
src/ifdwrapper.h | 2 +-
src/misc.h | 2 +-
src/parser.h | 2 +-
src/pcscd.h.in | 2 +-
src/pcscdaemon.c | 2 +-
src/prothandler.c | 2 +-
src/prothandler.h | 2 +-
src/readerfactory.c | 2 +-
src/readerfactory.h | 2 +-
src/strlcpycat.h | 2 +-
src/sys_generic.h | 2 +-
src/sys_unix.c | 2 +-
src/testpcsc.c | 2 +-
src/tokenparser.l | 2 +-
src/utils.c | 2 +-
src/utils.h | 2 +-
src/utils/formaticc.c | 2 +-
src/utils/installifd.c | 2 +-
src/winscard.c | 2 +-
src/winscard_clnt.c | 2 +-
src/winscard_msg.c | 2 +-
src/winscard_msg.h | 2 +-
src/winscard_msg_srv.c | 2 +-
src/winscard_svc.c | 2 +-
src/winscard_svc.h | 2 +-
59 files changed, 61 insertions(+), 62 deletions(-)
commit 78505c8b025454de296331652b767e7bd198e593
Author: Ludovic Rousseau <ludovic.rousseau@free.fr>
Date: Fri May 18 17:26:13 2018 +0200
README.md: Fix project URL
Move from pcsclite.alioth.debian.org to pcsclite.apdu.fr
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
commit 984f84df10e2d0f432039e3b31f94c74e95092eb
Author: Ludovic Rousseau <ludovic.rousseau@free.fr>
Date: Mon Apr 23 10:03:21 2018 +0200
Fix a rare race condition in SCardGetStatusChange()
Thanks to Maximilian Stein for the patch
[Pcsclite-muscle] Rare race condition in SCardGetStatusChange()
http://lists.infradead.org/pipermail/pcsclite-muscle/2018-April/001068.html
" Hello all,
recently we stumbled upon another (rare) race condition in the
SCardGetStatusChange() function. I especially ask Maksim Ivanov and
Florian Kaiser kindly to share their opinion about the problem and the
proposed fix, since they did a good job in improving
SCardGetStatusChange/SCardCancel in the recent past.
The problem:
The problem is basically the small gap between fetching the reader
states from pcscd [winscard_clnt.c:1741 and 2119] and registering for
event notifications [winscard_clnt.c:2070]. If a notification is sent in
this time period, SCardGetStatusChange() will sleep until another event
or the internal time-out is reached. Consider the following flow of
execution and events:
Precondition: [client] knows the current state of all readers from a
previous call to SCardGetStatusChange() and no changes happened since
then. Basically consider a thread that monitors the reader states which
calls SCardGetStatusChange() in a loop.
1. [client] calls SCardGetStatusChange() and fetches the reader states
from pcscd (line 1741). The fetched states are equal to the already
known states.
2. [pcscd] notices a change in any terminal state (smartcard movement or
number of connected clients to the smartcard changes) and sends a signal
to all *registered* clients via EHSignalEventToClients(). [client] is
not yet registered for event notifications, so EHSignalEventToClients()
won't send anything.
3. [client] continues execution and compares the given reader states to
the states fetched before [pcscd] noticed the change. The states are
equal so it registers for event notifications (line 2070). No
notification was sent, so [client] sleeps until the internal time-out
(60 seconds) is reached.
4. [client] reaches the internal time-out and fetches the current reader
states from [pcscd]. Now the states are different and
SCardGetStatusChange returns.
In the end the state change is noticed thanks to the internal polling
mechanism, but in automated environments, 60 seconds is a very long time
until a state change is detected. The error is most likely to occur if
multiple readers are used and state changes are frequent. Even more
likely it occurs if reader state polling is used by pcscd, i.e. when the
IFD handler does not support asynchronous card event notification (no
capability TAG_IFD_POLLING_THREAD_WITH_TIMEOUT). Then multiple readers
can accumulate their events to be processed in a very small time frame.
Suggestion for a fix:
The proposed fix makes fetching the reader states and registering for
event notifications an atomic action. The command
CMD_WAIT_READER_STATE_CHANGE expected no return value anyway, so I made
it return the reader states equal to CMD_GET_READERS_STATE. The action
is protected by the ClientsWaitingForEvent_lock in eventhandler.c, which
prevents parallel calls of MSGSignalClient() via
EHSignalEventToClients(). This is necessary to prevent a signal before
the reader states are sent, which would appear as garbage in the client
socket.
With the proposed fix, the client is registered for events after the
reader states were fetched. So if any difference is found in the local
and remote state (so that SCardGetStatusChange() returns) we have to
unregister from events. This was not necessary before, but works just
like unregistering after a timeout. This could be refined by checking
why the loop was exited and only unregister if necessary.
Unfortunately the proposed fix will slightly alter the internal protocol
between libpcsclite and pcscd, breaking statically linked client
applications with newer pcscd versions.
Further related thoughts:
I'm a bit uncertain if my proposed fix works nicely with SCardCancel(),
because I can think of one very rare situation when
SCardGetStatusChange() times out and unregisters from event
notifications, then gets cancelled but is not informed about that. Then
it re-registers for notifications, because no changes happened. Thus it
will not returned despite it was cancelled. But this should have been an
issue even before my fix.
I think the notification mechanism could be improved by using "response
headers" analogous to the server side, or just an additional field
"command" in the data structs. This way every message related to reader
state events could be identified by the client and handled respectively.
As I understand it, some of the past issues were because of signal,
cancel or stop-reader-state-change messages messing up the client socket
data. With a command field it can be decided what data the client
received, and what data is still expected to be received.
Best regards
Maximilian Stein "
src/eventhandler.c | 2 ++
src/winscard_clnt.c | 79 ++++++++++++++++++++++++++++++++++++-----------------
src/winscard_msg.h | 2 +-
src/winscard_svc.c | 31 +++++++++++++--------
src/winscard_svc.h | 1 +
5 files changed, 78 insertions(+), 37 deletions(-)
commit 0127d3c73d0ad2072407d880b92baf454992b27d
Author: Nicolas Dusart <dusartnicolas@gmail.com>
Date: Wed Mar 21 18:00:26 2018 +0100
Simclist: avoid to divide by zero in list_findpos()
A division by zero with float is undefined in C.
For example gcc 6.3.0 reports (when detected):
dividebyzero.c:5:20: warning: division by zero [-Wdiv-by-zero]
float a = (float)1/0;
But the code does NOT crash. The value of a is just infinity.
The problem is when Free Pascal runtime is used. In this case the code crashed.
src/simclist.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
commit 2f99e761e000c2c0ef1eb3bd6954b770ac294f22
Author: Ludovic Rousseau <ludovic.rousseau@free.fr>
Date: Fri Feb 2 15:21:25 2018 +0100
pcsc-spy: correctly handle incomplete log file
If the application is interrupted in the middle of a PC/SC call then we
do not get the returned values of the PC/SC call.
The total execution time is then not known and -1 seconds is displayed
instead.
src/spy/pcsc-spy | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
commit cc70541a47058fc0c6f16a964c75dfcd5b7c88e2
Author: Ludovic Rousseau <ludovic.rousseau@free.fr>
Date: Tue Dec 19 16:13:42 2017 +0100
systemd pcscd.service: add Documentation key
For now the documentation refers to pcscd(8) manpage.
etc/pcscd.service.in | 1 +
1 file changed, 1 insertion(+)
commit 09f0f85b86e7488cf26642dd17150f76bed5300c (tag: pcsc-1.8.23)
Author: Ludovic Rousseau <ludovic.rousseau@free.fr> Author: Ludovic Rousseau <ludovic.rousseau@free.fr>
Date: Mon Dec 18 19:56:49 2017 +0100 Date: Mon Dec 18 19:56:49 2017 +0100
@ -8,7 +643,7 @@ Date: Mon Dec 18 19:56:49 2017 +0100
configure.ac | 2 +- configure.ac | 2 +-
2 files changed, 9 insertions(+), 1 deletion(-) 2 files changed, 9 insertions(+), 1 deletion(-)
commit 1dde8427236fa988e9f488baa46d7316691a5555 (origin/master, origin/HEAD) commit 1dde8427236fa988e9f488baa46d7316691a5555
Author: Ludovic Rousseau <ludovic.rousseau@free.fr> Author: Ludovic Rousseau <ludovic.rousseau@free.fr>
Date: Tue Nov 14 15:09:25 2017 +0100 Date: Tue Nov 14 15:09:25 2017 +0100
@ -194,7 +829,7 @@ Date: Tue Aug 1 10:11:29 2017 +0200
configure.ac | 2 +- configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-) 1 file changed, 1 insertion(+), 1 deletion(-)
commit 8946edadaca353d65112664a5fcd7bbe1be54ed5 commit 8946edadaca353d65112664a5fcd7bbe1be54ed5 (zotac/fix)
Author: Ludovic Rousseau <ludovic.rousseau@free.fr> Author: Ludovic Rousseau <ludovic.rousseau@free.fr>
Date: Wed Jul 12 17:59:48 2017 +0200 Date: Wed Jul 12 17:59:48 2017 +0200
@ -209,7 +844,7 @@ Date: Wed Jul 12 17:59:48 2017 +0200
src/simclist.c | 7 +++++++ src/simclist.c | 7 +++++++
1 file changed, 7 insertions(+) 1 file changed, 7 insertions(+)
commit 30e10951f81b9480e788965f89d0d4d0aee909c0 (zotac/master, github/master) commit 30e10951f81b9480e788965f89d0d4d0aee909c0
Author: Ludovic Rousseau <ludovic.rousseau@free.fr> Author: Ludovic Rousseau <ludovic.rousseau@free.fr>
Date: Thu Jul 13 17:52:13 2017 +0200 Date: Thu Jul 13 17:52:13 2017 +0200

28
DRIVERS
View File

@ -1,28 +0,0 @@
DRIVERS
To install USB drivers, download the driver from
http://musclecard.com/software.html and copy it to a temporary location.
After you have unarchived the files copy the directory to
/usr/local/pcsc/drivers/. If the directory /usr/local/pcsc/drivers/
does not exist create it before copying the driver directory to it.
Example Mac OS X, Linux 2.4:
tar -xzvf driver.bundle-0.1.0.tar.gz
cp -r driver.bundle /usr/local/pcsc/drivers/
cd /usr/local/pcsc/drivers/driver.bundle
build or use Project Builder to build
The /usr/local/pcsc/drivers/ directory should contain bundle directories only.
You must restart pcscd to use the new driver.
All OS's:
For non-USB users, you must edit the /etc/reader.conf file.
You can do this easily by running the installifd program in the utils/
directory of pcsc-lite. Some newer drivers require you to specify 1 as the
port and then make a symlink from /dev/pcsc/1 to /dev/ttyS* so you can
enumerate your ports on any Unix without changing the driver.
Refer to the driver README for more information.

5
HELP
View File

@ -1,6 +1,7 @@
General questions: General questions:
Contact the mailing list muscle@lists.musclecard.com Contact the mailing list pcsclite-muscle@lists.infradead.org
(you must subscribe first at http://musclecard.com/list.html) (you must subscribe first at
https://lists.infradead.org/mailman/listinfo/pcsclite-muscle )
Contract work: Contract work:

316
INSTALL
View File

@ -1,8 +1,8 @@
Installation Instructions Installation Instructions
************************* *************************
Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation, Copyright (C) 1994-1996, 1999-2002, 2004-2016 Free Software
Inc. Foundation, Inc.
Copying and distribution of this file, with or without modification, Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright are permitted in any medium without royalty provided the copyright
@ -12,97 +12,96 @@ without warranty of any kind.
Basic Installation Basic Installation
================== ==================
Briefly, the shell command `./configure && make && make install' Briefly, the shell command './configure && make && make install'
should configure, build, and install this package. The following should configure, build, and install this package. The following
more-detailed instructions are generic; see the `README' file for more-detailed instructions are generic; see the 'README' file for
instructions specific to this package. Some packages provide this instructions specific to this package. Some packages provide this
`INSTALL' file but do not implement all of the features documented 'INSTALL' file but do not implement all of the features documented
below. The lack of an optional feature in a given package is not below. The lack of an optional feature in a given package is not
necessarily a bug. More recommendations for GNU packages can be found necessarily a bug. More recommendations for GNU packages can be found
in *note Makefile Conventions: (standards)Makefile Conventions. in *note Makefile Conventions: (standards)Makefile Conventions.
The `configure' shell script attempts to guess correct values for The 'configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses various system-dependent variables used during compilation. It uses
those values to create a `Makefile' in each directory of the package. those values to create a 'Makefile' in each directory of the package.
It may also create one or more `.h' files containing system-dependent It may also create one or more '.h' files containing system-dependent
definitions. Finally, it creates a shell script `config.status' that definitions. Finally, it creates a shell script 'config.status' that
you can run in the future to recreate the current configuration, and a you can run in the future to recreate the current configuration, and a
file `config.log' containing compiler output (useful mainly for file 'config.log' containing compiler output (useful mainly for
debugging `configure'). debugging 'configure').
It can also use an optional file (typically called `config.cache' It can also use an optional file (typically called 'config.cache' and
and enabled with `--cache-file=config.cache' or simply `-C') that saves enabled with '--cache-file=config.cache' or simply '-C') that saves the
the results of its tests to speed up reconfiguring. Caching is results of its tests to speed up reconfiguring. Caching is disabled by
disabled by default to prevent problems with accidental use of stale default to prevent problems with accidental use of stale cache files.
cache files.
If you need to do unusual things to compile the package, please try If you need to do unusual things to compile the package, please try
to figure out how `configure' could check whether to do them, and mail to figure out how 'configure' could check whether to do them, and mail
diffs or instructions to the address given in the `README' so they can diffs or instructions to the address given in the 'README' so they can
be considered for the next release. If you are using the cache, and at be considered for the next release. If you are using the cache, and at
some point `config.cache' contains results you don't want to keep, you some point 'config.cache' contains results you don't want to keep, you
may remove or edit it. may remove or edit it.
The file `configure.ac' (or `configure.in') is used to create The file 'configure.ac' (or 'configure.in') is used to create
`configure' by a program called `autoconf'. You need `configure.ac' if 'configure' by a program called 'autoconf'. You need 'configure.ac' if
you want to change it or regenerate `configure' using a newer version you want to change it or regenerate 'configure' using a newer version of
of `autoconf'. 'autoconf'.
The simplest way to compile this package is: The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code and type 1. 'cd' to the directory containing the package's source code and type
`./configure' to configure the package for your system. './configure' to configure the package for your system.
Running `configure' might take a while. While running, it prints Running 'configure' might take a while. While running, it prints
some messages telling which features it is checking for. some messages telling which features it is checking for.
2. Type `make' to compile the package. 2. Type 'make' to compile the package.
3. Optionally, type `make check' to run any self-tests that come with 3. Optionally, type 'make check' to run any self-tests that come with
the package, generally using the just-built uninstalled binaries. the package, generally using the just-built uninstalled binaries.
4. Type `make install' to install the programs and any data files and 4. Type 'make install' to install the programs and any data files and
documentation. When installing into a prefix owned by root, it is documentation. When installing into a prefix owned by root, it is
recommended that the package be configured and built as a regular recommended that the package be configured and built as a regular
user, and only the `make install' phase executed with root user, and only the 'make install' phase executed with root
privileges. privileges.
5. Optionally, type `make installcheck' to repeat any self-tests, but 5. Optionally, type 'make installcheck' to repeat any self-tests, but
this time using the binaries in their final installed location. this time using the binaries in their final installed location.
This target does not install anything. Running this target as a This target does not install anything. Running this target as a
regular user, particularly if the prior `make install' required regular user, particularly if the prior 'make install' required
root privileges, verifies that the installation completed root privileges, verifies that the installation completed
correctly. correctly.
6. You can remove the program binaries and object files from the 6. You can remove the program binaries and object files from the
source code directory by typing `make clean'. To also remove the source code directory by typing 'make clean'. To also remove the
files that `configure' created (so you can compile the package for files that 'configure' created (so you can compile the package for
a different kind of computer), type `make distclean'. There is a different kind of computer), type 'make distclean'. There is
also a `make maintainer-clean' target, but that is intended mainly also a 'make maintainer-clean' target, but that is intended mainly
for the package's developers. If you use it, you may have to get for the package's developers. If you use it, you may have to get
all sorts of other programs in order to regenerate files that came all sorts of other programs in order to regenerate files that came
with the distribution. with the distribution.
7. Often, you can also type `make uninstall' to remove the installed 7. Often, you can also type 'make uninstall' to remove the installed
files again. In practice, not all packages have tested that files again. In practice, not all packages have tested that
uninstallation works correctly, even though it is required by the uninstallation works correctly, even though it is required by the
GNU Coding Standards. GNU Coding Standards.
8. Some packages, particularly those that use Automake, provide `make 8. Some packages, particularly those that use Automake, provide 'make
distcheck', which can by used by developers to test that all other distcheck', which can by used by developers to test that all other
targets like `make install' and `make uninstall' work correctly. targets like 'make install' and 'make uninstall' work correctly.
This target is generally not run by end users. This target is generally not run by end users.
Compilers and Options Compilers and Options
===================== =====================
Some systems require unusual options for compilation or linking that Some systems require unusual options for compilation or linking that
the `configure' script does not know about. Run `./configure --help' the 'configure' script does not know about. Run './configure --help'
for details on some of the pertinent environment variables. for details on some of the pertinent environment variables.
You can give `configure' initial values for configuration parameters You can give 'configure' initial values for configuration parameters
by setting variables in the command line or in the environment. Here by setting variables in the command line or in the environment. Here is
is an example: an example:
./configure CC=c99 CFLAGS=-g LIBS=-lposix ./configure CC=c99 CFLAGS=-g LIBS=-lposix
@ -113,21 +112,21 @@ Compiling For Multiple Architectures
You can compile the package for more than one kind of computer at the You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their same time, by placing the object files for each architecture in their
own directory. To do this, you can use GNU `make'. `cd' to the own directory. To do this, you can use GNU 'make'. 'cd' to the
directory where you want the object files and executables to go and run directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the the 'configure' script. 'configure' automatically checks for the source
source code in the directory that `configure' is in and in `..'. This code in the directory that 'configure' is in and in '..'. This is known
is known as a "VPATH" build. as a "VPATH" build.
With a non-GNU `make', it is safer to compile the package for one With a non-GNU 'make', it is safer to compile the package for one
architecture at a time in the source code directory. After you have architecture at a time in the source code directory. After you have
installed the package for one architecture, use `make distclean' before installed the package for one architecture, use 'make distclean' before
reconfiguring for another architecture. reconfiguring for another architecture.
On MacOS X 10.5 and later systems, you can create libraries and On MacOS X 10.5 and later systems, you can create libraries and
executables that work on multiple system types--known as "fat" or executables that work on multiple system types--known as "fat" or
"universal" binaries--by specifying multiple `-arch' options to the "universal" binaries--by specifying multiple '-arch' options to the
compiler but only a single `-arch' option to the preprocessor. Like compiler but only a single '-arch' option to the preprocessor. Like
this: this:
./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
@ -136,105 +135,104 @@ this:
This is not guaranteed to produce working output in all cases, you This is not guaranteed to produce working output in all cases, you
may have to build one architecture at a time and combine the results may have to build one architecture at a time and combine the results
using the `lipo' tool if you have problems. using the 'lipo' tool if you have problems.
Installation Names Installation Names
================== ==================
By default, `make install' installs the package's commands under By default, 'make install' installs the package's commands under
`/usr/local/bin', include files under `/usr/local/include', etc. You '/usr/local/bin', include files under '/usr/local/include', etc. You
can specify an installation prefix other than `/usr/local' by giving can specify an installation prefix other than '/usr/local' by giving
`configure' the option `--prefix=PREFIX', where PREFIX must be an 'configure' the option '--prefix=PREFIX', where PREFIX must be an
absolute file name. absolute file name.
You can specify separate installation prefixes for You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you architecture-specific files and architecture-independent files. If you
pass the option `--exec-prefix=PREFIX' to `configure', the package uses pass the option '--exec-prefix=PREFIX' to 'configure', the package uses
PREFIX as the prefix for installing programs and libraries. PREFIX as the prefix for installing programs and libraries.
Documentation and other data files still use the regular prefix. Documentation and other data files still use the regular prefix.
In addition, if you use an unusual directory layout you can give In addition, if you use an unusual directory layout you can give
options like `--bindir=DIR' to specify different values for particular options like '--bindir=DIR' to specify different values for particular
kinds of files. Run `configure --help' for a list of the directories kinds of files. Run 'configure --help' for a list of the directories
you can set and what kinds of files go in them. In general, the you can set and what kinds of files go in them. In general, the default
default for these options is expressed in terms of `${prefix}', so that for these options is expressed in terms of '${prefix}', so that
specifying just `--prefix' will affect all of the other directory specifying just '--prefix' will affect all of the other directory
specifications that were not explicitly provided. specifications that were not explicitly provided.
The most portable way to affect installation locations is to pass the The most portable way to affect installation locations is to pass the
correct locations to `configure'; however, many packages provide one or correct locations to 'configure'; however, many packages provide one or
both of the following shortcuts of passing variable assignments to the both of the following shortcuts of passing variable assignments to the
`make install' command line to change installation locations without 'make install' command line to change installation locations without
having to reconfigure or recompile. having to reconfigure or recompile.
The first method involves providing an override variable for each The first method involves providing an override variable for each
affected directory. For example, `make install affected directory. For example, 'make install
prefix=/alternate/directory' will choose an alternate location for all prefix=/alternate/directory' will choose an alternate location for all
directory configuration variables that were expressed in terms of directory configuration variables that were expressed in terms of
`${prefix}'. Any directories that were specified during `configure', '${prefix}'. Any directories that were specified during 'configure',
but not in terms of `${prefix}', must each be overridden at install but not in terms of '${prefix}', must each be overridden at install time
time for the entire installation to be relocated. The approach of for the entire installation to be relocated. The approach of makefile
makefile variable overrides for each directory variable is required by variable overrides for each directory variable is required by the GNU
the GNU Coding Standards, and ideally causes no recompilation. Coding Standards, and ideally causes no recompilation. However, some
However, some platforms have known limitations with the semantics of platforms have known limitations with the semantics of shared libraries
shared libraries that end up requiring recompilation when using this that end up requiring recompilation when using this method, particularly
method, particularly noticeable in packages that use GNU Libtool. noticeable in packages that use GNU Libtool.
The second method involves providing the `DESTDIR' variable. For The second method involves providing the 'DESTDIR' variable. For
example, `make install DESTDIR=/alternate/directory' will prepend example, 'make install DESTDIR=/alternate/directory' will prepend
`/alternate/directory' before all installation names. The approach of '/alternate/directory' before all installation names. The approach of
`DESTDIR' overrides is not required by the GNU Coding Standards, and 'DESTDIR' overrides is not required by the GNU Coding Standards, and
does not work on platforms that have drive letters. On the other hand, does not work on platforms that have drive letters. On the other hand,
it does better at avoiding recompilation issues, and works well even it does better at avoiding recompilation issues, and works well even
when some directory options were not specified in terms of `${prefix}' when some directory options were not specified in terms of '${prefix}'
at `configure' time. at 'configure' time.
Optional Features Optional Features
================= =================
If the package supports it, you can cause programs to be installed If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving `configure' the with an extra prefix or suffix on their names by giving 'configure' the
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'.
Some packages pay attention to `--enable-FEATURE' options to Some packages pay attention to '--enable-FEATURE' options to
`configure', where FEATURE indicates an optional part of the package. 'configure', where FEATURE indicates an optional part of the package.
They may also pay attention to `--with-PACKAGE' options, where PACKAGE They may also pay attention to '--with-PACKAGE' options, where PACKAGE
is something like `gnu-as' or `x' (for the X Window System). The is something like 'gnu-as' or 'x' (for the X Window System). The
`README' should mention any `--enable-' and `--with-' options that the 'README' should mention any '--enable-' and '--with-' options that the
package recognizes. package recognizes.
For packages that use the X Window System, `configure' can usually For packages that use the X Window System, 'configure' can usually
find the X include and library files automatically, but if it doesn't, find the X include and library files automatically, but if it doesn't,
you can use the `configure' options `--x-includes=DIR' and you can use the 'configure' options '--x-includes=DIR' and
`--x-libraries=DIR' to specify their locations. '--x-libraries=DIR' to specify their locations.
Some packages offer the ability to configure how verbose the Some packages offer the ability to configure how verbose the
execution of `make' will be. For these packages, running `./configure execution of 'make' will be. For these packages, running './configure
--enable-silent-rules' sets the default to minimal output, which can be --enable-silent-rules' sets the default to minimal output, which can be
overridden with `make V=1'; while running `./configure overridden with 'make V=1'; while running './configure
--disable-silent-rules' sets the default to verbose, which can be --disable-silent-rules' sets the default to verbose, which can be
overridden with `make V=0'. overridden with 'make V=0'.
Particular systems Particular systems
================== ==================
On HP-UX, the default C compiler is not ANSI C compatible. If GNU On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC
CC is not installed, it is recommended to use the following options in is not installed, it is recommended to use the following options in
order to use an ANSI C compiler: order to use an ANSI C compiler:
./configure CC="cc -Ae -D_XOPEN_SOURCE=500" ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
and if that doesn't work, install pre-built binaries of GCC for HP-UX. and if that doesn't work, install pre-built binaries of GCC for HP-UX.
HP-UX `make' updates targets which have the same time stamps as HP-UX 'make' updates targets which have the same time stamps as their
their prerequisites, which makes it generally unusable when shipped prerequisites, which makes it generally unusable when shipped generated
generated files such as `configure' are involved. Use GNU `make' files such as 'configure' are involved. Use GNU 'make' instead.
instead.
On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
parse its `<wchar.h>' header file. The option `-nodtk' can be used as parse its '<wchar.h>' header file. The option '-nodtk' can be used as a
a workaround. If GNU CC is not installed, it is therefore recommended workaround. If GNU CC is not installed, it is therefore recommended to
to try try
./configure CC="cc" ./configure CC="cc"
@ -242,26 +240,26 @@ and if that doesn't work, try
./configure CC="cc -nodtk" ./configure CC="cc -nodtk"
On Solaris, don't put `/usr/ucb' early in your `PATH'. This On Solaris, don't put '/usr/ucb' early in your 'PATH'. This
directory contains several dysfunctional programs; working variants of directory contains several dysfunctional programs; working variants of
these programs are available in `/usr/bin'. So, if you need `/usr/ucb' these programs are available in '/usr/bin'. So, if you need '/usr/ucb'
in your `PATH', put it _after_ `/usr/bin'. in your 'PATH', put it _after_ '/usr/bin'.
On Haiku, software installed for all users goes in `/boot/common', On Haiku, software installed for all users goes in '/boot/common',
not `/usr/local'. It is recommended to use the following options: not '/usr/local'. It is recommended to use the following options:
./configure --prefix=/boot/common ./configure --prefix=/boot/common
Specifying the System Type Specifying the System Type
========================== ==========================
There may be some features `configure' cannot figure out There may be some features 'configure' cannot figure out
automatically, but needs to determine by the type of machine the package automatically, but needs to determine by the type of machine the package
will run on. Usually, assuming the package is built to be run on the will run on. Usually, assuming the package is built to be run on the
_same_ architectures, `configure' can figure that out, but if it prints _same_ architectures, 'configure' can figure that out, but if it prints
a message saying it cannot guess the machine type, give it the a message saying it cannot guess the machine type, give it the
`--build=TYPE' option. TYPE can either be a short name for the system '--build=TYPE' option. TYPE can either be a short name for the system
type, such as `sun4', or a canonical name which has the form: type, such as 'sun4', or a canonical name which has the form:
CPU-COMPANY-SYSTEM CPU-COMPANY-SYSTEM
@ -270,101 +268,101 @@ where SYSTEM can have one of these forms:
OS OS
KERNEL-OS KERNEL-OS
See the file `config.sub' for the possible values of each field. If See the file 'config.sub' for the possible values of each field. If
`config.sub' isn't included in this package, then this package doesn't 'config.sub' isn't included in this package, then this package doesn't
need to know the machine type. need to know the machine type.
If you are _building_ compiler tools for cross-compiling, you should If you are _building_ compiler tools for cross-compiling, you should
use the option `--target=TYPE' to select the type of system they will use the option '--target=TYPE' to select the type of system they will
produce code for. produce code for.
If you want to _use_ a cross compiler, that generates code for a If you want to _use_ a cross compiler, that generates code for a
platform different from the build platform, you should specify the platform different from the build platform, you should specify the
"host" platform (i.e., that on which the generated programs will "host" platform (i.e., that on which the generated programs will
eventually be run) with `--host=TYPE'. eventually be run) with '--host=TYPE'.
Sharing Defaults Sharing Defaults
================ ================
If you want to set default values for `configure' scripts to share, If you want to set default values for 'configure' scripts to share,
you can create a site shell script called `config.site' that gives you can create a site shell script called 'config.site' that gives
default values for variables like `CC', `cache_file', and `prefix'. default values for variables like 'CC', 'cache_file', and 'prefix'.
`configure' looks for `PREFIX/share/config.site' if it exists, then 'configure' looks for 'PREFIX/share/config.site' if it exists, then
`PREFIX/etc/config.site' if it exists. Or, you can set the 'PREFIX/etc/config.site' if it exists. Or, you can set the
`CONFIG_SITE' environment variable to the location of the site script. 'CONFIG_SITE' environment variable to the location of the site script.
A warning: not all `configure' scripts look for a site script. A warning: not all 'configure' scripts look for a site script.
Defining Variables Defining Variables
================== ==================
Variables not defined in a site shell script can be set in the Variables not defined in a site shell script can be set in the
environment passed to `configure'. However, some packages may run environment passed to 'configure'. However, some packages may run
configure again during the build, and the customized values of these configure again during the build, and the customized values of these
variables may be lost. In order to avoid this problem, you should set variables may be lost. In order to avoid this problem, you should set
them in the `configure' command line, using `VAR=value'. For example: them in the 'configure' command line, using 'VAR=value'. For example:
./configure CC=/usr/local2/bin/gcc ./configure CC=/usr/local2/bin/gcc
causes the specified `gcc' to be used as the C compiler (unless it is causes the specified 'gcc' to be used as the C compiler (unless it is
overridden in the site shell script). overridden in the site shell script).
Unfortunately, this technique does not work for `CONFIG_SHELL' due to Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an
an Autoconf limitation. Until the limitation is lifted, you can use Autoconf limitation. Until the limitation is lifted, you can use this
this workaround: workaround:
CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
`configure' Invocation 'configure' Invocation
====================== ======================
`configure' recognizes the following options to control how it 'configure' recognizes the following options to control how it
operates. operates.
`--help' '--help'
`-h' '-h'
Print a summary of all of the options to `configure', and exit. Print a summary of all of the options to 'configure', and exit.
`--help=short' '--help=short'
`--help=recursive' '--help=recursive'
Print a summary of the options unique to this package's Print a summary of the options unique to this package's
`configure', and exit. The `short' variant lists options used 'configure', and exit. The 'short' variant lists options used only
only in the top level, while the `recursive' variant lists options in the top level, while the 'recursive' variant lists options also
also present in any nested packages. present in any nested packages.
`--version' '--version'
`-V' '-V'
Print the version of Autoconf used to generate the `configure' Print the version of Autoconf used to generate the 'configure'
script, and exit. script, and exit.
`--cache-file=FILE' '--cache-file=FILE'
Enable the cache: use and save the results of the tests in FILE, Enable the cache: use and save the results of the tests in FILE,
traditionally `config.cache'. FILE defaults to `/dev/null' to traditionally 'config.cache'. FILE defaults to '/dev/null' to
disable caching. disable caching.
`--config-cache' '--config-cache'
`-C' '-C'
Alias for `--cache-file=config.cache'. Alias for '--cache-file=config.cache'.
`--quiet' '--quiet'
`--silent' '--silent'
`-q' '-q'
Do not print messages saying which checks are being made. To Do not print messages saying which checks are being made. To
suppress all normal output, redirect it to `/dev/null' (any error suppress all normal output, redirect it to '/dev/null' (any error
messages will still be shown). messages will still be shown).
`--srcdir=DIR' '--srcdir=DIR'
Look for the package's source code in directory DIR. Usually Look for the package's source code in directory DIR. Usually
`configure' can determine that directory automatically. 'configure' can determine that directory automatically.
`--prefix=DIR' '--prefix=DIR'
Use DIR as the installation prefix. *note Installation Names:: Use DIR as the installation prefix. *note Installation Names:: for
for more details, including other options available for fine-tuning more details, including other options available for fine-tuning the
the installation locations. installation locations.
`--no-create' '--no-create'
`-n' '-n'
Run the configure checks, but stop before creating any output Run the configure checks, but stop before creating any output
files. files.
`configure' also accepts some other, not widely useful, options. Run 'configure' also accepts some other, not widely useful, options. Run
`configure --help' for more details. 'configure --help' for more details.

View File

@ -12,7 +12,7 @@ EXTRA_DIST = \
GPL-3.0.txt \ GPL-3.0.txt \
bootstrap \ bootstrap \
ChangeLog.git \ ChangeLog.git \
DRIVERS SECURITY \ SECURITY \
HELP \ HELP \
m4/ax_pthread.m4 \ m4/ax_pthread.m4 \
m4/as-ac-expand.m4 m4/as-ac-expand.m4

View File

@ -1,7 +1,7 @@
# Makefile.in generated by automake 1.15 from Makefile.am. # Makefile.in generated by automake 1.16.1 from Makefile.am.
# @configure_input@ # @configure_input@
# Copyright (C) 1994-2014 Free Software Foundation, Inc. # Copyright (C) 1994-2018 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation # This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -138,7 +138,7 @@ am__recursive_targets = \
$(RECURSIVE_CLEAN_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \
$(am__extra_recursive_targets) $(am__extra_recursive_targets)
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
cscope distdir dist dist-all distcheck cscope distdir distdir-am dist dist-all distcheck
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
$(LISP)config.h.in $(LISP)config.h.in
# Read a list of newline-separated strings from the standard input, # Read a list of newline-separated strings from the standard input,
@ -164,7 +164,7 @@ DIST_SUBDIRS = $(SUBDIRS)
am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \
$(top_srcdir)/src/PCSC/pcsclite.h.in AUTHORS COPYING ChangeLog \ $(top_srcdir)/src/PCSC/pcsclite.h.in AUTHORS COPYING ChangeLog \
INSTALL NEWS README TODO ar-lib compile config.guess \ INSTALL NEWS README TODO ar-lib compile config.guess \
config.sub depcomp install-sh ltmain.sh missing ylwrap config.sub install-sh ltmain.sh missing ylwrap
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION) distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir) top_distdir = $(distdir)
@ -368,7 +368,7 @@ EXTRA_DIST = \
GPL-3.0.txt \ GPL-3.0.txt \
bootstrap \ bootstrap \
ChangeLog.git \ ChangeLog.git \
DRIVERS SECURITY \ SECURITY \
HELP \ HELP \
m4/ax_pthread.m4 \ m4/ax_pthread.m4 \
m4/as-ac-expand.m4 m4/as-ac-expand.m4
@ -399,8 +399,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
echo ' $(SHELL) ./config.status'; \ echo ' $(SHELL) ./config.status'; \
$(SHELL) ./config.status;; \ $(SHELL) ./config.status;; \
*) \ *) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \
esac; esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@ -544,7 +544,10 @@ distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-rm -f cscope.out cscope.in.out cscope.po.out cscope.files -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
distdir: $(DISTFILES) distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
distdir-am: $(DISTFILES)
$(am__remove_distdir) $(am__remove_distdir)
test -d "$(distdir)" || mkdir "$(distdir)" test -d "$(distdir)" || mkdir "$(distdir)"
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@ -609,7 +612,7 @@ distdir: $(DISTFILES)
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|| chmod -R a+r "$(distdir)" || chmod -R a+r "$(distdir)"
dist-gzip: distdir dist-gzip: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz
$(am__post_remove_distdir) $(am__post_remove_distdir)
dist-bzip2: distdir dist-bzip2: distdir
tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
@ -634,7 +637,7 @@ dist-shar: distdir
@echo WARNING: "Support for shar distribution archives is" \ @echo WARNING: "Support for shar distribution archives is" \
"deprecated." >&2 "deprecated." >&2
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz
$(am__post_remove_distdir) $(am__post_remove_distdir)
dist-zip: distdir dist-zip: distdir
@ -652,7 +655,7 @@ dist dist-all:
distcheck: dist distcheck: dist
case '$(DIST_ARCHIVES)' in \ case '$(DIST_ARCHIVES)' in \
*.tar.gz*) \ *.tar.gz*) \
GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \ *.tar.bz2*) \
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.lz*) \ *.tar.lz*) \
@ -662,7 +665,7 @@ distcheck: dist
*.tar.Z*) \ *.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \ *.shar.gz*) \
GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
*.zip*) \ *.zip*) \
unzip $(distdir).zip ;;\ unzip $(distdir).zip ;;\
esac esac

195
aclocal.m4 vendored
View File

@ -1,6 +1,6 @@
# generated automatically by aclocal 1.15 -*- Autoconf -*- # generated automatically by aclocal 1.16.1 -*- Autoconf -*-
# Copyright (C) 1996-2014 Free Software Foundation, Inc. # Copyright (C) 1996-2018 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -296,7 +296,7 @@ AS_VAR_COPY([$1], [pkg_cv_][$1])
AS_VAR_IF([$1], [""], [$5], [$4])dnl AS_VAR_IF([$1], [""], [$5], [$4])dnl
])dnl PKG_CHECK_VAR ])dnl PKG_CHECK_VAR
# Copyright (C) 2002-2014 Free Software Foundation, Inc. # Copyright (C) 2002-2018 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -308,10 +308,10 @@ AS_VAR_IF([$1], [""], [$5], [$4])dnl
# generated from the m4 files accompanying Automake X.Y. # generated from the m4 files accompanying Automake X.Y.
# (This private macro should not be called outside this file.) # (This private macro should not be called outside this file.)
AC_DEFUN([AM_AUTOMAKE_VERSION], AC_DEFUN([AM_AUTOMAKE_VERSION],
[am__api_version='1.15' [am__api_version='1.16'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro. dnl require some minimum version. Point them to the right macro.
m4_if([$1], [1.15], [], m4_if([$1], [1.16.1], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
]) ])
@ -327,12 +327,12 @@ m4_define([_AM_AUTOCONF_VERSION], [])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
[AM_AUTOMAKE_VERSION([1.15])dnl [AM_AUTOMAKE_VERSION([1.16.1])dnl
m4_ifndef([AC_AUTOCONF_VERSION], m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
# Copyright (C) 2011-2014 Free Software Foundation, Inc. # Copyright (C) 2011-2018 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -394,7 +394,7 @@ AC_SUBST([AR])dnl
# AM_AUX_DIR_EXPAND -*- Autoconf -*- # AM_AUX_DIR_EXPAND -*- Autoconf -*-
# Copyright (C) 2001-2014 Free Software Foundation, Inc. # Copyright (C) 2001-2018 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -446,7 +446,7 @@ am_aux_dir=`cd "$ac_aux_dir" && pwd`
# AM_CONDITIONAL -*- Autoconf -*- # AM_CONDITIONAL -*- Autoconf -*-
# Copyright (C) 1997-2014 Free Software Foundation, Inc. # Copyright (C) 1997-2018 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -477,7 +477,7 @@ AC_CONFIG_COMMANDS_PRE(
Usually this means the macro was only invoked conditionally.]]) Usually this means the macro was only invoked conditionally.]])
fi])]) fi])])
# Copyright (C) 1999-2014 Free Software Foundation, Inc. # Copyright (C) 1999-2018 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -668,13 +668,12 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl
# Generate code to set up dependency tracking. -*- Autoconf -*- # Generate code to set up dependency tracking. -*- Autoconf -*-
# Copyright (C) 1999-2014 Free Software Foundation, Inc. # Copyright (C) 1999-2018 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved. # with or without modifications, as long as this notice is preserved.
# _AM_OUTPUT_DEPENDENCY_COMMANDS # _AM_OUTPUT_DEPENDENCY_COMMANDS
# ------------------------------ # ------------------------------
AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
@ -682,49 +681,41 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
# Older Autoconf quotes --file arguments for eval, but not when files # Older Autoconf quotes --file arguments for eval, but not when files
# are listed without --file. Let's play safe and only enable the eval # are listed without --file. Let's play safe and only enable the eval
# if we detect the quoting. # if we detect the quoting.
case $CONFIG_FILES in # TODO: see whether this extra hack can be removed once we start
*\'*) eval set x "$CONFIG_FILES" ;; # requiring Autoconf 2.70 or later.
*) set x $CONFIG_FILES ;; AS_CASE([$CONFIG_FILES],
esac [*\'*], [eval set x "$CONFIG_FILES"],
[*], [set x $CONFIG_FILES])
shift shift
for mf # Used to flag and report bootstrapping failures.
am_rc=0
for am_mf
do do
# Strip MF so we end up with the name of the file. # Strip MF so we end up with the name of the file.
mf=`echo "$mf" | sed -e 's/:.*$//'` am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'`
# Check whether this is an Automake generated Makefile or not. # Check whether this is an Automake generated Makefile which includes
# We used to match only the files named 'Makefile.in', but # dependency-tracking related rules and includes.
# some people rename them; so instead we look at the file content. # Grep'ing the whole file directly is not great: AIX grep has a line
# Grep'ing the first line is not enough: some people post-process
# each Makefile.in and add a new line on top of each file to say so.
# Grep'ing the whole file is not good either: AIX grep has a line
# limit of 2048, but all sed's we know have understand at least 4000. # limit of 2048, but all sed's we know have understand at least 4000.
if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \
dirpart=`AS_DIRNAME("$mf")` || continue
else am_dirpart=`AS_DIRNAME(["$am_mf"])`
continue am_filepart=`AS_BASENAME(["$am_mf"])`
fi AM_RUN_LOG([cd "$am_dirpart" \
# Extract the definition of DEPDIR, am__include, and am__quote && sed -e '/# am--include-marker/d' "$am_filepart" \
# from the Makefile without running 'make'. | $MAKE -f - am--depfiles]) || am_rc=$?
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
test -z "$DEPDIR" && continue
am__include=`sed -n 's/^am__include = //p' < "$mf"`
test -z "$am__include" && continue
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
# Find all dependency output files, they are included files with
# $(DEPDIR) in their names. We invoke sed twice because it is the
# simplest approach to changing $(DEPDIR) to its actual value in the
# expansion.
for file in `sed -n "
s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
# Make sure the directory exists.
test -f "$dirpart/$file" && continue
fdir=`AS_DIRNAME(["$file"])`
AS_MKDIR_P([$dirpart/$fdir])
# echo "creating $dirpart/$file"
echo '# dummy' > "$dirpart/$file"
done
done done
if test $am_rc -ne 0; then
AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments
for automatic dependency tracking. Try re-running configure with the
'--disable-dependency-tracking' option to at least be able to build
the package (albeit without support for automatic dependency tracking).])
fi
AS_UNSET([am_dirpart])
AS_UNSET([am_filepart])
AS_UNSET([am_mf])
AS_UNSET([am_rc])
rm -f conftest-deps.mk
} }
])# _AM_OUTPUT_DEPENDENCY_COMMANDS ])# _AM_OUTPUT_DEPENDENCY_COMMANDS
@ -733,18 +724,17 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
# ----------------------------- # -----------------------------
# This macro should only be invoked once -- use via AC_REQUIRE. # This macro should only be invoked once -- use via AC_REQUIRE.
# #
# This code is only required when automatic dependency tracking # This code is only required when automatic dependency tracking is enabled.
# is enabled. FIXME. This creates each '.P' file that we will # This creates each '.Po' and '.Plo' makefile fragment that we'll need in
# need in order to bootstrap the dependency handling code. # order to bootstrap the dependency handling code.
AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
[AC_CONFIG_COMMANDS([depfiles], [AC_CONFIG_COMMANDS([depfiles],
[test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
[AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])])
])
# Do all the work for Automake. -*- Autoconf -*- # Do all the work for Automake. -*- Autoconf -*-
# Copyright (C) 1996-2014 Free Software Foundation, Inc. # Copyright (C) 1996-2018 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -831,8 +821,8 @@ AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
AC_REQUIRE([AC_PROG_MKDIR_P])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl
# For better backward compatibility. To be removed once Automake 1.9.x # For better backward compatibility. To be removed once Automake 1.9.x
# dies out for good. For more background, see: # dies out for good. For more background, see:
# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html> # <https://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html> # <https://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
AC_SUBST([mkdir_p], ['$(MKDIR_P)']) AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
# We need awk for the "check" target (and possibly the TAP driver). The # We need awk for the "check" target (and possibly the TAP driver). The
# system "awk" is bad on some platforms. # system "awk" is bad on some platforms.
@ -899,7 +889,7 @@ END
Aborting the configuration process, to ensure you take notice of the issue. Aborting the configuration process, to ensure you take notice of the issue.
You can download and install GNU coreutils to get an 'rm' implementation You can download and install GNU coreutils to get an 'rm' implementation
that behaves properly: <http://www.gnu.org/software/coreutils/>. that behaves properly: <https://www.gnu.org/software/coreutils/>.
If you want to complete the configuration process using your problematic If you want to complete the configuration process using your problematic
'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
@ -941,7 +931,7 @@ for _am_header in $config_headers :; do
done done
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
# Copyright (C) 2001-2014 Free Software Foundation, Inc. # Copyright (C) 2001-2018 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -962,7 +952,7 @@ if test x"${install_sh+set}" != xset; then
fi fi
AC_SUBST([install_sh])]) AC_SUBST([install_sh])])
# Copyright (C) 2003-2014 Free Software Foundation, Inc. # Copyright (C) 2003-2018 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -981,7 +971,7 @@ fi
rmdir .tst 2>/dev/null rmdir .tst 2>/dev/null
AC_SUBST([am__leading_dot])]) AC_SUBST([am__leading_dot])])
# Copyright (C) 1998-2014 Free Software Foundation, Inc. # Copyright (C) 1998-2018 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -1002,7 +992,7 @@ fi])
# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
# From Jim Meyering # From Jim Meyering
# Copyright (C) 1996-2014 Free Software Foundation, Inc. # Copyright (C) 1996-2018 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -1037,7 +1027,7 @@ AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
# Check to see how 'make' treats includes. -*- Autoconf -*- # Check to see how 'make' treats includes. -*- Autoconf -*-
# Copyright (C) 2001-2014 Free Software Foundation, Inc. # Copyright (C) 2001-2018 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -1045,49 +1035,42 @@ AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
# AM_MAKE_INCLUDE() # AM_MAKE_INCLUDE()
# ----------------- # -----------------
# Check to see how make treats includes. # Check whether make has an 'include' directive that can support all
# the idioms we need for our automatic dependency tracking code.
AC_DEFUN([AM_MAKE_INCLUDE], AC_DEFUN([AM_MAKE_INCLUDE],
[am_make=${MAKE-make} [AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive])
cat > confinc << 'END' cat > confinc.mk << 'END'
am__doit: am__doit:
@echo this is the am__doit target @echo this is the am__doit target >confinc.out
.PHONY: am__doit .PHONY: am__doit
END END
# If we don't find an include directive, just comment out the code.
AC_MSG_CHECKING([for style of include used by $am_make])
am__include="#" am__include="#"
am__quote= am__quote=
_am_result=none # BSD make does it like this.
# First try GNU make style include. echo '.include "confinc.mk" # ignored' > confmf.BSD
echo "include confinc" > confmf # Other make implementations (GNU, Solaris 10, AIX) do it like this.
# Ignore all kinds of additional output from 'make'. echo 'include confinc.mk # ignored' > confmf.GNU
case `$am_make -s -f confmf 2> /dev/null` in #( _am_result=no
*the\ am__doit\ target*) for s in GNU BSD; do
am__include=include AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out])
am__quote= AS_CASE([$?:`cat confinc.out 2>/dev/null`],
_am_result=GNU ['0:this is the am__doit target'],
;; [AS_CASE([$s],
esac [BSD], [am__include='.include' am__quote='"'],
# Now try BSD make style include. [am__include='include' am__quote=''])])
if test "$am__include" = "#"; then if test "$am__include" != "#"; then
echo '.include "confinc"' > confmf _am_result="yes ($s style)"
case `$am_make -s -f confmf 2> /dev/null` in #( break
*the\ am__doit\ target*) fi
am__include=.include done
am__quote="\"" rm -f confinc.* confmf.*
_am_result=BSD AC_MSG_RESULT([${_am_result}])
;; AC_SUBST([am__include])])
esac AC_SUBST([am__quote])])
fi
AC_SUBST([am__include])
AC_SUBST([am__quote])
AC_MSG_RESULT([$_am_result])
rm -f confinc confmf
])
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
# Copyright (C) 1997-2014 Free Software Foundation, Inc. # Copyright (C) 1997-2018 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -1126,7 +1109,7 @@ fi
# Helper functions for option handling. -*- Autoconf -*- # Helper functions for option handling. -*- Autoconf -*-
# Copyright (C) 2001-2014 Free Software Foundation, Inc. # Copyright (C) 2001-2018 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -1155,7 +1138,7 @@ AC_DEFUN([_AM_SET_OPTIONS],
AC_DEFUN([_AM_IF_OPTION], AC_DEFUN([_AM_IF_OPTION],
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
# Copyright (C) 1999-2014 Free Software Foundation, Inc. # Copyright (C) 1999-2018 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -1202,7 +1185,7 @@ AC_LANG_POP([C])])
# For backward compatibility. # For backward compatibility.
AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
# Copyright (C) 2001-2014 Free Software Foundation, Inc. # Copyright (C) 2001-2018 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -1221,7 +1204,7 @@ AC_DEFUN([AM_RUN_LOG],
# Check to make sure that the build environment is sane. -*- Autoconf -*- # Check to make sure that the build environment is sane. -*- Autoconf -*-
# Copyright (C) 1996-2014 Free Software Foundation, Inc. # Copyright (C) 1996-2018 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -1302,7 +1285,7 @@ AC_CONFIG_COMMANDS_PRE(
rm -f conftest.file rm -f conftest.file
]) ])
# Copyright (C) 2009-2014 Free Software Foundation, Inc. # Copyright (C) 2009-2018 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -1362,7 +1345,7 @@ AC_SUBST([AM_BACKSLASH])dnl
_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
]) ])
# Copyright (C) 2001-2014 Free Software Foundation, Inc. # Copyright (C) 2001-2018 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -1390,7 +1373,7 @@ fi
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
AC_SUBST([INSTALL_STRIP_PROGRAM])]) AC_SUBST([INSTALL_STRIP_PROGRAM])])
# Copyright (C) 2006-2014 Free Software Foundation, Inc. # Copyright (C) 2006-2018 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -1409,7 +1392,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
# Check how to create a tarball. -*- Autoconf -*- # Check how to create a tarball. -*- Autoconf -*-
# Copyright (C) 2004-2014 Free Software Foundation, Inc. # Copyright (C) 2004-2018 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,

2
ar-lib
View File

@ -4,7 +4,7 @@
me=ar-lib me=ar-lib
scriptversion=2012-03-01.08; # UTC scriptversion=2012-03-01.08; # UTC
# Copyright (C) 2010-2013 Free Software Foundation, Inc. # Copyright (C) 2010-2017 Free Software Foundation, Inc.
# Written by Peter Rosin <peda@lysator.liu.se>. # Written by Peter Rosin <peda@lysator.liu.se>.
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify

View File

@ -3,7 +3,7 @@
scriptversion=2012-10-14.11; # UTC scriptversion=2012-10-14.11; # UTC
# Copyright (C) 1999-2013 Free Software Foundation, Inc. # Copyright (C) 1999-2014 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>. # Written by Tom Tromey <tromey@cygnus.com>.
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify

584
config.guess vendored

File diff suppressed because it is too large Load Diff

258
config.sub vendored
View File

@ -1,8 +1,8 @@
#! /bin/sh #! /bin/sh
# Configuration validation subroutine script. # Configuration validation subroutine script.
# Copyright 1992-2016 Free Software Foundation, Inc. # Copyright 1992-2018 Free Software Foundation, Inc.
timestamp='2016-11-04' timestamp='2018-02-22'
# This file is free software; you can redistribute it and/or modify it # This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by # under the terms of the GNU General Public License as published by
@ -15,7 +15,7 @@ timestamp='2016-11-04'
# General Public License for more details. # General Public License for more details.
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, see <http://www.gnu.org/licenses/>. # along with this program; if not, see <https://www.gnu.org/licenses/>.
# #
# As a special exception to the GNU General Public License, if you # As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a # distribute this file as part of a program that contains a
@ -33,7 +33,7 @@ timestamp='2016-11-04'
# Otherwise, we print the canonical config type on stdout and succeed. # Otherwise, we print the canonical config type on stdout and succeed.
# You can get the latest version of this script from: # You can get the latest version of this script from:
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub # https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
# This file is supposed to be the same for all GNU packages # This file is supposed to be the same for all GNU packages
# and recognize all the CPU types, system types and aliases # and recognize all the CPU types, system types and aliases
@ -57,7 +57,7 @@ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
Canonicalize a configuration name. Canonicalize a configuration name.
Operation modes: Options:
-h, --help print this help, then exit -h, --help print this help, then exit
-t, --time-stamp print date of last modification, then exit -t, --time-stamp print date of last modification, then exit
-v, --version print version number, then exit -v, --version print version number, then exit
@ -67,7 +67,7 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\ version="\
GNU config.sub ($timestamp) GNU config.sub ($timestamp)
Copyright 1992-2016 Free Software Foundation, Inc. Copyright 1992-2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@ -94,7 +94,7 @@ while test $# -gt 0 ; do
*local*) *local*)
# First pass through any local machine types. # First pass through any local machine types.
echo $1 echo "$1"
exit ;; exit ;;
* ) * )
@ -112,7 +112,7 @@ esac
# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
# Here we must recognize all the valid KERNEL-OS combinations. # Here we must recognize all the valid KERNEL-OS combinations.
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` maybe_os=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in case $maybe_os in
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
@ -120,16 +120,16 @@ case $maybe_os in
kopensolaris*-gnu* | cloudabi*-eabi* | \ kopensolaris*-gnu* | cloudabi*-eabi* | \
storm-chaos* | os2-emx* | rtmk-nova*) storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;; ;;
android-linux) android-linux)
os=-linux-android os=-linux-android
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
;; ;;
*) *)
basic_machine=`echo $1 | sed 's/-[^-]*$//'` basic_machine=`echo "$1" | sed 's/-[^-]*$//'`
if [ $basic_machine != $1 ] if [ "$basic_machine" != "$1" ]
then os=`echo $1 | sed 's/.*-/-/'` then os=`echo "$1" | sed 's/.*-/-/'`
else os=; fi else os=; fi
;; ;;
esac esac
@ -178,44 +178,44 @@ case $os in
;; ;;
-sco6) -sco6)
os=-sco5v6 os=-sco5v6
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;; ;;
-sco5) -sco5)
os=-sco3.2v5 os=-sco3.2v5
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;; ;;
-sco4) -sco4)
os=-sco3.2v4 os=-sco3.2v4
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;; ;;
-sco3.2.[4-9]*) -sco3.2.[4-9]*)
os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;; ;;
-sco3.2v[4-9]*) -sco3.2v[4-9]*)
# Don't forget version if it is 3.2v4 or newer. # Don't forget version if it is 3.2v4 or newer.
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;; ;;
-sco5v6*) -sco5v6*)
# Don't forget version if it is 3.2v4 or newer. # Don't forget version if it is 3.2v4 or newer.
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;; ;;
-sco*) -sco*)
os=-sco3.2v2 os=-sco3.2v2
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;; ;;
-udk*) -udk*)
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;; ;;
-isc) -isc)
os=-isc2.2 os=-isc2.2
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;; ;;
-clix*) -clix*)
basic_machine=clipper-intergraph basic_machine=clipper-intergraph
;; ;;
-isc*) -isc*)
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;; ;;
-lynx*178) -lynx*178)
os=-lynxos178 os=-lynxos178
@ -227,10 +227,7 @@ case $os in
os=-lynxos os=-lynxos
;; ;;
-ptx*) -ptx*)
basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` basic_machine=`echo "$1" | sed -e 's/86-.*/86-sequent/'`
;;
-windowsnt*)
os=`echo $os | sed -e 's/windowsnt/winnt/'`
;; ;;
-psos*) -psos*)
os=-psos os=-psos
@ -263,7 +260,7 @@ case $basic_machine in
| fido | fr30 | frv | ft32 \ | fido | fr30 | frv | ft32 \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| hexagon \ | hexagon \
| i370 | i860 | i960 | ia64 \ | i370 | i860 | i960 | ia16 | ia64 \
| ip2k | iq2000 \ | ip2k | iq2000 \
| k1om \ | k1om \
| le32 | le64 \ | le32 | le64 \
@ -299,7 +296,7 @@ case $basic_machine in
| nios | nios2 | nios2eb | nios2el \ | nios | nios2 | nios2eb | nios2el \
| ns16k | ns32k \ | ns16k | ns32k \
| open8 | or1k | or1knd | or32 \ | open8 | or1k | or1knd | or32 \
| pdp10 | pdp11 | pj | pjl \ | pdp10 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle \ | powerpc | powerpc64 | powerpc64le | powerpcle \
| pru \ | pru \
| pyramid \ | pyramid \
@ -315,7 +312,7 @@ case $basic_machine in
| ubicom32 \ | ubicom32 \
| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
| visium \ | visium \
| we32k \ | wasm32 \
| x86 | xc16x | xstormy16 | xtensa \ | x86 | xc16x | xstormy16 | xtensa \
| z8k | z80) | z8k | z80)
basic_machine=$basic_machine-unknown basic_machine=$basic_machine-unknown
@ -336,7 +333,7 @@ case $basic_machine in
basic_machine=$basic_machine-unknown basic_machine=$basic_machine-unknown
os=-none os=-none
;; ;;
m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65)
;; ;;
ms1) ms1)
basic_machine=mt-unknown basic_machine=mt-unknown
@ -365,7 +362,7 @@ case $basic_machine in
;; ;;
# Object if more than one company name word. # Object if more than one company name word.
*-*-*) *-*-*)
echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2
exit 1 exit 1
;; ;;
# Recognize the basic CPU types with company name. # Recognize the basic CPU types with company name.
@ -388,7 +385,7 @@ case $basic_machine in
| h8300-* | h8500-* \ | h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
| hexagon-* \ | hexagon-* \
| i*86-* | i860-* | i960-* | ia64-* \ | i*86-* | i860-* | i960-* | ia16-* | ia64-* \
| ip2k-* | iq2000-* \ | ip2k-* | iq2000-* \
| k1om-* \ | k1om-* \
| le32-* | le64-* \ | le32-* | le64-* \
@ -446,6 +443,7 @@ case $basic_machine in
| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
| vax-* \ | vax-* \
| visium-* \ | visium-* \
| wasm32-* \
| we32k-* \ | we32k-* \
| x86-* | x86_64-* | xc16x-* | xps100-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \
| xstormy16-* | xtensa*-* \ | xstormy16-* | xtensa*-* \
@ -459,7 +457,7 @@ case $basic_machine in
# Recognize the various machine names and aliases which stand # Recognize the various machine names and aliases which stand
# for a CPU type and a company and sometimes even an OS. # for a CPU type and a company and sometimes even an OS.
386bsd) 386bsd)
basic_machine=i386-unknown basic_machine=i386-pc
os=-bsd os=-bsd
;; ;;
3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
@ -493,7 +491,7 @@ case $basic_machine in
basic_machine=x86_64-pc basic_machine=x86_64-pc
;; ;;
amd64-*) amd64-*)
basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` basic_machine=x86_64-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;; ;;
amdahl) amdahl)
basic_machine=580-amdahl basic_machine=580-amdahl
@ -538,7 +536,7 @@ case $basic_machine in
os=-linux os=-linux
;; ;;
blackfin-*) blackfin-*)
basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` basic_machine=bfin-`echo "$basic_machine" | sed 's/^[^-]*-//'`
os=-linux os=-linux
;; ;;
bluegene*) bluegene*)
@ -546,13 +544,13 @@ case $basic_machine in
os=-cnk os=-cnk
;; ;;
c54x-*) c54x-*)
basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` basic_machine=tic54x-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;; ;;
c55x-*) c55x-*)
basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` basic_machine=tic55x-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;; ;;
c6x-*) c6x-*)
basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` basic_machine=tic6x-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;; ;;
c90) c90)
basic_machine=c90-cray basic_machine=c90-cray
@ -641,7 +639,7 @@ case $basic_machine in
basic_machine=rs6000-bull basic_machine=rs6000-bull
os=-bosx os=-bosx
;; ;;
dpx2* | dpx2*-bull) dpx2*)
basic_machine=m68k-bull basic_machine=m68k-bull
os=-sysv3 os=-sysv3
;; ;;
@ -650,7 +648,7 @@ case $basic_machine in
os=$os"spe" os=$os"spe"
;; ;;
e500v[12]-*) e500v[12]-*)
basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'`
os=$os"spe" os=$os"spe"
;; ;;
ebmon29k) ebmon29k)
@ -742,9 +740,6 @@ case $basic_machine in
hp9k8[0-9][0-9] | hp8[0-9][0-9]) hp9k8[0-9][0-9] | hp8[0-9][0-9])
basic_machine=hppa1.0-hp basic_machine=hppa1.0-hp
;; ;;
hppa-next)
os=-nextstep3
;;
hppaosf) hppaosf)
basic_machine=hppa1.1-hp basic_machine=hppa1.1-hp
os=-osf os=-osf
@ -757,26 +752,26 @@ case $basic_machine in
basic_machine=i370-ibm basic_machine=i370-ibm
;; ;;
i*86v32) i*86v32)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
os=-sysv32 os=-sysv32
;; ;;
i*86v4*) i*86v4*)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
os=-sysv4 os=-sysv4
;; ;;
i*86v) i*86v)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
os=-sysv os=-sysv
;; ;;
i*86sol2) i*86sol2)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
os=-solaris2 os=-solaris2
;; ;;
i386mach) i386mach)
basic_machine=i386-mach basic_machine=i386-mach
os=-mach os=-mach
;; ;;
i386-vsta | vsta) vsta)
basic_machine=i386-unknown basic_machine=i386-unknown
os=-vsta os=-vsta
;; ;;
@ -795,19 +790,16 @@ case $basic_machine in
os=-sysv os=-sysv
;; ;;
leon-*|leon[3-9]-*) leon-*|leon[3-9]-*)
basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` basic_machine=sparc-`echo "$basic_machine" | sed 's/-.*//'`
;; ;;
m68knommu) m68knommu)
basic_machine=m68k-unknown basic_machine=m68k-unknown
os=-linux os=-linux
;; ;;
m68knommu-*) m68knommu-*)
basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` basic_machine=m68k-`echo "$basic_machine" | sed 's/^[^-]*-//'`
os=-linux os=-linux
;; ;;
m88k-omron*)
basic_machine=m88k-omron
;;
magnum | m3230) magnum | m3230)
basic_machine=mips-mips basic_machine=mips-mips
os=-sysv os=-sysv
@ -839,10 +831,10 @@ case $basic_machine in
os=-mint os=-mint
;; ;;
mips3*-*) mips3*-*)
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`
;; ;;
mips3*) mips3*)
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`-unknown
;; ;;
monitor) monitor)
basic_machine=m68k-rom68k basic_machine=m68k-rom68k
@ -861,7 +853,7 @@ case $basic_machine in
os=-msdos os=-msdos
;; ;;
ms1-*) ms1-*)
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` basic_machine=`echo "$basic_machine" | sed -e 's/ms1-/mt-/'`
;; ;;
msys) msys)
basic_machine=i686-pc basic_machine=i686-pc
@ -903,7 +895,7 @@ case $basic_machine in
basic_machine=v70-nec basic_machine=v70-nec
os=-sysv os=-sysv
;; ;;
next | m*-next ) next | m*-next)
basic_machine=m68k-next basic_machine=m68k-next
case $os in case $os in
-nextstep* ) -nextstep* )
@ -948,6 +940,12 @@ case $basic_machine in
nsr-tandem) nsr-tandem)
basic_machine=nsr-tandem basic_machine=nsr-tandem
;; ;;
nsv-tandem)
basic_machine=nsv-tandem
;;
nsx-tandem)
basic_machine=nsx-tandem
;;
op50n-* | op60c-*) op50n-* | op60c-*)
basic_machine=hppa1.1-oki basic_machine=hppa1.1-oki
os=-proelf os=-proelf
@ -980,7 +978,7 @@ case $basic_machine in
os=-linux os=-linux
;; ;;
parisc-*) parisc-*)
basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` basic_machine=hppa-`echo "$basic_machine" | sed 's/^[^-]*-//'`
os=-linux os=-linux
;; ;;
pbd) pbd)
@ -996,7 +994,7 @@ case $basic_machine in
basic_machine=i386-pc basic_machine=i386-pc
;; ;;
pc98-*) pc98-*)
basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` basic_machine=i386-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;; ;;
pentium | p5 | k5 | k6 | nexgen | viac3) pentium | p5 | k5 | k6 | nexgen | viac3)
basic_machine=i586-pc basic_machine=i586-pc
@ -1011,16 +1009,16 @@ case $basic_machine in
basic_machine=i786-pc basic_machine=i786-pc
;; ;;
pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` basic_machine=i586-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;; ;;
pentiumpro-* | p6-* | 6x86-* | athlon-*) pentiumpro-* | p6-* | 6x86-* | athlon-*)
basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;; ;;
pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;; ;;
pentium4-*) pentium4-*)
basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` basic_machine=i786-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;; ;;
pn) pn)
basic_machine=pn-gould basic_machine=pn-gould
@ -1030,23 +1028,23 @@ case $basic_machine in
ppc | ppcbe) basic_machine=powerpc-unknown ppc | ppcbe) basic_machine=powerpc-unknown
;; ;;
ppc-* | ppcbe-*) ppc-* | ppcbe-*)
basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;; ;;
ppcle | powerpclittle) ppcle | powerpclittle)
basic_machine=powerpcle-unknown basic_machine=powerpcle-unknown
;; ;;
ppcle-* | powerpclittle-*) ppcle-* | powerpclittle-*)
basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` basic_machine=powerpcle-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;; ;;
ppc64) basic_machine=powerpc64-unknown ppc64) basic_machine=powerpc64-unknown
;; ;;
ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ppc64-*) basic_machine=powerpc64-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;; ;;
ppc64le | powerpc64little) ppc64le | powerpc64little)
basic_machine=powerpc64le-unknown basic_machine=powerpc64le-unknown
;; ;;
ppc64le-* | powerpc64little-*) ppc64le-* | powerpc64little-*)
basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` basic_machine=powerpc64le-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;; ;;
ps2) ps2)
basic_machine=i386-ibm basic_machine=i386-ibm
@ -1100,17 +1098,10 @@ case $basic_machine in
sequent) sequent)
basic_machine=i386-sequent basic_machine=i386-sequent
;; ;;
sh)
basic_machine=sh-hitachi
os=-hms
;;
sh5el) sh5el)
basic_machine=sh5le-unknown basic_machine=sh5le-unknown
;; ;;
sh64) simso-wrs)
basic_machine=sh64-unknown
;;
sparclite-wrs | simso-wrs)
basic_machine=sparclite-wrs basic_machine=sparclite-wrs
os=-vxworks os=-vxworks
;; ;;
@ -1129,7 +1120,7 @@ case $basic_machine in
os=-sysv4 os=-sysv4
;; ;;
strongarm-* | thumb-*) strongarm-* | thumb-*)
basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` basic_machine=arm-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;; ;;
sun2) sun2)
basic_machine=m68000-sun basic_machine=m68000-sun
@ -1251,6 +1242,9 @@ case $basic_machine in
basic_machine=hppa1.1-winbond basic_machine=hppa1.1-winbond
os=-proelf os=-proelf
;; ;;
x64)
basic_machine=x86_64-pc
;;
xbox) xbox)
basic_machine=i686-pc basic_machine=i686-pc
os=-mingw32 os=-mingw32
@ -1259,20 +1253,12 @@ case $basic_machine in
basic_machine=xps100-honeywell basic_machine=xps100-honeywell
;; ;;
xscale-* | xscalee[bl]-*) xscale-* | xscalee[bl]-*)
basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` basic_machine=`echo "$basic_machine" | sed 's/^xscale/arm/'`
;; ;;
ymp) ymp)
basic_machine=ymp-cray basic_machine=ymp-cray
os=-unicos os=-unicos
;; ;;
z8k-*-coff)
basic_machine=z8k-unknown
os=-sim
;;
z80-*-coff)
basic_machine=z80-unknown
os=-sim
;;
none) none)
basic_machine=none-none basic_machine=none-none
os=-none os=-none
@ -1301,10 +1287,6 @@ case $basic_machine in
vax) vax)
basic_machine=vax-dec basic_machine=vax-dec
;; ;;
pdp10)
# there are many clones, so DEC is not a safe bet
basic_machine=pdp10-unknown
;;
pdp11) pdp11)
basic_machine=pdp11-dec basic_machine=pdp11-dec
;; ;;
@ -1314,9 +1296,6 @@ case $basic_machine in
sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
basic_machine=sh-unknown basic_machine=sh-unknown
;; ;;
sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
basic_machine=sparc-sun
;;
cydra) cydra)
basic_machine=cydra-cydrome basic_machine=cydra-cydrome
;; ;;
@ -1336,7 +1315,7 @@ case $basic_machine in
# Make sure to match an already-canonicalized machine name. # Make sure to match an already-canonicalized machine name.
;; ;;
*) *)
echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2
exit 1 exit 1
;; ;;
esac esac
@ -1344,10 +1323,10 @@ esac
# Here we canonicalize certain aliases for manufacturers. # Here we canonicalize certain aliases for manufacturers.
case $basic_machine in case $basic_machine in
*-digital*) *-digital*)
basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` basic_machine=`echo "$basic_machine" | sed 's/digital.*/dec/'`
;; ;;
*-commodore*) *-commodore*)
basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` basic_machine=`echo "$basic_machine" | sed 's/commodore.*/cbm/'`
;; ;;
*) *)
;; ;;
@ -1358,8 +1337,8 @@ esac
if [ x"$os" != x"" ] if [ x"$os" != x"" ]
then then
case $os in case $os in
# First match some system type aliases # First match some system type aliases that might get confused
# that might get confused with valid system types. # with valid system types.
# -solaris* is a basic system type, with this one exception. # -solaris* is a basic system type, with this one exception.
-auroraux) -auroraux)
os=-auroraux os=-auroraux
@ -1370,18 +1349,19 @@ case $os in
-solaris) -solaris)
os=-solaris2 os=-solaris2
;; ;;
-svr4*)
os=-sysv4
;;
-unixware*) -unixware*)
os=-sysv4.2uw os=-sysv4.2uw
;; ;;
-gnu/linux*) -gnu/linux*)
os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
;; ;;
# First accept the basic system types. # es1800 is here to avoid being matched by es* (a different OS)
-es1800*)
os=-ose
;;
# Now accept the basic system types.
# The portable systems comes first. # The portable systems comes first.
# Each alternative MUST END IN A *, to match a version number. # Each alternative MUST end in a * to match a version number.
# -sysv* is not here because it comes later, after sysvr4. # -sysv* is not here because it comes later, after sysvr4.
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
@ -1391,25 +1371,26 @@ case $os in
| -aos* | -aros* | -cloudabi* | -sortix* \ | -aos* | -aros* | -cloudabi* | -sortix* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -hiux* | -knetbsd* | -mirbsd* | -netbsd* \
| -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -chorusos* | -chorusrdb* | -cegcc* \ | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
| -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
| -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \
| -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -morphos* | -superux* | -rtmk* | -windiss* \
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
| -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
| -onefs* | -tirtos* | -phoenix* | -fuchsia*) | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox* | -bme* \
| -midnightbsd*)
# Remember, each alternative MUST END IN *, to match a version number. # Remember, each alternative MUST END IN *, to match a version number.
;; ;;
-qnx*) -qnx*)
@ -1426,12 +1407,12 @@ case $os in
-nto*) -nto*)
os=`echo $os | sed -e 's|nto|nto-qnx|'` os=`echo $os | sed -e 's|nto|nto-qnx|'`
;; ;;
-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ -sim | -xray | -os68k* | -v88r* \
| -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -windows* | -osx | -abug | -netware* | -os9* \
| -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
;; ;;
-mac*) -mac*)
os=`echo $os | sed -e 's|mac|macos|'` os=`echo "$os" | sed -e 's|mac|macos|'`
;; ;;
-linux-dietlibc) -linux-dietlibc)
os=-linux-dietlibc os=-linux-dietlibc
@ -1440,10 +1421,10 @@ case $os in
os=`echo $os | sed -e 's|linux|linux-gnu|'` os=`echo $os | sed -e 's|linux|linux-gnu|'`
;; ;;
-sunos5*) -sunos5*)
os=`echo $os | sed -e 's|sunos5|solaris2|'` os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
;; ;;
-sunos6*) -sunos6*)
os=`echo $os | sed -e 's|sunos6|solaris3|'` os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
;; ;;
-opened*) -opened*)
os=-openedition os=-openedition
@ -1454,12 +1435,6 @@ case $os in
-wince*) -wince*)
os=-wince os=-wince
;; ;;
-osfrose*)
os=-osfrose
;;
-osf*)
os=-osf
;;
-utek*) -utek*)
os=-bsd os=-bsd
;; ;;
@ -1484,7 +1459,7 @@ case $os in
-nova*) -nova*)
os=-rtmk-nova os=-rtmk-nova
;; ;;
-ns2 ) -ns2)
os=-nextstep2 os=-nextstep2
;; ;;
-nsk*) -nsk*)
@ -1506,7 +1481,7 @@ case $os in
-oss*) -oss*)
os=-sysv3 os=-sysv3
;; ;;
-svr4) -svr4*)
os=-sysv4 os=-sysv4
;; ;;
-svr3) -svr3)
@ -1521,24 +1496,28 @@ case $os in
-ose*) -ose*)
os=-ose os=-ose
;; ;;
-es1800*)
os=-ose
;;
-xenix)
os=-xenix
;;
-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
os=-mint os=-mint
;; ;;
-aros*)
os=-aros
;;
-zvmoe) -zvmoe)
os=-zvmoe os=-zvmoe
;; ;;
-dicos*) -dicos*)
os=-dicos os=-dicos
;; ;;
-pikeos*)
# Until real need of OS specific support for
# particular features comes up, bare metal
# configurations are quite functional.
case $basic_machine in
arm*)
os=-eabi
;;
*)
os=-elf
;;
esac
;;
-nacl*) -nacl*)
;; ;;
-ios) -ios)
@ -1548,7 +1527,7 @@ case $os in
*) *)
# Get rid of the `-' at the beginning of $os. # Get rid of the `-' at the beginning of $os.
os=`echo $os | sed 's/[^-]*-//'` os=`echo $os | sed 's/[^-]*-//'`
echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2
exit 1 exit 1
;; ;;
esac esac
@ -1638,12 +1617,12 @@ case $basic_machine in
sparc-* | *-sun) sparc-* | *-sun)
os=-sunos4.1.1 os=-sunos4.1.1
;; ;;
pru-*)
os=-elf
;;
*-be) *-be)
os=-beos os=-beos
;; ;;
*-haiku)
os=-haiku
;;
*-ibm) *-ibm)
os=-aix os=-aix
;; ;;
@ -1683,7 +1662,7 @@ case $basic_machine in
m88k-omron*) m88k-omron*)
os=-luna os=-luna
;; ;;
*-next ) *-next)
os=-nextstep os=-nextstep
;; ;;
*-sequent) *-sequent)
@ -1698,9 +1677,6 @@ case $basic_machine in
i370-*) i370-*)
os=-mvs os=-mvs
;; ;;
*-next)
os=-nextstep3
;;
*-gould) *-gould)
os=-sysv os=-sysv
;; ;;
@ -1810,15 +1786,15 @@ case $basic_machine in
vendor=stratus vendor=stratus
;; ;;
esac esac
basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` basic_machine=`echo "$basic_machine" | sed "s/unknown/$vendor/"`
;; ;;
esac esac
echo $basic_machine$os echo "$basic_machine$os"
exit exit
# Local variables: # Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp) # eval: (add-hook 'write-file-functions 'time-stamp)
# time-stamp-start: "timestamp='" # time-stamp-start: "timestamp='"
# time-stamp-format: "%:y-%02m-%02d" # time-stamp-format: "%:y-%02m-%02d"
# time-stamp-end: "'" # time-stamp-end: "'"

211
configure vendored
View File

@ -1,6 +1,6 @@
#! /bin/sh #! /bin/sh
# Guess values for system-dependent variables and create Makefiles. # Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for pcsc-lite 1.8.23. # Generated by GNU Autoconf 2.69 for pcsc-lite 1.8.24.
# #
# #
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@ -587,8 +587,8 @@ MAKEFLAGS=
# Identity of this package. # Identity of this package.
PACKAGE_NAME='pcsc-lite' PACKAGE_NAME='pcsc-lite'
PACKAGE_TARNAME='pcsc-lite' PACKAGE_TARNAME='pcsc-lite'
PACKAGE_VERSION='1.8.23' PACKAGE_VERSION='1.8.24'
PACKAGE_STRING='pcsc-lite 1.8.23' PACKAGE_STRING='pcsc-lite 1.8.24'
PACKAGE_BUGREPORT='' PACKAGE_BUGREPORT=''
PACKAGE_URL='' PACKAGE_URL=''
@ -709,7 +709,6 @@ am__nodep
AMDEPBACKSLASH AMDEPBACKSLASH
AMDEP_FALSE AMDEP_FALSE
AMDEP_TRUE AMDEP_TRUE
am__quote
am__include am__include
DEPDIR DEPDIR
OBJEXT OBJEXT
@ -792,7 +791,8 @@ PACKAGE_VERSION
PACKAGE_TARNAME PACKAGE_TARNAME
PACKAGE_NAME PACKAGE_NAME
PATH_SEPARATOR PATH_SEPARATOR
SHELL' SHELL
am__quote'
ac_subst_files='' ac_subst_files=''
ac_user_opts=' ac_user_opts='
enable_option_checking enable_option_checking
@ -1392,7 +1392,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing. # Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh. # This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF cat <<_ACEOF
\`configure' configures pcsc-lite 1.8.23 to adapt to many kinds of systems. \`configure' configures pcsc-lite 1.8.24 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]... Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1463,7 +1463,7 @@ fi
if test -n "$ac_init_help"; then if test -n "$ac_init_help"; then
case $ac_init_help in case $ac_init_help in
short | recursive ) echo "Configuration of pcsc-lite 1.8.23:";; short | recursive ) echo "Configuration of pcsc-lite 1.8.24:";;
esac esac
cat <<\_ACEOF cat <<\_ACEOF
@ -1615,7 +1615,7 @@ fi
test -n "$ac_init_help" && exit $ac_status test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then if $ac_init_version; then
cat <<\_ACEOF cat <<\_ACEOF
pcsc-lite configure 1.8.23 pcsc-lite configure 1.8.24
generated by GNU Autoconf 2.69 generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc. Copyright (C) 2012 Free Software Foundation, Inc.
@ -2091,7 +2091,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake. running configure, to aid debugging if configure makes a mistake.
It was created by pcsc-lite $as_me 1.8.23, which was It was created by pcsc-lite $as_me 1.8.24, which was
generated by GNU Autoconf 2.69. Invocation command line was generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@ $ $0 $@
@ -2440,7 +2440,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
am__api_version='1.15' am__api_version='1.16'
ac_aux_dir= ac_aux_dir=
for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
@ -2955,7 +2955,7 @@ fi
# Define the identity of the package. # Define the identity of the package.
PACKAGE='pcsc-lite' PACKAGE='pcsc-lite'
VERSION='1.8.23' VERSION='1.8.24'
cat >>confdefs.h <<_ACEOF cat >>confdefs.h <<_ACEOF
@ -2985,8 +2985,8 @@ MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
# For better backward compatibility. To be removed once Automake 1.9.x # For better backward compatibility. To be removed once Automake 1.9.x
# dies out for good. For more background, see: # dies out for good. For more background, see:
# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html> # <https://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html> # <https://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
mkdir_p='$(MKDIR_P)' mkdir_p='$(MKDIR_P)'
# We need awk for the "check" target (and possibly the TAP driver). The # We need awk for the "check" target (and possibly the TAP driver). The
@ -3037,7 +3037,7 @@ END
Aborting the configuration process, to ensure you take notice of the issue. Aborting the configuration process, to ensure you take notice of the issue.
You can download and install GNU coreutils to get an 'rm' implementation You can download and install GNU coreutils to get an 'rm' implementation
that behaves properly: <http://www.gnu.org/software/coreutils/>. that behaves properly: <https://www.gnu.org/software/coreutils/>.
If you want to complete the configuration process using your problematic If you want to complete the configuration process using your problematic
'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
@ -4015,45 +4015,45 @@ DEPDIR="${am__leading_dot}deps"
ac_config_commands="$ac_config_commands depfiles" ac_config_commands="$ac_config_commands depfiles"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5
am_make=${MAKE-make} $as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; }
cat > confinc << 'END' cat > confinc.mk << 'END'
am__doit: am__doit:
@echo this is the am__doit target @echo this is the am__doit target >confinc.out
.PHONY: am__doit .PHONY: am__doit
END END
# If we don't find an include directive, just comment out the code.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
$as_echo_n "checking for style of include used by $am_make... " >&6; }
am__include="#" am__include="#"
am__quote= am__quote=
_am_result=none # BSD make does it like this.
# First try GNU make style include. echo '.include "confinc.mk" # ignored' > confmf.BSD
echo "include confinc" > confmf # Other make implementations (GNU, Solaris 10, AIX) do it like this.
# Ignore all kinds of additional output from 'make'. echo 'include confinc.mk # ignored' > confmf.GNU
case `$am_make -s -f confmf 2> /dev/null` in #( _am_result=no
*the\ am__doit\ target*) for s in GNU BSD; do
am__include=include { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5
am__quote= (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5
_am_result=GNU ac_status=$?
;; echo "$as_me:$LINENO: \$? = $ac_status" >&5
esac (exit $ac_status); }
# Now try BSD make style include. case $?:`cat confinc.out 2>/dev/null` in #(
if test "$am__include" = "#"; then '0:this is the am__doit target') :
echo '.include "confinc"' > confmf case $s in #(
case `$am_make -s -f confmf 2> /dev/null` in #( BSD) :
*the\ am__doit\ target*) am__include='.include' am__quote='"' ;; #(
am__include=.include *) :
am__quote="\"" am__include='include' am__quote='' ;;
_am_result=BSD esac ;; #(
*) :
;; ;;
esac esac
fi if test "$am__include" != "#"; then
_am_result="yes ($s style)"
break
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 fi
$as_echo "$_am_result" >&6; } done
rm -f confinc confmf rm -f confinc.* confmf.*
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5
$as_echo "${_am_result}" >&6; }
# Check whether --enable-dependency-tracking was given. # Check whether --enable-dependency-tracking was given.
if test "${enable_dependency_tracking+set}" = set; then : if test "${enable_dependency_tracking+set}" = set; then :
@ -16172,7 +16172,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their # report actual input values of CONFIG_FILES etc. instead of their
# values after options handling. # values after options handling.
ac_log=" ac_log="
This file was extended by pcsc-lite $as_me 1.8.23, which was This file was extended by pcsc-lite $as_me 1.8.24, which was
generated by GNU Autoconf 2.69. Invocation command line was generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES CONFIG_FILES = $CONFIG_FILES
@ -16238,7 +16238,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\ ac_cs_version="\\
pcsc-lite config.status 1.8.23 pcsc-lite config.status 1.8.24
configured by $0, generated by GNU Autoconf 2.69, configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\" with options \\"\$ac_cs_config\\"
@ -16357,7 +16357,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
# #
# INIT-COMMANDS # INIT-COMMANDS
# #
AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"
# The HP-UX ksh and POSIX shell print the target directory to stdout # The HP-UX ksh and POSIX shell print the target directory to stdout
@ -17266,29 +17266,35 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
# Older Autoconf quotes --file arguments for eval, but not when files # Older Autoconf quotes --file arguments for eval, but not when files
# are listed without --file. Let's play safe and only enable the eval # are listed without --file. Let's play safe and only enable the eval
# if we detect the quoting. # if we detect the quoting.
case $CONFIG_FILES in # TODO: see whether this extra hack can be removed once we start
*\'*) eval set x "$CONFIG_FILES" ;; # requiring Autoconf 2.70 or later.
*) set x $CONFIG_FILES ;; case $CONFIG_FILES in #(
esac *\'*) :
eval set x "$CONFIG_FILES" ;; #(
*) :
set x $CONFIG_FILES ;; #(
*) :
;;
esac
shift shift
for mf # Used to flag and report bootstrapping failures.
am_rc=0
for am_mf
do do
# Strip MF so we end up with the name of the file. # Strip MF so we end up with the name of the file.
mf=`echo "$mf" | sed -e 's/:.*$//'` am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'`
# Check whether this is an Automake generated Makefile or not. # Check whether this is an Automake generated Makefile which includes
# We used to match only the files named 'Makefile.in', but # dependency-tracking related rules and includes.
# some people rename them; so instead we look at the file content. # Grep'ing the whole file directly is not great: AIX grep has a line
# Grep'ing the first line is not enough: some people post-process
# each Makefile.in and add a new line on top of each file to say so.
# Grep'ing the whole file is not good either: AIX grep has a line
# limit of 2048, but all sed's we know have understand at least 4000. # limit of 2048, but all sed's we know have understand at least 4000.
if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \
dirpart=`$as_dirname -- "$mf" || || continue
$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ am_dirpart=`$as_dirname -- "$am_mf" ||
X"$mf" : 'X\(//\)[^/]' \| \ $as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(//\)[^/]' \| \
X"$mf" : 'X\(/\)' \| . 2>/dev/null || X"$am_mf" : 'X\(//\)$' \| \
$as_echo X"$mf" | X"$am_mf" : 'X\(/\)' \| . 2>/dev/null ||
$as_echo X"$am_mf" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/ s//\1/
q q
@ -17306,53 +17312,48 @@ $as_echo X"$mf" |
q q
} }
s/.*/./; q'` s/.*/./; q'`
else am_filepart=`$as_basename -- "$am_mf" ||
continue $as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \
fi X"$am_mf" : 'X\(//\)$' \| \
# Extract the definition of DEPDIR, am__include, and am__quote X"$am_mf" : 'X\(/\)' \| . 2>/dev/null ||
# from the Makefile without running 'make'. $as_echo X/"$am_mf" |
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` sed '/^.*\/\([^/][^/]*\)\/*$/{
test -z "$DEPDIR" && continue
am__include=`sed -n 's/^am__include = //p' < "$mf"`
test -z "$am__include" && continue
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
# Find all dependency output files, they are included files with
# $(DEPDIR) in their names. We invoke sed twice because it is the
# simplest approach to changing $(DEPDIR) to its actual value in the
# expansion.
for file in `sed -n "
s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
# Make sure the directory exists.
test -f "$dirpart/$file" && continue
fdir=`$as_dirname -- "$file" ||
$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$file" : 'X\(//\)[^/]' \| \
X"$file" : 'X\(//\)$' \| \
X"$file" : 'X\(/\)' \| . 2>/dev/null ||
$as_echo X"$file" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/ s//\1/
q q
} }
/^X\(\/\/\)[^/].*/{ /^X\/\(\/\/\)$/{
s//\1/ s//\1/
q q
} }
/^X\(\/\/\)$/{ /^X\/\(\/\).*/{
s//\1/
q
}
/^X\(\/\).*/{
s//\1/ s//\1/
q q
} }
s/.*/./; q'` s/.*/./; q'`
as_dir=$dirpart/$fdir; as_fn_mkdir_p { echo "$as_me:$LINENO: cd "$am_dirpart" \
# echo "creating $dirpart/$file" && sed -e '/# am--include-marker/d' "$am_filepart" \
echo '# dummy' > "$dirpart/$file" | $MAKE -f - am--depfiles" >&5
done (cd "$am_dirpart" \
&& sed -e '/# am--include-marker/d' "$am_filepart" \
| $MAKE -f - am--depfiles) >&5 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } || am_rc=$?
done done
if test $am_rc -ne 0; then
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "Something went wrong bootstrapping makefile fragments
for automatic dependency tracking. Try re-running configure with the
'--disable-dependency-tracking' option to at least be able to build
the package (albeit without support for automatic dependency tracking).
See \`config.log' for more details" "$LINENO" 5; }
fi
{ am_dirpart=; unset am_dirpart;}
{ am_filepart=; unset am_filepart;}
{ am_mf=; unset am_mf;}
{ am_rc=; unset am_rc;}
rm -f conftest-deps.mk
} }
;; ;;
"libtool":C) "libtool":C)

View File

@ -3,7 +3,7 @@
AC_PREREQ([2.69]) AC_PREREQ([2.69])
AC_INIT([pcsc-lite],[1.8.23]) AC_INIT([pcsc-lite],[1.8.24])
AC_CONFIG_SRCDIR(src/pcscdaemon.c) AC_CONFIG_SRCDIR(src/pcscdaemon.c)
AM_INIT_AUTOMAKE(1.8 dist-bzip2 no-dist-gzip) AM_INIT_AUTOMAKE(1.8 dist-bzip2 no-dist-gzip)
AC_CONFIG_HEADERS([config.h]) AC_CONFIG_HEADERS([config.h])

10
depcomp
View File

@ -1,9 +1,9 @@
#! /bin/sh #! /bin/sh
# depcomp - compile a program generating dependencies as side-effects # depcomp - compile a program generating dependencies as side-effects
scriptversion=2013-05-30.07; # UTC scriptversion=2018-03-07.03; # UTC
# Copyright (C) 1999-2014 Free Software Foundation, Inc. # Copyright (C) 1999-2018 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@ -16,7 +16,7 @@ scriptversion=2013-05-30.07; # UTC
# GNU General Public License for more details. # GNU General Public License for more details.
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <https://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you # As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a # distribute this file as part of a program that contains a
@ -783,9 +783,9 @@ exit 0
# Local Variables: # Local Variables:
# mode: shell-script # mode: shell-script
# sh-indentation: 2 # sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp) # eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "scriptversion=" # time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC" # time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC" # time-stamp-end: "; # UTC"
# End: # End:

View File

@ -1,7 +1,7 @@
# Makefile.in generated by automake 1.15 from Makefile.am. # Makefile.in generated by automake 1.16.1 from Makefile.am.
# @configure_input@ # @configure_input@
# Copyright (C) 1994-2014 Free Software Foundation, Inc. # Copyright (C) 1994-2018 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation # This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -172,7 +172,7 @@ am__recursive_targets = \
$(RECURSIVE_CLEAN_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \
$(am__extra_recursive_targets) $(am__extra_recursive_targets)
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
distdir distdir distdir-am
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input, # Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is # and print each of them once, without duplicates. Input order is
@ -402,8 +402,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
*config.status*) \ *config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \ *) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
esac; esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@ -633,7 +633,10 @@ cscopelist-am: $(am__tagged_files)
distclean-tags: distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES) distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
distdir-am: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \ list='$(DISTFILES)'; \

View File

@ -1,7 +1,7 @@
# Makefile.in generated by automake 1.15 from Makefile.am. # Makefile.in generated by automake 1.16.1 from Makefile.am.
# @configure_input@ # @configure_input@
# Copyright (C) 1994-2014 Free Software Foundation, Inc. # Copyright (C) 1994-2018 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation # This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -130,7 +130,8 @@ am__v_at_0 = @
am__v_at_1 = am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles am__maybe_remake_depfiles = depfiles
am__depfiles_remade = ./$(DEPDIR)/pcsc_demo-pcsc_demo.Po
am__mv = mv -f am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@ -354,8 +355,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
*config.status*) \ *config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \ *) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
esac; esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@ -386,7 +387,13 @@ mostlyclean-compile:
distclean-compile: distclean-compile:
-rm -f *.tab.c -rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcsc_demo-pcsc_demo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcsc_demo-pcsc_demo.Po@am__quote@ # am--include-marker
$(am__depfiles_remade):
@$(MKDIR_P) $(@D)
@echo '# dummy' >$@-t && $(am__mv) $@-t $@
am--depfiles: $(am__depfiles_remade)
.c.o: .c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@ -481,7 +488,10 @@ cscopelist-am: $(am__tagged_files)
distclean-tags: distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES) distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
distdir-am: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \ list='$(DISTFILES)'; \
@ -551,7 +561,7 @@ clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
mostlyclean-am mostlyclean-am
distclean: distclean-am distclean: distclean-am
-rm -rf ./$(DEPDIR) -rm -f ./$(DEPDIR)/pcsc_demo-pcsc_demo.Po
-rm -f Makefile -rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \ distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags distclean-tags
@ -597,7 +607,7 @@ install-ps-am:
installcheck-am: installcheck-am:
maintainer-clean: maintainer-clean-am maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR) -rm -f ./$(DEPDIR)/pcsc_demo-pcsc_demo.Po
-rm -f Makefile -rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic maintainer-clean-am: distclean-am maintainer-clean-generic
@ -618,9 +628,9 @@ uninstall-am:
.MAKE: install-am install-strip .MAKE: install-am install-strip
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \
clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \ clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
ctags-am distclean distclean-compile distclean-generic \ ctags ctags-am distclean distclean-compile distclean-generic \
distclean-libtool distclean-tags distdir dvi dvi-am html \ distclean-libtool distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-data \ html-am info info-am install install-am install-data \
install-data-am install-dvi install-dvi-am install-exec \ install-data-am install-dvi install-dvi-am install-exec \

View File

@ -1,7 +1,7 @@
/* /*
* Sample program to use PC/SC API. * Sample program to use PC/SC API.
* *
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 2003-2011 * Copyright (C) 2003-2011
* Ludovic Rousseau <ludovic.rousseau@free.fr> * Ludovic Rousseau <ludovic.rousseau@free.fr>

View File

@ -4,7 +4,7 @@
"http://www.freedesktop.org/standards/PolicyKit/1.0/policyconfig.dtd"> "http://www.freedesktop.org/standards/PolicyKit/1.0/policyconfig.dtd">
<policyconfig> <policyconfig>
<vendor>The PCSC-lite Project</vendor> <vendor>The PCSC-lite Project</vendor>
<vendor_url>http://pcsclite.alioth.debian.org/</vendor_url> <vendor_url>https://pcsclite.apdu.fr/</vendor_url>
<!-- <icon_name>smart-card</icon_name> --> <!-- <icon_name>smart-card</icon_name> -->
<action id="org.debian.pcsc-lite.access_pcsc"> <action id="org.debian.pcsc-lite.access_pcsc">

View File

@ -102,7 +102,7 @@ file. See the
.BR reader.conf (5) .BR reader.conf (5)
manual page for more information. manual page for more information.
.PP .PP
Some drivers are available at \fIhttp://pcsclite.alioth.debian.org/musclecard.com/drivers.html\fP. Some drivers are available at \fIhttps://muscle.apdu.fr/musclecard.com/drivers.html\fP.
. .
.SH "USB SMART CARD READER DRIVERS" .SH "USB SMART CARD READER DRIVERS"
USB smart card reader drivers are located in USB smart card reader drivers are located in

View File

@ -1,7 +1,7 @@
# Makefile.in generated by automake 1.15 from Makefile.am. # Makefile.in generated by automake 1.16.1 from Makefile.am.
# @configure_input@ # @configure_input@
# Copyright (C) 1994-2014 Free Software Foundation, Inc. # Copyright (C) 1994-2018 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation # This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -334,8 +334,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
*config.status*) \ *config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \ *) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
esac; esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@ -384,7 +384,10 @@ ctags CTAGS:
cscope cscopelist: cscope cscopelist:
distdir: $(DISTFILES) distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
distdir-am: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \ list='$(DISTFILES)'; \

View File

@ -1,6 +1,7 @@
[Unit] [Unit]
Description=PC/SC Smart Card Daemon Description=PC/SC Smart Card Daemon
Requires=pcscd.socket Requires=pcscd.socket
Documentation=man:pcscd(8)
[Service] [Service]
ExecStart=@sbindir_exp@/pcscd --foreground --auto-exit ExecStart=@sbindir_exp@/pcscd --foreground --auto-exit

View File

@ -1,7 +1,7 @@
#!/bin/sh #!/bin/sh
# install - install a program, script, or datafile # install - install a program, script, or datafile
scriptversion=2011-11-20.07; # UTC scriptversion=2014-09-12.12; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was # This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the # later released in X11R6 (xc/config/util/install.sh) with the
@ -41,19 +41,15 @@ scriptversion=2011-11-20.07; # UTC
# This script is compatible with the BSD install script, but was written # This script is compatible with the BSD install script, but was written
# from scratch. # from scratch.
tab=' '
nl=' nl='
' '
IFS=" "" $nl" IFS=" $tab$nl"
# set DOITPROG to echo to test this script # Set DOITPROG to "echo" to test this script.
# Don't use :- since 4.3BSD and earlier shells don't like it.
doit=${DOITPROG-} doit=${DOITPROG-}
if test -z "$doit"; then doit_exec=${doit:-exec}
doit_exec=exec
else
doit_exec=$doit
fi
# Put in absolute file names if you don't have them in your path; # Put in absolute file names if you don't have them in your path;
# or use environment vars. # or use environment vars.
@ -68,17 +64,6 @@ mvprog=${MVPROG-mv}
rmprog=${RMPROG-rm} rmprog=${RMPROG-rm}
stripprog=${STRIPPROG-strip} stripprog=${STRIPPROG-strip}
posix_glob='?'
initialize_posix_glob='
test "$posix_glob" != "?" || {
if (set -f) 2>/dev/null; then
posix_glob=
else
posix_glob=:
fi
}
'
posix_mkdir= posix_mkdir=
# Desired mode of installed file. # Desired mode of installed file.
@ -97,7 +82,7 @@ dir_arg=
dst_arg= dst_arg=
copy_on_change=false copy_on_change=false
no_target_directory= is_target_a_directory=possibly
usage="\ usage="\
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
@ -137,46 +122,57 @@ while test $# -ne 0; do
-d) dir_arg=true;; -d) dir_arg=true;;
-g) chgrpcmd="$chgrpprog $2" -g) chgrpcmd="$chgrpprog $2"
shift;; shift;;
--help) echo "$usage"; exit $?;; --help) echo "$usage"; exit $?;;
-m) mode=$2 -m) mode=$2
case $mode in case $mode in
*' '* | *' '* | *' *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
'* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2
echo "$0: invalid mode: $mode" >&2 exit 1;;
exit 1;; esac
esac shift;;
shift;;
-o) chowncmd="$chownprog $2" -o) chowncmd="$chownprog $2"
shift;; shift;;
-s) stripcmd=$stripprog;; -s) stripcmd=$stripprog;;
-t) dst_arg=$2 -t)
# Protect names problematic for 'test' and other utilities. is_target_a_directory=always
case $dst_arg in dst_arg=$2
-* | [=\(\)!]) dst_arg=./$dst_arg;; # Protect names problematic for 'test' and other utilities.
esac case $dst_arg in
shift;; -* | [=\(\)!]) dst_arg=./$dst_arg;;
esac
shift;;
-T) no_target_directory=true;; -T) is_target_a_directory=never;;
--version) echo "$0 $scriptversion"; exit $?;; --version) echo "$0 $scriptversion"; exit $?;;
--) shift --) shift
break;; break;;
-*) echo "$0: invalid option: $1" >&2 -*) echo "$0: invalid option: $1" >&2
exit 1;; exit 1;;
*) break;; *) break;;
esac esac
shift shift
done done
# We allow the use of options -d and -T together, by making -d
# take the precedence; this is for compatibility with GNU install.
if test -n "$dir_arg"; then
if test -n "$dst_arg"; then
echo "$0: target directory not allowed when installing a directory." >&2
exit 1
fi
fi
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
# When -d is used, all remaining arguments are directories to create. # When -d is used, all remaining arguments are directories to create.
# When -t is used, the destination is already specified. # When -t is used, the destination is already specified.
@ -207,6 +203,15 @@ if test $# -eq 0; then
exit 0 exit 0
fi fi
if test -z "$dir_arg"; then
if test $# -gt 1 || test "$is_target_a_directory" = always; then
if test ! -d "$dst_arg"; then
echo "$0: $dst_arg: Is not a directory." >&2
exit 1
fi
fi
fi
if test -z "$dir_arg"; then if test -z "$dir_arg"; then
do_exit='(exit $ret); exit $ret' do_exit='(exit $ret); exit $ret'
trap "ret=129; $do_exit" 1 trap "ret=129; $do_exit" 1
@ -223,16 +228,16 @@ if test -z "$dir_arg"; then
*[0-7]) *[0-7])
if test -z "$stripcmd"; then if test -z "$stripcmd"; then
u_plus_rw= u_plus_rw=
else else
u_plus_rw='% 200' u_plus_rw='% 200'
fi fi
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
*) *)
if test -z "$stripcmd"; then if test -z "$stripcmd"; then
u_plus_rw= u_plus_rw=
else else
u_plus_rw=,u+rw u_plus_rw=,u+rw
fi fi
cp_umask=$mode$u_plus_rw;; cp_umask=$mode$u_plus_rw;;
esac esac
@ -269,41 +274,15 @@ do
# If destination is a directory, append the input filename; won't work # If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored. # if double slashes aren't ignored.
if test -d "$dst"; then if test -d "$dst"; then
if test -n "$no_target_directory"; then if test "$is_target_a_directory" = never; then
echo "$0: $dst_arg: Is a directory" >&2 echo "$0: $dst_arg: Is a directory" >&2
exit 1 exit 1
fi fi
dstdir=$dst dstdir=$dst
dst=$dstdir/`basename "$src"` dst=$dstdir/`basename "$src"`
dstdir_status=0 dstdir_status=0
else else
# Prefer dirname, but fall back on a substitute if dirname fails. dstdir=`dirname "$dst"`
dstdir=`
(dirname "$dst") 2>/dev/null ||
expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$dst" : 'X\(//\)[^/]' \| \
X"$dst" : 'X\(//\)$' \| \
X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
echo X"$dst" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
}
/^X\(\/\/\)[^/].*/{
s//\1/
q
}
/^X\(\/\/\)$/{
s//\1/
q
}
/^X\(\/\).*/{
s//\1/
q
}
s/.*/./; q'
`
test -d "$dstdir" test -d "$dstdir"
dstdir_status=$? dstdir_status=$?
fi fi
@ -314,74 +293,81 @@ do
if test $dstdir_status != 0; then if test $dstdir_status != 0; then
case $posix_mkdir in case $posix_mkdir in
'') '')
# Create intermediate dirs using mode 755 as modified by the umask. # Create intermediate dirs using mode 755 as modified by the umask.
# This is like FreeBSD 'install' as of 1997-10-28. # This is like FreeBSD 'install' as of 1997-10-28.
umask=`umask` umask=`umask`
case $stripcmd.$umask in case $stripcmd.$umask in
# Optimize common cases. # Optimize common cases.
*[2367][2367]) mkdir_umask=$umask;; *[2367][2367]) mkdir_umask=$umask;;
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
*[0-7]) *[0-7])
mkdir_umask=`expr $umask + 22 \ mkdir_umask=`expr $umask + 22 \
- $umask % 100 % 40 + $umask % 20 \ - $umask % 100 % 40 + $umask % 20 \
- $umask % 10 % 4 + $umask % 2 - $umask % 10 % 4 + $umask % 2
`;; `;;
*) mkdir_umask=$umask,go-w;; *) mkdir_umask=$umask,go-w;;
esac esac
# With -d, create the new directory with the user-specified mode. # With -d, create the new directory with the user-specified mode.
# Otherwise, rely on $mkdir_umask. # Otherwise, rely on $mkdir_umask.
if test -n "$dir_arg"; then if test -n "$dir_arg"; then
mkdir_mode=-m$mode mkdir_mode=-m$mode
else else
mkdir_mode= mkdir_mode=
fi fi
posix_mkdir=false posix_mkdir=false
case $umask in case $umask in
*[123567][0-7][0-7]) *[123567][0-7][0-7])
# POSIX mkdir -p sets u+wx bits regardless of umask, which # POSIX mkdir -p sets u+wx bits regardless of umask, which
# is incompatible with FreeBSD 'install' when (umask & 300) != 0. # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
;; ;;
*) *)
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ # $RANDOM is not portable (e.g. dash); use it when possible to
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 # lower collision chance
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0
if (umask $mkdir_umask && # As "mkdir -p" follows symlinks and we work in /tmp possibly; so
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 # create the $tmpdir first (and fail if unsuccessful) to make sure
then # that nobody tries to guess the $tmpdir name.
if test -z "$dir_arg" || { if (umask $mkdir_umask &&
# Check for POSIX incompatibilities with -m. $mkdirprog $mkdir_mode "$tmpdir" &&
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
# other-writable bit of parent directory when it shouldn't. then
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory. if test -z "$dir_arg" || {
ls_ld_tmpdir=`ls -ld "$tmpdir"` # Check for POSIX incompatibilities with -m.
case $ls_ld_tmpdir in # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
d????-?r-*) different_mode=700;; # other-writable bit of parent directory when it shouldn't.
d????-?--*) different_mode=755;; # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
*) false;; test_tmpdir="$tmpdir/a"
esac && ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
$mkdirprog -m$different_mode -p -- "$tmpdir" && { case $ls_ld_tmpdir in
ls_ld_tmpdir_1=`ls -ld "$tmpdir"` d????-?r-*) different_mode=700;;
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" d????-?--*) different_mode=755;;
} *) false;;
} esac &&
then posix_mkdir=: $mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
fi ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
rmdir "$tmpdir/d" "$tmpdir" test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
else }
# Remove any dirs left behind by ancient mkdir implementations. }
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null then posix_mkdir=:
fi fi
trap '' 0;; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
esac;; else
# Remove any dirs left behind by ancient mkdir implementations.
rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
fi
trap '' 0;;
esac;;
esac esac
if if
$posix_mkdir && ( $posix_mkdir && (
umask $mkdir_umask && umask $mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
) )
then : then :
else else
@ -391,53 +377,51 @@ do
# directory the slow way, step by step, checking for races as we go. # directory the slow way, step by step, checking for races as we go.
case $dstdir in case $dstdir in
/*) prefix='/';; /*) prefix='/';;
[-=\(\)!]*) prefix='./';; [-=\(\)!]*) prefix='./';;
*) prefix='';; *) prefix='';;
esac esac
eval "$initialize_posix_glob"
oIFS=$IFS oIFS=$IFS
IFS=/ IFS=/
$posix_glob set -f set -f
set fnord $dstdir set fnord $dstdir
shift shift
$posix_glob set +f set +f
IFS=$oIFS IFS=$oIFS
prefixes= prefixes=
for d for d
do do
test X"$d" = X && continue test X"$d" = X && continue
prefix=$prefix$d prefix=$prefix$d
if test -d "$prefix"; then if test -d "$prefix"; then
prefixes= prefixes=
else else
if $posix_mkdir; then if $posix_mkdir; then
(umask=$mkdir_umask && (umask=$mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
# Don't fail if two instances are running concurrently. # Don't fail if two instances are running concurrently.
test -d "$prefix" || exit 1 test -d "$prefix" || exit 1
else else
case $prefix in case $prefix in
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
*) qprefix=$prefix;; *) qprefix=$prefix;;
esac esac
prefixes="$prefixes '$qprefix'" prefixes="$prefixes '$qprefix'"
fi fi
fi fi
prefix=$prefix/ prefix=$prefix/
done done
if test -n "$prefixes"; then if test -n "$prefixes"; then
# Don't fail if two instances are running concurrently. # Don't fail if two instances are running concurrently.
(umask $mkdir_umask && (umask $mkdir_umask &&
eval "\$doit_exec \$mkdirprog $prefixes") || eval "\$doit_exec \$mkdirprog $prefixes") ||
test -d "$dstdir" || exit 1 test -d "$dstdir" || exit 1
obsolete_mkdir_used=true obsolete_mkdir_used=true
fi fi
fi fi
fi fi
@ -472,15 +456,12 @@ do
# If -C, don't bother to copy if it wouldn't change the file. # If -C, don't bother to copy if it wouldn't change the file.
if $copy_on_change && if $copy_on_change &&
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
set -f &&
eval "$initialize_posix_glob" &&
$posix_glob set -f &&
set X $old && old=:$2:$4:$5:$6 && set X $old && old=:$2:$4:$5:$6 &&
set X $new && new=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 &&
$posix_glob set +f && set +f &&
test "$old" = "$new" && test "$old" = "$new" &&
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
then then
@ -493,24 +474,24 @@ do
# to itself, or perhaps because mv is so ancient that it does not # to itself, or perhaps because mv is so ancient that it does not
# support -f. # support -f.
{ {
# Now remove or move aside any old file at destination location. # Now remove or move aside any old file at destination location.
# We try this two ways since rm can't unlink itself on some # We try this two ways since rm can't unlink itself on some
# systems and the destination file might be busy for other # systems and the destination file might be busy for other
# reasons. In this case, the final cleanup might fail but the new # reasons. In this case, the final cleanup might fail but the new
# file should still install successfully. # file should still install successfully.
{ {
test ! -f "$dst" || test ! -f "$dst" ||
$doit $rmcmd -f "$dst" 2>/dev/null || $doit $rmcmd -f "$dst" 2>/dev/null ||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
} || } ||
{ echo "$0: cannot unlink or rename $dst" >&2 { echo "$0: cannot unlink or rename $dst" >&2
(exit 1); exit 1 (exit 1); exit 1
} }
} && } &&
# Now rename the file to the real destination. # Now rename the file to the real destination.
$doit $mvcmd "$dsttmp" "$dst" $doit $mvcmd "$dsttmp" "$dst"
} }
fi || exit 1 fi || exit 1

556
ltmain.sh
View File

@ -31,7 +31,7 @@
PROGRAM=libtool PROGRAM=libtool
PACKAGE=libtool PACKAGE=libtool
VERSION="2.4.6 Debian-2.4.6-2" VERSION="2.4.6 Debian-2.4.6-4"
package_revision=2.4.6 package_revision=2.4.6
@ -64,7 +64,7 @@ package_revision=2.4.6
# libraries, which are installed to $pkgauxdir. # libraries, which are installed to $pkgauxdir.
# Set a version string for this script. # Set a version string for this script.
scriptversion=2015-01-20.17; # UTC scriptversion=2015-10-12.13; # UTC
# General shell script boiler plate, and helper functions. # General shell script boiler plate, and helper functions.
# Written by Gary V. Vaughan, 2004 # Written by Gary V. Vaughan, 2004
@ -580,16 +580,16 @@ if test yes = "$_G_HAVE_PLUSEQ_OP"; then
{ {
$debug_cmd $debug_cmd
func_quote_for_eval "$2" func_quote_arg pretty "$2"
eval "$1+=\\ \$func_quote_for_eval_result" eval "$1+=\\ \$func_quote_arg_result"
}' }'
else else
func_append_quoted () func_append_quoted ()
{ {
$debug_cmd $debug_cmd
func_quote_for_eval "$2" func_quote_arg pretty "$2"
eval "$1=\$$1\\ \$func_quote_for_eval_result" eval "$1=\$$1\\ \$func_quote_arg_result"
} }
fi fi
@ -1091,85 +1091,181 @@ func_relative_path ()
} }
# func_quote_for_eval ARG... # func_quote_portable EVAL ARG
# -------------------------- # ----------------------------
# Aesthetically quote ARGs to be evaled later. # Internal function to portably implement func_quote_arg. Note that we still
# This function returns two values: # keep attention to performance here so we as much as possible try to avoid
# i) func_quote_for_eval_result # calling sed binary (so far O(N) complexity as long as func_append is O(1)).
# double-quoted, suitable for a subsequent eval func_quote_portable ()
# ii) func_quote_for_eval_unquoted_result
# has all characters that are still active within double
# quotes backslashified.
func_quote_for_eval ()
{ {
$debug_cmd $debug_cmd
func_quote_for_eval_unquoted_result= func_quote_portable_result=$2
func_quote_for_eval_result=
while test 0 -lt $#; do # one-time-loop (easy break)
case $1 in while true
do
if $1; then
func_quote_portable_result=`$ECHO "$2" | $SED \
-e "$sed_double_quote_subst" -e "$sed_double_backslash"`
break
fi
# Quote for eval.
case $func_quote_portable_result in
*[\\\`\"\$]*) *[\\\`\"\$]*)
_G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; case $func_quote_portable_result in
*) *[\[\*\?]*)
_G_unquoted_arg=$1 ;; func_quote_portable_result=`$ECHO "$func_quote_portable_result" | $SED "$sed_quote_subst"`
esac break
if test -n "$func_quote_for_eval_unquoted_result"; then ;;
func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" esac
else
func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg"
fi
case $_G_unquoted_arg in func_quote_portable_old_IFS=$IFS
# Double-quote args containing shell metacharacters to delay for _G_char in '\' '`' '"' '$'
# word splitting, command substitution and variable expansion do
# for a subsequent eval. # STATE($1) PREV($2) SEPARATOR($3)
# Many Bourne shells cannot handle close brackets correctly set start "" ""
# in scan sets, so we specify it separately. func_quote_portable_result=dummy"$_G_char$func_quote_portable_result$_G_char"dummy
*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") IFS=$_G_char
_G_quoted_arg=\"$_G_unquoted_arg\" for _G_part in $func_quote_portable_result
do
case $1 in
quote)
func_append func_quote_portable_result "$3$2"
set quote "$_G_part" "\\$_G_char"
;;
start)
set first "" ""
func_quote_portable_result=
;;
first)
set quote "$_G_part" ""
;;
esac
done
done
IFS=$func_quote_portable_old_IFS
;; ;;
*) *) ;;
_G_quoted_arg=$_G_unquoted_arg
;;
esac esac
break
if test -n "$func_quote_for_eval_result"; then
func_append func_quote_for_eval_result " $_G_quoted_arg"
else
func_append func_quote_for_eval_result "$_G_quoted_arg"
fi
shift
done done
func_quote_portable_unquoted_result=$func_quote_portable_result
case $func_quote_portable_result in
# double-quote args containing shell metacharacters to delay
# word splitting, command substitution and variable expansion
# for a subsequent eval.
# many bourne shells cannot handle close brackets correctly
# in scan sets, so we specify it separately.
*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
func_quote_portable_result=\"$func_quote_portable_result\"
;;
esac
} }
# func_quote_for_expand ARG # func_quotefast_eval ARG
# ------------------------- # -----------------------
# Aesthetically quote ARG to be evaled later; same as above, # Quote one ARG (internal). This is equivalent to 'func_quote_arg eval ARG',
# but do not quote variable references. # but optimized for speed. Result is stored in $func_quotefast_eval.
func_quote_for_expand () if test xyes = `(x=; printf -v x %q yes; echo x"$x") 2>/dev/null`; then
func_quotefast_eval ()
{
printf -v func_quotefast_eval_result %q "$1"
}
else
func_quotefast_eval ()
{
func_quote_portable false "$1"
func_quotefast_eval_result=$func_quote_portable_result
}
fi
# func_quote_arg MODEs ARG
# ------------------------
# Quote one ARG to be evaled later. MODEs argument may contain zero ore more
# specifiers listed below separated by ',' character. This function returns two
# values:
# i) func_quote_arg_result
# double-quoted (when needed), suitable for a subsequent eval
# ii) func_quote_arg_unquoted_result
# has all characters that are still active within double
# quotes backslashified. Available only if 'unquoted' is specified.
#
# Available modes:
# ----------------
# 'eval' (default)
# - escape shell special characters
# 'expand'
# - the same as 'eval'; but do not quote variable references
# 'pretty'
# - request aesthetic output, i.e. '"a b"' instead of 'a\ b'. This might
# later used in func_quote to get output like: 'echo "a b"' instead of
# 'echo a\ b'. This is slower than default on some shells.
# 'unquoted'
# - produce also $func_quote_arg_unquoted_result which does not contain
# wrapping double-quotes.
#
# Examples for 'func_quote_arg pretty,unquoted string':
#
# string | *_result | *_unquoted_result
# ------------+-----------------------+-------------------
# " | \" | \"
# a b | "a b" | a b
# "a b" | "\"a b\"" | \"a b\"
# * | "*" | *
# z="${x-$y}" | "z=\"\${x-\$y}\"" | z=\"\${x-\$y}\"
#
# Examples for 'func_quote_arg pretty,unquoted,expand string':
#
# string | *_result | *_unquoted_result
# --------------+---------------------+--------------------
# z="${x-$y}" | "z=\"${x-$y}\"" | z=\"${x-$y}\"
func_quote_arg ()
{ {
$debug_cmd _G_quote_expand=false
case ,$1, in
case $1 in *,expand,*)
*[\\\`\"]*) _G_quote_expand=:
_G_arg=`$ECHO "$1" | $SED \
-e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;;
*)
_G_arg=$1 ;;
esac
case $_G_arg in
# Double-quote args containing shell metacharacters to delay
# word splitting and command substitution for a subsequent eval.
# Many Bourne shells cannot handle close brackets correctly
# in scan sets, so we specify it separately.
*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
_G_arg=\"$_G_arg\"
;; ;;
esac esac
func_quote_for_expand_result=$_G_arg case ,$1, in
*,pretty,*|*,expand,*|*,unquoted,*)
func_quote_portable $_G_quote_expand "$2"
func_quote_arg_result=$func_quote_portable_result
func_quote_arg_unquoted_result=$func_quote_portable_unquoted_result
;;
*)
# Faster quote-for-eval for some shells.
func_quotefast_eval "$2"
func_quote_arg_result=$func_quotefast_eval_result
;;
esac
}
# func_quote MODEs ARGs...
# ------------------------
# Quote all ARGs to be evaled later and join them into single command. See
# func_quote_arg's description for more info.
func_quote ()
{
$debug_cmd
_G_func_quote_mode=$1 ; shift
func_quote_result=
while test 0 -lt $#; do
func_quote_arg "$_G_func_quote_mode" "$1"
if test -n "$func_quote_result"; then
func_append func_quote_result " $func_quote_arg_result"
else
func_append func_quote_result "$func_quote_arg_result"
fi
shift
done
} }
@ -1215,8 +1311,8 @@ func_show_eval ()
_G_cmd=$1 _G_cmd=$1
_G_fail_exp=${2-':'} _G_fail_exp=${2-':'}
func_quote_for_expand "$_G_cmd" func_quote_arg pretty,expand "$_G_cmd"
eval "func_notquiet $func_quote_for_expand_result" eval "func_notquiet $func_quote_arg_result"
$opt_dry_run || { $opt_dry_run || {
eval "$_G_cmd" eval "$_G_cmd"
@ -1241,8 +1337,8 @@ func_show_eval_locale ()
_G_fail_exp=${2-':'} _G_fail_exp=${2-':'}
$opt_quiet || { $opt_quiet || {
func_quote_for_expand "$_G_cmd" func_quote_arg expand,pretty "$_G_cmd"
eval "func_echo $func_quote_for_expand_result" eval "func_echo $func_quote_arg_result"
} }
$opt_dry_run || { $opt_dry_run || {
@ -1370,7 +1466,7 @@ func_lt_ver ()
#! /bin/sh #! /bin/sh
# Set a version string for this script. # Set a version string for this script.
scriptversion=2014-01-07.03; # UTC scriptversion=2015-10-12.13; # UTC
# A portable, pluggable option parser for Bourne shell. # A portable, pluggable option parser for Bourne shell.
# Written by Gary V. Vaughan, 2010 # Written by Gary V. Vaughan, 2010
@ -1530,6 +1626,8 @@ func_run_hooks ()
{ {
$debug_cmd $debug_cmd
_G_rc_run_hooks=false
case " $hookable_fns " in case " $hookable_fns " in
*" $1 "*) ;; *" $1 "*) ;;
*) func_fatal_error "'$1' does not support hook funcions.n" ;; *) func_fatal_error "'$1' does not support hook funcions.n" ;;
@ -1538,16 +1636,16 @@ func_run_hooks ()
eval _G_hook_fns=\$$1_hooks; shift eval _G_hook_fns=\$$1_hooks; shift
for _G_hook in $_G_hook_fns; do for _G_hook in $_G_hook_fns; do
eval $_G_hook '"$@"' if eval $_G_hook '"$@"'; then
# store returned options list back into positional
# store returned options list back into positional # parameters for next 'cmd' execution.
# parameters for next 'cmd' execution. eval _G_hook_result=\$${_G_hook}_result
eval _G_hook_result=\$${_G_hook}_result eval set dummy "$_G_hook_result"; shift
eval set dummy "$_G_hook_result"; shift _G_rc_run_hooks=:
fi
done done
func_quote_for_eval ${1+"$@"} $_G_rc_run_hooks && func_run_hooks_result=$_G_hook_result
func_run_hooks_result=$func_quote_for_eval_result
} }
@ -1557,10 +1655,16 @@ func_run_hooks ()
## --------------- ## ## --------------- ##
# In order to add your own option parsing hooks, you must accept the # In order to add your own option parsing hooks, you must accept the
# full positional parameter list in your hook function, remove any # full positional parameter list in your hook function, you may remove/edit
# options that you action, and then pass back the remaining unprocessed # any options that you action, and then pass back the remaining unprocessed
# options in '<hooked_function_name>_result', escaped suitably for # options in '<hooked_function_name>_result', escaped suitably for
# 'eval'. Like this: # 'eval'. In this case you also must return $EXIT_SUCCESS to let the
# hook's caller know that it should pay attention to
# '<hooked_function_name>_result'. Returning $EXIT_FAILURE signalizes that
# arguments are left untouched by the hook and therefore caller will ignore the
# result variable.
#
# Like this:
# #
# my_options_prep () # my_options_prep ()
# { # {
@ -1570,9 +1674,11 @@ func_run_hooks ()
# usage_message=$usage_message' # usage_message=$usage_message'
# -s, --silent don'\''t print informational messages # -s, --silent don'\''t print informational messages
# ' # '
# # # No change in '$@' (ignored completely by this hook). There is
# func_quote_for_eval ${1+"$@"} # # no need to do the equivalent (but slower) action:
# my_options_prep_result=$func_quote_for_eval_result # # func_quote eval ${1+"$@"}
# # my_options_prep_result=$func_quote_result
# false
# } # }
# func_add_hook func_options_prep my_options_prep # func_add_hook func_options_prep my_options_prep
# #
@ -1581,25 +1687,37 @@ func_run_hooks ()
# { # {
# $debug_cmd # $debug_cmd
# #
# args_changed=false
#
# # Note that for efficiency, we parse as many options as we can # # Note that for efficiency, we parse as many options as we can
# # recognise in a loop before passing the remainder back to the # # recognise in a loop before passing the remainder back to the
# # caller on the first unrecognised argument we encounter. # # caller on the first unrecognised argument we encounter.
# while test $# -gt 0; do # while test $# -gt 0; do
# opt=$1; shift # opt=$1; shift
# case $opt in # case $opt in
# --silent|-s) opt_silent=: ;; # --silent|-s) opt_silent=:
# args_changed=:
# ;;
# # Separate non-argument short options: # # Separate non-argument short options:
# -s*) func_split_short_opt "$_G_opt" # -s*) func_split_short_opt "$_G_opt"
# set dummy "$func_split_short_opt_name" \ # set dummy "$func_split_short_opt_name" \
# "-$func_split_short_opt_arg" ${1+"$@"} # "-$func_split_short_opt_arg" ${1+"$@"}
# shift # shift
# args_changed=:
# ;; # ;;
# *) set dummy "$_G_opt" "$*"; shift; break ;; # *) # Make sure the first unrecognised option "$_G_opt"
# # is added back to "$@", we could need that later
# # if $args_changed is true.
# set dummy "$_G_opt" ${1+"$@"}; shift; break ;;
# esac # esac
# done # done
# #
# func_quote_for_eval ${1+"$@"} # if $args_changed; then
# my_silent_option_result=$func_quote_for_eval_result # func_quote eval ${1+"$@"}
# my_silent_option_result=$func_quote_result
# fi
#
# $args_changed
# } # }
# func_add_hook func_parse_options my_silent_option # func_add_hook func_parse_options my_silent_option
# #
@ -1611,16 +1729,32 @@ func_run_hooks ()
# $opt_silent && $opt_verbose && func_fatal_help "\ # $opt_silent && $opt_verbose && func_fatal_help "\
# '--silent' and '--verbose' options are mutually exclusive." # '--silent' and '--verbose' options are mutually exclusive."
# #
# func_quote_for_eval ${1+"$@"} # false
# my_option_validation_result=$func_quote_for_eval_result
# } # }
# func_add_hook func_validate_options my_option_validation # func_add_hook func_validate_options my_option_validation
# #
# You'll alse need to manually amend $usage_message to reflect the extra # You'll also need to manually amend $usage_message to reflect the extra
# options you parse. It's preferable to append if you can, so that # options you parse. It's preferable to append if you can, so that
# multiple option parsing hooks can be added safely. # multiple option parsing hooks can be added safely.
# func_options_finish [ARG]...
# ----------------------------
# Finishing the option parse loop (call 'func_options' hooks ATM).
func_options_finish ()
{
$debug_cmd
_G_func_options_finish_exit=false
if func_run_hooks func_options ${1+"$@"}; then
func_options_finish_result=$func_run_hooks_result
_G_func_options_finish_exit=:
fi
$_G_func_options_finish_exit
}
# func_options [ARG]... # func_options [ARG]...
# --------------------- # ---------------------
# All the functions called inside func_options are hookable. See the # All the functions called inside func_options are hookable. See the
@ -1630,17 +1764,28 @@ func_options ()
{ {
$debug_cmd $debug_cmd
func_options_prep ${1+"$@"} _G_rc_options=false
eval func_parse_options \
${func_options_prep_result+"$func_options_prep_result"}
eval func_validate_options \
${func_parse_options_result+"$func_parse_options_result"}
eval func_run_hooks func_options \ for my_func in options_prep parse_options validate_options options_finish
${func_validate_options_result+"$func_validate_options_result"} do
if eval func_$my_func '${1+"$@"}'; then
eval _G_res_var='$'"func_${my_func}_result"
eval set dummy "$_G_res_var" ; shift
_G_rc_options=:
fi
done
# save modified positional parameters for caller # Save modified positional parameters for caller. As a top-level
func_options_result=$func_run_hooks_result # options-parser function we always need to set the 'func_options_result'
# variable (regardless the $_G_rc_options value).
if $_G_rc_options; then
func_options_result=$_G_res_var
else
func_quote eval ${1+"$@"}
func_options_result=$func_quote_result
fi
$_G_rc_options
} }
@ -1649,9 +1794,9 @@ func_options ()
# All initialisations required before starting the option parse loop. # All initialisations required before starting the option parse loop.
# Note that when calling hook functions, we pass through the list of # Note that when calling hook functions, we pass through the list of
# positional parameters. If a hook function modifies that list, and # positional parameters. If a hook function modifies that list, and
# needs to propogate that back to rest of this script, then the complete # needs to propagate that back to rest of this script, then the complete
# modified list must be put in 'func_run_hooks_result' before # modified list must be put in 'func_run_hooks_result' before
# returning. # returning $EXIT_SUCCESS (otherwise $EXIT_FAILURE is returned).
func_hookable func_options_prep func_hookable func_options_prep
func_options_prep () func_options_prep ()
{ {
@ -1661,10 +1806,14 @@ func_options_prep ()
opt_verbose=false opt_verbose=false
opt_warning_types= opt_warning_types=
func_run_hooks func_options_prep ${1+"$@"} _G_rc_options_prep=false
if func_run_hooks func_options_prep ${1+"$@"}; then
_G_rc_options_prep=:
# save modified positional parameters for caller
func_options_prep_result=$func_run_hooks_result
fi
# save modified positional parameters for caller $_G_rc_options_prep
func_options_prep_result=$func_run_hooks_result
} }
@ -1678,18 +1827,20 @@ func_parse_options ()
func_parse_options_result= func_parse_options_result=
_G_rc_parse_options=false
# this just eases exit handling # this just eases exit handling
while test $# -gt 0; do while test $# -gt 0; do
# Defer to hook functions for initial option parsing, so they # Defer to hook functions for initial option parsing, so they
# get priority in the event of reusing an option name. # get priority in the event of reusing an option name.
func_run_hooks func_parse_options ${1+"$@"} if func_run_hooks func_parse_options ${1+"$@"}; then
eval set dummy "$func_run_hooks_result"; shift
# Adjust func_parse_options positional parameters to match _G_rc_parse_options=:
eval set dummy "$func_run_hooks_result"; shift fi
# Break out of the loop if we already parsed every option. # Break out of the loop if we already parsed every option.
test $# -gt 0 || break test $# -gt 0 || break
_G_match_parse_options=:
_G_opt=$1 _G_opt=$1
shift shift
case $_G_opt in case $_G_opt in
@ -1704,7 +1855,10 @@ func_parse_options ()
;; ;;
--warnings|--warning|-W) --warnings|--warning|-W)
test $# = 0 && func_missing_arg $_G_opt && break if test $# = 0 && func_missing_arg $_G_opt; then
_G_rc_parse_options=:
break
fi
case " $warning_categories $1" in case " $warning_categories $1" in
*" $1 "*) *" $1 "*)
# trailing space prevents matching last $1 above # trailing space prevents matching last $1 above
@ -1757,15 +1911,25 @@ func_parse_options ()
shift shift
;; ;;
--) break ;; --) _G_rc_parse_options=: ; break ;;
-*) func_fatal_help "unrecognised option: '$_G_opt'" ;; -*) func_fatal_help "unrecognised option: '$_G_opt'" ;;
*) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; *) set dummy "$_G_opt" ${1+"$@"}; shift
_G_match_parse_options=false
break
;;
esac esac
$_G_match_parse_options && _G_rc_parse_options=:
done done
# save modified positional parameters for caller
func_quote_for_eval ${1+"$@"} if $_G_rc_parse_options; then
func_parse_options_result=$func_quote_for_eval_result # save modified positional parameters for caller
func_quote eval ${1+"$@"}
func_parse_options_result=$func_quote_result
fi
$_G_rc_parse_options
} }
@ -1778,16 +1942,21 @@ func_validate_options ()
{ {
$debug_cmd $debug_cmd
_G_rc_validate_options=false
# Display all warnings if -W was not given. # Display all warnings if -W was not given.
test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" test -n "$opt_warning_types" || opt_warning_types=" $warning_categories"
func_run_hooks func_validate_options ${1+"$@"} if func_run_hooks func_validate_options ${1+"$@"}; then
# save modified positional parameters for caller
func_validate_options_result=$func_run_hooks_result
_G_rc_validate_options=:
fi
# Bail if the options were screwed! # Bail if the options were screwed!
$exit_cmd $EXIT_FAILURE $exit_cmd $EXIT_FAILURE
# save modified positional parameters for caller $_G_rc_validate_options
func_validate_options_result=$func_run_hooks_result
} }
@ -2068,7 +2237,7 @@ include the following information:
compiler: $LTCC compiler: $LTCC
compiler flags: $LTCFLAGS compiler flags: $LTCFLAGS
linker: $LD (gnu? $with_gnu_ld) linker: $LD (gnu? $with_gnu_ld)
version: $progname $scriptversion Debian-2.4.6-2 version: $progname $scriptversion Debian-2.4.6-4
automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q`
@ -2270,6 +2439,8 @@ libtool_options_prep ()
nonopt= nonopt=
preserve_args= preserve_args=
_G_rc_lt_options_prep=:
# Shorthand for --mode=foo, only valid as the first argument # Shorthand for --mode=foo, only valid as the first argument
case $1 in case $1 in
clean|clea|cle|cl) clean|clea|cle|cl)
@ -2293,11 +2464,18 @@ libtool_options_prep ()
uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
shift; set dummy --mode uninstall ${1+"$@"}; shift shift; set dummy --mode uninstall ${1+"$@"}; shift
;; ;;
*)
_G_rc_lt_options_prep=false
;;
esac esac
# Pass back the list of options. if $_G_rc_lt_options_prep; then
func_quote_for_eval ${1+"$@"} # Pass back the list of options.
libtool_options_prep_result=$func_quote_for_eval_result func_quote eval ${1+"$@"}
libtool_options_prep_result=$func_quote_result
fi
$_G_rc_lt_options_prep
} }
func_add_hook func_options_prep libtool_options_prep func_add_hook func_options_prep libtool_options_prep
@ -2309,9 +2487,12 @@ libtool_parse_options ()
{ {
$debug_cmd $debug_cmd
_G_rc_lt_parse_options=false
# Perform our own loop to consume as many options as possible in # Perform our own loop to consume as many options as possible in
# each iteration. # each iteration.
while test $# -gt 0; do while test $# -gt 0; do
_G_match_lt_parse_options=:
_G_opt=$1 _G_opt=$1
shift shift
case $_G_opt in case $_G_opt in
@ -2386,15 +2567,22 @@ libtool_parse_options ()
func_append preserve_args " $_G_opt" func_append preserve_args " $_G_opt"
;; ;;
# An option not handled by this hook function: # An option not handled by this hook function:
*) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; *) set dummy "$_G_opt" ${1+"$@"} ; shift
_G_match_lt_parse_options=false
break
;;
esac esac
$_G_match_lt_parse_options && _G_rc_lt_parse_options=:
done done
if $_G_rc_lt_parse_options; then
# save modified positional parameters for caller
func_quote eval ${1+"$@"}
libtool_parse_options_result=$func_quote_result
fi
# save modified positional parameters for caller $_G_rc_lt_parse_options
func_quote_for_eval ${1+"$@"}
libtool_parse_options_result=$func_quote_for_eval_result
} }
func_add_hook func_parse_options libtool_parse_options func_add_hook func_parse_options libtool_parse_options
@ -2451,8 +2639,8 @@ libtool_validate_options ()
} }
# Pass back the unparsed argument list # Pass back the unparsed argument list
func_quote_for_eval ${1+"$@"} func_quote eval ${1+"$@"}
libtool_validate_options_result=$func_quote_for_eval_result libtool_validate_options_result=$func_quote_result
} }
func_add_hook func_validate_options libtool_validate_options func_add_hook func_validate_options libtool_validate_options
@ -3418,8 +3606,8 @@ func_mode_compile ()
esac esac
done done
func_quote_for_eval "$libobj" func_quote_arg pretty "$libobj"
test "X$libobj" != "X$func_quote_for_eval_result" \ test "X$libobj" != "X$func_quote_arg_result" \
&& $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \
&& func_warning "libobj name '$libobj' may not contain shell special characters." && func_warning "libobj name '$libobj' may not contain shell special characters."
func_dirname_and_basename "$obj" "/" "" func_dirname_and_basename "$obj" "/" ""
@ -3492,8 +3680,8 @@ compiler."
func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
srcfile=$func_to_tool_file_result srcfile=$func_to_tool_file_result
func_quote_for_eval "$srcfile" func_quote_arg pretty "$srcfile"
qsrcfile=$func_quote_for_eval_result qsrcfile=$func_quote_arg_result
# Only build a PIC object if we are building libtool libraries. # Only build a PIC object if we are building libtool libraries.
if test yes = "$build_libtool_libs"; then if test yes = "$build_libtool_libs"; then
@ -4096,8 +4284,8 @@ func_mode_install ()
case $nonopt in *shtool*) :;; *) false;; esac case $nonopt in *shtool*) :;; *) false;; esac
then then
# Aesthetically quote it. # Aesthetically quote it.
func_quote_for_eval "$nonopt" func_quote_arg pretty "$nonopt"
install_prog="$func_quote_for_eval_result " install_prog="$func_quote_arg_result "
arg=$1 arg=$1
shift shift
else else
@ -4107,8 +4295,8 @@ func_mode_install ()
# The real first argument should be the name of the installation program. # The real first argument should be the name of the installation program.
# Aesthetically quote it. # Aesthetically quote it.
func_quote_for_eval "$arg" func_quote_arg pretty "$arg"
func_append install_prog "$func_quote_for_eval_result" func_append install_prog "$func_quote_arg_result"
install_shared_prog=$install_prog install_shared_prog=$install_prog
case " $install_prog " in case " $install_prog " in
*[\\\ /]cp\ *) install_cp=: ;; *[\\\ /]cp\ *) install_cp=: ;;
@ -4165,12 +4353,12 @@ func_mode_install ()
esac esac
# Aesthetically quote the argument. # Aesthetically quote the argument.
func_quote_for_eval "$arg" func_quote_arg pretty "$arg"
func_append install_prog " $func_quote_for_eval_result" func_append install_prog " $func_quote_arg_result"
if test -n "$arg2"; then if test -n "$arg2"; then
func_quote_for_eval "$arg2" func_quote_arg pretty "$arg2"
fi fi
func_append install_shared_prog " $func_quote_for_eval_result" func_append install_shared_prog " $func_quote_arg_result"
done done
test -z "$install_prog" && \ test -z "$install_prog" && \
@ -4181,8 +4369,8 @@ func_mode_install ()
if test -n "$install_override_mode" && $no_mode; then if test -n "$install_override_mode" && $no_mode; then
if $install_cp; then :; else if $install_cp; then :; else
func_quote_for_eval "$install_override_mode" func_quote_arg pretty "$install_override_mode"
func_append install_shared_prog " -m $func_quote_for_eval_result" func_append install_shared_prog " -m $func_quote_arg_result"
fi fi
fi fi
@ -4478,8 +4666,8 @@ func_mode_install ()
relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
$opt_quiet || { $opt_quiet || {
func_quote_for_expand "$relink_command" func_quote_arg expand,pretty "$relink_command"
eval "func_echo $func_quote_for_expand_result" eval "func_echo $func_quote_arg_result"
} }
if eval "$relink_command"; then : if eval "$relink_command"; then :
else else
@ -5258,7 +5446,8 @@ else
if test \"\$libtool_execute_magic\" != \"$magic\"; then if test \"\$libtool_execute_magic\" != \"$magic\"; then
file=\"\$0\"" file=\"\$0\""
qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` func_quote_arg pretty "$ECHO"
qECHO=$func_quote_arg_result
$ECHO "\ $ECHO "\
# A function that is used when there is no print builtin or printf. # A function that is used when there is no print builtin or printf.
@ -5268,7 +5457,7 @@ func_fallback_echo ()
\$1 \$1
_LTECHO_EOF' _LTECHO_EOF'
} }
ECHO=\"$qECHO\" ECHO=$qECHO
fi fi
# Very basic option parsing. These options are (a) specific to # Very basic option parsing. These options are (a) specific to
@ -6611,9 +6800,9 @@ func_mode_link ()
while test "$#" -gt 0; do while test "$#" -gt 0; do
arg=$1 arg=$1
shift shift
func_quote_for_eval "$arg" func_quote_arg pretty,unquoted "$arg"
qarg=$func_quote_for_eval_unquoted_result qarg=$func_quote_arg_unquoted_result
func_append libtool_args " $func_quote_for_eval_result" func_append libtool_args " $func_quote_arg_result"
# If the previous option needs an argument, assign it. # If the previous option needs an argument, assign it.
if test -n "$prev"; then if test -n "$prev"; then
@ -7211,9 +7400,9 @@ func_mode_link ()
save_ifs=$IFS; IFS=, save_ifs=$IFS; IFS=,
for flag in $args; do for flag in $args; do
IFS=$save_ifs IFS=$save_ifs
func_quote_for_eval "$flag" func_quote_arg pretty "$flag"
func_append arg " $func_quote_for_eval_result" func_append arg " $func_quote_arg_result"
func_append compiler_flags " $func_quote_for_eval_result" func_append compiler_flags " $func_quote_arg_result"
done done
IFS=$save_ifs IFS=$save_ifs
func_stripname ' ' '' "$arg" func_stripname ' ' '' "$arg"
@ -7227,10 +7416,10 @@ func_mode_link ()
save_ifs=$IFS; IFS=, save_ifs=$IFS; IFS=,
for flag in $args; do for flag in $args; do
IFS=$save_ifs IFS=$save_ifs
func_quote_for_eval "$flag" func_quote_arg pretty "$flag"
func_append arg " $wl$func_quote_for_eval_result" func_append arg " $wl$func_quote_arg_result"
func_append compiler_flags " $wl$func_quote_for_eval_result" func_append compiler_flags " $wl$func_quote_arg_result"
func_append linker_flags " $func_quote_for_eval_result" func_append linker_flags " $func_quote_arg_result"
done done
IFS=$save_ifs IFS=$save_ifs
func_stripname ' ' '' "$arg" func_stripname ' ' '' "$arg"
@ -7254,8 +7443,8 @@ func_mode_link ()
# -msg_* for osf cc # -msg_* for osf cc
-msg_*) -msg_*)
func_quote_for_eval "$arg" func_quote_arg pretty "$arg"
arg=$func_quote_for_eval_result arg=$func_quote_arg_result
;; ;;
# Flags to be passed through unchanged, with rationale: # Flags to be passed through unchanged, with rationale:
@ -7279,8 +7468,8 @@ func_mode_link ()
-t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
-O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \
-specs=*|-fsanitize=*) -specs=*|-fsanitize=*)
func_quote_for_eval "$arg" func_quote_arg pretty "$arg"
arg=$func_quote_for_eval_result arg=$func_quote_arg_result
func_append compile_command " $arg" func_append compile_command " $arg"
func_append finalize_command " $arg" func_append finalize_command " $arg"
func_append compiler_flags " $arg" func_append compiler_flags " $arg"
@ -7301,15 +7490,15 @@ func_mode_link ()
continue continue
else else
# Otherwise treat like 'Some other compiler flag' below # Otherwise treat like 'Some other compiler flag' below
func_quote_for_eval "$arg" func_quote_arg pretty "$arg"
arg=$func_quote_for_eval_result arg=$func_quote_arg_result
fi fi
;; ;;
# Some other compiler flag. # Some other compiler flag.
-* | +*) -* | +*)
func_quote_for_eval "$arg" func_quote_arg pretty "$arg"
arg=$func_quote_for_eval_result arg=$func_quote_arg_result
;; ;;
*.$objext) *.$objext)
@ -7429,8 +7618,8 @@ func_mode_link ()
*) *)
# Unknown arguments in both finalize_command and compile_command need # Unknown arguments in both finalize_command and compile_command need
# to be aesthetically quoted because they are evaled later. # to be aesthetically quoted because they are evaled later.
func_quote_for_eval "$arg" func_quote_arg pretty "$arg"
arg=$func_quote_for_eval_result arg=$func_quote_arg_result
;; ;;
esac # arg esac # arg
@ -9942,8 +10131,8 @@ EOF
for cmd in $concat_cmds; do for cmd in $concat_cmds; do
IFS=$save_ifs IFS=$save_ifs
$opt_quiet || { $opt_quiet || {
func_quote_for_expand "$cmd" func_quote_arg expand,pretty "$cmd"
eval "func_echo $func_quote_for_expand_result" eval "func_echo $func_quote_arg_result"
} }
$opt_dry_run || eval "$cmd" || { $opt_dry_run || eval "$cmd" || {
lt_exit=$? lt_exit=$?
@ -10036,8 +10225,8 @@ EOF
eval cmd=\"$cmd\" eval cmd=\"$cmd\"
IFS=$save_ifs IFS=$save_ifs
$opt_quiet || { $opt_quiet || {
func_quote_for_expand "$cmd" func_quote_arg expand,pretty "$cmd"
eval "func_echo $func_quote_for_expand_result" eval "func_echo $func_quote_arg_result"
} }
$opt_dry_run || eval "$cmd" || { $opt_dry_run || eval "$cmd" || {
lt_exit=$? lt_exit=$?
@ -10511,12 +10700,12 @@ EOF
elif eval var_value=\$$var; test -z "$var_value"; then elif eval var_value=\$$var; test -z "$var_value"; then
relink_command="$var=; export $var; $relink_command" relink_command="$var=; export $var; $relink_command"
else else
func_quote_for_eval "$var_value" func_quote_arg pretty "$var_value"
relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" relink_command="$var=$func_quote_arg_result; export $var; $relink_command"
fi fi
done done
relink_command="(cd `pwd`; $relink_command)" func_quote_arg pretty,unquoted "(cd `pwd`; $relink_command)"
relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` relink_command=$func_quote_arg_unquoted_result
fi fi
# Only actually do things if not in dry run mode. # Only actually do things if not in dry run mode.
@ -10756,13 +10945,14 @@ EOF
elif eval var_value=\$$var; test -z "$var_value"; then elif eval var_value=\$$var; test -z "$var_value"; then
relink_command="$var=; export $var; $relink_command" relink_command="$var=; export $var; $relink_command"
else else
func_quote_for_eval "$var_value" func_quote_arg pretty,unquoted "$var_value"
relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" relink_command="$var=$func_quote_arg_unquoted_result; export $var; $relink_command"
fi fi
done done
# Quote the link command for shipping. # Quote the link command for shipping.
relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` func_quote_arg pretty,unquoted "$relink_command"
relink_command=$func_quote_arg_unquoted_result
if test yes = "$hardcode_automatic"; then if test yes = "$hardcode_automatic"; then
relink_command= relink_command=
fi fi

7
m4/ltsugar.m4 vendored
View File

@ -1,6 +1,7 @@
# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*-
# #
# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. # Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software
# Foundation, Inc.
# Written by Gary V. Vaughan, 2004 # Written by Gary V. Vaughan, 2004
# #
# This file is free software; the Free Software Foundation gives # This file is free software; the Free Software Foundation gives
@ -33,7 +34,7 @@ m4_define([_lt_join],
# ------------ # ------------
# Manipulate m4 lists. # Manipulate m4 lists.
# These macros are necessary as long as will still need to support # These macros are necessary as long as will still need to support
# Autoconf-2.59 which quotes differently. # Autoconf-2.59, which quotes differently.
m4_define([lt_car], [[$1]]) m4_define([lt_car], [[$1]])
m4_define([lt_cdr], m4_define([lt_cdr],
[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
@ -44,7 +45,7 @@ m4_define([lt_unquote], $1)
# lt_append(MACRO-NAME, STRING, [SEPARATOR]) # lt_append(MACRO-NAME, STRING, [SEPARATOR])
# ------------------------------------------ # ------------------------------------------
# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. # Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'.
# Note that neither SEPARATOR nor STRING are expanded; they are appended # Note that neither SEPARATOR nor STRING are expanded; they are appended
# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
# No SEPARATOR is output if MACRO-NAME was previously undefined (different # No SEPARATOR is output if MACRO-NAME was previously undefined (different

7
m4/lt~obsolete.m4 vendored
View File

@ -1,6 +1,7 @@
# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*-
# #
# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. # Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software
# Foundation, Inc.
# Written by Scott James Remnant, 2004. # Written by Scott James Remnant, 2004.
# #
# This file is free software; the Free Software Foundation gives # This file is free software; the Free Software Foundation gives
@ -11,7 +12,7 @@
# These exist entirely to fool aclocal when bootstrapping libtool. # These exist entirely to fool aclocal when bootstrapping libtool.
# #
# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN),
# which have later been changed to m4_define as they aren't part of the # which have later been changed to m4_define as they aren't part of the
# exported API, or moved to Autoconf or Automake where they belong. # exported API, or moved to Autoconf or Automake where they belong.
# #
@ -25,7 +26,7 @@
# included after everything else. This provides aclocal with the # included after everything else. This provides aclocal with the
# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
# because those macros already exist, or will be overwritten later. # because those macros already exist, or will be overwritten later.
# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
# #
# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
# Yes, that means every name once taken will need to remain here until # Yes, that means every name once taken will need to remain here until

View File

@ -3,7 +3,7 @@
scriptversion=2013-10-28.13; # UTC scriptversion=2013-10-28.13; # UTC
# Copyright (C) 1996-2013 Free Software Foundation, Inc. # Copyright (C) 1996-2014 Free Software Foundation, Inc.
# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996. # Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify

View File

@ -1,7 +1,7 @@
# Makefile.in generated by automake 1.15 from Makefile.am. # Makefile.in generated by automake 1.16.1 from Makefile.am.
# @configure_input@ # @configure_input@
# Copyright (C) 1994-2014 Free Software Foundation, Inc. # Copyright (C) 1994-2018 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation # This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -109,6 +109,10 @@ mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES = libpcsclite.pc pcscd.h CONFIG_CLEAN_FILES = libpcsclite.pc pcscd.h
CONFIG_CLEAN_VPATH_FILES = CONFIG_CLEAN_VPATH_FILES =
am__installdirs = "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(libdir)" \
"$(DESTDIR)$(nodistheaderdir)" "$(DESTDIR)$(pcdir)" \
"$(DESTDIR)$(includedir)"
PROGRAMS = $(noinst_PROGRAMS) $(sbin_PROGRAMS)
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \ am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
@ -136,9 +140,6 @@ am__uninstall_files_from_dir = { \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \ $(am__cd) "$$dir" && rm -f $$files; }; \
} }
am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(sbindir)" \
"$(DESTDIR)$(nodistheaderdir)" "$(DESTDIR)$(pcdir)" \
"$(DESTDIR)$(includedir)"
LTLIBRARIES = $(lib_LTLIBRARIES) LTLIBRARIES = $(lib_LTLIBRARIES)
am__DEPENDENCIES_1 = am__DEPENDENCIES_1 =
libpcsclite_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ libpcsclite_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
@ -156,7 +157,6 @@ libpcsclite_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
$(libpcsclite_la_CFLAGS) $(CFLAGS) $(libpcsclite_la_LDFLAGS) \ $(libpcsclite_la_CFLAGS) $(CFLAGS) $(libpcsclite_la_LDFLAGS) \
$(LDFLAGS) -o $@ $(LDFLAGS) -o $@
PROGRAMS = $(noinst_PROGRAMS) $(sbin_PROGRAMS)
am_pcsc_wirecheck_OBJECTS = pcsc-wirecheck-dist.$(OBJEXT) \ am_pcsc_wirecheck_OBJECTS = pcsc-wirecheck-dist.$(OBJEXT) \
pcsc-wirecheck-main.$(OBJEXT) pcsc-wirecheck-main.$(OBJEXT)
pcsc_wirecheck_OBJECTS = $(am_pcsc_wirecheck_OBJECTS) pcsc_wirecheck_OBJECTS = $(am_pcsc_wirecheck_OBJECTS)
@ -218,7 +218,37 @@ am__v_at_0 = @
am__v_at_1 = am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles am__maybe_remake_depfiles = depfiles
am__depfiles_remade = ./$(DEPDIR)/libpcsclite_la-debug.Plo \
./$(DEPDIR)/libpcsclite_la-error.Plo \
./$(DEPDIR)/libpcsclite_la-simclist.Plo \
./$(DEPDIR)/libpcsclite_la-sys_unix.Plo \
./$(DEPDIR)/libpcsclite_la-utils.Plo \
./$(DEPDIR)/libpcsclite_la-winscard_clnt.Plo \
./$(DEPDIR)/libpcsclite_la-winscard_msg.Plo \
./$(DEPDIR)/pcsc-wirecheck-dist.Po \
./$(DEPDIR)/pcsc-wirecheck-gen.Po \
./$(DEPDIR)/pcsc-wirecheck-main.Po \
./$(DEPDIR)/pcscd-atrhandler.Po ./$(DEPDIR)/pcscd-auth.Po \
./$(DEPDIR)/pcscd-configfile.Po ./$(DEPDIR)/pcscd-debuglog.Po \
./$(DEPDIR)/pcscd-dyn_hpux.Po ./$(DEPDIR)/pcscd-dyn_macosx.Po \
./$(DEPDIR)/pcscd-dyn_unix.Po \
./$(DEPDIR)/pcscd-eventhandler.Po \
./$(DEPDIR)/pcscd-hotplug_generic.Po \
./$(DEPDIR)/pcscd-hotplug_libudev.Po \
./$(DEPDIR)/pcscd-hotplug_libusb.Po \
./$(DEPDIR)/pcscd-hotplug_linux.Po \
./$(DEPDIR)/pcscd-hotplug_macosx.Po \
./$(DEPDIR)/pcscd-ifdwrapper.Po \
./$(DEPDIR)/pcscd-pcscdaemon.Po \
./$(DEPDIR)/pcscd-prothandler.Po \
./$(DEPDIR)/pcscd-readerfactory.Po \
./$(DEPDIR)/pcscd-simclist.Po ./$(DEPDIR)/pcscd-sys_unix.Po \
./$(DEPDIR)/pcscd-tokenparser.Po ./$(DEPDIR)/pcscd-utils.Po \
./$(DEPDIR)/pcscd-winscard.Po \
./$(DEPDIR)/pcscd-winscard_msg.Po \
./$(DEPDIR)/pcscd-winscard_msg_srv.Po \
./$(DEPDIR)/pcscd-winscard_svc.Po ./$(DEPDIR)/testpcsc.Po
am__mv = mv -f am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@ -275,7 +305,7 @@ am__recursive_targets = \
$(RECURSIVE_CLEAN_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \
$(am__extra_recursive_targets) $(am__extra_recursive_targets)
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
distdir distdir distdir-am
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input, # Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is # and print each of them once, without duplicates. Input order is
@ -602,8 +632,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
*config.status*) \ *config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \ *) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
esac; esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@ -619,44 +649,6 @@ libpcsclite.pc: $(top_builddir)/config.status $(srcdir)/libpcsclite.pc.in
pcscd.h: $(top_builddir)/config.status $(srcdir)/pcscd.h.in pcscd.h: $(top_builddir)/config.status $(srcdir)/pcscd.h.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
install-libLTLIBRARIES: $(lib_LTLIBRARIES)
@$(NORMAL_INSTALL)
@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
list2=; for p in $$list; do \
if test -f $$p; then \
list2="$$list2 $$p"; \
else :; fi; \
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
$(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
}
uninstall-libLTLIBRARIES:
@$(NORMAL_UNINSTALL)
@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
for p in $$list; do \
$(am__strip_dir) \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
done
clean-libLTLIBRARIES:
-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
@list='$(lib_LTLIBRARIES)'; \
locs=`for p in $$list; do echo $$p; done | \
sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
sort -u`; \
test -z "$$locs" || { \
echo rm -f $${locs}; \
rm -f $${locs}; \
}
libpcsclite.la: $(libpcsclite_la_OBJECTS) $(libpcsclite_la_DEPENDENCIES) $(EXTRA_libpcsclite_la_DEPENDENCIES)
$(AM_V_CCLD)$(libpcsclite_la_LINK) -rpath $(libdir) $(libpcsclite_la_OBJECTS) $(libpcsclite_la_LIBADD) $(LIBS)
clean-noinstPROGRAMS: clean-noinstPROGRAMS:
@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
echo " rm -f" $$list; \ echo " rm -f" $$list; \
@ -715,6 +707,44 @@ clean-sbinPROGRAMS:
echo " rm -f" $$list; \ echo " rm -f" $$list; \
rm -f $$list rm -f $$list
install-libLTLIBRARIES: $(lib_LTLIBRARIES)
@$(NORMAL_INSTALL)
@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
list2=; for p in $$list; do \
if test -f $$p; then \
list2="$$list2 $$p"; \
else :; fi; \
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
$(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
}
uninstall-libLTLIBRARIES:
@$(NORMAL_UNINSTALL)
@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
for p in $$list; do \
$(am__strip_dir) \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
done
clean-libLTLIBRARIES:
-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
@list='$(lib_LTLIBRARIES)'; \
locs=`for p in $$list; do echo $$p; done | \
sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
sort -u`; \
test -z "$$locs" || { \
echo rm -f $${locs}; \
rm -f $${locs}; \
}
libpcsclite.la: $(libpcsclite_la_OBJECTS) $(libpcsclite_la_DEPENDENCIES) $(EXTRA_libpcsclite_la_DEPENDENCIES)
$(AM_V_CCLD)$(libpcsclite_la_LINK) -rpath $(libdir) $(libpcsclite_la_OBJECTS) $(libpcsclite_la_LIBADD) $(LIBS)
pcsc-wirecheck$(EXEEXT): $(pcsc_wirecheck_OBJECTS) $(pcsc_wirecheck_DEPENDENCIES) $(EXTRA_pcsc_wirecheck_DEPENDENCIES) pcsc-wirecheck$(EXEEXT): $(pcsc_wirecheck_OBJECTS) $(pcsc_wirecheck_DEPENDENCIES) $(EXTRA_pcsc_wirecheck_DEPENDENCIES)
@rm -f pcsc-wirecheck$(EXEEXT) @rm -f pcsc-wirecheck$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(pcsc_wirecheck_OBJECTS) $(pcsc_wirecheck_LDADD) $(LIBS) $(AM_V_CCLD)$(LINK) $(pcsc_wirecheck_OBJECTS) $(pcsc_wirecheck_LDADD) $(LIBS)
@ -737,42 +767,48 @@ mostlyclean-compile:
distclean-compile: distclean-compile:
-rm -f *.tab.c -rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcsclite_la-debug.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcsclite_la-debug.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcsclite_la-error.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcsclite_la-error.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcsclite_la-simclist.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcsclite_la-simclist.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcsclite_la-sys_unix.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcsclite_la-sys_unix.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcsclite_la-utils.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcsclite_la-utils.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcsclite_la-winscard_clnt.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcsclite_la-winscard_clnt.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcsclite_la-winscard_msg.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcsclite_la-winscard_msg.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcsc-wirecheck-dist.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcsc-wirecheck-dist.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcsc-wirecheck-gen.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcsc-wirecheck-gen.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcsc-wirecheck-main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcsc-wirecheck-main.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-atrhandler.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-atrhandler.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-auth.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-auth.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-configfile.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-configfile.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-debuglog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-debuglog.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-dyn_hpux.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-dyn_hpux.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-dyn_macosx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-dyn_macosx.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-dyn_unix.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-dyn_unix.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-eventhandler.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-eventhandler.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-hotplug_generic.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-hotplug_generic.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-hotplug_libudev.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-hotplug_libudev.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-hotplug_libusb.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-hotplug_libusb.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-hotplug_linux.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-hotplug_linux.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-hotplug_macosx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-hotplug_macosx.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-ifdwrapper.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-ifdwrapper.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-pcscdaemon.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-pcscdaemon.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-prothandler.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-prothandler.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-readerfactory.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-readerfactory.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-simclist.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-simclist.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-sys_unix.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-sys_unix.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-tokenparser.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-tokenparser.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-utils.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-utils.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-winscard.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-winscard.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-winscard_msg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-winscard_msg.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-winscard_msg_srv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-winscard_msg_srv.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-winscard_svc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcscd-winscard_svc.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testpcsc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testpcsc.Po@am__quote@ # am--include-marker
$(am__depfiles_remade):
@$(MKDIR_P) $(@D)
@echo '# dummy' >$@-t && $(am__mv) $@-t $@
am--depfiles: $(am__depfiles_remade)
.c.o: .c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@ -1368,7 +1404,10 @@ cscopelist-am: $(am__tagged_files)
distclean-tags: distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES) distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
distdir-am: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \ list='$(DISTFILES)'; \
@ -1425,10 +1464,10 @@ distdir: $(DISTFILES)
done done
check-am: all-am check-am: all-am
check: check-recursive check: check-recursive
all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(DATA) $(HEADERS) all-am: Makefile $(PROGRAMS) $(LTLIBRARIES) $(DATA) $(HEADERS)
installdirs: installdirs-recursive installdirs: installdirs-recursive
installdirs-am: installdirs-am:
for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(nodistheaderdir)" "$(DESTDIR)$(pcdir)" "$(DESTDIR)$(includedir)"; do \ for dir in "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(libdir)" "$(DESTDIR)$(nodistheaderdir)" "$(DESTDIR)$(pcdir)" "$(DESTDIR)$(includedir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done done
install: install-recursive install: install-recursive
@ -1469,7 +1508,42 @@ clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
clean-noinstPROGRAMS clean-sbinPROGRAMS mostlyclean-am clean-noinstPROGRAMS clean-sbinPROGRAMS mostlyclean-am
distclean: distclean-recursive distclean: distclean-recursive
-rm -rf ./$(DEPDIR) -rm -f ./$(DEPDIR)/libpcsclite_la-debug.Plo
-rm -f ./$(DEPDIR)/libpcsclite_la-error.Plo
-rm -f ./$(DEPDIR)/libpcsclite_la-simclist.Plo
-rm -f ./$(DEPDIR)/libpcsclite_la-sys_unix.Plo
-rm -f ./$(DEPDIR)/libpcsclite_la-utils.Plo
-rm -f ./$(DEPDIR)/libpcsclite_la-winscard_clnt.Plo
-rm -f ./$(DEPDIR)/libpcsclite_la-winscard_msg.Plo
-rm -f ./$(DEPDIR)/pcsc-wirecheck-dist.Po
-rm -f ./$(DEPDIR)/pcsc-wirecheck-gen.Po
-rm -f ./$(DEPDIR)/pcsc-wirecheck-main.Po
-rm -f ./$(DEPDIR)/pcscd-atrhandler.Po
-rm -f ./$(DEPDIR)/pcscd-auth.Po
-rm -f ./$(DEPDIR)/pcscd-configfile.Po
-rm -f ./$(DEPDIR)/pcscd-debuglog.Po
-rm -f ./$(DEPDIR)/pcscd-dyn_hpux.Po
-rm -f ./$(DEPDIR)/pcscd-dyn_macosx.Po
-rm -f ./$(DEPDIR)/pcscd-dyn_unix.Po
-rm -f ./$(DEPDIR)/pcscd-eventhandler.Po
-rm -f ./$(DEPDIR)/pcscd-hotplug_generic.Po
-rm -f ./$(DEPDIR)/pcscd-hotplug_libudev.Po
-rm -f ./$(DEPDIR)/pcscd-hotplug_libusb.Po
-rm -f ./$(DEPDIR)/pcscd-hotplug_linux.Po
-rm -f ./$(DEPDIR)/pcscd-hotplug_macosx.Po
-rm -f ./$(DEPDIR)/pcscd-ifdwrapper.Po
-rm -f ./$(DEPDIR)/pcscd-pcscdaemon.Po
-rm -f ./$(DEPDIR)/pcscd-prothandler.Po
-rm -f ./$(DEPDIR)/pcscd-readerfactory.Po
-rm -f ./$(DEPDIR)/pcscd-simclist.Po
-rm -f ./$(DEPDIR)/pcscd-sys_unix.Po
-rm -f ./$(DEPDIR)/pcscd-tokenparser.Po
-rm -f ./$(DEPDIR)/pcscd-utils.Po
-rm -f ./$(DEPDIR)/pcscd-winscard.Po
-rm -f ./$(DEPDIR)/pcscd-winscard_msg.Po
-rm -f ./$(DEPDIR)/pcscd-winscard_msg_srv.Po
-rm -f ./$(DEPDIR)/pcscd-winscard_svc.Po
-rm -f ./$(DEPDIR)/testpcsc.Po
-rm -f Makefile -rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \ distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags distclean-tags
@ -1516,7 +1590,42 @@ install-ps-am:
installcheck-am: installcheck-am:
maintainer-clean: maintainer-clean-recursive maintainer-clean: maintainer-clean-recursive
-rm -rf ./$(DEPDIR) -rm -f ./$(DEPDIR)/libpcsclite_la-debug.Plo
-rm -f ./$(DEPDIR)/libpcsclite_la-error.Plo
-rm -f ./$(DEPDIR)/libpcsclite_la-simclist.Plo
-rm -f ./$(DEPDIR)/libpcsclite_la-sys_unix.Plo
-rm -f ./$(DEPDIR)/libpcsclite_la-utils.Plo
-rm -f ./$(DEPDIR)/libpcsclite_la-winscard_clnt.Plo
-rm -f ./$(DEPDIR)/libpcsclite_la-winscard_msg.Plo
-rm -f ./$(DEPDIR)/pcsc-wirecheck-dist.Po
-rm -f ./$(DEPDIR)/pcsc-wirecheck-gen.Po
-rm -f ./$(DEPDIR)/pcsc-wirecheck-main.Po
-rm -f ./$(DEPDIR)/pcscd-atrhandler.Po
-rm -f ./$(DEPDIR)/pcscd-auth.Po
-rm -f ./$(DEPDIR)/pcscd-configfile.Po
-rm -f ./$(DEPDIR)/pcscd-debuglog.Po
-rm -f ./$(DEPDIR)/pcscd-dyn_hpux.Po
-rm -f ./$(DEPDIR)/pcscd-dyn_macosx.Po
-rm -f ./$(DEPDIR)/pcscd-dyn_unix.Po
-rm -f ./$(DEPDIR)/pcscd-eventhandler.Po
-rm -f ./$(DEPDIR)/pcscd-hotplug_generic.Po
-rm -f ./$(DEPDIR)/pcscd-hotplug_libudev.Po
-rm -f ./$(DEPDIR)/pcscd-hotplug_libusb.Po
-rm -f ./$(DEPDIR)/pcscd-hotplug_linux.Po
-rm -f ./$(DEPDIR)/pcscd-hotplug_macosx.Po
-rm -f ./$(DEPDIR)/pcscd-ifdwrapper.Po
-rm -f ./$(DEPDIR)/pcscd-pcscdaemon.Po
-rm -f ./$(DEPDIR)/pcscd-prothandler.Po
-rm -f ./$(DEPDIR)/pcscd-readerfactory.Po
-rm -f ./$(DEPDIR)/pcscd-simclist.Po
-rm -f ./$(DEPDIR)/pcscd-sys_unix.Po
-rm -f ./$(DEPDIR)/pcscd-tokenparser.Po
-rm -f ./$(DEPDIR)/pcscd-utils.Po
-rm -f ./$(DEPDIR)/pcscd-winscard.Po
-rm -f ./$(DEPDIR)/pcscd-winscard_msg.Po
-rm -f ./$(DEPDIR)/pcscd-winscard_msg_srv.Po
-rm -f ./$(DEPDIR)/pcscd-winscard_svc.Po
-rm -f ./$(DEPDIR)/testpcsc.Po
-rm -f Makefile -rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic maintainer-clean-am: distclean-am maintainer-clean-generic
@ -1539,23 +1648,23 @@ uninstall-am: uninstall-libLTLIBRARIES uninstall-nobase_includeHEADERS \
.MAKE: $(am__recursive_targets) install-am install-strip .MAKE: $(am__recursive_targets) install-am install-strip
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
check-am clean clean-generic clean-libLTLIBRARIES \ am--depfiles check check-am clean clean-generic \
clean-libtool clean-noinstPROGRAMS clean-sbinPROGRAMS \ clean-libLTLIBRARIES clean-libtool clean-noinstPROGRAMS \
cscopelist-am ctags ctags-am distclean distclean-compile \ clean-sbinPROGRAMS cscopelist-am ctags ctags-am distclean \
distclean-generic distclean-libtool distclean-tags distdir dvi \ distclean-compile distclean-generic distclean-libtool \
dvi-am html html-am info info-am install install-am \ distclean-tags distdir dvi dvi-am html html-am info info-am \
install-data install-data-am install-dvi install-dvi-am \ install install-am install-data install-data-am install-dvi \
install-exec install-exec-am install-html install-html-am \ install-dvi-am install-exec install-exec-am install-html \
install-info install-info-am install-libLTLIBRARIES \ install-html-am install-info install-info-am \
install-man install-nobase_includeHEADERS \ install-libLTLIBRARIES install-man \
install-nodistheaderDATA install-pcDATA install-pdf \ install-nobase_includeHEADERS install-nodistheaderDATA \
install-pdf-am install-ps install-ps-am install-sbinPROGRAMS \ install-pcDATA install-pdf install-pdf-am install-ps \
install-strip installcheck installcheck-am installdirs \ install-ps-am install-sbinPROGRAMS install-strip installcheck \
installdirs-am maintainer-clean maintainer-clean-generic \ installcheck-am installdirs installdirs-am maintainer-clean \
mostlyclean mostlyclean-compile mostlyclean-generic \ maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
uninstall-am uninstall-libLTLIBRARIES \ tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES \
uninstall-nobase_includeHEADERS uninstall-nodistheaderDATA \ uninstall-nobase_includeHEADERS uninstall-nodistheaderDATA \
uninstall-pcDATA uninstall-sbinPROGRAMS uninstall-pcDATA uninstall-sbinPROGRAMS

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 1999-2004 * Copyright (C) 1999-2004
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 1999-2004 * Copyright (C) 1999-2004
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>
@ -40,7 +40,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
The routines specified hereafter will allow you to write an IFD handler The routines specified hereafter will allow you to write an IFD handler
for the PC/SC Lite resource manager. Please use the complement for the PC/SC Lite resource manager. Please use the complement
developer's kit complete with headers and Makefile at: developer's kit complete with headers and Makefile at:
http://www.musclecard.com/drivers.html https://muscle.apdu.fr/musclecard.com/sourcedrivers.html
This gives a common API for communication to most readers in a This gives a common API for communication to most readers in a
homogeneous fashion. This document assumes that the driver developer is homogeneous fashion. This document assumes that the driver developer is
@ -82,7 +82,7 @@ Example:
<string>0x04E6</string> <string>0x04E6</string>
@endverbatim @endverbatim
You may have an OEM of this reader in which an additional @c <string> You may have an OEM of this reader in which an additional @c \<string>
can be used like in the below example: can be used like in the below example:
@verbatim @verbatim
@ -98,9 +98,8 @@ also. You may chose not to support this feature but it is useful when
reader vendors OEM products so you only distribute one driver. reader vendors OEM products so you only distribute one driver.
The CCID driver from Ludovic Rousseau The CCID driver from Ludovic Rousseau https://ccid.apdu.fr/ uses this
http://pcsclite.alioth.debian.org/ccid.html uses this feature since the feature since the same driver supports many different readers.
same driver supports many different readers.
@subsection ifdProductID @subsection ifdProductID
@ -203,7 +202,7 @@ It has the following syntax:
# Configuration file for pcsc-lite # Configuration file for pcsc-lite
# David Corcoran <corcoran@musclecard.com> # David Corcoran <corcoran@musclecard.com>
FRIENDLYNAME Generic Reader FRIENDLYNAME "Generic Reader"
DEVICENAME /dev/ttyS0 DEVICENAME /dev/ttyS0
LIBPATH /usr/lib/pcsc/drivers/libgen_ifd.so LIBPATH /usr/lib/pcsc/drivers/libgen_ifd.so
CHANNELID 1 CHANNELID 1

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 1999-2004 * Copyright (C) 1999-2004
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>
@ -279,7 +279,7 @@ extern const SCARD_IO_REQUEST g_rgSCardT0Pci, g_rgSCardT1Pci, g_rgSCardRawPci;
#define INFINITE 0xFFFFFFFF /**< Infinite timeout */ #define INFINITE 0xFFFFFFFF /**< Infinite timeout */
#endif #endif
#define PCSCLITE_VERSION_NUMBER "1.8.23" /**< Current version */ #define PCSCLITE_VERSION_NUMBER "1.8.24" /**< Current version */
/** Maximum readers context (a slot is count as a reader) */ /** Maximum readers context (a slot is count as a reader) */
#define PCSCLITE_MAX_READERS_CONTEXTS 16 #define PCSCLITE_MAX_READERS_CONTEXTS 16

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 1999-2004 * Copyright (C) 1999-2004
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 1999-2005 * Copyright (C) 1999-2005
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 1999-2003 * Copyright (C) 1999-2003
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 1999 * Copyright (C) 1999
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 1999-2002 * Copyright (C) 1999-2002
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 1999-2002 * Copyright (C) 1999-2002
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 2013 Red Hat * Copyright (C) 2013 Red Hat
* *

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 2013 Red Hat * Copyright (C) 2013 Red Hat
* *

View File

@ -8,7 +8,7 @@
#define FLEX_SCANNER #define FLEX_SCANNER
#define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MAJOR_VERSION 2
#define YY_FLEX_MINOR_VERSION 6 #define YY_FLEX_MINOR_VERSION 6
#define YY_FLEX_SUBMINOR_VERSION 1 #define YY_FLEX_SUBMINOR_VERSION 4
#if YY_FLEX_SUBMINOR_VERSION > 0 #if YY_FLEX_SUBMINOR_VERSION > 0
#define FLEX_BETA #define FLEX_BETA
#endif #endif
@ -83,10 +83,16 @@ typedef unsigned int flex_uint32_t;
#define UINT32_MAX (4294967295U) #define UINT32_MAX (4294967295U)
#endif #endif
#ifndef SIZE_MAX
#define SIZE_MAX (~(size_t)0)
#endif
#endif /* ! C99 */ #endif /* ! C99 */
#endif /* ! FLEXINT_H */ #endif /* ! FLEXINT_H */
/* begin standard C++ headers. */
/* TODO: this is always defined, so inline it */ /* TODO: this is always defined, so inline it */
#define yyconst const #define yyconst const
@ -99,32 +105,26 @@ typedef unsigned int flex_uint32_t;
/* Returned upon end-of-file. */ /* Returned upon end-of-file. */
#define YY_NULL 0 #define YY_NULL 0
/* Promotes a possibly negative, possibly signed char to an unsigned /* Promotes a possibly negative, possibly signed char to an
* integer for use as an array index. If the signed char is negative, * integer in range [0..255] for use as an array index.
* we want to instead treat it as an 8-bit unsigned char, hence the
* double cast.
*/ */
#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) #define YY_SC_TO_UI(c) ((YY_CHAR) (c))
/* Enter a start condition. This macro really ought to take a parameter, /* Enter a start condition. This macro really ought to take a parameter,
* but we do it the disgusting crufty way forced on us by the ()-less * but we do it the disgusting crufty way forced on us by the ()-less
* definition of BEGIN. * definition of BEGIN.
*/ */
#define BEGIN (yy_start) = 1 + 2 * #define BEGIN (yy_start) = 1 + 2 *
/* Translate the current start state into a value that can be later handed /* Translate the current start state into a value that can be later handed
* to BEGIN to return to the state. The YYSTATE alias is for lex * to BEGIN to return to the state. The YYSTATE alias is for lex
* compatibility. * compatibility.
*/ */
#define YY_START (((yy_start) - 1) / 2) #define YY_START (((yy_start) - 1) / 2)
#define YYSTATE YY_START #define YYSTATE YY_START
/* Action number for EOF rule of a given start state. */ /* Action number for EOF rule of a given start state. */
#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
/* Special action meaning "start processing a new file". */ /* Special action meaning "start processing a new file". */
#define YY_NEW_FILE yyrestart(yyin ) #define YY_NEW_FILE yyrestart( yyin )
#define YY_END_OF_BUFFER_CHAR 0 #define YY_END_OF_BUFFER_CHAR 0
/* Size of default input buffer. */ /* Size of default input buffer. */
@ -161,7 +161,7 @@ extern FILE *yyin, *yyout;
#define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_CONTINUE_SCAN 0
#define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_END_OF_FILE 1
#define EOB_ACT_LAST_MATCH 2 #define EOB_ACT_LAST_MATCH 2
#define YY_LESS_LINENO(n) #define YY_LESS_LINENO(n)
#define YY_LINENO_REWIND_TO(ptr) #define YY_LINENO_REWIND_TO(ptr)
@ -178,7 +178,6 @@ extern FILE *yyin, *yyout;
YY_DO_BEFORE_ACTION; /* set up yytext again */ \ YY_DO_BEFORE_ACTION; /* set up yytext again */ \
} \ } \
while ( 0 ) while ( 0 )
#define unput(c) yyunput( c, (yytext_ptr) ) #define unput(c) yyunput( c, (yytext_ptr) )
#ifndef YY_STRUCT_YY_BUFFER_STATE #ifndef YY_STRUCT_YY_BUFFER_STATE
@ -260,7 +259,6 @@ static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */
#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
? (yy_buffer_stack)[(yy_buffer_stack_top)] \ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
: NULL) : NULL)
/* Same as previous macro, but useful when we know that the buffer stack is not /* Same as previous macro, but useful when we know that the buffer stack is not
* NULL or when we need an lvalue. For internal use only. * NULL or when we need an lvalue. For internal use only.
*/ */
@ -281,65 +279,59 @@ static int yy_start = 0; /* start state number */
*/ */
static int yy_did_buffer_switch_on_eof; static int yy_did_buffer_switch_on_eof;
void yyrestart (FILE *input_file ); void yyrestart ( FILE *input_file );
void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer );
YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ); YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size );
void yy_delete_buffer (YY_BUFFER_STATE b ); void yy_delete_buffer ( YY_BUFFER_STATE b );
void yy_flush_buffer (YY_BUFFER_STATE b ); void yy_flush_buffer ( YY_BUFFER_STATE b );
void yypush_buffer_state (YY_BUFFER_STATE new_buffer ); void yypush_buffer_state ( YY_BUFFER_STATE new_buffer );
void yypop_buffer_state (void ); void yypop_buffer_state ( void );
static void yyensure_buffer_stack (void ); static void yyensure_buffer_stack ( void );
static void yy_load_buffer_state (void ); static void yy_load_buffer_state ( void );
static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file );
#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER )
#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ) YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size );
YY_BUFFER_STATE yy_scan_string ( const char *yy_str );
YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len );
YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); void *yyalloc ( yy_size_t );
YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); void *yyrealloc ( void *, yy_size_t );
YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ); void yyfree ( void * );
void *yyalloc (yy_size_t );
void *yyrealloc (void *,yy_size_t );
void yyfree (void * );
#define yy_new_buffer yy_create_buffer #define yy_new_buffer yy_create_buffer
#define yy_set_interactive(is_interactive) \ #define yy_set_interactive(is_interactive) \
{ \ { \
if ( ! YY_CURRENT_BUFFER ){ \ if ( ! YY_CURRENT_BUFFER ){ \
yyensure_buffer_stack (); \ yyensure_buffer_stack (); \
YY_CURRENT_BUFFER_LVALUE = \ YY_CURRENT_BUFFER_LVALUE = \
yy_create_buffer(yyin,YY_BUF_SIZE ); \ yy_create_buffer( yyin, YY_BUF_SIZE ); \
} \ } \
YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
} }
#define yy_set_bol(at_bol) \ #define yy_set_bol(at_bol) \
{ \ { \
if ( ! YY_CURRENT_BUFFER ){\ if ( ! YY_CURRENT_BUFFER ){\
yyensure_buffer_stack (); \ yyensure_buffer_stack (); \
YY_CURRENT_BUFFER_LVALUE = \ YY_CURRENT_BUFFER_LVALUE = \
yy_create_buffer(yyin,YY_BUF_SIZE ); \ yy_create_buffer( yyin, YY_BUF_SIZE ); \
} \ } \
YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
} }
#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
/* Begin user sect3 */ /* Begin user sect3 */
#define yywrap() (/*CONSTCOND*/1) #define yywrap() (/*CONSTCOND*/1)
#define YY_SKIP_YYWRAP #define YY_SKIP_YYWRAP
typedef flex_uint8_t YY_CHAR;
typedef unsigned char YY_CHAR;
FILE *yyin = NULL, *yyout = NULL; FILE *yyin = NULL, *yyout = NULL;
typedef int yy_state_type; typedef int yy_state_type;
extern int yylineno; extern int yylineno;
int yylineno = 1; int yylineno = 1;
extern char *yytext; extern char *yytext;
@ -348,10 +340,10 @@ extern char *yytext;
#endif #endif
#define yytext_ptr yytext #define yytext_ptr yytext
static yy_state_type yy_get_previous_state (void ); static yy_state_type yy_get_previous_state ( void );
static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); static yy_state_type yy_try_NUL_trans ( yy_state_type current_state );
static int yy_get_next_buffer (void ); static int yy_get_next_buffer ( void );
static void yynoreturn yy_fatal_error (yyconst char* msg ); static void yynoreturn yy_fatal_error ( const char* msg );
/* Done after the current pattern has been matched and before the /* Done after the current pattern has been matched and before the
* corresponding action - sets up yytext. * corresponding action - sets up yytext.
@ -362,7 +354,6 @@ static void yynoreturn yy_fatal_error (yyconst char* msg );
(yy_hold_char) = *yy_cp; \ (yy_hold_char) = *yy_cp; \
*yy_cp = '\0'; \ *yy_cp = '\0'; \
(yy_c_buf_p) = yy_cp; (yy_c_buf_p) = yy_cp;
#define YY_NUM_RULES 7 #define YY_NUM_RULES 7
#define YY_END_OF_BUFFER 8 #define YY_END_OF_BUFFER 8
/* This struct is not used in this scanner, /* This struct is not used in this scanner,
@ -372,13 +363,13 @@ struct yy_trans_info
flex_int32_t yy_verify; flex_int32_t yy_verify;
flex_int32_t yy_nxt; flex_int32_t yy_nxt;
}; };
static yyconst flex_int16_t yy_accept[17] = static const flex_int16_t yy_accept[17] =
{ 0, { 0,
0, 0, 8, 6, 4, 2, 6, 1, 6, 5, 0, 0, 8, 6, 4, 2, 6, 1, 6, 5,
0, 3, 1, 0, 5, 0 0, 3, 1, 0, 5, 0
} ; } ;
static yyconst YY_CHAR yy_ec[256] = static const YY_CHAR yy_ec[256] =
{ 0, { 0,
1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@ -386,7 +377,7 @@ static yyconst YY_CHAR yy_ec[256] =
1, 2, 1, 4, 5, 1, 1, 1, 6, 1, 1, 2, 1, 4, 5, 1, 1, 1, 6, 1,
1, 1, 1, 1, 7, 7, 7, 8, 8, 8, 1, 1, 1, 1, 7, 7, 7, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 7, 1, 1, 8, 8, 8, 8, 8, 8, 8, 7, 1, 1,
1, 1, 1, 7, 9, 9, 9, 9, 9, 9, 7, 1, 1, 7, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1, 7, 1, 1, 7, 1, 10, 10, 10, 10, 1, 7, 1, 1, 7, 1, 10, 10, 10, 10,
@ -410,24 +401,24 @@ static yyconst YY_CHAR yy_ec[256] =
1, 1, 1, 1, 1 1, 1, 1, 1, 1
} ; } ;
static yyconst YY_CHAR yy_meta[11] = static const YY_CHAR yy_meta[11] =
{ 0, { 0,
1, 1, 2, 1, 1, 1, 1, 1, 1, 1 1, 1, 2, 1, 1, 1, 1, 1, 1, 1
} ; } ;
static yyconst flex_uint16_t yy_base[20] = static const flex_int16_t yy_base[20] =
{ 0, { 0,
0, 0, 15, 31, 31, 31, 8, 0, 10, 10, 0, 0, 15, 31, 31, 31, 8, 0, 10, 10,
18, 31, 0, 20, 0, 31, 26, 13, 28 18, 31, 0, 20, 0, 31, 26, 13, 28
} ; } ;
static yyconst flex_int16_t yy_def[20] = static const flex_int16_t yy_def[20] =
{ 0, { 0,
16, 1, 16, 16, 16, 16, 17, 18, 19, 16, 16, 1, 16, 16, 16, 16, 17, 18, 19, 16,
17, 16, 18, 19, 10, 0, 16, 16, 16 17, 16, 18, 19, 10, 0, 16, 16, 16
} ; } ;
static yyconst flex_uint16_t yy_nxt[42] = static const flex_int16_t yy_nxt[42] =
{ 0, { 0,
4, 5, 6, 7, 8, 9, 10, 10, 10, 10, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10,
12, 12, 12, 13, 16, 12, 15, 15, 15, 15, 12, 12, 12, 13, 16, 12, 15, 15, 15, 15,
@ -436,7 +427,7 @@ static yyconst flex_uint16_t yy_nxt[42] =
16 16
} ; } ;
static yyconst flex_int16_t yy_chk[42] = static const flex_int16_t yy_chk[42] =
{ 0, { 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7, 7, 9, 18, 3, 9, 10, 10, 10, 10, 7, 7, 9, 18, 3, 9, 10, 10, 10, 10,
@ -463,7 +454,7 @@ char *yytext;
/* /*
* Reads lexical config files and updates database. * Reads lexical config files and updates database.
* *
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 1999-2002 * Copyright (C) 1999-2002
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>
@ -521,8 +512,9 @@ const char *ConfFile;
void tok_error(char *pcToken_error); void tok_error(char *pcToken_error);
#line 516 "configfile.c"
#define YY_NO_INPUT 1 #define YY_NO_INPUT 1
#line 526 "configfile.c" #line 518 "configfile.c"
#define INITIAL 0 #define INITIAL 0
@ -538,36 +530,36 @@ void tok_error(char *pcToken_error);
#define YY_EXTRA_TYPE void * #define YY_EXTRA_TYPE void *
#endif #endif
static int yy_init_globals (void ); static int yy_init_globals ( void );
/* Accessor methods to globals. /* Accessor methods to globals.
These are made visible to non-reentrant scanners for convenience. */ These are made visible to non-reentrant scanners for convenience. */
int yylex_destroy (void ); int yylex_destroy ( void );
int yyget_debug (void ); int yyget_debug ( void );
void yyset_debug (int debug_flag ); void yyset_debug ( int debug_flag );
YY_EXTRA_TYPE yyget_extra (void ); YY_EXTRA_TYPE yyget_extra ( void );
void yyset_extra (YY_EXTRA_TYPE user_defined ); void yyset_extra ( YY_EXTRA_TYPE user_defined );
FILE *yyget_in (void ); FILE *yyget_in ( void );
void yyset_in (FILE * _in_str ); void yyset_in ( FILE * _in_str );
FILE *yyget_out (void ); FILE *yyget_out ( void );
void yyset_out (FILE * _out_str ); void yyset_out ( FILE * _out_str );
int yyget_leng (void ); int yyget_leng ( void );
char *yyget_text (void ); char *yyget_text ( void );
int yyget_lineno (void ); int yyget_lineno ( void );
void yyset_lineno (int _line_number ); void yyset_lineno ( int _line_number );
/* Macros after this point can all be overridden by user definitions in /* Macros after this point can all be overridden by user definitions in
* section 1. * section 1.
@ -575,9 +567,9 @@ void yyset_lineno (int _line_number );
#ifndef YY_SKIP_YYWRAP #ifndef YY_SKIP_YYWRAP
#ifdef __cplusplus #ifdef __cplusplus
extern "C" int yywrap (void ); extern "C" int yywrap ( void );
#else #else
extern int yywrap (void ); extern int yywrap ( void );
#endif #endif
#endif #endif
@ -586,19 +578,18 @@ extern int yywrap (void );
#endif #endif
#ifndef yytext_ptr #ifndef yytext_ptr
static void yy_flex_strncpy (char *,yyconst char *,int ); static void yy_flex_strncpy ( char *, const char *, int );
#endif #endif
#ifdef YY_NEED_STRLEN #ifdef YY_NEED_STRLEN
static int yy_flex_strlen (yyconst char * ); static int yy_flex_strlen ( const char * );
#endif #endif
#ifndef YY_NO_INPUT #ifndef YY_NO_INPUT
#ifdef __cplusplus #ifdef __cplusplus
static int yyinput (void ); static int yyinput ( void );
#else #else
static int input (void ); static int input ( void );
#endif #endif
#endif #endif
@ -629,7 +620,7 @@ static int input (void );
if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
{ \ { \
int c = '*'; \ int c = '*'; \
size_t n; \ int n; \
for ( n = 0; n < max_size && \ for ( n = 0; n < max_size && \
(c = getc( yyin )) != EOF && c != '\n'; ++n ) \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
buf[n] = (char) c; \ buf[n] = (char) c; \
@ -642,7 +633,7 @@ static int input (void );
else \ else \
{ \ { \
errno=0; \ errno=0; \
while ( (result = (int) fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
{ \ { \
if( errno != EINTR) \ if( errno != EINTR) \
{ \ { \
@ -731,17 +722,17 @@ YY_DECL
if ( ! YY_CURRENT_BUFFER ) { if ( ! YY_CURRENT_BUFFER ) {
yyensure_buffer_stack (); yyensure_buffer_stack ();
YY_CURRENT_BUFFER_LVALUE = YY_CURRENT_BUFFER_LVALUE =
yy_create_buffer(yyin,YY_BUF_SIZE ); yy_create_buffer( yyin, YY_BUF_SIZE );
} }
yy_load_buffer_state( ); yy_load_buffer_state( );
} }
{ {
#line 69 "configfile.l" #line 69 "configfile.l"
#line 745 "configfile.c" #line 736 "configfile.c"
while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
{ {
@ -769,9 +760,9 @@ yy_match:
{ {
yy_current_state = (int) yy_def[yy_current_state]; yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 17 ) if ( yy_current_state >= 17 )
yy_c = yy_meta[(unsigned int) yy_c]; yy_c = yy_meta[yy_c];
} }
yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
++yy_cp; ++yy_cp;
} }
while ( yy_base[yy_current_state] != 31 ); while ( yy_base[yy_current_state] != 31 );
@ -835,7 +826,7 @@ YY_RULE_SETUP
#line 77 "configfile.l" #line 77 "configfile.l"
ECHO; ECHO;
YY_BREAK YY_BREAK
#line 839 "configfile.c" #line 830 "configfile.c"
case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(INITIAL):
yyterminate(); yyterminate();
@ -913,7 +904,7 @@ case YY_STATE_EOF(INITIAL):
{ {
(yy_did_buffer_switch_on_eof) = 0; (yy_did_buffer_switch_on_eof) = 0;
if ( yywrap( ) ) if ( yywrap( ) )
{ {
/* Note: because we've taken care in /* Note: because we've taken care in
* yy_get_next_buffer() to have set up * yy_get_next_buffer() to have set up
@ -1045,7 +1036,8 @@ static int yy_get_next_buffer (void)
b->yy_ch_buf = (char *) b->yy_ch_buf = (char *)
/* Include room in for 2 EOB chars. */ /* Include room in for 2 EOB chars. */
yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); yyrealloc( (void *) b->yy_ch_buf,
(yy_size_t) (b->yy_buf_size + 2) );
} }
else else
/* Can't grow it, we don't own it. */ /* Can't grow it, we don't own it. */
@ -1077,7 +1069,7 @@ static int yy_get_next_buffer (void)
if ( number_to_move == YY_MORE_ADJ ) if ( number_to_move == YY_MORE_ADJ )
{ {
ret_val = EOB_ACT_END_OF_FILE; ret_val = EOB_ACT_END_OF_FILE;
yyrestart(yyin ); yyrestart( yyin );
} }
else else
@ -1094,9 +1086,12 @@ static int yy_get_next_buffer (void)
if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
/* Extend the array by 50%, plus the number we really need. */ /* Extend the array by 50%, plus the number we really need. */
int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
(void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size );
if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
/* "- 2" to take care of EOB's */
YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
} }
(yy_n_chars) += number_to_move; (yy_n_chars) += number_to_move;
@ -1129,9 +1124,9 @@ static int yy_get_next_buffer (void)
{ {
yy_current_state = (int) yy_def[yy_current_state]; yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 17 ) if ( yy_current_state >= 17 )
yy_c = yy_meta[(unsigned int) yy_c]; yy_c = yy_meta[yy_c];
} }
yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
} }
return yy_current_state; return yy_current_state;
@ -1157,9 +1152,9 @@ static int yy_get_next_buffer (void)
{ {
yy_current_state = (int) yy_def[yy_current_state]; yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 17 ) if ( yy_current_state >= 17 )
yy_c = yy_meta[(unsigned int) yy_c]; yy_c = yy_meta[yy_c];
} }
yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
yy_is_jam = (yy_current_state == 16); yy_is_jam = (yy_current_state == 16);
return yy_is_jam ? 0 : yy_current_state; return yy_is_jam ? 0 : yy_current_state;
@ -1193,7 +1188,7 @@ static int yy_get_next_buffer (void)
else else
{ /* need more input */ { /* need more input */
int offset = (yy_c_buf_p) - (yytext_ptr); int offset = (int) ((yy_c_buf_p) - (yytext_ptr));
++(yy_c_buf_p); ++(yy_c_buf_p);
switch ( yy_get_next_buffer( ) ) switch ( yy_get_next_buffer( ) )
@ -1210,13 +1205,13 @@ static int yy_get_next_buffer (void)
*/ */
/* Reset buffer status. */ /* Reset buffer status. */
yyrestart(yyin ); yyrestart( yyin );
/*FALLTHROUGH*/ /*FALLTHROUGH*/
case EOB_ACT_END_OF_FILE: case EOB_ACT_END_OF_FILE:
{ {
if ( yywrap( ) ) if ( yywrap( ) )
return 0; return 0;
if ( ! (yy_did_buffer_switch_on_eof) ) if ( ! (yy_did_buffer_switch_on_eof) )
@ -1254,11 +1249,11 @@ static int yy_get_next_buffer (void)
if ( ! YY_CURRENT_BUFFER ){ if ( ! YY_CURRENT_BUFFER ){
yyensure_buffer_stack (); yyensure_buffer_stack ();
YY_CURRENT_BUFFER_LVALUE = YY_CURRENT_BUFFER_LVALUE =
yy_create_buffer(yyin,YY_BUF_SIZE ); yy_create_buffer( yyin, YY_BUF_SIZE );
} }
yy_init_buffer(YY_CURRENT_BUFFER,input_file ); yy_init_buffer( YY_CURRENT_BUFFER, input_file );
yy_load_buffer_state( ); yy_load_buffer_state( );
} }
/** Switch to a different input buffer. /** Switch to a different input buffer.
@ -1286,7 +1281,7 @@ static int yy_get_next_buffer (void)
} }
YY_CURRENT_BUFFER_LVALUE = new_buffer; YY_CURRENT_BUFFER_LVALUE = new_buffer;
yy_load_buffer_state( ); yy_load_buffer_state( );
/* We don't actually know whether we did this switch during /* We don't actually know whether we did this switch during
* EOF (yywrap()) processing, but the only time this flag * EOF (yywrap()) processing, but the only time this flag
@ -1314,22 +1309,22 @@ static void yy_load_buffer_state (void)
{ {
YY_BUFFER_STATE b; YY_BUFFER_STATE b;
b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) );
if ( ! b ) if ( ! b )
YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
b->yy_buf_size = (yy_size_t)size; b->yy_buf_size = size;
/* yy_ch_buf has to be 2 characters longer than the size given because /* yy_ch_buf has to be 2 characters longer than the size given because
* we need to put in 2 end-of-buffer characters. * we need to put in 2 end-of-buffer characters.
*/ */
b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ); b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) );
if ( ! b->yy_ch_buf ) if ( ! b->yy_ch_buf )
YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
b->yy_is_our_buffer = 1; b->yy_is_our_buffer = 1;
yy_init_buffer(b,file ); yy_init_buffer( b, file );
return b; return b;
} }
@ -1348,9 +1343,9 @@ static void yy_load_buffer_state (void)
YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
if ( b->yy_is_our_buffer ) if ( b->yy_is_our_buffer )
yyfree((void *) b->yy_ch_buf ); yyfree( (void *) b->yy_ch_buf );
yyfree((void *) b ); yyfree( (void *) b );
} }
/* Initializes or reinitializes a buffer. /* Initializes or reinitializes a buffer.
@ -1362,7 +1357,7 @@ static void yy_load_buffer_state (void)
{ {
int oerrno = errno; int oerrno = errno;
yy_flush_buffer(b ); yy_flush_buffer( b );
b->yy_input_file = file; b->yy_input_file = file;
b->yy_fill_buffer = 1; b->yy_fill_buffer = 1;
@ -1405,7 +1400,7 @@ static void yy_load_buffer_state (void)
b->yy_buffer_status = YY_BUFFER_NEW; b->yy_buffer_status = YY_BUFFER_NEW;
if ( b == YY_CURRENT_BUFFER ) if ( b == YY_CURRENT_BUFFER )
yy_load_buffer_state( ); yy_load_buffer_state( );
} }
/** Pushes the new state onto the stack. The new state becomes /** Pushes the new state onto the stack. The new state becomes
@ -1436,7 +1431,7 @@ void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
YY_CURRENT_BUFFER_LVALUE = new_buffer; YY_CURRENT_BUFFER_LVALUE = new_buffer;
/* copied from yy_switch_to_buffer. */ /* copied from yy_switch_to_buffer. */
yy_load_buffer_state( ); yy_load_buffer_state( );
(yy_did_buffer_switch_on_eof) = 1; (yy_did_buffer_switch_on_eof) = 1;
} }
@ -1455,7 +1450,7 @@ void yypop_buffer_state (void)
--(yy_buffer_stack_top); --(yy_buffer_stack_top);
if (YY_CURRENT_BUFFER) { if (YY_CURRENT_BUFFER) {
yy_load_buffer_state( ); yy_load_buffer_state( );
(yy_did_buffer_switch_on_eof) = 1; (yy_did_buffer_switch_on_eof) = 1;
} }
} }
@ -1465,7 +1460,7 @@ void yypop_buffer_state (void)
*/ */
static void yyensure_buffer_stack (void) static void yyensure_buffer_stack (void)
{ {
int num_to_alloc; yy_size_t num_to_alloc;
if (!(yy_buffer_stack)) { if (!(yy_buffer_stack)) {
@ -1522,11 +1517,11 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size )
/* They forgot to leave room for the EOB's. */ /* They forgot to leave room for the EOB's. */
return NULL; return NULL;
b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) );
if ( ! b ) if ( ! b )
YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */
b->yy_buf_pos = b->yy_ch_buf = base; b->yy_buf_pos = b->yy_ch_buf = base;
b->yy_is_our_buffer = 0; b->yy_is_our_buffer = 0;
b->yy_input_file = NULL; b->yy_input_file = NULL;
@ -1536,7 +1531,7 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size )
b->yy_fill_buffer = 0; b->yy_fill_buffer = 0;
b->yy_buffer_status = YY_BUFFER_NEW; b->yy_buffer_status = YY_BUFFER_NEW;
yy_switch_to_buffer(b ); yy_switch_to_buffer( b );
return b; return b;
} }
@ -1549,10 +1544,10 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size )
* @note If you want to scan bytes that may contain NUL values, then use * @note If you want to scan bytes that may contain NUL values, then use
* yy_scan_bytes() instead. * yy_scan_bytes() instead.
*/ */
YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) YY_BUFFER_STATE yy_scan_string (const char * yystr )
{ {
return yy_scan_bytes(yystr,(int) strlen(yystr) ); return yy_scan_bytes( yystr, (int) strlen(yystr) );
} }
/** Setup the input buffer state to scan the given bytes. The next call to yylex() will /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
@ -1562,7 +1557,7 @@ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
* *
* @return the newly allocated buffer state object. * @return the newly allocated buffer state object.
*/ */
YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len )
{ {
YY_BUFFER_STATE b; YY_BUFFER_STATE b;
char *buf; char *buf;
@ -1571,7 +1566,7 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len )
/* Get memory for full buffer, including space for trailing EOB's. */ /* Get memory for full buffer, including space for trailing EOB's. */
n = (yy_size_t) (_yybytes_len + 2); n = (yy_size_t) (_yybytes_len + 2);
buf = (char *) yyalloc(n ); buf = (char *) yyalloc( n );
if ( ! buf ) if ( ! buf )
YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
@ -1580,7 +1575,7 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len )
buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
b = yy_scan_buffer(buf,n ); b = yy_scan_buffer( buf, n );
if ( ! b ) if ( ! b )
YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
@ -1596,9 +1591,9 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len )
#define YY_EXIT_FAILURE 2 #define YY_EXIT_FAILURE 2
#endif #endif
static void yynoreturn yy_fatal_error (yyconst char* msg ) static void yynoreturn yy_fatal_error (const char* msg )
{ {
(void) fprintf( stderr, "%s\n", msg ); fprintf( stderr, "%s\n", msg );
exit( YY_EXIT_FAILURE ); exit( YY_EXIT_FAILURE );
} }
@ -1733,7 +1728,7 @@ int yylex_destroy (void)
/* Pop the buffer stack, destroying each element. */ /* Pop the buffer stack, destroying each element. */
while(YY_CURRENT_BUFFER){ while(YY_CURRENT_BUFFER){
yy_delete_buffer(YY_CURRENT_BUFFER ); yy_delete_buffer( YY_CURRENT_BUFFER );
YY_CURRENT_BUFFER_LVALUE = NULL; YY_CURRENT_BUFFER_LVALUE = NULL;
yypop_buffer_state(); yypop_buffer_state();
} }
@ -1754,7 +1749,7 @@ int yylex_destroy (void)
*/ */
#ifndef yytext_ptr #ifndef yytext_ptr
static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) static void yy_flex_strncpy (char* s1, const char * s2, int n )
{ {
int i; int i;
@ -1764,7 +1759,7 @@ static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
#endif #endif
#ifdef YY_NEED_STRLEN #ifdef YY_NEED_STRLEN
static int yy_flex_strlen (yyconst char * s ) static int yy_flex_strlen (const char * s )
{ {
int n; int n;
for ( n = 0; s[n]; ++n ) for ( n = 0; s[n]; ++n )
@ -1802,7 +1797,6 @@ void yyfree (void * ptr )
#line 77 "configfile.l" #line 77 "configfile.l"
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <errno.h> #include <errno.h>

View File

@ -1,7 +1,7 @@
/* /*
* Header file for reading lexical config files. * Header file for reading lexical config files.
* *
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 1999-2002 * Copyright (C) 1999-2002
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>

View File

@ -1,7 +1,7 @@
/* /*
* Reads lexical config files and updates database. * Reads lexical config files and updates database.
* *
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 1999-2002 * Copyright (C) 1999-2002
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>
@ -72,7 +72,7 @@ void tok_error(char *pcToken_error);
"\n" { iLinenumber++; } "\n" { iLinenumber++; }
(\"[^"\n]*["\n])|(\'[^'\n]*['\n]) { (void)evaluatetoken(yytext); } (\"[^"\n]*["\n])|(\'[^'\n]*['\n]) { (void)evaluatetoken(yytext); }
[ \t] {} [ \t] {}
([A-Z]|[a-z]|[0-9]|[\\\/\-\.\_\@:])+ { (void)evaluatetoken(yytext); } ([A-Z]|[a-z]|[0-9]|[=\\\/\-\.\_\@:])+ { (void)evaluatetoken(yytext); }
. { iOldLinenumber = iLinenumber; tok_error(yytext); } . { iOldLinenumber = iLinenumber; tok_error(yytext); }
%% %%

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 1999-2002 * Copyright (C) 1999-2002
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 1999-2002 * Copyright (C) 1999-2002
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>
@ -48,6 +48,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <sys/types.h> #include <sys/types.h>
#include <sys/time.h> #include <sys/time.h>
#include <time.h> #include <time.h>
#include <pthread.h>
#include "pcsclite.h" #include "pcsclite.h"
#include "misc.h" #include "misc.h"
@ -139,6 +140,7 @@ static void log_line(const int priority, const char *DebugBuffer)
struct timeval new_time = { 0, 0 }; struct timeval new_time = { 0, 0 };
struct timeval tmp; struct timeval tmp;
int delta; int delta;
pthread_t thread_id;
gettimeofday(&new_time, NULL); gettimeofday(&new_time, NULL);
if (0 == last_time.tv_sec) if (0 == last_time.tv_sec)
@ -158,6 +160,8 @@ static void log_line(const int priority, const char *DebugBuffer)
last_time = new_time; last_time = new_time;
thread_id = pthread_self();
if (LogDoColor) if (LogDoColor)
{ {
const char *color_pfx = "", *color_sfx = "\33[0m"; const char *color_pfx = "", *color_sfx = "\33[0m";
@ -183,7 +187,13 @@ static void log_line(const int priority, const char *DebugBuffer)
break; break;
} }
printf("%s%.8d%s %s%s%s\n", time_pfx, delta, time_sfx, #ifdef __APPLE__
#define THREAD_FORMAT "%p"
#else
#define THREAD_FORMAT "%ld"
#endif
printf("%s%.8d%s [" THREAD_FORMAT "] %s%s%s\n",
time_pfx, delta, time_sfx, thread_id,
color_pfx, DebugBuffer, color_sfx); color_pfx, DebugBuffer, color_sfx);
} }
else else

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 1999 * Copyright (C) 1999
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 2001 * Copyright (C) 2001
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 2000 * Copyright (C) 2000
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 1999-2002 * Copyright (C) 1999-2002
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 1999-2002 * Copyright (C) 1999-2002
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 2000-2002 * Copyright (C) 2000-2002
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>
@ -61,7 +61,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
static list_t ClientsWaitingForEvent; /**< list of client file descriptors */ static list_t ClientsWaitingForEvent; /**< list of client file descriptors */
pthread_mutex_t ClientsWaitingForEvent_lock; /**< lock for the above list */ pthread_mutex_t ClientsWaitingForEvent_lock; /**< lock for the above list */
static void EHStatusHandlerThread(READER_CONTEXT *); static void * EHStatusHandlerThread(READER_CONTEXT *);
LONG EHRegisterClientForEvent(int32_t filedes) LONG EHRegisterClientForEvent(int32_t filedes)
{ {
@ -69,6 +69,8 @@ LONG EHRegisterClientForEvent(int32_t filedes)
(void)list_append(&ClientsWaitingForEvent, &filedes); (void)list_append(&ClientsWaitingForEvent, &filedes);
(void)MSGSendReaderStates(filedes);
(void)pthread_mutex_unlock(&ClientsWaitingForEvent_lock); (void)pthread_mutex_unlock(&ClientsWaitingForEvent_lock);
return SCARD_S_SUCCESS; return SCARD_S_SUCCESS;
@ -239,7 +241,7 @@ LONG EHSpawnEventHandler(READER_CONTEXT * rContext)
return SCARD_S_SUCCESS; return SCARD_S_SUCCESS;
} }
static void EHStatusHandlerThread(READER_CONTEXT * rContext) static void * EHStatusHandlerThread(READER_CONTEXT * rContext)
{ {
LONG rv; LONG rv;
#ifndef NO_LOG #ifndef NO_LOG

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 1999-2002 * Copyright (C) 1999-2002
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 2000-2003 * Copyright (C) 2000-2003
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 2000-2003 * Copyright (C) 2000-2003
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 2011 * Copyright (C) 2011
* Ludovic Rousseau <ludovic.rousseau@free.fr> * Ludovic Rousseau <ludovic.rousseau@free.fr>
@ -593,7 +593,7 @@ static void HPScanUSB(struct udev *udev)
} }
static void HPEstablishUSBNotifications(void *arg) static void * HPEstablishUSBNotifications(void *arg)
{ {
struct udev_monitor *udev_monitor = arg; struct udev_monitor *udev_monitor = arg;
int r; int r;

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 2001-2004 * Copyright (C) 2001-2004
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 2001-2003 * Copyright (C) 2001-2003
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 2002-2004 * Copyright (C) 2002-2004
* Stephen M. Webb <stephenw@cryptocard.com> * Stephen M. Webb <stephenw@cryptocard.com>

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 1999-2004 * Copyright (C) 1999-2004
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 1999-2004 * Copyright (C) 1999-2004
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>

View File

@ -1,7 +1,7 @@
/* /*
* This handles GCC attributes * This handles GCC attributes
* *
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 2005-2010 * Copyright (C) 2005-2010
* Ludovic Rousseau <ludovic.rousseau@free.fr> * Ludovic Rousseau <ludovic.rousseau@free.fr>

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 2003 * Copyright (C) 2003
* Toni Andjelkovic <toni@soth.at> * Toni Andjelkovic <toni@soth.at>

View File

@ -18,7 +18,7 @@ int pcsc_assert_wire_constants(void)
LASSERTF(PROTOCOL_VERSION_MAJOR == 4," found %lld\n", LASSERTF(PROTOCOL_VERSION_MAJOR == 4," found %lld\n",
(long long)PROTOCOL_VERSION_MAJOR); (long long)PROTOCOL_VERSION_MAJOR);
LASSERTF(PROTOCOL_VERSION_MINOR == 3," found %lld\n", LASSERTF(PROTOCOL_VERSION_MINOR == 4," found %lld\n",
(long long)PROTOCOL_VERSION_MINOR); (long long)PROTOCOL_VERSION_MINOR);
LASSERTF(MAX_READERNAME == 128," found %lld\n", LASSERTF(MAX_READERNAME == 128," found %lld\n",

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 2006-2011 * Copyright (C) 2006-2011
* Ludovic Rousseau <ludovic.rousseau@free.fr> * Ludovic Rousseau <ludovic.rousseau@free.fr>
@ -49,7 +49,7 @@
#define PCSCLITE_CSOCK_NAME PCSCLITE_IPC_DIR "/pcscd.comm" #define PCSCLITE_CSOCK_NAME PCSCLITE_IPC_DIR "/pcscd.comm"
#define PCSCLITE_VERSION_NUMBER "1.8.23" /**< Current version */ #define PCSCLITE_VERSION_NUMBER "1.8.24" /**< Current version */
#define PCSCLITE_STATUS_POLL_RATE 400000 /**< Status polling rate */ #define PCSCLITE_STATUS_POLL_RATE 400000 /**< Status polling rate */
#define PCSCLITE_LOCK_POLL_RATE 100000 /**< Lock polling rate */ #define PCSCLITE_LOCK_POLL_RATE 100000 /**< Lock polling rate */
@ -66,7 +66,7 @@ enum
POWER_STATE_UNPOWERED, /**< auto power off */ POWER_STATE_UNPOWERED, /**< auto power off */
POWER_STATE_POWERED, /**< powered */ POWER_STATE_POWERED, /**< powered */
POWER_STATE_GRACE_PERIOD, /**< card was in use */ POWER_STATE_GRACE_PERIOD, /**< card was in use */
POWER_STATE_INUSE /**< card is used */ POWER_STATE_IN_USE /**< card is used */
}; };
/** time to wait before powering down an unused card */ /** time to wait before powering down an unused card */

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 2006-2011 * Copyright (C) 2006-2011
* Ludovic Rousseau <ludovic.rousseau@free.fr> * Ludovic Rousseau <ludovic.rousseau@free.fr>
@ -66,7 +66,7 @@ enum
POWER_STATE_UNPOWERED, /**< auto power off */ POWER_STATE_UNPOWERED, /**< auto power off */
POWER_STATE_POWERED, /**< powered */ POWER_STATE_POWERED, /**< powered */
POWER_STATE_GRACE_PERIOD, /**< card was in use */ POWER_STATE_GRACE_PERIOD, /**< card was in use */
POWER_STATE_INUSE /**< card is used */ POWER_STATE_IN_USE /**< card is used */
}; };
/** time to wait before powering down an unused card */ /** time to wait before powering down an unused card */

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 1999-2002 * Copyright (C) 1999-2002
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 1999 * Copyright (C) 1999
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 1999 * Copyright (C) 1999
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 1999-2004 * Copyright (C) 1999-2004
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 1999 * Copyright (C) 1999
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>

View File

@ -449,7 +449,10 @@ static inline struct list_entry_s *list_findpos(const list_t *restrict l, int po
/* accept 1 slot overflow for fetching head and tail sentinels */ /* accept 1 slot overflow for fetching head and tail sentinels */
if (posstart < -1 || posstart > (int)l->numels) return NULL; if (posstart < -1 || posstart > (int)l->numels) return NULL;
x = (float)(posstart+1) / l->numels; if( l->numels != 0 )
x = (float)(posstart+1) / l->numels;
else
x = 1;
if (x <= 0.25) { if (x <= 0.25) {
/* first quarter: get to posstart from head */ /* first quarter: get to posstart from head */
for (i = -1, ptr = l->head_sentinel; i < posstart; ptr = ptr->next, i++); for (i = -1, ptr = l->head_sentinel; i < posstart; ptr = ptr->next, i++);

View File

@ -1,7 +1,7 @@
# Makefile.in generated by automake 1.15 from Makefile.am. # Makefile.in generated by automake 1.16.1 from Makefile.am.
# @configure_input@ # @configure_input@
# Copyright (C) 1994-2014 Free Software Foundation, Inc. # Copyright (C) 1994-2018 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation # This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -156,7 +156,8 @@ am__v_at_0 = @
am__v_at_1 = am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles am__maybe_remake_depfiles = depfiles
am__depfiles_remade = ./$(DEPDIR)/libpcscspy.Plo
am__mv = mv -f am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@ -389,8 +390,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
*config.status*) \ *config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \ *) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
esac; esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@ -481,7 +482,13 @@ mostlyclean-compile:
distclean-compile: distclean-compile:
-rm -f *.tab.c -rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcscspy.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcscspy.Plo@am__quote@ # am--include-marker
$(am__depfiles_remade):
@$(MKDIR_P) $(@D)
@echo '# dummy' >$@-t && $(am__mv) $@-t $@
am--depfiles: $(am__depfiles_remade)
.c.o: .c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@ -605,7 +612,10 @@ cscopelist-am: $(am__tagged_files)
distclean-tags: distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES) distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
distdir-am: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \ list='$(DISTFILES)'; \
@ -679,7 +689,7 @@ clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
mostlyclean-am mostlyclean-am
distclean: distclean-am distclean: distclean-am
-rm -rf ./$(DEPDIR) -rm -f ./$(DEPDIR)/libpcscspy.Plo
-rm -f Makefile -rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \ distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags distclean-tags
@ -725,7 +735,7 @@ install-ps-am:
installcheck-am: installcheck-am:
maintainer-clean: maintainer-clean-am maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR) -rm -f ./$(DEPDIR)/libpcscspy.Plo
-rm -f Makefile -rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic maintainer-clean-am: distclean-am maintainer-clean-generic
@ -749,9 +759,9 @@ uninstall-man: uninstall-man1
.MAKE: install-am install-strip .MAKE: install-am install-strip
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \
clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \ clean-generic clean-libLTLIBRARIES clean-libtool cscopelist-am \
ctags-am distclean distclean-compile distclean-generic \ ctags ctags-am distclean distclean-compile distclean-generic \
distclean-libtool distclean-tags distdir dvi dvi-am html \ distclean-libtool distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-data \ html-am info info-am install install-am install-data \
install-data-am install-dist_binSCRIPTS install-dvi \ install-data-am install-dist_binSCRIPTS install-dvi \

View File

@ -889,9 +889,13 @@ class PCSCdemultiplexer(object):
for thread in threads: for thread in threads:
threads[thread].join() threads[thread].join()
(code, rv, sec, usec) = _parse_rv(tail) try:
end_time = sec + usec / 1000000. (code, rv, sec, usec) = _parse_rv(tail)
total_time = end_time - start_time end_time = sec + usec / 1000000.
total_time = end_time - start_time
except ValueError:
# we have no return value of the latest PC/SC call
total_time = -1
# compute some statistics # compute some statistics
thread_n = 1 thread_n = 1

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 1999 * Copyright (C) 1999
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>

View File

@ -1,7 +1,7 @@
/* /*
* This handles abstract system level calls. * This handles abstract system level calls.
* *
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 1999 * Copyright (C) 1999
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 1999 * Copyright (C) 1999
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
/* /*
* Reads lexical config files and updates database. * Reads lexical config files and updates database.
* *
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 2001-2003 * Copyright (C) 2001-2003
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 2006-2011 * Copyright (C) 2006-2011
* Ludovic Rousseau <ludovic.rousseau@free.fr> * Ludovic Rousseau <ludovic.rousseau@free.fr>

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 2006-2009 * Copyright (C) 2006-2009
* Ludovic Rousseau <ludovic.rousseau@free.fr> * Ludovic Rousseau <ludovic.rousseau@free.fr>

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 1999-2004 * Copyright (C) 1999-2004
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>
@ -348,8 +348,8 @@ LONG SCardConnect(/*@unused@*/ SCARDCONTEXT hContext, LPCSTR szReader,
} }
/* the card is now in use */ /* the card is now in use */
rContext->powerState = POWER_STATE_INUSE; rContext->powerState = POWER_STATE_IN_USE;
Log1(PCSC_LOG_DEBUG, "powerState: POWER_STATE_INUSE"); Log1(PCSC_LOG_DEBUG, "powerState: POWER_STATE_IN_USE");
(void)pthread_mutex_unlock(&rContext->powerState_lock); (void)pthread_mutex_unlock(&rContext->powerState_lock);
} }
@ -716,6 +716,12 @@ LONG SCardReconnect(SCARDHANDLE hCard, DWORD dwShareMode,
goto exit; goto exit;
} }
} }
/* the card is now in use */
(void)pthread_mutex_lock(&rContext->powerState_lock);
rContext->powerState = POWER_STATE_IN_USE;
Log1(PCSC_LOG_DEBUG, "powerState: POWER_STATE_IN_USE");
(void)pthread_mutex_unlock(&rContext->powerState_lock);
} }
} }

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 1999-2004 * Copyright (C) 1999-2004
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>
@ -388,6 +388,8 @@ static LONG SCardGetSetAttrib(SCARDHANDLE hCard, int command, DWORD dwAttrId,
LPBYTE pbAttr, LPDWORD pcbAttrLen); LPBYTE pbAttr, LPDWORD pcbAttrLen);
static LONG getReaderStates(SCONTEXTMAP * currentContextMap); static LONG getReaderStates(SCONTEXTMAP * currentContextMap);
static LONG getReaderStatesAndRegisterForEvents(SCONTEXTMAP * currentContextMap);
static LONG unregisterFromEvents(SCONTEXTMAP * currentContextMap);
/* /*
* Thread safety functions * Thread safety functions
@ -1736,7 +1738,7 @@ LONG SCardGetStatusChange(SCARDCONTEXT hContext, DWORD dwTimeout,
} }
/* synchronize reader states with daemon */ /* synchronize reader states with daemon */
rv = getReaderStates(currentContextMap); rv = getReaderStatesAndRegisterForEvents(currentContextMap);
if (rv != SCARD_S_SUCCESS) if (rv != SCARD_S_SUCCESS)
goto end; goto end;
@ -2056,24 +2058,16 @@ LONG SCardGetStatusChange(SCARDCONTEXT hContext, DWORD dwTimeout,
/* Only sleep once for each cycle of reader checks. */ /* Only sleep once for each cycle of reader checks. */
{ {
struct wait_reader_state_change waitStatusStruct; struct wait_reader_state_change waitStatusStruct = {0};
struct timeval before, after; struct timeval before, after;
gettimeofday(&before, NULL); gettimeofday(&before, NULL);
waitStatusStruct.timeOut = dwTime;
waitStatusStruct.rv = SCARD_S_SUCCESS; waitStatusStruct.rv = SCARD_S_SUCCESS;
/* another thread can do SCardCancel() */ /* another thread can do SCardCancel() */
currentContextMap->cancellable = TRUE; currentContextMap->cancellable = TRUE;
rv = MessageSendWithHeader(CMD_WAIT_READER_STATE_CHANGE,
currentContextMap->dwClientID,
sizeof(waitStatusStruct), &waitStatusStruct);
if (rv != SCARD_S_SUCCESS)
goto end;
/* /*
* Read a message from the server * Read a message from the server
*/ */
@ -2089,20 +2083,7 @@ LONG SCardGetStatusChange(SCARDCONTEXT hContext, DWORD dwTimeout,
if (SCARD_E_TIMEOUT == rv) if (SCARD_E_TIMEOUT == rv)
{ {
/* ask server to remove us from the event list */ /* ask server to remove us from the event list */
rv = MessageSendWithHeader(CMD_STOP_WAITING_READER_STATE_CHANGE, rv = unregisterFromEvents(currentContextMap);
currentContextMap->dwClientID,
sizeof(waitStatusStruct), &waitStatusStruct);
if (rv != SCARD_S_SUCCESS)
goto end;
/* Read a message from the server */
rv = MessageReceive(&waitStatusStruct,
sizeof(waitStatusStruct),
currentContextMap->dwClientID);
if (rv != SCARD_S_SUCCESS)
goto end;
} }
if (rv != SCARD_S_SUCCESS) if (rv != SCARD_S_SUCCESS)
@ -2116,7 +2097,7 @@ LONG SCardGetStatusChange(SCARDCONTEXT hContext, DWORD dwTimeout,
} }
/* synchronize reader states with daemon */ /* synchronize reader states with daemon */
rv = getReaderStates(currentContextMap); rv = getReaderStatesAndRegisterForEvents(currentContextMap);
if (rv != SCARD_S_SUCCESS) if (rv != SCARD_S_SUCCESS)
goto end; goto end;
@ -2148,6 +2129,11 @@ LONG SCardGetStatusChange(SCARDCONTEXT hContext, DWORD dwTimeout,
end: end:
Log1(PCSC_LOG_DEBUG, "Event Loop End"); Log1(PCSC_LOG_DEBUG, "Event Loop End");
/* if SCardCancel() has been used then the client is already
* unregistered */
if (SCARD_E_CANCELLED != rv)
(void)unregisterFromEvents(currentContextMap);
(void)pthread_mutex_unlock(&currentContextMap->mMutex); (void)pthread_mutex_unlock(&currentContextMap->mMutex);
error: error:
@ -3549,3 +3535,49 @@ static LONG getReaderStates(SCONTEXTMAP * currentContextMap)
return SCARD_S_SUCCESS; return SCARD_S_SUCCESS;
} }
static LONG getReaderStatesAndRegisterForEvents(SCONTEXTMAP * currentContextMap)
{
int32_t dwClientID = currentContextMap->dwClientID;
LONG rv;
/* Get current reader states from server and register on event list */
rv = MessageSendWithHeader(CMD_WAIT_READER_STATE_CHANGE, dwClientID,
0, NULL);
if (rv != SCARD_S_SUCCESS)
return rv;
/* Read a message from the server */
rv = MessageReceive(&readerStates, sizeof(readerStates), dwClientID);
return rv;
}
static LONG unregisterFromEvents(SCONTEXTMAP * currentContextMap)
{
int32_t dwClientID = currentContextMap->dwClientID;
LONG rv;
struct wait_reader_state_change waitStatusStruct = {0};
/* ask server to remove us from the event list */
rv = MessageSendWithHeader(CMD_STOP_WAITING_READER_STATE_CHANGE,
dwClientID, 0, NULL);
if (rv != SCARD_S_SUCCESS)
return rv;
/* This message can be the response to
* CMD_STOP_WAITING_READER_STATE_CHANGE, an event notification or a
* cancel notification.
* The server side ensures, that no more messages will be sent to
* the client. */
rv = MessageReceive(&waitStatusStruct, sizeof(waitStatusStruct),
dwClientID);
if (rv != SCARD_S_SUCCESS)
return rv;
/* if we received a cancel event the return value will be set
* accordingly */
rv = waitStatusStruct.rv;
return rv;
}

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 2001-2004 * Copyright (C) 2001-2004
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>
@ -79,9 +79,11 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#define SOCK_CLOEXEC 0 #define SOCK_CLOEXEC 0
#endif #endif
#define member_size(type, member) sizeof(((type *)0)->member)
char *getSocketName(void) char *getSocketName(void)
{ {
static char socketName[sizeof(struct sockaddr_un)]; static char socketName[member_size(struct sockaddr_un, sun_path)];
if ('\0' == socketName[0]) if ('\0' == socketName[0])
{ {

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 2001-2004 * Copyright (C) 2001-2004
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>
@ -46,7 +46,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
/** Major version of the current message protocol */ /** Major version of the current message protocol */
#define PROTOCOL_VERSION_MAJOR 4 #define PROTOCOL_VERSION_MAJOR 4
/** Minor version of the current message protocol */ /** Minor version of the current message protocol */
#define PROTOCOL_VERSION_MINOR 3 #define PROTOCOL_VERSION_MINOR 4
/** /**
* @brief Information transmitted in \ref CMD_VERSION Messages. * @brief Information transmitted in \ref CMD_VERSION Messages.

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 2001-2004 * Copyright (C) 2001-2004
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>
@ -164,6 +164,7 @@ INTERNAL int32_t InitializeSocket(void)
return 0; return 0;
} }
#ifdef USE_LIBSYSTEMD
/** /**
* @brief Acquires a socket passed in from systemd. * @brief Acquires a socket passed in from systemd.
* *
@ -176,7 +177,6 @@ INTERNAL int32_t InitializeSocket(void)
* @retval 0 Success * @retval 0 Success
* @retval -1 Passed FD is not an UNIX socket. * @retval -1 Passed FD is not an UNIX socket.
*/ */
#ifdef USE_LIBSYSTEMD
INTERNAL int32_t ListenExistingSocket(int fd) INTERNAL int32_t ListenExistingSocket(int fd)
{ {
if (!sd_is_socket(fd, AF_UNIX, SOCK_STREAM, -1)) if (!sd_is_socket(fd, AF_UNIX, SOCK_STREAM, -1))

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 2001-2004 * Copyright (C) 2001-2004
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>
@ -95,7 +95,7 @@ static LONG MSGAddHandle(SCARDCONTEXT, SCARDHANDLE, SCONTEXT *);
static LONG MSGRemoveHandle(SCARDHANDLE, SCONTEXT *); static LONG MSGRemoveHandle(SCARDHANDLE, SCONTEXT *);
static void MSGCleanupClient(SCONTEXT *); static void MSGCleanupClient(SCONTEXT *);
static void ContextThread(LPVOID pdwIndex); static void * ContextThread(LPVOID pdwIndex);
extern READER_STATE readerStates[PCSCLITE_MAX_READERS_CONTEXTS]; extern READER_STATE readerStates[PCSCLITE_MAX_READERS_CONTEXTS];
@ -325,7 +325,7 @@ static const char *CommandsText[] = {
ret = MessageSend(&v, sizeof(v), filedes); \ ret = MessageSend(&v, sizeof(v), filedes); \
} while (0) } while (0)
static void ContextThread(LPVOID newContext) static void * ContextThread(LPVOID newContext)
{ {
SCONTEXT * threadContext = (SCONTEXT *) newContext; SCONTEXT * threadContext = (SCONTEXT *) newContext;
int32_t filedes = threadContext->dwClientID; int32_t filedes = threadContext->dwClientID;
@ -411,24 +411,25 @@ static void ContextThread(LPVOID newContext)
case CMD_WAIT_READER_STATE_CHANGE: case CMD_WAIT_READER_STATE_CHANGE:
{ {
struct wait_reader_state_change waStr; /* nothing to read */
READ_BODY(waStr); #ifdef USE_USB
/* wait until all readers are ready */
RFWaitForReaderInit();
#endif
/* add the client fd to the list */ /* add the client fd to the list and dump the readers state */
EHRegisterClientForEvent(filedes); EHRegisterClientForEvent(filedes);
/* We do not send anything here.
* Either the client will timeout or the server will
* answer if an event occurs */
} }
break; break;
case CMD_STOP_WAITING_READER_STATE_CHANGE: case CMD_STOP_WAITING_READER_STATE_CHANGE:
{ {
struct wait_reader_state_change waStr; struct wait_reader_state_change waStr =
{
READ_BODY(waStr); .timeOut = 0,
.rv = 0
};
/* remove the client fd from the list */ /* remove the client fd from the list */
waStr.rv = EHUnregisterClientForEvent(filedes); waStr.rv = EHUnregisterClientForEvent(filedes);
@ -810,7 +811,11 @@ exit:
LONG MSGSignalClient(uint32_t filedes, LONG rv) LONG MSGSignalClient(uint32_t filedes, LONG rv)
{ {
uint32_t ret; uint32_t ret;
struct wait_reader_state_change waStr; struct wait_reader_state_change waStr =
{
.timeOut = 0,
.rv = 0
};
Log2(PCSC_LOG_DEBUG, "Signal client: %d", filedes); Log2(PCSC_LOG_DEBUG, "Signal client: %d", filedes);
@ -820,6 +825,18 @@ LONG MSGSignalClient(uint32_t filedes, LONG rv)
return ret; return ret;
} /* MSGSignalClient */ } /* MSGSignalClient */
LONG MSGSendReaderStates(uint32_t filedes)
{
uint32_t ret;
Log2(PCSC_LOG_DEBUG, "Send reader states: %d", filedes);
/* dump the readers state */
ret = MessageSend(readerStates, sizeof(readerStates), filedes);
return ret;
}
static LONG MSGAddContext(SCARDCONTEXT hContext, SCONTEXT * threadContext) static LONG MSGAddContext(SCARDCONTEXT hContext, SCONTEXT * threadContext)
{ {
threadContext->hContext = hContext; threadContext->hContext = hContext;
@ -844,7 +861,7 @@ static LONG MSGRemoveContext(SCARDCONTEXT hContext, SCONTEXT * threadContext)
while (list_size(&threadContext->cardsList) != 0) while (list_size(&threadContext->cardsList) != 0)
{ {
READER_CONTEXT * rContext = NULL; READER_CONTEXT * rContext = NULL;
SCARDHANDLE hCard, hLockId; SCARDHANDLE hCard;
void *ptr; void *ptr;
/* /*
@ -868,31 +885,42 @@ static LONG MSGRemoveContext(SCARDCONTEXT hContext, SCONTEXT * threadContext)
return rv; return rv;
} }
hLockId = rContext->hLockId; if (0 == rContext->hLockId)
rContext->hLockId = 0;
if (hCard != hLockId)
{ {
/* /* no lock. Just leave the card */
* if the card is locked by someone else we do not reset it
* and simulate a card removal
*/
rv = SCARD_W_REMOVED_CARD;
}
else
{
/*
* We will use SCardStatus to see if the card has been
* reset there is no need to reset each time
* Disconnect is called
*/
rv = SCardStatus(hCard, NULL, NULL, NULL, NULL, NULL, NULL);
}
if (rv == SCARD_W_RESET_CARD || rv == SCARD_W_REMOVED_CARD)
(void)SCardDisconnect(hCard, SCARD_LEAVE_CARD); (void)SCardDisconnect(hCard, SCARD_LEAVE_CARD);
}
else else
(void)SCardDisconnect(hCard, SCARD_RESET_CARD); {
if (hCard != rContext->hLockId)
{
/*
* if the card is locked by someone else we do not reset it
* and simulate a card removal
*/
rv = SCARD_W_REMOVED_CARD;
/* decrement card use */
(void)SCardDisconnect(hCard, SCARD_LEAVE_CARD);
}
else
{
/* release the lock */
rContext->hLockId = 0;
/*
* We will use SCardStatus to see if the card has been
* reset there is no need to reset each time
* Disconnect is called
*/
rv = SCardStatus(hCard, NULL, NULL, NULL, NULL, NULL, NULL);
if (rv == SCARD_W_RESET_CARD || rv == SCARD_W_REMOVED_CARD)
(void)SCardDisconnect(hCard, SCARD_LEAVE_CARD);
else
(void)SCardDisconnect(hCard, SCARD_RESET_CARD);
}
}
/* Remove entry from the list */ /* Remove entry from the list */
lrv = list_delete_at(&threadContext->cardsList, 0); lrv = list_delete_at(&threadContext->cardsList, 0);

View File

@ -1,5 +1,5 @@
/* /*
* MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
* *
* Copyright (C) 2001-2004 * Copyright (C) 2001-2004
* David Corcoran <corcoran@musclecard.com> * David Corcoran <corcoran@musclecard.com>
@ -45,5 +45,6 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
void ContextsDeinitialize(void); void ContextsDeinitialize(void);
LONG CreateContextThread(uint32_t *); LONG CreateContextThread(uint32_t *);
LONG MSGSignalClient(uint32_t filedes, LONG rv); LONG MSGSignalClient(uint32_t filedes, LONG rv);
LONG MSGSendReaderStates(uint32_t filedes);
#endif #endif

6
ylwrap
View File

@ -1,9 +1,9 @@
#! /bin/sh #! /bin/sh
# ylwrap - wrapper for lex/yacc invocations. # ylwrap - wrapper for lex/yacc invocations.
scriptversion=2013-01-12.17; # UTC scriptversion=2016-01-11.22; # UTC
# Copyright (C) 1996-2013 Free Software Foundation, Inc. # Copyright (C) 1996-2017 Free Software Foundation, Inc.
# #
# Written by Tom Tromey <tromey@cygnus.com>. # Written by Tom Tromey <tromey@cygnus.com>.
# #
@ -242,6 +242,6 @@ exit $ret
# eval: (add-hook 'write-file-hooks 'time-stamp) # eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion=" # time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC" # time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC" # time-stamp-end: "; # UTC"
# End: # End: