Re: [Fractdev] xfractint barfs when par names have - in them
--- legalize@xmission.com wrote: I noticed a pattern when processing Jim Muth's FOTD pars that every time the parset name had a '-' in the name, xfractint would not be able to render the file properly. I verified this by changing my script to rename the parset 'tmp' as I rendered the image and all the ones with '-' in the name are now rendering properly. -- Rich, I'm out of town this week and don't have my development computer with me. I get back on Sunday, and should have a chance to look at this next week. Thanks. Jonathan
Additional: it may only be a problem when the parameter set is specified on the command-line and not selected interactively. Here's the command-line I was using: bin/xfractint -disk -geometry ${render_width}x${render_height} \ batch=yes savename=tmp.gif "@tmp.par/$par_name" -- "The Direct3D Graphics Pipeline" -- DirectX 9 draft available for download <http://legalizeadulthood.wordpress.com/the-direct3d-graphics-pipeline/> Legalize Adulthood! <http://legalizeadulthood.wordpress.com>
Rich,
Additional: it may only be a problem when the parameter set is specified on the command-line and not selected interactively. Here's the command-line I was using:
bin/xfractint -disk -geometry ${render_width}x${render_height} \ batch=yes savename=tmp.gif "@tmp.par/$par_name"
Hmm, the first entry for the changes for patch 10 to version 20.4.0 reads: Fixed long standing bug in Xfractint that occurred when a PAR was involked from the command line. I guess I should get off my dead ... and release patch 10. 8-)) Jonathan
Rich,
Additional: it may only be a problem when the parameter set is specified on the command-line and not selected interactively. Here's the command-line I was using:
bin/xfractint -disk -geometry ${render_width}x${render_height} \ batch=yes savename=tmp.gif "@tmp.par/$par_name"
Hmm, the first entry for the changes for patch 10 to version 20.4.0 reads:
Fixed long standing bug in Xfractint that occurred when a PAR was involked from the command line.
I don't think this fixes whatever is causing your problem. Can you give me a specific example that doesn't work correctly for you? I haven't been able to see any problems with the limited testing I have done. Thanks. Jonathan
In article <1277171107.1812.20.camel@jonathan-desktop>, Jonathan Osuch <osuchj@avalon.net> writes:
I don't think this fixes whatever is causing your problem. Can you give me a specific example that doesn't work correctly for you? I haven't been able to see any problems with the limited testing I have done.
Try this: ; Date: Thu, 27 Sep 2007 22:45:36 -0400 ; ; To: fractint@mailman.xmission.com ; cc: philofractal@lists.fractalus.com ; ; From: Jim Muth <jamth@mindspring.com> ; Reply-To: Fractint and General Fractals Discussion ; <fractint@mailman.xmission.com> ; ; Subject: [Fractint] FOTD 28-09-07 (Richest-Field Image [No Rating]) ; ; Id: <1.5.4.16.20070927224623.0d87c1f8@pop.mindspring.com> ; --------- ; ; FOTD -- September 28, 2007 (No Rating) ; ; Fractal visionaries and enthusiasts: ; ; Today's image returns us once again to the same parent fractal ; that was the source of the past 2 days' images, where we check ; what I assume is the Seahorse Valley area of a large Mandeloid. ; ; The underlying fractal forms in today's image are unusual, but ; with too little time to color it properly, I feel I have missed ; the best part. After spending over five minutes trying to ; decide how to rate the image, I decided not to rate it at all. ; ; I named the picture "Richest-Field Image" because the colors are ; some of the richest and most excessive I have seen in a fractal. ; But sometimes excessive colors can be a good thing, so take a ; look. You might like what you find. ; ; The calculation time of 3-2/3 minutes can be cut to almost ; nothing by going to the FOTD web site at: ; ; <http://home.att.net/~Paul.N.Lee/FotD/FotD.html> ; ; and viewing the finished image there. If today's image is not ; yet posted on the web site, check back in a little while. It ; soon will be posted. ; ; Another too-warm-for-the-season day here at Fractal Central on ; Thursday ended with a bang at 7pm, when a heavy thunder-storm ; moved in. The fractal cats took the heavy weather bravely. My ; day was busier than I would have liked, but still well under ; control. The next FOTD is due in 24 hours. Until then, take ; care, and keep waiting for the arrival of the great fractal. ; ; ; Jim Muth ; jamth@mindspring.com ; jimmuth@aol.com ; ; ; START PARAMETER FILE======================================= Richest-FieldImage { ; time=0:03:40.66-SF5 on P4-2000 reset=2004 type=formula formulafile=allinone.frm formulaname=MandAutoCritInZ function=recip passes=1 center-mag=+0.01663148684857626/-0.145175362313389\ 20/3.729357e+010/1/-10/0.0019081905682646963 params=-0.88/1.1/1/-1.1/0/0/0/0 float=y maxiter=2200 inside=0 logmap=274 periodicity=10 colors=000dQJdRJcUKbWLaYLa_M`aN_cN_fOZhOYjPYlQXnQW\ pRSwNWrRZmVbiZedbi`flWjoSncOhSLcGHZ5EUAGRFHPJJNOKL\ TMJXNHaOFfQDjRBoT9tU7xV5tW8qXAmYCjYEgZGc_I`_KY`MUa\ PRaRNbTKcVHcXDdZAe`7ebu5Rq7Sn8Tj9UgAVcCW`DWXEXUFYQ\ HZNI_JJ`9QeGK`MFWTASZ5Nd0Jb4K`8KZBLXFLVIMUMMSPNQTN\ OWOM_OGfRLbOPZMTWJXSH`OFdLChHAz84lE8ZJBLPEAXF8UH6R\ J4OL2PN0SPBULM_IWcEfeBoo7om8oi9mdAm`BmTClPDlKEkE9j\ GEhIJgKNfMSeOWhQYiS_jTalVclXemYgm_inajnblndnofpogr\ oitokvvszolwhfta_rVUoOOlHHjABg33f45e56e68e79e8Be8C\ e9EeAFeBHeCIeCKeDLeENeFOeGQe9UdGReMOfSLgYIhcFinAni\ Cjj2heDfaNdXYbTg`PqZOqVOqRNqNNqJMqFmzBZz7Us4FjQDbM\ CXJARG9LD7FA697534766988ABACDCDGEFIFHKHINJKPLLSNNU\ POWQQWORWLTWJUWGWWEXWCT_EQbGNeHKhJLkLOnMRqOUtQXyS_\ zRbzRezRhzRkzQnzQqzQtzQwzPzzPzzPzzPzzPzzRzzTzzVzzW\ zzYzz_zz`zzbzzdzzezzgzzizzjzzlzznzzozz`zzMzz4zz7zz\ AzzCzzFzzHzzKzzMzzMzzLzzK } frm:MandAutoCritInZ {; Jim Muth a=real(p1), b=imag(p1), d=real(p2), f=imag(p2), g=1/f, h=1/d, j=1/(f-b), z=(((-a*b*g*h)^j)+(p4)), k=real(p3)+1, l=imag(p3)+100, c=fn1(pixel): z=k*((a*(z^b))+(d*(z^f)))+c, |z| < l } ; END PARAMETER FILE========================================= ; ; ; _______________________________________________ ; Fractint mailing list ; Fractint@mailman.xmission.com ; http://mailman.xmission.com/cgi-bin/mailman/listinfo/fractint -- "The Direct3D Graphics Pipeline" -- DirectX 9 draft available for download <http://legalizeadulthood.wordpress.com/the-direct3d-graphics-pipeline/> Legalize Adulthood! <http://legalizeadulthood.wordpress.com>
Rich,
Try this:
Richest-FieldImage { ; time=0:03:40.66-SF5 on P4-2000
I did a "make install" from my source directory (patch 10) to put the executable in /usr/bin. Moved to a different directory, then did "par_name=Richest-FieldImage", followed by: xfractint -disk -geometry 800x600 batch=yes savename=tmp001.gif \ "@example.par/$par_name" This generated the same image as obtained when running xfractint interactively and as shown on the FOTD web site. Patch 9 is clearly broken and doesn't generate any images from par files. You may be using an early version of patch 10 and I have made some additional change that fixes the problem you are seeing in the version you are using. If you *are* using the most current development source, then we'll need to try to figure out what the differences are between your system and mine. Jonathan
In article <1277257703.1848.18.camel@jonathan-desktop>, Jonathan Osuch <osuchj@avalon.net> writes:
Patch 9 is clearly broken and doesn't generate any images from par files. You may be using an early version of patch 10 and I have made some additional change that fixes the problem you are seeing in the version you are using.
It says 20.04.9 when I run it. The weird thing is, I took some PAR files that were failing from my cronjob run and ran them interactively and they seemed to work. I didn't exhaustively test everything that had previously failed in the cronjob. However, I note that so far, all the previously failing parsets are running properly now that I've added to my script to rename the parset to "tmp" before attempting to render the parset. Its been so long since I hooked up this xfractint on XMission's shell, that I don't recall exactly how I built it. If you like, I'll just post the next parset that fails in my cronjob. -- "The Direct3D Graphics Pipeline" -- DirectX 9 draft available for download <http://legalizeadulthood.wordpress.com/the-direct3d-graphics-pipeline/> Legalize Adulthood! <http://legalizeadulthood.wordpress.com>
In article <E1ORFZi-00087Q-Ci@shell.xmission.com>, Richard <legalize@xmission.com> writes:
Its been so long since I hooked up this xfractint on XMission's shell, that I don't recall exactly how I built it.
Looks like I did a checkout from SVN into a build area and then did a make install into my personal account area. I'll pay attention to the next one that fails and post the parset here and see if you can make it fail on your current source. -- "The Direct3D Graphics Pipeline" -- DirectX 9 draft available for download <http://legalizeadulthood.wordpress.com/the-direct3d-graphics-pipeline/> Legalize Adulthood! <http://legalizeadulthood.wordpress.com>
Here's two pars that failed; do they succeed for you? ; Date: Fri, 13 Jun 2008 21:29:53 -0400 ; ; To: fractint@mailman.xmission.com ; cc: philofractal@lists.fractalus.com ; ; From: Jim Muth <jamth@mindspring.com> ; Reply-To: Fractint and General Fractals Discussion ; <fractint@mailman.xmission.com> ; ; Subject: [Fractint] FOTD 14-06-08 (The Bug-Eyed Tree [6]) ; ; Id: <1.5.4.16.20080613212950.2ac71228@pop.mindspring.com> ; --------- ; ; FOTD -- June 14, 2008 (Rating 6) ; ; Fractal visionaries and enthusiasts: ; ; Today's strange image shows a kilroy-like alien head peering ; over the bottom of the frame. The top part of the image shows ; fractal stuff on the way to becoming a fractal tree. Combining ; both, I named the image "The Bug-Eyed Tree". ; ; The image is actually a near-Julia set of the (-Z)^sqrt(2)+C ; Julibrot. Actually, the slice is oriented 0.02 degree from the ; Julia direction toward the Oblate direction. This tiny rotation ; is quite important. To see how important, change the real (p1) ; parameter to 90 and do a thumbnail fractal. ; ; I rated the image at a 6. I have seen a few too many of this ; type of image to rate it any higher. ; ; The calculation time of under 3-1/2 minutes is rational, for all ; this is worth. ; ; The finished GIF image is available on the FOTD web site at: ; ; <http://home.att.net/~Paul.N.Lee/FotD/FotD.html> ; ; Heat, haze and humidity moved back into the Fractal Central area ; on Friday. As the temperature reached 88F 31C, the fractal cats ; sought the cool air vent. ; ; My day was acceptable; the fractal, a bit goofy. The next ; fractal, goofy or not, will be posted in 24 hours. Until then, ; take care, and why must all space aliens have bug-eyes? ; ; ; Jim Muth ; jamth@mindspring.com ; jimmuth@aol.com ; ; ; START PARAMETER FILE======================================= The_Bug-Eyed_Tree { ; time=0:03:28.90-SF5 on P4-2000 reset=2004 type=formula formulafile=allinone.frm formulaname=SliceJulibrot5 passes=t float=y center-mag=0.190223/0/15.24794/0.8869/90/0 params=89.98/90/90/90/-1.124575/0/0/0/1.4142/0 maxiter=3600 inside=0 logmap=20 periodicity=10 colors=000KKVKKUKKTJKSIKRHKQGKPFKOEKNDKMCKLBKKAKI9\ KG8KE5KA2K73K93KB3KC3KE4KG4KH4KJ2KG4KK6KO7LS9LVBLZ\ CLbELfEHlFJjFLiFNhFPgFRfFTeFVcFVbFVaFT`FR_FQbFO`FM\ ZAKY6KW2IV4JT6KS8LRAMQCNPEOOGPNIQMKRLMSKOTGNSJNRMN\ QONPRNOTNNWNMYML`MKcMJeMIhMHjMGmGEkJFmMGoPHpSIrVJs\ SLqQMpNNnLOmIPkGQjERiBSg9Tf6Ud4Vc2Wb5Uc7ScARdCPdFN\ eHMeKKeMIfPHfRFgUDgWCgWBfWBfWBeWBeWBdWAdWAcWAcWAbW\ AbW9aW9aW9`W9`W9`NRbEgd6xfAq8Do9GmAJkBLjCOhDRfETeF\ WcGZaH``IcZJfXKhWLkUMnSNoLOpROpXOqaOqgOeOmtkMqlOol\ QmlSklUimWgmYem_bma`mcZneXngVniTnkPuvQqqRnlSjhSgcT\ c_UcVVcRVcMWcIXcDZc9`c6bb6dc6fd6gf6gg6gh6hj6hk6hl6\ in6io6ip6ns7io6di6`a5WU5PC1RI3SL5TP7VU8WYAXbCZhD_n\ F`uH_wWazKenPldUhcZdbc`ahcamf`ri_wlVzmXzn_znazoczp\ fzpizqkzrnzrpzuuzvwzzzztvzsszqovokrnhmmehmcdlbblb`\ kb_kaYjaWjaVj`Ti`Ri`Qh_Oh_MlYHjZJh_Lf`NdaPbbR`cSZd\ UXeWVfYTg_RhazYxgcmPhb3pR } frm:SliceJulibrot5 {; draws slices of (-Z)^n Julibrot pix=pixel, u=real(pix), v=imag(pix), a=pi*real(p1*0.0055555555555556), b=pi*imag(p1*0.0055555555555556), g=pi*real(p2*0.0055555555555556), d=pi*imag(p2*0.0055555555555556), ca=cos(a), cb=cos(b), sb=sin(b), cg=cos(g), sg=sin(g), cd=cos(d), sd=sin(d), p=u*cg*cd-v*(ca*sb*sg*cd+ca*cb*sd), q=u*cg*sd+v*(ca*cb*cd-ca*sb*sg*sd), r=u*sg+v*ca*sb*cg, s=v*sin(a), c=p+flip(q)+p3, z=r+flip(s)+p4: z=(-z)^(p5)+c |z|<=9 } ; END PARAMETER FILE========================================= ; ; ; _______________________________________________ ; Fractint mailing list ; Fractint@mailman.xmission.com ; http://mailman.xmission.com/cgi-bin/mailman/listinfo/fractint ; Date: Fri, 11 Jul 2008 23:15:41 EDT ; ; To: fractint@mailman.xmission.com ; ; From: JimMuth@aol.com ; Reply-To: Fractint and General Fractals Discussion ; <fractint@mailman.xmission.com> ; ; Subject: [Fractint] FOTD 12-07-08 (The Higher Glory [8]) ; ; Id: <cc0.3a277760.35a97bdd@aol.com> ; --------- ; ; FOTD -- July 12, 2008 (Rating 8) ; ; Fractal visionaries and enthusiasts: ; ; Today's image will be the last in the DivideBrot series for a ; while. We must tear ourselves from this most interesting ; formula to explore other more distant realms. But the farewell ; image is one of the best. ; ; The image lies in the vestigial East Valley of the remnants of ; the large minibrot on the main spike of its parent fractal, ; which at the deeper levels is filled with order-9 minibrots. ; ; At this particular fractal spot, the minibrots come in spidery ; clusters, one of which is well illustrated in today's image. ; ; I rated the image at an 8 and named it "The Higher Glory". It's ; a very fast image, calculating in a mere 48 seconds. And even ; this brief time may be saved by visiting the FOTD web site at: ; ; <http://home.att.net/~Paul.N.Lee/FotD/FotD.html> ; ; and viewing the finished image there. ; ; Friday proved to be an average day in every respect here at ; Fractal Central. The fractal duo agreed. Once I cleared away ; the unexpected work, the fractal proved better than I expected. ; Tomorrow's image could be even better yet. Until then, take ; care, and we have been misled! A mirror does not reverse left ; and right. It reverses forward and backward. Check it and see. ; ; ; Jim Muth ; jamth@mindspring.com ; jimmuth@aol.com ; ; ; START PARAMETER FILE======================================= The_Higher_Glory { ; time=0:00:48.00-SF5 on P4-2000 reset=2004 type=formula formulafile=allinone.frm formulaname=DivideBrot5 center-mag=-15.66879402978\ 438/-0.00000687152373757/6e+007 params=9/9 float=y maxiter=1800 inside=0 logmap=67 periodicity=10 colors=000AQ0CR0ES0GT0IU0KV0NW0QX0T_0Wb0Ze0ah0dj0g\ lAjoKmrUrucvvmzzzzzzzwzzwmzwUfkOgjRhhVigYje`jdcgfb\ ehbcjbakb_mbYobWpbUrbStbQubTseWqgYoj`mlcloejqhhtkf\ vmexocupbsr`ps_ntYlvXiwVgxUetSbqR_nQYkPVhOSeMQbLN_\ KLXJIUIFRGDOFALE7ID5FC2CB0J97P8EV6K`5Rg4Ym2cs1jy0p\ w4nv8luBktFirIhqMfpPeoTcmXal_`kcZjfYhjWgmVfqTetSau\ QZvPWvOTwMQwLzxKzxIzyHzyGzuKzqOMmSPjWRf_UbcX_gZWka\ SocPszxN_tRzpVzlYfiazeekahnYlpVooUnoTnnSnnRnmQnmQn\ mPmlOmlNmkMmkLmkLmlKlmKknJjoJipIhqIgrHgsHftGeuGdvF\ cwFbwFbrI`mK_hMZcPYZRXUTWPWVKYUF_TAaSCbUDbVFbWGbXH\ bYJb_KbaLbcNbeObgPbiUXkYSmbNofIqdKsbMu`Ow_QxYmyWmz\ VWzTYzR_zQazOczMezLmzMmzMmzMmzNmzNmzNmzNmzOmzOmzO_\ zOZzPZzPYzPXzPmzQmzRmzSmzSmzTmzUmzUmzVVzWUzWUzXUzY\ UzYUzNLzDDzGFzIGzKIzMJzOKzRMzTNzVPzXQzZRzaTzcUzeWz\ gXziYzbgzXqz`czdRzhEzk1zd0zY0zR0zK0zD0z60z79z7Iz7R\ z6Qz6Pz5Oz5Nz5Mz4Lz4Kz4Jz } frm:DivideBrot5 { ; Jim Muth z=0, c=pixel, a=real(p1)-2, b=imag(p1)+0.00000000000000000001: z=sqr(z)/(z^(-a)+b)+c |z| < 1000000 } ; END PARAMETER FILE========================================= ; ; _______________________________________________ ; Fractint mailing list ; Fractint@mailman.xmission.com ; http://mailman.xmission.com/cgi-bin/mailman/listinfo/fractint -- "The Direct3D Graphics Pipeline" -- DirectX 9 draft available for download <http://legalizeadulthood.wordpress.com/the-direct3d-graphics-pipeline/> Legalize Adulthood! <http://legalizeadulthood.wordpress.com>
Hrm. OK, there's one more thing that my script does that is different from running it interactively. In a cron job, I don't want fractint outputting all the status updates "Writing line 1", etc., so I close stdin, stdout and stderr using sh(1) notation: bin/xfractint -disk -geometry ${render_width}x${render_height} \ batch=yes savename=tmp.gif "@tmp.par/tmp" >&- 1>&- <&- When I attempt to render The_Bug-Eyed_Tree with stdin closed, it fails right away with exit status 2, regardless of the parameter set name ("The_Bug-Eyed_Tree" or "tmp"). For some reason, this particular parameter set needs stdin to stay open while it renders. I've rendered hundreds of parameter sets with stdin closed, so I don't know what's particular about these particular parsets that needs stdin open in order to function. Hope that helps. -- "The Direct3D Graphics Pipeline" -- DirectX 9 draft available for download <http://legalizeadulthood.wordpress.com/the-direct3d-graphics-pipeline/> Legalize Adulthood! <http://legalizeadulthood.wordpress.com>
Rich,
Hrm. OK, there's one more thing that my script does that is different from running it interactively. In a cron job, I don't want fractint outputting all the status updates "Writing line 1", etc., so I close stdin, stdout and stderr using sh(1) notation:
bin/xfractint -disk -geometry ${render_width}x${render_height} \ batch=yes savename=tmp.gif "@tmp.par/tmp" >&- 1>&- <&-
When I attempt to render The_Bug-Eyed_Tree with stdin closed, it fails right away with exit status 2, regardless of the parameter set name ("The_Bug-Eyed_Tree" or "tmp").
Okay, that helps. Running an sh shell and using the above redirection, I also get an immediate exit of xfractint. You should have a file named stopmsg.txt in your working directory. This file gives a clue about what is happening. When you run xfractint in batch mode, you'll notice that if you press a key other than <TAB> or <F1>, you immediately exit. This appears to be what is happening. The <&- redirection is somehow passing keystrokes back to xfractint. I'll look into why the keystrokes aren't just ignored in batch mode. I would expect <TAB>, <F1>, and <ESC> (then <Y>) to be functional, but nothing else. Jonathan
Rich,
bin/xfractint -disk -geometry ${render_width}x${render_height} \ batch=yes savename=tmp.gif "@tmp.par/tmp" >&- 1>&- <&-
Does using the following do what you want in terms of closing stdout, stderr, and stdin? 1>&1 2>&2 0<&0 Doing it this way doesn't cause Xfractint to exit prematurely. Jonathan
Rich,
For some reason, this particular parameter set needs stdin to stay open while it renders. I've rendered hundreds of parameter sets with stdin closed, so I don't know what's particular about these particular parsets that needs stdin open in order to function.
For some reason when using the sh shell on my system, even the following does not work: xfractint -disk -geometry 800x600 batch=yes savename=tmp001.gif \ type=phoenix >&- 2>&- <&- But, remove the <&-, and all is fine. Jonathan
In article <1278176789.1841.13.camel@jonathan-desktop>, Jonathan Osuch <osuchj@avalon.net> writes:
For some reason when using the sh shell on my system, even the following does not work:
xfractint -disk -geometry 800x600 batch=yes savename=tmp001.gif \ type=phoenix >&- 2>&- <&-
But, remove the <&-, and all is fine.
Yes, this is consistent with my experience. When I remove the <&- (don't close stdin), it works, but I get all the curses output (escape codes), even though I have closed stderr and stdout. If I close stdin, then I don't get the escape codes, but some parfiles don't work and exit immediately. -- "The Direct3D Graphics Pipeline" -- DirectX 9 draft available for download <http://legalizeadulthood.wordpress.com/the-direct3d-graphics-pipeline/> Legalize Adulthood! <http://legalizeadulthood.wordpress.com>
Rich,
Yes, this is consistent with my experience. When I remove the <&- (don't close stdin), it works, but I get all the curses output (escape codes), even though I have closed stderr and stdout.
If I close stdin, then I don't get the escape codes, but some parfiles don't work and exit immediately.
I've committed a minor change to HEAD that fixes the problem on my machine. In unixscr.c on line 1492, I changed #if 1 to #if 0. I can't remember why this was even here. Give it a try, and let me know if it fixes the problem for you. Thanks. Jonathan
In article <1278257104.1727.2.camel@jonathan-desktop>, Jonathan Osuch <osuchj@avalon.net> writes:
In unixscr.c on line 1492, I changed #if 1 to #if 0.
Is that this block of code? int xgetkey(block) int block; { static int skipcount = 0; int ch; fd_set reads; int status; static struct timeval tout; tout.tv_sec = 0; tout.tv_usec = 500000; while (1) { #if 1 if (input_pending()) { ch = getachar(); if (ch == ESC) { return handleesc(); } else { return translatekey(ch); } } #endif /* ... */ } -- "The Direct3D Graphics Pipeline" -- DirectX 9 draft available for download <http://legalizeadulthood.wordpress.com/the-direct3d-graphics-pipeline/> Legalize Adulthood! <http://legalizeadulthood.wordpress.com>
Rich, Yes, it is. Jonathan
Is that this block of code?
int xgetkey(block) int block; { static int skipcount = 0; int ch; fd_set reads; int status; static struct timeval tout; tout.tv_sec = 0; tout.tv_usec = 500000; while (1) { #if 1 if (input_pending()) { ch = getachar(); if (ch == ESC) { return handleesc(); } else { return translatekey(ch); } } #endif /* ... */ }
participants (3)
-
Jonathan Osuch -
osuchj@avalon.net -
Richard