Browse Source

* PChar -> PAnsiChar fixes

Michael VAN CANNEYT 2 years ago
parent
commit
c948c16f79

+ 1 - 1
packages/fcl-base/src/gettext.pp

@@ -289,7 +289,7 @@ end;
 procedure GetLanguageIDs(var Lang, FallbackLang:AnsiString );
 var
   Buffer: array[1..4] of {$ifdef Wince}WideChar{$else}AnsiChar{$endif};
-  Country: ;
+  Country: AnsiString;
   UserLCID: LCID;
 begin
   //defaults

+ 7 - 3
packages/fcl-base/src/win/eventlog.inc

@@ -21,7 +21,7 @@ const
 Function TEventLog.DefaultFileName : String;
 
 begin
-  Result:=ChangeFileExt(Paramstr(0),'.log');
+  Result:=ChangeFileExt(Paramstr(0),RTLString('.log'));
 end;
 
 Resourcestring
@@ -57,12 +57,16 @@ Var
   FCategory : Word;
   FEventID : DWord;
   FEventType : Word;
-
+  aMsg : AnsiString {$IF SIZEOF(CHAR)=1} absolute Msg{$ENDIF};
+  
 begin
   FCategory:=MapTypeToCategory(EventType);
   FEventID:=MapTypeToEventID(EventType);
   FEventType:=MapTypeToEvent(EventType);
-  P:=PAnsiChar(Msg);
+  {$IF SIZEOF(CHAR)=2}
+  aMsg:=Msg;
+  {$ENDIF}
+  P:=PAnsiChar(aMsg);
   If Not ReportEvent(Cardinal(FLogHandle),FEventType,FCategory,FEventID,Nil,1,0,@P,Nil) and FRaiseExceptionOnError then
     begin
     I:=GetLastError;

+ 3 - 3
packages/fcl-extra/src/daemonapp.pp

@@ -133,7 +133,7 @@ Type
     Constructor Create(AOwner : TComponent); override;
     Destructor Destroy; override;
     Procedure StartService; virtual;
-    Procedure Main(Argc : DWord; Args : PPAnsiChar); Virtual;
+    Procedure Main(Argc : DWord; Args : PPChar); Virtual;
     Procedure Controller(ControlCode,EventType : DWord; EventData : Pointer); Virtual;
     Function ReportStatus : Boolean; virtual;
     Property Daemon : TCustomDaemon Read FDaemon;
@@ -367,7 +367,7 @@ Type
     procedure SysUnInstallDaemon(Daemon: TCustomDaemon);
     function  UnInstallRun: Boolean;
     function  RunDaemonsRun: Boolean;
-    Procedure Main(Argc : DWord; Args : PPAnsiChar);
+    Procedure Main(Argc : DWord; Args : PPChar);
     Function  RunGUIloop(P : Pointer) : integer;
   Protected
     // OS (System) dependent calls
@@ -772,7 +772,7 @@ begin
   // No Borland compatibility needed, as the install will take care of the -r
 end;
 
-procedure TCustomDaemonApplication.Main(Argc: DWord; Args: PPAnsiChar);
+procedure TCustomDaemonApplication.Main(Argc: DWord; Args: PPChar);
 
 Var
   SN : String;

+ 19 - 19
packages/fcl-extra/src/win/ServiceManager.pas

@@ -227,14 +227,14 @@ end;
 procedure TServiceManager.Connect;
 
 Var
-   P : PAnsiChar;
+   P : PChar;
 
 begin
   If (FHandle=0) then
     begin
     P:=Nil;
     If (MachineName<>'') then
-      P:=PAnsiChar(MachineName);
+      P:=PChar(MachineName);
     FHandle:=OpenSCManager(P,Nil,FAccess);
     If (FHandle=0) then
       RaiseLastOSError;
@@ -308,7 +308,7 @@ begin
         FDisplayName:=StrPas(lpDisplayName);
         SetStatusFields(ServiceStatus);
         end;
-      PAnsiChar(P):=PAnsiChar(P)+SizeOf(TEnumServiceStatus);
+      PByte(P):=PByte(P)+SizeOf(TEnumServiceStatus);
       end;
     Finally
     FreeMem(Info);
@@ -424,7 +424,7 @@ begin
     FBeforeDisconnect(Self);
 end;
 
-Function AllocDependencyList (Const S : String) : PAnsiChar;
+Function AllocDependencyList (Const S : String) : PChar;
 
 Var
   I,L : Integer;
@@ -436,7 +436,7 @@ begin
     // Double Null terminated list of null-terminated strings.
     L:=Length(S);
     GetMem(Result,L+3);
