1da2e3ebdSchinThe advanced software technology department has been collecting useful C
2da2e3ebdSchinroutines in a single library called libast.  libast is used by nmake, the
3da2e3ebdSchinnmake cpp (which is mainly based on another library (libpp)), CIA
4da2e3ebdSchin(C information abstractor from Robin Chen), and a collection of other
5da2e3ebdSchin/bin and /usr/bin commands that benefit from concentrating functionality
6da2e3ebdSchinin libast.
7da2e3ebdSchin
8da2e3ebdSchinMore detail is available in the man pages.  libast contains:
9da2e3ebdSchin
10da2e3ebdSchin  (1)	routines to support a generic environment for
11da2e3ebdSchin	a variety of UNIX operating system variants
12da2e3ebdSchin
13da2e3ebdSchin  (2)	routines that update standard libc routines
14da2e3ebdSchin
15da2e3ebdSchin  (3)	routines shared between several commands
16da2e3ebdSchin
17da2e3ebdSchinIf you already have nmake 2.0 or newer installed then use
18da2e3ebdSchin`nmake install' from this directory, otherwise use
19da2e3ebdSchinship/shipin from the root of the distribution directory tree.
20da2e3ebdSchin
21da2e3ebdSchinSome of the routines not found in section 3:
22da2e3ebdSchin
23da2e3ebdSchinhash:			generic, scoped hash table support
24da2e3ebdSchin
25da2e3ebdSchin	hashalloc	create a hash table or push new scope
26da2e3ebdSchin	hashdump	debug dump of one or all hash tables
27da2e3ebdSchin	hashfree	free a hashalloc()'d table
28da2e3ebdSchin	hashlook	low level name lookup
29da2e3ebdSchin	hashscan	entry generator for scoped table scan
30da2e3ebdSchin	hashsize	explicitly change table size (usually automatic)
31da2e3ebdSchin	hashwalk	apply function to each table entry
32da2e3ebdSchin	memhash		return hash code for n-char chunk of memory
33da2e3ebdSchin	strhash		return hash code for null terminated string
34da2e3ebdSchin
35da2e3ebdSchininclude/ast:		libast support headers
36da2e3ebdSchin
37da2e3ebdSchin	align.h		compile time type alignmnent support
38da2e3ebdSchin	dirent.h	POSIX directory(3) interface definitions
39da2e3ebdSchin	error.h		error() interface definitions
40da2e3ebdSchin	ftw.h		ftwalk() interface definitions
41da2e3ebdSchin	hash.h		hash*() interface definitions
42da2e3ebdSchin	ls.h		strls() interface definitions
43da2e3ebdSchin	re.h		re*() interface definitions
44da2e3ebdSchin	tar.h		POSIX ustar format interface definitions
45da2e3ebdSchin	tm.h		tm*() interface definitions
46da2e3ebdSchin
47da2e3ebdSchinmisc:
48da2e3ebdSchin
49da2e3ebdSchin	cmdargs		apply a sequence of cmd line option parsers
50da2e3ebdSchin	cmdopen		like popen() but stdin and stdout are specified
51da2e3ebdSchin	cvtatoe		convert ASCII to EBCDIC
52da2e3ebdSchin	cvtetoa		convert EBCDIC to ASCII
53da2e3ebdSchin	error		output generic error and trace messages
54da2e3ebdSchin	ftwalk		an ftw(3) that works -- used in new tw(1)
55da2e3ebdSchin	getcwd		uses $PWD if ok, doesn't use /bin/pwd
56da2e3ebdSchin	getshell	return full path of shell for cmdopen()
57da2e3ebdSchin	ooptget		optget() for obsolete ar(1) and tar(1) options
58da2e3ebdSchin	optget		YA getopt(3) but no argc or error message output
59da2e3ebdSchin	pathaccess	find file with specific acces on list of dirs
60da2e3ebdSchin	pathcanon	canonicalize path name in place
61da2e3ebdSchin	pathcmd		return full path name of executable using $PATH
62da2e3ebdSchin	pathroot	determine `related root' directory for command
63da2e3ebdSchin	perror		uses strerror()
64da2e3ebdSchin	readargs	append each line of file to argv[0]
65da2e3ebdSchin
66da2e3ebdSchinre:			egrep(1) and ed(1) style re's from V9
67da2e3ebdSchin			(not the good awk(1) algorithm)
68da2e3ebdSchin
69da2e3ebdSchin	recomp		compile re pattern
70da2e3ebdSchin	reerror		report re*() errors
71da2e3ebdSchin	reexec		match string using compiled re
72da2e3ebdSchin	resub		ed(1) style substitute using last reexec()
73da2e3ebdSchin
74da2e3ebdSchinstring:
75da2e3ebdSchin
76da2e3ebdSchin	chresc		return next char in string converting \ sequences
77da2e3ebdSchin	ctoi		convert char constant string to int
78da2e3ebdSchin	strcopy		like strcpy(3) but returns end of destination
79da2e3ebdSchin	strdup		malloc(3) and strcpy(3) smashed together
80da2e3ebdSchin	strerror	return error message string given errno
81da2e3ebdSchin	stresc		convert \ sequences in string in place
82da2e3ebdSchin	streval		evaluate C expression in string
83da2e3ebdSchin	strls		ls -l format support
84da2e3ebdSchin	strmatch	Korn shell file pattern match
85da2e3ebdSchin	strmode		return ls -l style output given st.st_mode
86da2e3ebdSchin	strsignal	return signal id string given SIG* number
87da2e3ebdSchin	strtape		convert generic tape unit to /dev/* file
88da2e3ebdSchin	token		generate space separated tokens in string
89da2e3ebdSchin
90da2e3ebdSchintm:			time conversion support
91da2e3ebdSchin
92da2e3ebdSchin	tmdate		convert date string to time_t
93da2e3ebdSchin	tmform		format time_t to date string
94da2e3ebdSchin	tmmake		return current time_t
95da2e3ebdSchin	tmtime		convert struct tm to time_t
96