@@ -309,6 +309,7 @@ static win_env conv_envvars[] =
309309 {NL (" HOME=" ), NULL , NULL , env_path_to_posix, env_path_to_win32, false },
310310 {NL (" LD_LIBRARY_PATH=" ), NULL , NULL ,
311311 env_plist_to_posix, env_plist_to_win32, true },
312+ {NL (" SHELL=" ), NULL , NULL , env_path_to_posix, env_path_to_win32, true , true },
312313 {NL (" TMPDIR=" ), NULL , NULL , env_path_to_posix, env_path_to_win32, false },
313314 {NL (" TMP=" ), NULL , NULL , env_path_to_posix, env_path_to_win32, false },
314315 {NL (" TEMP=" ), NULL , NULL , env_path_to_posix, env_path_to_win32, false },
@@ -337,7 +338,7 @@ static const unsigned char conv_start_chars[256] =
337338 WC, 0 , 0 , 0 , WC, 0 , 0 , 0 ,
338339 /* 80 */
339340/* P Q R S T U V W */
340- WC, 0 , 0 , 0 , WC, 0 , 0 , 0 ,
341+ WC, 0 , 0 , WC, WC, 0 , 0 , 0 ,
341342 /* 88 */
342343/* x Y Z */
343344 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
@@ -387,6 +388,8 @@ win_env::add_cache (const char *in_posix, const char *in_native)
387388 native = (char *) realloc (native, namelen + 1 + strlen (in_native));
388389 stpcpy (stpcpy (native, name), in_native);
389390 }
391+ else if (skip_if_empty && !*in_posix)
392+ native = (char *) calloc (1 , 1 );
390393 else
391394 {
392395 tmp_pathbuf tp;
@@ -452,6 +455,8 @@ posify_maybe (char **here, const char *value, char *outenv)
452455 return ;
453456
454457 int len = strcspn (src, " =" ) + 1 ;
458+ if (conv->skip_if_empty && !src[len])
459+ return ;
455460
456461 /* Turn all the items from c:<foo>;<bar> into their
457462 mounted equivalents - if there is one. */
0 commit comments