summaryrefslogtreecommitdiff
path: root/ipl/procs/adjuncts.icn
diff options
context:
space:
mode:
Diffstat (limited to 'ipl/procs/adjuncts.icn')
-rw-r--r--ipl/procs/adjuncts.icn112
1 files changed, 112 insertions, 0 deletions
diff --git a/ipl/procs/adjuncts.icn b/ipl/procs/adjuncts.icn
new file mode 100644
index 0000000..ba05c9e
--- /dev/null
+++ b/ipl/procs/adjuncts.icn
@@ -0,0 +1,112 @@
+############################################################################
+#
+# File: adjuncts.icn
+#
+# Subject: Procedures for gettext and idxtext
+#
+# Author: Richard L. Goerwitz
+#
+# Date: June 21, 2000
+#
+############################################################################
+#
+# This file is in the public domain.
+#
+############################################################################
+#
+# Version: 1.4 December 28, 1993 Phillip Lee Thomas
+# _delimiter added to global list.
+# OS conventions moved to Set_OS() from
+# idxtext.icn and gettext.icn.
+# Version: 1.5 August 5, 1995 Add MS-DOS/386 to features check.
+#
+############################################################################
+#
+# Pretty mundane stuff. Set_OS(), Basename(), Pathname(), Strip(), and
+# a utility for creating index filenames.
+#
+############################################################################
+#
+# See also: gettext.icn, idxtext,icn
+#
+############################################################################
+
+
+global _slash, _baselen, _delimiter, _OS_offset, firstline
+
+procedure Set_OS() #: set global OS features
+
+ # delimiter for indexed values
+ _delimiter := char(255)
+
+ # Initialize filename and line termination conventions.
+ # _baselen: number of characters in filename base.
+ # _OS_offset: number of characters marking newline.
+
+ if find("UNIX"|"Amiga", &features) then {
+ _slash := "/"
+ _baselen := 10
+ _OS_offset := 1
+ }
+ else if find("MS-DOS"|"MS-DOS/386"|"OS/2"|"MS Windows NT", &features) then {
+ _slash := "\\"
+ _baselen := 8
+ _OS_offset := 2
+ }
+ else if find("Macintosh", &features) then {
+ _slash := ":"
+ _baselen := 15
+ _OS_offset := 1
+ }
+ else stop("gettext: OS not supported")
+ return
+end
+
+procedure Basename(s) #: obtain base filename
+
+ # global _slash
+ s ? {
+ while tab(find(_slash)+1)
+ return tab(0)
+ }
+end
+
+
+procedure Pathname(s) #: obtain path of filename
+
+ local s2
+ # global _slash
+
+ s2 := ""
+ s ? {
+ while s2 ||:= tab(find(_slash)+1)
+ return s2
+ }
+end
+
+
+procedure getidxname(FNAME) #: obtain index from datafile name
+
+ #
+ # Discard path component. Cut basename down to a small enough
+ # size that the OS will be able to handle addition of the ex-
+ # tension ".IDX"
+ #
+
+ # global _slash, _baselen
+ return right(Strip(Basename(FNAME,_slash),'.'), _baselen, "x") || ".IDX"
+end
+
+
+procedure Strip(s,c) #: remove chars from string
+
+ local s2
+
+ s2 := ""
+ s ? {
+ while s2 ||:= tab(upto(c))
+ do tab(many(c))
+ s2 ||:= tab(0)
+ }
+ return s2
+end