TeXtoIDL fix for IDL 5.3 [message #18935] |
Thu, 17 February 2000 00:00  |
Randall Smith
Messages: 4 Registered: November 1998
|
Junior Member |
|
|
We just upgraded to IDL 5.3 here, which broke that most useful of all
IDL user-written routines: TeXtoIDL.
(ftp://coma.berkeley.edu/pub/mcraig/idl/TeXtoIDL/)
I believe when it was first announced, one grateful user offered the
author (Matt Craig) his first-born.
Anyway, it turns out that RSI, in a fit of what can only be described
as morally degenerate programming, added a new function (strtok) to
the language, although they _didn't_ see fit to document this (it's
apparently part of the new string routines stregex, strjoin, strmatch,
and strsplit that are in IDL 5.3). Of course, the TeXtoIDL routine
has its OWN strtok, which is then not called because of this name
clash. The error, of course, doesn't show up anywhere near the strtok
call, but rather as a type conflict since the two versions of strtok
return immiscible results. (Note to RSI: Would it REALLY be that
difficult to make all non-documented routines start with, say, "RSI_",
so that we poor users could easily avoid them? And, while we're at
it, all internal common blocks as well?)
In any event, the fix is to change all references (including the
declaration) of "strtok" in the TeXtoIDL package to a unique name,
such as t2i_strtok. After this, all is well with the world.
Randall Smith
Smithsonian Astrophysical Observatory
|
|
|
Re: TeXtoIDL fix for IDL 5.3 [message #19025 is a reply to message #18935] |
Fri, 18 February 2000 00:00  |
marc schellens[1]
Messages: 183 Registered: January 2000
|
Senior Member |
|
|
William Thompson wrote:
>
> "Mark Hadfield" <m.hadfield@niwa.cri.nz> writes:
>
>> Randall Smith <rsmith@kracko.harvard.edu> wrote in message
>> news:owemabj2db.fsf@kracko.harvard.edu...
>>>
>>>
>>>
>>> Anyway, it turns out that RSI, in a fit of what can only be described
>>> as morally degenerate programming, added a new function (strtok) to
>>> the language, although they _didn't_ see fit to document this (it's
>>> apparently part of the new string routines stregex, strjoin, strmatch,
>>> and strsplit that are in IDL 5.3).
>
>> It's even more irritatingly trivial than that. They added strtok, then
>> decided to call it strsplit, but instead of renaming it they wrote strsplit
>> as a wrapper. Strsplit's code, in its entirety, is:
>
>> function strsplit, string, pattern, _ref_extra=extra
>
>> if (n_params() eq 1) then return, strtok(string, _extra=extra) $
>> else return, strtok(string, pattern, _extra=extra)
>
>> end
>
> That's because people complained that there was already a long-standing routine
> in the IDL Astronomy Library called strsplit, so RSI renamed it strtok.
> However, because they had already advertised that they were adding strsplit,
> they provided this wrapper. Now people are complaining about strtok. I guess
> you just can't win. ;^)
>
> William Thompson
I think the problem here is, that they didn't document it.
Greetings,
:-) marc
|
|
|