| Bill Allombert on Sun, 05 Aug 2012 12:20:42 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: Patch: default(sopath), default(outputsp[aces]) |
On Sun, Aug 05, 2012 at 02:15:10AM +0200, Karim Belabas wrote:
> I finally found time to go back to this patch proposed by Gonzalo Tornaria
> more than 8 years ago:
>
> <http://pari.math.u-bordeaux1.fr/archives/pari-dev-0401/msg00028.html>
>
> ( Sorry it took so looong: so much to do, so little time :-( )
>
> This one is not implemented as a defaut, but via the new function printsep(),
> suggested by Don Zagier:
>
> (01:14) gp > ??printsep
> printsep(sep,{str}*):
>
> Outputs its (string) arguments in raw format, ending with a newline.
Currently it does not end by a newline.
? printsep(":", 1,2,3,4);print("e")
1:2:3:4e
> > 2) default(sopath):
> >
> > similar to default(path), but for dynamic libraries loaded with
> > install(). The bulk of it is a function sd_sopath() [almost copied from
> > sd_path()], and gp_dlopen(), a wrapper for dlopen(). Note that if
> > default(sopath) is not set, gp_dlopen() defaults to the old dlopen().
>
> Done.
>
> I simplifed a bit the logic by refactoring:
>
> - sd_path / sd_sopath are now subsumed in a generic routine meant to
> handle an arbitrary gp_path structures [ path and sopath for now ].
>
> - deciding whether we use the 'path' mechanism for a given file name is
> handled by path_is_absolute()
>
> - trying out all possible paths is now done through a simple iterator,
> removing explicit allocation / concatenation from the involved routines
> ( gp_dlopen(), gp_LoadLibrary(), switchin() )
>
> > Note also that I allow the special path ":" to stand for "" (meaning:
> > revert back to the old behaviour), since there is no way to set a
> > default to an empty value!!! (since the argument "" is used to retrieve
> > the value of the default)
>
> This is no longer true, we now use NULL instead of "". So no need
> to make the value special.
>
> > I've only done it for dlopen(), but a similar wrapper should work for
> > win32 LoadLibrary().
>
> I have implemented such a wrapper, but have no way to test it. (My last
> Windows system died 2 or 3 years ago.) Hopefully it works...
It does not seems to build with mingw:
i686-w64-mingw32-gcc -c -I. -I../src/headers -O3 -Wall -fno-strict-aliasing -o plotWin32.o ../src/graph/plotWin32.c
../src/gp/highlvl.c: In function 'gp_LoadLibrary':
../src/gp/highlvl.c:103:5: warning: implicit declaration of function 'try_LoadLibrary' [-Wimplicit-function-declaration]
../src/gp/highlvl.c:103:5: warning: return makes pointer from integer without a cast [enabled by default]
../src/gp/highlvl.c:110:20: warning: assignment makes pointer from integer without a cast [enabled by default]
...
highlvl.o:highlvl.c:(.text+0x51): undefined reference to `_try_LoadLibrary'
Cheers,
Bill.