@@ -1,102 +1,175 @@
#
-# $Id$
-# Copyright (c) 1999 by the Free Pascal Development Team
+# Makefile generated by fpcmake v0.99.13 on 1999-11-14 16:42
-# Makefile for <template> for Free Pascal
-#
-# 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.
-
-#####################################################################
-# Defaults
-DEFAULTFPCDIR=..
+defaultrule: all
#####################################################################
-# Real targets
+# Autodetect OS (Linux or Dos or Windows NT)
+# define inlinux when running under linux
+# define inWinNT when running under WinNT
-all: alldirs
+# We need only / in the path
+override PATH:=$(subst \,/,$(PATH))
+
+# Search for PWD and determine also if we are under linux
+PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(subst ;, ,$(PATH)))))
+ifeq ($(PWD),)
+PWD:=$(strip $(wildcard $(addsuffix /pwd,$(subst :, ,$(PATH)))))
+nopwd:
+ @echo You need the GNU utils package to use this Makefile!
+ @echo Get ftp://ftp.freepascal.org/pub/fpc/dist/go32v2/utilgo32.zip
+ @exit
+else
+inlinux=1
+endif
+PWD:=$(firstword $(PWD))
-clean: cleanalldirs
+# Detect NT - NT sets OS to Windows_NT
+ifndef inlinux
+ifeq ($(OS),Windows_NT)
+inWinNT=1
-install: installalldirs
+# Detect OS/2 - OS/2 has OS2_SHELL defined
+ifndef inWinNT
+ifdef OS2_SHELL
+inOS2=1
+# The extension of executables
+ifdef inlinux
+EXEEXT=
+EXEEXT=.exe
+# The path which is search separated by spaces
+SEARCHPATH=$(subst :, ,$(PATH))
+SEARCHPATH=$(subst ;, ,$(PATH))
-# Include default makefile
+# FPC version/target Detection
-# test if FPCMAKE is still valid
-ifdef FPCMAKE
-ifeq ($(strip $(wildcard $(FPCMAKE))),)
-FPCDIR=
-FPCMAKE=
+# What compiler to use ?
+ifndef FPC
+ifdef inOS2
+export FPC=ppos2$(EXEEXT)
+export FPC=ppc386$(EXEEXT)
endif
-ifndef FPCDIR
-ifdef DEFAULTFPCDIR
-FPCDIR=$(DEFAULTFPCDIR)
+# Target OS
+ifndef OS_TARGET
+export OS_TARGET:=$(shell $(FPC) -iTO)
+# Source OS
+ifndef OS_SOURCE
+export OS_SOURCE:=$(shell $(FPC) -iSO)
-ifndef FPCMAKE
-ifdef FPCDIR
-FPCMAKE=$(FPCDIR)/makefile.fpc
-else
-FPCMAKE=makefile.fpc
+# Target CPU
+ifndef CPU_TARGET
+export CPU_TARGET:=$(shell $(FPC) -iTP)
+# Source CPU
+ifndef CPU_SOURCE
+export CPU_SOURCE:=$(shell $(FPC) -iSP)
-override FPCMAKE:=$(strip $(wildcard $(FPCMAKE)))
-ifeq ($(FPCMAKE),)
-testfpcmake:
- @echo makefile.fpc not found!
- @echo Check the FPCMAKE and FPCDIR environment variables.
- @exit
-include $(FPCMAKE)
+# FPC version
+ifndef FPC_VERSION
+export FPC_VERSION:=$(shell $(FPC) -iV)
+#####################################################################
+# Default Settings
+# Release ? Then force OPT and don't use extra opts via commandline
+ifdef RELEASE
+override OPT:=-Xs -OG2p3 -n
+# Verbose settings (warning,note,info)
+ifdef VERBOSE
+override OPT+=-vwni
+# User Settings
# Targets
+# Clean
+# Install
+# Defaults
+# Directories
+# Libraries
+# Default rules
-# Construct real targets
-.PHONY: all clean install info alldirs\
- staticlib sharedlib libsclean \
- staticinstall sharedinstall libinstall
+.PHONY: defaultrule all staticlib sharedlib showinstall install \
+ staticinstall sharedinstall libinstall zipinstall zipinstalladd \
+ clean cleanall depend info
+staticlib: fpc_staticlib
-clean: testfpcmake fpc_clean
+sharedlib: fpc_sharedlib
-install: testfpcmake fpc_install
+showinstall: fpc_showinstall
-info: testfpcmake fpc_info
+staticinstall: fpc_staticinstall
-staticlib: testfpcmake fpc_staticlib
+sharedinstall: fpc_sharedinstall
-sharedlib: testfpcmake fpc_sharedlib
+libinstall: fpc_libinstall
-libsclean: testfpcmake fpc_libsclean
+zipinstall: fpc_zipinstall
-staticinstall: testfpcmake fpc_staticinstall
+zipinstalladd: fpc_zipinstalladd
-sharedinstall: testfpcmake fpc_sharedinstall
+clean_all: fpc_clean_all
-libinstall: testfpcmake fpc_libinstall
+depend: fpc_depend
+info: fpc_info
-alldirs:
+# Users rules
+all:
$(MAKE) -C ibase
$(MAKE) -C mysql
$(MAKE) -C uncgi
@@ -109,7 +182,7 @@ ifdef inlinux
$(MAKE) -C svgalib
-cleanalldirs:
+clean:
$(MAKE) -C ibase clean
$(MAKE) -C mysql clean
$(MAKE) -C uncgi clean
@@ -122,7 +195,7 @@ ifdef inlinux
$(MAKE) -C svgalib clean
-installalldirs:
+install:
$(MAKE) -C ibase DEFAULTUNITS=1 install
$(MAKE) -C mysql DEFAULTUNITS=1 install
$(MAKE) -C uncgi DEFAULTUNITS=1 install
@@ -134,10 +207,3 @@ ifdef inlinux
$(MAKE) -C forms DEFAULTUNITS=1 install
$(MAKE) -C svgalib DEFAULTUNITS=1 install
-# $Log$
-# Revision 1.2 1999-06-08 18:28:22 peter
-# * fixes for 0.99.12 release
@@ -0,0 +1,46 @@
+#
+# Makefile.fpc for Free Component Library
+[sections]
+none=1
+[rules]
+ $(MAKE) -C ibase
+ $(MAKE) -C mysql
+ $(MAKE) -C uncgi
+ $(MAKE) -C utmp
+ $(MAKE) -C inet
+ $(MAKE) -C postgres
+ $(MAKE) -C ncurses
+ $(MAKE) -C forms
+ $(MAKE) -C svgalib
+ $(MAKE) -C ibase clean
+ $(MAKE) -C mysql clean
+ $(MAKE) -C uncgi clean
+ $(MAKE) -C utmp clean
+ $(MAKE) -C inet clean
+ $(MAKE) -C postgres clean
+ $(MAKE) -C ncurses clean
+ $(MAKE) -C forms clean
+ $(MAKE) -C svgalib clean
+ $(MAKE) -C ibase DEFAULTUNITS=1 install
+ $(MAKE) -C mysql DEFAULTUNITS=1 install
+ $(MAKE) -C uncgi DEFAULTUNITS=1 install
+ $(MAKE) -C utmp DEFAULTUNITS=1 install
+ $(MAKE) -C inet DEFAULTUNITS=1 install
+ $(MAKE) -C postgres DEFAULTUNITS=1 install
+ $(MAKE) -C ncurses DEFAULTUNITS=1 install
+ $(MAKE) -C forms DEFAULTUNITS=1 install
+ $(MAKE) -C svgalib DEFAULTUNITS=1 install
@@ -1,157 +1,937 @@
+# Makefile generated by fpcmake v0.99.13 on 1999-11-14 17:36
+# Pre Settings
# Version of forms
FORMSVERSION=88
#FORMSVERSION=86
-# Where are the include files located
-INC=
-PROCINC=
-OSINC=
+# Targets
-# Needed options, without it won't compile
-NEEDOPT=-S2
+UNITOBJECTS=x xresource xlib xutil forms
+EXEOBJECTS=fd2pascal
-# Needed unit dir, which is searched as the first path
-NEEDUNITDIR=
+EXTRACLEANUNITS=forms-88 forms-86
+EXTRACLEANFILES=forms$(PASEXT)
-# Define if forms library is not in /usr/lib
-# FORMSLIBDIR=
+ifndef FPCDIR
+FPCDIR=../..
-# Define if X library is not in /usr/lib
-# XLIBDIR=
-# Where need we to place the executables/ppu/objects
-TARGETDIR=
-UNITTARGETDIR=
-# As default make only the units
-#DEFAULTUNITS=1
+# Info
-# Uncomment this is the makefile.fpc isn't located in ../..
-DEFAULTFPCDIR=../..
+FPCINFO=fpc_infocfg fpc_infoobjects fpc_infoinstall
+# Default Directories
-UNITOBJECTS=x xresource xlib xutil forms
-EXEOBJECTS=fd2pascal
+# Base dir
+ifdef PWD
+BASEDIR:=$(shell $(PWD))
+BASEDIR=.
+# set the prefix directory where to install everything
+ifndef PREFIXINSTALLDIR
+export PREFIXINSTALLDIR=/usr
+export PREFIXINSTALLDIR=/pp
+# set the directory to the rtl base
+ifndef RTLDIR
+ifdef RTL
+RTLDIR:=$(RTL)/$(OS_TARGET)
+RTLDIR:=$(FPCDIR)/rtl/$(OS_TARGET)
+# specify where units are.
+ifndef UNITDIR
+ifdef UNITS
+UNITDIR=$(UNITS)/$(OS_TARGET)
+UNITDIR=$(FPCDIR)/units/$(OS_TARGET)
+ifeq ($(strip $(wildcard $(UNITDIR)/*)),)
+UNITDIR=
+# On linux, try to find where libgcc.a is.
+ifndef GCCLIBDIR
+export GCCLIBDIR:=$(shell dirname `(gcc -v 2>&1)| head -n 1| awk '{ print $$4 } '`)
+# Where to find other libraries
+ifndef OTHERLIBDIR
+export OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '{ ORS=" "; print $1 }')
-# Common targets
+# Install Directories based on BASEINSTALLDIR
-ifdef FORMSLLIBDIR
-override NEEDLIBDIR+=$(FORMSLIBDIR)
+# set the base directory where to install everything
+ifndef BASEINSTALLDIR
+BASEINSTALLDIR=$(PREFIXINSTALLDIR)/lib/fpc/$(FPC_VERSION)
+BASEINSTALLDIR=$(PREFIXINSTALLDIR)
+# Linux binary really goes to baseinstalldir
+ifndef LIBINSTALLDIR
+LIBINSTALLDIR=$(BASEINSTALLDIR)
+LIBINSTALLDIR=$(BASEINSTALLDIR)/lib
+# set the directory where to install the binaries
+ifndef BININSTALLDIR
+BININSTALLDIR=$(PREFIXINSTALLDIR)/bin
+BININSTALLDIR=$(BASEINSTALLDIR)/bin/$(OS_TARGET)
+# Where the .msg files will be stored
+ifndef MSGINSTALLDIR
+MSGINSTALLDIR=$(BASEINSTALLDIR)/msg
-ifdef XLIBDIR
-override NEEDLIBDIR+=$(XLIBDIR)
+ifndef SOURCEINSTALLDIR
+SOURCEINSTALLDIR=$(BASEINSTALLDIR)/source
+# Where the doc files will be stored
+ifndef DOCINSTALLDIR
+DOCINSTALLDIR=$(PREFIXINSTALLDIR)/doc/fpc/$(FPC_VERSION)
+DOCINSTALLDIR=$(BASEINSTALLDIR)/doc
+########################
+# Unit Directories
+# this can be set to 'rtl' when the RTL units are installed
+ifndef UNITPREFIX
+UNITPREFIX=units
+# set the directory where to install the units.
+ifndef UNITINSTALLDIR
+UNITINSTALLDIR=$(BASEINSTALLDIR)/$(UNITPREFIX)/$(OS_TARGET)
+ifndef STATIC_UNITINSTALLDIR
+STATIC_UNITINSTALLDIR=$(UNITINSTALLDIR)/static
+ifndef SHARED_UNITINSTALLDIR
+SHARED_UNITINSTALLDIR=$(UNITINSTALLDIR)/shared
+# set the directory where to install the libs (must exist)
+ifndef STATIC_LIBINSTALLDIR
+STATIC_LIBINSTALLDIR=$(STATIC_UNITINSTALLDIR)
+ifndef SHARED_LIBINSTALLDIR
+SHARED_LIBINSTALLDIR=$(PREFIXINSTALLDIR)/lib
+SHARED_LIBINSTALLDIR=$(SHARED_UNITINSTALLDIR)
+# Compiler Command Line
-.PHONY: all clean install info \
- staticinstall sharedinstall libinstall demo\
-all: testfpcmake fpc_all
+# Load commandline OPTDEF and add FPC_CPU define
+override FPCOPTDEF:=-d$(CPU_TARGET)
+# Load commandline OPT and add target and unit dir to be sure
+ifneq ($(OS_TARGET),$(OS_SOURCE))
+override FPCOPT+=-T$(OS_TARGET)
+ifdef NEEDOPT
+override FPCOPT+=$(NEEDOPT)
+# RTL first and then Unit dir (a unit can override RTLunit). Don't add the
+# dirs if fpcdir=. which can be used for the rtl makefiles
+ifdef FPCDIR
+ifneq ($(FPCDIR),.)
+override FPCOPT+=-Fu$(FPCDIR)/rtl/$(OS_TARGET) -Fu$(FPCDIR)/units/$(OS_TARGET)
+# Smartlinking
+ifeq ($(SMARTLINK),YES)
+override FPCOPT+=-Cx
+# Add commandline options
+ifdef OPT
+override FPCOPT+=$(OPT)
+ifdef UNITDIR
+override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
+ifdef LIBDIR
+override FPCOPT+=$(addprefix -Fl,$(LIBDIR))
+ifdef OBJDIR
+override FPCOPT+=$(addprefix -Fo,$(OBJDIR))
+ifdef INCDIR
+override FPCOPT+=$(addprefix -Fi,$(INCDIR))
+# Add defines from FPCOPTDEF to FPCOPT
+ifdef FPCOPTDEF
+override FPCOPT+=$(FPCOPTDEF)
+# Was a config file specified ?
+ifdef CFGFILE
+override FPCOPT+=@$(CFGFILE)
-demo:
- $(MAKE) -C demo
+override COMPILER=$(FPC) $(FPCOPT)
+# Shell tools
+# To copy pograms
+ifndef COPY
+export COPY:=cp -fp
+# To move pograms
+ifndef MOVE
+export MOVE:=mv -f
+# Check delete program
+ifndef DEL
+export DEL:=rm -f
+# Check deltree program
+ifndef DELTREE
+export DELTREE:=rm -rf
+# To install files
+ifndef INSTALL
+export INSTALL:=install -m 644
+export INSTALL:=$(COPY)
+# To install programs
+ifndef INSTALLEXE
+export INSTALLEXE:=install -m 755
+export INSTALLEXE:=$(COPY)
+# To make a directory.
+ifndef MKDIR
+export MKDIR:=install -m 755 -d
+export MKDIR:=ginstall -m 755 -d
+# Default Tools
+# assembler, redefine it if cross compiling
+ifndef AS
+AS=as
+# linker, but probably not used
+ifndef LD
+LD=ld
+# Where is the ppumove program ?
+ifndef PPUMOVE
+PPUMOVE=ppumove
+# Where is the ppdep program ?
+ifndef PPDEP
+PPDEP=ppdep
+# ppas.bat / ppas.sh
+PPAS=ppas.sh
+PPAS=ppas.cmd
+PPAS=ppas.bat
+# also call ppas if with command option -s
+ifeq (,$(findstring -s ,$(COMPILER)))
+EXECPPAS=
+EXECPPAS=@$(PPAS)
+# ldconfig to rebuild .so cache
+LDCONFIG=ldconfig
+LDCONFIG=
+# echo
+ifndef ECHO
+ECHO:=$(strip $(wildcard $(addsuffix /echo$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+export ECHO:=echo
+export ECHO:=$(firstword $(ECHO))
+# Look if UPX is found for go32v2 and win32. We can't use $UPX becuase
+# upx uses that one itself (PFV)
+ifndef UPXPROG
+ifeq ($(OS_TARGET),go32v2)
+UPXPROG:=1
+ifeq ($(OS_TARGET),win32)
+ifdef UPXPROG
+UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(UPXPROG),)
+UPXPROG=
+export UPXPROG:=$(firstword $(UPXPROG))
+# gdate/date
+ifndef DATE
+DATE:=$(strip $(wildcard $(addsuffix /date$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(DATE),)
+DATE:=$(strip $(wildcard $(addsuffix /gdate$(EXEEXT),$(SEACHPATH))))
+DATE=
+export DATE:=$(firstword $(DATE))
+ifdef DATE
+DATESTR:=$(shell $(DATE) +%Y%m%d)
+DATESTR=
+# ZipProg, you can't use Zip as the var name (PFV)
+ifndef ZIPPROG
+ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(EXEEXT),$(SEARCHPATH))))
+ifeq ($(ZIPPROG),)
+ZIPPROG=
+export ZIPPROG:=$(firstword $(ZIPPROG)) -D9 -r
+ifndef ZIPEXT
+ZIPEXT=.zip
+# Default extensions
+# Default needed extensions (Go32v2,Linux)
+LOADEREXT=.as
+PPLEXT=.ppl
+PPUEXT=.ppu
+OEXT=.o
+ASMEXT=.s
+SMARTEXT=.sl
+STATICLIBEXT=.a
+SHAREDLIBEXT=.so
+PACKAGESUFFIX=
+# Go32v1
+ifeq ($(OS_TARGET),go32v1)
+PPUEXT=.pp1
+OEXT=.o1
+ASMEXT=.s1
+SMARTEXT=.sl1
+STATICLIBEXT=.a1
+SHAREDLIBEXT=.so1
+PACKAGESUFFIX=v1
+# Go32v2
+PACKAGESUFFIX=go32
+# Linux
+ifeq ($(OS_TARGET),linux)
+PACKAGESUFFIX=linux
+# Win32
+PPUEXT=.ppw
+OEXT=.ow
+ASMEXT=.sw
+SMARTEXT=.slw
+STATICLIBEXT=.aw
+SHAREDLIBEXT=.dll
+PACKAGESUFFIX=win32
+# OS/2
+ifeq ($(OS_TARGET),os2)
+PPUEXT=.ppo
+ASMEXT=.so2
+OEXT=.oo2
+SMARTEXT=.so
+STATICLIBEXT=.ao2
+PACKAGESUFFIX=os2
+# library prefix
+LIBPREFIX=lib
+LIBPREFIX=
+# determine which .pas extension is used
+ifndef PASEXT
+ifdef EXEOBJECTS
+override TESTPAS:=$(strip $(wildcard $(addsuffix .pas,$(firstword $(EXEOBJECTS)))))
+override TESTPAS:=$(strip $(wildcard $(addsuffix .pas,$(firstword $(UNITOBJECTS)))))
+ifeq ($(TESTPAS),)
+PASEXT=.pp
else
+PASEXT=.pas
+all: fpc_all
+install: fpc_install
+clean: fpc_clean
+# General compile rules
+.PHONY: fpc_all fpc_units fpc_exes fpc_loaders
+# Create Filenames
+LOADEROFILES=$(addsuffix $(OEXT),$(LOADEROBJECTS))
+EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
+EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
+UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
+UNITOFILES=$(addsuffix $(OEXT),$(UNITOBJECTS))
+UNITAFILES=$(addsuffix $(STATICLIBEXT),$(UNITOBJECTS))
+.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp
+ifdef DEFAULTUNITS
+fpc_all: fpc_loaders fpc_units
+fpc_all: fpc_loaders fpc_units fpc_exes
+fpc_loaders: $(LOADEROFILES)
+fpc_units: $(UNITPPUFILES)
+fpc_exes: $(EXEFILES)
+# General compile rules, available for both possible PASEXT
+%$(PPUEXT): %.pp
+ $(COMPILER) $< $(REDIR)
+ $(EXECPASS)
+%$(PPUEXT): %.pas
+%$(EXEEXT): %.pp
+%$(EXEEXT): %.pas
+%$(OEXT): %$(LOADEREXT)
+ $(AS) -o $*$(OEXT) $<
+# Library
+.PHONY: fpc_staticlib fpc_sharedlib
+# Default sharedlib units are all unit objects
+ifndef SHAREDLIBUNITOBJECTS
+SHAREDLIBUNITOBJECTS=$(UNITOBJECTS)
+fpc_staticlib:
+ $(MAKE) libsclean
+ $(MAKE) all SMARTLINK=YES
+fpc_sharedlib: all
+ifndef LIBNAME
+ @$(ECHO) LIBNAME not set
+ $(PPUMOVE) $(SHAREDLIBUNITOBJECTS) -o$(LIBNAME)
+ @$(ECHO) Shared Libraries not supported
+# Install rules
+.PHONY: fpc_showinstallfiles fpc_install
+ifdef UNITOBJECTS
+override UNITINSTALLFILES=$(wildcard $(UNITPPUFILES) $(UNITOFILES) $(UNITAFILES))
+ifdef EXTRAINSTALLUNITS
+override EXTRAINSTALLFILES+=$(wildcard $(addsuffix $(OEXT),$(EXTRAINSTALLUNITS)) $(addsuffix $(STATICLIBEXT),$(EXTRAINSTALLUNITS)) $(addsuffix $(PPUEXT),$(EXTRAINSTALLUNITS)))
+fpc_showinstallfiles : all
+ifndef DEFAULTUNITS
+ @$(ECHO) $(addprefix "\n"$(BININSTALLDIR)/,$(EXEFILES))
+ifdef LOADEROBJECTS
+ @$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(LOADEROFILES))
+ifdef UNITINSTALLFILES
+ @$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(UNITINSTALLFILES))
+ifdef EXTRAINSTALLFILES
+ @$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(EXTRAINSTALLFILES))
+fpc_install:
+# Create UnitInstallFiles
+ $(MKDIR) $(BININSTALLDIR)
+# Compress the exes if upx is defined
+ -$(UPXPROG) $(EXEFILES)
+ $(INSTALLEXE) $(EXEFILES) $(BININSTALLDIR)
+ $(MKDIR) $(UNITINSTALLDIR)
+ $(INSTALL) $(LOADEROFILES) $(UNITINSTALLDIR)
+ $(INSTALL) $(UNITINSTALLFILES) $(UNITINSTALLDIR)
+ $(INSTALL) $(EXTRAINSTALLFILES) $(UNITINSTALLDIR)
+# Zip
+.PHONY: fpc_zipinstall fpc_zipinstalladd
+# Temporary path to pack a file
+ifndef PACKDIR
+PACKDIR=pack_tmp
+PACKDIR=/tmp/fpc-pack
+# Test dir if none specified
+ifndef PACKAGEDIR
+PACKAGEDIR=$(BASEDIR)
+# Add .zip/.tar.gz extension
+ifdef ZIPNAME
+override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)
+# Default target which is call before zipping
+ifndef ZIPTARGET
+ZIPTARGET=install
+# Note: This will not remove the zipfile first
+fpc_zipinstalladd:
+ifndef ZIPNAME
+ @$(ECHO) Please specify ZIPNAME!
@exit
+ $(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
+ gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz
+ cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ; cd $(BASEDIR)
+ gzip $(PACKAGEDIR)/$(ZIPNAME).tar
+ cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(BASEDIR)
+ $(DELTREE) $(PACKDIR)
+# First remove the zip and then install
+fpc_zipinstall:
+ $(DEL) $(PACKAGEDIR)/$(ZIPNAME)
+ cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz * ; cd $(BASEDIR)
+# Clean rules
+.PHONY: fpc_clean fpc_libsclean fpc_cleanall
+override UNITCLEANFILES=$(wildcard $(UNITPPUFILES) $(UNITOFILES) $(UNITAFILES))
+ifdef EXTRACLEANUNITS
+override EXTRACLEANFILES+=$(wildcard $(addsuffix $(OEXT),$(EXTRACLEANUNITS)) $(addsuffix $(STATICLIBEXT),$(EXTRACLEANUNITS)) $(addsuffix $(PPUEXT),$(EXTRACLEANUNITS)))
+fpc_clean:
+ -$(DEL) $(EXEFILES) $(EXEOFILES)
+ -$(DEL) $(LOADEROFILES)
+ifdef UNITCLEANFILES
+ -$(DEL) $(UNITCLEANFILES)
+ifdef EXTRACLEANFILES
+ -$(DEL) $(EXTRACLEANFILES)
+ -$(DEL) $(PPAS) link.res log
+fpc_libsclean: clean
+ -$(DEL) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
+fpc_cleanall:
+ -$(DEL) $(EXEFILES)
+ -$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
+ -$(DELTREE) *$(SMARTEXT)
-# Dependencies
+# Depend rules
- $(DEL) forms$(PASEXT)
+.PHONY: fpc_depend
+fpc_depend:
+ $(PPDEP) $(UNITOBJECTS)
+# Info rules
+.PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
+ fpc_dirinfo
+fpc_info: $(FPCINFO)
+fpc_infocfg:
+ @$(ECHO)
+ @$(ECHO) == Configuration info ==
+ @$(ECHO) FPC....... $(FPC)
+ @$(ECHO) Version... $(FPC_VERSION)
+ @$(ECHO) CPU....... $(CPU_TARGET)
+ @$(ECHO) Source.... $(OS_SOURCE)
+ @$(ECHO) Target.... $(OS_TARGET)
+fpc_infoinstall:
+ @$(ECHO) == Install info ==
+ @$(ECHO) DateStr.............. $(DATESTR)
+ @$(ECHO) PackageSuffix........ $(PACKAGESUFFIX)
+ @$(ECHO) BaseInstallDir....... $(BASEINSTALLDIR)
+ @$(ECHO) BinInstallDir........ $(BININSTALLDIR)
+ @$(ECHO) UnitInstallDir....... $(UNITINSTALLDIR)
+ @$(ECHO) StaticUnitInstallDir. $(STATIC_UNITINSTALLDIR)
+ @$(ECHO) SharedUnitInstallDir. $(SHARED_UNITINSTALLDIR)
+ @$(ECHO) LibInstallDir........ $(LIBINSTALLDIR)
+ @$(ECHO) StaticLibInstallDir.. $(STATIC_LIBINSTALLDIR)
+ @$(ECHO) SharedLibInstallDir.. $(SHARED_LIBINSTALLDIR)
+ @$(ECHO) MsgInstallDir........ $(MSGINSTALLDIR)
+ @$(ECHO) DocInstallDir........ $(DOCINSTALLDIR)
+.PHONY: test examples
+test: fpc_exes
+examples: fpc_exes
forms$(PPUEXT): forms-$(FORMSVERSION)$(PASEXT) x$(PPUEXT) xresource$(PPUEXT) xlib$(PPUEXT)\
- xutil$(PPUEXT)
+ xutil$(PPUEXT)
ln -sf forms-$(FORMSVERSION)$(PASEXT) forms$(PASEXT)
$(COMPILER) forms$(PASEXT)
-# Revision 1.2 1999-07-16 13:45:36 peter
-# * 0.99.12b updates
-# * merges
-# Revision 1.1 1999/05/12 00:11:25 michael
-# initial import
-# Revision 1.1 1999/03/16 00:50:29 peter
-# + init
@@ -0,0 +1,33 @@
+# Makefile.fpc for Forms Bindings
+[targets]
+units=x xresource xlib xutil forms
+programs=fd2pascal
+[clean]
+units=forms-88 forms-86
+files=forms$(PASEXT)
+[dirs]
+fpcdir=../..
+[presettings]
+# Version of forms
+FORMSVERSION=88
+#FORMSVERSION=86
+forms$(PPUEXT): forms-$(FORMSVERSION)$(PASEXT) x$(PPUEXT) xresource$(PPUEXT) xlib$(PPUEXT)\
+ ln -sf forms-$(FORMSVERSION)$(PASEXT) forms$(PASEXT)
+ $(COMPILER) forms$(PASEXT)
@@ -1,151 +1,924 @@
+# Makefile generated by fpcmake v0.99.13 on 1999-11-14 17:37
+EXEOBJECTS=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn
# Defaults
+FPCDIR=../../..
+override NEEDUNITDIR=..
+override NEEDOTHERLIB=1
+ifdef NEEDUNITDIR
+override FPCOPT+=$(addprefix -Fu,$(NEEDUNITDIR))
+# Add Other dirs path if asked
+ifdef OTHERLIBDIR
+override FPCOPT+=$(addprefix -Fl,$(OTHERLIBDIR))
-NEEDOPT=
-NEEDUNITDIR=..
-XLIBDIR=/usr/X11/lib
-DEFAULTFPCDIR=../../..
-EXEOBJECTS=pushme yesno pushbutton touchbutton minput inputall choice butttypes\
- colsel colsel1 buttonall chartall positioner secretinput cursor fdial\
- ldial ndial invslider sliderall borderwidth boxtype xyplotover\
- arrowbutton browserop browserall chartstrip colbrowser counter\
- fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu\
- objinactive objpos newbutton multilabel objreturn
-ifdef FORMSLIBDIR
- staticinstall sharedinstall libinstall \
-forms$(PPUEXT): forms-$(FORMSVERSION)$(PASEXT) x$(PPUEXT) xresource$(PPUEXT) xlib$(PPUEXT)\
- ln -sf forms-$(FORMSVERSION)$(PASEXT) forms$(PASEXT)
- $(COMPILER) forms$(PASEXT)
-# Revision 1.1 1999-05-12 00:11:24 michael
@@ -0,0 +1,18 @@
+# Makefile.fpc for Forms Examples
+programs=pushme yesno pushbutton touchbutton minput inputall choice butttypes \
+ colsel colsel1 buttonall chartall positioner secretinput cursor fdial \
+ ldial ndial invslider sliderall borderwidth boxtype xyplotover \
+ arrowbutton browserop browserall chartstrip colbrowser counter \
+ fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu \
+ objinactive objpos newbutton multilabel objreturn
+[libs]
+libother=1
+fpcdir=../../..
+unitdir=..
@@ -1,125 +1,925 @@
-# Makefile for GGI units for Free Pascal
+# Makefile generated by fpcmake v0.99.13 on 1999-11-14 17:28
-UNITOBJECTS=gii ggi ggi2d
-EXEOBJECTS=
+UNITOBJECTS=gii ggi ggi2d
+EXEOBJECTS=ggi1
+DEFAULTUNITS=1
ifdef FPCDIR
-# Revision 1.1 1999-11-10 14:14:33 sg
-# * Added to CVS
@@ -0,0 +1,21 @@
+# Makefile.fpc for GGI Bindings
+units=gii ggi ggi2d
+programs=ggi1
+[defaults]
+defaultunits=1
@@ -1,125 +0,0 @@
-# Makefile for GGI demos for Free Pascal
-UNITOBJECTS=
-EXEOBJECTS=ggi1
-endif
-# Revision 1.1 1999-11-10 14:14:34 sg
@@ -96,7 +96,10 @@ end.
{
$Log$
- Revision 1.2 1999-11-12 18:51:24 sg
+ Revision 1.1 1999-11-14 15:59:05 peter
+ * fpcmake'd
+ Revision 1.2 1999/11/12 18:51:24 sg
* Added check if visual is NIL (=error...)
* Prints resolution on terminal (because GGI will use an unknown default mode)
@@ -1,129 +1,927 @@
+# Makefile generated by fpcmake v0.99.13 on 1999-11-14 17:03
-# Where is makefile.fpc by default
-# Linux only
-# Define if libgds.a is not in /usr/lib
-# GDSLIBDIR=
UNITOBJECTS=ibase
EXEOBJECTS=testib
ifdef inlinux
-ifdef GDSLIBDIR
-override NEEDLIBDIR+=$(GDSLIBDIR)
testib$(EXEEXT): testib.pp ibase$(PPUEXT)
-# Revision 1.2 1999-06-08 18:28:23 peter
-# Revision 1.1 1999/05/12 00:11:27 michael
@@ -0,0 +1,23 @@
+# Makefile.fpc for InterBase bindings
+units=ibase
+programs=testib
+testib$(EXEEXT): testib.pp ibase$(PPUEXT)
@@ -15,24 +15,22 @@ const
type
{ Unsigned types }
UChar = Byte;
- UShort = Word;
- UInt = DWord;
+ UShort = Word;
+ UInt = DWord;
ULong = DWord;
{ Signed types }
- Int = LongInt;
- Long = LongInt;
- Short = SmallInt;
+ Int = LongInt;
+ Long = LongInt;
+ Short = Integer;
Float = Single;
{ Pointers to basic types }
- PSmallInt = ^SmallInt;
PInt = ^Int;
- PInteger = ^Integer;
PShort = ^Short;
PUShort = ^UShort;
PLong = ^Long;
@@ -40,13 +38,12 @@ type
PFloat = ^Float;
PUChar = ^UChar;
PVoid = ^Pointer;
- PDouble = ^Double;
{ Interbase redefinitions }
- ISC_LONG = Long;
+ ISC_LONG = Long;
UISC_LONG = ULong;
- ISC_STATUS = Long;
+ ISC_STATUS = Long;
UISC_STATUS = ULong;
Void = Pointer;
PISC_LONG = ^ISC_LONG;
@@ -89,9 +86,9 @@ type
end;
PBlob = ^TBlob;
-Const
- {
- Huge amount of constants.
+Const
+ {
+ Huge amount of constants.
Look for TYPESTART to get to types,
Look For FUNCSTART to get to functions and procedures
}
@@ -319,7 +316,7 @@ Const
blr_seek_no_warn = 156;
blr_find_dbkey_version = 157;
blr_ansi_all = 158;
isc_dpb_version1 = 1;
isc_dpb_cdd_pathname = 1;
isc_dpb_allocation = 2;
@@ -1460,7 +1457,7 @@ Const
// TYPESTART (to quickly get here, look for TYPESTART)
TISC_ATT_HANDLE = PVoid;
PISC_ATT_HANDLE = ^TISC_ATT_HANDLE;
TISC_BLOB_HANDLE = PVoid;
@@ -1516,33 +1513,33 @@ type
blob_desc_relation_name : array[0..31] of UChar;
PISC_BLOB_DESC = ^TISC_BLOB_DESC;
TISC_BLOB_CTL_SOURCE_FUNCTION = function : ISC_STATUS; // ISC_FAR
PISC_BLOB_CTL = ^TISC_BLOB_CTL; // ISC_FAR
TISC_BLOB_CTL = record
ctl_source : TISC_BLOB_CTL_SOURCE_FUNCTION;
ctl_source_handle : PISC_BLOB_CTL;
- ctl_to_sub_type : Short;
- ctl_from_sub_type : Short;
- ctl_buffer_length : UShort;
- ctl_segment_length : UShort;
- ctl_bpb_length : UShort;
- ctl_bpb : PChar;
- ctl_buffer : PUChar;
- ctl_max_segment : ISC_LONG;
- ctl_number_segments : ISC_LONG;
- ctl_total_length : ISC_LONG;
- ctl_status : PISC_STATUS;
- ctl_data : array[0..7] of long;
+ ctl_to_sub_type : Short;
+ ctl_from_sub_type : Short;
+ ctl_buffer_length : UShort;
+ ctl_segment_length : UShort;
+ ctl_bpb_length : UShort;
+ ctl_bpb : PChar;
+ ctl_buffer : PUChar;
+ ctl_max_segment : ISC_LONG;
+ ctl_number_segments : ISC_LONG;
+ ctl_total_length : ISC_LONG;
+ ctl_status : PISC_STATUS;
+ ctl_data : array[0..7] of long;
TBSTREAM = record
- bstr_blob : PVoid;
- bstr_buffer : PChar;
- bstr_ptr : PChar;
- bstr_length : Short;
- bstr_cnt : Short;
- bstr_mode : Char;
+ bstr_blob : PVoid;
+ bstr_buffer : PChar;
+ bstr_ptr : PChar;
+ bstr_length : Short;
+ bstr_cnt : Short;
+ bstr_mode : Char;
PBSTREAM = ^TBSTREAM;
@@ -1566,30 +1563,30 @@ type
PSQLDA = ^TSQLDA;
TXSQLVAR = record
- sqltype : Short;
- sqlscale : Short;
- sqlsubtype : Short;
- sqllen : Short;
- sqldata : PChar;
- sqlind : PShort;
- sqlname_length : Short;
+ sqltype : Short;
+ sqlscale : Short;
+ sqlsubtype : Short;
+ sqllen : Short;
+ sqldata : PChar;
+ sqlind : PShort;
+ sqlname_length : Short;
sqlname : array[0..31] of Char;
- relname_length : Short;
+ relname_length : Short;
relname : array[0..31] of Char;
- ownname_length : Short;
+ ownname_length : Short;
ownname : array[0..31] of Char;
- aliasname_length : Short;
+ aliasname_length : Short;
aliasname : array[0..31] of Char;
PXSQLVAR = ^TXSQLVAR;
TXSQLDA = record
- version : Short;
- pad : smallint;
+ version : Short;
+ pad : Short;
sqldaid : array[0..7] of Char;
- sqldabc : ISC_LONG;
- sqln : Short;
- sqld : Short;
+ sqldabc : ISC_LONG;
+ sqln : Short;
+ sqld : Short;
sqlvar : array[0..0] of TXSQLVAR;
PXSQLDA = ^TXSQLDA;
@@ -1794,27 +1791,27 @@ function isc_suspend_window (status_vector : PISC_STATUS;win_handle : PISC_WIN_H
implementation
function SQLDA_LENGTH(n: Long): Long;
-begin
- result := sizeof(TSQLDA) + ((n - 1) * sizeof(TSQLVAR));
+begin
+ SQLDA_LENGTH := sizeof(TSQLDA) + ((n - 1) * sizeof(TSQLVAR));
function XSQLDA_LENGTH(n: Long): Long;
begin
- result := SizeOf(TXSQLDA) + ((n - 1) * SizeOf(TXSQLVAR));
+ XSQLDA_LENGTH := SizeOf(TXSQLDA) + ((n - 1) * SizeOf(TXSQLVAR));
function getb(p: PBSTREAM): Char;
Dec(p^.bstr_cnt);
- if (p^.bstr_cnt >= 0) then
+ if (p^.bstr_cnt >= 0) then
- Result := Chr(Byte(p^.bstr_ptr^) and 248);
+ getb := Chr(Byte(p^.bstr_ptr^) and 248);
Inc(p^.bstr_ptr);
- end
+ end
- result := Char(BLOB_get(p));
+ getb := Char(BLOB_get(p));
@@ -1822,10 +1819,10 @@ function putb(x: Char; p: PBSTREAM): Int;
if (x = Chr(Byte('n') - Byte('a'))) or (p^.bstr_cnt = 0) then
- result := BLOB_put(x, p)
+ putb := BLOB_put(x, p)
begin p^.bstr_ptr^ := Char(x);
- result := Byte(x);
+ putb := Byte(x);
Inc(p^.bstr_ptr^);
@@ -1833,13 +1830,13 @@ end;
function putbx(x: Char; p: PBSTREAM): Int;
begin Dec(p^.bstr_cnt);
- if (p^.bstr_cnt = 0) then
- else
+ if (p^.bstr_cnt = 0) then
+ putbx := BLOB_put(x, p)
+ else
p^.bstr_ptr^ := Char(x);
+ putbx := Byte(x);
@@ -6,24 +6,24 @@ uses Ibase, strings;
Const
{ Change to YOUR database server }
ServerDb : pchar = 'testdb.gdb';
{ CHange to YOUR username and password. These may be empty }
username = '';
PWD = '';
- { Don't edit after this }
- dbinfo : array [1..3] of byte
+ { Don't edit after this }
+ dbinfo : array [1..3] of byte
= (isc_info_page_size,isc_info_num_buffers,isc_info_end);
query : pchar = 'select * from FPDev;';
flag : array[0..2] of shortint = (0,0,0);
-Type
+Type
TStatusArray = Array[0..19] of ISC_Status;
Var
DB : Tisc_db_handle;
TA : TISC_tr_handle;
@@ -34,11 +34,11 @@ Var
name,email : String;
i,id : longint;
fs : longint;
-Function CheckIBstatus (Const Status : TStatusArray) : Boolean;
+Function CheckIBstatus (Const Status : TStatusArray) : Boolean;
- Result:=Not ((Status[0]=1) and (status[1]<>0))
+ CheckIBstatus:=Not ((Status[0]=1) and (status[1]<>0))
Procedure DoError (Const status : TStatusArray);
@@ -60,7 +60,7 @@ begin
Write ('Connecting to ',serverdb,': ');
isc_attach_database(@Status[0],strlen(serverdb),serverdb,@db,length(dpb),@dpb[1]);
- if Not CheckIBStatus(Status) then
+ if Not CheckIBStatus(Status) then
DoError(status)
Writeln ('OK.');
@@ -109,7 +109,7 @@ begin
DoError(Status)
Writeln ('Fetching rows :');
Repeat
FS:=isc_dsql_fetch(@status,@statement,1,sqlda);
@@ -136,7 +136,7 @@ begin
Write ('Committing transaction : ');
If ISC_Commit_transaction(@status,@ta)<>0 then
doerror(status)
Write ('Disconnecting from database: ');
isc_detach_database(@status,@db);
@@ -1,113 +1,929 @@
+# Makefile generated by fpcmake v0.99.13 on 1999-11-14 17:10
UNITOBJECTS=inet
EXEOBJECTS=testinet pfinger
testinet$(EXEEXT): testinet$(PASEXT) inet$(PPUEXT)
pfinger$(EXEEXT): pfinger$(PASEXT) inet$(PPUEXT)
-# Revision 1.2 1999-06-08 18:28:24 peter
@@ -0,0 +1,25 @@
+# Makefile.fpc for Internet Units
+units=inet
+programs=testinet pfinger
+testinet$(EXEEXT): testinet$(PASEXT) inet$(PPUEXT)
+pfinger$(EXEEXT): pfinger$(PASEXT) inet$(PPUEXT)
@@ -22,15 +22,15 @@ Unit inet;
---------
Current version is 0.6
Version Date Remarks
------- ---- ----
0.1 07/16/97 Unit started. Michael.
- 0.2 07/06/98 Updated for version 0.99.5
+ 0.2 07/06/98 Updated for version 0.99.5
0.4 08/01/98 Objects for name lookup implemented
0.5 09/10/98 Updated calls for 0.99.8.
0.6 05/04/99 Added explicit asmmode.
------------------------------------------------------------------- }
@@ -38,28 +38,28 @@ interface
{$LINKLIB c}
{ Net type }
AF_INET = 2;
{ Error constants. Returned by LastError method of THost, TNet}
NETDB_INTERNAL= -1; { see errno }
NETDB_SUCCESS = 0; { no problem }
HOST_NOT_FOUND= 1; { Authoritative Answer Host not found }
- TRY_AGAIN = 2; { Non-Authoritive Host not found, or SERVERFAIL }
- NO_RECOVERY = 3; { Non recoverable errors, FORMERR, REFUSED, NOTIMP }
- NO_DATA = 4; { Valid name, no data record of requested type }
- NO_ADDRESS = NO_DATA; { no address, look for MX record }
+ TRY_AGAIN = 2; { Non-Authoritive Host not found, or SERVERFAIL }
+ NO_RECOVERY = 3; { Non recoverable errors, FORMERR, REFUSED, NOTIMP }
+ NO_DATA = 4; { Valid name, no data record of requested type }
+ NO_ADDRESS = NO_DATA; { no address, look for MX record }
Type
THostAddr = array[1..4] of byte;
PHostAddr = ^THostAddr;
NoAddress : THostAddr = (0,0,0,0);
@@ -73,28 +73,28 @@ Type
Addrlist : ppchar; { null-terminated list of adresses }
PHostEnt = ^THostEnt;
{ TNetEnt object }
TNetEnt = record
Name : pchar; { Official name }
Aliases : ppchar; { Nill-terminated alias list }
AddrType : longint; { Net address type }
- net : Longint; { Network number }
+ net : Longint; { Network number }
- PNetEnt = ^TNetEnt;
+ PNetEnt = ^TNetEnt;
TServEnt = record
name : pchar; { Service name }
aliases : ppchar; { Null-terminated alias list }
port : longint; { Port number }
- proto : pchar; { Protocol to use }
+ proto : pchar; { Protocol to use }
PServEnt = ^TServEnt;
{ Pascal Wrapper objects }
TSelectType = (stFirst,stNext,stPrevious);
THost = Object
FHostEntry : PHostEnt;
FAlias,FAddr,FError : Longint;
@@ -134,8 +134,8 @@ Type
Function Port : Longint;
Function LastError : Longint;
{ Pascal style calls }
@@ -150,30 +150,6 @@ Function ShortNetToHost (Net : integer) : integer;
{ C style calls, linked in from Libc }
-function GetHostEnt : PHostEnt;cdecl;
-function GetHostByName ( HostName : Pchar) : PHostEnt;cdecl;
-function GetHostByAddr ( Addr : PHostAddr; Len : Longint; HType : Longint) : PHostEnt;cdecl;
-procedure SetHostEnt (stayopen : longint);cdecl;
-procedure EndHostEnt;cdecl;
-function GetNetEnt : PNetEnt;cdecl;
-function GetNetByName ( Name : pchar) : PNetEnt;cdecl;
-function GetNetByAddr ( Net : Longint; NetType : Longint) : PNetEnt;cdecl;
-procedure SetNetEnt ( Stayopen : Longint);cdecl;
-procedure EndNetEnt;cdecl;
-function getservent : PServEnt;cdecl;
-function getservbyname (name : pchar ; protocol : pchar) : PServEnt;cdecl;
-function getservbyport (port : longint; protocol : pchar) : PServEnt;cdecl;
-procedure setservent (StayOpen : longint);cdecl;
-procedure endservent;cdecl;
-implementation
-Uses strings;
function gethostent : PHostEnt; cdecl; external;
function gethostbyname ( Name : Pchar) : PHostEnt; cdecl; external;
function gethostbyaddr ( Addr : PHostAddr; Len : Longint; HType : Longint) : PHostent ; cdecl; external;
@@ -181,7 +157,7 @@ procedure sethostent (stayopen : longint); cdecl; external;
procedure endhostent; cdecl; external;
function getnetent : PNetEnt; cdecl; external;
-function getnetbyname ( Name : pchar) : PNetEnt; cdecl; external;
+function getnetbyname ( Name : pchar) : PNetEnt; cdecl; external;
function getnetbyaddr ( Net : Longint; nettype : Longint) : PNetEnt; cdecl; external;
procedure setnetent ( Stayopen : Longint); cdecl; external;
procedure endnetent; cdecl; external;
@@ -192,22 +168,20 @@ function getservbyport (port : longint; protocol : pchar) : PServEnt; cdecl; ext
procedure setservent (StayOpen : longint); cdecl; external;
procedure endservent; cdecl; external;
+var
+ GetDNSError : longint;external name 'h_errno';
-Function GetDNSError : Longint;
-{$asmmode direct}
- asm
- movl h_errno,%eax
- movl %eax,__RESULT
- end ['EAX'];
-end;
+implementation
+Uses strings;
function HostAddrToStr (Entry : THostAddr) : String;
Var Dummy : String[4];
I : Longint;
HostAddrToStr:='';
For I:=1 to 4 do
@@ -224,19 +198,19 @@ Var Dummy : String[4];
J : Integer;
Temp : THostAddr;
StrToHostAddr:=NoAddress;
- If I<4 Then
+ If I<4 Then
J:=Pos('.',IP);
If J=0 then exit;
Dummy:=Copy(IP,1,J-1);
Delete (IP,1,J);
end
Dummy:=IP;
Val (Dummy,Temp[I],J);
If J<>0 then Exit;
@@ -248,7 +222,7 @@ function NetAddrToStr (Entry : longint) : String;
NetAddrToStr:='';
For I:=4 downto 1 do
@@ -278,7 +252,7 @@ begin
FAlias:=0;
FAddr:=0;
Ferror:=0;
- end;
+ end;
Constructor THost.AddressLookup (Const Address: THostAddr);
@@ -292,7 +266,7 @@ begin
FError:=0;
@@ -373,7 +347,7 @@ begin
Constructor TNet.AddressLookup (Const Address: Longint);
@@ -386,7 +360,7 @@ begin
@@ -452,7 +426,7 @@ begin
Constructor TService.PortLookup (APort: Longint; Proto : String);
@@ -466,7 +440,7 @@ begin
@@ -1,139 +1,929 @@
+# Makefile generated by fpcmake v0.99.13 on 1999-11-14 16:51
-# Define if libmysqlclient library is not in /usr/lib
-# MYSQLLIBDIR=
UNITOBJECTS=mysql_com mysql_version mysql
EXEOBJECTS=testdb
-ifdef MYSQLLIBDIR
-override NEEDLIBDIR+=$(MYSQLLIBDIR)
mysql$(PPUEXT): mysql$(PASEXT) mysql_com$(PPUEXT)
testdb$(EXEEXT): testdb$(PASEXT) mysql$(PPUEXT)
-# Revision 1.1 1999-05-12 00:11:26 michael
+# Makefile.fpc for MySql bindings
+units=mysql_com mysql_version mysql
+programs=testdb
+mysql$(PPUEXT): mysql$(PASEXT) mysql_com$(PPUEXT)
+testdb$(EXEEXT): testdb$(PASEXT) mysql$(PPUEXT)
@@ -12,56 +12,56 @@ interface
{$packrecords 4}
{ Extra types introduced for pascal }
pbyte = ^byte;
pcardinal = ^cardinal;
Socket = longint;
my_bool = byte;
- NAME_LEN = 64 ; { Field/table name length }
+ NAME_LEN = 64 ; { Field/table name length }
LOCAL_HOST : pchar = 'localhost' ;
- MYSQL_PORT = 3306; { Alloced by ISI for MySQL }
+ MYSQL_PORT = 3306; { Alloced by ISI for MySQL }
MYSQL_UNIX_ADDR : pchar = '/tmp/mysql.sock';
enum_server_command = ( COM_SLEEP,COM_QUIT,COM_INIT_DB,COM_QUERY,
- COM_FIELD_LIST,COM_CREATE_DB,COM_DROP_DB,COM_REFRESH,
- COM_SHUTDOWN,COM_STATISTICS,
- COM_PROCESS_INFO,COM_CONNECT,COM_PROCESS_KILL,
- COM_DEBUG);
+ COM_FIELD_LIST,COM_CREATE_DB,COM_DROP_DB,COM_REFRESH,
+ COM_SHUTDOWN,COM_STATISTICS,
+ COM_PROCESS_INFO,COM_CONNECT,COM_PROCESS_KILL,
+ COM_DEBUG);
- NOT_NULL_FLAG = 1; { Field can't be NULL }
- PRI_KEY_FLAG = 2; { Field is part of a primary key }
- UNIQUE_KEY_FLAG = 4; { Field is part of a unique key }
- MULTIPLE_KEY_FLAG = 8; { Field is part of a key }
- BLOB_FLAG = 16; { Field is a blob }
- UNSIGNED_FLAG = 32; { Field is unsigned }
- ZEROFILL_FLAG = 64; { Field is zerofill }
- BINARY_FLAG = 128;
+ NOT_NULL_FLAG = 1; { Field can't be NULL }
+ PRI_KEY_FLAG = 2; { Field is part of a primary key }
+ UNIQUE_KEY_FLAG = 4; { Field is part of a unique key }
+ MULTIPLE_KEY_FLAG = 8; { Field is part of a key }
+ BLOB_FLAG = 16; { Field is a blob }
+ UNSIGNED_FLAG = 32; { Field is unsigned }
+ ZEROFILL_FLAG = 64; { Field is zerofill }
+ BINARY_FLAG = 128;
{ The following are only sent to new clients }
- ENUM_FLAG = 256; { field is an enum }
- AUTO_INCREMENT_FLAG = 512; { field is a autoincrement field }
- TIMESTAMP_FLAG = 1024; { Field is a timestamp }
- PART_KEY_FLAG = 16384; { Intern; Part of some key }
- GROUP_FLAG = 32768; { Intern group field }
+ ENUM_FLAG = 256; { field is an enum }
+ AUTO_INCREMENT_FLAG = 512; { field is a autoincrement field }
+ TIMESTAMP_FLAG = 1024; { Field is a timestamp }
+ PART_KEY_FLAG = 16384; { Intern; Part of some key }
+ GROUP_FLAG = 32768; { Intern group field }
- REFRESH_GRANT = 1; { Refresh grant tables }
- REFRESH_LOG = 2; { Start on new log file }
- REFRESH_TABLES = 4; { close all tables }
+ REFRESH_GRANT = 1; { Refresh grant tables }
+ REFRESH_LOG = 2; { Start on new log file }
+ REFRESH_TABLES = 4; { close all tables }
- CLIENT_LONG_PASSWORD = 1; { new more secure passwords }
- CLIENT_FOUND_ROWS = 2; { Found instead of affected rows }
- CLIENT_LONG_FLAG = 4; { Get all column flags }
+ CLIENT_LONG_PASSWORD = 1; { new more secure passwords }
+ CLIENT_FOUND_ROWS = 2; { Found instead of affected rows }
+ CLIENT_LONG_FLAG = 4; { Get all column flags }
pst_used_mem = ^st_used_mem;
-st_used_mem = record { struct for once_alloc }
- next : pst_used_mem; { Next block in use }
- left : cardinal; { memory left in block }
- size : cardinal; { size of block }
+st_used_mem = record { struct for once_alloc }
+ next : pst_used_mem; { Next block in use }
+ left : cardinal; { memory left in block }
+ size : cardinal; { size of block }
TUSED_MEM = st_used_mem;
@@ -99,24 +99,24 @@ Const
enum_field_types = ( FIELD_TYPE_DECIMAL, FIELD_TYPE_TINY,
- FIELD_TYPE_SHORT, FIELD_TYPE_LONG,
- FIELD_TYPE_FLOAT, FIELD_TYPE_DOUBLE,
- FIELD_TYPE_NULL, FIELD_TYPE_TIMESTAMP,
- FIELD_TYPE_LONGLONG,FIELD_TYPE_INT24,
- FIELD_TYPE_DATE, FIELD_TYPE_TIME,
- FIELD_TYPE_DATETIME,
- FIELD_TYPE_ENUM := 247,
- FIELD_TYPE_SET := 248,
- FIELD_TYPE_TINY_BLOB := 249,
- FIELD_TYPE_MEDIUM_BLOB := 250,
- FIELD_TYPE_LONG_BLOB :=251,
- FIELD_TYPE_BLOB :=252,
- FIELD_TYPE_VAR_STRING :=253,
- FIELD_TYPE_STRING:=254);
+ FIELD_TYPE_SHORT, FIELD_TYPE_LONG,
+ FIELD_TYPE_FLOAT, FIELD_TYPE_DOUBLE,
+ FIELD_TYPE_NULL, FIELD_TYPE_TIMESTAMP,
+ FIELD_TYPE_LONGLONG,FIELD_TYPE_INT24,
+ FIELD_TYPE_DATE, FIELD_TYPE_TIME,
+ FIELD_TYPE_DATETIME,
+ FIELD_TYPE_ENUM := 247,
+ FIELD_TYPE_SET := 248,
+ FIELD_TYPE_TINY_BLOB := 249,
+ FIELD_TYPE_MEDIUM_BLOB := 250,
+ FIELD_TYPE_LONG_BLOB :=251,
+ FIELD_TYPE_BLOB :=252,
+ FIELD_TYPE_VAR_STRING :=253,
+ FIELD_TYPE_STRING:=254);
-FIELD_TYPE_CHAR = FIELD_TYPE_TINY; { For compability }
-FIELD_TYPE_INTERVAL = FIELD_TYPE_ENUM; { For compability }
+FIELD_TYPE_CHAR = FIELD_TYPE_TINY; { For compability }
+FIELD_TYPE_INTERVAL = FIELD_TYPE_ENUM; { For compability }
Procedure sql_free (root : PMEM_ROOT);cdecl;
Procedure init_alloc_root (root: PMEM_ROOT;block_size : Cardinal);cdecl;
@@ -155,10 +155,10 @@ PRand_struct = ^TRand_struct;
Item_result = (STRING_RESULT,REAL_RESULT,INT_RESULT);
st_udf_args = record
- arg_count : cardinal; { Number of arguments }
- arg_type : ^Item_result; { Pointer to item_results }
- args : ppchar; { Pointer to argument }
- lengths : PCardinal; { Length of string arguments }
+ arg_count : cardinal; { Number of arguments }
+ arg_type : ^Item_result; { Pointer to item_results }
+ args : ppchar; { Pointer to argument }
+ lengths : PCardinal; { Length of string arguments }
TUDF_ARGS = st_udf_args;
PUDPF_ARGS = ^TUDF_ARGS;
@@ -166,10 +166,10 @@ PUDPF_ARGS = ^TUDF_ARGS;
{ This holds information about the result }
st_udf_init = record
- maybe_null : my_bool; { 1 if function can return NULL }
- decimals : cardinal; { for real functions }
- max_length : Cardinal; { For string functions }
- ptr : PChar; { free pointer for function data }
+ maybe_null : my_bool; { 1 if function can return NULL }
+ decimals : cardinal; { for real functions }
+ max_length : Cardinal; { For string functions }
+ ptr : PChar; { free pointer for function data }
TUDF_INIT = st_udf_init;
PUDF_INIT = TUDF_INIT;
@@ -184,9 +184,6 @@ procedure scramble(toarg,message,password : pchar; old_ver : my_bool);cdecl;
function check_scramble(scramble,message : pchar; salt : cardinal;old_ver:my_bool) : my_bool;cdecl;
function get_tty_password(opt_message: pchar) : pchar;cdecl;
-{
-#define NULL_LENGTH ((unsigned long) ~0) { For net_store_length }
-}
@@ -1,138 +1,929 @@
-# Define if ncurses library is not in /usr/lib
-# NCURSESLIBDIR=
UNITOBJECTS=ncurses
EXEOBJECTS=firework testn
-ifdef NCURSESLIBDIR
-override NEEDLIBDIR+=$(NCURSESLIBDIR)
testn$(EXEEXT): testn$(PASEXT) ncurses$(PPUEXT)
firework$(EXEEXT): firework$(PASEXT) ncurses$(PPUEXT)
-# Revision 1.1 1999-05-12 00:11:27 michael
+# Makefile.fpc for NCurses bindings
+units=ncurses
+programs=firework testn
+testn$(EXEEXT): testn$(PASEXT) ncurses$(PPUEXT)
+firework$(EXEEXT): firework$(PASEXT) ncurses$(PPUEXT)
@@ -23,12 +23,12 @@ unit ncurses;
{ Manually Added types }
Bool = byte;
PINTEGER = ^Longint;
PLongint = ^ longint;
PFILE = pointer;
const
NCURSES_VERSION_MAJOR = 3;
NCURSES_VERSION_MINOR = 0;
@@ -38,13 +38,13 @@ unit ncurses;
#ifdef NCURSES_NOMACROS
#define NCURSES_ATTR_T attr_t
#endif
#ifndef NCURSES_ATTR_T
#define NCURSES_ATTR_T int
#ifndef NCURSES_CONST
- #define NCURSES_CONST
+ #define NCURSES_CONST
@@ -56,7 +56,7 @@ unit ncurses;
CXX_BUILTIN_BOOL = 1;
CXX_TYPE_OF_BOOL = char;
@@ -79,7 +79,7 @@ Type
acs_map : tacs_map;external name 'acs_map';
function ACS_ULCORNER : chtype;
function ACS_LLCORNER : chtype;
function ACS_URCORNER : chtype;
@@ -91,8 +91,8 @@ Var
function ACS_HLINE : chtype;
function ACS_VLINE : chtype;
function ACS_PLUS : chtype;
- function ACS_S1 : chtype;
- function ACS_S9 : chtype;
+ function ACS_S1 : chtype;
+ function ACS_S9 : chtype;
function ACS_DIAMOND : chtype;
function ACS_CKBOARD : chtype;
function ACS_DEGREE : chtype;
@@ -105,11 +105,11 @@ Var
function ACS_BOARD : chtype;
function ACS_LANTERN : chtype;
function ACS_BLOCK : chtype;
- function ACS_S3 : chtype;
- function ACS_S7 : chtype;
+ function ACS_S3 : chtype;
+ function ACS_S7 : chtype;
function ACS_LEQUAL : chtype;
function ACS_GEQUAL : chtype;
- function ACS_PI : chtype;
+ function ACS_PI : chtype;
function ACS_NEQUAL : chtype;
function ACS_STERLING : chtype;
@@ -119,19 +119,19 @@ Var
here only uses B and S.
- #define ACS_BSSB ACS_ULCORNER
- #define ACS_SSBB ACS_LLCORNER
- #define ACS_BBSS ACS_URCORNER
- #define ACS_SBBS ACS_LRCORNER
- #define ACS_SBSS ACS_RTEE
- #define ACS_SSSB ACS_LTEE
- #define ACS_SSBS ACS_BTEE
- #define ACS_BSSS ACS_TTEE
- #define ACS_BSBS ACS_HLINE
- #define ACS_SBSB ACS_VLINE
- #define ACS_SSSS ACS_PLUS
+ #define ACS_BSSB ACS_ULCORNER
+ #define ACS_SSBB ACS_LLCORNER
+ #define ACS_BBSS ACS_URCORNER
+ #define ACS_SBBS ACS_LRCORNER
+ #define ACS_SBSS ACS_RTEE
+ #define ACS_SSSB ACS_LTEE
+ #define ACS_SSBS ACS_BTEE
+ #define ACS_BSSS ACS_TTEE
+ #define ACS_BSBS ACS_HLINE
+ #define ACS_SBSB ACS_VLINE
+ #define ACS_SSSS ACS_PLUS
- Const
+ Const
ERR = -(1);
OK = 0;
_SUBWIN = $01;
@@ -206,7 +206,7 @@ Var
PWINDOW = ^WINDOW;
SCREEN=WINDOW;
PSCREEN = PWINDOW;
var
stdscr : PWINDOW;external name 'stdscr';
curscr : PWINDOW;external name 'curscr';
@@ -214,14 +214,14 @@ Var
LINES : longint;external name 'LINES';
COLS : longint;external name 'COLS';
TABSIZE : longint;external name 'TABSIZE';
Function define_key(_para1:pchar; _para2:longint):longint; cdecl;
Function keyok(_para1:longint; _para2:bool):longint; cdecl;
Function resizeterm(_para1:longint; _para2:longint):longint; cdecl;
Function use_default_colors:longint; cdecl;
Function wresize(_para1:pWINDOW; _para2:longint; _para3:longint):longint; cdecl;
- extern char ttytype[];
+ extern char ttytype[];
Function baudrate:longint; cdecl;
Function beep:longint; cdecl;
@@ -272,17 +272,17 @@ Var
Function mvcur(_para1:longint; _para2:longint; _para3:longint; _para4:longint):longint; cdecl;
Function mvderwin(_para1:pWINDOW; _para2:longint; _para3:longint):longint; cdecl;
- extern int mvprintw(int,int,const char ,...)
- GCC_PRINTFLIKE(3,4);
- extern int mvscanw(int,int,const char ,...)
- GCC_SCANFLIKE(3,4);
+ extern int mvprintw(int,int,const char ,...)
+ GCC_PRINTFLIKE(3,4);
+ extern int mvscanw(int,int,const char ,...)
+ GCC_SCANFLIKE(3,4);
Function mvwin(_para1:pWINDOW; _para2:longint; _para3:longint):longint; cdecl;
- extern int mvwprintw(WINDOW ,int,int,const char ,...)
- GCC_PRINTFLIKE(4,5);
- extern int mvwscanw(WINDOW ,int,int,const char ,...)
- GCC_SCANFLIKE(4,5);
+ extern int mvwprintw(WINDOW ,int,int,const char ,...)
+ GCC_PRINTFLIKE(4,5);
+ extern int mvwscanw(WINDOW ,int,int,const char ,...)
+ GCC_SCANFLIKE(4,5);
Function napms(_para1:longint):longint; cdecl;
@@ -301,13 +301,13 @@ Var
Function pair_content(_para1:longint; _para2:plongint; _para3:plongint):longint; cdecl;
Function pechochar(_para1:pWINDOW; _para2:chtype):longint; cdecl;
- Function pnoutrefresh(_para1:pWINDOW; _para2:longint; _para3:longint; _para4:longint; _para5:longint;
+ Function pnoutrefresh(_para1:pWINDOW; _para2:longint; _para3:longint; _para4:longint; _para5:longint;
_para6:longint; _para7:longint):longint;cdecl;
Function prefresh(_para1:pWINDOW; _para2:longint; _para3:longint; _para4:longint; _para5:longint;
- extern int printw(const char ,...)
- GCC_PRINTFLIKE(1,2);
+ extern int printw(const char ,...)
+ GCC_PRINTFLIKE(1,2);
Function putp(_para1:pchar):longint; cdecl;
Function putwin(_para1:pWINDOW; _para2:pFILE):longint; cdecl;
@@ -321,8 +321,8 @@ Var
Function savetty:longint; cdecl;
- extern int scanw(const char ,...)
- GCC_SCANFLIKE(1,2);
+ extern int scanw(const char ,...)
+ GCC_SCANFLIKE(1,2);
Function scr_dump(_para1:pchar):longint; cdecl;
@@ -404,7 +404,7 @@ Var
Function wgetch(_para1:pWINDOW):longint; cdecl;
Function wgetnstr(_para1:pWINDOW; _para2:pchar; _para3:longint):longint; cdecl;
Function whline(_para1:pWINDOW; _para2:chtype; _para3:longint):longint; cdecl;
- Function winch (win : PWindow) : longint;
+ Function winch (win : PWindow) : longint;
Function winchnstr(_para1:pWINDOW; _para2:pchtype; _para3:longint):longint; cdecl;
Function winnstr(_para1:pWINDOW; _para2:pchar; _para3:longint):longint; cdecl;
Function winsch(_para1:pWINDOW; _para2:chtype):longint; cdecl;
@@ -413,14 +413,14 @@ Var
Function wmove(_para1:pWINDOW; _para2:longint; _para3:longint):longint; cdecl;
Function wnoutrefresh(_para1:pWINDOW):longint; cdecl;
- extern int wprintw(WINDOW ,const char ,...)
- GCC_PRINTFLIKE(2,3);
+ extern int wprintw(WINDOW ,const char ,...)
+ GCC_PRINTFLIKE(2,3);
Function wredrawln(_para1:pWINDOW; _para2:longint; _para3:longint):longint; cdecl;
Function wrefresh(_para1:pWINDOW):longint; cdecl;
- extern int wscanw(WINDOW ,const char ,...)
- GCC_SCANFLIKE(2,3);
+ extern int wscanw(WINDOW ,const char ,...)
+ GCC_SCANFLIKE(2,3);
Function wscrl(_para1:pWINDOW; _para2:longint):longint; cdecl;
Function wsetscrreg(_para1:pWINDOW; _para2:longint; _para3:longint):longint; cdecl;
@@ -450,11 +450,11 @@ Var
A_RIGHT = 1 shl (20 + 8);
A_TOP = 1 shl (21 + 8);
A_VERTICAL = 1 shl (22 + 8);
- Function color_pair(n : longint): longint;
+ Function color_pair(n : longint): longint;
PAIR_NUMBER = (a(@(A_COLOR))) shr 8;
pseudo functions
@@ -578,7 +578,7 @@ Var
function mvinchnstr(y,x : longint; s : pchar;n : longint) : longint;
function mvinchstr(y,x : longint; s : pchar) : longint;
function mvinnstr(y,x : longint; s : pchar;n : longint) : longint;
- function mvinsch(y,x,c : longint) : longint;
+ function mvinsch(y,x: longint;c : chtype) : longint;
function mvinsnstr(y,x : longint; s : pchar;n : longint) : longint;
function mvinsstr(y,x : longint; s : pchar) : longint;
function mvinstr(y,x : longint; s : pchar) : longint;
@@ -602,104 +602,104 @@ Var
will return any given one of these only if the corresponding k- capability
is defined in your terminal's terminfo entry.
- const {octal}
- KEY_CODE_YES = 256; {0400}
- KEY_MIN = 257; {0401}
- KEY_BREAK = 257; {0401}
- KEY_DOWN = 258; {0402}
- KEY_UP = 259; {0403}
- KEY_LEFT = 260; {0404}
- KEY_RIGHT = 261; {0405}
- KEY_HOME = 262; {0406}
- KEY_BACKSPACE = 263; {0407}
- KEY_F0 = 264; {0410}
+ const {octal}
+ KEY_CODE_YES = 256; {0400}
+ KEY_MIN = 257; {0401}
+ KEY_BREAK = 257; {0401}
+ KEY_DOWN = 258; {0402}
+ KEY_UP = 259; {0403}
+ KEY_LEFT = 260; {0404}
+ KEY_RIGHT = 261; {0405}
+ KEY_HOME = 262; {0406}
+ KEY_BACKSPACE = 263; {0407}
+ KEY_F0 = 264; {0410}
function KEY_F(n : longint) : longint;
- KEY_DL = 328; {0510}
- KEY_IL = 329; {0511}
- KEY_DC = 330; {0512}
- KEY_IC = 331; {0513}
- KEY_EIC = 332; {0514}
- KEY_CLEAR = 333; {0515}
- KEY_EOS = 334; {0516}
- KEY_EOL = 335; {0517}
- KEY_SF = 336; {0520}
- KEY_SR = 337; {0521}
- KEY_NPAGE = 338; {0522}
- KEY_PPAGE = 339; {0523}
- KEY_STAB = 340; {0524}
- KEY_CTAB = 341; {0525}
- KEY_CATAB = 342; {0526}
- KEY_ENTER = 343; {0527}
- KEY_SRESET = 344; {0530}
- KEY_RESET = 345; {0531}
- KEY_PRINT = 346; {0532}
- KEY_LL = 347; {0533}
- KEY_A1 = 348; {0534}
- KEY_A3 = 349; {0535}
- KEY_B2 = 350; {0536}
- KEY_C1 = 351; {0537}
- KEY_C3 = 352; {0540}
- KEY_BTAB = 353; {0541}
- KEY_BEG = 354; {0542}
- KEY_CANCEL = 355; {0543}
- KEY_CLOSE = 356; {0544}
- KEY_COMMAND = 357; {0545}
- KEY_COPY = 358; {0546}
- KEY_CREATE = 359; {0547}
- KEY_END = 360; {0550}
- KEY_EXIT = 361; {0551}
- KEY_FIND = 362; {0552}
- KEY_HELP = 363; {0553}
- KEY_MARK = 364; {0554}
- KEY_MESSAGE = 365; {0555}
- KEY_MOVE = 366; {0556}
- KEY_NEXT = 367; {0557}
- KEY_OPEN = 368; {0560}
- KEY_OPTIONS = 369; {0561}
- KEY_PREVIOUS = 370; {0562}
- KEY_REDO = 371; {0563}
- KEY_REFERENCE = 372; {0564}
- KEY_REFRESH = 373; {0565}
- KEY_REPLACE = 374; {0566}
- KEY_RESTART = 375; {0567}
- KEY_RESUME = 376; {0570}
- KEY_SAVE = 377; {0571}
- KEY_SBEG = 378; {0572}
- KEY_SCANCEL = 379; {0573}
- KEY_SCOMMAND = 380; {0574}
- KEY_SCOPY = 381; {0575}
- KEY_SCREATE = 382; {0576}
- KEY_SDC = 383; {0577}
- KEY_SDL = 384; {0600}
- KEY_SELECT = 385; {0601}
- KEY_SEND = 386; {0602}
- KEY_SEOL = 387; {0603}
- KEY_SEXIT = 388; {0604}
- KEY_SFIND = 389; {0605}
- KEY_SHELP = 390; {0606}
- KEY_SHOME = 391; {0607}
- KEY_SIC = 392; {0610}
- KEY_SLEFT = 393; {0611}
- KEY_SMESSAGE = 394; {0612}
- KEY_SMOVE = 395; {0613}
- KEY_SNEXT = 396; {0614}
- KEY_SOPTIONS = 397; {0615}
- KEY_SPREVIOUS = 398; {0616}
- KEY_SPRINT = 399; {0617}
- KEY_SREDO = 400; {0620}
- KEY_SREPLACE = 401; {0621}
- KEY_SRIGHT = 402; {0622}
- KEY_SRSUME = 403; {0623}
- KEY_SSAVE = 404; {0624}
- KEY_SSUSPEND = 405; {0625}
- KEY_SUNDO = 406; {0626}
- KEY_SUSPEND = 407; {0627}
- KEY_UNDO = 408; {0630}
- KEY_MOUSE = 409; {0631}
- KEY_RESIZE = 410; {0632}
- KEY_MAX = 511; {0777}
+ KEY_DL = 328; {0510}
+ KEY_IL = 329; {0511}
+ KEY_DC = 330; {0512}
+ KEY_IC = 331; {0513}
+ KEY_EIC = 332; {0514}
+ KEY_CLEAR = 333; {0515}
+ KEY_EOS = 334; {0516}
+ KEY_EOL = 335; {0517}
+ KEY_SF = 336; {0520}
+ KEY_SR = 337; {0521}
+ KEY_NPAGE = 338; {0522}
+ KEY_PPAGE = 339; {0523}
+ KEY_STAB = 340; {0524}
+ KEY_CTAB = 341; {0525}
+ KEY_CATAB = 342; {0526}
+ KEY_ENTER = 343; {0527}
+ KEY_SRESET = 344; {0530}
+ KEY_RESET = 345; {0531}
+ KEY_PRINT = 346; {0532}
+ KEY_LL = 347; {0533}
+ KEY_A1 = 348; {0534}
+ KEY_A3 = 349; {0535}
+ KEY_B2 = 350; {0536}
+ KEY_C1 = 351; {0537}
+ KEY_C3 = 352; {0540}
+ KEY_BTAB = 353; {0541}
+ KEY_BEG = 354; {0542}
+ KEY_CANCEL = 355; {0543}
+ KEY_CLOSE = 356; {0544}
+ KEY_COMMAND = 357; {0545}
+ KEY_COPY = 358; {0546}
+ KEY_CREATE = 359; {0547}
+ KEY_END = 360; {0550}
+ KEY_EXIT = 361; {0551}
+ KEY_FIND = 362; {0552}
+ KEY_HELP = 363; {0553}
+ KEY_MARK = 364; {0554}
+ KEY_MESSAGE = 365; {0555}
+ KEY_MOVE = 366; {0556}
+ KEY_NEXT = 367; {0557}
+ KEY_OPEN = 368; {0560}
+ KEY_OPTIONS = 369; {0561}
+ KEY_PREVIOUS = 370; {0562}
+ KEY_REDO = 371; {0563}
+ KEY_REFERENCE = 372; {0564}
+ KEY_REFRESH = 373; {0565}
+ KEY_REPLACE = 374; {0566}
+ KEY_RESTART = 375; {0567}
+ KEY_RESUME = 376; {0570}
+ KEY_SAVE = 377; {0571}
+ KEY_SBEG = 378; {0572}
+ KEY_SCANCEL = 379; {0573}
+ KEY_SCOMMAND = 380; {0574}
+ KEY_SCOPY = 381; {0575}
+ KEY_SCREATE = 382; {0576}
+ KEY_SDC = 383; {0577}
+ KEY_SDL = 384; {0600}
+ KEY_SELECT = 385; {0601}
+ KEY_SEND = 386; {0602}
+ KEY_SEOL = 387; {0603}
+ KEY_SEXIT = 388; {0604}
+ KEY_SFIND = 389; {0605}
+ KEY_SHELP = 390; {0606}
+ KEY_SHOME = 391; {0607}
+ KEY_SIC = 392; {0610}
+ KEY_SLEFT = 393; {0611}
+ KEY_SMESSAGE = 394; {0612}
+ KEY_SMOVE = 395; {0613}
+ KEY_SNEXT = 396; {0614}
+ KEY_SOPTIONS = 397; {0615}
+ KEY_SPREVIOUS = 398; {0616}
+ KEY_SPRINT = 399; {0617}
+ KEY_SREDO = 400; {0620}
+ KEY_SREPLACE = 401; {0621}
+ KEY_SRIGHT = 402; {0622}
+ KEY_SRSUME = 403; {0623}
+ KEY_SSAVE = 404; {0624}
+ KEY_SSUSPEND = 405; {0625}
+ KEY_SUNDO = 406; {0626}
+ KEY_SUSPEND = 407; {0627}
+ KEY_UNDO = 408; {0630}
+ KEY_MOUSE = 409; {0631}
+ KEY_RESIZE = 410; {0632}
+ KEY_MAX = 511; {0777}
function mcprint(_para1:pchar; _para2:longint):longint;cdecl;
function has_key(_para1:longint):longint;cdecl;
@@ -719,7 +719,7 @@ const External_library='';
function cbreak:longint;Cdecl; External;
function clearok(_para1:pWINDOW; _para2:bool):longint;Cdecl; External;
function color_content(_para1:longint; _para2:plongint; _para3:plongint; _para4:plongint):longint;Cdecl; External;
- function copywin(_para1:pWINDOW; _para2:pWINDOW; _para3:longint; _para4:longint; _para5:longint;
+ function copywin(_para1:pWINDOW; _para2:pWINDOW; _para3:longint; _para4:longint; _para5:longint;
_para6:longint; _para7:longint; _para8:longint; _para9:longint):longint;Cdecl; External;
function curs_set(_para1:longint):longint;Cdecl; External;
function def_prog_mode:longint;Cdecl; External;
@@ -767,9 +767,9 @@ const External_library='';
function overwrite(_para1:pWINDOW; _para2:pWINDOW):longint;Cdecl; External;
function pair_content(_para1:longint; _para2:plongint; _para3:plongint):longint;Cdecl; External;
function pechochar(_para1:pWINDOW; _para2:chtype):longint;Cdecl; External;
- function pnoutrefresh(_para1:pWINDOW; _para2:longint; _para3:longint; _para4:longint; _para5:longint;
+ function pnoutrefresh(_para1:pWINDOW; _para2:longint; _para3:longint; _para4:longint; _para5:longint;
_para6:longint; _para7:longint):longint;Cdecl; External;
- function prefresh(_para1:pWINDOW; _para2:longint; _para3:longint; _para4:longint; _para5:longint;
+ function prefresh(_para1:pWINDOW; _para2:longint; _para3:longint; _para4:longint; _para5:longint;
function putp(_para1:pchar):longint;Cdecl; External;
function putwin(_para1:pWINDOW; _para2:pFILE):longint;Cdecl; External;
@@ -819,7 +819,7 @@ const External_library='';
function wattr_off(_para1:pWINDOW; _para2:attr_t):longint;Cdecl; External;
function wbkgd(_para1:pWINDOW; _para2:chtype):longint;Cdecl; External;
procedure wbkgdset(_para1:pWINDOW; _para2:chtype);Cdecl; External;
- function wborder(_para1:pWINDOW; _para2:chtype; _para3:chtype; _para4:chtype; _para5:chtype;
+ function wborder(_para1:pWINDOW; _para2:chtype; _para3:chtype; _para4:chtype; _para5:chtype;
_para6:chtype; _para7:chtype; _para8:chtype; _para9:chtype):longint;Cdecl; External;
function wchgat(_para1:pWINDOW; _para2:longint; _para3:attr_t; _para4:longint; _para5:pointer):longint;Cdecl; External;
function wclear(_para1:pWINDOW):longint;Cdecl; External;
@@ -859,7 +859,7 @@ const External_library='';
function setterm(term : longint) : longint;
setterm:=setupterm(term,1,plongint(0));
@@ -890,7 +890,7 @@ const External_library='';
function getattrs(win : pwindow) : longint;
if_local1 : longint;
if win<>nil then
if_local1:=win^._attrs
@@ -901,7 +901,7 @@ const External_library='';
function getcurx(win : pwindow) : longint;
if_local1:=win^._curx
@@ -912,7 +912,7 @@ const External_library='';
function getcury(win : pwindow) : longint;
if win<>Nil then
if_local1:=win^._cury
@@ -923,7 +923,7 @@ const External_library='';
function getbegx(win : pwindow) : longint;
if_local1:=win^._begx
@@ -934,7 +934,7 @@ const External_library='';
function getbegy(win : pwindow) : longint;
if_local1:=win^._begy
@@ -945,7 +945,7 @@ const External_library='';
function getmaxx(win : pwindow) : longint;
if_local1:=(win^._maxx) + 1
@@ -956,7 +956,7 @@ const External_library='';
function getmaxy(win : pwindow) : longint;
if_local1:=(win^._maxy) + 1
@@ -967,7 +967,7 @@ const External_library='';
function getparx(win : pwindow) : longint;
if_local1:=win^._parx
@@ -978,7 +978,7 @@ const External_library='';
function getpary(win : pwindow) : longint;
if_local1:=win^._pary
@@ -1602,130 +1602,130 @@ const External_library='';
ACS_ULCORNER:=acs_map['l'];
ACS_LLCORNER:=acs_map['m'];
ACS_URCORNER:=acs_map['k'];
function ACS_LRCORNER : chtype;
ACS_LRCORNER:=acs_map['j'];
function ACS_LTEE : chtype;
ACS_LTEE:=acs_map['t'];
function ACS_RTEE : chtype;
ACS_RTEE:=acs_map['u'];
function ACS_BTEE : chtype;
ACS_BTEE:=acs_map['v'];
function ACS_TTEE : chtype;
ACS_TTEE:=acs_map['w'];
ACS_HLINE:=acs_map['q'];
ACS_VLINE:=acs_map['x'];
ACS_PLUS:=acs_map['n'];
- ACS_S1 :=acs_map['o'];
+ ACS_S1 :=acs_map['o'];
- ACS_S9 :=acs_map['s'];
+ ACS_S9 :=acs_map['s'];
ACS_DIAMOND:=acs_map['`'];
ACS_CKBOARD:=acs_map['a'];
ACS_DEGREE:=acs_map['f'];
function ACS_PLMINUS : chtype;
ACS_PLMINUS:=acs_map['g'];
function ACS_BULLET : chtype;
ACS_BULLET:=acs_map['~'];
function ACS_LARROW : chtype;
ACS_LARROW:=acs_map[','];
function ACS_RARROW : chtype;
ACS_RARROW:=acs_map['+'];
function ACS_DARROW : chtype;
ACS_DARROW:=acs_map['.'];
function ACS_UARROW : chtype;
ACS_UARROW:=acs_map['-'];
ACS_BOARD:=acs_map['h'];
ACS_LANTERN:=acs_map['i'];
ACS_BLOCK:=acs_map['0'];
- ACS_S3 :=acs_map['p'];
+ ACS_S3 :=acs_map['p'];
- ACS_S7 :=acs_map['r'];
+ ACS_S7 :=acs_map['r'];
ACS_LEQUAL:=acs_map['y'];
ACS_GEQUAL:=acs_map['z'];
- ACS_PI :=acs_map['{'];
+ ACS_PI :=acs_map['{'];
ACS_NEQUAL:=acs_map['|'];
ACS_STERLING:=acs_map['}'];
end.
@@ -1,129 +1,926 @@
-# Makefile for GL units for Free Pascal
-NEEDOPT=-Sm
-TARGETDIR=./
-UNITTARGETDIR=./
-# Default libary name
-LIBNAME=
-UNITOBJECTS=xlib gl glut
+UNITOBJECTS=xlib gl glut
+EXEOBJECTS=glutdemo
+override NEEDOPT=-Sm
-# Revision 1.1 1999-11-10 14:15:33 sg
@@ -0,0 +1,22 @@
+# Makefile.fpc for GL Units
+units=xlib gl glut
+programs=glutdemo
+defaultoptions=-Sm
@@ -1,129 +0,0 @@
-# Makefile for GL demos for Free Pascal
-EXEOBJECTS=glutdemo
@@ -1,139 +1,925 @@
+# Makefile generated by fpcmake v0.99.13 on 1999-11-14 16:55
-# Define if pq library is not in /usr/lib
-# POSTGRESLIBDIR=
UNITOBJECTS=dllist postgres
EXEOBJECTS=testpg testemail
-ifdef POSTGRESLIBDIR
-override NEEDLIBDIR+=$(POSTGRESLIBDIR)
-mysql$(PPUEXT): mysql$(PASEXT) mysql_com$(PPUEXT)
-testdb$(EXEEXT): testdb$(PASEXT) mysql$(PPUEXT)
+# Makefile.fpc for Postgres bindings
+units=dllist postgres
+programs=testpg testemail
@@ -16,11 +16,11 @@ end;
pghost,pgport,pgoptions,pgtty,dbname : Pchar;
- nFields,i,j : longint;
+ nFields,i : longint;
conn : PPGConn;
res : PPGresult;
dummy : string;
pghost := NiL; { host name of the backend server }
pgport := NiL; { port of the backend server }
@@ -1,116 +1,925 @@
+# Makefile generated by fpcmake v0.99.13 on 1999-11-14 17:25
UNITOBJECTS=svgalib vgamouse
EXEOBJECTS=testvga vgatest
-ifdef SVGALIBDIR
-override NEEDLIBDIR+=$(SVGALIBDIR)
-# Revision 1.2 1999-06-08 18:28:25 peter
+# Makefile.fpc for SVGALib Bindings
+units=svgalib vgamouse
+programs=testvga vgatest
@@ -1,110 +1,925 @@
+# Makefile generated by fpcmake v0.99.13 on 1999-11-14 17:30
UNITOBJECTS=uncgi
EXEOBJECTS=testcgi
-# Revision 1.2 1999-06-08 18:28:26 peter
+# Makefile.fpc for CGI Units
+units=uncgi
+programs=testcgi
@@ -7,7 +7,7 @@ unit uncgi;
interface
-uses
+uses
strings
{$ifdef linux}
,linux
@@ -17,71 +17,71 @@ uses
{***********************************************************************}
- maxquery = 100;
- hextable : array[0..15] of char=('0','1','2','3','4','5','6','7',
+ maxquery = 100;
+ hextable : array[0..15] of char=('0','1','2','3','4','5','6','7',
'8','9','A','B','C','D','E','F');
uncgi_version = 'UNCGI 2.0.11';
uncgi_year = '1999';
maintainer_name = 'Your Name Here';
maintainer_email= '[email protected]';
-Type cgi_error_proc = procedure (Const Proc,Err : String);
+Type cgi_error_proc = procedure (Const Proc,Err : String);
- get_nodata : boolean;
- query_read : word;
- query_array : array[1..2,1..maxquery] of pchar;
+ get_nodata : boolean;
+ query_read : word;
+ query_array : array[1..2,1..maxquery] of pchar;
uncgi_error : cgi_error_proc;
-{ FUNCTION
+{ FUNCTION
+ This function returns the REQUEST METHOD of the CGI-BIN script
- This function returns the REQUEST METHOD of the CGI-BIN script
- Input - Nothing
- Output - [GET|POST]
+ Input - Nothing
+ Output - [GET|POST]
function http_request_method: pchar;
{ FUNCTION
This function returns the "referring" page. i.e. the page you followed
- the link to this CGI-BIN from
+ the link to this CGI-BIN from
- Output - [http://somewhere.a.tld]
+ Output - [http://somewhere.a.tld]
function http_referer: pchar;
- This function returns the users's USER AGENT, the browser name etc.
- Output - user agent string
+ This function returns the users's USER AGENT, the browser name etc.
+ Output - user agent string
function http_useragent: pchar;
- This function returns a value from an id=value pair
- Input - The identifier you want the value from
- Output - If the identifier was found, the resulting value is
- the output, otherwise the output is NIL
+ This function returns a value from an id=value pair
+ Input - The identifier you want the value from
+ Output - If the identifier was found, the resulting value is
+ the output, otherwise the output is NIL
function get_value(id: pchar): pchar;
{ PROCEDURE
This procedure writes the content-type to the screen
- Input - The content type in MIME format
- Output - Nothing
+ Input - The content type in MIME format
+ Output - Nothing
- Example - set_content('text/plain');
- set_content('text/html');
+ Example - set_content('text/plain');
+ set_content('text/html');
procedure set_content(ctype: string);
@@ -94,7 +94,7 @@ implementation
Var EnvP : PChar;
EnvLen : Longint;
OldExitProc : Pointer;
function GetEnvironmentStrings : pchar; external 'kernel32' name 'GetEnvironmentStringsA';
function FreeEnvironmentStrings(p : pchar) : longbool; external 'kernel32' name 'FreeEnvironmentStringsA';
@@ -159,7 +159,7 @@ end;
{$endif}
- done_init : boolean;
+ done_init : boolean;
@@ -183,8 +183,8 @@ begin
function hexconv(h1,h2: char): char;
-var
- cnt : byte;
+ cnt : byte;
thex : byte;
for cnt :=0 to 15 do if upcase(h1)=hextable[cnt] then thex := cnt * 16;
@@ -192,16 +192,16 @@ begin
hexconv := chr(thex);
-procedure def_uncgi_error(pname,perr: string);
+procedure def_uncgi_error(const pname,perr: string);
writeln('<html><head><title>UNCGI ERROR</title></head>');
writeln('<body>');
writeln('<center><hr><h1>UNCGI ERROR</h1><hr></center><br><br>');
writeln('UnCgi encountered the following error: <br>');
writeln('<ul><br>');
writeln('<li> procedure: ',pname,'<br>');
- writeln('<li> error: ',perr,'<br><hr>');
+ writeln('<li> error: ',perr,'<br><hr>');
writeln(
'<h5><p><i>uncgi (c) ',uncgi_year,' ',maintainer_name,
{ skelet fix }
@@ -213,11 +213,11 @@ end;
- cnt : word;
+ cnt : word;
get_value:=Nil;
- if done_init then
- for cnt :=1 to query_read do
+ if done_init then
+ for cnt :=1 to query_read do
if strcomp(strupper(id),strupper(query_array[1,cnt]))=0 then
get_value := query_array[2,cnt];
@@ -227,14 +227,14 @@ end;
Function UnEscape(QueryString: PChar): PChar;
- qunescaped : pchar;
- sptr : longint;
+ qunescaped : pchar;
+ sptr : longint;
qslen : longint;
qslen:=strlen(QueryString);
- if qslen=0 then
+ if qslen=0 then
Unescape:=#0;
get_nodata:=true;
@@ -255,11 +255,11 @@ begin
case querystring[cnt] of
'+': qunescaped[sptr] := ' ';
'%': begin
- qunescaped[sptr] :=
+ qunescaped[sptr] :=
hexconv(querystring[cnt+1], querystring[cnt+2]);
- inc(cnt,2);
+ inc(cnt,2);
qunescaped[sptr] := querystring[cnt];
inc(sptr);
@@ -271,29 +271,28 @@ end;
Function Chop(QunEscaped : PChar) : Longint;
- qptr : word;
+ qptr : word;
- p : pchar;
qptr := 1;
qslen:=strlen(QUnescaped);
- query_array[1,qptr] := qunescaped;
+ query_array[1,qptr] := qunescaped;
for cnt := 0 to qslen-1 do
case qunescaped[cnt] of
'=': begin
qunescaped[cnt] := #0;
{ save address }
- query_array[2,qptr] := @qunescaped[cnt+1];
+ query_array[2,qptr] := @qunescaped[cnt+1];
'&': begin
{ Unescape previous one. }
query_array[2,qptr]:=unescape(query_array[2,qptr]);
- inc(qptr);
- query_array[1,qptr] := @qunescaped[cnt+1];
+ inc(qptr);
+ query_array[1,qptr] := @qunescaped[cnt+1];
end; { Case }
{ Unescape last one. }
@@ -302,15 +301,14 @@ end;
procedure cgi_read_get_query;
- querystring : pchar;
- qslen : longint;
+ querystring : pchar;
+ qslen : longint;
querystring :=strnew(getenv('QUERY_STRING'));
if querystring<>NIL then
qslen :=strlen(querystring);
get_nodata :=true;
exit;
@@ -321,28 +319,27 @@ begin
done_init :=true;
procedure cgi_read_post_query;
sptr : longint;
- clen : string;
+ clen : string;
ch : char;
- if getenv('CONTENT_LENGTH')<>Nil then
+ if getenv('CONTENT_LENGTH')<>Nil then
clen:=strpas (getenv('CONTENT_LENGTH'));
val(clen,qslen);
- if upcase(strpas(getenv('CONTENT_TYPE')))='APPLICATION/X-WWW-FORM-URLENCODED'
+ if upcase(strpas(getenv('CONTENT_TYPE')))='APPLICATION/X-WWW-FORM-URLENCODED'
then
getmem(querystring,qslen+1);
sptr :=0;
while sptr<>qslen do
- begin
+ begin
read(ch);
pchar(longint(querystring)+sptr)^ :=ch;
@@ -357,7 +354,7 @@ end;
procedure cgi_init;
- rmeth : pchar;
+ rmeth : pchar;
query_read:=0;
rmeth :=http_request_method;
@@ -372,8 +369,6 @@ begin
procedure cgi_deinit;
- ctr : longint;
done_init :=false;
query_read :=0;
@@ -394,64 +389,67 @@ end.
HISTORY
- Revision 1.4 1999-07-26 20:07:44 michael
+ Revision 1.5 1999-11-14 15:59:06 peter
+ Revision 1.4 1999/07/26 20:07:44 michael
+ Fix for empty values by Andre Steinert
- - 1.0.0 03/07/97
- ----------------
- Only GET method implemented
- - 1.0.1 05/07/97
- + Extra procedures for getting extra information:
- * referrer
- * user agent
- * request method
- + Crude POST reading
- - 1.1.0 14/07/97
- + Bugfix in POST reading, still doesn't work right.
+ - 1.0.0 03/07/97
+ ----------------
+ Only GET method implemented
+ - 1.0.1 05/07/97
+ + Extra procedures for getting extra information:
+ * referrer
+ * user agent
+ * request method
+ + Crude POST reading
+ - 1.1.0 14/07/97
+ + Bugfix in POST reading, still doesn't work right.
- 2.0.0 02/08/97
- Started from scratch, POST reading still limited to
- 255 characters max. for value
- - 2.0.1 04/08/97
- ---------------
- Conversion from strings to pchar done by
- Michael van Canneyt. (Routines "UnEscape" and "Chop")
- Small changes made to convert everything to pchar usage.
- - 2.0.2 22/04/98
- tested with Apache HTTP Server and bugfix in pchar conversion,
- PChar(Longint(PChar)+x)) syntax modified to PChar[x]
- by Laszlo Nemeth.
- - 2.0.3 05/06/98
- Added maintainer_name,maintainer_email,uncgi_year
- diff from Bernhard van Staveren.
- - 2.0.4 09/07/98
- Some more error checking.
- cgi_error is now a procedural variable with the old
- cgi_erro procedure as a default value, allowing recovery
- incase of an error, and not immediate shutdown.
+ Started from scratch, POST reading still limited to
+ 255 characters max. for value
+ - 2.0.1 04/08/97
+ ---------------
+ Conversion from strings to pchar done by
+ Michael van Canneyt. (Routines "UnEscape" and "Chop")
+ Small changes made to convert everything to pchar usage.
+ - 2.0.2 22/04/98
+ tested with Apache HTTP Server and bugfix in pchar conversion,
+ PChar(Longint(PChar)+x)) syntax modified to PChar[x]
+ by Laszlo Nemeth.
+ - 2.0.3 05/06/98
+ Added maintainer_name,maintainer_email,uncgi_year
+ diff from Bernhard van Staveren.
+ - 2.0.4 09/07/98
+ Some more error checking.
+ cgi_error is now a procedural variable with the old
+ cgi_erro procedure as a default value, allowing recovery
+ incase of an error, and not immediate shutdown.
- 2.0.6 02/28/99
--------------
The unit can be used under Win32 also.
- - 2.0.7 04/04/99
- --------------
- Inversed order of Chop and unescape, thus fixing bug of possible
- '=' and '&' characters in values.
+ - 2.0.7 04/04/99
+ --------------
+ Inversed order of Chop and unescape, thus fixing bug of possible
+ '=' and '&' characters in values.
- 2.0.8 04/08/99
Fixed bug in unescape, qslen wasn't initialized.
@@ -1,112 +1,927 @@
+# Makefile generated by fpcmake v0.99.13 on 1999-11-14 17:11
UNITOBJECTS=utmp
EXEOBJECTS=testu
testu$(EXEEXT): testu$(PASEXT) utmp$(PPUEXT)
-# Revision 1.2 1999-06-08 18:28:27 peter
+# Makefile.fpc for UTmp Unit
+units=utmp
+programs=testu
+testu$(EXEEXT): testu$(PASEXT) utmp$(PPUEXT)
@@ -17,13 +17,12 @@ type
tDevice_name = String[Device_name_length];
tUser_name = String[User_name_length];
tHost_name = String[Host_name_length];
- tLogin_type = (Unkown, Run_level, Boot_time, New_time, Old_time,
+ tLogin_type = (Unkown, Run_level, Boot_time, New_time, Old_time,
Init_process, Login_process, User_process, Dead_process);
tLogin_types = set of tLogin_type;
tParameter_type = (Include, Exclude);
-{$PACKRECORD 1}
- tUser = record
+ tUser = packed record
Type_of_login : tLogin_type;
Pid : tPid;
Device : tDevice_name;
@@ -37,17 +36,17 @@ type
DefaultLoginType : TLogin_Types = [User_Process];
- Login_type_names : array [TLogin_type] of string[20] =
- ('Unkown', 'Run level', 'Boot time','New time', 'Old time',
+ Login_type_names : array [TLogin_type] of string[20] =
+ ('Unkown', 'Run level', 'Boot time','New time', 'Old time',
'Init process', 'Login process', 'User process', 'Dead process');
- All_Login_types : TLogin_types = [Unkown, Run_level, Boot_time, New_time, Old_time,
+ All_Login_types : TLogin_types = [Unkown, Run_level, Boot_time, New_time, Old_time,
Init_process, Login_process, User_process, Dead_process];
procedure Read_logged_users;
function Get_next_user : tUser;
function Get_next_user(var Last : Boolean) : tUser;
procedure Set_search_parameters(
- const Parameter_type : tParameter_type;
+ const Parameter_type : tParameter_type;
Login_types : tLogin_types);
procedure Reset_user_search;
function More_users : Boolean;
@@ -64,8 +63,8 @@ type
e_termination,
e_exit : integer;
- tLL_Utmp = record
+ tLL_Utmp = record
ut_type : integer;
ut_pid : longint;
ut_line : tdevice_name;
@@ -91,28 +90,28 @@ Type
Type_of_login_types : tParameter_type;
Login_types : tLogin_types;
User_list : pUser_list;
Current_user : pUser_list;
Utmp_file : String;
Search_parameters : tSearch_parameters;
const Parameter_type : tParameter_type;
Search_parameters.Type_of_login_types := Parameter_type;
Search_parameters.Login_types := Login_types;
UL : pUser_list;
Last : Boolean;
UL := Current_user;
Last := True;
@@ -121,18 +120,18 @@ var
Last := (UL^.User.Type_of_login in Search_parameters.Login_types);
end else begin
Last := not (UL^.User.Type_of_login in Search_parameters.Login_types);
UL := UL^.Next;
More_users := not Last;
function Number_of_logged_users : Word;
I : Word;
UL: pUser_list;
I := 0;
UL := User_list;
@@ -144,13 +143,13 @@ var
Number_of_logged_users := I;
Found : Boolean;
User : pUser;
if Current_user <> nil then begin
Found := False;
@@ -178,14 +177,14 @@ var
Dispose(User);
@@ -223,24 +222,24 @@ var
Current_user := User_list;
procedure Set_utmp_file(const File_name : String);
Utmp_file := File_name;
function Number_of_utmp_entries : Word;
S : Stat;
Linux.FStat(Utmp_file, S);
Number_of_utmp_entries := S.Size div System.SizeOf(tLL_Utmp);
@@ -248,13 +247,13 @@ var
procedure Read_entry(var F : File; var Entry : tUser; var User : Boolean);
LL_Entry : tLL_Utmp;
I : Byte;
BlockRead(F, LL_Entry, SizeOf(tLL_Utmp));
Byte(Entry.Type_of_login) := LL_Entry.ut_type;
@@ -263,7 +262,7 @@ var
Entry.TTy_Name:=LL_Entry.ut_id;
Entry.Login_time := LL_Entry.ut_tv[1];
Entry.User_name:=LL_entry.ut_user;
- Entry.Host_name:=LL_entry.ut_host;
+ Entry.Host_name:=LL_entry.ut_host;
Entry.Ip_Address[I] := LL_Entry.ut_addr[i];
@@ -273,7 +272,7 @@ var
U : Boolean;
System.Assign(F, Utmp_file);
{$IFOPT I+}