Contents of /trunk/pcsc-lite/patches/pcsc-lite-1.7.4-systemd-disable-autostart.patch
Parent Directory | Revision Log
Revision 1574 -
(show annotations)
(download)
Thu Nov 24 21:10:23 2011 UTC (12 years, 10 months ago) by niro
File size: 2776 byte(s)
Thu Nov 24 21:10:23 2011 UTC (12 years, 10 months ago) by niro
File size: 2776 byte(s)
-fixed patches
1 | From c7f825b2c4a5c7d4ac8abe5690737c2c8fffbfcc Mon Sep 17 00:00:00 2001 |
2 | From: Kalev Lember <kalev@smartlink.ee> |
3 | Date: Fri, 24 Jun 2011 00:46:13 +0300 |
4 | Subject: [PATCH 2/3] Add --disable-autostart option |
5 | |
6 | This option disables pcscd autostarting code in the libpcsclite library. |
7 | |
8 | With systemd socket activation in place, pcscd can be started |
9 | automatically by systemd when a request arrives on the IPC socket. That |
10 | makes starting the service as a fork from user library unnecessary. |
11 | --- |
12 | PCSC/configure.in | 11 +++++++++++ |
13 | PCSC/src/winscard_clnt.c | 6 ++++++ |
14 | 2 files changed, 17 insertions(+), 0 deletions(-) |
15 | |
16 | diff --git a/PCSC/configure.in b/PCSC/configure.in |
17 | index 831ee88..97e3360 100644 |
18 | --- a/PCSC/configure.in |
19 | +++ b/PCSC/configure.in |
20 | @@ -274,6 +274,16 @@ if test x$use_libusb = xyes; then |
21 | PCSCLITE_FEATURES="${PCSCLITE_FEATURES} libusb" |
22 | fi |
23 | |
24 | +# --disable-autostart |
25 | +AC_ARG_ENABLE(autostart, |
26 | + AC_HELP_STRING([--disable-autostart], [disable pcscd automatic startup]), |
27 | + [ use_autostart="${enableval}" ], [ use_autostart="yes" ] ) |
28 | + |
29 | +if test x$use_autostart != xno; then |
30 | + AC_DEFINE(ENABLE_AUTOSTART, 1, [Enable pcscd automatic startup]) |
31 | + PCSCLITE_FEATURES="${PCSCLITE_FEATURES} autostart" |
32 | +fi |
33 | + |
34 | # --enable-embedded |
35 | AC_ARG_ENABLE(embedded, |
36 | AC_HELP_STRING([--enable-embedded], [limit RAM and CPU ressources by disabling features (log)]), |
37 | @@ -381,6 +391,7 @@ ATR parsing messages: ${debugatr} |
38 | ipcdir: ${ipcdir} |
39 | use serial: ${use_serial} |
40 | use usb: ${use_usb} |
41 | +use autostart: ${use_autostart} |
42 | |
43 | PCSCLITE_FEATURES: ${PCSCLITE_FEATURES} |
44 | |
45 | diff --git a/PCSC/src/winscard_clnt.c b/PCSC/src/winscard_clnt.c |
46 | index 92c8481..982be01 100644 |
47 | --- a/PCSC/src/winscard_clnt.c |
48 | +++ b/PCSC/src/winscard_clnt.c |
49 | @@ -444,8 +444,10 @@ LONG SCardEstablishContext(DWORD dwScope, LPCVOID pvReserved1, |
50 | LPCVOID pvReserved2, LPSCARDCONTEXT phContext) |
51 | { |
52 | LONG rv; |
53 | +#ifdef ENABLE_AUTOSTART |
54 | int daemon_launched = FALSE; |
55 | int retries = 0; |
56 | +#endif |
57 | |
58 | API_TRACE_IN("%ld, %p, %p", dwScope, pvReserved1, pvReserved2) |
59 | PROFILE_START |
60 | @@ -457,6 +459,7 @@ again: |
61 | /* we reconnected to a daemon or we got called from a forked child */ |
62 | rv = SCardCheckDaemonAvailability(); |
63 | |
64 | +#ifdef ENABLE_AUTOSTART |
65 | if (SCARD_E_NO_SERVICE == rv) |
66 | { |
67 | launch: |
68 | @@ -517,6 +520,7 @@ launch: |
69 | goto again; |
70 | } |
71 | } |
72 | +#endif |
73 | |
74 | if (rv != SCARD_S_SUCCESS) |
75 | goto end; |
76 | @@ -526,6 +530,7 @@ launch: |
77 | pvReserved2, phContext); |
78 | (void)SCardUnlockThread(); |
79 | |
80 | +#ifdef ENABLE_AUTOSTART |
81 | /* SCardEstablishContextTH may fail if the previous pcscd crashed |
82 | * without cleaning /var/run/pcscd/pcscd.comm */ |
83 | if (SCARD_E_NO_SERVICE == rv) |
84 | @@ -534,6 +539,7 @@ launch: |
85 | if (retries <= 1) |
86 | goto launch; |
87 | } |
88 | +#endif |
89 | |
90 | end: |
91 | PROFILE_END(rv) |
92 | -- |
93 | 1.7.5.4 |
94 |