-    Move(S[1],Result^,L+1); // Move terminating null as well.
+    Move(S[1],Result^,(L+1)*SizeOf(Char)); // Move terminating null as well.
     Result[L+1]:=#0;
     Result[L+2]:=#0;
     For I:=0 to L-1 do
@@ -448,7 +448,7 @@ end;
 Function TServiceManager.RegisterService(var Desc: TServiceDescriptor) : Thandle;
 
 Var
-  PDep,PLO,PUser,PPWd : PAnsiChar; // We need Nil for some things.
+  PDep,PLO,PUser,PPWd : PChar; // We need Nil for some things.
   N,D : String;
   ReturnTag : DWord;
 
@@ -460,19 +460,19 @@ begin
     If (LoadOrderGroup='') then
       PLO:=Nil
     else
-      PLO:=PAnsiChar(LoadOrderGroup);
+      PLO:=PChar(LoadOrderGroup);
     PPwd:=Nil;
     PUser:=Nil;
     If (UserName<>'') then
       begin
-      PUser:=PAnsiChar(UserName);
+      PUser:=PChar(UserName);
       If (Password<>'') then
-        PPWd:=PAnsiChar(Password);
+        PPWd:=PChar(Password);
       end;
     PDep:=AllocDependencyList(Dependencies);
     Try
