diff -C 3 ../cmdfiles.c ./cmdfiles.c *** ../cmdfiles.c 2004-02-08 08:45:30.000000000 -0600 --- ./cmdfiles.c 2004-06-15 20:44:41.000000000 -0500 *************** *** 43,48 **** --- 43,49 ---- static int parse_colors(char *value); static int parse_printer(char *value); static int get_bf(bf_t, char *); + static int isabigfloat(char *str); /* variables defined by the command line/files processor */ int stoppass=0; /* stop at this guessing pass early */ *************** *** 1063,1069 **** /* using arbitrary precision and above failed */ else if (((int)strlen(argptr) > 513) /* very long command */ || (totparms > 0 && floatval[totparms-1] == FLT_MAX ! && totparms < 6)) { ++floatparms; floatval[totparms] = FLT_MAX; floatvalstr[totparms]=argptr; --- 1064,1071 ---- /* using arbitrary precision and above failed */ else if (((int)strlen(argptr) > 513) /* very long command */ || (totparms > 0 && floatval[totparms-1] == FLT_MAX ! && totparms < 6) ! || isabigfloat(argptr)) { ++floatparms; floatval[totparms] = FLT_MAX; floatvalstr[totparms]=argptr; *************** *** 3149,3151 **** --- 3151,3178 ---- break; } } + + /* + Crude function to detect a floating point number. Intended for + use with arbitrary precision. + */ + static int isabigfloat(char *str) + { + /* [+|-]numbers][.]numbers[+|-][e|g]numbers */ + int result=1; + char *s = str; + int numdot=0; + int nume=0; + int numsign=0; + while(*s != 0 && *s != '/' && *s != ' ') + { + if(*s == '-' || *s == '+') numsign++; + else if(*s == '.') numdot++; + else if(*s == 'e' || *s == 'E' || *s == 'g' || *s == 'G') nume++; + else if(!isdigit(*s)) {result=0; break;} + s++; + } + if(numdot > 1 || numsign > 2 || nume > 1) result=0; + return(result); + } + diff -C 3 ../diskvidu.c ./diskvidu.c *** ../diskvidu.c 2003-02-09 14:00:03.000000000 -0600 --- ./diskvidu.c 2004-06-15 20:44:41.000000000 -0500 *************** *** 9,17 **** #include #include - #ifndef XFRACT - #include - #endif #include "port.h" #include "prototyp.h" --- 9,14 ---- diff -C 3 ../framain2.c ./framain2.c *** ../framain2.c 2004-02-08 20:06:04.000000000 -0600 --- ./framain2.c 2004-06-15 20:44:41.000000000 -0500 *************** *** 502,508 **** } else if (initbatch == 0) { /* not batch mode */ #ifndef XFRACT ! lookatmouse = (zwidth == 0 && calc_status == 1) ? -PAGE_UP : 3; #else lookatmouse = (zwidth == 0) ? -PAGE_UP : 3; #endif --- 502,508 ---- } else if (initbatch == 0) { /* not batch mode */ #ifndef XFRACT ! lookatmouse = (zwidth == 0 && !video_scroll) ? -PAGE_UP : 3; #else lookatmouse = (zwidth == 0) ? -PAGE_UP : 3; #endif diff -C 3 ../help.src ./help.src *** ../help.src 2004-02-08 20:06:04.000000000 -0600 --- ./help.src 2004-06-18 15:41:59.000000000 -0500 *************** *** 276,283 **** bug fixes, and thus be more stable, but they may also have new features which very likely have new bugs. ! Version 20.3.01 is an update of Fractint 20.0 based on the developer's ! version 20.3.00. New features include: Patch 1\ Fixed the float bailout for the lambdafn fractal type when the EXP function --- 276,298 ---- bug fixes, and thus be more stable, but they may also have new features which very likely have new bugs. ! Version 20.3.02 is an update of Fractint 20.0 based on the developer's ! version 20.3.01. New features include: ! ! Patch 2\ ! Fixed the inability to reload a PAR created from an arbitrary precision ! fractal with a large magnification. ! ! Fixed the problem with a left mouse click not bringing up the zoom box ! after an image is completed. ! ! Incorporated Gerald Dobiasovsky's fix for the julibrot type when used ! with quat and hypercomplex. ! ! Fixed the display of subdirectories in Xfractint. ! ! Replaced control characters in realdos.c with the equivalent ascii values ! to quiet complaints by CVS. Patch 1\ Fixed the float bailout for the lambdafn fractal type when the EXP function diff -C 3 ../jb.c ./jb.c *** ../jb.c 2003-02-09 14:00:06.000000000 -0600 --- ./jb.c 2004-06-15 20:44:41.000000000 -0500 *************** *** 140,153 **** jbfp_per_pixel(); for (zpixel = 0; zpixel < zdots; zpixel++) { ! old.x = jxfp; ! old.y = jyfp; ! jbcfp.x = mxfp; ! jbcfp.y = myfp; ! qc = param[0]; ! qci = param[1]; ! qcj = param[2]; ! qck = param[3]; #ifdef XFRACT if (keychk++ > 500) { --- 140,169 ---- jbfp_per_pixel(); for (zpixel = 0; zpixel < zdots; zpixel++) { ! /* Special initialization for Mandelbrot types */ ! if ((neworbittype == QUATFP || neworbittype == HYPERCMPLXFP) ! && save_release > 2002) ! { ! old.x = 0.0; ! old.y = 0.0; ! jbcfp.x = 0.0; ! jbcfp.y = 0.0; ! qc = jxfp; ! qci = jyfp; ! qcj = mxfp; ! qck = myfp; ! } ! else ! { ! old.x = jxfp; ! old.y = jyfp; ! jbcfp.x = mxfp; ! jbcfp.y = myfp; ! qc = param[0]; ! qci = param[1]; ! qcj = param[2]; ! qck = param[3]; ! } #ifdef XFRACT if (keychk++ > 500) { diff -C 3 ../loadfile.c ./loadfile.c *** ../loadfile.c 2004-02-08 20:06:04.000000000 -0600 --- ./loadfile.c 2004-06-15 20:44:41.000000000 -0500 *************** *** 1084,1090 **** (fractype == FPPOPCORNJUL && save_release <= 1960) || (inside == FMODI && save_release <= 2000) || ((inside == ATANI || outside == ATAN) && save_release <= 2002) || ! (fractype == LAMBDATRIGFP && trigndx[0] == EXP && save_release <= 2002) ) ret = 1; return(ret); --- 1084,1093 ---- (fractype == FPPOPCORNJUL && save_release <= 1960) || (inside == FMODI && save_release <= 2000) || ((inside == ATANI || outside == ATAN) && save_release <= 2002) || ! (fractype == LAMBDATRIGFP && trigndx[0] == EXP && save_release <= 2002) || ! ((fractype == JULIBROTFP) && ! (neworbittype == QUATFP || neworbittype == HYPERCMPLXFP) && ! save_release <= 2002) ) ret = 1; return(ret); diff -C 3 ../miscovl.c ./miscovl.c *** ../miscovl.c 2004-02-08 20:06:04.000000000 -0600 --- ./miscovl.c 2004-06-15 20:44:41.000000000 -0500 *************** *** 138,144 **** --- 138,148 ---- maxcolor = colors; strcpy(colorspec,"y"); + #ifndef XFRACT + if ((gotrealdac && !reallyega) || (istruecolor && !truemode)) + #else if ((gotrealdac && !reallyega) || (istruecolor && !truemode) || fake_lut) + #endif { --maxcolor; /* if (maxit < maxcolor) remove 2 lines */ *************** *** 221,227 **** --- 225,235 ---- LOADBATCHPROMPTS("Fourth comment"); paramvalues[promptnum].type = 0x100 + MAXCMT - 1; paramvalues[promptnum++].uval.sbuf = inpcomment[3]; + #ifndef XFRACT + if ((gotrealdac && !reallyega) || (istruecolor && !truemode)) + #else if ((gotrealdac && !reallyega) || (istruecolor && !truemode) || fake_lut) + #endif { LOADBATCHPROMPTS("Record colors?"); paramvalues[promptnum].type = 0x100 + 13; *************** *** 270,276 **** --- 278,288 ---- far_strcpy(CommandName, inpcommandname); for(i=0;i<4;i++) far_strncpy(CommandComment[i], inpcomment[i], MAXCMT); + #ifndef XFRACT + if ((gotrealdac && !reallyega) || (istruecolor && !truemode)) + #else if ((gotrealdac && !reallyega) || (istruecolor && !truemode) || fake_lut) + #endif if (paramvalues[maxcolorindex].uval.ival > 0 && paramvalues[maxcolorindex].uval.ival <= 256) maxcolor = paramvalues[maxcolorindex].uval.ival; diff -C 3 ../prompts2.c ./prompts2.c *** ../prompts2.c 2004-02-08 08:45:30.000000000 -0600 --- ./prompts2.c 2004-06-15 20:44:41.000000000 -0500 *************** *** 1288,1309 **** return -1; } else if (dirEntry->d_ino != 0) { splitpath(dirEntry->d_name,NULL,NULL,thisname,thisext); ! if ((searchname[0]=='*' || strcmp(searchname,thisname)==0) && ! (searchext[0]=='*' || strcmp(searchext,thisext)==0)) { ! strncpy(DTA.filename,dirEntry->d_name,13); ! DTA.filename[12]='\0'; ! strcpy(tmpname,searchdir); ! strcat(tmpname,"/"); ! strcat(tmpname,dirEntry->d_name); ! stat(tmpname,&sbuf); ! if ((sbuf.st_mode&S_IFMT)==S_IFREG) { ! DTA.attribute = 0; ! } else if ((sbuf.st_mode&S_IFMT)==S_IFDIR) { ! DTA.attribute = SUBDIR; ! } else { ! continue; ! } ! DTA.size = sbuf.st_size; return 0; } } --- 1288,1309 ---- return -1; } else if (dirEntry->d_ino != 0) { splitpath(dirEntry->d_name,NULL,NULL,thisname,thisext); ! strncpy(DTA.filename,dirEntry->d_name,13); ! DTA.filename[12]='\0'; ! strcpy(tmpname,searchdir); ! strcat(tmpname,dirEntry->d_name); ! stat(tmpname,&sbuf); ! DTA.size = sbuf.st_size; ! if ((sbuf.st_mode&S_IFMT)==S_IFREG && ! (searchname[0]=='*' || strcmp(searchname,thisname)==0) && ! (searchext[0]=='*' || strcmp(searchext,thisext)==0)) { ! DTA.attribute = 0; ! return 0; ! } ! else if (((sbuf.st_mode&S_IFMT)==S_IFDIR) && ! ((searchname[0]=='*' || searchext[0]=='*') || ! (strcmp(searchname,thisname)==0))) { ! DTA.attribute = SUBDIR; return 0; } } *************** *** 1696,1717 **** int isadirectory(char *s) { - #ifdef _MSC_VER int len; char sv; unsigned attrib = 0; #endif despace(s); /* scrunch out white space */ if(strchr(s,'*') || strchr(s,'?')) return(0); /* for my purposes, not a directory */ - #ifdef _MSC_VER len = strlen(s); if(len > 0) sv = s[len-1]; /* last char */ else sv = 0; if(_dos_getfileattr(s, &attrib) == 0 && ((attrib&_A_SUBDIR) != 0)) { return(1); /* not a directory or doesn't exist */ --- 1696,1717 ---- int isadirectory(char *s) { int len; char sv; + #ifdef _MSC_VER unsigned attrib = 0; #endif despace(s); /* scrunch out white space */ if(strchr(s,'*') || strchr(s,'?')) return(0); /* for my purposes, not a directory */ len = strlen(s); if(len > 0) sv = s[len-1]; /* last char */ else sv = 0; + #ifdef _MSC_VER if(_dos_getfileattr(s, &attrib) == 0 && ((attrib&_A_SUBDIR) != 0)) { return(1); /* not a directory or doesn't exist */ *************** *** 1732,1746 **** if(fr_findfirst(s) != 0) /* couldn't find it */ { /* any better ideas?? */ ! if(strchr(s,SLASHC)) /* we'll guess it is a directory */ return(1); else return(0); /* no slashes - we'll guess it's a file */ } ! else if(DTA.attribute & SUBDIR) ! return(1); /* we're SURE it's a directory */ ! else ! return(0); #endif } --- 1732,1756 ---- if(fr_findfirst(s) != 0) /* couldn't find it */ { /* any better ideas?? */ ! if(sv == SLASHC) /* we'll guess it is a directory */ return(1); else return(0); /* no slashes - we'll guess it's a file */ } ! else if((DTA.attribute & SUBDIR) != 0) { ! if(sv == SLASHC) { ! /* strip trailing slash and try again */ ! s[len-1] = 0; ! if(fr_findfirst(s) != 0) /* couldn't find it */ ! return(0); ! else if((DTA.attribute & SUBDIR) != 0) ! return(1); /* we're SURE it's a directory */ ! else ! return(0); ! } else ! return(1); /* we're SURE it's a directory */ ! } ! return(0); #endif } diff -C 3 ../realdos.c ./realdos.c *** ../realdos.c 2004-02-08 20:06:04.000000000 -0600 --- ./realdos.c 2004-06-19 07:05:56.000000000 -0500 *************** *** 27,33 **** #define PRODUCTION */ int release=2003; /* this has 2 implied decimals; increment it every synch */ ! int patchlevel=1; /* patchlevel for DOS version */ /* fullscreen_choice options */ #define CHOICERETURNKEY 1 --- 27,33 ---- #define PRODUCTION */ int release=2003; /* this has 2 implied decimals; increment it every synch */ ! int patchlevel=2; /* patchlevel for DOS version */ /* fullscreen_choice options */ #define CHOICERETURNKEY 1 *************** *** 1401,1411 **** #endif if(testkey == '2') testkey = '@'; ! if (strchr("#@2txyzgvir3dj",testkey) || testkey == INSERT ! || testkey == ESC || testkey == DELETE || testkey ==6) /*RB 6== ctrl-F for sound menu */ return(0-testkey); if (menutype) { ! if (strchr("\\sobpkrh",testkey) || testkey == TAB) return(0-testkey); if (testkey == ' ') if ((curfractalspecific->tojulia != NOFRACTAL --- 1401,1413 ---- #endif if(testkey == '2') testkey = '@'; ! if (strchr("#@2txyzgvir3dj",testkey) || testkey == INSERT || testkey == 2 ! || testkey == ESC || testkey == DELETE || testkey == 6) /*RB 6== ctrl-F for sound menu */ return(0-testkey); if (menutype) { ! if (strchr("\\sobpkrh",testkey) || testkey == TAB ! || testkey == 1 || testkey == 5 || testkey == 8 ! || testkey == 19 || testkey == 21) /* ctrl-A, E, H, S, U */ return(0-testkey); if (testkey == ' ') if ((curfractalspecific->tojulia != NOFRACTAL diff -C 3 ../rotate.c ./rotate.c *** ../rotate.c 2004-02-08 08:45:30.000000000 -0600 --- ./rotate.c 2004-06-15 20:44:41.000000000 -0500 *************** *** 460,466 **** int load_palette(void) { int i,oldhelpmode; ! char filename[80]; oldhelpmode = helpmode; strcpy(filename,MAP_name); stackscreen(); --- 460,466 ---- int load_palette(void) { int i,oldhelpmode; ! char filename[FILE_MAX_PATH]; oldhelpmode = helpmode; strcpy(filename,MAP_name); stackscreen(); diff -C 3 ../xfractint.man ./xfractint.man *** ../xfractint.man 2004-02-08 20:06:04.000000000 -0600 --- ./xfractint.man 2004-06-16 20:44:06.000000000 -0500 *************** *** 76,83 **** .TP Passes=2 has problems?? .TP - Subdirectories don't display. - .TP Symmetry that is offset slightly doesn't always complete the image. .TP The top of the help screens are messed up. Starting your xterm with --- 76,81 ----