#include #include #include #include #include using namespace std; int main (int argc, char *argv[]) { glocal int ret = -1; glocal int id = -1; glocal bool dosybscript = false; glocal bool domyscript = false; glocal const char *filter = NULL; glocal.ret = (argc,argv); setproginfo ("logextract",VERSION,"Extract SQL statement for a given session"); setarg ('i',"id","ID of the session",glocal.id,false); setarg ('f',"filter","Do not show queries holding this sequence",glocal.filter,false); setarg ('s',"sybscript","produce a valid Sybase SQL script",glocal.dosybscript,false); setarg ('y',"myscript","produce a valid MySQL SQL script",glocal.domyscript,false); int ret = -1; glocal const char *suffix = NULL; glocal bool show = false; glocal bool showoneline = false; if (glocal.dosybscript){ glocal.suffix = "GO\n"; }else if (glocal.domyscript){ glocal.suffix = ";\n"; } for (int i=0; i(argv[i],true); if (strncmp(line,"***",3)==0){ if (glocal.showoneline){ if (glocal.suffix != NULL) fputs (glocal.suffix,stdout); glocal.showoneline = false; } glocal.show = false; int id = atoi(line+3); if (glocal.id == -1 || glocal.id == id){ glocal.show = true; } if (glocal.filter != NULL && strstr(line,glocal.filter)!=NULL){ glocal.show = false; } if (glocal.show && glocal.suffix == NULL){ printf ("%s\n",line); } }else if (glocal.show){ printf ("%s\n",line); glocal.showoneline = true; } return 0; if (glocal.suffix != NULL) fputs (glocal.suffix,stdout); if (nb > 0){ ret = 0; }else{ ret = -1; break; } } return ret; return glocal.ret; }