- improved MACOS compatibility

- workaround for some broken virtual serial ports
- Added Lazarus package

git-svn-id: https://svn.code.sf.net/p/synalist/code/trunk@129 7c85be65-684b-0410-a082-b2ed4fbef004
This commit is contained in:
geby 2010-07-02 10:46:39 +00:00
parent 2015fd1aef
commit 492b48fa05
6 changed files with 264 additions and 32 deletions

170
laz_synapse.lpk Normal file
View File

@ -0,0 +1,170 @@
<?xml version="1.0"?>
<CONFIG>
<Package Version="3">
<Name Value="laz_synapse"/>
<CompilerOptions>
<Version Value="8"/>
<SearchPaths>
<UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)/"/>
</SearchPaths>
<Parsing>
<SyntaxOptions>
<UseAnsiStrings Value="True"/>
</SyntaxOptions>
</Parsing>
<Other>
<CompilerPath Value="$(CompPath)"/>
</Other>
</CompilerOptions>
<Files Count="33">
<Item1>
<Filename Value="asn1util.pas"/>
<UnitName Value="asn1util"/>
</Item1>
<Item2>
<Filename Value="blcksock.pas"/>
<UnitName Value="blcksock"/>
</Item2>
<Item3>
<Filename Value="clamsend.pas"/>
<UnitName Value="clamsend"/>
</Item3>
<Item4>
<Filename Value="dnssend.pas"/>
<UnitName Value="dnssend"/>
</Item4>
<Item5>
<Filename Value="ftpsend.pas"/>
<UnitName Value="ftpsend"/>
</Item5>
<Item6>
<Filename Value="ftptsend.pas"/>
<UnitName Value="ftptsend"/>
</Item6>
<Item7>
<Filename Value="httpsend.pas"/>
<UnitName Value="httpsend"/>
</Item7>
<Item8>
<Filename Value="imapsend.pas"/>
<UnitName Value="imapsend"/>
</Item8>
<Item9>
<Filename Value="ldapsend.pas"/>
<UnitName Value="ldapsend"/>
</Item9>
<Item10>
<Filename Value="mimeinln.pas"/>
<UnitName Value="mimeinln"/>
</Item10>
<Item11>
<Filename Value="mimemess.pas"/>
<UnitName Value="mimemess"/>
</Item11>
<Item12>
<Filename Value="mimepart.pas"/>
<UnitName Value="mimepart"/>
</Item12>
<Item13>
<Filename Value="nntpsend.pas"/>
<UnitName Value="nntpsend"/>
</Item13>
<Item14>
<Filename Value="pingsend.pas"/>
<UnitName Value="pingsend"/>
</Item14>
<Item15>
<Filename Value="pop3send.pas"/>
<UnitName Value="pop3send"/>
</Item15>
<Item16>
<Filename Value="slogsend.pas"/>
<UnitName Value="slogsend"/>
</Item16>
<Item17>
<Filename Value="smtpsend.pas"/>
<UnitName Value="smtpsend"/>
</Item17>
<Item18>
<Filename Value="snmpsend.pas"/>
<UnitName Value="snmpsend"/>
</Item18>
<Item19>
<Filename Value="sntpsend.pas"/>
<UnitName Value="sntpsend"/>
</Item19>
<Item20>
<Filename Value="ssfpc.pas"/>
<AddToUsesPkgSection Value="False"/>
<UnitName Value="ssfpc"/>
</Item20>
<Item21>
<Filename Value="sswin32.pas"/>
<AddToUsesPkgSection Value="False"/>
<UnitName Value="sswin32"/>
</Item21>
<Item22>
<Filename Value="synachar.pas"/>
<UnitName Value="synachar"/>
</Item22>
<Item23>
<Filename Value="synacode.pas"/>
<UnitName Value="synacode"/>
</Item23>
<Item24>
<Filename Value="synacrypt.pas"/>
<UnitName Value="synacrypt"/>
</Item24>
<Item25>
<Filename Value="synadbg.pas"/>
<UnitName Value="synadbg"/>
</Item25>
<Item26>
<Filename Value="synafpc.pas"/>
<UnitName Value="synafpc"/>
</Item26>
<Item27>
<Filename Value="synaicnv.pas"/>
<UnitName Value="synaicnv"/>
</Item27>
<Item28>
<Filename Value="synaip.pas"/>
<UnitName Value="synaip"/>
</Item28>
<Item29>
<Filename Value="synamisc.pas"/>
<UnitName Value="synamisc"/>
</Item29>
<Item30>
<Filename Value="synaser.pas"/>
<UnitName Value="synaser"/>
</Item30>
<Item31>
<Filename Value="synautil.pas"/>
<UnitName Value="synautil"/>
</Item31>
<Item32>
<Filename Value="synsock.pas"/>
<UnitName Value="synsock"/>
</Item32>
<Item33>
<Filename Value="tlntsend.pas"/>
<UnitName Value="tlntsend"/>
</Item33>
</Files>
<Type Value="RunAndDesignTime"/>
<RequiredPkgs Count="1">
<Item1>
<PackageName Value="FCL"/>
<MinVersion Major="1" Valid="True"/>
</Item1>
</RequiredPkgs>
<UsageOptions>
<UnitPath Value="$(PkgOutDir)"/>
</UsageOptions>
<PublishOptions>
<Version Value="2"/>
<IgnoreBinaries Value="False"/>
</PublishOptions>
</Package>
</CONFIG>

