This commit is contained in:
michael 1999-05-16 20:16:31 +00:00
parent 02abe01902
commit 4d1a9c3bf8
13 changed files with 818 additions and 246 deletions

View File

@ -6,6 +6,8 @@ it uses special style files (fpc*.sty) which are also in the directory.
do a 'make dvi' to produce the dvi format of the docs.
a 'make html' will produce the html version (using latex2html).
a 'make ps' will produce PostScript documents.
a 'make pdf' will produce PDF (Portable Document Format) documents.
a 'make txt' will produce plain text documents.
If you want to produce dos docs, you can do a 'make htm' this will convert
the .html files to .htm files (including all references), suitable for a 8:3
@ -20,6 +22,7 @@ Why LaTeX ?
- because I like a printed copy of the manuals, HTML just isn't good enough
for this.
- I know LaTeX very well :) (mind you : html also !)
- It converts to many other formats.
- many other reasons.
In order to translate the things to HTML, I use latex2html, since it is the

View File

@ -302,24 +302,24 @@ None.
\SeeAlso
\end{function}
\latex{\inputlisting{dosex/ex1.pp}}
\html{\input{dosex/ex1.tex}}
\begin{function}{EnvCount}
\Declaration
Function EnvCount : longint;
\Description
\var{EnvCount} returns the number of environment variables.
\Errors
None.
\SeeAlso
\seef{EnvStr}, \seef{GetEnv}
\seef{EnvStr}, \seef{Dos:GetEnv}
\end{function}
\begin{function}{EnvStr}
\Declaration
Function EnvStr (Index: integer) : string;
\Description
\var{EnvStr} returns the \var{Index}-th \var{Name=Value} pair from the list
@ -329,7 +329,7 @@ The index of the first pair is zero.
The length is limited to 255 characters. This may cause problems under
\linux. The \linux unit solves this problem.
\SeeAlso
\seef{EnvCount}, \seef{GetEnv}
\seef{EnvCount}, \seef{Dos:GetEnv}
\end{function}
\latex{\inputlisting{dosex/ex13.pp}}
\html{\input{dosex/ex13.tex}}
@ -489,10 +489,10 @@ not implemented, i.e. the call does nothing.
\SeeAlso
\seep{SetCBreak}
\end{procedure}
\begin{procedurel}{GetDate}{Dos:GetDate}
\Declaration
Procedure GetDate (var year, month, mday, wday: word);
\Description
\var{GetDate} returns the system's date. \var{Year} is a number in the range
@ -705,9 +705,10 @@ On a \linux machine, this is not implemented (allthough a procedure
exists, it just doesn't do anything. The setting of the date is a
root-only privilege, and is hence not implemented.
\SeeAlso
\seep{GetDate},
\seep{Dos:GetDate},
\seep{SetTime}
\end{procedure}
\begin{procedure}{SetFAttr}
\Declaration
Procedure SetFAttr (var F; Attr: word);
@ -775,7 +776,7 @@ on a 24-hour time scale.
this call exists, but is not implemented on \linux,
as setting the time is a root-only privilege.
\SeeAlso
\seep{GetTime}, \seep{SetDate}
\seep{Dos:GetTime}, \seep{SetDate}
\end{procedure}
\begin{procedure}{SetVerify}
\Declaration

View File

@ -138,8 +138,8 @@
\newcommand{\seegraph}{\htmladdnormallink{graph}{../graph/graph.html}\xspace}
\newcommand{\seeprinter}{\htmladdnormallink{printer}{../printer/printer.html}\xspace}
\newcommand{\seego}{\htmladdnormallink{GO32}{../go32/go32.html}\xspace}
\newcommand{\seec}[1]{chapter \ref{ch:#1}\xspace}
\newcommand{\sees}[1]{section \ref{se:#1}\xspace}
\newcommand{\seec}[1]{chapter \ref{ch:#1}, page \pageref{ch:#1}\xspace}
\newcommand{\sees}[1]{section \ref{se:#1}, page \pageref{se:#1}\xspace}
%
% Nice environments
%
@ -171,5 +171,16 @@
%
% Some versions
%
\newcommand{\fpcversion}{0.99.8}
\newcommand{\fpcversion}{0.99.12}
%
% PDF support
%
\newif\ifpdf
\ifx\pdfoutput\undefined
\pdffalse
\else
\pdfoutput=1
\pdftrue
\fi
%
% end of fpc.sty

View File

@ -161,5 +161,16 @@
\newcommand{\win}{\textsc{Win32}\xspace}
\newcommand{\freebsd}{\textsc{FreeBSD}\xspace}
%
\newcommand{\fpcversion}{0.99.8}
\newcommand{\fpcversion}{0.99.12}
%
% PDF support
%
\newif\ifpdf
\ifx\pdfoutput\undefined
\pdffalse
\else
\pdfoutput=1
\pdftrue
\fi
%
% end of fpcman.sty

View File

@ -1527,6 +1527,18 @@ None.
\seefl{transfer\_buffer}{transferbuffer}, \seep{copyfromdos}
\seep{copytodos}
\end{functionl}
\begin{functionl}{transfer\_buffer}{transferbuffer}
\Declaration
Function transfer\_buffer : Longint;
\Description
\var{transfer\_buffer} returns the offset of the transfer buffer.
\Errors
None.
\SeeAlso
\seefl{tb\_size}{tbsize}
\end{functionl}
\begin{functionl}{unlock\_code}{unlockcode}
\Declaration
Function unlock\_code (functionaddr : pointer; size : Longint) : boolean;

View File

@ -47,5 +47,6 @@
%\input{printer.tex}
%\input{sockets.tex}
%\input{strings.tex}
\input{sysutils.tex}
%\input{sysutils.tex}
\input{makefile.tex}
\end{document}

View File

@ -31,12 +31,26 @@
\newcommand{\remark}[1]{\par$\rightarrow$\textbf{#1}\par}
\newcommand{\olabel}[1]{\label{option:#1}}
% We should change this to something better. See \seef etc.
\begin{document}
\title{Free Pascal \\ Programmers' manual}
\docdescription{Programmers' manual for \fpc, version \fpcversion}
\docversion{1.5}
\input{date.inc}
\author{Micha\"el Van Canneyt}
\latex{%
\ifpdf
\usepackage[pdftex,bookmarks=true]{hyperref}
\pdfcompresslevel=9
\pdfpagewidth=210mm
\pdfpageheight=297mm
\pdfinfo{/Author(Michael Van Canneyt)
/Title(Programmers' Guide)
/Subject(Free Pascal Programmers' guide)
/Keywords(Free Pascal)
}
\fi
}
\makeindex
\begin{document}
\maketitle
\tableofcontents
\newpage
@ -3694,4 +3708,402 @@ consequences of this is that the type \var{Integer} is redefined as
\item PChars are converted to strings automatically.
\end{enumerate}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Appendix E
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{Using \file{makefile.fpc}}
\label{ch:makefile}
\newcommand{\mvar}[1]{\var{\$(#1)}}
\section{Introduction}
\fpc comes with a special makefile, \file{kefile.fpc}, which can be incuded
in any makefile you use to compile with \fpc. There is a template
\file{Makefile} provided also. All sources from the \fpc team are copiled
with this system.
These files are installed in the following directories:
\begin{description}
\item[linux]
\item[Dos or Windows]
\end{description}
The template \file{Makefile} searches for the \file{makefile.fpc} in the
following places :
\begin{enumerate}
\item The {\em file} pointed to by the \var{FPCMAKE} environment variable.
\item The directory pointed to by the \var{FPCDIR} envinonment variable.
\item The directory pointed to by the \var{DEFAULTFPCDIR} make variable.
\item The current directory.
\end{enumerate}
Thus, setting \var{FPCMAKE} or \var{FPCDIR} as a environment string will
ensure that \file{makefile.fpc} is always found, and will be read by all
makefiles, derived from the template.
The following sections explain what variables are set by \var{makefile.fpc},
what variables it expects to be set, and what targets it defines. After
that, some settings in the template makefile are explained.
\section{Programs needed to use the makefile}
The following programs are needed by the makefile to function correctly:
\begin{description}
\item[cp] a copy program
\item[date] a program that prints the date.
\item[install] a program to install files.
\item[make] the \file{make} program, obviously.
\item[pwd] a program that prints the current working directory.
\item[rm] a program to delete files.
\end{description}
These are standard programs on linux system, with the possible exception of
\file{make}. For \dos or \windowsnt, they can be found in the
\file{gnuutils.zip} of the \fpc FTP site.
\section{Variables used by \file{makefile.fpc}}
In principle, the \var{makefile.fpc} only expects one variable to be set:
\begin{description}
\item[FPCDIR] This is the base directory of \fpc sources. The makefile
expects to find a directory \file{rtl} below this directory.
\end{description}
However, many variables can be set, and influence the behaviour of the
makefile.
The first set of variables controls the directories used in the makefile:
\begin{description}
\item[INC] this is a list of directories, separated by spaces, that will
be added as include directories to the compiler command-line.
\item[LIBDIR] is a list of library paths, separated by spaces. They are
prepended with \var{-Fl} and added to the compiler options.
\item[NEEDLIBDIR] is a space-separated list of library paths. They are
prepended with \var{-Fl} and added to the compiler options.
\item[NEEDOBJDIR] is a list of directories, separated by spaces, that is
added to the object files path, i.e. prepended with \var{-Fo}.
\item[NEEDUNITDIR] is a list of directories, separated by spaces, that are
added to the unit path of the compiler, i.e. they get \var {-Fu} prepended.
\item[OBJDIR] is a list of directories, separated by spaces, that is
added to the object files path, i.e. prepended with \var{-Fo}.
\item[OSINC] this is a space-separated list of OS-dependent directories
that will be added as include directories to the compiler command line.
\item[PROCINC] is a space-separated list of processor-dependent directories
that will be added as include directories to the compiler command-line.
\item[RTLDIR] Directory where the \var{RTL} unit sources are.
If \var{RTLDIR} is not set, it is set to \mvar{RTL}/\mvar{OS\_TARGET}. \\
If \var{RTL} is also not set, it is set to \mvar{FPCDIR}\var{/rtl/}\mvar{OS\_TARGET}.
\item[RTL] If \var{RTLDIR} is not set, \var{RTL} is used to construct
\var{RTLDIR}. \var{RTLDIR} is added to the compiler unit path, with \var{-Fu}
prepended.
\item[TARGETDIR] If set, this directory is added as the output directory of
the compiler, where all unis and executables are written, i.e. it gets
\var{-FE} prepended.
\item[UNIT] If \var{UNITDIR} is not set, \var{UNIT} is used to construct
\var{UNITDIR}. \var{UNITDIR} is added to the compiler unit path, with \var{-Fu}
prepended.
\item[UNITDIR] Directory where the \var{RTL} compiled units are.
If \var{UNITDIR} is not set, it is set to \mvar{UNIT}/\mvar{OS\_TARGET}. \\
If \var{UNIT} is also not set, it is set to \mvar{FPCDIR}\var{/rtl/}\mvar{OS\_TARGET}.
\item[UNITS] The content of this variable are appended to the
\var{BASEINSTALLDIR} variable to install the units.
\item[UNITTARGETDIR] If set, this directory is added as the output directory of
the compiler, where all units are written, i.e. it gets
\var{-FU} prepended. This overrides \var{TARGETDIR}.
\end{description}
The second set of variables controls the targets that are constructed
by the makefile:
\begin{description}
\item[DEFAULTUNITS] If defined, only units will be made by the makefile. If
not defined, then executables are made also.
\item[EXEOBJECTS] This is a list of executable names that will be compiled.
the makefile appends \mvar{EXEEXT} to these names.
\item[LOADEROBJECTS] is a list of space-separated names that identify
loaders to be compiled. This is mainly used in the compiler's RTL sources.
\item[UNITOBJECTS] This is a list of unit names that will be compiled. The
makefile appends \mvar{PPUEXT} to each of these names to form the unit file
name. The sourcename is formed by adding \mvar{PASEXT}.
\item[ZIPNAME] is the name of the archive that will be created by the
makefile.
\item[ZIPTARGET] is the target that is built before the archive is made.
this target is built first. If successful, the zip archive will be made.
\end{description}
The following variables control the compiler command-line:
\begin{description}
\item[CFGFILE] if this variable is set, it will be used as the name of the
config file to be used by the compiler.
\item[CPU] the CPU type is added as a define to the compiler command line.
Automatically determined by the makefile.
\item[LIBNAME] if smartlinking is requested (i.e. \var{SMARTLINK} is set to
\var{YES}), this is the name of the static library to produce. Don't add
\var{lib} to this, the compiler will do that.
\item[LIBTYPE] if set to \var{shared}, then the compiler will emit a shared
library, with name \var{LIBNAME}.If \var{LIBTYPE} is set to \var{static},
the compiler will emit a atatic, smartlinked library,
\item[NEEDGCCLIB] if this variable is defined, then the path to \file{libgcc}
is added to the library path.
\item[NEEDOTHERLIB] (\linux only) If this is defined, then the makefile will
append all directories that appear in \var{/etc/ld.so.conf} to the library path.
\item[OPT] Any options that you want to the compiler command-line.
\item[OPTDEF] Are optional defines, added to the command-line of the
compiler. They do not get \var{-d} prepended.
\item[OS\_TARGET] What platform you want to compile for. Added to the
compiler command-line with a \var{-T} prepended.
\item[SMARTLINK] if \var{SMARTLINK} is set to \var{YES} then the compiler
will output smartlinked units if \var{LIBTYPE} is not set to \var{shared}.
\end{description}
\section{Variables set by \file{makefile.fpc}}
All of the following variables are only set by \var{makefile.fpc}, if
they aren't already defined. This means that you can ovverride them by
setting them on the make command line, or setting them in the makefile you
use, BEFORE \file{makefile.fpc} is included.
The following directories are defined by the makefile:
\begin{description}
\item[BASEDIR] is set to the current directory if the \file{pwd} command is
available. If not, it is set to '.'.
\item[BASEINSTALLDIR] is the base for all directories where units are
installed. On \linux, this is set to\\
\mvar{PREFIXINSTALLDIR}\var{/lib/fpc/}\mvar{RELEASEVER}. On other systems,
it is set to \mvar{PREFIXINSTALLDIR}
\item[BININSTALLDIR] is set to \mvar{BASEINSTALLDIR}/\var{bin} on \linux,
and\\
\mvar{BASEINSTALLDIR}/\var{bin}/\mvar{OS\_TARGET} on other systems. This is
the place where binaries are installed.
\item[GCCLIBDIR] (\linux only) is set to the directory where \file{libgcc.a}
is.
\item[LIBINSTALLDIR] is set to \mvar{BASEINSTALLDIR} on \linux, and
\mvar{BASEINSTALLDIR}/\var{lib} on other systems.
\item[OTHERLIBDIR] (\linux only) is set to the full set of paths in \file{/etc/ld.so.conf}
\item[PREFIXINSTALLDIR] is set to \file{/usr} on \linux, \file{/pp} on \dos
or \windowsnt.
\item[SHARED\_LIBINSTALLDIR] is where shared libraries are
installed. This equals \mvar{PREFIXINSTALLDIR}/\var{lib} on \linux, and
\var{SHARED\_UNITINSTALLDIR} on other systems.
\item[SHARED\_UNITINSTALLDIR] is where units from libraries are
installed. This equals \mvar{UNITINSTALLDIR}/\var{shared}
\item[STATIC\_LIBINSTALLDIR] is where static libraries will be
installed. By default, it equals \mvar{STATIC\_UNITINSTALLDIR}.
\item[STATIC\_UNITINSTALLDIR] is where static, smartlinked units will be
installed. It equals \mvar{UNITINSTALLDIR}/\var{static}.
\item[UNITINSTALLDIR] is where units will be installed. This is set to\\
\mvar{BASEINSTALLDIR}/\mvar{UNITPREFIX} \\
on \linux. \\On other systems, it is
set to \\\mvar{BASEINSTALLDIR}/\mvar{UNITPREFIX}/\mvar{OS\_TARGET}.
\end{description}
The following variables are program names, used in makefile targets.
\begin{description}
\item[AS] The assembler. Default set to \file{as}.
\item[COPY] a file copy program. Default set to \file{cp -fp}.
\item[CMP] a program to compare files. Default set to \var{cmp}.
\item[DEL] a file removal program. Default set to \file{rm -f}.
\item[DELTREE] a directory removal program. Default set to \file{rm -rf}.
\item[DATE] a program to display the date.
\item[DIFF] a program to produce diff files.
\item[ECHO] an echo program.
\item[INSTALL] a program to install files. Default set to \file{install -m
644} on linux.
\item[INSTALLEXE] a program to install executable files. Default set to \file{install -m
755} on linux.
\item[LD] The linker. Default set to \file{ld}.
\item[LDCONFIG] (\linux only) the program used to update the loader cache.
\item[MKDIR] a program to create directories if the don't exist yet. Default
set to \file{install -m 755 -d}
\item[MOVE] a file move program. Default set to \file{mv -f}
\item[PP] the Free Pascal compiler
\item[PPAS] the name of the shell script created by the compiler if the
\var{-s} option is specified. This command will be executed after
compilation, if the \var{-s} option was detected among the options.
\item[PPUMOVE] the program to move units into one big unit library.
\item[SED] a stream-line editor program. Default set to \file{sed}.
\item[UPX] an executable packer to compress your executables into
self-extracting compressed executables.
\item[ZIPEXE] a zip program to compress files. zip targets are made with
this program
\end{description}
The following variables denote extensions of files. These variables include
the \var{.} (dot) of the extension. They are appended to object names.
\begin{description}
\item[ASMEXT] is the extension of assembler files produced by the compiler.
\item[LOADEREXT] is the extension of the assembler files that make up the
executable startup code.
\item[OEXT] is the extension of the object files that the compiler creates.
\item[PACKAGESUFFIX] is a suffix that is appended to package names in zip
targets. This serves so packages can be made for different OSes.
\item[PASEXT] is the extension of pascal files used in the compile rules.
it is determined by looking at the first \var{EXEOBJECTS} source file or
the first \var{UNITOBJECTS} files.
\item[PPLEXT] is the extension of shared-library unit files.
\item[PPUEXT] is the extension of default units.
\item[SHAREDLIBEXT] is the extension of shared libraries.
\item[SMARTEXT] is the extension of smartlinked unit assembler files.
\item[STATICLIBEXT] is the extension of static libraries.
\end{description}
The following variables are defined to make targets and rules easier:
\begin{description}
\item[COMPILER] is the compltere compiler commandline, with all options
added, after all Makefile variables have been examined.
\item[DATESTR] contains the date.
\item[EXEFILES] is a list of executables that will be created by the
makefile.
\item[EXEOFILES] is a list of executable object files that will be created
by the makefile.
\item[LOADEROFILES] is a list of object files that will be made from the
loader assembler files. This is mainly for use in the compiler's RTL sources.
\item[UNITFILES] a list of unit files that will be made. This is just
the list of unit objects, with the correct unit extension appended.
\item[UNITOFILES] a list of unit object files that will be made.
This is just the list of unit objects, with the correct object file
extension appended.
\end{description}
\section{Rules and targets created by \file{makefile.fpc}}
The \var{makefile.fpc} defines a series of targets, which can be called by
your own targets. They have names that resemble default names (such as
'all', 'clean', only they have \var{fpc\_} prepended.
The makefile makes the following pattern rules:
\begin{description}
\item[units] How to make a pascal unit form a pascal source file.
\item[executables] how to make an executable from a pascal source file.
\item[object file] how to make an object file from an assembler file.
\end{description}
The following build targets are defined:
\begin{description}
\item[fpc\_all] Target that builds all units and executables as well as
loaders. If \var{DEFAULTUNITS} is defined, executables are excluded from the
targets.
\item[fpc\_exes] Target to make all executables in \var{EXEOBJECTS}.
\item[fpc\_loaders] Target to make all files in \var{LOADEROBJECTS}.
\item[fpc\_sharedlib] Target that makes all units as dynamic libraries.
\item[fpc\_staticlib] Target that makes all units as smartlinked units.
\item[fpc\_units] Target to make all units in \var{UNITOBJECTS}.
\end{description}
The following cleaning targets are defined:
\begin{description}
\item[fpc\_clean] cleans all files that result when \var{fpc\_all} was made.
\item[fpc\_libsclean] is the same as \var{fpc\_clean}, but removes any
shared or dynamic libraries that may have been built.
\item[fpc\_cleanall] is the same as both previous target commands.
\end{description}
The following archiving targets are defined:
\begin{description}
\item[fpc\_zipinstalladd] will add to a (possibibly existing) archive file (it's
name is taken from \mvar{ZIPNAME}.
\item[fpc\_zipinstall] is the same, only the archive is cleared first.
\end{description}
The zip is made uzing the \var{ZIPEXE} program. Under \linux, a
\file{.tar.gz} file is created.
The following targets produce information about the makefile:
\begin{description}
\item[fpc\_cfginfo] Gives generl configuration information: the location of
the makefile, the compiler version, target OS, CPU.
\item[fpc\_dirinfo] Gives the directories, used by the compiler.
\item[fpc\_info] Executes all other info targets.
\item[fpc\_installinfo] Gives all directories where files will be installed.
\item[fpc\_objectinfo] lists all objects that will be made.
\item[fpc\_toolsinfo] lists all defined tools.
\end{description}
\section{Using the provided template}
The template makefile that comes with \fpc does nothing other than
offering you some variables to be set for the \file{makefile.fpc}.
After that it loads the \var{makefile.fpc} in the indixated places.
Finally it declares a set of default targets:
\begin{description}
\item[all] calls fpc\_all.
\item[clean] calls fpc\_clean.
\item[install] calls fpc\_install.
\item[info] calls fpc\_info.
\item[staticlib] calls fpc\_staticlib.
\item[sharedlib] calls fpc\_sharedlib.
\item[libsclean] calls fpc\_libsclean.
\item[staticinstall] calls fpc\_staticinstall.
\item[sharedinstall] calls fpc\_sharedinstall.
\item[libinstall] calls fpc\_libinstall.
\end{description}
You can override each of these targets to suit your setup.
If you just have to compile some units and programs, you only need to set
the following variables:
\begin{description}
\item[UNITOBJECTS] names of units you wish to be built.
\item[EXEOBJECTS] names of executables you wish to be built.
\end{description}
You may want to set some of the following variables:
\begin{description}
\item[INC,PROCINC or OSINC] To indicate where include files can be found.
\item[NEEDOPT] additional optionas added to the compile command.
\item[NEEDUNITDIR] space-separated list of directories where units that you
need are located.
\item[TARGETDIR,UNITTARGETDIR] where do you want executables and units to
be written. Be aware that setting this variable may interfere with
\var{make}, since it will not find the target files.
\item[DEFAULTUNITS] if you define this variable (to whatever value you want)
then the \var{all} target will by default only make the units.
\end{description}
You may also set any of the variables that appear in the previous sections,
to override default behaviour of the makefile.
After having set these variables, you can run 'make info' to see whether all
variables are set to you satisfaction. If the \file{makefile.fpc} is not
found, this command will inform you of this.
After that, a simple 'make all' will make all units and executables.
\end{document}

View File

@ -39,6 +39,19 @@
\usepackage{fancyheadings}
\pagestyle{fancy}
\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
\latex{%
\ifpdf
\usepackage[pdftex,bookmarks=true]{hyperref}
\pdfcompresslevel=9
\pdfpagewidth=210mm
\pdfpageheight=297mm
\pdfinfo{/Author(Michael Van Canneyt)
/Title(Standard units Reference Guide)
/Subject(Free Pascal Reference guide)
/Keywords(Free Pascal, Language, System Unit)
}
\fi
}
\makeindex
%
% start of document.

View File

@ -548,24 +548,31 @@ The system file table is full.
\SeeAlso
\seef{SocketPair}, \seem{socket}{2}
\end{function}
for an example, see \seef{Accept}.
\begin{function}{SocketPair}
\Declaration
Function SocketPair (Domain,SocketType,Protocol:Longint;var Pair:TSockArray) : Longint;
\Description
\var{SocketPair} creates 2 sockets in domain \var{Domain}, from type
\var{SocketType} and using protocol \var{Protocol}.
The pair is returned in \var{Pair}, and they are indistinguishable.
The function returns -1 upon error and 0 upon success.
\Errors
Errors are reported in \var{SocketError}, and are the same as in \seef{Socket}
\SeeAlso
Str2UnixSockAddr{(const addr:string;var t:TUnixSockAddr;var len:longint)}
\seep{Str2UnixSockAddr}
\end{function}
{\var{Str2UnixSockAddr} transforms a Unix socket address in a string to a
\var{TUnixSockAddr} sturcture which can be passed to the \seef{Bind} call.
}
{None.}
{\seef{Socket}, \seef{Bind}}
\begin{procedure}{Str2UnixSockAddr}
\Declaration
Procedure Str2UnixSockAddr(const addr:string;var t:TUnixSockAddr;var len:longint)
\Description
\var{Str2UnixSockAddr} transforms a Unix socket address in a string to a
\var{TUnixSockAddr} structure which can be passed to the \seef{Bind} call.
\Errors
None.
\SeeAlso
\seef{Socket}, \seef{Bind}
\end{procedure}

View File

@ -25,24 +25,20 @@ Since the unit only provides some procedures and functions, there is
only one section, which gives the declarations of these functions, together
with an explanation.
\section{Functions and procedures.}
\begin{procedure}{StrAlloc}
\begin{function}{StrAlloc}
\Declaration
Procedure StrAlloc (Len : Longint);
Function StrAlloc (Len : Longint);PChar
\Description
PChar
\Errors
\var{StrAlloc} reserves memory on the heap for a string with length \var{Len},
terminating \var{\#0} included, and returns a pointer to it.
\Errors
If there is not enough memory, a run-time error occurs.
\SeeAlso
StrPCopy.
\end{procedure}
\seef{StrNew}, \seef{StrPCopy}.
\end{function}
\begin{function}{StrCat}
\Declaration
Function StrCat (Dest,Source : PChar) : PChar;
\Description
Attaches \var{Source} to \var{Dest} and returns \var{Dest}.

View File

@ -55,7 +55,7 @@ type
end ;
\end{verbatim}
The following type is used in the \seef{FindFirst},\seef{FindNext}
and \seep{FindClose} functions. The \var{win32} version differs from
and \seepl{FindClose}{FindCloseSys} functions. The \var{win32} version differs from
the other versions. If code is to be portable, that part shouldn't
be used.
\begin{verbatim}
@ -90,6 +90,14 @@ Const
fmOpenWrite = $0001;
fmOpenReadWrite = $0002;
\end{verbatim}
The following constants can be used in the \seef{FileSeek} call.
\begin{verbatim}
Const
fsFromBeginning = 0;
fsFromCurrent = 1;
fsFromEnd = 2;
\end{verbatim}
The following variables are used in the case translation routines.
\begin{verbatim}
type
@ -704,7 +712,7 @@ None.
\Declaration
Function AddDisk (Const PAth : String) : Longint;
\Description
On Linux both the \seef{Diskfree} and \seef{Disksize} functions need a
On Linux both the \seef{DiskFree} and \seef{DiskSize} functions need a
file on the specified drive, since is required for the statfs system call.
These filenames are set in drivestr[0..26], and the first 4 have been
@ -723,7 +731,7 @@ add more than 21 drives, the count is wrapped to 4.
\Errors
None.
\SeeAlso
\seef{DiskFree}, \seef{DiskSize}
\seefl{DiskFree}{DiskFreeSys}, \seefl{DiskSize}{DiskSizeSys}
\end{functionl}
\begin{function}{CreateDir}
@ -745,7 +753,7 @@ In case of an error, the function returns \var{False}.
\latex{\inputlisting{sysutex/ex26.pp}}
\html{\input{sysutex/ex26.tex}}
\begin{function}{DiskFree}
\begin{functionl}{DiskFree}{DiskFreeSys}
\Declaration
Function DiskFree(Drive : Byte) : Longint;
\Description
@ -767,13 +775,13 @@ For more information, see \seef{AddDisk}
\Errors
On error, \var{-1} is returned.
\SeeAlso
\seef{DiskSize}, \seef{AddDisk}
\end{function}
\seefl{DiskSize}{DiskSizeSys}, \seef{AddDisk}
\end{functionl}
\latex{\inputlisting{sysutex/ex27.pp}}
\html{\input{sysutex/ex27.tex}}
\begin{function}{DiskSize}
\begin{functionl}{DiskSize}{DiskSizeSys}
\Declaration
Function DiskSize(Drive : Byte) : Longint;
\Description
@ -795,10 +803,10 @@ For more information, see \seef{AddDisk}
\Errors
On error, \var{-1} is returned.
\SeeAlso
\seef{DiskFree}, \seef{AddDisk}
\end{function}
\seefl{DiskFree}{DiskFreeSys}, \seef{AddDisk}
\end{functionl}
For an example, see \seef{DiskFree}.
For an example, see \seefl{DiskFree}{DiskFreeSys}.
\begin{function}{GetCurrentDir}
\Declaration
@ -876,7 +884,7 @@ otherwise.
\Errors
On error, \var{False} is returned.
\SeeAlso
\seef{CreateFile}, \seef{FileExists}
\seef{FileCreate}, \seef{FileExists}
\end{function}
\latex{\inputlisting{sysutex/ex31.pp}}
@ -1062,7 +1070,8 @@ None.
\seef{FileTruncate}, \seef{FileSeek}
\end{procedure}
For an example, see \seef{FileCreate}
\begin{function}{FileCreate}
\Declaration
Function FileCreate(Const FileName : String) : Longint;
@ -1077,11 +1086,13 @@ overwritten.
If an error occurs (e.g. disk full or non-existent path), the function
returns \var{-1}.
\SeeAlso
\seef{FileClose}, \seef{FileWrite}, \seef{FileOpen}, \seef{FileRead},
\seep{FileClose}, \seef{FileWrite}, \seef{FileOpen}, \seef{FileRead},
\seef{FileTruncate}, \seef{FileSeek}
\end{function}
\latex{\inputlisting{sysutex/ex37.pp}}
\html{\input{sysutex/ex37.tex}}
\begin{function}{FileExists}
\Declaration
Function FileExists(Const FileName : String) : Boolean;
@ -1094,6 +1105,10 @@ None.
\seef{FileAge}, \seef{FileGetAttr}, \seef{FileSetAttr}
\end{function}
\latex{\inputlisting{sysutex/ex38.pp}}
\html{\input{sysutex/ex38.tex}}
\begin{function}{FileGetAttr}
\Declaration
@ -1118,370 +1133,428 @@ In case of error, -1 is returned.
\seef{FileSetAttr}, \seef{FileAge}, \seef{FileGetDate}.
\end{function}
\latex{\inputlisting{sysutex/ex40.pp}}
\html{\input{sysutex/ex40.tex}}
\begin{function}{FileGetDate}
\Declaration
Function FileGetDate(Handle : Longint) : Longint;
\Description
\var{FileGetdate} returns the filetime of the opened file with filehandle
\var{Handle}. It is the same as \seef{FileAge}, with this difference that
\var{FileAge} only needs the file name, while \var{FilegetDate} needs an
open file handle.
\Errors
On error, -1 is returned.
\SeeAlso
\seef{FileAge}
\end{function}
\latex{\inputlisting{sysutex/ex39.pp}}
\html{\input{sysutex/ex39.tex}}
\begin{function}{FileOpen}
\Declaration
Function FileOpen(Const FileName : string; Mode : Integer) : Longint;
\Description
\var{FileOpen} opens a file with name \var{FileName} with mode \var{Mode}.
\var{Mode} can be one of the following constants:
\begin{description}
\item[fmOpenRead] The file is opened for reading.
\item[fmOpenWrite] The file is opened for writing.
\item[fmOpenReadWrite] The file is opened for reading and writing.
\end{description}
If the file has been successfully opened, it can be read from or written to
(depending on the \var{Mode} parameter) with the \seef{FileRead} and
\var{FileWrite} functions.
Remark that you cannot open a file if it doesn't exist yet, i.e. it will not
be created for you. If you want tp create a new file, or overwrite an old
one, use the \seef{FileCreate} function.
\Errors
On Error, -1 is returned.
\SeeAlso
\seef{FileClose}, \seef{FileWrite}, \seef{FileCreate}, \seef{FileRead},
\seep{FileClose}, \seef{FileWrite}, \seef{FileCreate}, \seef{FileRead},
\seef{FileTruncate}, \seef{FileSeek}
\end{function}
For an example, see \seef{FileRead}
\begin{function}{FileRead}
\Declaration
Function FileRead(Handle : Longint; Var Buffer; Count : longint) : Longint;
\Description
\var{FileRead} reads \var{Count} bytes from file-handle \var{Handle} and
stores them into \var{Buffer}. Buffer must be at least \var{Count} bytes
long. No checking on this is performed, so be careful not to overwrite any
memory. \var{Handle} must be the result of a \seef{FileOpen} call.
\Errors
On error, -1 is returned.
\SeeAlso
\seef{FileClose}, \seef{FileWrite}, \seef{FileCreate}, \seef{FileOpen},
\seep{FileClose}, \seef{FileWrite}, \seef{FileCreate}, \seef{FileOpen},
\seef{FileTruncate}, \seef{FileSeek}
\end{function}
For an example, see \seef{FileOpen}
\begin{function}{FileSearch}
\Declaration
Function FileSearch(Const Name, DirList : String) : String;
\Description
\var{FileSearch} looks for the file \var{Name} in \var{DirList}, where
dirlist is a list of directories, separated by semicolons or colons.
It returns the full filename of the first match found.
\Errors
On error, an empty string is returned.
\SeeAlso
\seef{ExpandFileName}, \seef{FindFirst}
\end{function}
\latex{\inputlisting{sysutex/ex41.pp}}
\html{\input{sysutex/ex41.tex}}
\begin{function}{FileSeek}
\Declaration
Function FileSeek(Handle,Offset,Origin : Longint) : Longint;
\Description
\var{FileSeek} sets the file pointer on position \var{Offset}, starting from
\var{Origin}. Origin can be one of the following values:
\begin{description}
\item[fsFromBeginning] \var{Offset} is relative to the first byte of the file. This
position is zero-based. i.e. the first byte is at offset 0.
\item[fsFromCurrent] \var{Offset} is relative to the current position.
\item[fsFromEnd] \var{Offset} is relative to the end of the file. This means
that \var{Offset} can only be zero or negative in this case.
\end{description}
If successfull, the function returns the new file position, relative to the
beginning of the file.
{\em Remark:} The abovementioned constants do not exist in Delphi.
\Errors
On error, -1 is returned.
\SeeAlso
\seef{FileClose}, \seef{FileWrite}, \seef{FileCreate}, \seef{FileOpen}
\seep{FileClose}, \seef{FileWrite}, \seef{FileCreate}, \seef{FileOpen}
\seef{FileRead}, \seef{FileTruncate}
\end{function}
\latex{\inputlisting{sysutex/ex42.pp}}
\html{\input{sysutex/ex42.tex}}
For an example, see \seef{FileCreate}
\begin{function}{FileSetAttr}
\begin{functionl}{FileSetAttr (Not on Linux)}{FileSetAttr}
\Declaration
Function FileSetAttr(Const Filename : String; Attr: longint) : Longint;
\Description
\var{FileSetAttr} sets the attributes of \var{FileName} to \var{Attr}.
If the function was successful, 0 is returned, -1 otherwise.
\var{Attr} can be set to an OR-ed combination of the pre-defined
\var{faXXX} constants.
\Errors
On error, -1 is returned (always on linux).
\SeeAlso
\end{function}
\seef{FileGetAttr}, \seef{FileGetDate}, \seef{FileSetDate}.
\end{functionl}
\begin{function}{FileSetDate}
\begin{functionl}{FileSetDate (Not on Linux)}{FileSetDate}
\Declaration
Function FileSetDate(Handle,Age : Longint) : Longint;
\Description
\var{FileSetDate} sets the file date of the file with handle \var{Handle}
to \var{Age}, where \var{Age} is a DOS date-and-time stamp value.
The function returns zero of successfull.
\Errors
On Linux, -1 is always returned, since this is impossible to implement.
On Windows and DOS, a negative error code is returned.
\SeeAlso
\end{function}
\end{functionl}
\begin{function}{FileTruncate}
\Declaration
Function FileTruncate(Handle,Size: Longint) : boolean;
\Description
\var{FileTruncate} truncates the file with handle \var{Handle} to
\var{Size} bytes. The file must have been opened for writing prior
to this call. The function returns \var{True} is successful, \var{False}
otherwise.
\Errors
On error, the function returns \var{False}.
\SeeAlso
\seef{FileClose}, \seef{FileWrite}, \seef{FileCreate}, \seef{FileOpen}
\seep{FileClose}, \seef{FileWrite}, \seef{FileCreate}, \seef{FileOpen}
\seef{FileRead}, \seef{FileSeek}
\end{function}
For an example, see \seef{FileCreate}.
\begin{function}{FileWrite}
\Declaration
Function FileWrite(Handle : Longint; Var Buffer; Count : Longint) : Longint;
\Description
\var{FileWrite} writes \var{Count} bytes from \var{Buffer} to the file with
handle \var{Handle}. Prior to this call, the file must have been opened
for writing. \var{Buffer} must be at least \var{Count} bytes large, or
a memory access error may occur.
The function returns the number of bytes written, or -1 in case of an
error.
\Errors
In case of error, -1 is returned.
\SeeAlso
\seef{FileClose}, \seef{FileCreate}, \seef{FileOpen}
\seep{FileClose}, \seef{FileCreate}, \seef{FileOpen}
\seef{FileRead}, \seef{FileTruncate}, \seef{FileSeek}
\end{function}
\begin{procedure}{FindClose}
For an example, see \seef{FileCreate}.
\begin{procedurel}{FindClose}{FindCloseSys}
\Declaration
Procedure FindClose(Var F : TSearchrec);
\Description
\var{FindClose} ends a series of \seef{FindFirst}/\seef{FindNext} calls,
and frees any memory used by these calls. It is {\em absolutely} necessary
to do this call, or huge memory losses may occur.
\Errors
None.
\SeeAlso
\end{procedure}
\seef{FindFirst}, \seef{FindNext}.
\end{procedurel}
For an example, see \seef{FindFirst}.
\begin{function}{FindFirst}
\Declaration
Function FindFirst(Const Path : String; Attr : Longint; Var Rslt : TSearchRec) : Longint;
\Description
\var{FindFirst} looks for files that match the name (possibly with
wildcards) in \var{Path} and attributes \var{Attr}. It then fills up the
\var{Rslt} record with data gathered about the file. It returns 0 if a file
matching the specified criteria is found, a nonzero value (-1 on linux)
otherwise.
The \var{Rslt} record can be fed to subsequent calls to \var{FindNext}, in
order to find other files matching the specifications.
{\em remark:} A \var{FindFirst} call must {\em always} be followed by a
\seepl{FindClose}{FindCloseSys} call with the same \var{Rslt} record. Failure to do so will
result in memory loss.
\Errors
On error the function returns -1 on linux, a nonzero error code on Windows.
\SeeAlso
\seep{FindClose}{FindCloseSys}, \seef{FindNext}.
\end{function}
\latex{\inputlisting{sysutex/ex43.pp}}
\html{\input{sysutex/ex43.tex}}
\begin{function}{FindNext}
\Declaration
Function FindNext(Var Rslt : TSearchRec) : Longint;
\Description
\var{FindNext} finds a next occurrence of a search sequence initiated by
\var{FindFirst}. If another record matching the criteria in Rslt is found, 0
is returned, a nonzero constant is returned otherwise.
{\em remark:} The last \var{FindNext} call must {\em always} be followed by a
\var{FindClose} call with the same \var{Rslt} record. Failure to do so will
result in memory loss.
\Errors
On error (no more file is found), a nonzero constant is returned.
\SeeAlso
\seef{FindFirst}, \seep{FindClose}
\end{function}
For an example, see \seef{FindFirst}
\begin{function}{GetDirs}
\Declaration
Function GetDirs(Var DirName : String; Var Dirs : Array of pchar) : Longint;
\Description
\var{GetDirs} splits DirName in a null-byte separated list of directory names,
\var{Dirs} is an array of \var{PChars}, pointing to these directory names.
The function returns the number of directories found, or -1 if none were found.
DirName must contain only OSDirSeparator as Directory separator chars.
\Errors
None.
\SeeAlso
\seef{ExtractRelativePath}
\end{function}
\latex{\inputlisting{sysutex/ex45.pp}}
\html{\input{sysutex/ex45.tex}}
\begin{function}{RenameFile}
\Declaration
Function RenameFile(Const OldName, NewName : String) : Boolean;
\Description
\var{RenameFile} renames a file from \var{OldName} to \var{NewName}. The
function returns \var{True} if successful, \var{False} otherwise.
{\em Remark:} you cannot rename across disks or partitions.
\Errors
On Error, \var{False} is returned.
\SeeAlso
\seef{DeleteFile}
\end{function}
\latex{\inputlisting{sysutex/ex44.pp}}
\html{\input{sysutex/ex44.tex}}
\begin{function}{SetDirSeparators}
\Declaration
Function SetDirSeparators(Const FileName : String) : String;
\Description
\var{SetDirSeparators} returns \var{FileName} with all possible
DirSeparators replaced by \var{OSDirSeparator}.
\Errors
None.
\SeeAlso
\seef{ExpandFileName}, \seef{ExtractFilePath}, \seef{ExtractFileDir}
\end{function}
\latex{\inputlisting{sysutex/ex47.pp}}
\html{\input{sysutex/ex47.tex}}
\section{PChar functions}
\begin{function}{StrAlloc}
\subsection{Introduction}
Most PChar functions are the same as their counterparts in the \file{STRINGS}
unit. The following functions are the same :
\begin{enumerate}
\item \seef{StrCat} : Concatenates two \var{PChar} strings.
\item \seef{StrComp} : Compares two \var{PChar} strings.
\item \seef{StrCopy} : Copies a \var{PChar} string.
\item \seef{StrECopy} : Copies a \var{PChar} string and returns a pointer to
the terminating null byte.
\item \seef{StrEnd} : Returns a pointer to the terminating null byte.
\item \seef{StrIComp} : Case insensitive compare of 2 \var{PChar} strings.
\item \seef{StrLCat} : Appends at most L characters from one \var{PChar} to
another \var{PChar}.
\item \seef{StrLComp} : Case sensitive compare of at most L characters of 2
\var{PChar} strings.
\item \seef{StrLCopy} : Copies at most L characters from one \var{PChar} to
another.
\item \seef{StrLen} : Returns the length (exclusive terminating null byte)
of a \var{PChar} string.
\item \seef{StrLIComp} : Case insensitive compare of at most L characters of 2
\var{PChar} strings.
\item \seef{StrLower} : Converts a \var{PChar} to all lowercase letters.
\item \seef{StrMove} : Moves one \var{PChar} to another.
\item \seef{StrNew} : Makes a copy of a \var{PChar} on the heap, and returns
a pointer to this copy.
\item \seef{StrPos} : Returns the position of one \var{PChar} string in
another?
\item \seef{StrRScan} : returns a pointer to the last occurrence of on
\var{PChar} string in another one.
\item \seef{StrScan} : returns a pointer to the first occurrence of on
\var{PChar} string in another one.
\item \seef{StrUpper} : Converts a \var{PChar} to all uppercase letters.
\end{enumerate}
The subsequent functions are different from their counterparts in
\file{STRINGS}, although the same examples can be used.
\begin{functionl}{StrAlloc}{StrAllocSys}
\Declaration
Function StrAlloc(Size: cardinal): PChar;
\Description
\Errors
\SeeAlso
\end{function}
\var{StrAlloc} reserves memory on the heap for a string with length \var{Len},
terminating \var{\#0} included, and returns a pointer to it.
Additionally, \var{StrAlloc} allocates 4 extra bytes to store the size of
the allocated memory. Therefore this function is NOT compatible with the
\seef{StrAlloc} function of the \var{Strings} unit.
\Errors
None.
\SeeAlso
\seef{StrBufSize}, \seepl{StrDispose}{StrDisposeSys}, \seef{StrAlloc}
\end{functionl}
For an example, see \seef{StrBufSize}.
\begin{function}{StrBufSize}
\Declaration
Function StrBufSize(var Str: PChar): cardinal;
\Description
\var{StrBufSize} returns the memory allocated for \var{Str}. This function
ONLY gives the correct result if \var{Str} was allocated using
\seefl{StrAlloc}{StrAllocSys}.
\Errors
If no more memory is available, a runtime error occurs.
\SeeAlso
\seefl{StrAlloc}{StrAllocSys}.\seepl{StrDispose}{StrDisposeSys}.
\end{function}
\latex{\inputlisting{sysutex/ex46.pp}}
\html{\input{sysutex/ex46.tex}}
\begin{procedure}{StrDispose}
\begin{procedurel}{StrDispose}{StrDisposeSys}
\Declaration
Procedure StrDispose(var Str: PChar);
\Description
\var{StrDispose} frees any memory allocated for \var{Str}. This function
will only function correctly if \var{Str} has been allocated using
\seefl{StrAlloc}{StrAllocSys} from the \file{SYSUTILS} unit.
\Errors
If an invalid pointer is passed, or a pointer not allocated with
\var{StrAlloc}, an error may occur.
\SeeAlso
\end{procedure}
\seef{StrBufSize}, \seefl{StrAlloc}{StrAllocSys}, \seep{StrDispose}
\end{procedurel}
For an example, see \seef{StrBufSize}.
\begin{function}{StrPCopy}
\begin{functionl}{StrPCopy}{StrPCopySys}
\Declaration
Function StrPCopy(Dest: PChar; Source: string): PChar;
\Description
\var{StrPCopy} Converts the Ansistring in \var{Source} to a Null-terminated
string, and copies it to \var{Dest}. \var{Dest} needs enough room to contain
the string \var{Source}, i.e. \var{Length(Source)+1} bytes.
\Errors
No checking is performed to see whether \var{Dest} points to enough memory
to contain \var{Source}.
\SeeAlso
\end{function}
\seefl{StrPLCopy}{StrPLCopySys}, \seef{StrPCopy}
\end{functionl}
\begin{function}{StrPLCopy}
\begin{functionl}{StrPLCopy}{StrPLCopySys}
\Declaration
Function StrPLCopy(Dest: PChar; Source: string; MaxLen: cardinal): PChar;
\Description
\var{StrPLCopy} Converts maximally \var{MaxLen} characters of the
Ansistring in \var{Source} to a Null-terminated string, and copies
it to \var{Dest}. \var{Dest} needs enough room to contain
the characters.
\Errors
No checking is performed to see whether \var{Dest} points to enough memory
to contain L characters of \var{Source}.
\Errors
\SeeAlso
\end{function}
\seefl{StrPCopy}{StrPCopySys}.
\end{functionl}
\begin{function}{StrPas}
\begin{functionl}{StrPas}{StrPasSys}
\Declaration
Function StrPas(Str: PChar): string;
\Description
Converts a null terminated string in \var{Str} to an Ansitring, and returns
this string. This string is NOT truncated at 255 characters as is the
\Errors
None.
\SeeAlso
\end{function}
\seef{StrPas}.
\end{functionl}
\begin{function}{StrCat}
\Declaration
Function StrCat(dest,source : pchar) : pchar;
\Description
\Errors
\SeeAlso
\end{function}
\begin{function}{StrComp}
\Declaration
Function StrComp(str1,str2 : pchar) : longint;
\Description
\Errors
\SeeAlso
\end{function}
\begin{function}{StrCopy}
\Declaration
Function StrCopy(dest,source : pchar) : pchar;
\Description
\Errors
\SeeAlso
\end{function}
\begin{function}{StrECopy}
\Declaration
Function StrECopy(dest,source : pchar) : pchar;
\Description
\Errors
\SeeAlso
\end{function}
\begin{function}{StrEnd}
\Declaration
Function StrEnd(p : pchar) : pchar;
\Description
\Errors
\SeeAlso
\end{function}
\begin{function}{StrIComp}
\Declaration
Function StrIComp(str1,str2 : pchar) : longint;
\Description
\Errors
\SeeAlso
\end{function}
\begin{function}{StrLCat}
\Declaration
Function StrLCat(dest,source : pchar;l : longint) : pchar;
\Description
\Errors
\SeeAlso
\end{function}
\begin{function}{StrLComp}
\Declaration
Function StrLComp(str1,str2 : pchar;l : longint) : longint;
\Description
\Errors
\SeeAlso
\end{function}
\begin{function}{StrLCopy}
\Declaration
Function StrLCopy(dest,source : pchar;maxlen : longint) : pchar;
\Description
\Errors
\SeeAlso
\end{function}
\begin{function}{StrLen}
\Declaration
Function StrLen(p : pchar) : longint;
\Description
\Errors
\SeeAlso
\end{function}
\begin{function}{StrLIComp}
\Declaration
Function StrLIComp(str1,str2 : pchar;l : longint) : longint;
\Description
\Errors
\SeeAlso
\end{function}
\begin{function}{StrLower}
\Declaration
Function strlower(p : pchar) : pchar;
\Description
\Errors
\SeeAlso
\end{function}
\begin{function}{StrMove}
\Declaration
Function StrMove(dest,source : pchar;l : longint) : pchar;
\Description
\Errors
\SeeAlso
\end{function}
\begin{function}{StrNew}
\Declaration
Function StrNew(p : pchar) : pchar;
\Description
\Errors
\SeeAlso
\end{function}
\begin{function}{StrPos}
\Declaration
Function StrPos(str1,str2 : pchar) : pchar;
\Description
\Errors
\SeeAlso
\end{function}
\begin{function}{StrRScan}
\Declaration
Function StrRScan(p : pchar;c : char) : pchar;
\Description
\Errors
\SeeAlso
\end{function}
\begin{function}{StrScan}
\Declaration
Function StrScan(p : pchar;c : char) : pchar;
\Description
\Errors
\SeeAlso
\end{function}
\begin{function}{StrUpper}
\Declaration
Function StrUpper(p : pchar) : pchar;
\Description
\Errors
\SeeAlso
\end{function}
\section{String functions}
\section{String handling functions}
\begin{function}{AdjustLineBreaks}
\Declaration
@ -1672,13 +1745,13 @@ Function CompareText(const S1, S2: string): integer;
\end{function}
\begin{procedure}{DisposeStr}
\begin{procedurel}{DisposeStr}{DisposeStrSys}
\Declaration
Procedure DisposeStr(S: PString);
\Description
\Errors
\SeeAlso
\end{procedure}
\end{procedurel}
\begin{function}{FloatToStr}
@ -1780,13 +1853,13 @@ Function LowerCase(const s: string): string;
\end{function}
\begin{function}{NewStr}
\begin{functionl}{NewStr}{NewStrSys}
\Declaration
Function NewStr(const S: string): PString;
\Description
\Errors
\SeeAlso
\end{function}
\end{functionl}
\begin{function}{QuotedStr}

View File

@ -34,6 +34,19 @@
\usepackage{fancyheadings}
\pagestyle{fancy}
\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
\latex{%
\ifpdf
\usepackage[pdftex,bookmarks=true]{hyperref}
\pdfcompresslevel=9
\pdfpagewidth=210mm
\pdfpageheight=297mm
\pdfinfo{/Author(Michael Van Canneyt)
/Title(Standard units Reference Guide)
/Subject(Free Pascal Standard units reference guide)
/Keywords(Free Pascal, Units,RTL)
}
\fi
}
\makeindex
%
% start of document.
@ -108,6 +121,8 @@ lookup.
\input{sockets.tex}
% the strings unit
\input{strings.tex}
% the sysutils unit
\input{sysutils.tex}
% end of units. Index.
\printindex
\end{document}

View File

@ -21,7 +21,6 @@
\documentclass{report}
\usepackage{a4}
\usepackage{html}
\makeindex
\latex{\usepackage{multicol}}
\latex{\usepackage{fpcman}}
\latex{\usepackage{epsfig}}
@ -33,6 +32,20 @@
\newcommand{\olabel}[1]{\label{option:#1}}
% We should change this to something better. See \seef etc.
\newcommand{\seeo}[1]{See \ref{option:#1}}
\latex{%
\ifpdf
\usepackage[pdftex,bookmarks=true]{hyperref}
\pdfcompresslevel=9
\pdfpagewidth=210mm
\pdfpageheight=297mm
\pdfinfo{/Author(Michael Van Canneyt)
/Title(Users' Guide)
/Subject(Free Pascal Users' guide)
/Keywords(Free Pascal)
}
\fi
}
\makeindex
\begin{document}
\title{Free Pascal :\\ Users' manual}
\docdescription{Users' manual for \fpc, version \fpcversion}
@ -203,7 +216,11 @@ The screen of the installation program looks like figure \ref{fig:install}.
\begin{figure}
\caption{The \dos install program screen.}
\label{fig:install}
\ifpdf
\epsfig{file=pics/install.pdf,width=\textwidth}
\else
\epsfig{file=pics/install.eps,width=\textwidth}
\fi
\end{figure}
\end{latexonly}
@ -412,7 +429,7 @@ The examples in this section suppose that you have a \file{ppc386.cfg} which
is set up correctly, and which contains at least the path setting for the
RTL units. In principle this file is generated by the installation program.
You may have to check that it is in the correct place (see section
\ref{se:config_file} for more information on this).
\ref{se:configfile} for more information on this).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Where the compiler looks for its files.
@ -1088,7 +1105,7 @@ compiler to define only some very basic types.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Using the configuration file
\section{Using the configuration file}
\label{se:config_file}
\label{se:configfile}
Using the configuration file \file{ppc386.cfg} is an alternative to command
line options. When a configuration file is found, it is read, and the lines
in it are treated like you typed them on the command line. They are treated