fix regression: checking for EOT should first peek, and if happy consume the blank after the dot.
This commit is contained in:
parent
091be7677a
commit
ad91eb0ec9
4
.gitignore
vendored
4
.gitignore
vendored
@ -140,3 +140,7 @@ xcode
|
|||||||
Threads
|
Threads
|
||||||
mxe
|
mxe
|
||||||
caret
|
caret
|
||||||
|
|
||||||
|
configure
|
||||||
|
|
||||||
|
cmake/cmake-android
|
||||||
|
@ -1745,6 +1745,8 @@ TokEntry *Yap_tokenizer(struct stream_desc *inp_stream, bool store_comments,
|
|||||||
if (ch == '.' && (pch = Yap_peek(inp_stream - GLOBAL_Stream)) &&
|
if (ch == '.' && (pch = Yap_peek(inp_stream - GLOBAL_Stream)) &&
|
||||||
(chtype(pch) == BS || chtype(pch) == EF || pch == '%')) {
|
(chtype(pch) == BS || chtype(pch) == EF || pch == '%')) {
|
||||||
t->Tok = Ord(kind = eot_tok);
|
t->Tok = Ord(kind = eot_tok);
|
||||||
|
// consume...
|
||||||
|
ch = getchr(inp_stream);
|
||||||
if (chtype(ch) == EF) {
|
if (chtype(ch) == EF) {
|
||||||
mark_eof(inp_stream);
|
mark_eof(inp_stream);
|
||||||
t->TokInfo = TermEof;
|
t->TokInfo = TermEof;
|
||||||
|
@ -2003,9 +2003,10 @@ case ENC_ISO_UTF32_LE: // check http://unicode.org/faq/utf_bom.html#utf16-3
|
|||||||
t[ABSOLUTE_FILE_NAME_EXPAND] = args[ABSOLUTE_FILE_NAME_EXPAND].tvalue;
|
t[ABSOLUTE_FILE_NAME_EXPAND] = args[ABSOLUTE_FILE_NAME_EXPAND].tvalue;
|
||||||
else
|
else
|
||||||
t[ABSOLUTE_FILE_NAME_EXPAND] = TermFalse;
|
t[ABSOLUTE_FILE_NAME_EXPAND] = TermFalse;
|
||||||
if (args[ABSOLUTE_FILE_NAME_GLOB].used)
|
if (args[ABSOLUTE_FILE_NAME_GLOB].used) {
|
||||||
t[ABSOLUTE_FILE_NAME_GLOB] = args[ABSOLUTE_FILE_NAME_GLOB].tvalue;
|
t[ABSOLUTE_FILE_NAME_GLOB] = args[ABSOLUTE_FILE_NAME_GLOB].tvalue;
|
||||||
else
|
t[ABSOLUTE_FILE_NAME_EXPAND] = TermTrue;
|
||||||
|
} else
|
||||||
t[ABSOLUTE_FILE_NAME_GLOB] = TermEmptyAtom;
|
t[ABSOLUTE_FILE_NAME_GLOB] = TermEmptyAtom;
|
||||||
if (args[ABSOLUTE_FILE_NAME_VERBOSE_FILE_SEARCH].used)
|
if (args[ABSOLUTE_FILE_NAME_VERBOSE_FILE_SEARCH].used)
|
||||||
t[ABSOLUTE_FILE_NAME_VERBOSE_FILE_SEARCH] =
|
t[ABSOLUTE_FILE_NAME_VERBOSE_FILE_SEARCH] =
|
||||||
|
21
os/sysbits.c
21
os/sysbits.c
@ -946,10 +946,24 @@ do_expand_file_name(Term t1, Term opts USES_REGS)
|
|||||||
return tf;
|
return tf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* @pred expand_file_name( +Pattern, -ListOfPaths) is det
|
||||||
|
|
||||||
|
This builtin receives a pattern and expands it into a list of files.
|
||||||
|
In Unix-like systems, YAP applies glob to expand patterns such as '*', '.', and '?'. Further variable expansion
|
||||||
|
may also happen. glob is shell-dependent: som Yap_InitCPred ("absolute_file_system_path", 2, absolute_file_system_path, 0);
|
||||||
|
Yap_InitCPred ("real_path", 2, prolog_realpath, 0);
|
||||||
|
Yap_InitCPred ("true_file_name", 2,
|
||||||
|
true_file_name, SyncPredFlag);
|
||||||
|
Yap_InitCPred ("true_file_name", 3, true_file_name3, SyncPredFlag);
|
||||||
|
e shells allow command execution and brace-expansion.
|
||||||
|
|
||||||
|
*/
|
||||||
static Int
|
static Int
|
||||||
expand_file_name( USES_REGS1)
|
expand_file_name( USES_REGS1)
|
||||||
{
|
{
|
||||||
Term tf = do_expand_file_name( Deref(ARG1), TermNil PASS_REGS);
|
Term tf = do_expand_file_name( Deref(ARG1), TermNil PASS_REGS);
|
||||||
|
if (tf == 0)
|
||||||
|
return false;
|
||||||
return
|
return
|
||||||
Yap_unify( tf, ARG2);
|
Yap_unify( tf, ARG2);
|
||||||
}
|
}
|
||||||
@ -2298,15 +2312,14 @@ Yap_InitSysPreds(void)
|
|||||||
Yap_InitCPred ("expand_file_name", 2, expand_file_name, SyncPredFlag);
|
Yap_InitCPred ("expand_file_name", 2, expand_file_name, SyncPredFlag);
|
||||||
Yap_InitCPred ("working_directory", 2,working_directory, SyncPredFlag);
|
Yap_InitCPred ("working_directory", 2,working_directory, SyncPredFlag);
|
||||||
Yap_InitCPred ("prolog_to_os_filename", 2, prolog_to_os_filename, SyncPredFlag);
|
Yap_InitCPred ("prolog_to_os_filename", 2, prolog_to_os_filename, SyncPredFlag);
|
||||||
Yap_InitCPred ("prolog_to_os_filename", 2, prolog_to_os_filename, SyncPredFlag);
|
|
||||||
#ifdef _WIN32
|
|
||||||
Yap_InitCPred ("win_registry_get_value", 3, p_win_registry_get_value,0);
|
|
||||||
#endif
|
|
||||||
Yap_InitCPred ("absolute_file_system_path", 2, absolute_file_system_path, 0);
|
Yap_InitCPred ("absolute_file_system_path", 2, absolute_file_system_path, 0);
|
||||||
Yap_InitCPred ("real_path", 2, prolog_realpath, 0);
|
Yap_InitCPred ("real_path", 2, prolog_realpath, 0);
|
||||||
Yap_InitCPred ("true_file_name", 2,
|
Yap_InitCPred ("true_file_name", 2,
|
||||||
true_file_name, SyncPredFlag);
|
true_file_name, SyncPredFlag);
|
||||||
Yap_InitCPred ("true_file_name", 3, true_file_name3, SyncPredFlag);
|
Yap_InitCPred ("true_file_name", 3, true_file_name3, SyncPredFlag);
|
||||||
|
#ifdef _WIN32
|
||||||
|
Yap_InitCPred ("win_registry_get_value", 3, p_win_registry_get_value,0);
|
||||||
|
#endif
|
||||||
Yap_InitCPred ("rmdir", 2, p_rmdir, SyncPredFlag);
|
Yap_InitCPred ("rmdir", 2, p_rmdir, SyncPredFlag);
|
||||||
Yap_InitCPred ("make_directory", 1, make_directory, SyncPredFlag);
|
Yap_InitCPred ("make_directory", 1, make_directory, SyncPredFlag);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user