24
laz_synapse.pas Normal file
View File

@ -0,0 +1,24 @@
{ This file was automatically created by Lazarus. Do not edit!
This source is only used to compile and install the package.
}
unit laz_synapse;
interface
uses
asn1util, blcksock, clamsend, dnssend, ftpsend, ftptsend, httpsend,
imapsend, ldapsend, mimeinln, mimemess, mimepart, nntpsend, pingsend,
pop3send, slogsend, smtpsend, snmpsend, sntpsend, synachar, synacode,
synacrypt, synadbg, synafpc, synaicnv, synaip, synamisc, synaser, synautil,
synsock, tlntsend, LazarusPackageIntf;
implementation
procedure Register;
begin
end;
initialization
RegisterPackage('laz_synapse', @Register);
end.

View File

@ -1,5 +1,5 @@
{==============================================================================|
| Project : Ararat Synapse | 001.001.002 |
| Project : Ararat Synapse | 001.001.003 |
|==============================================================================|
| Content: Socket Independent Platform Layer - FreePascal definition include |
|==============================================================================|
@ -250,7 +250,13 @@ const
MSG_OOB = sockets.MSG_OOB; // Process out-of-band data.
MSG_PEEK = sockets.MSG_PEEK; // Peek at incoming messages.
MSG_NOSIGNAL = sockets.MSG_NOSIGNAL; // Do not generate SIGPIPE.
{$ifdef DARWIN}
MSG_NOSIGNAL = $20000; // Do not generate SIGPIPE.
// Works under MAC OS X, but is undocumented,
// So FPC doesn't include it
{$else}
MSG_NOSIGNAL = sockets.MSG_NOSIGNAL; // Do not generate SIGPIPE.
{$endif}
const
WSAEINTR = ESysEINTR;

View File

@ -1,5 +1,5 @@
{==============================================================================|
| Project : Ararat Synapse | 003.006.001 |
| Project : Ararat Synapse | 003.006.002 |
|==============================================================================|
| Content: SSL support by OpenSSL |
|==============================================================================|
@ -85,7 +85,11 @@ uses
Classes,
synafpc,
{$IFNDEF MSWINDOWS}
Libc, SysUtils;
{$IFDEF FPC}
BaseUnix, SysUtils;
{$ELSE}
Libc, SysUtils;
{$ENDIF}
{$ELSE}
Windows;
{$ENDIF}
@ -1727,7 +1731,7 @@ begin
{$ELSE}
SSLLibHandle := LoadLib(DLLSSLName);
SSLUtilHandle := LoadLib(DLLUtilName);
{$IFNDEF LINUX}
{$IFDEF MSWINDOWS}
if (SSLLibHandle = 0) then
SSLLibHandle := LoadLib(DLLSSLName2);
{$ENDIF}

View File

@ -1,5 +1,5 @@
{==============================================================================|
| Project : Ararat Synapse | 001.003.000 |
| Project : Ararat Synapse | 001.003.001 |
|==============================================================================|
| Content: misc. procedures and functions |
|==============================================================================|
@ -50,6 +50,13 @@
{$Q-}
{$H+}
//Kylix does not known UNIX define
{$IFDEF LINUX}
{$IFNDEF UNIX}
{$DEFINE UNIX}
{$ENDIF}
{$ENDIF}
{$IFDEF UNICODE}
{$WARN IMPLICIT_STRING_CAST OFF}
{$WARN IMPLICIT_STRING_CAST_LOSS OFF}
@ -69,7 +76,7 @@ interface
uses
synautil, blcksock, SysUtils, Classes
{$IFDEF LINUX}
{$IFDEF UNIX}
{$IFNDEF FPC}
, Libc
{$ENDIF}
@ -148,7 +155,7 @@ end;
{==============================================================================}
{$IFNDEF LINUX}
{$IFNDEF UNIX}
function GetDNSbyIpHlp: string;
type
PTIP_ADDRESS_STRING = ^TIP_ADDRESS_STRING;
@ -240,7 +247,7 @@ end ;
{$ENDIF}
function GetDNS: string;
{$IFDEF LINUX}
{$IFDEF UNIX}
var
l: TStringList;
n: integer;
@ -287,7 +294,7 @@ end;
{==============================================================================}
function GetIEProxy(protocol: string): TProxySetting;
{$IFDEF LINUX}
{$IFDEF UNIX}
begin
Result.Host := '';
Result.Port := '';

View File

@ -1,5 +1,5 @@
{==============================================================================|
| Project : Ararat Synapse | 007.004.000 |
| Project : Ararat Synapse | 007.005.000 |
|==============================================================================|
| Content: Serial port support |
|==============================================================================|
@ -44,9 +44,9 @@
|==============================================================================}
{: @abstract(Serial port communication library)
This unit contains a class that implements serial port communication for Windows
or Linux. This class provides numerous methods with same name and functionality
as methods of the Ararat Synapse TCP/IP library.
This unit contains a class that implements serial port communication
for Windows, Linux, Unix or MacOSx. This class provides numerous methods with
same name and functionality as methods of the Ararat Synapse TCP/IP library.
The following is a small example how establish a connection by modem (in this
case with my USB modem):
@ -76,6 +76,13 @@ case with my USB modem):
{$ENDIF}
{$ENDIF}
//Kylix does not known UNIX define
{$IFDEF LINUX}
{$IFNDEF UNIX}
{$DEFINE UNIX}
{$ENDIF}
{$ENDIF}
{$IFDEF FPC}
{$MODE DELPHI}
{$IFDEF MSWINDOWS}
@ -189,10 +196,14 @@ type
PDCB = ^TDCB;
const
{$IFDEF LINUX}
MaxRates = 30;
{$IFDEF UNIX}
{$IFDEF DARWIN}
MaxRates = 18; //MAC
{$ELSE}
MaxRates = 30; //UNIX
{$ENDIF}
{$ELSE}
MaxRates = 19; //FPC on some platforms not know high speeds?
MaxRates = 19; //WIN
{$ENDIF}
Rates: array[0..MaxRates, 0..1] of cardinal =
(
@ -214,9 +225,10 @@ const
(38400, B38400),
(57600, B57600),
(115200, B115200),
(230400, B230400),
(460800, B460800)
{$IFDEF LINUX}
(230400, B230400)
{$IFNDEF DARWIN}
,(460800, B460800)
{$IFDEF UNIX}
,(500000, B500000),
(576000, B576000),
(921600, B921600),
@ -228,10 +240,16 @@ const
(3000000, B3000000),
(3500000, B3500000),
(4000000, B4000000)
{$ENDIF}
{$ENDIF}
);
{$ENDIF}
{$IFDEF DARWIN}
const // From fcntl.h
O_SYNC = $0080; { synchronous writes }
{$ENDIF}
const
sOK = 0;
sErr = integer(-1);
@ -310,11 +328,9 @@ type
procedure GetComNr(Value: string); virtual;
function PreTestFailing: boolean; virtual;{HGJ}
function TestCtrlLine: Boolean; virtual;
{$IFNDEF MSWINDOWS}
{$IFDEF UNIX}
procedure DcbToTermios(const dcb: TDCB; var term: termios); virtual;
procedure TermiosToDcb(const term: termios; var dcb: TDCB); virtual;
{$ENDIF}
{$IFDEF LINUX}
function ReadLockfile: integer; virtual;
function LockfileName: String; virtual;
procedure CreateLockfile(PidNr: integer); virtual;
@ -325,7 +341,7 @@ type
{: data Control Block with communication parameters. Usable only when you
need to call API directly.}
DCB: Tdcb;
{$IFNDEF MSWINDOWS}
{$IFDEF UNIX}
TermiosStruc: termios;
{$ENDIF}
{:Object constructor.}
@ -603,7 +619,7 @@ type
{:Raise Synaser error with ErrNumber code. Usually used by internal routines.}
procedure RaiseSynaError(ErrNumber: integer); virtual;
{$IFDEF LINUX}
{$IFDEF UNIX}
function cpomComportAccessible: boolean; virtual;{HGJ}
procedure cpomReleaseComport; virtual; {HGJ}
{$ENDIF}
@ -764,7 +780,7 @@ end;
class function TBlockSerial.GetVersion: string;
begin
Result := 'SynaSer 7.4.0';
Result := 'SynaSer 7.5.0';
end;
procedure TBlockSerial.CloseSocket;
@ -778,7 +794,7 @@ begin
end;
if InstanceActive then
begin
{$IFDEF LINUX}
{$IFDEF UNIX}
if FLinuxLock then
cpomReleaseComport;
{$ENDIF}
@ -933,7 +949,7 @@ begin
SerialCheck(-1)
else
SerialCheck(0);
{$IFDEF LINUX}
{$IFDEF UNIX}
if FLastError <> sOK then
if FLinuxLock then
cpomReleaseComport;
@ -968,7 +984,7 @@ begin
begin
SetSynaError(ErrNoDeviceAnswer);
FileClose(FHandle); {HGJ}
{$IFDEF LINUX}
{$IFDEF UNIX}
if FLinuxLock then
cpomReleaseComport; {HGJ}
{$ENDIF} {HGJ}
@ -1807,7 +1823,8 @@ function TBlockSerial.CanRead(Timeout: integer): boolean;
begin
Result := WaitingData > 0;
if not Result then
Result := CanEvent(EV_RXCHAR, Timeout);
Result := CanEvent(EV_RXCHAR, Timeout) or (WaitingData > 0);
//check WaitingData again due some broken virtual ports
if Result then
DoStatus(HR_CanRead, '');
end;
@ -1918,7 +1935,11 @@ begin
{$IFNDEF FPC}
SerialCheck(ioctl(FHandle, TCFLSH, TCIOFLUSH));
{$ELSE}
SerialCheck(fpioctl(FHandle, TCFLSH, TCIOFLUSH));
{$IFDEF DARWIN}
SerialCheck(fpioctl(FHandle, TCIOflush, TCIOFLUSH));
{$ELSE}
SerialCheck(fpioctl(FHandle, TCFLSH, TCIOFLUSH));
{$ENDIF}
{$ENDIF}
FBuffer := '';
ExceptCheck;
@ -2154,7 +2175,7 @@ end;
Ownership Manager.
}
{$IFDEF LINUX}
{$IFDEF UNIX}
function TBlockSerial.LockfileName: String;
var