core: Support dirinfo("socketdir")
* src/dirinfo.c (WANT_SOCKETDIR): New.
(dirinfo): Add field socketdir.
(parse_output): Support "socketdir".
(get_gpgconf_item): Return socketdir.
* tests/t-engine-info.c (main): Add socketdir to the output.
* src/w32-util.c (_gpgme_create_process_utf8): Fix indentation.
--
GnuPG-bug-id: 5613
This is not strictly necessary because we could deduce this from one
of the other socket info items but it is more clean to have a
dedicated info item. The socketdir item is available for 5 years now
(GnuPG commit 8e3fa5a4b205c534de2142e5d071712f957cf06a)
Werner Koch
2 years ago
90 | 90 | homedir, sysconfdir, bindir, libexecdir, libdir, |
91 | 91 | datadir, localedir, agent-socket, agent-ssh-socket, |
92 | 92 | dirmngr-socket, uiserver-socket, gpgconf-name, gpg-name, |
93 | gpgsm-name, g13-name | |
93 | gpgsm-name, g13-name, socketdir. | |
94 | 94 | |
95 | 95 | This may be extended in the future. |
96 | 96 | */ |
43 | 43 | WANT_LIBDIR, |
44 | 44 | WANT_DATADIR, |
45 | 45 | WANT_LOCALEDIR, |
46 | WANT_SOCKETDIR, | |
46 | 47 | WANT_AGENT_SOCKET, |
47 | 48 | WANT_AGENT_SSH_SOCKET, |
48 | 49 | WANT_DIRMNGR_SOCKET, |
66 | 67 | char *libdir; |
67 | 68 | char *datadir; |
68 | 69 | char *localedir; |
70 | char *socketdir; | |
69 | 71 | char *agent_socket; |
70 | 72 | char *agent_ssh_socket; |
71 | 73 | char *dirmngr_socket; |
151 | 153 | dirinfo.datadir = strdup (value); |
152 | 154 | else if (!strcmp (line, "localedir") && !dirinfo.localedir) |
153 | 155 | dirinfo.localedir = strdup (value); |
156 | else if (!strcmp (line, "socketdir") && !dirinfo.socketdir) | |
157 | dirinfo.socketdir = strdup (value); | |
154 | 158 | else if (!strcmp (line, "agent-socket") && !dirinfo.agent_socket) |
155 | 159 | { |
156 | 160 | const char name[] = "S.uiserver"; |
309 | 313 | _gpgme_debug (NULL, DEBUG_INIT, -1, NULL, NULL, NULL, |
310 | 314 | "gpgme-dinfo: homedir='%s'\n", |
311 | 315 | dirinfo.homedir); |
316 | if (dirinfo.socketdir) | |
317 | _gpgme_debug (NULL, DEBUG_INIT, -1, NULL, NULL, NULL, | |
318 | "gpgme-dinfo: sockdir='%s'\n", | |
319 | dirinfo.socketdir); | |
312 | 320 | if (dirinfo.agent_socket) |
313 | 321 | _gpgme_debug (NULL,DEBUG_INIT, -1, NULL, NULL, NULL, |
314 | 322 | "gpgme-dinfo: agent='%s'\n", |
335 | 343 | case WANT_LIBDIR: result = dirinfo.libdir; break; |
336 | 344 | case WANT_DATADIR: result = dirinfo.datadir; break; |
337 | 345 | case WANT_LOCALEDIR: result = dirinfo.localedir; break; |
346 | case WANT_SOCKETDIR: result = dirinfo.socketdir; break; | |
338 | 347 | case WANT_AGENT_SOCKET: result = dirinfo.agent_socket; break; |
339 | 348 | case WANT_AGENT_SSH_SOCKET: result = dirinfo.agent_ssh_socket; break; |
340 | 349 | case WANT_DIRMNGR_SOCKET: result = dirinfo.dirmngr_socket; break; |
475 | 484 | return get_gpgconf_item (WANT_DATADIR); |
476 | 485 | else if (!strcmp (what, "localedir")) |
477 | 486 | return get_gpgconf_item (WANT_LOCALEDIR); |
487 | else if (!strcmp (what, "socketdir")) | |
488 | return get_gpgconf_item (WANT_SOCKETDIR); | |
478 | 489 | else |
479 | 490 | return NULL; |
480 | 491 | } |
840 | 840 | |
841 | 841 | |
842 | 842 | /* Like CreateProcessA but mapping the arguments to wchar API */ |
843 | int _gpgme_create_process_utf8 (const char *application_name_utf8, | |
844 | char *command_line_utf8, | |
845 | LPSECURITY_ATTRIBUTES lpProcessAttributes, | |
846 | LPSECURITY_ATTRIBUTES lpThreadAttributes, | |
847 | BOOL bInheritHandles, | |
848 | DWORD dwCreationFlags, | |
849 | void *lpEnvironment, | |
850 | char *working_directory_utf8, | |
851 | LPSTARTUPINFOA si, | |
852 | LPPROCESS_INFORMATION lpProcessInformation) | |
843 | int | |
844 | _gpgme_create_process_utf8 (const char *application_name_utf8, | |
845 | char *command_line_utf8, | |
846 | LPSECURITY_ATTRIBUTES lpProcessAttributes, | |
847 | LPSECURITY_ATTRIBUTES lpThreadAttributes, | |
848 | BOOL bInheritHandles, | |
849 | DWORD dwCreationFlags, | |
850 | void *lpEnvironment, | |
851 | char *working_directory_utf8, | |
852 | LPSTARTUPINFOA si, | |
853 | LPPROCESS_INFORMATION lpProcessInformation) | |
853 | 854 | { |
854 | 855 | BOOL ret; |
855 | 856 | wchar_t *application_name = utf8_to_wchar0 (application_name_utf8); |