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