OS X Externals

Frank D. Engel, Jr. fde101 at fjrhome.net
Wed Oct 13 10:49:07 EDT 2004


Aha!  Got it built and working.  It had something to do with the prefix 
header, whatever that is.

However, I now have a slightly different question.  Since one of these 
functions returns a string with binary image data, that string may 
contain null bytes -- not a problem for Rev, but as far as I can tell, 
the return value from an external function call is null-terminated.  
How can I return a string value from an external function and include 
embedded null characters in the string?

Thank you!

On Oct 13, 2004, at 9:22 AM, Frank D. Engel, Jr. wrote:

> I don't mind copying it when built; it should not need to be redone 
> too often after I have it working; there are two functions which I 
> translated to C from Transcript in order to improve performance (they 
> are quite slow under Transcript, since they need to look at each byte 
> in the text of an image).
>
> Toward the beginning of the C source code, I placed this line:
>
> char Xname[] = "PostgreSQL BLOB encoding functions external v0.0";
>
> (I previously posted the Transcript versions of the functions)
>
> At the end of external.c, I placed this code:
>
> Xternal Xtable[] = {
>     {"dbblob", XFUNCTION, 0, dbBLOB, dbabort},
> 	{"dbunblob", XFUNCTION, 0, dbUNBLOB, dbabort},
> 	{"", XNONE, 0, NULL, NULL}
> };
>
>
> Note that the 'dbabort' function simply contains an fprintf function 
> call (outputs to stderr).
>
> What else would be needed to get this working?  I created an Xcode 
> project using the "Carbon Bundle" template, and did simple changes to 
> get the project to build with the following files listed when the 
> project icon is selected in the left-hand pane:
>
> bytea-funcs.bundle (the target)
> Carbon.framework (from OS X)
> external.c (my code)
> InfoPList.strings (provided by Xcode, then modified)
> XCmdGlue.c (from the SDK)
> XCmdGlue.h (from the SDK)
> XCmdName.h (from the SDK)
>
> I also have XCmdFunc.c (from the SDK) copied into the project 
> directory.
>
> Toward the end of XCmdGlue.c, there was a line:
>
> #include "XCmdFunc.c"
>
> I commented that line out because I could not get the project to build 
> otherwise.  After commenting out that line, the project now builds 
> without errors or warnings, but does not work.  Could this be related 
> to the problem, and if so, how can I get the project to build with the 
> line uncommented?  My own code does not call any of the functions 
> provided by the engine; I tried to keep it as simple as I could.
>
> On Oct 13, 2004, at 9:04 AM, Thierry Arbellot wrote:
>
>> OK
>>
>> If you don't want to copy the bundle every-time you rebuild it, use 
>> the full path to the folder where XCode build the bundle.
>> And each time you rebuild the bundle, you should close the stack, 
>> remove it from memory then reopen it.
>>
>> Another thing to check: have you add the 2 functions in the Xtable 
>> array declared in the external.c source file ?
>>
>> On Wednesday, Oct 13, 2004, at 14:40 Europe/Paris, Frank D. Engel, 
>> Jr. wrote:
>>
>>> No, just the name.  However, I have now tried using the EnhancedQT 
>>> external, just to see how that one worked (place it where in order 
>>> for it to work), and placing it in the Rev folder causes it to work, 
>>> even w/o the full path in "the externals of this stack", and the 
>>> externalFunctions does return a list of functions.
>>>
>>> I placed my external in the same place, but have an empty list of 
>>> externalFunctions.  Apparently something is wrong, either in my C 
>>> source code, or in the build process.
>>>
>>> On Oct 13, 2004, at 5:10 AM, Thierry Arbellot wrote:
>>>
>>>>
>>>> On Tuesday, Oct 12, 2004, at 23:44 Europe/Paris, Frank D. Engel, 
>>>> Jr. wrote:
>>>>
>>>>> I am trying to build an external for OS X (which I will eventually 
>>>>> need to get working under Windows as well).  There should be no 
>>>>> outside dependencies from the external itself, other than the 
>>>>> standard libc.  The external contains two functions.
>>>>>
>>>>> I tried various things, and finally ended up with a .bundle file, 
>>>>> courtesy of XCode.  I tried several different placements of the 
>>>>> file, and have the name of the bundle in the externals property of 
>>>>> my main stack, but using 'answer the externalFunctions of this 
>>>>> stack' from the msgbox always results in an empty message box 
>>>>> (just the ever-present OK button).
>>>>>
>>>>> I cannot tell if Rev is not finding my external, if my external 
>>>>> was not built correctly (found but considered corrupt and silently 
>>>>> ignored), or if it is somehow being considered an 'empty' external 
>>>>> (a valid external with no functions).
>>>>>
>>>>> Could anyone help me to debug this problem?  Thank you!
>>>>>
>>>>> -----------------------------------------------------------
>>>>> Frank D. Engel, Jr.  <fde101 at fjrhome.net>
>>>>>
>>>>
>>>> Frank,
>>>>
>>>> Have you set the full path to the bundle in the externals property 
>>>> of the main stack ?
>>>>
>>>> Thierry
>>>>
>>>> _______________________________________________
>>>> use-revolution mailing list
>>>> use-revolution at lists.runrev.com
>>>> http://lists.runrev.com/mailman/listinfo/use-revolution
>>>>
>>>>
>>> -----------------------------------------------------------
>>> Frank D. Engel, Jr.  <fde101 at fjrhome.net>
>>>
>>> $ ln -s /usr/share/kjvbible /usr/manual
>>> $ true | cat /usr/manual | grep "John 3:16"
>>> John 3:16 For God so loved the world, that he gave his only begotten 
>>> Son, that whosoever believeth in him should not perish, but have 
>>> everlasting life.
>>> $
>>>
>>>
>>>
>>> ___________________________________________________________
>>> $0 Web Hosting with up to 120MB web space, 1000 MB Transfer
>>> 10 Personalized POP and Web E-mail Accounts, and much more.
>>> Signup at www.doteasy.com
>>>
>>> _______________________________________________
>>> use-revolution mailing list
>>> use-revolution at lists.runrev.com
>>> http://lists.runrev.com/mailman/listinfo/use-revolution
>>>
>>
>> _______________________________________________
>> use-revolution mailing list
>> use-revolution at lists.runrev.com
>> http://lists.runrev.com/mailman/listinfo/use-revolution
>>
>>
> -----------------------------------------------------------
> Frank D. Engel, Jr.  <fde101 at fjrhome.net>
>
> $ ln -s /usr/share/kjvbible /usr/manual
> $ true | cat /usr/manual | grep "John 3:16"
> John 3:16 For God so loved the world, that he gave his only begotten 
> Son, that whosoever believeth in him should not perish, but have 
> everlasting life.
> $
> _______________________________________________
> use-revolution mailing list
> use-revolution at lists.runrev.com
> http://lists.runrev.com/mailman/listinfo/use-revolution
>
>
-----------------------------------------------------------
Frank D. Engel, Jr.  <fde101 at fjrhome.net>

$ ln -s /usr/share/kjvbible /usr/manual
$ true | cat /usr/manual | grep "John 3:16"
John 3:16 For God so loved the world, that he gave his only begotten 
Son, that whosoever believeth in him should not perish, but have 
everlasting life.
$



___________________________________________________________
$0 Web Hosting with up to 120MB web space, 1000 MB Transfer
10 Personalized POP and Web E-mail Accounts, and much more.
Signup at www.doteasy.com



More information about the use-livecode mailing list