=================================================================== RCS file: /home/cvs/OpenXM/rc/repl.c,v retrieving revision 1.8 retrieving revision 1.17 diff -u -p -r1.8 -r1.17 --- OpenXM/rc/repl.c 2003/01/16 07:50:57 1.8 +++ OpenXM/rc/repl.c 2004/06/20 04:55:32 1.17 @@ -1,12 +1,20 @@ -/* $OpenXM: OpenXM/rc/repl.c,v 1.7 2002/04/05 01:55:59 takayama Exp $ */ +/* $OpenXM: OpenXM/rc/repl.c,v 1.16 2004/06/14 11:10:40 takayama Exp $ */ #include #include -#include + +#include +#include #include +#include #define BUFSIZE 10000 +#define SSIZE 1024 +/* If you make the following two strings longer, increase the number SSIZE */ +#define REPL_IMGFILE "repl_test.img" +#define REPL_PSFILE "repl_test.ps" + int main(int argc,char *argv[]) { char s[BUFSIZE]; @@ -14,16 +22,38 @@ main(int argc,char *argv[]) { char *slash; char type = 'b'; FILE *fp; + int fd,i; + char sss_png[SSIZE]; + char sss_gif[SSIZE]; - if (argc >= 2) { - if (strcmp(argv[1],"csh")==0) { - type = 'c'; - } + if (getcwd(cwd, sizeof(cwd)) == NULL) { + fprintf(stderr, "getcwd: %s\n", strerror(errno)); + exit(EXIT_FAILURE); } - - getcwd(cwd,BUFSIZE); - slash = strrchr(cwd,'/'); + if ((slash = strrchr(cwd, '/')) == cwd) { + fprintf(stderr, "The current working directory is /.\n"); + exit(EXIT_FAILURE); + } *slash = 0; + + for (i=1; i/dev/null")) { + fprintf(fp,"/Times-Roman findfont 10 scalefont setfont\n"); + fprintf(fp," 390 290 moveto (F) show \n"); + fprintf(fp,"showpage \n"); + while (fclose(fp) != 0) { + if (errno == EINTR) + continue; + break; + } + + sprintf(sss_png,"pstoimg -type png %s -out %s >/dev/null",REPL_PSFILE,REPL_IMGFILE); + sprintf(sss_gif,"pstoimg -type gif %s -out %s >/dev/null",REPL_PSFILE,REPL_IMGFILE); + + if (!system(sss_png)) { if (type == 'b') { printf("export OpenXM_PSTOIMG_TYPE=png\n"); }else{ printf("setenv OpenXM_PSTOIMG_TYPE png\n"); } - }else if (!system("pstoimg -type gif /tmp/repl_test.ps -out /tmp/repl_test.gif >/dev/null")) { + }else if (!system(sss_gif)) { if (type == 'b') { printf("OpenXM_PSTOIMG_TYPE=gif\n"); printf("export OpenXM_PSTOIMG_TYPE\n"); @@ -59,11 +96,24 @@ main(int argc,char *argv[]) { printf("setenv OpenXM_PSTOIMG_TYPE=gif\n"); } }else { - printf("OpenXM_PSTOIMG_TYPE=no\n"); - printf("export OpenXM_PSTOIMG_TYPE\n"); + if (type == 'b') { + printf("OpenXM_PSTOIMG_TYPE=no\n"); + printf("export OpenXM_PSTOIMG_TYPE\n"); + }else{ + printf("setenv OpenXM_PSTOIMG_TYPE no\n"); + } } - system("rm -f /tmp/repl_test.*"); + while (unlink(REPL_IMGFILE) != 0) { + if (errno == EINTR) + continue; + break; + } + while (unlink(REPL_PSFILE) != 0) { + if (errno == EINTR) + continue; + break; + } - exit(0); + exit(EXIT_SUCCESS); }