4 #define MAX_LINE_LEN 512
6 int Jim_InteractivePrompt(Jim_Interp
*interp
)
10 char *buf
= Jim_Alloc(MAX_LINE_LEN
);
12 printf("Welcome to Jim version %d.%d, "
13 "Copyright (c) 2005-8 Salvatore Sanfilippo" JIM_NL
, JIM_VERSION
/ 100, JIM_VERSION
% 100);
14 Jim_SetVariableStrWithStr(interp
, JIM_INTERACTIVE
, "1");
20 const char *retcodestr
= Jim_ReturnCode(retcode
);
22 if (*retcodestr
== '?') {
23 printf("[%d] . ", retcode
);
26 printf("[%s] . ", retcodestr
);
32 scriptObjPtr
= Jim_NewStringObj(interp
, "", 0);
33 Jim_IncrRefCount(scriptObjPtr
);
40 if (fgets(buf
, MAX_LINE_LEN
, stdin
) == NULL
) {
44 Jim_DecrRefCount(interp
, scriptObjPtr
);
47 Jim_AppendString(interp
, scriptObjPtr
, buf
, -1);
48 str
= Jim_GetString(scriptObjPtr
, &len
);
49 if (Jim_ScriptIsComplete(str
, len
, &state
))
51 printf("%c> ", state
);
54 retcode
= Jim_EvalObj(interp
, scriptObjPtr
);
55 Jim_DecrRefCount(interp
, scriptObjPtr
);
56 result
= Jim_GetString(Jim_GetResult(interp
), &reslen
);
57 if (retcode
== JIM_ERR
) {
58 Jim_PrintErrorMessage(interp
);
60 else if (retcode
== JIM_EXIT
) {
62 exit(Jim_GetExitCode(interp
));
66 printf("%s\n", result
);