This is the mail archive of the cygwin@sourceware.cygnus.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: How to import DLL functions?


"Jon Trauntvein" <jon@campbellsci.com> writes:

>I am trying to build an application using g++ that calls functions from a
>DLL generated with Visual C++.  I have tried using the following type of
>declaration only to have the compiler complain about the syntax:
>
>   void __declspec(dllimport) __stdcall foo();
>
>After scanning through the Microsoft documentation, I have learned that the
>dllimport spec is a Microsoft specific extension. The question that I have
>is, what is the appropriate extension to use with the GNU compiler?

For gcc, currently you don't need to use anything special like
__declspec(dllimport) in the source code.  Instead, you need to
create an import library (lib<foo>.a) for your DLL.  See the
message below.

------------------------------

From: Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
Cc: "'GNU-Win32'" <gnu-win32@cygnus.com>
Subject: RE: Making cygnus-win32 libraries from DLLs
Date: Thu, 28 Aug 1997 11:48:55 +0900
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="---- =_NextPart_000_01BCB3A8.5EF62AC0"


------ =_NextPart_000_01BCB3A8.5EF62AC0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Chris Kirgios[SMTP:ckirgios@ajboggs.com] wrote:
>I have a similar problem  with Minh Le Cong to whom you replied in the =
cygnus mailing list. I have ported all my C++ code from Solaris to =
Windows NT with the exception of a library that uses Oracle Pro*C/C++ =
(embedded SQL). Modules that link with this library must link with an =
Oracle dll. Question: How do I link my g++ linked code with that =
library/dll?=20
>
>I am an NT 'ignorant' so I appreciate all the help and input I can get.

I have heard a few people ask this question, so I dug around a bit in my
files and found out that the program best suited for this is not really
dumpexts (that works with object files) but one posted by Ismael Jurado
<ismaelj@hotmail.com> way back in April called impdef. I've included the
source code and will put up the source and exe on my web site shortly.
This program compiles and works on my system with no modifications =
(since
it includes the missing info from the winnt.h header than dumpexts does
not).

Anyway, here's how it works.

Assuming you have a .dll and the appropriate .h files (you don't =
actually
need the .lib at all) run impdef on the .dll:

  impdef foo.dll >foo.def

Then run foo.def through dlltool to get a libfoo.a file:

  dlltool --dllname foo.dll --def foo.def --output-lib libfoo.a -k

NOTE: Don't let the --dllname argument fool you. Dlltool does NOT look
for any file called foo.dll and definitely does NOT extract the exports
and create the right library for them. You need impdef. The dllname is
just the name that is put into the library to mark what file should be
loaded to resolve the imports (don't put a path name in here, just the
basic file name).

Compile your code including the .h files and linking with the libfoo.a
library. Your code, upon execution, will search for foo.dll and resolve
the references to the functions within it (if all goes well).

That's it, good luck.

Colin.

PS. Apologies to earlier inquirers, including Minh Le Cong, who were
told that dumpexts didn't do the job I thought it would. It doesn't,
but impdef does.

=20
-- Colin Peters - Saga Univ. Dept. of Information Science
-- colin@bird.fu.is.saga-u.ac.jp - finger for PGP public key
-- http://www.fu.is.saga-u.ac.jp/~colin/index.html
-- http://www.geocities.com/Tokyo/Towers/6162/

------ =_NextPart_000_01BCB3A8.5EF62AC0
Content-Type: application/octet-stream; name="impdef.cpp"
Content-Transfer-Encoding: base64

