mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-10-26 10:51:39 +01:00
* renamed platform-specific pchar versions of those rouines to do_*() and
changed them to either rawbytestring or unicodestring depending on the
FPCRTL_FILESYSTEM_SINGLE_BYTE_API/FPCRTL_FILESYSTEM_TWO_BYTE_API setting
* implemented generic shortstring versions of those routines on top of either
rawbytestring or unicodestring depending on the API-kind (in case of the
embedded target, if ansistring are not supported they will map directly
to shortstring routines instead)
* all platform-specific *dir() routines with rawbytestring parameters now
receive their parameters in DefaultFileSystemCodePage
- removed no longer required ansistring variants from the objpas unit
- removed no longer required FPC_SYS_MKDIR etc aliases
* factored out empty string and inoutres<>0 checks from platform-specific
*dir() routines to generic ones
o platform-specific notes:
o amiga/morphos: check new pathconv(rawbytestring) function
o macos TODO: convert PathArgToFSSpec (and the routines it calls) to
rawbytestring
o nativent: added SysUnicodeStringToNtStr() function
o wii: convert dirio callbacks to use rawbytestring to avoid conversion
+ test for unicode mk/ch/rm/getdir()
git-svn-id: branches/cpstrrtl@25048 -
80 lines
1.9 KiB
PHP
80 lines
1.9 KiB
PHP
{
|
|
This file is part of the Free Pascal run time library.
|
|
Copyright (c) 2004-2011 by Armin Diehl
|
|
|
|
FPC Pascal system unit for the netware API.
|
|
|
|
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.
|
|
|
|
**********************************************************************}
|
|
|
|
{*****************************************************************************
|
|
Directory Handling
|
|
*****************************************************************************}
|
|
|
|
Procedure do_MkDir(s: rawbytestring);
|
|
var
|
|
Rc : longint;
|
|
begin
|
|
DoDirSeparators(s);
|
|
Rc := _mkdir(pchar(s));
|
|
if Rc <> 0 then
|
|
SetFileError (Rc);
|
|
end;
|
|
|
|
|
|
procedure do_RmDir(s: rawbytestring);
|
|
var Rc : longint;
|
|
begin
|
|
if s = '.' then
|
|
begin
|
|
InOutRes := 16;
|
|
exit;
|
|
end;
|
|
DoDirSeparators(s);
|
|
Rc := _rmdir(pchar(s));
|
|
if Rc <> 0 then
|
|
SetFileError(Rc);
|
|
end;
|
|
|
|
|
|
procedure do_ChDir(s: rawbytestring);
|
|
var RC: longint;
|
|
begin
|
|
DoDirSeparators(s);
|
|
RC := _chdir (pchar(s));
|
|
if Rc <> 0 then
|
|
SetFileError(Rc);
|
|
end;
|
|
|
|
|
|
procedure do_getdir(drivenr : byte;var dir : rawbytestring);
|
|
VAR P : ARRAY [0..255] OF CHAR;
|
|
i : LONGINT;
|
|
begin
|
|
P[0] := #0;
|
|
_getcwd (@P, SIZEOF (P));
|
|
i := _strlen (P);
|
|
if i > 0 then
|
|
begin
|
|
SetLength (dir, i);
|
|
Move (P, dir[1], i);
|
|
DoDirSeparators(dir);
|
|
// fix / after volume, the compiler needs that
|
|
// normaly root of a volumes is SERVERNAME/SYS:, change that
|
|
// to SERVERNAME/SYS:/
|
|
i := pos (':',dir);
|
|
if (i > 0) then
|
|
if i = Length (dir) then dir := dir + '/' else
|
|
if dir [i+1] <> '/' then insert ('/',dir,i+1);
|
|
SetCodePage (dir,DefaultFileSystemCodePage,false);
|
|
END ELSE
|
|
InOutRes := 1;
|
|
end;
|
|
|