Changeset: ec2bf9017ee4 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ec2bf9017ee4
Modified Files:
clients/Tests/exports.stable.out
monetdb5/mal/mal_client.c
monetdb5/mal/mal_debugger.c
monetdb5/mal/mal_module.c
monetdb5/mal/mal_module.h
monetdb5/mal/mal_readline.c
monetdb5/modules/mal/manual.c
monetdb5/modules/mal/manual.h
monetdb5/modules/mal/manual.mal
sql/scripts/25_debug.sql
tools/mserver/mserver5.c
Branch: default
Log Message:
Trim console to bare essentials.
Original console code has been largely removed.
A mclient connection can be used instead.
Help information about mal functions is available
using the table producing function, malfunctions()
Dependency on the readline library is removed.
The built-in console can not be removed, because all
initialization of MAL runs through a client object,
which reads a 'console'.
diffs (truncated from 1013 to 300 lines):
diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -1280,7 +1280,6 @@ str MANIFOLDevaluate(Client cntxt, MalBl
str MANIFOLDremapMultiplex(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr
p);
MALfcn MANIFOLDtypecheck(Client cntxt, MalBlkPtr mb, InstrPtr pci);
str MANUALcreateOverview(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr
pci);
-str MANUALhelp(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
str MATHbinary_ATAN2dbl(dbl *res, const dbl *a, const dbl *b);
str MATHbinary_ATAN2flt(flt *res, const flt *a, const flt *b);
str MATHbinary_POWdbl(dbl *res, const dbl *a, const dbl *b);
@@ -2033,8 +2032,6 @@ str diffRef;
str disconnectRef;
str divRef;
void dumpExceptionsToStream(stream *out, str msg);
-void dumpHelpTable(stream *f, Module s, str text, int flag);
-void dumpSearchTable(stream *f, str text);
str eqRef;
str escape_str(str *retval, str s);
str evalFile(Client c, str fname, int listing);
@@ -2094,8 +2091,6 @@ enum malexception getExceptionType(str);
int getFltConstant(MalBlkPtr mb, flt val);
Scenario getFreeScenario(void);
Symbol getFunctionSymbol(Module scope, InstrPtr p);
-char **getHelp(Module m, str pat, int flag);
-char **getHelpMatch(char *pat);
int getHgeConstant(MalBlkPtr mb, hge val);
int getIntConstant(MalBlkPtr mb, int val);
int getLngConstant(MalBlkPtr mb, lng val);
@@ -2447,7 +2442,6 @@ void showCurrentScenario(void);
void showErrors(Client cntxt);
void showException(stream *out, enum malexception, const char *, _In_z_
_Printf_format_string_ const char *, ...) __attribute__((__format__(__printf__,
4, 5)));
void showFlowGraph(MalBlkPtr mb, MalStkPtr stk, str fname);
-void showHelp(Module m, str txt, stream *fs);
void showMalBlkHistory(stream *out, MalBlkPtr mb);
void showOptimizerHistory(void);
void showOptimizerStep(str fnme, int i, int flg);
diff --git a/monetdb5/mal/mal_client.c b/monetdb5/mal/mal_client.c
--- a/monetdb5/mal/mal_client.c
+++ b/monetdb5/mal/mal_client.c
@@ -580,11 +580,6 @@ MCreadClient(Client c)
}
return 0;
}
- if (*CURRENT(c) == '?') {
- showHelp(c->nspace, CURRENT(c) + 1, c->fdout);
- in->pos = in->len;
- return MCreadClient(c);
- }
#ifdef MAL_CLIENT_DEBUG
printf("# finished stream read %d %d\n", (int) in->pos, (int) in->len);
printf("#%s\n", in->buf);
diff --git a/monetdb5/mal/mal_debugger.c b/monetdb5/mal/mal_debugger.c
--- a/monetdb5/mal/mal_debugger.c
+++ b/monetdb5/mal/mal_debugger.c
@@ -917,10 +917,6 @@ partial:
}
continue;
}
- case '?':
- if (!isspace((int) b[1]))
- showHelp(cntxt->nspace, b + 1, out);
- continue;
case 'h':
if (strncmp("help", b, 2) == 0)
mdbHelp(out);
diff --git a/monetdb5/mal/mal_module.c b/monetdb5/mal/mal_module.c
--- a/monetdb5/mal/mal_module.c
+++ b/monetdb5/mal/mal_module.c
@@ -338,322 +338,3 @@ findInstruction(Module scope, MalBlkPtr
return 0;
}
-/*
- * Some primitives to aid online help and completions.
- * Note that pattern matching is on string prefix.
- */
-static int tstDuplicate(char **msg, char *s){
- int i;
- size_t len;
- len= strlen(s);
- for(i=0; msg[i]; i++)
- if( strncmp(s, msg[i], MAX(len,strlen(msg[i]))) == 0 &&
- strlen(s) == strlen(msg[i]) )
- return 1;
- return 0;
-}
-
-#define MAXHELP 500
-char **getHelp(Module m, str inputpat, int completion)
-{
- str pat, modnme, fcnnme = 0;
- Module m1;
- Symbol s;
- size_t len1 = 0,len2 = 0;
- int fnd=0;
- char *t, **msg, buf[1024]={0};
- int top=0, i,j,k, sig = 0, doc = 0;
- int maxhelp= MAXHELP;
-
-#ifdef MAL_SCOPE_DEBUG
- printf("showHelp: %s",pat);
-#endif
- msg= (char **) GDKmalloc( MAXHELP * sizeof(str));
- if( msg == NULL){
- GDKerror("getHelp"MAL_MALLOC_FAIL);
- return NULL;
- }
- msg[top]=0;
-
- if (!inputpat)
- return msg;
-
- pat= GDKstrdup(inputpat);
- t= strchr(pat,'\n');
- if( t) *t=0;
-
- t = strchr(pat,')');
- if( t) { doc++; *t=0; completion=0; }
- t= strchr(pat,'(');
- if( t) { sig++; *t=0; completion=0; }
-
- /* rudimentary patterns only.
- * *.nme nme.* nme.nme *.*
- * ignore the rest.
- */
- modnme= pat;
- if( (fcnnme = strchr(pat,'.')) ){
- *fcnnme++ = 0;
- if( strchr(modnme,'*'))
- modnme="*";
- if( strchr(fcnnme,'*') || *fcnnme==0)
- fcnnme="*";
- } else {
- modnme="*";
- fcnnme=pat;
- if( strchr(fcnnme,'*') || *fcnnme==0)
- fcnnme="*";
- }
-
- if( fcnnme && *fcnnme){
- len2 = strlen(fcnnme);
- }
-
- len1 = (int)strlen(modnme);
-
- /* display module information if there is no function */
- if( fcnnme == NULL){
- for(i=0; i< MAXSCOPE; i++)
- for(j=0; j< MAXSCOPE; j++){
- m= scopeJump[i][j];
- while(m != NULL){
- if( strncmp(modnme,m->name,len1) ==0
|| *modnme=='*'){
- msg[top++] = GDKstrdup(m->name);
- msg[top] =0;
- if( top == maxhelp-1) {
- msg= (char **)
GDKrealloc(msg,sizeof(str)* maxhelp);
- if( msg == NULL)
- return NULL;
- maxhelp+= MAXHELP;
- }
- }
- m= m->sibling;
- }
- }
- GDKfree(pat);
- return msg;
- }
-
- /* display module.function */
- m1 = findModule(m,modnme);
- if( m1 == 0 && *modnme != '*') {
- GDKfree(pat);
- return msg;
- }
-
-#ifdef MAL_SCOPE_DEBUG
- printf("showHelp: %s %s [" SZFMT "] %s %s\n",
- modnme,fcnnme,len2, (doc?"doc":""), (sig?"sig":""));
-#endif
- for(i=0; i< MAXSCOPE; i++)
- for(k=0; k< MAXSCOPE; k++){
- m= scopeJump[i][k];
- while( m){
- if( strncmp(modnme,m->name,len1) &&
*modnme!='*' ) {
- m= m->sibling;
- continue;
- }
- for(j=0;j<MAXSCOPE;j++)
- for(s= m->subscope[j]; s; s= s->peer)
- if(
strncmp(fcnnme,s->name,len2)==0 || *fcnnme=='*') {
- fnd=0;
- if( completion ) {
-
snprintf(buf,sizeof(buf)," %s.%s",
-
((*modnme=='*' || *modnme==0)? m->name:modnme),s->name);
- if(
tstDuplicate(msg,buf+1) ) {
-
continue;
- }
- } else
- if( doc) {
- char *v;
-
-
fcnDefinition(s->def,s->def->stmt[0],buf,FALSE,buf,sizeof(buf));
-
buf[0]=' ';
-
- v=
strstr(buf,"address");
- if( v)
*v=0;
- if(
tstDuplicate(msg,buf+1) && s->def->help==0 ) fnd++;
- if(fnd)
continue;
-
-
msg[top++]= GDKstrdup(buf+1);
- if(v){
-
*v='a';
-
msg[top++]= GDKstrdup(v);
- }
-
msg[top] = 0;
-
- if(
s->def->help) {
-
char *w;
-
strcpy(buf+1,"comment ");
-
v= buf+1+8;
-
for( w= s->def->help; *w && v <buf+sizeof(buf)-2; w++)
-
if( *w == '\n'){
-
/*ignore */
-
} else *v++ = *w;
-
*v = 0;
- } else
fnd = 1; /* ignore non-existing comment */
- if(v){
-
*v++ ='\n';
-
*v=0;
- }
- } else if(
strncmp(fcnnme,s->name,strlen(fcnnme))==0 ||
-
*fcnnme=='*' ) {
-
fcnDefinition(s->def,s->def->stmt[0],buf,FALSE,buf,sizeof(buf));
-
buf[0]=' ';
- t=
strstr(buf,"address");
- if( t)
*t= 0;
- }
- if( fnd == 0 && buf[1]){
- msg[top++] =
GDKstrdup(buf+1);
- msg[top] = 0;
- }
- if( top >= maxhelp-3){
- msg= (char **)
GDKrealloc(msg,sizeof(str)* (maxhelp+MAXHELP));
- if( msg == NULL)
- return
NULL;
- maxhelp+=
MAXHELP;
- }
- }
- m = m->sibling;
- }
- }
- GDKfree(pat);
- return msg;
-}
-
-/*
- * The second primitive of relevance is to find documentation matching
- * a keyword. Since we can not assume pcre to be everywhere, we keep
- * it simple.
- */
-char **getHelpMatch(char *pat){
- char **msg, buf[1024];
- Module m;
- Symbol s;
- int top = 0, i,j,k;
- int maxhelp= MAXHELP;
-
- msg= (char **) GDKmalloc( maxhelp * sizeof(str));
- if( msg == NULL){
- GDKerror("getHelpMatch" MAL_MALLOC_FAIL);
- return NULL;
- }
- msg[top]=0;
-
- if (!pat)
- return msg;
-
- for(i=0; i< MAXSCOPE; i++)
- for(k=0; k< MAXSCOPE; k++){
- m= scopeJump[i][k];
- while( m){
- for(j=0;j<MAXSCOPE;j++)
- if( m->subscope[j])
- for(s= m->subscope[j]; s; s=
s->peer)
- if( strstr(m->name,pat)
|| strstr(s->name,pat) ||
- (s->def->help
&& strstr(s->def->help,pat))) {
- char *v,*w;
-
fcnDefinition(s->def,s->def->stmt[0],buf,FALSE,buf,sizeof(buf));
- buf[0]=' ';
- if(
s->def->help ){
- v=
strchr(buf,0);
- assert
(v != NULL); /* fool Coverity */
- *v++ =
'\\';
- *v++ =
'n';
- *v++ =
'#';
- for( w=
s->def->help; *w && v <buf+sizeof(buf)-3; w++)
-
if( *w == '\n'){
-
*v++ = '\\';
-
*v++ = 'n';
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list