From 4ff7d09040363aefc1f5ab7fe48dd5f34f084164 Mon Sep 17 00:00:00 2001 From: David Shaw Date: Sun, 22 Jan 2006 21:40:20 +0000 Subject: [PATCH] * keyserver.c (keyserver_spawn): Include the EXEEXT so we can find keyserver helpers on systems that use extensions. * misc.c (path_access) [HAVE_DRIVE_LETTERS]: Do the right thing with drive letter systems. --- g10/ChangeLog | 8 ++++++++ g10/keyserver.c | 6 ++++-- g10/misc.c | 10 +++++++++- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/g10/ChangeLog b/g10/ChangeLog index 4187c1a75..4af244c7a 100644 --- a/g10/ChangeLog +++ b/g10/ChangeLog @@ -1,3 +1,11 @@ +2006-01-22 David Shaw + + * keyserver.c (keyserver_spawn): Include the EXEEXT so we can find + keyserver helpers on systems that use extensions. + + * misc.c (path_access) [HAVE_DRIVE_LETTERS]: Do the right thing + with drive letter systems. + 2006-01-17 David Shaw * keydb.h, passphrase.c (next_to_last_passphrase): New. "Touch" a diff --git a/g10/keyserver.c b/g10/keyserver.c index 4376daeeb..75f45b654 100644 --- a/g10/keyserver.c +++ b/g10/keyserver.c @@ -946,7 +946,7 @@ keyserver_spawn(enum ks_action action,STRLIST list,KEYDB_SEARCH_DESC *desc, /* If exec-path was set, and DISABLE_KEYSERVER_PATH is undefined, then don't specify a full path to gpgkeys_foo, so that the PATH can work. */ - command=xmalloc(GPGKEYS_PREFIX_LEN+strlen(scheme)+3+1); + command=xmalloc(GPGKEYS_PREFIX_LEN+strlen(scheme)+3+strlen(EXEEXT)+1); command[0]='\0'; } else @@ -954,7 +954,7 @@ keyserver_spawn(enum ks_action action,STRLIST list,KEYDB_SEARCH_DESC *desc, { /* Specify a full path to gpgkeys_foo. */ command=xmalloc(strlen(libexecdir)+strlen(DIRSEP_S)+ - GPGKEYS_PREFIX_LEN+strlen(scheme)+3+1); + GPGKEYS_PREFIX_LEN+strlen(scheme)+3+strlen(EXEEXT)+1); strcpy(command,libexecdir); strcat(command,DIRSEP_S); } @@ -967,6 +967,8 @@ keyserver_spawn(enum ks_action action,STRLIST list,KEYDB_SEARCH_DESC *desc, if(keyserver->flags.direct_uri) strcat(command,"uri"); + strcat(command,EXEEXT); + #ifdef GPGKEYS_CURL if(!curl_cant_handle(scheme,keyserver->flags.direct_uri) && path_access(command,X_OK)!=0) diff --git a/g10/misc.c b/g10/misc.c index c5b97740c..b0fe82560 100644 --- a/g10/misc.c +++ b/g10/misc.c @@ -1251,7 +1251,15 @@ path_access(const char *file,int mode) envpath=getenv("PATH"); - if(file[0]=='/' || !envpath) + if(!envpath +#ifdef HAVE_DRIVE_LETTERS + || (((file[0]>='A' && file[0]<='Z') + || (file[0]>='a' && file[0]<='z')) + && file[1]==':') +#else + || file[0]=='/' +#endif + ) return access(file,mode); else {