summaryrefslogtreecommitdiff
path: root/mcon/U/intsize.U
diff options
context:
space:
mode:
Diffstat (limited to 'mcon/U/intsize.U')
-rw-r--r--mcon/U/intsize.U124
1 files changed, 124 insertions, 0 deletions
diff --git a/mcon/U/intsize.U b/mcon/U/intsize.U
new file mode 100644
index 0000000..38c5414
--- /dev/null
+++ b/mcon/U/intsize.U
@@ -0,0 +1,124 @@
+?RCS: $Id$
+?RCS:
+?RCS: Copyright (c) 1991-1997, 2004-2006, Raphael Manfredi
+?RCS:
+?RCS: You may redistribute only under the terms of the Artistic Licence,
+?RCS: as specified in the README file that comes with the distribution.
+?RCS: You may reuse parts of this distribution only within the terms of
+?RCS: that same Artistic Licence; a copy of which may be found at the root
+?RCS: of the source tree for dist 4.0.
+?RCS:
+?RCS: $Log: intsize.U,v $
+?RCS: Revision 3.0.1.2 1997/02/28 15:55:26 ram
+?RCS: patch61: avoid prompting the user if the test runs ok
+?RCS: patch61: moved code from longsize.U into there
+?RCS: patch61: new tests for shortsize as well
+?RCS:
+?RCS: Revision 3.0.1.1 1994/10/29 16:21:06 ram
+?RCS: patch36: added ?F: line for metalint file checking
+?RCS:
+?RCS: Revision 3.0 1993/08/18 12:08:52 ram
+?RCS: Baseline for dist 3.0 netwide release.
+?RCS:
+?MAKE:intsize longsize shortsize: \
+ Myread cat rm +cc +optimize +ccflags +ldflags +libs
+?MAKE: -pick add $@ %<
+?S:intsize:
+?S: This variable contains the value of the INTSIZE symbol, which
+?S: indicates to the C program how many bytes there are in an int.
+?S:.
+?S:longsize:
+?S: This variable contains the value of the LONGSIZE symbol, which
+?S: indicates to the C program how many bytes there are in a long.
+?S:.
+?S:shortsize:
+?S: This variable contains the value of the SHORTSIZE symbol which
+?S: indicates to the C program how many bytes there are in a short.
+?S:.
+?C:INTSIZE:
+?C: This symbol contains the value of sizeof(int) so that the C
+?C: preprocessor can make decisions based on it.
+?C:.
+?C:LONGSIZE:
+?C: This symbol contains the value of sizeof(long) so that the C
+?C: preprocessor can make decisions based on it.
+?C:.
+?C:SHORTSIZE:
+?C: This symbol contains the value of sizeof(short) so that the C
+?C: preprocessor can make decisions based on it.
+?C:.
+?H:#define INTSIZE $intsize /**/
+?H:#define LONGSIZE $longsize /**/
+?H:#define SHORTSIZE $shortsize /**/
+?H:.
+?F:!intsize.out !intsize
+: check for lengths of integral types
+echo " "
+case "$intsize" in
+'')
+ echo "Checking to see how big your integers are..." >&4
+ $cat >intsize.c <<'EOCP'
+#include <stdio.h>
+int main()
+{
+@if INTSIZE || intsize
+ printf("intsize=%d;\n", sizeof(int));
+@end
+@if LONGSIZE || longsize
+ printf("longsize=%d;\n", sizeof(long));
+@end
+@if SHORTSIZE || shortsize
+ printf("shortsize=%d;\n", sizeof(short));
+@end
+ fflush(stdout);
+ exit(0);
+}
+EOCP
+# If $libs contains -lsfio, and sfio is mis-configured, then it
+# sometimes (apparently) runs and exits with a 0 status, but with no
+# output!. Thus we check with test -s whether we actually got any
+# output. I think it has to do with sfio's use of _exit vs. exit,
+# but I don't know for sure. --Andy Dougherty 1/27/97.
+ if $cc $optimize $ccflags $ldflags -o intsize intsize.c $libs >/dev/null 2>&1 &&
+ ./intsize > intsize.out 2>/dev/null && test -s intsize.out ; then
+ eval `$cat intsize.out`
+@if INTSIZE || intsize
+ echo "Your integers are $intsize bytes long."
+@end
+@if LONGSIZE || longsize
+ echo "Your long integers are $longsize bytes long."
+@end
+@if SHORTSIZE || shortsize
+ echo "Your short integers are $shortsize bytes long."
+@end
+ else
+ $cat >&4 <<EOM
+!
+Help! I can't compile and run the intsize test program: please enlighten me!
+(This is probably a misconfiguration in your system or libraries, and
+you really ought to fix it. Still, I'll try anyway.)
+!
+EOM
+@if INTSIZE || intsize
+ dflt=4
+ rp="What is the size of an integer (in bytes)?"
+ . ./myread
+ intsize="$ans"
+@end
+@if LONGSIZE || longsize
+ dflt=$intsize
+ rp="What is the size of a long integer (in bytes)?"
+ . ./myread
+ longsize="$ans"
+@end
+@if SHORTSIZE || shortsize
+ dflt=2
+ rp="What is the size of a short integer (in bytes)?"
+ . ./myread
+ shortsize="$ans"
+@end
+ fi
+ ;;
+esac
+$rm -f intsize intsize.[co] intsize.out
+