From 58136ead22c05607c805478b4fcf6205eda09af7 Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Mon, 18 Jun 2018 22:53:53 +0100 Subject: [PATCH] fix boot, docs, compiler warnings --- C/arith2.c | 9 --------- C/c_interface.c | 12 +++++++----- C/stack.c | 2 +- C/yap-args.c | 16 ++++++++++------ docs/CMakeLists.txt | 1 + library/system/sys.c | 1 + 6 files changed, 20 insertions(+), 21 deletions(-) diff --git a/C/arith2.c b/C/arith2.c index 7ab1326d5..00ff629c9 100644 --- a/C/arith2.c +++ b/C/arith2.c @@ -1155,15 +1155,6 @@ p_binary_is( USES_REGS1 ) Yap_ClearExs(); t1 = Yap_Eval(Deref(ARG3)); t2 = Yap_Eval(Deref(ARG4)); - { - Atom name; - if (IsIntTerm(t)) { - Int i = IntOfTerm(t); - name = Yap_NameOfBinaryOp(i); - } else { - name = AtomOfTerm(Deref(ARG2)); - } - } if (IsIntTerm(t)) { Int i = IntOfTerm(t); bool go; diff --git a/C/c_interface.c b/C/c_interface.c index e6194874f..1c5bb01c5 100755 --- a/C/c_interface.c +++ b/C/c_interface.c @@ -2105,7 +2105,7 @@ X_API int YAP_InitConsult(int mode, const char *fname, char **full, int *osnop) CACHE_REGS int sno; BACKUP_MACHINE_REGS(); - const char *fl = NULL; + char *fl = NULL; int lvl = push_text_stack(); if (mode == YAP_BOOT_MODE) { mode = YAP_CONSULT_MODE; } @@ -2118,8 +2118,14 @@ X_API int YAP_InitConsult(int mode, const char *fname, char **full, int *osnop) pop_text_stack(lvl); *full = NULL; return -1; + } else { + *full = pop_output_text_stack(lvl,fl); } + } else { + pop_text_stack(lvl); } + + lvl = push_text_stack(); bool consulted = (mode == YAP_CONSULT_MODE); sno = Yap_OpenStream(MkStringTerm(fl), "r", MkAtomTerm(Yap_LookupAtom(fl)), LOCAL_encoding); if (sno < 0 || @@ -2161,11 +2167,7 @@ X_API FILE *YAP_TermToStream(Term t) { X_API void YAP_EndConsult(int sno, int *osnop, const char *full) { BACKUP_MACHINE_REGS(); Yap_CloseStream(sno); -#if __unix__ - Yap_ChDir(dirname(full)); -#else Yap_ChDir(full); -#endif if (osnop >= 0) Yap_AddAlias(AtomLoopStream, *osnop); Yap_end_consult(); diff --git a/C/stack.c b/C/stack.c index 8b7a7d4f2..803f40bcc 100644 --- a/C/stack.c +++ b/C/stack.c @@ -1932,7 +1932,7 @@ fprintf(stderr, "%% \n%% -------------------------------------\n%%\n"); } if (b_ptr) { if (!max_count--) { - fprintf(stderr, "\** .....\n"); + fprintf(stderr, "// .....\n"); return; } if (b_ptr->cp_ap && /* tabling */ diff --git a/C/yap-args.c b/C/yap-args.c index 9b82a61bb..96e5b7e90 100755 --- a/C/yap-args.c +++ b/C/yap-args.c @@ -152,7 +152,7 @@ const char *Yap_BINDIR, *Yap_ROOTDIR, *Yap_SHAREDIR, *Yap_LIBDIR, *Yap_DLLDIR, * consult loop in C: used to boot the system, butt supports goal execution and recursive consulting. * * */ -static void consult(const char *b_file USES_REGS) { +static bool consult(const char *b_file USES_REGS) { Term t; int c_stream, osno, oactive; Functor functor_query = Yap_MkFunctor(Yap_LookupAtom("?-"), 1); @@ -175,7 +175,7 @@ static void consult(const char *b_file USES_REGS) { } if (!Yap_AddAlias(AtomLoopStream, c_stream)) { pop_text_stack(lvl); - return; + return false; } do { @@ -187,13 +187,15 @@ static void consult(const char *b_file USES_REGS) { Term vs = MkVarTerm(), pos = MkVarTerm(); t = YAP_ReadClauseFromStream(c_stream, vs, pos); // Yap_GetNèwSlot(t); + if (t == TermEof) + break; if (t == 0) { fprintf(stderr, "[ SYNTAX ERROR: while parsing stream %s at line %ld ]\n", b_file, GLOBAL_Stream[c_stream].linecount); } else if (IsVarTerm(t) || t == TermNil) { fprintf(stderr, "[ line: " Int_FORMAT ": term cannot be compiled ]", GLOBAL_Stream[c_stream].linecount); - } else if (IsApplTerm(t) && (FunctorOfTerm(t) == functor_query || + } else if (IsApplTerm(t) && (FunctorOfTerm(t) == functor_query || FunctorOfTerm(t) == functor_command1)) { t = ArgOfTerm(1, t); if (IsApplTerm(t) && FunctorOfTerm(t) == functor_compile2) { @@ -204,16 +206,17 @@ static void consult(const char *b_file USES_REGS) { } else { YAP_CompileClause(t); } + } while (true); yap_error_descriptor_t *errd; if ((errd = Yap_GetException(LOCAL_ActiveError))) { fprintf(stderr, "%s:%ld:0: Error %s %s Found\n", errd->errorFile, (long int) errd->errorLine, errd->classAsText, errd->errorAsText); } - } while (t != TermEof); BACKUP_MACHINE_REGS(); YAP_EndConsult(c_stream, &osno, full); pop_text_stack(lvl); + return true; } /// @@ -1037,6 +1040,7 @@ X_API void YAP_Init(YAP_init_args *yap_init) { init_globals(yap_init); start_modules(); + TermEof = MkAtomTerm( Yap_LookupAtom("end_of_file")); consult(Yap_BOOTSTRAP PASS_REGS); setAtomicGlobalPrologFlag(RESOURCE_DATABASE_FLAG, MkAtomTerm(Yap_LookupAtom(Yap_BOOTFILE))); @@ -1051,8 +1055,8 @@ X_API void YAP_Init(YAP_init_args *yap_init) { MkAtomTerm(Yap_LookupAtom(Yap_INPUT_STARTUP))); setBooleanGlobalPrologFlag(SAVED_PROGRAM_FLAG, true); } + } YAP_RunGoalOnce(TermInitProlog); - if (yap_init->install && Yap_OUTPUT_STARTUP) { Term t = MkAtomTerm(Yap_LookupAtom(Yap_OUTPUT_STARTUP)); Term g = Yap_MkApplTerm(Yap_MkFunctor(Yap_LookupAtom("qsave_program"), 1), @@ -1060,7 +1064,7 @@ X_API void YAP_Init(YAP_init_args *yap_init) { YAP_RunGoalOnce(g); } - } + end_init(yap_init); } diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt index 535a4ad59..6e54b2309 100644 --- a/docs/CMakeLists.txt +++ b/docs/CMakeLists.txt @@ -49,6 +49,7 @@ ${CMAKE_SOURCE_DIR}/packages/gecode/3.7.2 ${CMAKE_SOURCE_DIR}/packages/gecode/3.7.1 ${CMAKE_SOURCE_DIR}/packages/gecode/3.7.0 ${CMAKE_SOURCE_DIR}/packages/gecode/3.6.0 +${CMAKE_SOURCE_DIR}/packages/problog ${CMAKE_SOURCE_DIR}/packages/gecode/dev ${CMAKE_SOURCE_DIR}/C/traced_absmi_insts.h ${CMAKE_SOURCE_DIR}/H/globals.h diff --git a/library/system/sys.c b/library/system/sys.c index 332f93c83..da9290a29 100644 --- a/library/system/sys.c +++ b/library/system/sys.c @@ -1062,6 +1062,7 @@ X_API void init_sys(void) { YAP_UserCPredicate("pid", pid, 2); YAP_UserCPredicate("kill", p_kill, 3); YAP_UserCPredicate("mktemp", p_mktemp, 3); + YAP_UserCPredicate("list_directory", list_directory, 3); YAP_UserCPredicate("tmpnam", p_tmpnam, 2); YAP_UserCPredicate("tmpdir", p_tmpdir, 2); YAP_UserCPredicate("rename_file", rename_file, 3);