[PD-dev] Getting path of external

Hans-Christoph Steiner hans at at.or.at
Thu Apr 18 02:52:05 CEST 2013


I think you want c_externdir, i.e.

rest_class->c_externdir->s_name,

That's the directory that the external was loaded from.  You'll need to
#include "m_imp.h".  See externals/hcs/cursor.c for an example.

.hc

On 04/17/2013 03:58 PM, Thomas Mayer wrote:
> Hi,
> 
> for PuREST JSON on Windows, I need a way to verify SSL signatures,
> because currently this is not working. One way to accomplish that, is
> setting the path to the certificate file. As I want to package the file
> with the zip, I would like to store it in the same directory as the dll
> for the externals.
> 
> I have two externals [rest] and [oauth] that share all the code for
> libcurl, threading etc. (via a struct), so in the function where I need
> to set the path to the certificate file, I need to get the path of the
> dll to set the certificate store correctly.
> 
> Both classes are created by functions like:
> 
> rest_class = class_new(gensym("rest"), (t_newmethod)rest_new,
> 	(t_method)rest_free, sizeof(t_rest), 0,
> 	A_GIMME, 0);
> 
> and
> 
> t_rest *x = (t_rest *)pd_new(rest_class);
> 
> Now, I need a way to get the value "rest" from this *x, for this:
> 
> static void *ctw_exec_req(void *thread_args) {
> 	struct _ctw *common = thread_args;
> 
> 	/* more declarations */
> 
> #ifdef _WIN32
> 	/* Workaround for loading certificates on Windows */
> 	char path[2048];
> 	/* This will output the path to pd.exe */
> 	GetModuleFileName(NULL, path, 2048);
> 	post("dll path: %s", path);
> 	/* This will output the path to rest.dll, how do I get "rest"
> 	from *thread_args */
> 	GetModuleFileName(GetModuleHandle("rest"), path, 2048);
> 	post("dll path: %s", path);
> #endif
> 
> 	/* all the rest to execute request via curl */
> }
> 
> 
> Thanks in advance,
> Thomas
> 



More information about the Pd-dev mailing list