=================================================================== RCS file: /home/cvs/OpenXM/src/kxx/oxd.c,v retrieving revision 1.4 retrieving revision 1.6 diff -u -p -r1.4 -r1.6 --- OpenXM/src/kxx/oxd.c 2002/10/27 10:39:33 1.4 +++ OpenXM/src/kxx/oxd.c 2002/10/28 08:57:28 1.6 @@ -1,5 +1,5 @@ /* - $OpenXM: OpenXM/src/kxx/oxd.c,v 1.3 2002/10/20 23:49:12 takayama Exp $ + $OpenXM: OpenXM/src/kxx/oxd.c,v 1.5 2002/10/28 00:38:32 takayama Exp $ */ #include @@ -136,6 +136,9 @@ childServerMain(int fd) { char ccc[SIZE*3]; extern int Serial; char *openxm; + int resultCode; + int st; + /* Starting oxd session */ signal(SIGALRM,exitServer); alarm(60); @@ -190,10 +193,29 @@ childServerMain(int fd) { openxm = getOpenXMpath(); sprintf(ccc,"%s %s",openxm,body); fprintf(stderr,"Serial=%d : Executing command=%s\n",Serial,ccc); + /* Old code. fprintf(fp,"\n"); fflush(NULL); - fclose(fp); /* close the connection */ + fclose(fp); system(ccc); fprintf(stderr,"Serial=%d : The following command is finished : %s\n",Serial,ccc); + */ + /* New code. It requires ox with -finish option. */ + resultCode = system(ccc); + fprintf(stderr,"Serial=%d : The following command is finished : %s, resultCode=%d\n",Serial,ccc,resultCode); + if (resultCode == 0) { + fprintf(fp,"\n"); + }else{ + fprintf(fp,"\n",resultCode); + } + + GET_COMMAND /* expect */ + + fclose(fp); /* close the connection */ + fprintf(stderr,"Waiting the termination of the child process (ox server).\n"); + fflush(NULL); + wait(&st); + fprintf(stderr,"%d: The child process is terminated.\n",Serial); + exit(0); } char *getOpenXMpath() {