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