On Sat, Jan 5, 2019 at 4:53 PM Gil Barmwater <gbarmwa...@alum.rpi.edu>
wrote:

> Not being a *ix guy, wouldn't the env. var. REXX_HOME give you the path to
> all of the executables?
>

There has never been a REXX_HOME environment variable.

Rick

> On 1/5/2019 9:17 AM, Rick McGuire wrote:
>
> Actually, the path we really need is the location of librexxapi. It looks
> like dladdr1() might give me the information I want, The main process
> executable might be an app that is just linked to the interpreter (for
> example bsfoorexx used from java).
>
> http://man7.org/linux/man-pages/man3/dladdr.3.html
>
> But I don't know how portable it is or whether there are alternatives for
> the other platforms. The post that referenced this included all sorts of
> complications such as links that might be problematic.
>
> Rick
>
> On Sat, Jan 5, 2019 at 7:25 AM Enrico Sorichetti via Oorexx-devel <
> oorexx-devel@lists.sourceforge.net> wrote:
>
>> here are three snippets that show how to do it
>>
>> APPLE
>>
>> #include <stdio.h>
>> #include <string.h>
>> #include <stdlib.h>
>> #include <unistd.h>
>>
>> #include <libproc.h>
>>
>>
>> int main()
>> {
>>     pid_t pid;
>>
>>     char path[1024];
>>
>>     int RC;
>>     char *cp;
>>
>>     pid = getpid();
>>     RC  = proc_pidpath (pid, path, sizeof(path));
>>     if ( RC <= 0 )
>>     {
>>         exit(-1);
>>     }
>>     else
>>     {
>>         cp = strrchr(path,'/');
>>         *cp=0;
>>         printf("path '%s'\n",path ) ;
>>         exit(0);
>>     }
>>     exit(-1);
>> }
>>
>> Freebsd
>> /*  FreeBSD
>> */
>> #include <stdio.h>
>> #include <unistd.h>
>>
>> int main()
>> {
>> char path[1024];
>> int  size;
>>
>>     size = readlink( "/proc/curproc/file", path, sizeof(path)-1);
>>
>>     path[size] = '\0';
>>
>>     printf("***** '%s'\n", path );
>>
>>     return(0);
>> }
>>
>> linux
>>
>> #include <stdio.h>
>> #include <unistd.h>
>>
>> int main()
>> {
>> char path[1024];
>> int  size;
>>
>>     size = readlink( "/proc/self/exe", path, sizeof(path)-1);
>>
>>     path[size] = '\0';
>>
>>     printf("***** '%s'\n", path );
>>
>>     return(0);
>> }
>>
>> enrico
>>
>>
>> On 5 Jan 2019, at 13:07, Rick McGuire <object.r...@gmail.com> wrote:
>>
>> My understanding on unix systems is that it is not possible determine the
>> location of the binary. Please correct me if I'm wrong on this point, but
>> David Ashley was quite insistent that it was not possible
>>
>>
>> _______________________________________________
>> Oorexx-devel mailing list
>> Oorexx-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/oorexx-devel
>>
>
>
> _______________________________________________
> Oorexx-devel mailing 
> listOorexx-devel@lists.sourceforge.nethttps://lists.sourceforge.net/lists/listinfo/oorexx-devel
>
> --
> Gil Barmwater
>
> _______________________________________________
> Oorexx-devel mailing list
> Oorexx-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/oorexx-devel
>
_______________________________________________
Oorexx-devel mailing list
Oorexx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-devel

Reply via email to