cpitf.c; allow spaces in paths like "Program Files" as search path for spinit if in MS Windows

This commit is contained in:
h_vogt 2016-10-30 08:56:28 +01:00 committed by rlar
parent 232ea80a57
commit e71fa90f1c
1 changed files with 16 additions and 2 deletions

View File

@ -265,16 +265,30 @@ ft_cpinit(void)
}
/* Now source the standard startup file spinit or tclspinit. */
/* jump over leading spaces */
for (copys = s = cp_tildexpand(Lib_Path); copys && *copys; ) {
/* jump over leading spaces */
s = skip_ws(s);
#ifdef OUTDEBUG
printf("cpitf.c, spinit path is %s\n", s);
#endif
#if defined(_MSC_VER) || defined(__MINGW32__) || defined(HAS_WINGUI)
/* MS Windows allows path names with spaces, e.g. "Program Files".
The old code below does not do then.
So just copy the whole string s into buf */
size_t sl = strlen(s);
if (sl >= BSIZE_SP) {
fprintf(cp_err, "Note: Cannot evaluate spinit, path is too long!\n");
tcap_init();
return;
}
size_t ii = 0;
for (r = buf; *s && ii < sl; r++, s++, ii++)
*r = *s;
#else
/* copy s into buf until space is seen, r is the actual position */
for (r = buf; *s && !isspace_c(*s); r++, s++)
*r = *s;
#endif
tfree(copys);
/* add a path separator to buf at actual position */
(void) strcpy(r, DIR_PATHSEP);