File: mxref.SH

package info (click to toggle)
dist 1%3A3.5-30-3.2
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 3,720 kB
  • sloc: sh: 5,233; perl: 4,429; cpp: 208; makefile: 12; ansic: 4
file content (147 lines) | stat: -rwxr-xr-x 4,150 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
case $CONFIG in
'')
	if test -f config.sh; then TOP=.;
	elif test -f ../config.sh; then TOP=..;
	elif test -f ../../config.sh; then TOP=../..;
	elif test -f ../../../config.sh; then TOP=../../..;
	elif test -f ../../../../config.sh; then TOP=../../../..;
	else
		echo "Can't find config.sh."; exit 1
	fi
	. $TOP/config.sh
	;;
esac
case "$0" in
*/*) cd `expr X$0 : 'X\(.*\)/'` ;;
esac
echo "Extracting mcon/mxref (with variable substitutions)"
cat >mxref <<!GROK!THIS!
$startperl
	eval 'exec perl -S \$0 \${1+"\$@"}'
		if \$running_under_some_shell;

# $Id: mxref.SH 25 2008-05-28 11:19:25Z rmanfredi $
#
#  Copyright (c) 1991-1997, 2004-2006, Raphael Manfredi
#  
#  You may redistribute only under the terms of the Artistic Licence,
#  as specified in the README file that comes with the distribution.
#  You may reuse parts of this distribution only within the terms of
#  that same Artistic Licence; a copy of which may be found at the root
#  of the source tree for dist 4.0.
#
# Original Author: Harlan Stenn <harlan@mumps.pfcs.com>
#
# $Log: mxref.SH,v $
# Revision 3.0.1.3  1997/02/28  16:30:49  ram
# patch61: new -L option to match metaconfig and metalint
#
# Revision 3.0.1.2  1994/01/24  14:21:04  ram
# patch16: added ~/.dist_profile awareness
#
# Revision 3.0.1.1  1993/08/19  06:42:27  ram
# patch1: leading config.sh searching was not aborting properly
#
# Revision 3.0  1993/08/18  12:10:18  ram
# Baseline for dist 3.0 netwide release.
#

# Perload ON

\$MC = '$privlib';
\$version = '$VERSION';
\$patchlevel = '$PATCHLEVEL';
\$revision = '$REVISION';
\$grep = '$grep';
!GROK!THIS!

$spitshell >>mxref <<'!NO!SUBS!'
&profile;						# Read ~/.dist_profile
require 'getopts.pl';
&usage unless &Getopts("df:hkmsVL:");

chop($date = `date`);
chop($WD = `pwd`);				# Working directory
$MC = $opt_L if $opt_L;			# May override  library path
$MC = &tilda_expand($MC);		# ~name expansion
chdir $MC || die "Can't chdir to $MC: $!\n";
chop($MC = `pwd`);				# Real metaxref lib path (no symbolic links)
chdir $WD || die "Can't chdir back to $WD: $!\n";

if ($opt_V) {
	print STDERR "metaxref $version-$revision\n";
	exit 0;
} elsif ($opt_h) {
	&usage;
}

$NEWMANI = $opt_f || (-f 'MANIFEST.new' ? 'MANIFEST.new' : 'MANIFEST');

&init;									# Various initializations
`mkdir .MT 2>&1` unless -d '.MT';		# For private temporary files
unlink 'Obsolete';						# Obsolete file rebuilt

&locate_units;				# Fill in @ARGV with a unit list
&extract_dependencies;		# Extract dependencies from units
&extract_filenames;			# Get source files from MANIFEST.new
&build_xref;				# Parse files, build I.* output

if ($opt_k) {
	print "Leaving subdirectory .MT unremoved so you can peruse it.\n"
		unless $opt_s;
} else {
	`rm -rf .MT 2>&1`;
}
print "Done.\n" unless $opt_s;

# General initializations
sub init {
	&init_except;			# Token which have upper-cased letters
	&init_depend;			# The %Depend array records control line handling
}

# Record the exceptions -- all symbols but these are lower case
sub init_except {
	$Except{'Author'}++;
	$Except{'Date'}++;
	$Except{'Header'}++;
	$Except{'Id'}++;
	$Except{'Locker'}++;
	$Except{'Log'}++;
	$Except{'RCSfile'}++;
	$Except{'Revision'}++;
	$Except{'Source'}++;
	$Except{'State'}++;
}

# Print out metaxref's usage and exits
sub usage {
	print STDERR <<EOM;
Usage: metaxref [-dhkmsV] [-f manifest] [-L dir]
  -d : debug mode.
  -f : use that file as manifest instead of MANIFEST.new.
  -h : print this help message and exits.
  -k : keep temporary directory.
  -m : assume lots of memory and swap space.
  -s : silent mode.
  -L : specify main units repository.
  -V : print version number and exits.
EOM
	exit 1;
}

!NO!SUBS!
$grep -v '^;#' pl/locate.pl >>mxref 
$grep -v '^;#' pl/common.pl >>mxref 
$grep -v '^;#' pl/xref.pl >>mxref 
$grep -v '^;#' pl/files.pl >>mxref 
$grep -v '^;#' pl/init.pl >>mxref 
$grep -v '^;#' pl/extract.pl >>mxref 
$grep -v '^;#' pl/obsolete.pl >>mxref 
$grep -v '^;#' pl/xwant.pl >>mxref 
$grep -v '^;#' pl/gensym.pl >>mxref 
$grep -v '^;#' ../pl/manifake.pl >>mxref
$grep -v '^;#' ../pl/tilde.pl >>mxref
$grep -v '^;#' ../pl/profile.pl >>mxref
chmod +x mxref
$eunicefix mxref