Ly89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQovLyBUaGlzIGlzIGEgbW9kaWZp
Y2F0aW9uIG9mOg0KLy8gICBQRURVTVAgLSBNYXR0IFBpZXRyZWsgMTk5NQ0KLy8gZG9uZSBieSBJ
c21hZWwgSnVyYWRvIDE5OTcNCi8vDQovLyBUaGlzIHByb2dyYW0gb25seSBvdXRwdXRzIHRvIHN0
ZG91dCBhIERFRiBmaWxlIGZyb20gYSBETEwgZ2l2ZW4gaW4gdGhlDQovLyBjb21tYW5kIGxpbmUu
DQovLyBJIGRvbrR0IGtub3cgaG93IHRvIGNvbnRhY3QgTWF0dCwgc28gaWYgdGhpcyBwcm9ncmFt
IGlzIG5vdCBsZWdhbCwgcGxlYXNlDQovLyBsZXQgbWUga25vdy4NCi8vICAgIGlzbWFlbGpAaG90
bWFpbC5jb20NCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KDQojaW5jbHVk
ZSA8d2luZG93cy5oPg0KI2luY2x1ZGUgPHN0ZGlvLmg+DQoNCi8vIFRoaXMgY29kZSB3YXMgdGFr
ZW4gZnJvbSBXSU5OVC5ILCB3aGljaCBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIGN1cnJlbnQNCi8v
IEN5Z251cyBwb3J0Lg0KI2lmbmRlZiBfV0lOTlRfDQojZGVmaW5lIEZJRUxEX09GRlNFVCh0eXBl
LCBmaWVsZCkgICAgKChMT05HKSYoKCh0eXBlICopMCktPmZpZWxkKSkNCiNkZWZpbmUgSU1BR0Vf
RklSU1RfU0VDVElPTiggbnRoZWFkZXIgKSAoKFBJTUFHRV9TRUNUSU9OX0hFQURFUikgICAgICAg
IFwNCiAgICAoKERXT1JEKW50aGVhZGVyICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwNCiAgICAgRklFTERfT0ZGU0VUKCBJTUFHRV9OVF9IRUFERVJT
LCBPcHRpb25hbEhlYWRlciApICsgICAgICAgICAgICAgICAgIFwNCiAgICAgKChQSU1BR0VfTlRf
SEVBREVSUykobnRoZWFkZXIpKS0+RmlsZUhlYWRlci5TaXplT2ZPcHRpb25hbEhlYWRlciAgIFwN
CiAgICApKQ0KDQojZGVmaW5lIElNQUdFX1NJWkVPRl9TSE9SVF9OQU1FICAgICAgICAgICAgICA4
DQojZGVmaW5lIElNQUdFX0RJUkVDVE9SWV9FTlRSWV9FWFBPUlQgICAgICAgICAwICAgLy8gRXhw
b3J0IERpcmVjdG9yeQ0KI2RlZmluZSBJTUFHRV9OVU1CRVJPRl9ESVJFQ1RPUllfRU5UUklFUyAg
ICAxNg0KI2RlZmluZSBJTUFHRV9OVF9TSUdOQVRVUkUgICAgICAgICAgICAgICAgICAweDAwMDA0
NTUwICAvLyBQRTAwDQojZGVmaW5lIElNQUdFX0RPU19TSUdOQVRVUkUgICAgICAgICAgICAgICAg
IDB4NUE0RCAgICAgIC8vIE1aDQoNCnR5cGVkZWYgc3RydWN0IF9JTUFHRV9EQVRBX0RJUkVDVE9S
WSB7DQogICAgRFdPUkQgICBWaXJ0dWFsQWRkcmVzczsNCiAgICBEV09SRCAgIFNpemU7DQp9IElN
QUdFX0RBVEFfRElSRUNUT1JZLCAqUElNQUdFX0RBVEFfRElSRUNUT1JZOw0KDQp0eXBlZGVmIHN0
cnVjdCBfSU1BR0VfRklMRV9IRUFERVIgew0KICAgIFdPUkQgICAgTWFjaGluZTsNCiAgICBXT1JE
ICAgIE51bWJlck9mU2VjdGlvbnM7DQogICAgRFdPUkQgICBUaW1lRGF0ZVN0YW1wOw0KICAgIERX
T1JEICAgUG9pbnRlclRvU3ltYm9sVGFibGU7DQogICAgRFdPUkQgICBOdW1iZXJPZlN5bWJvbHM7
DQogICAgV09SRCAgICBTaXplT2ZPcHRpb25hbEhlYWRlcjsNCiAgICBXT1JEICAgIENoYXJhY3Rl
cmlzdGljczsNCn0gSU1BR0VfRklMRV9IRUFERVIsICpQSU1BR0VfRklMRV9IRUFERVI7DQoNCnR5
cGVkZWYgc3RydWN0IF9JTUFHRV9PUFRJT05BTF9IRUFERVIgew0KICAgIC8vDQogICAgLy8gU3Rh
bmRhcmQgZmllbGRzLg0KICAgIC8vDQoNCiAgICBXT1JEICAgIE1hZ2ljOw0KICAgIEJZVEUgICAg
TWFqb3JMaW5rZXJWZXJzaW9uOw0KICAgIEJZVEUgICAgTWlub3JMaW5rZXJWZXJzaW9uOw0KICAg
IERXT1JEICAgU2l6ZU9mQ29kZTsNCiAgICBEV09SRCAgIFNpemVPZkluaXRpYWxpemVkRGF0YTsN
CiAgICBEV09SRCAgIFNpemVPZlVuaW5pdGlhbGl6ZWREYXRhOw0KICAgIERXT1JEICAgQWRkcmVz
c09mRW50cnlQb2ludDsNCiAgICBEV09SRCAgIEJhc2VPZkNvZGU7DQogICAgRFdPUkQgICBCYXNl
T2ZEYXRhOw0KDQogICAgLy8NCiAgICAvLyBOVCBhZGRpdGlvbmFsIGZpZWxkcy4NCiAgICAvLw0K
DQogICAgRFdPUkQgICBJbWFnZUJhc2U7DQogICAgRFdPUkQgICBTZWN0aW9uQWxpZ25tZW50Ow0K
ICAgIERXT1JEICAgRmlsZUFsaWdubWVudDsNCiAgICBXT1JEICAgIE1ham9yT3BlcmF0aW5nU3lz
dGVtVmVyc2lvbjsNCiAgICBXT1JEICAgIE1pbm9yT3BlcmF0aW5nU3lzdGVtVmVyc2lvbjsNCiAg
ICBXT1JEICAgIE1ham9ySW1hZ2VWZXJzaW9uOw0KICAgIFdPUkQgICAgTWlub3JJbWFnZVZlcnNp
b247DQogICAgV09SRCAgICBNYWpvclN1YnN5c3RlbVZlcnNpb247DQogICAgV09SRCAgICBNaW5v
clN1YnN5c3RlbVZlcnNpb247DQogICAgRFdPUkQgICBSZXNlcnZlZDE7DQogICAgRFdPUkQgICBT
aXplT2ZJbWFnZTsNCiAgICBEV09SRCAgIFNpemVPZkhlYWRlcnM7DQogICAgRFdPUkQgICBDaGVj
a1N1bTsNCiAgICBXT1JEICAgIFN1YnN5c3RlbTsNCiAgICBXT1JEICAgIERsbENoYXJhY3Rlcmlz
dGljczsNCiAgICBEV09SRCAgIFNpemVPZlN0YWNrUmVzZXJ2ZTsNCiAgICBEV09SRCAgIFNpemVP
ZlN0YWNrQ29tbWl0Ow0KICAgIERXT1JEICAgU2l6ZU9mSGVhcFJlc2VydmU7DQogICAgRFdPUkQg
ICBTaXplT2ZIZWFwQ29tbWl0Ow0KICAgIERXT1JEICAgTG9hZGVyRmxhZ3M7DQogICAgRFdPUkQg
ICBOdW1iZXJPZlJ2YUFuZFNpemVzOw0KICAgIElNQUdFX0RBVEFfRElSRUNUT1JZIERhdGFEaXJl
Y3RvcnlbSU1BR0VfTlVNQkVST0ZfRElSRUNUT1JZX0VOVFJJRVNdOw0KfSBJTUFHRV9PUFRJT05B
TF9IRUFERVIsICpQSU1BR0VfT1BUSU9OQUxfSEVBREVSOw0KDQoNCnR5cGVkZWYgc3RydWN0IF9J
TUFHRV9OVF9IRUFERVJTIHsNCiAgICBEV09SRCBTaWduYXR1cmU7DQogICAgSU1BR0VfRklMRV9I
RUFERVIgRmlsZUhlYWRlcjsNCiAgICBJTUFHRV9PUFRJT05BTF9IRUFERVIgT3B0aW9uYWxIZWFk
ZXI7DQp9IElNQUdFX05UX0hFQURFUlMsICpQSU1BR0VfTlRfSEVBREVSUzsNCg0KdHlwZWRlZiBz
dHJ1Y3QgX0lNQUdFX1NFQ1RJT05fSEVBREVSIHsNCiAgICBCWVRFICAgIE5hbWVbSU1BR0VfU0la
RU9GX1NIT1JUX05BTUVdOw0KICAgIHVuaW9uIHsNCiAgICAgICAgICAgIERXT1JEICAgUGh5c2lj
YWxBZGRyZXNzOw0KICAgICAgICAgICAgRFdPUkQgICBWaXJ0dWFsU2l6ZTsNCiAgICB9IE1pc2M7
DQogICAgRFdPUkQgICBWaXJ0dWFsQWRkcmVzczsNCiAgICBEV09SRCAgIFNpemVPZlJhd0RhdGE7
DQogICAgRFdPUkQgICBQb2ludGVyVG9SYXdEYXRhOw0KICAgIERXT1JEICAgUG9pbnRlclRvUmVs
b2NhdGlvbnM7DQogICAgRFdPUkQgICBQb2ludGVyVG9MaW5lbnVtYmVyczsNCiAgICBXT1JEICAg
IE51bWJlck9mUmVsb2NhdGlvbnM7DQogICAgV09SRCAgICBOdW1iZXJPZkxpbmVudW1iZXJzOw0K
ICAgIERXT1JEICAgQ2hhcmFjdGVyaXN0aWNzOw0KfSBJTUFHRV9TRUNUSU9OX0hFQURFUiwgKlBJ
TUFHRV9TRUNUSU9OX0hFQURFUjsNCg0KdHlwZWRlZiBzdHJ1Y3QgX0lNQUdFX0VYUE9SVF9ESVJF
Q1RPUlkgew0KICAgIERXT1JEICAgQ2hhcmFjdGVyaXN0aWNzOw0KICAgIERXT1JEICAgVGltZURh
dGVTdGFtcDsNCiAgICBXT1JEICAgIE1ham9yVmVyc2lvbjsNCiAgICBXT1JEICAgIE1pbm9yVmVy
c2lvbjsNCiAgICBEV09SRCAgIE5hbWU7DQogICAgRFdPUkQgICBCYXNlOw0KICAgIERXT1JEICAg
TnVtYmVyT2ZGdW5jdGlvbnM7DQogICAgRFdPUkQgICBOdW1iZXJPZk5hbWVzOw0KICAgIFBEV09S
RCAgKkFkZHJlc3NPZkZ1bmN0aW9uczsNCiAgICBQRFdPUkQgICpBZGRyZXNzT2ZOYW1lczsNCiAg
ICBQV09SRCAgICpBZGRyZXNzT2ZOYW1lT3JkaW5hbHM7DQp9IElNQUdFX0VYUE9SVF9ESVJFQ1RP
UlksICpQSU1BR0VfRVhQT1JUX0RJUkVDVE9SWTsNCg0KdHlwZWRlZiBzdHJ1Y3QgX0lNQUdFX0RP
U19IRUFERVIgeyAgICAgIC8vIERPUyAuRVhFIGhlYWRlcg0KICAgIFdPUkQgICBlX21hZ2ljOyAg
ICAgICAgICAgICAgICAgICAgIC8vIE1hZ2ljIG51bWJlcg0KICAgIFdPUkQgICBlX2NibHA7ICAg
ICAgICAgICAgICAgICAgICAgIC8vIEJ5dGVzIG9uIGxhc3QgcGFnZSBvZiBmaWxlDQogICAgV09S
RCAgIGVfY3A7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGFnZXMgaW4gZmlsZQ0KICAgIFdP
UkQgICBlX2NybGM7ICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbG9jYXRpb25zDQogICAgV09S
RCAgIGVfY3BhcmhkcjsgICAgICAgICAgICAgICAgICAgLy8gU2l6ZSBvZiBoZWFkZXIgaW4gcGFy
YWdyYXBocw0KICAgIFdPUkQgICBlX21pbmFsbG9jOyAgICAgICAgICAgICAgICAgIC8vIE1pbmlt
dW0gZXh0cmEgcGFyYWdyYXBocyBuZWVkZWQNCiAgICBXT1JEICAgZV9tYXhhbGxvYzsgICAgICAg
ICAgICAgICAgICAvLyBNYXhpbXVtIGV4dHJhIHBhcmFncmFwaHMgbmVlZGVkDQogICAgV09SRCAg
IGVfc3M7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW5pdGlhbCAocmVsYXRpdmUpIFNTIHZh
bHVlDQogICAgV09SRCAgIGVfc3A7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW5pdGlhbCBT
UCB2YWx1ZQ0KICAgIFdPUkQgICBlX2NzdW07ICAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNr
c3VtDQogICAgV09SRCAgIGVfaXA7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW5pdGlhbCBJ
UCB2YWx1ZQ0KICAgIFdPUkQgICBlX2NzOyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluaXRp
YWwgKHJlbGF0aXZlKSBDUyB2YWx1ZQ0KICAgIFdPUkQgICBlX2xmYXJsYzsgICAgICAgICAgICAg
ICAgICAgIC8vIEZpbGUgYWRkcmVzcyBvZiByZWxvY2F0aW9uIHRhYmxlDQogICAgV09SRCAgIGVf
b3ZubzsgICAgICAgICAgICAgICAgICAgICAgLy8gT3ZlcmxheSBudW1iZXINCiAgICBXT1JEICAg
ZV9yZXNbNF07ICAgICAgICAgICAgICAgICAgICAvLyBSZXNlcnZlZCB3b3Jkcw0KICAgIFdPUkQg
ICBlX29lbWlkOyAgICAgICAgICAgICAgICAgICAgIC8vIE9FTSBpZGVudGlmaWVyIChmb3IgZV9v
ZW1pbmZvKQ0KICAgIFdPUkQgICBlX29lbWluZm87ICAgICAgICAgICAgICAgICAgIC8vIE9FTSBp
bmZvcm1hdGlvbjsgZV9vZW1pZCBzcGVjaWZpYw0KICAgIFdPUkQgICBlX3JlczJbMTBdOyAgICAg
ICAgICAgICAgICAgIC8vIFJlc2VydmVkIHdvcmRzDQogICAgTE9ORyAgIGVfbGZhbmV3OyAgICAg
ICAgICAgICAgICAgICAgLy8gRmlsZSBhZGRyZXNzIG9mIG5ldyBleGUgaGVhZGVyDQogIH0gSU1B
R0VfRE9TX0hFQURFUiwgKlBJTUFHRV9ET1NfSEVBREVSOw0KI2VuZGlmIC8vIF9fV0lOTlRfXw0K
DQovLyBIZXJlIHN0YXJ0cyBNYXR0J3MgY29kZQ0KLy8NCi8vDQovLyBNYWtlUHRyIGlzIGEgbWFj
cm8gdGhhdCBhbGxvd3MgeW91IHRvIGVhc2lseSBhZGQgdG8gdmFsdWVzIChpbmNsdWRpbmcNCi8v
IHBvaW50ZXJzKSB0b2dldGhlciB3aXRob3V0IGRlYWxpbmcgd2l0aCBDJ3MgcG9pbnRlciBhcml0
aG1ldGljLiAgSXQNCi8vIGVzc2VudGlhbGx5IHRyZWF0cyB0aGUgbGFzdCB0d28gcGFyYW1ldGVy
cyBhcyBEV09SRHMuICBUaGUgZmlyc3QNCi8vIHBhcmFtZXRlciBpcyB1c2VkIHRvIHR5cGVjYXN0
IHRoZSByZXN1bHQgdG8gdGhlIGFwcHJvcHJpYXRlIHBvaW50ZXIgdHlwZS4NCiNkZWZpbmUgTWFr
ZVB0ciggY2FzdCwgcHRyLCBhZGRWYWx1ZSApIChjYXN0KSggKERXT1JEKShwdHIpICsgKERXT1JE
KShhZGRWYWx1ZSkpDQpQSU1BR0VfU0VDVElPTl9IRUFERVIgR2V0RW5jbG9zaW5nU2VjdGlvbkhl
YWRlcihEV09SRCBydmEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQSU1BR0VfTlRfSEVBREVSUyBwTlRIZWFkZXIpDQp7DQogICAgUElNQUdFX1NFQ1RJ
T05fSEVBREVSIHNlY3Rpb24gPSBJTUFHRV9GSVJTVF9TRUNUSU9OKHBOVEhlYWRlcik7DQogICAg
dW5zaWduZWQgaTsNCg0KICAgIGZvciAoIGk9MDsgaSA8IHBOVEhlYWRlci0+RmlsZUhlYWRlci5O
dW1iZXJPZlNlY3Rpb25zOyBpKyssIHNlY3Rpb24rKyApIHsNCiAgICAgICAgLy8gSXMgdGhlIFJW
QSB3aXRoaW4gdGhpcyBzZWN0aW9uPw0KICAgICAgICBpZiAoIChydmEgPj0gc2VjdGlvbi0+Vmly
dHVhbEFkZHJlc3MpICYmDQogICAgICAgICAgICAgKHJ2YSA8IChzZWN0aW9uLT5WaXJ0dWFsQWRk
cmVzcyArIHNlY3Rpb24tPk1pc2MuVmlydHVhbFNpemUpKSkNCiAgICAgICAgICAgIHJldHVybiBz
ZWN0aW9uOw0KICAgIH0NCiAgICByZXR1cm4gMDsNCn0NCg0Kdm9pZCBEdW1wRXhwb3J0c1NlY3Rp
b24oRFdPUkQgYmFzZSwgUElNQUdFX05UX0hFQURFUlMgcE5USGVhZGVyKSB7DQogICAgUElNQUdF
X0VYUE9SVF9ESVJFQ1RPUlkgZXhwb3J0RGlyOw0KICAgIFBJTUFHRV9TRUNUSU9OX0hFQURFUiBo
ZWFkZXI7DQogICAgSU5UIGRlbHRhOw0KICAgIERXT1JEIGk7DQogICAgUERXT1JEIGZ1bmN0aW9u
czsNCiAgICBQV09SRCBvcmRpbmFsczsNCiAgICBQU1RSICpuYW1lOw0KICAgIERXT1JEIGV4cG9y
dHNTdGFydFJWQSwgZXhwb3J0c0VuZFJWQTsNCg0KICAgIGV4cG9ydHNTdGFydFJWQSA9IHBOVEhl
YWRlci0+T3B0aW9uYWxIZWFkZXIuRGF0YURpcmVjdG9yeQ0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFtJTUFHRV9ESVJFQ1RPUllfRU5UUllfRVhQT1JUXS5WaXJ0dWFsQWRkcmVzczsNCiAg
ICBleHBvcnRzRW5kUlZBID0gZXhwb3J0c1N0YXJ0UlZBICsgcE5USGVhZGVyLT5PcHRpb25hbEhl
YWRlci5EYXRhRGlyZWN0b3J5DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgW0lNQUdFX0RJ
UkVDVE9SWV9FTlRSWV9FWFBPUlRdLlNpemU7DQoNCiAgICAvLyBHZXQgdGhlIElNQUdFX1NFQ1RJ
T05fSEVBREVSIHRoYXQgY29udGFpbnMgdGhlIGV4cG9ydHMuICBUaGlzIGlzDQogICAgLy8gdXN1
YWxseSB0aGUgLmVkYXRhIHNlY3Rpb24sIGJ1dCBkb2Vzbid0IGhhdmUgdG8gYmUuDQogICAgaGVh
ZGVyID0gKFBJTUFHRV9TRUNUSU9OX0hFQURFUilHZXRFbmNsb3NpbmdTZWN0aW9uSGVhZGVyKCBl
eHBvcnRzU3RhcnRSVkEsIHBOVEhlYWRlciApOw0KICAgIGlmICggIWhlYWRlciApIHJldHVybjsN
CiAgICBkZWx0YSA9IChJTlQpKGhlYWRlci0+VmlydHVhbEFkZHJlc3MgLSBoZWFkZXItPlBvaW50
ZXJUb1Jhd0RhdGEpOw0KICAgIGV4cG9ydERpciA9IE1ha2VQdHIoUElNQUdFX0VYUE9SVF9ESVJF
Q1RPUlksIGJhc2UsIGV4cG9ydHNTdGFydFJWQSAtIGRlbHRhKTsNCiAgICBwcmludGYoIkVYUE9S
VFM6XG4iKTsNCiAgICBmdW5jdGlvbnMgPSAoUERXT1JEKSgoRFdPUkQpZXhwb3J0RGlyLT5BZGRy
ZXNzT2ZGdW5jdGlvbnMgLSBkZWx0YSArIGJhc2UpOw0KICAgIG9yZGluYWxzID0gKFBXT1JEKSgo
RFdPUkQpZXhwb3J0RGlyLT5BZGRyZXNzT2ZOYW1lT3JkaW5hbHMgLSBkZWx0YSArIGJhc2UpOw0K
ICAgIG5hbWUgPSAoUFNUUiAqKSgoRFdPUkQpZXhwb3J0RGlyLT5BZGRyZXNzT2ZOYW1lcyAtIGRl
bHRhICsgYmFzZSk7DQogICAgZm9yICggaT0wOyBpIDwgZXhwb3J0RGlyLT5OdW1iZXJPZkZ1bmN0
aW9uczsgaSsrICkgew0KICAgICAgICBEV09SRCBlbnRyeVBvaW50UlZBID0gZnVuY3Rpb25zW2ld
Ow0KICAgICAgICBEV09SRCBqOw0KICAgICAgICBpbnQgZmxhZz0wOw0KDQogICAgICAgIGlmICgg
ZW50cnlQb2ludFJWQSA9PSAwICkgICAvLyBTa2lwIG92ZXIgZ2FwcyBpbiBleHBvcnRlZCBmdW5j
dGlvbg0KICAgICAgICAgICAgY29udGludWU7ICAgICAgICAgICAgICAgLy8gb3JkaW5hbHMgKHRo
ZSBlbnRyeXBvaW50IGlzIDAgZm9yDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyB0aGVzZSBmdW5jdGlvbnMpLg0KICAgICAgICAvLyBTZWUgaWYgdGhpcyBmdW5jdGlvbiBo
YXMgYW4gYXNzb2NpYXRlZCBuYW1lIGV4cG9ydGVkIGZvciBpdC4NCiAgICAgICAgZm9yICggaj0w
OyBqIDwgZXhwb3J0RGlyLT5OdW1iZXJPZk5hbWVzOyBqKysgKQ0KICAgICAgICAgICAgaWYgKCBv
cmRpbmFsc1tqXSA9PSBpICkgew0KICAgICAgICAgICAgICAgIHByaW50ZigiJXMiLCBuYW1lW2pd
IC0gZGVsdGEgKyBiYXNlKTsNCiAgICAgICAgICAgICAgICBmbGFnPTE7DQogICAgICAgICAgICB9
DQogICAgICAgIC8vIElzIGl0IGEgZm9yd2FyZGVyPyAgSWYgc28sIHRoZSBlbnRyeSBwb2ludCBS
VkEgaXMgaW5zaWRlIHRoZQ0KICAgICAgICAvLyAuZWRhdGEgc2VjdGlvbiwgYW5kIGlzIGFuIFJW
QSB0byB0aGUgRGxsTmFtZS5FbnRyeVBvaW50TmFtZQ0KICAgICAgICBpZiAoIChlbnRyeVBvaW50
UlZBID49IGV4cG9ydHNTdGFydFJWQSkmJihlbnRyeVBvaW50UlZBIDw9IGV4cG9ydHNFbmRSVkEp
ICkNCiAgICAgICAgew0KICAgICAgICAgICAgcHJpbnRmKCIlcyIsIGVudHJ5UG9pbnRSVkEgLSBk
ZWx0YSArIGJhc2UgKTsNCiAgICAgICAgICAgIGZsYWc9MTsNCiAgICAgICAgfQ0KDQogICAgICAg
IGlmIChmbGFnKSBwcmludGYoIlxuIik7DQogICAgfQ0KfQ0KDQp2b2lkIER1bXBFeGVGaWxlKCBQ
SU1BR0VfRE9TX0hFQURFUiBkb3NIZWFkZXIgKQ0Kew0KICAgIFBJTUFHRV9OVF9IRUFERVJTIHBO
VEhlYWRlcjsNCiAgICBEV09SRCBiYXNlID0gKERXT1JEKWRvc0hlYWRlcjsNCg0KICAgIHBOVEhl
YWRlciA9IE1ha2VQdHIoIFBJTUFHRV9OVF9IRUFERVJTLCBkb3NIZWFkZXIsDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRvc0hlYWRlci0+ZV9sZmFuZXcgKTsNCg0KICAgIC8vIEZp
cnN0LCB2ZXJpZnkgdGhhdCB0aGUgZV9sZmFuZXcgZmllbGQgZ2F2ZSB1cyBhIHJlYXNvbmFibGUN
CiAgICAvLyBwb2ludGVyLCB0aGVuIHZlcmlmeSB0aGUgUEUgc2lnbmF0dXJlLg0KICAgIC8vIElK
OiBnY2MgZG9lc24ndCBzdXBwb3J0IEMgZXhlcHRpb25zPz8NCi8vICAgIF9fdHJ5DQovLyAgICB7
DQogICAgICAgIGlmICggcE5USGVhZGVyLT5TaWduYXR1cmUgIT0gSU1BR0VfTlRfU0lHTkFUVVJF
ICkNCiAgICAgICAgew0KICAgICAgICAgICAgcHJpbnRmKCJOb3QgYSBQb3J0YWJsZSBFeGVjdXRh
YmxlIChQRSkgRVhFXG4iKTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KLy8gICAg
fQ0KLyoNCiAgICBfX2V4Y2VwdCggVFJVRSApICAgIC8vIFNob3VsZCBvbmx5IGdldCBoZXJlIGlm
IHBOVEhlYWRlciAoYWJvdmUpIGlzIGJvZ3VzDQogICAgew0KICAgICAgICBwcmludGYoICJpbnZh
bGlkIC5FWEVcbiIpOw0KICAgICAgICByZXR1cm47DQogICAgfQ0KKi8NCiAgICBEdW1wRXhwb3J0
c1NlY3Rpb24oYmFzZSwgcE5USGVhZGVyKTsNCiAgICBwcmludGYoIlxuIik7DQp9DQoNCnZvaWQg
RHVtcEZpbGUoTFBTVFIgZmlsZW5hbWUpDQp7DQogICAgSEFORExFIGhGaWxlOw0KICAgIEhBTkRM
RSBoRmlsZU1hcHBpbmc7DQogICAgTFBWT0lEIGxwRmlsZUJhc2U7DQogICAgUElNQUdFX0RPU19I
RUFERVIgZG9zSGVhZGVyOw0KICAgIA0KICAgIGhGaWxlID0gQ3JlYXRlRmlsZShmaWxlbmFtZSwg
R0VORVJJQ19SRUFELCBGSUxFX1NIQVJFX1JFQUQsIE5VTEwsDQogICAgICAgICAgICAgICAgICAg
ICAgICBPUEVOX0VYSVNUSU5HLCBGSUxFX0FUVFJJQlVURV9OT1JNQUwsIDApOw0KDQogICAgaWYg
KCBoRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSApDQogICAgew0KICAgICAgICBwcmludGYo
IkNvdWxkbid0IG9wZW4gZmlsZSB3aXRoIENyZWF0ZUZpbGUoKVxuIik7DQogICAgICAgIHJldHVy
bjsNCiAgICB9DQoNCiAgICBoRmlsZU1hcHBpbmcgPSBDcmVhdGVGaWxlTWFwcGluZyhoRmlsZSwg
TlVMTCwgUEFHRV9SRUFET05MWSwgMCwgMCwgTlVMTCk7DQogICAgaWYgKCBoRmlsZU1hcHBpbmcg
PT0gMCApDQogICAgew0KICAgICAgICBDbG9zZUhhbmRsZShoRmlsZSk7DQogICAgICAgIHByaW50
ZigiQ291bGRuJ3Qgb3BlbiBmaWxlIG1hcHBpbmcgd2l0aCBDcmVhdGVGaWxlTWFwcGluZygpXG4i
KTsNCiAgICAgICAgcmV0dXJuOw0KICAgIH0NCg0KICAgIGxwRmlsZUJhc2UgPSBNYXBWaWV3T2ZG
aWxlKGhGaWxlTWFwcGluZywgRklMRV9NQVBfUkVBRCwgMCwgMCwgMCk7DQogICAgaWYgKCBscEZp
bGVCYXNlID09IDAgKQ0KICAgIHsNCiAgICAgICAgQ2xvc2VIYW5kbGUoaEZpbGVNYXBwaW5nKTsN
CiAgICAgICAgQ2xvc2VIYW5kbGUoaEZpbGUpOw0KICAgICAgICBwcmludGYoIkNvdWxkbid0IG1h
cCB2aWV3IG9mIGZpbGUgd2l0aCBNYXBWaWV3T2ZGaWxlKClcbiIpOw0KICAgICAgICByZXR1cm47
DQogICAgfQ0KDQogICAgcHJpbnRmKCI7RXhwb3J0cyBvZiBmaWxlICVzXG5cbiIsIGZpbGVuYW1l
KTsNCiAgICANCiAgICBkb3NIZWFkZXIgPSAoUElNQUdFX0RPU19IRUFERVIpbHBGaWxlQmFzZTsN
CiAgICBpZiAoIGRvc0hlYWRlci0+ZV9tYWdpYyA9PSBJTUFHRV9ET1NfU0lHTkFUVVJFICkNCiAg
ICB7DQogICAgICAgIER1bXBFeGVGaWxlKCBkb3NIZWFkZXIgKTsNCiAgICB9DQogICAgZWxzZSBw
cmludGYoIkZvcm1hdCBVbmtub3duIVxuIik7DQp9DQoNCmNoYXIgSGVscFRleHRbXSA9DQoiSU1Q
REVGIg0KIlN5bnRheDogSU1QREVGIERMTG5hbWVcblxuIg0KIk1vZGlmaWNhdGlvbiBvZjpcbiIN
CiJcdFBFRFVNUCAtIFdpbjMyL0NPRkYgRVhFL09CSi9MSUIgZmlsZSBkdW1wZXIgLSAxOTk1IE1h
dHQgUGlldHJla1xuIg0KImJ5IElzbWFlbCBKdXJhZG8gMTk5Ny4gT25seSBwcm9kdWNlcyBhIERF
RiBmaWxlIGZyb20gYSBETExcbiINCiJMZXQgbWUga25vdyBpZiB0aGlzIG1vZGlmaWNhdGlvbiBp
cyBub3QgbGVnYWw6IGlzbWFlbGpAaG90bWFpbC5jb20iOw0KDQppbnQgbWFpbihpbnQgYXJnYywg
Y2hhciAqYXJndltdKSB7DQogIGlmICggYXJnYyA9PSAxICkgew0KICAgIHByaW50ZiggSGVscFRl
eHQgKTsNCiAgICByZXR1cm4gMTsNCiAgfQ0KICBEdW1wRmlsZShhcmd2WzFdKTsNCiAgcmV0dXJu
IDA7DQp9DQo=

------ =_NextPart_000_01BCB3A8.5EF62AC0--

--
Fergus Henderson <fjh@cs.mu.oz.au>   |  "I have always known that the pursuit
WWW: <http://www.cs.mu.oz.au/~fjh>   |  of excellence is a lethal habit"
PGP: finger fjh@128.250.37.3         |     -- the last words of T. S. Garp.
-
For help on using this list (especially unsubscribing), send a message to
"gnu-win32-request@cygnus.com" with one line of text: "help".


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]