-      Result:=CreateService(Self.Handle,PAnsiChar(N),PAnsiChar(D),DesiredAccess,ServiceType,
-                            StartType,ErrorControl,PAnsiChar(CommandLine),PLO,Nil,
+      Result:=CreateService(Self.Handle,PChar(N),PChar(D),DesiredAccess,ServiceType,
+                            StartType,ErrorControl,PChar(CommandLine),PLO,Nil,
                             PDep,PUser,PPwd);
       If (Result=0) then
         RaiseLastOSError;
@@ -489,7 +489,7 @@ Var
   H : THandle;
 
 begin
-  H:=OpenService(Handle,PAnsiChar(ServiceName),SERVICE_ENUMERATE_DEPENDENTS);
+  H:=OpenService(Handle,PChar(ServiceName),SERVICE_ENUMERATE_DEPENDENTS);
   try
     ListDependentServices(H,ServiceState,List);
   Finally
@@ -520,7 +520,7 @@ begin
       For I:=0 to Count-1 do
         begin
         List.Add(StrPas(E^.lpServiceName));
-        PAnsiChar(E):=PAnsiChar(E)+SizeOf(TEnumServiceStatus);
+        PByte(E):=PByte(E)+SizeOf(TEnumServiceStatus);
         end;
     Finally
       FreeMem(P);
@@ -567,7 +567,7 @@ begin
   A:=SERVICE_STOP or SERVICE_QUERY_STATUS;
   If StopDependent then
     A:=A or SERVICE_ENUMERATE_DEPENDENTS;
-  H:=OpenService(Handle,PAnsiChar(ServiceName),A);
+  H:=OpenService(Handle,PChar(ServiceName),A);
   Try
     StopService(H,StopDependent);
   Finally
@@ -579,7 +579,7 @@ end;
 Function TServiceManager.GetServiceHandle(const ServiceName : String; SAccess : DWord) : THandle;
 
 begin
-  Result:=OpenService(Handle,PAnsiChar(ServiceName),SAccess);
+  Result:=OpenService(Handle,PChar(ServiceName),SAccess);
   If (Result=0) then
     RaiseLastOSError;
 end;
@@ -699,7 +699,7 @@ begin
     Pargs:=StringsToPcharList(Args);
     end;
   Try
-    If not jwawinsvc.StartService(SHandle,Argc,PAnsiChar(PArgs)) then
+    If not jwawinsvc.StartService(SHandle,Argc,PChar(PArgs)) then
       RaiseLastOSError;
   Finally
     If (PArgs<>Nil) then
@@ -817,17 +817,17 @@ end;
 
 procedure TServiceManager.ConfigService(SHandle : THandle ; Config : TServiceDescriptor);
 
-  Function SToPchar(Var S : String) : PAnsiChar;
+  Function SToPchar(Var S : String) : PChar;
 
   begin
     If (S='') then
       Result:=Nil
     else
-      Result:=PAnsiChar(S);
+      Result:=PChar(S);
   end;
 
 Var
-  PDep,PLO,PUser,PPWd,PCmd,PDisp : PAnsiChar; // We need Nil for some things.
+  PDep,PLO,PUser,PPWd,PCmd,PDisp : PChar; // We need Nil for some things.
   D : String;
   ReturnTag : DWord;
 

+ 20 - 17
packages/fcl-extra/src/win/daemonapp.inc

@@ -23,8 +23,10 @@ Resourcestring
   SErrNoControlContext = 'Not handling Control message without control context: (%d %d %d).';
   SControlCodeReceived = 'Control message received: (%d %d %d).';
 
+{$IF SIZEOF(CHAR)=1}
 function StartServiceCtrlDispatcher(lpServiceStartTable: LPSERVICE_TABLE_ENTRY): BOOL; stdcall; external 'advapi32.dll' name 'StartServiceCtrlDispatcherA';
 function RegisterServiceCtrlHandlerEx(lpServiceName: LPCSTR;lpHandlerProc: LPHANDLER_FUNCTION_EX; lpContext: LPVOID): SERVICE_STATUS_HANDLE; stdcall;external 'advapi32.dll' name 'RegisterServiceCtrlHandlerExA';
+{$ENDIF}
 function SetServiceStatus(hServiceStatus: SERVICE_STATUS_HANDLE; const lpServiceStatus: SERVICE_STATUS): BOOL; stdcall; external 'advapi32.dll' name 'SetServiceStatus';
 
 { ---------------------------------------------------------------------
@@ -40,11 +42,11 @@ begin
     Application.Log(etError,Format(SerrNoControlContext,[dwControl,dwEventType,ptrint(lpEventData)]));
 end;
 
-Procedure ServiceMainEntry(Argc : DWord; Args : PAnsiChar); stdcall;
+Procedure ServiceMainEntry(Argc : DWord; Args : PChar); stdcall;
 
 begin
   If Assigned(Application) then
-    Application.Main(Argc,PPAnsiChar(Args));
+    Application.Main(Argc,PPChar(Args));
 {$ifdef svcdebug}Debuglog('Main end');{$endif}
 end;
 
@@ -150,11 +152,11 @@ const
 
 // Careful, result of this function must be freed !!
 
-Function GetDependencies(D : TDependencies) : PAnsiChar;
+Function GetDependencies(D : TDependencies) : PChar;
   
 var
   I,L : Integer;
-  P   : PAnsiChar;
+  P   : PChar;
 
 begin
   Result:=Nil;
@@ -170,10 +172,10 @@ begin
       begin
       if D[i].IsGroup then
         begin
-        P^:=AnsiChar(SC_GROUP_IDENTIFIER);
+        P^:=Char(SC_GROUP_IDENTIFIER);
         Inc(P);
         end;
-      P:=StrECopy(P,PAnsiChar(D[i].Name));
+      P:=StrECopy(P,PChar(D[i].Name));
       Inc(P);
       end;
     P^:=#0;
@@ -184,13 +186,13 @@ Procedure TCustomDaemonApplication.SysInstallDaemon(Daemon : TCustomDaemon);
 
 Var
   SM,SV: SC_HANDLE;
-  SD,N,DN,E,LG,UN,UP : AnsiString;
+  SD,N,DN,E,LG,UN,UP : String;
   DD : TDaemonDef;
   ST,STT,ES: Integer;
   IDTag : DWord;
   PIDTag : LPDWord;
-  PDeps,PN,PP : PAnsiChar;
-  D : TServiceDescriptionA;
+  PDeps,PN,PP : PChar;
+  D : TServiceDescription;
   
 begin
   SM:=TSMData(FSysData).FHandle;
@@ -211,12 +213,12 @@ begin
     If (UN='') then
       PN:=Nil
     else
-      PN:=PAnsiChar(UN);
+      PN:=PChar(UN);
     UP:=Password;
     if (UP='') then
       PP:=Nil
     else
-      PP:=PAnsiChar(UP);
+      PP:=PChar(UP);
     // ServiceType ST
       ST:=WinServiceTypes[ServiceType];
     if (doInteractive in DD.Options) and (ServiceType=stWin32)  then
@@ -237,13 +239,13 @@ begin
     PDeps:=GetDependencies(Dependencies);
     end;
   Try
-    SV:=CreateService(SM, PAnsiChar(N), PAnsiChar(DN), SERVICE_ALL_ACCESS, ST, STT, ES,
-                      PAnsiChar(E), PAnsiChar(LG), PIDTag, PDeps, PN, PP);
+    SV:=CreateService(SM, PChar(N), PChar(DN), SERVICE_ALL_ACCESS, ST, STT, ES,
+                      PChar(E), PChar(LG), PIDTag, PDeps, PN, PP);
     If (SV=0) then
       RaiseLastOSError;
     Try
       SD:=DD.Description;
-      D.lpDescription:=PAnsiChar(SD);
+      D.lpDescription:=PChar(SD);
       ChangeServiceConfig2(SV,SERVICE_CONFIG_DESCRIPTION,@D);
       If (PIDTag<>Nil) then
         DD.WinBindings.IDTag:=IDTag;
@@ -264,7 +266,7 @@ var
 begin
   SM:=TSMData(FSysData).FHandle;
   DN:=Daemon.Definition.Name;
-  SV:=OpenService(SM,PAnsiChar(DN),SERVICE_ALL_ACCESS);
+  SV:=OpenServiceA(SM,PAnsiChar(DN),SERVICE_ALL_ACCESS);
   if (SV=0) then
     RaiseLastOSError;
   try
@@ -384,6 +386,7 @@ Var
   P : PServiceTableEntry;
   I,C : Integer;
   RV : Integer;
+  SN : AnsiString;
   
 begin
   GetMem(P,SizeOf(TServiceTableEntry)*(FMapper.DaemonDefs.Count+1));
@@ -392,7 +395,7 @@ begin
     For I:=0 to C-1 do
       If Assigned(FMapper.DaemonDefs[i].Instance) then
         begin
-        P[i].lpServiceName:=PAnsiChar(FMapper.DaemonDefs[i].Name);
+        P[i].lpServiceName:=PChar(FMapper.DaemonDefs[i].Name);
         P[i].lpServiceProc:=@ServiceMainEntry;
         end;
     // Set last entry to Nil.
@@ -506,7 +509,7 @@ begin
 end;
 
 
-procedure TDaemonController.Main(Argc: DWord; Args: PPAnsiChar);
+procedure TDaemonController.Main(Argc: DWord; Args: PPChar);
 
 Var
   T : TThread;

+ 49 - 44
packages/fcl-process/src/processunicode.pp

@@ -1,44 +1,49 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<CONFIG>
-  <ProjectOptions>
-    <Version Value="12"/>
-    <General>
-      <Flags>
-        <MainUnitHasCreateFormStatements Value="False"/>
-        <MainUnitHasTitleStatement Value="False"/>
-        <MainUnitHasScaledStatement Value="False"/>
-        <UseDefaultCompilerOptions Value="True"/>
-      </Flags>
-      <SessionStorage Value="InProjectDir"/>
-      <MainUnit Value="-1"/>
-      <UseAppBundle Value="False"/>
-      <ResourceType Value="res"/>
-    </General>
-    <BuildModes>
-      <Item Name="default" Default="True"/>
-    </BuildModes>
-    <PublishOptions>
-      <Version Value="2"/>
-      <UseFileFilters Value="True"/>
-    </PublishOptions>
-    <RunParams>
-      <FormatVersion Value="2"/>
-    </RunParams>
-  </ProjectOptions>
-  <CompilerOptions>
-    <Version Value="11"/>
-  </CompilerOptions>
-  <Debugging>
-    <Exceptions>
-      <Item>
-        <Name Value="EAbort"/>
-      </Item>
-      <Item>
-        <Name Value="ECodetoolError"/>
-      </Item>
-      <Item>
-        <Name Value="EFOpenError"/>
-      </Item>
-    </Exceptions>
-  </Debugging>
-</CONFIG>
+{
+    This file is part of the Free Component Library (FCL)
+    Copyright (c) 1999-2000 by the Free Pascal development team
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+{$mode objfpc}
+{$h+}
+unit processunicode;
+
+interface
+
+Uses Classes,
+     pipes,
+     SysUtils,
+     Math,
+     Process;
+
+Type
+  TProcessOption = process.TProcessOption;
+  TShowWindowOptions = process.TShowWindowOptions;
+  TStartupOption = process.TStartupOption ;
+  TProcessPriority = process.TProcessPriority;
+  TProcessOptions = process.TProcessOptions;
+  TStartupOptions = process.TStartupOptions;
+  {$ifdef UNIX}
+  TProcessForkEvent = Process.TProcessForkEvent;
+  {$endif UNIX}
+
+  TRunCommandEventCode = Process.TRunCommandEventCode;
+  TOnRunCommandEvent = Process.TOnRunCommandEvent;
+  EProcess = Process.EProcess;
+
+{$macro on}
+{$IF SIZEOF(CHAR)=1}
+// For unicode RTL, there is nothing to redefine.
+{$define processunicodestring}
+{$ENDIF}
+{$define TProcessnamemacro:=TProcess}
+
+{$i processbody.inc}
+
+end.