aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcvs2svn <cvs2svn@FreeBSD.org>1996-01-01 11:01:15 +0000
committercvs2svn <cvs2svn@FreeBSD.org>1996-01-01 11:01:15 +0000
commit26ce5ad3876f0ea63ab67a8bdb2ed1a5a1591a3e (patch)
tree69e72e626f1337094ba2f18cd7fded3ecaa930bf
parenta3ab491d642b34f2d3efbc0562abc8e79b38ce09 (diff)
downloadsrc-e841b8130f0baf69a1599e0ac35a6281c4e3202b.tar.gz
src-e841b8130f0baf69a1599e0ac35a6281c4e3202b.zip
-rw-r--r--Makefile2
-rw-r--r--TODO2
-rw-r--r--TODO-2.1/README16
-rw-r--r--TODO-2.1/asami61
-rw-r--r--TODO-2.1/core-team93
-rw-r--r--TODO-2.1/dyson58
-rw-r--r--TODO-2.1/gibbs65
-rw-r--r--TODO-2.1/gpalmer66
-rw-r--r--TODO-2.1/jkh78
-rw-r--r--TODO-2.1/joerg56
-rw-r--r--TODO-2.1/nate37
-rw-r--r--TODO-2.1/phk106
-rw-r--r--TODO-2.1/sos46
-rw-r--r--TODO-2.1/wollman37
-rw-r--r--bin/Makefile2
-rw-r--r--bin/cat/Makefile2
-rw-r--r--bin/cat/cat.12
-rw-r--r--bin/cat/cat.c2
-rw-r--r--bin/chmod/Makefile2
-rw-r--r--bin/chmod/chmod.12
-rw-r--r--bin/chmod/chmod.c2
-rw-r--r--bin/cp/Makefile2
-rw-r--r--bin/cp/cp.12
-rw-r--r--bin/cp/cp.c2
-rw-r--r--bin/cp/extern.h2
-rw-r--r--bin/cp/utils.c2
-rw-r--r--bin/csh/Makefile2
-rw-r--r--bin/csh/USD.doc/Makefile2
-rw-r--r--bin/csh/USD.doc/csh.12
-rw-r--r--bin/csh/USD.doc/csh.22
-rw-r--r--bin/csh/USD.doc/csh.32
-rw-r--r--bin/csh/USD.doc/csh.42
-rw-r--r--bin/csh/USD.doc/csh.a2
-rw-r--r--bin/csh/USD.doc/csh.g2
-rw-r--r--bin/csh/USD.doc/tabs2
-rw-r--r--bin/csh/alloc.c2
-rw-r--r--bin/csh/char.c2
-rw-r--r--bin/csh/char.h2
-rw-r--r--bin/csh/const.c2
-rw-r--r--bin/csh/csh.12
-rw-r--r--bin/csh/csh.c2
-rw-r--r--bin/csh/csh.h2
-rw-r--r--bin/csh/dir.c2
-rw-r--r--bin/csh/dir.h2
-rw-r--r--bin/csh/dol.c2
-rw-r--r--bin/csh/err.c2
-rw-r--r--bin/csh/exec.c2
-rw-r--r--bin/csh/exp.c2
-rw-r--r--bin/csh/extern.h2
-rw-r--r--bin/csh/file.c2
-rw-r--r--bin/csh/func.c2
-rw-r--r--bin/csh/glob.c2
-rw-r--r--bin/csh/hist.c2
-rw-r--r--bin/csh/init.c2
-rw-r--r--bin/csh/lex.c2
-rw-r--r--bin/csh/misc.c2
-rw-r--r--bin/csh/parse.c2
-rw-r--r--bin/csh/pathnames.h2
-rw-r--r--bin/csh/proc.c2
-rw-r--r--bin/csh/proc.h2
-rw-r--r--bin/csh/sem.c2
-rw-r--r--bin/csh/set.c2
-rw-r--r--bin/csh/str.c2
-rw-r--r--bin/csh/time.c2
-rw-r--r--bin/date/Makefile2
-rw-r--r--bin/date/date.12
-rw-r--r--bin/date/date.c2
-rw-r--r--bin/date/extern.h2
-rw-r--r--bin/date/netdate.c2
-rw-r--r--bin/dd/Makefile2
-rw-r--r--bin/dd/args.c2
-rw-r--r--bin/dd/conv.c2
-rw-r--r--bin/dd/conv_tab.c2
-rw-r--r--bin/dd/dd.12
-rw-r--r--bin/dd/dd.c2
-rw-r--r--bin/dd/dd.h2
-rw-r--r--bin/dd/extern.h2
-rw-r--r--bin/dd/misc.c2
-rw-r--r--bin/dd/position.c2
-rw-r--r--bin/df/Makefile2
-rw-r--r--bin/df/df.12
-rw-r--r--bin/df/df.c2
-rw-r--r--bin/domainname/Makefile2
-rw-r--r--bin/domainname/domainname.12
-rw-r--r--bin/domainname/domainname.c2
-rw-r--r--bin/echo/Makefile2
-rw-r--r--bin/echo/echo.12
-rw-r--r--bin/echo/echo.c2
-rw-r--r--bin/ed/Makefile2
-rw-r--r--bin/ed/POSIX2
-rw-r--r--bin/ed/README2
-rw-r--r--bin/ed/buf.c2
-rw-r--r--bin/ed/cbc.c2
-rw-r--r--bin/ed/ed.12
-rw-r--r--bin/ed/ed.h2
-rw-r--r--bin/ed/glbl.c2
-rw-r--r--bin/ed/io.c2
-rw-r--r--bin/ed/main.c2
-rw-r--r--bin/ed/re.c2
-rw-r--r--bin/ed/sub.c2
-rw-r--r--bin/ed/test/Makefile2
-rw-r--r--bin/ed/undo.c2
-rw-r--r--bin/expr/Makefile2
-rw-r--r--bin/expr/expr.12
-rw-r--r--bin/expr/expr.y2
-rw-r--r--bin/hostname/Makefile2
-rw-r--r--bin/hostname/hostname.12
-rw-r--r--bin/hostname/hostname.c2
-rw-r--r--bin/kill/Makefile2
-rw-r--r--bin/kill/kill.12
-rw-r--r--bin/kill/kill.c2
-rw-r--r--bin/ln/Makefile2
-rw-r--r--bin/ln/ln.12
-rw-r--r--bin/ln/ln.c2
-rw-r--r--bin/ln/symlink.72
-rw-r--r--bin/ls/Makefile2
-rw-r--r--bin/ls/cmp.c2
-rw-r--r--bin/ls/extern.h2
-rw-r--r--bin/ls/ls.12
-rw-r--r--bin/ls/ls.c2
-rw-r--r--bin/ls/ls.h2
-rw-r--r--bin/ls/print.c2
-rw-r--r--bin/ls/stat_flags.c2
-rw-r--r--bin/ls/util.c2
-rw-r--r--bin/mkdir/Makefile2
-rw-r--r--bin/mkdir/mkdir.12
-rw-r--r--bin/mkdir/mkdir.c2
-rw-r--r--bin/mv/Makefile2
-rw-r--r--bin/mv/mv.12
-rw-r--r--bin/mv/mv.c2
-rw-r--r--bin/mv/pathnames.h2
-rw-r--r--bin/pax/Makefile2
-rw-r--r--bin/pax/ar_io.c2
-rw-r--r--bin/pax/ar_subs.c2
-rw-r--r--bin/pax/buf_subs.c2
-rw-r--r--bin/pax/cache.c2
-rw-r--r--bin/pax/cache.h2
-rw-r--r--bin/pax/cpio.c2
-rw-r--r--bin/pax/cpio.h2
-rw-r--r--bin/pax/extern.h2
-rw-r--r--bin/pax/file_subs.c2
-rw-r--r--bin/pax/ftree.c2
-rw-r--r--bin/pax/ftree.h2
-rw-r--r--bin/pax/gen_subs.c2
-rw-r--r--bin/pax/options.c2
-rw-r--r--bin/pax/options.h2
-rw-r--r--bin/pax/pat_rep.c2
-rw-r--r--bin/pax/pat_rep.h2
-rw-r--r--bin/pax/pax.12
-rw-r--r--bin/pax/pax.c2
-rw-r--r--bin/pax/pax.h2
-rw-r--r--bin/pax/sel_subs.c2
-rw-r--r--bin/pax/sel_subs.h2
-rw-r--r--bin/pax/tables.c2
-rw-r--r--bin/pax/tables.h2
-rw-r--r--bin/pax/tar.c2
-rw-r--r--bin/pax/tar.h2
-rw-r--r--bin/pax/tty_subs.c2
-rw-r--r--bin/ps/Makefile2
-rw-r--r--bin/ps/devname.c2
-rw-r--r--bin/ps/extern.h2
-rw-r--r--bin/ps/fmt.c2
-rw-r--r--bin/ps/keyword.c2
-rw-r--r--bin/ps/nlist.c2
-rw-r--r--bin/ps/print.c2
-rw-r--r--bin/ps/ps.12
-rw-r--r--bin/ps/ps.c2
-rw-r--r--bin/ps/ps.h2
-rw-r--r--bin/pwd/Makefile2
-rw-r--r--bin/pwd/pwd.12
-rw-r--r--bin/pwd/pwd.c2
-rw-r--r--bin/rcp/Makefile2
-rw-r--r--bin/rcp/extern.h2
-rw-r--r--bin/rcp/pathnames.h2
-rw-r--r--bin/rcp/rcp.12
-rw-r--r--bin/rcp/rcp.c2
-rw-r--r--bin/rcp/util.c2
-rw-r--r--bin/rm/Makefile2
-rw-r--r--bin/rm/rm.12
-rw-r--r--bin/rm/rm.c2
-rw-r--r--bin/rmail/Makefile2
-rw-r--r--bin/rmail/rmail.82
-rw-r--r--bin/rmail/rmail.c2
-rw-r--r--bin/rmdir/Makefile2
-rw-r--r--bin/rmdir/rmdir.12
-rw-r--r--bin/rmdir/rmdir.c2
-rw-r--r--bin/sh/Makefile2
-rw-r--r--bin/sh/TOUR2
-rw-r--r--bin/sh/alias.c2
-rw-r--r--bin/sh/alias.h2
-rw-r--r--bin/sh/arith.y2
-rw-r--r--bin/sh/arith_lex.l2
-rw-r--r--bin/sh/bltin/bltin.h2
-rw-r--r--bin/sh/bltin/echo.12
-rw-r--r--bin/sh/bltin/echo.c2
-rwxr-xr-xbin/sh/builtins2
-rw-r--r--bin/sh/cd.c2
-rw-r--r--bin/sh/errmsg.c2
-rw-r--r--bin/sh/errmsg.h2
-rw-r--r--bin/sh/error.c2
-rw-r--r--bin/sh/error.h2
-rw-r--r--bin/sh/eval.c2
-rw-r--r--bin/sh/eval.h2
-rw-r--r--bin/sh/exec.c2
-rw-r--r--bin/sh/exec.h2
-rw-r--r--bin/sh/expand.c2
-rw-r--r--bin/sh/expand.h2
-rw-r--r--bin/sh/funcs/cmv2
-rw-r--r--bin/sh/funcs/dirs2
-rw-r--r--bin/sh/funcs/kill2
-rw-r--r--bin/sh/funcs/login2
-rw-r--r--bin/sh/funcs/newgrp2
-rw-r--r--bin/sh/funcs/popd2
-rw-r--r--bin/sh/funcs/pushd2
-rw-r--r--bin/sh/funcs/suspend2
-rw-r--r--bin/sh/histedit.c2
-rw-r--r--bin/sh/init.h2
-rw-r--r--bin/sh/input.c2
-rw-r--r--bin/sh/input.h2
-rw-r--r--bin/sh/jobs.c2
-rw-r--r--bin/sh/jobs.h2
-rw-r--r--bin/sh/machdep.h2
-rw-r--r--bin/sh/mail.c2
-rw-r--r--bin/sh/mail.h2
-rw-r--r--bin/sh/main.c2
-rw-r--r--bin/sh/main.h2
-rw-r--r--bin/sh/memalloc.c2
-rw-r--r--bin/sh/memalloc.h2
-rw-r--r--bin/sh/miscbltin.c2
-rwxr-xr-xbin/sh/mkbuiltins2
-rw-r--r--bin/sh/mkinit.c2
-rw-r--r--bin/sh/mknodes.c2
-rw-r--r--bin/sh/mksignames.c2
-rw-r--r--bin/sh/mksyntax.c2
-rw-r--r--bin/sh/mktokens2
-rw-r--r--bin/sh/myhistedit.h2
-rw-r--r--bin/sh/mystring.c2
-rw-r--r--bin/sh/mystring.h2
-rw-r--r--bin/sh/nodes.c.pat2
-rw-r--r--bin/sh/nodetypes2
-rw-r--r--bin/sh/options.c2
-rw-r--r--bin/sh/options.h2
-rw-r--r--bin/sh/output.c2
-rw-r--r--bin/sh/output.h2
-rw-r--r--bin/sh/parser.c2
-rw-r--r--bin/sh/parser.h2
-rw-r--r--bin/sh/redir.c2
-rw-r--r--bin/sh/redir.h2
-rw-r--r--bin/sh/sh.12
-rw-r--r--bin/sh/shell.h2
-rw-r--r--bin/sh/show.c2
-rw-r--r--bin/sh/trap.c2
-rw-r--r--bin/sh/trap.h2
-rw-r--r--bin/sh/var.c2
-rw-r--r--bin/sh/var.h2
-rw-r--r--bin/sleep/Makefile2
-rw-r--r--bin/sleep/sleep.12
-rw-r--r--bin/sleep/sleep.c2
-rw-r--r--bin/stty/Makefile2
-rw-r--r--bin/stty/cchar.c2
-rw-r--r--bin/stty/extern.h2
-rw-r--r--bin/stty/gfmt.c2
-rw-r--r--bin/stty/key.c2
-rw-r--r--bin/stty/modes.c2
-rw-r--r--bin/stty/print.c2
-rw-r--r--bin/stty/stty.12
-rw-r--r--bin/stty/stty.c2
-rw-r--r--bin/stty/stty.h2
-rw-r--r--bin/stty/util.c2
-rw-r--r--bin/sync/Makefile2
-rw-r--r--bin/sync/sync.82
-rw-r--r--bin/sync/sync.c2
-rw-r--r--bin/test/Makefile2
-rw-r--r--bin/test/TEST.csh2
-rw-r--r--bin/test/operators.c2
-rw-r--r--bin/test/operators.h2
-rw-r--r--bin/test/test.12
-rw-r--r--bin/test/test.c2
-rw-r--r--eBones/ARTISTIC.libdes105
-rw-r--r--eBones/Copyright.MIT24
-rw-r--r--eBones/Copyright.SIPB23
-rw-r--r--eBones/Makefile48
-rw-r--r--eBones/Makefile.inc65
-rw-r--r--eBones/README.libdes56
-rw-r--r--eBones/des/3cbc_enc.c60
-rw-r--r--eBones/des/3ecb_enc.c35
-rw-r--r--eBones/des/Makefile27
-rw-r--r--eBones/des/cbc_cksm.c55
-rw-r--r--eBones/des/cbc_enc.c83
-rw-r--r--eBones/des/cfb_enc.c110
-rw-r--r--eBones/des/des.3503
-rw-r--r--eBones/des/docs.original/ARTISTIC105
-rw-r--r--eBones/des/docs.original/CHANGES16
-rw-r--r--eBones/des/docs.original/COPYING489
-rw-r--r--eBones/des/docs.original/FILES60
-rw-r--r--eBones/des/docs.original/INSTALL53
-rw-r--r--eBones/des/docs.original/KERBEROS38
-rw-r--r--eBones/des/docs.original/MODES.DES84
-rw-r--r--eBones/des/docs.original/README56
-rw-r--r--eBones/des/docs.original/VERSION185
-rw-r--r--eBones/des/ecb_enc.c123
-rw-r--r--eBones/des/enc_read.c150
-rw-r--r--eBones/des/enc_writ.c99
-rw-r--r--eBones/des/fcrypt.c581
-rw-r--r--eBones/des/include/des_locl.h186
-rw-r--r--eBones/des/include/podd.h24
-rw-r--r--eBones/des/include/sk.h145
-rw-r--r--eBones/des/include/spr.h151
-rw-r--r--eBones/des/new_rnd_key.c154
-rw-r--r--eBones/des/ofb_enc.c72
-rw-r--r--eBones/des/pcbc_enc.c78
-rw-r--r--eBones/des/qud_cksm.c93
-rw-r--r--eBones/des/rand_key.c49
-rw-r--r--eBones/des/read_pwd.c333
-rw-r--r--eBones/des/set_key.c190
-rw-r--r--eBones/des/str2key.c121
-rw-r--r--eBones/des/test/Makefile9
-rw-r--r--eBones/des/test/destest.c365
-rw-r--r--eBones/include/ChangeLog25
-rw-r--r--eBones/include/Makefile19
-rw-r--r--eBones/include/addr_comp.h35
-rw-r--r--eBones/include/admin_server.h42
-rw-r--r--eBones/include/conf-bsd386i.h16
-rw-r--r--eBones/include/conf-bsdapollo.h21
-rw-r--r--eBones/include/conf-bsdibm032.h18
-rw-r--r--eBones/include/conf-bsdm68k.h16
-rw-r--r--eBones/include/conf-bsdsparc.h17
-rw-r--r--eBones/include/conf-bsdtahoe.h16
-rw-r--r--eBones/include/conf-bsdvax.h22
-rw-r--r--eBones/include/conf-ibm370.h15
-rw-r--r--eBones/include/conf-pc.h16
-rw-r--r--eBones/include/conf-pyr.h15
-rw-r--r--eBones/include/conf-ultmips2.h17
-rw-r--r--eBones/include/conf.h73
-rw-r--r--eBones/include/des.h181
-rw-r--r--eBones/include/highc.h32
-rw-r--r--eBones/include/kdc.h36
-rw-r--r--eBones/include/klog.h39
-rw-r--r--eBones/include/kparse.h91
-rw-r--r--eBones/include/krb.h504
-rw-r--r--eBones/include/krb_conf.h29
-rw-r--r--eBones/include/krb_db.h110
-rw-r--r--eBones/include/lsb_addr_comp.h40
-rw-r--r--eBones/include/osconf.h51
-rw-r--r--eBones/include/passwd_server.h28
-rw-r--r--eBones/include/principal.h18
-rw-r--r--eBones/include/prot.h92
-rw-r--r--eBones/include/rkinit.h42
-rw-r--r--eBones/include/rkinit_private.h106
-rw-r--r--eBones/lib/Makefile6
-rw-r--r--eBones/lib/Makefile.inc4
-rw-r--r--eBones/lib/libacl/Makefile12
-rw-r--r--eBones/lib/libacl/acl_check.3183
-rw-r--r--eBones/lib/libacl/acl_files.c555
-rw-r--r--eBones/lib/libacl/acl_files.doc107
-rw-r--r--eBones/lib/libkadm/EXPORTABLE4
-rw-r--r--eBones/lib/libkadm/Makefile23
-rw-r--r--eBones/lib/libkadm/kadm.h164
-rw-r--r--eBones/lib/libkadm/kadm_cli_wrap.c509
-rw-r--r--eBones/lib/libkadm/kadm_err.et53
-rw-r--r--eBones/lib/libkadm/kadm_stream.c286
-rw-r--r--eBones/lib/libkadm/kadm_supp.c118
-rw-r--r--eBones/lib/libkdb/Makefile8
-rw-r--r--eBones/lib/libkdb/krb_cache.c181
-rw-r--r--eBones/lib/libkdb/krb_dbl.c1
-rw-r--r--eBones/lib/libkdb/krb_dbm.c789
-rw-r--r--eBones/lib/libkdb/krb_kdb_utils.c148
-rw-r--r--eBones/lib/libkdb/krb_lib.c242
-rw-r--r--eBones/lib/libkdb/print_princ.c51
-rw-r--r--eBones/lib/libkrb/Makefile53
-rw-r--r--eBones/lib/libkrb/add_ticket.c91
-rw-r--r--eBones/lib/libkrb/create_auth_reply.c118
-rw-r--r--eBones/lib/libkrb/create_ciph.c112
-rw-r--r--eBones/lib/libkrb/create_death_packet.c65
-rw-r--r--eBones/lib/libkrb/create_ticket.c132
-rw-r--r--eBones/lib/libkrb/debug_decl.c20
-rw-r--r--eBones/lib/libkrb/decomp_ticket.c126
-rw-r--r--eBones/lib/libkrb/des_rw.c262
-rw-r--r--eBones/lib/libkrb/dest_tkt.c92
-rw-r--r--eBones/lib/libkrb/extract_ticket.c61
-rw-r--r--eBones/lib/libkrb/fgetst.c42
-rw-r--r--eBones/lib/libkrb/get_ad_tkt.c237
-rw-r--r--eBones/lib/libkrb/get_admhst.c82
-rw-r--r--eBones/lib/libkrb/get_cred.c63
-rw-r--r--eBones/lib/libkrb/get_in_tkt.c286
-rw-r--r--eBones/lib/libkrb/get_krbhst.c87
-rw-r--r--eBones/lib/libkrb/get_krbrlm.c62
-rw-r--r--eBones/lib/libkrb/get_phost.c55
-rw-r--r--eBones/lib/libkrb/get_pw_tkt.c75
-rw-r--r--eBones/lib/libkrb/get_request.c55
-rw-r--r--eBones/lib/libkrb/get_svc_in_tkt.c77
-rw-r--r--eBones/lib/libkrb/get_tf_fullname.c69
-rw-r--r--eBones/lib/libkrb/get_tf_realm.c37
-rw-r--r--eBones/lib/libkrb/getrealm.c106
-rw-r--r--eBones/lib/libkrb/getst.c41
-rw-r--r--eBones/lib/libkrb/in_tkt.c146
-rw-r--r--eBones/lib/libkrb/k_gethostname.c71
-rw-r--r--eBones/lib/libkrb/klog.c110
-rw-r--r--eBones/lib/libkrb/kname_parse.c239
-rw-r--r--eBones/lib/libkrb/kntoln.c63
-rw-r--r--eBones/lib/libkrb/kparse.c776
-rw-r--r--eBones/lib/libkrb/krb.3462
-rw-r--r--eBones/lib/libkrb/krb_err.et257
-rw-r--r--eBones/lib/libkrb/krb_err_txt.c280
-rw-r--r--eBones/lib/libkrb/krb_get_in_tkt.c301
-rw-r--r--eBones/lib/libkrb/krb_realmofhost.3161
-rw-r--r--eBones/lib/libkrb/krb_sendauth.3348
-rw-r--r--eBones/lib/libkrb/krb_set_tkt_string.343
-rw-r--r--eBones/lib/libkrb/krbglue.c258
-rw-r--r--eBones/lib/libkrb/kuserok.363
-rw-r--r--eBones/lib/libkrb/kuserok.c199
-rw-r--r--eBones/lib/libkrb/log.c125
-rw-r--r--eBones/lib/libkrb/mk_err.c65
-rw-r--r--eBones/lib/libkrb/mk_priv.c207
-rw-r--r--eBones/lib/libkrb/mk_req.c198
-rw-r--r--eBones/lib/libkrb/mk_safe.c171
-rw-r--r--eBones/lib/libkrb/month_sname.c33
-rw-r--r--eBones/lib/libkrb/netread.c50
-rw-r--r--eBones/lib/libkrb/netwrite.c46
-rw-r--r--eBones/lib/libkrb/one.c22
-rw-r--r--eBones/lib/libkrb/pkt_cipher.c40
-rw-r--r--eBones/lib/libkrb/pkt_clen.c58
-rw-r--r--eBones/lib/libkrb/rd_err.c82
-rw-r--r--eBones/lib/libkrb/rd_priv.c207
-rw-r--r--eBones/lib/libkrb/rd_req.c331
-rw-r--r--eBones/lib/libkrb/rd_safe.c183
-rw-r--r--eBones/lib/libkrb/read_service_key.c124
-rw-r--r--eBones/lib/libkrb/recvauth.c290
-rw-r--r--eBones/lib/libkrb/save_credentials.c56
-rw-r--r--eBones/lib/libkrb/send_to_kdc.c391
-rw-r--r--eBones/lib/libkrb/sendauth.c259
-rw-r--r--eBones/lib/libkrb/stime.c43
-rw-r--r--eBones/lib/libkrb/tf_shm.c176
-rw-r--r--eBones/lib/libkrb/tf_util.3151
-rw-r--r--eBones/lib/libkrb/tf_util.c581
-rw-r--r--eBones/lib/libkrb/tkt_string.c80
-rw-r--r--eBones/lib/libkrb/util.c75
-rw-r--r--eBones/lib/librkinit/Makefile19
-rw-r--r--eBones/lib/librkinit/rk_krb.c316
-rw-r--r--eBones/lib/librkinit/rk_lib.c100
-rw-r--r--eBones/lib/librkinit/rk_rpc.c387
-rw-r--r--eBones/lib/librkinit/rk_util.c214
-rw-r--r--eBones/lib/librkinit/rkinit.3167
-rw-r--r--eBones/lib/librkinit/rkinit_err.et32
-rw-r--r--eBones/libexec/Makefile6
-rw-r--r--eBones/libexec/Makefile.inc5
-rw-r--r--eBones/libexec/kpropd/Makefile10
-rw-r--r--eBones/libexec/kpropd/kpropd.c453
-rw-r--r--eBones/libexec/registerd/Makefile18
-rw-r--r--eBones/libexec/registerd/registerd.869
-rw-r--r--eBones/libexec/registerd/registerd.c355
-rw-r--r--eBones/libexec/rkinitd/Makefile12
-rw-r--r--eBones/libexec/rkinitd/krb.c388
-rw-r--r--eBones/libexec/rkinitd/rkinitd.842
-rw-r--r--eBones/libexec/rkinitd/rkinitd.c137
-rw-r--r--eBones/libexec/rkinitd/rkinitd.h34
-rw-r--r--eBones/libexec/rkinitd/rpc.c222
-rw-r--r--eBones/libexec/rkinitd/util.c49
-rw-r--r--eBones/man/Makefile10
-rw-r--r--eBones/man/des_crypt.3380
-rw-r--r--eBones/man/kerberos.1259
-rw-r--r--eBones/man/krb.conf.532
-rw-r--r--eBones/man/krb.realms.539
-rw-r--r--eBones/patchlevel.h6
-rw-r--r--eBones/usr.bin/Makefile6
-rw-r--r--eBones/usr.bin/Makefile.inc5
-rw-r--r--eBones/usr.bin/kadmin/Makefile16
-rw-r--r--eBones/usr.bin/kadmin/kadmin.8158
-rw-r--r--eBones/usr.bin/kadmin/kadmin.c636
-rw-r--r--eBones/usr.bin/kadmin/kadmin_cmds.ct41
-rw-r--r--eBones/usr.bin/kdestroy/Makefile10
-rw-r--r--eBones/usr.bin/kdestroy/kdestroy.181
-rw-r--r--eBones/usr.bin/kdestroy/kdestroy.c83
-rw-r--r--eBones/usr.bin/kinit/Makefile10
-rw-r--r--eBones/usr.bin/kinit/kinit.1133
-rw-r--r--eBones/usr.bin/kinit/kinit.c224
-rw-r--r--eBones/usr.bin/klist/Makefile10
-rw-r--r--eBones/usr.bin/klist/klist.184
-rw-r--r--eBones/usr.bin/klist/klist.c288
-rw-r--r--eBones/usr.bin/ksrvtgt/Makefile10
-rw-r--r--eBones/usr.bin/ksrvtgt/ksrvtgt.151
-rw-r--r--eBones/usr.bin/ksrvtgt/ksrvtgt.c62
-rw-r--r--eBones/usr.bin/passwd/kpasswd.c223
-rw-r--r--eBones/usr.bin/register/Makefile11
-rw-r--r--eBones/usr.bin/register/register.163
-rw-r--r--eBones/usr.bin/register/register.c316
-rw-r--r--eBones/usr.bin/rkinit/Makefile11
-rw-r--r--eBones/usr.bin/rkinit/rkinit.1206
-rw-r--r--eBones/usr.bin/rkinit/rkinit.c216
-rw-r--r--eBones/usr.sbin/Makefile7
-rw-r--r--eBones/usr.sbin/Makefile.inc5
-rw-r--r--eBones/usr.sbin/ext_srvtab/Makefile10
-rw-r--r--eBones/usr.sbin/ext_srvtab/ext_srvtab.862
-rw-r--r--eBones/usr.sbin/ext_srvtab/ext_srvtab.c176
-rw-r--r--eBones/usr.sbin/kadmind/Makefile11
-rw-r--r--eBones/usr.sbin/kadmind/admin_server.c474
-rw-r--r--eBones/usr.sbin/kadmind/kadm_funcs.c381
-rw-r--r--eBones/usr.sbin/kadmind/kadm_ser_wrap.c213
-rw-r--r--eBones/usr.sbin/kadmind/kadm_server.c167
-rw-r--r--eBones/usr.sbin/kadmind/kadm_server.h70
-rw-r--r--eBones/usr.sbin/kadmind/kadmind.8117
-rw-r--r--eBones/usr.sbin/kdb_destroy/Makefile8
-rw-r--r--eBones/usr.sbin/kdb_destroy/kdb_destroy.836
-rw-r--r--eBones/usr.sbin/kdb_destroy/kdb_destroy.c66
-rw-r--r--eBones/usr.sbin/kdb_edit/Makefile11
-rw-r--r--eBones/usr.sbin/kdb_edit/kdb_edit.858
-rw-r--r--eBones/usr.sbin/kdb_edit/kdb_edit.c477
-rw-r--r--eBones/usr.sbin/kdb_edit/maketime.c85
-rw-r--r--eBones/usr.sbin/kdb_edit/time.h45
-rw-r--r--eBones/usr.sbin/kdb_init/Makefile10
-rw-r--r--eBones/usr.sbin/kdb_init/kdb_init.845
-rw-r--r--eBones/usr.sbin/kdb_init/kdb_init.c180
-rw-r--r--eBones/usr.sbin/kdb_util/Makefile12
-rw-r--r--eBones/usr.sbin/kdb_util/kdb_util.864
-rw-r--r--eBones/usr.sbin/kdb_util/kdb_util.c523
-rw-r--r--eBones/usr.sbin/kerberos/Makefile11
-rw-r--r--eBones/usr.sbin/kerberos/cr_err_reply.c97
-rw-r--r--eBones/usr.sbin/kerberos/kerberos.c815
-rw-r--r--eBones/usr.sbin/kprop/Makefile9
-rw-r--r--eBones/usr.sbin/kprop/kprop.c637
-rw-r--r--eBones/usr.sbin/kprop/kprop.h55
-rw-r--r--eBones/usr.sbin/ksrvutil/Makefile11
-rw-r--r--eBones/usr.sbin/ksrvutil/ksrvutil.893
-rw-r--r--eBones/usr.sbin/ksrvutil/ksrvutil.c582
-rw-r--r--eBones/usr.sbin/kstash/Makefile10
-rw-r--r--eBones/usr.sbin/kstash/kstash.844
-rw-r--r--eBones/usr.sbin/kstash/kstash.c94
-rw-r--r--eBones/usr.sbin/make_keypair/Makefile10
-rw-r--r--eBones/usr.sbin/make_keypair/make_keypair.887
-rw-r--r--etc/Makefile2
-rw-r--r--etc/crontab2
-rw-r--r--etc/etc.i386/MAKEDEV2
-rw-r--r--etc/etc.i386/README.1ST2
-rw-r--r--etc/etc.i386/README.INSTALL2
-rw-r--r--etc/etc.i386/cdinst1.install2
-rwxr-xr-xetc/etc.i386/cpio.install2
-rw-r--r--etc/etc.i386/cpio.magic2
-rw-r--r--etc/etc.i386/cpio.rc2
-rw-r--r--etc/etc.i386/inst1.profile2
-rw-r--r--etc/etc.i386/inst2.rc2
-rw-r--r--etc/etc.i386/kc.profile2
-rw-r--r--etc/etc.i386/rc.i3862
-rw-r--r--etc/host.conf2
-rw-r--r--etc/hosts2
-rw-r--r--etc/make.conf2
-rw-r--r--etc/mtree/BSD.include.dist2
-rw-r--r--etc/mtree/BSD.local.dist2
-rw-r--r--etc/mtree/BSD.release.dist2
-rw-r--r--etc/mtree/BSD.root.dist2
-rw-r--r--etc/mtree/BSD.usr.dist2
-rw-r--r--etc/mtree/BSD.var.dist2
-rw-r--r--etc/namedb/PROTO.localhost.rev2
-rw-r--r--etc/namedb/named.boot2
-rw-r--r--[-rwxr-xr-x]etc/netstart2
-rw-r--r--etc/phones2
-rw-r--r--etc/ppp/ppp.conf.filter.sample2
-rw-r--r--etc/ppp/ppp.conf.iij2
-rw-r--r--etc/ppp/ppp.conf.sample2
-rw-r--r--etc/ppp/ppp.linkup.sample2
-rw-r--r--etc/ppp/ppp.secret.sample2
-rw-r--r--etc/protocols2
-rw-r--r--etc/rc2
-rw-r--r--etc/rc.local2
-rw-r--r--etc/root/dot.cshrc2
-rw-r--r--etc/root/dot.klogin2
-rw-r--r--etc/root/dot.login2
-rw-r--r--etc/root/dot.profile2
-rw-r--r--etc/security2
-rw-r--r--etc/services2
-rw-r--r--etc/sysconfig2
-rw-r--r--games/boggle/Makefile26
-rw-r--r--games/boggle/README65
-rw-r--r--games/boggle/boggle/Makefile15
-rw-r--r--games/boggle/boggle/bog.c672
-rw-r--r--games/boggle/boggle/bog.h (renamed from secure/usr.bin/telnet/defines.h)68
-rw-r--r--games/boggle/boggle/boggle.6114
-rw-r--r--games/boggle/boggle/extern.h (renamed from eBones/usr.bin/register/pathnames.h)44
-rw-r--r--games/boggle/boggle/help.c (renamed from secure/libexec/telnetd/authenc.c)106
-rw-r--r--games/boggle/boggle/helpfile92
-rw-r--r--games/boggle/boggle/mach.c676
-rw-r--r--games/boggle/boggle/prtable.c127
-rw-r--r--games/boggle/boggle/timer.c (renamed from secure/lib/libtelnet/genget.c)124
-rw-r--r--games/boggle/boggle/word.c216
-rw-r--r--games/boggle/mkdict/Makefile9
-rw-r--r--games/boggle/mkdict/mkdict.c (renamed from eBones/usr.sbin/make_keypair/make_keypair.c)162
-rw-r--r--games/boggle/mkindex/Makefile9
-rw-r--r--games/boggle/mkindex/mkindex.c (renamed from secure/usr.bin/telnet/authenc.c)135
-rw-r--r--games/bs/Makefile2
-rw-r--r--games/grdc/Makefile2
-rw-r--r--games/hack/hack.version.c2
-rw-r--r--games/piano/piano.c2
-rw-r--r--games/tetris/Makefile10
-rw-r--r--games/tetris/input.c180
-rw-r--r--games/tetris/input.h (renamed from secure/lib/libtelnet/misc.h)18
-rw-r--r--games/tetris/pathnames.h (renamed from eBones/usr.bin/register/register_proto.h)16
-rw-r--r--games/tetris/scores.c472
-rw-r--r--games/tetris/scores.h (renamed from secure/usr.bin/telnet/fdset.h)31
-rw-r--r--games/tetris/screen.c454
-rw-r--r--games/tetris/screen.h (renamed from secure/usr.bin/telnet/general.h)29
-rw-r--r--games/tetris/shapes.c (renamed from secure/lib/libtelnet/misc-proto.h)106
-rw-r--r--games/tetris/tetris.6154
-rw-r--r--games/tetris/tetris.c312
-rw-r--r--games/tetris/tetris.h169
-rw-r--r--games/x11/xneko/xneko.c2
-rw-r--r--gnu/games/Makefile2
-rw-r--r--gnu/games/Makefile.inc2
-rw-r--r--gnu/games/chess/Xchess/Makefile2
-rw-r--r--gnu/games/chess/Xchess/XCircle.c2
-rw-r--r--gnu/games/chess/Xchess/board.c2
-rw-r--r--gnu/games/chess/Xchess/button.c2
-rw-r--r--gnu/games/chess/Xchess/clock.c2
-rw-r--r--gnu/games/chess/Xchess/control.c2
-rw-r--r--gnu/games/chess/Xchess/jail.c2
-rw-r--r--gnu/games/chess/Xchess/message.c2
-rw-r--r--gnu/games/chess/Xchess/parse.c2
-rw-r--r--gnu/games/chess/Xchess/popup.c2
-rw-r--r--gnu/games/chess/Xchess/program.c2
-rw-r--r--gnu/games/chess/Xchess/record.c2
-rw-r--r--gnu/games/chess/Xchess/std.c2
-rw-r--r--gnu/games/chess/Xchess/std.h2
-rw-r--r--gnu/games/chess/Xchess/valid.c2
-rw-r--r--gnu/games/chess/Xchess/window.c2
-rw-r--r--gnu/games/chess/Xchess/window.c.bm4
-rw-r--r--gnu/games/chess/Xchess/xchess.c2
-rw-r--r--gnu/games/chess/Xchess/xchess.c.1504
-rw-r--r--gnu/games/chess/Xchess/xchess.h4
-rwxr-xr-xgnu/gnu2bmake/gcc-2.6.1.tcl4
-rw-r--r--gnu/gnu2bmake/gnu2bmake.tcl2
-rw-r--r--gnu/include/Makefile2
-rw-r--r--gnu/lib/Makefile2
-rw-r--r--gnu/lib/Makefile.inc2
-rw-r--r--gnu/lib/libdialog/Makefile2
-rw-r--r--gnu/lib/libg++/Makefile2
-rw-r--r--gnu/lib/libmalloc/Makefile2
-rw-r--r--gnu/lib/libreadline/Makefile2
-rw-r--r--gnu/lib/libregex/Makefile2
-rw-r--r--gnu/libexec/Makefile2
-rw-r--r--gnu/libexec/Makefile.inc2
-rw-r--r--gnu/libexec/uucp/Makefile2
-rw-r--r--gnu/libexec/uucp/common_sources/chat.c2
-rw-r--r--gnu/libexec/uucp/common_sources/conn.c2
-rw-r--r--gnu/libexec/uucp/common_sources/copy.c2
-rw-r--r--gnu/libexec/uucp/common_sources/log.c2
-rw-r--r--gnu/libexec/uucp/common_sources/prot.c2
-rw-r--r--gnu/libexec/uucp/common_sources/util.c2
-rw-r--r--gnu/libexec/uucp/contrib/Makefile.uurt2
-rw-r--r--gnu/libexec/uucp/contrib/uupoll.shar21
-rw-r--r--gnu/libexec/uucp/contrib/uurate.c7
-rw-r--r--gnu/libexec/uucp/contrib/uurate.man2
-rw-r--r--gnu/libexec/uucp/contrib/uusnap.c2
-rw-r--r--gnu/libexec/uucp/cu/Makefile2
-rw-r--r--gnu/libexec/uucp/cu/cu.12
-rw-r--r--gnu/libexec/uucp/cu/cu.c2
-rw-r--r--gnu/libexec/uucp/doc/uucp.texi4
-rw-r--r--gnu/libexec/uucp/libunix/Makefile2
-rw-r--r--gnu/libexec/uucp/libunix/cusub.c2
-rw-r--r--gnu/libexec/uucp/libunix/lock.c2
-rw-r--r--gnu/libexec/uucp/libunix/picksb.c2
-rw-r--r--gnu/libexec/uucp/libunix/pipe.c2
-rw-r--r--gnu/libexec/uucp/libunix/serial.c2
-rw-r--r--gnu/libexec/uucp/libunix/spool.c2
-rw-r--r--gnu/libexec/uucp/libunix/statsb.c2
-rw-r--r--gnu/libexec/uucp/libunix/tcp.c2
-rw-r--r--gnu/libexec/uucp/libunix/tli.c2
-rw-r--r--gnu/libexec/uucp/libunix/work.c2
-rw-r--r--gnu/libexec/uucp/libunix/xqtfil.c2
-rw-r--r--gnu/libexec/uucp/libunix/xqtsub.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/Makefile2
-rw-r--r--gnu/libexec/uucp/libuuconf/addblk.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/addstr.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/allblk.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/alloc.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/base.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/bool.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/callin.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/calout.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/chatc.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/cmdarg.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/cmdfil.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/cmdlin.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/debfil.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/deblev.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/diacod.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/dial.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/diasub.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/dnams.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/errno.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/errstr.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/filnam.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/freblk.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/fredia.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/free.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/freprt.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/fresys.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/grdcmp.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/hdial.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/hdnams.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/hinit.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/hlocnm.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/hport.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/hrmunk.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/hsinfo.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/hsnams.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/hsys.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/hunk.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/iniglb.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/init.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/int.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/lckdir.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/lineno.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/llocnm.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/local.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/locnm.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/logfil.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/maxuxq.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/mrgblk.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/paramc.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/port.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/prtsub.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/pubdir.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/rdlocs.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/rdperm.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/reliab.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/remunk.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/runuxq.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/sinfo.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/snams.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/split.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/spool.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/stafil.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/strip.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/syssub.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/tcalou.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/tdial.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/tdialc.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/tdnams.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/tgcmp.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/thread.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/time.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/tinit.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/tlocnm.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/tport.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/tportc.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/tsinfo.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/tsnams.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/tsys.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/tval.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/ugtlin.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/unk.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/val.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/vinit.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/vport.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/vsinfo.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/vsnams.c2
-rw-r--r--gnu/libexec/uucp/libuuconf/vsys.c2
-rw-r--r--gnu/libexec/uucp/libuucp/Makefile2
-rw-r--r--gnu/libexec/uucp/libuucp/parse.c2
-rw-r--r--gnu/libexec/uucp/sample/Makefile2
-rw-r--r--gnu/libexec/uucp/tstuu.c2
-rw-r--r--gnu/libexec/uucp/uuchk/Makefile2
-rw-r--r--gnu/libexec/uucp/uuchk/uuchk.c2
-rw-r--r--gnu/libexec/uucp/uucico/Makefile2
-rw-r--r--gnu/libexec/uucp/uucico/prote.c2
-rw-r--r--gnu/libexec/uucp/uucico/protf.c2
-rw-r--r--gnu/libexec/uucp/uucico/protg.c2
-rw-r--r--gnu/libexec/uucp/uucico/proti.c2
-rw-r--r--gnu/libexec/uucp/uucico/protj.c2
-rw-r--r--gnu/libexec/uucp/uucico/prott.c2
-rw-r--r--gnu/libexec/uucp/uucico/proty.c2
-rw-r--r--gnu/libexec/uucp/uucico/protz.c2
-rw-r--r--gnu/libexec/uucp/uucico/rec.c2
-rw-r--r--gnu/libexec/uucp/uucico/send.c2
-rw-r--r--gnu/libexec/uucp/uucico/time.c2
-rw-r--r--gnu/libexec/uucp/uucico/trans.c2
-rw-r--r--gnu/libexec/uucp/uucico/uucico.82
-rw-r--r--gnu/libexec/uucp/uucico/uucico.c2
-rw-r--r--gnu/libexec/uucp/uucico/xcmd.c2
-rw-r--r--gnu/libexec/uucp/uuconv/Makefile2
-rw-r--r--gnu/libexec/uucp/uuconv/uuconv.c2
-rw-r--r--gnu/libexec/uucp/uucp/Makefile2
-rw-r--r--gnu/libexec/uucp/uucp/uucp.12
-rw-r--r--gnu/libexec/uucp/uucp/uucp.c2
-rw-r--r--gnu/libexec/uucp/uulog/Makefile2
-rw-r--r--gnu/libexec/uucp/uulog/uulog.c2
-rw-r--r--gnu/libexec/uucp/uuname/Makefile2
-rw-r--r--gnu/libexec/uucp/uuname/uuname.c2
-rw-r--r--gnu/libexec/uucp/uupick/Makefile2
-rw-r--r--gnu/libexec/uucp/uupick/uupick.c2
-rw-r--r--gnu/libexec/uucp/uusched/Makefile2
-rw-r--r--gnu/libexec/uucp/uustat/Makefile2
-rw-r--r--gnu/libexec/uucp/uustat/uustat.12
-rw-r--r--gnu/libexec/uucp/uustat/uustat.c2
-rw-r--r--gnu/libexec/uucp/uuto/Makefile2
-rw-r--r--gnu/libexec/uucp/uux/Makefile2
-rw-r--r--gnu/libexec/uucp/uux/uux.12
-rw-r--r--gnu/libexec/uucp/uux/uux.c2
-rw-r--r--gnu/libexec/uucp/uuxqt/Makefile2
-rw-r--r--gnu/libexec/uucp/uuxqt/uuxqt.82
-rw-r--r--gnu/libexec/uucp/uuxqt/uuxqt.c2
-rw-r--r--gnu/libexec/ypxfr/Makefile2
-rw-r--r--gnu/libexec/ypxfr/log.c2
-rw-r--r--gnu/libexec/ypxfr/ypclnt.c2
-rw-r--r--gnu/libexec/ypxfr/ypxfr.82
-rw-r--r--gnu/libexec/ypxfr/ypxfr.c2
-rw-r--r--gnu/usr.bin/Makefile2
-rw-r--r--gnu/usr.bin/Makefile.inc2
-rw-r--r--gnu/usr.bin/as/Makefile2
-rw-r--r--gnu/usr.bin/as/app.c2
-rw-r--r--gnu/usr.bin/as/as.c2
-rw-r--r--gnu/usr.bin/as/as.h2
-rw-r--r--gnu/usr.bin/as/atof-generic.c2
-rw-r--r--gnu/usr.bin/as/bignum-copy.c2
-rw-r--r--gnu/usr.bin/as/bignum.h2
-rw-r--r--gnu/usr.bin/as/bit_fix.h2
-rw-r--r--gnu/usr.bin/as/cond.c2
-rw-r--r--gnu/usr.bin/as/config/Makefile.hp3002
-rw-r--r--gnu/usr.bin/as/config/Makefile.i3862
-rw-r--r--gnu/usr.bin/as/config/Makefile.pc5322
-rw-r--r--gnu/usr.bin/as/config/Makefile.sparc2
-rw-r--r--gnu/usr.bin/as/config/Makefile.vax2
-rw-r--r--gnu/usr.bin/as/config/atof-ieee.c2
-rw-r--r--gnu/usr.bin/as/config/ho-i386.h2
-rw-r--r--gnu/usr.bin/as/config/obj-aout.h2
-rw-r--r--gnu/usr.bin/as/config/tc-i386.c2
-rw-r--r--gnu/usr.bin/as/config/tc-i386.h2
-rw-r--r--gnu/usr.bin/as/config/tc-sparc.c2
-rw-r--r--gnu/usr.bin/as/config/tc-sparc.h2
-rw-r--r--gnu/usr.bin/as/config/te-generic.h2
-rw-r--r--gnu/usr.bin/as/debug.c2
-rw-r--r--gnu/usr.bin/as/expr.c2
-rw-r--r--gnu/usr.bin/as/expr.h2
-rw-r--r--gnu/usr.bin/as/flo-const.c2
-rw-r--r--gnu/usr.bin/as/flo-copy.c2
-rw-r--r--gnu/usr.bin/as/flonum-mult.c2
-rw-r--r--gnu/usr.bin/as/flonum.h2
-rw-r--r--gnu/usr.bin/as/frags.c2
-rw-r--r--gnu/usr.bin/as/frags.h2
-rw-r--r--gnu/usr.bin/as/hash.c2
-rw-r--r--gnu/usr.bin/as/hash.h2
-rw-r--r--gnu/usr.bin/as/hex-value.c2
-rw-r--r--gnu/usr.bin/as/input-file.c2
-rw-r--r--gnu/usr.bin/as/input-file.h2
-rw-r--r--gnu/usr.bin/as/input-scrub.c2
-rw-r--r--gnu/usr.bin/as/listing.c2
-rw-r--r--gnu/usr.bin/as/listing.h2
-rw-r--r--gnu/usr.bin/as/makefile.dos2
-rw-r--r--gnu/usr.bin/as/messages.c2
-rw-r--r--gnu/usr.bin/as/obj.h2
-rw-r--r--gnu/usr.bin/as/obstack.c2
-rw-r--r--gnu/usr.bin/as/obstack.h2
-rw-r--r--gnu/usr.bin/as/opcode/a29k.h3
-rw-r--r--gnu/usr.bin/as/opcode/i386.h2
-rw-r--r--gnu/usr.bin/as/opcode/i960.h2
-rw-r--r--gnu/usr.bin/as/opcode/sparc.h2
-rw-r--r--gnu/usr.bin/as/output-file.c2
-rw-r--r--gnu/usr.bin/as/output-file.h2
-rw-r--r--gnu/usr.bin/as/read.c2
-rw-r--r--gnu/usr.bin/as/read.h2
-rw-r--r--gnu/usr.bin/as/struc-symbol.h2
-rw-r--r--gnu/usr.bin/as/subsegs.c2
-rw-r--r--gnu/usr.bin/as/subsegs.h2
-rw-r--r--gnu/usr.bin/as/symbols.c2
-rw-r--r--gnu/usr.bin/as/symbols.h2
-rw-r--r--gnu/usr.bin/as/tc.h2
-rwxr-xr-xgnu/usr.bin/as/testscripts/doboth2
-rwxr-xr-xgnu/usr.bin/as/testscripts/doobjcmp2
-rwxr-xr-xgnu/usr.bin/as/testscripts/dostriptest2
-rwxr-xr-xgnu/usr.bin/as/testscripts/dotest2
-rwxr-xr-xgnu/usr.bin/as/testscripts/dounsortreloc2
-rwxr-xr-xgnu/usr.bin/as/testscripts/dounsortsymbols2
-rw-r--r--gnu/usr.bin/as/version.c4
-rw-r--r--gnu/usr.bin/as/write.c2
-rw-r--r--gnu/usr.bin/as/xmalloc.c2
-rw-r--r--gnu/usr.bin/as/xrealloc.c2
-rw-r--r--gnu/usr.bin/bc/scan.c2
-rw-r--r--gnu/usr.bin/cc/Makefile2
-rw-r--r--gnu/usr.bin/cc/Makefile.inc2
-rw-r--r--gnu/usr.bin/cc/README2
-rw-r--r--gnu/usr.bin/cc/c++/Makefile2
-rw-r--r--gnu/usr.bin/cc/cc/Makefile2
-rw-r--r--gnu/usr.bin/cc/cc/cc.12
-rw-r--r--gnu/usr.bin/cc/cc1/Makefile2
-rw-r--r--gnu/usr.bin/cc/cc1plus/Makefile2
-rw-r--r--gnu/usr.bin/cc/cc_int/Makefile2
-rw-r--r--gnu/usr.bin/cc/cpp/Makefile2
-rw-r--r--gnu/usr.bin/cc/f77/Makefile2
-rw-r--r--gnu/usr.bin/cc/libgcc/Makefile2
-rw-r--r--gnu/usr.bin/cvs/FAQ4
-rw-r--r--gnu/usr.bin/cvs/Makefile2
-rwxr-xr-x[-rw-r--r--]gnu/usr.bin/cvs/contrib/clmerge0
-rw-r--r--gnu/usr.bin/cvs/contrib/cln_hist.pl2
-rw-r--r--gnu/usr.bin/cvs/contrib/cvs_acls.pl2
-rw-r--r--gnu/usr.bin/cvs/contrib/cvscheck2
-rw-r--r--gnu/usr.bin/cvs/contrib/cvscheck.man2
-rw-r--r--gnu/usr.bin/cvs/contrib/cvshelp.man2
-rw-r--r--gnu/usr.bin/cvs/contrib/descend2
-rw-r--r--gnu/usr.bin/cvs/contrib/descend.man2
-rwxr-xr-x[-rw-r--r--]gnu/usr.bin/cvs/contrib/easy-import.perl4
-rw-r--r--gnu/usr.bin/cvs/contrib/mfpipe.pl2
-rw-r--r--gnu/usr.bin/cvs/contrib/pcl-cvs/texinfo.tex4344
-rw-r--r--gnu/usr.bin/cvs/contrib/rcs-to-cvs2
-rwxr-xr-x[-rw-r--r--]gnu/usr.bin/cvs/contrib/rcs2log0
-rwxr-xr-x[-rw-r--r--]gnu/usr.bin/cvs/contrib/rcs2sccs2
-rw-r--r--gnu/usr.bin/cvs/contrib/sccs2rcs2
-rw-r--r--gnu/usr.bin/cvs/cvs/Makefile2
-rw-r--r--gnu/usr.bin/cvs/cvs/cvs.12
-rwxr-xr-x[-rw-r--r--]gnu/usr.bin/cvs/cvs/cvsbug.sh0
-rw-r--r--gnu/usr.bin/cvs/cvsinit/Makefile2
-rw-r--r--gnu/usr.bin/cvs/examples/Makefile2
-rw-r--r--gnu/usr.bin/cvs/examples/commitinfo2
-rw-r--r--gnu/usr.bin/cvs/examples/editinfo2
-rw-r--r--gnu/usr.bin/cvs/examples/rcsinfo2
-rw-r--r--gnu/usr.bin/cvs/lib/Makefile2
-rw-r--r--gnu/usr.bin/cvs/mkmodules/Makefile2
-rw-r--r--gnu/usr.bin/dialog/Makefile2
-rw-r--r--gnu/usr.bin/gdb/doc/gdbint.texinfo4
-rw-r--r--gnu/usr.bin/gdb/doc/stabs.texinfo2
-rw-r--r--gnu/usr.bin/gdb/gdb/freebsd-nat.c2
-rw-r--r--gnu/usr.bin/gdb/gdb/gdb.12
-rw-r--r--gnu/usr.bin/gdb/gdb/kcorelow.c2
-rw-r--r--gnu/usr.bin/gdb/mmalloc/mmalloc.texi2
-rw-r--r--gnu/usr.bin/gzip/bits.c2
-rw-r--r--gnu/usr.bin/gzip/crypt.c2
-rw-r--r--gnu/usr.bin/gzip/deflate.c2
-rw-r--r--gnu/usr.bin/gzip/gzip.c2
-rw-r--r--gnu/usr.bin/gzip/inflate.c2
-rw-r--r--gnu/usr.bin/gzip/lzw.c2
-rw-r--r--gnu/usr.bin/gzip/match.S2
-rw-r--r--gnu/usr.bin/gzip/revision.h2
-rw-r--r--gnu/usr.bin/gzip/tailor.h2
-rw-r--r--gnu/usr.bin/gzip/trees.c2
-rw-r--r--gnu/usr.bin/gzip/unlzh.c2
-rw-r--r--gnu/usr.bin/gzip/unlzw.c2
-rw-r--r--gnu/usr.bin/gzip/unpack.c2
-rw-r--r--gnu/usr.bin/gzip/unzip.c2
-rw-r--r--gnu/usr.bin/gzip/util.c2
-rw-r--r--gnu/usr.bin/gzip/zip.c2
-rw-r--r--gnu/usr.bin/kgdb/COPYING249
-rw-r--r--gnu/usr.bin/kgdb/ChangeLog4887
-rw-r--r--gnu/usr.bin/kgdb/Gdbinit15
-rw-r--r--gnu/usr.bin/kgdb/Makefile35
-rw-r--r--gnu/usr.bin/kgdb/Makefile.dist371
-rw-r--r--gnu/usr.bin/kgdb/Projects114
-rw-r--r--gnu/usr.bin/kgdb/README.gnu142
-rw-r--r--gnu/usr.bin/kgdb/XGdbinit.samp15
-rw-r--r--gnu/usr.bin/kgdb/Xgdb.ad8
-rw-r--r--gnu/usr.bin/kgdb/blockframe.c622
-rw-r--r--gnu/usr.bin/kgdb/breakpoint.c1383
-rw-r--r--gnu/usr.bin/kgdb/command.c856
-rw-r--r--gnu/usr.bin/kgdb/command.h77
-rw-r--r--gnu/usr.bin/kgdb/config/Makefile.i3866
-rw-r--r--gnu/usr.bin/kgdb/config/default-dep.c585
-rw-r--r--gnu/usr.bin/kgdb/config/i386-dep.c1275
-rw-r--r--gnu/usr.bin/kgdb/config/i386-pinsn.c1812
-rw-r--r--gnu/usr.bin/kgdb/config/i386bsd-dep.c1909
-rw-r--r--gnu/usr.bin/kgdb/config/m-i386-sv32.h28
-rw-r--r--gnu/usr.bin/kgdb/config/m-i386.h394
-rw-r--r--gnu/usr.bin/kgdb/config/m-i386bsd.h375
-rw-r--r--gnu/usr.bin/kgdb/config/m-i386g-sv32.h28
-rw-r--r--gnu/usr.bin/kgdb/config/m-i386gas.h37
-rw-r--r--gnu/usr.bin/kgdb/copying.c215
-rw-r--r--gnu/usr.bin/kgdb/core.c579
-rw-r--r--gnu/usr.bin/kgdb/cplus-dem.c996
-rw-r--r--gnu/usr.bin/kgdb/dbxread.c5727
-rw-r--r--gnu/usr.bin/kgdb/defs.h122
-rw-r--r--gnu/usr.bin/kgdb/environ.c185
-rw-r--r--gnu/usr.bin/kgdb/environ.h39
-rw-r--r--gnu/usr.bin/kgdb/eval.c1065
-rw-r--r--gnu/usr.bin/kgdb/expprint.c324
-rw-r--r--gnu/usr.bin/kgdb/expread.y1782
-rw-r--r--gnu/usr.bin/kgdb/expression.h191
-rw-r--r--gnu/usr.bin/kgdb/findvar.c579
-rw-r--r--gnu/usr.bin/kgdb/frame.h115
-rw-r--r--gnu/usr.bin/kgdb/getpagesize.h25
-rw-r--r--gnu/usr.bin/kgdb/infcmd.c1200
-rw-r--r--gnu/usr.bin/kgdb/inferior.h142
-rw-r--r--gnu/usr.bin/kgdb/inflow.c568
-rw-r--r--gnu/usr.bin/kgdb/infrun.c1458
-rw-r--r--gnu/usr.bin/kgdb/kgdb.115
-rw-r--r--gnu/usr.bin/kgdb/kgdb_proto.h (renamed from secure/libexec/telnetd/global.c)45
-rw-r--r--gnu/usr.bin/kgdb/main.c2236
-rw-r--r--gnu/usr.bin/kgdb/ngdb.i386/Makefile27
-rw-r--r--gnu/usr.bin/kgdb/obstack.c313
-rw-r--r--gnu/usr.bin/kgdb/obstack.h372
-rw-r--r--gnu/usr.bin/kgdb/printcmd.c1867
-rw-r--r--gnu/usr.bin/kgdb/regex.c1738
-rw-r--r--gnu/usr.bin/kgdb/regex.h185
-rw-r--r--gnu/usr.bin/kgdb/remote-sl.c10
-rw-r--r--gnu/usr.bin/kgdb/remote.c626
-rw-r--r--gnu/usr.bin/kgdb/source.c1166
-rw-r--r--gnu/usr.bin/kgdb/stab.def115
-rw-r--r--gnu/usr.bin/kgdb/stack.c960
-rw-r--r--gnu/usr.bin/kgdb/symmisc.c584
-rw-r--r--gnu/usr.bin/kgdb/symseg.h523
-rw-r--r--gnu/usr.bin/kgdb/symtab.c2473
-rw-r--r--gnu/usr.bin/kgdb/symtab.h384
-rw-r--r--gnu/usr.bin/kgdb/utils.c1094
-rw-r--r--gnu/usr.bin/kgdb/valarith.c690
-rw-r--r--gnu/usr.bin/kgdb/valops.c1418
-rw-r--r--gnu/usr.bin/kgdb/valprint.c1430
-rw-r--r--gnu/usr.bin/kgdb/value.h212
-rw-r--r--gnu/usr.bin/kgdb/values.c1059
-rw-r--r--gnu/usr.bin/kgdb/version.c20
-rw-r--r--gnu/usr.bin/kgdb/wait.h (renamed from secure/lib/libtelnet/getent.c)73
-rw-r--r--gnu/usr.bin/kgdb/xgdb/Makefile40
-rw-r--r--gnu/usr.bin/kgdb/xgdb/xgdb.c700
-rw-r--r--gnu/usr.bin/ld/Makefile2
-rw-r--r--gnu/usr.bin/ld/PORTING2
-rw-r--r--gnu/usr.bin/ld/cplus-dem.c2
-rw-r--r--gnu/usr.bin/ld/etc.c2
-rw-r--r--gnu/usr.bin/ld/i386/md-static-funcs.c2
-rw-r--r--gnu/usr.bin/ld/i386/md.c2
-rw-r--r--gnu/usr.bin/ld/i386/md.h2
-rw-r--r--gnu/usr.bin/ld/i386/mdprologue.S2
-rw-r--r--gnu/usr.bin/ld/ld.12
-rw-r--r--gnu/usr.bin/ld/ld.c2
-rw-r--r--gnu/usr.bin/ld/ld.h2
-rw-r--r--gnu/usr.bin/ld/ldconfig/Makefile2
-rw-r--r--gnu/usr.bin/ld/ldconfig/ldconfig.82
-rw-r--r--gnu/usr.bin/ld/ldconfig/ldconfig.c2
-rw-r--r--gnu/usr.bin/ld/ldd/Makefile2
-rw-r--r--gnu/usr.bin/ld/ldd/ldd.c2
-rw-r--r--gnu/usr.bin/ld/lib.c2
-rw-r--r--gnu/usr.bin/ld/rrs.c2
-rw-r--r--gnu/usr.bin/ld/rtld/Makefile2
-rw-r--r--gnu/usr.bin/ld/rtld/malloc.c2
-rw-r--r--gnu/usr.bin/ld/rtld/rtld.12
-rw-r--r--gnu/usr.bin/ld/rtld/rtld.c2
-rw-r--r--gnu/usr.bin/ld/rtld/sbrk.c2
-rw-r--r--gnu/usr.bin/ld/shlib.c2
-rw-r--r--gnu/usr.bin/ld/sparc/md-static-funcs.c2
-rw-r--r--gnu/usr.bin/ld/sparc/md.c2
-rw-r--r--gnu/usr.bin/ld/sparc/md.h2
-rw-r--r--gnu/usr.bin/ld/sparc/mdprologue.S2
-rw-r--r--gnu/usr.bin/ld/symbol.c2
-rw-r--r--gnu/usr.bin/ld/symseg.h2
-rw-r--r--gnu/usr.bin/ld/warnings.c2
-rw-r--r--gnu/usr.bin/ld/xbits.c2
-rw-r--r--gnu/usr.bin/man/apropos/Makefile2
-rw-r--r--gnu/usr.bin/man/catman/catman.12
-rw-r--r--gnu/usr.bin/man/catman/catman.perl2
-rw-r--r--gnu/usr.bin/man/makewhatis/makewhatis.12
-rw-r--r--gnu/usr.bin/man/makewhatis/makewhatis.perl2
-rw-r--r--gnu/usr.bin/patch/EXTERN.h5
-rw-r--r--gnu/usr.bin/patch/INTERN.h5
-rw-r--r--gnu/usr.bin/patch/common.h5
-rw-r--r--gnu/usr.bin/patch/inp.c5
-rw-r--r--gnu/usr.bin/patch/inp.h5
-rw-r--r--gnu/usr.bin/patch/patch.15
-rw-r--r--gnu/usr.bin/patch/patch.c5
-rw-r--r--gnu/usr.bin/patch/pch.c5
-rw-r--r--gnu/usr.bin/patch/pch.h5
-rw-r--r--gnu/usr.bin/patch/util.h5
-rw-r--r--gnu/usr.bin/patch/version.c5
-rw-r--r--gnu/usr.bin/patch/version.h5
-rw-r--r--gnu/usr.bin/perl/eg/ADB2
-rw-r--r--gnu/usr.bin/perl/eg/changes2
-rw-r--r--gnu/usr.bin/perl/eg/dus2
-rw-r--r--gnu/usr.bin/perl/eg/findcp2
-rw-r--r--gnu/usr.bin/perl/eg/findtar2
-rw-r--r--gnu/usr.bin/perl/eg/g/gcp2
-rw-r--r--gnu/usr.bin/perl/eg/g/gcp.man2
-rw-r--r--gnu/usr.bin/perl/eg/g/ged2
-rw-r--r--gnu/usr.bin/perl/eg/g/gsh2
-rw-r--r--gnu/usr.bin/perl/eg/g/gsh.man2
-rw-r--r--gnu/usr.bin/perl/eg/muck.man2
-rw-r--r--gnu/usr.bin/perl/eg/myrup2
-rw-r--r--gnu/usr.bin/perl/eg/nih2
-rw-r--r--gnu/usr.bin/perl/eg/relink5
-rw-r--r--gnu/usr.bin/perl/eg/rename5
-rw-r--r--gnu/usr.bin/perl/eg/rmfrom2
-rw-r--r--gnu/usr.bin/perl/eg/scan/scan_df2
-rw-r--r--gnu/usr.bin/perl/eg/scan/scan_last2
-rw-r--r--gnu/usr.bin/perl/eg/scan/scan_messages2
-rw-r--r--gnu/usr.bin/perl/eg/scan/scan_passwd2
-rw-r--r--gnu/usr.bin/perl/eg/scan/scan_ps2
-rw-r--r--gnu/usr.bin/perl/eg/scan/scan_sudo2
-rw-r--r--gnu/usr.bin/perl/eg/scan/scan_suid2
-rw-r--r--gnu/usr.bin/perl/eg/scan/scanner2
-rw-r--r--gnu/usr.bin/perl/eg/shmkill2
-rw-r--r--gnu/usr.bin/perl/eg/van/empty2
-rw-r--r--gnu/usr.bin/perl/eg/van/unvanish2
-rw-r--r--gnu/usr.bin/perl/eg/van/vanexp2
-rw-r--r--gnu/usr.bin/perl/eg/van/vanish2
-rw-r--r--gnu/usr.bin/perl/emacs/perldb.pl5
-rw-r--r--gnu/usr.bin/perl/lib/ctime.pl2
-rw-r--r--gnu/usr.bin/perl/lib/getopt.pl2
-rw-r--r--gnu/usr.bin/perl/lib/importenv.pl2
-rw-r--r--gnu/usr.bin/perl/lib/perldb.pl5
-rw-r--r--gnu/usr.bin/perl/lib/pwd.pl5
-rw-r--r--gnu/usr.bin/perl/lib/stat.pl2
-rw-r--r--gnu/usr.bin/perl/lib/syslog.pl3
-rw-r--r--gnu/usr.bin/perl/lib/termcap.pl2
-rw-r--r--gnu/usr.bin/perl/lib/validate.pl2
-rw-r--r--gnu/usr.bin/perl/misc/c2ph2
-rw-r--r--gnu/usr.bin/perl/misc/pstruct2
-rw-r--r--gnu/usr.bin/perl/perl/EXTERN.h5
-rw-r--r--gnu/usr.bin/perl/perl/INTERN.h5
-rw-r--r--gnu/usr.bin/perl/perl/arg.h5
-rw-r--r--gnu/usr.bin/perl/perl/array.c5
-rw-r--r--gnu/usr.bin/perl/perl/array.h5
-rw-r--r--gnu/usr.bin/perl/perl/cmd.c5
-rw-r--r--gnu/usr.bin/perl/perl/cmd.h5
-rw-r--r--gnu/usr.bin/perl/perl/cons.c5
-rw-r--r--gnu/usr.bin/perl/perl/consarg.c5
-rw-r--r--gnu/usr.bin/perl/perl/crypt.c2
-rw-r--r--gnu/usr.bin/perl/perl/doarg.c5
-rw-r--r--gnu/usr.bin/perl/perl/doio.c5
-rw-r--r--gnu/usr.bin/perl/perl/dolist.c5
-rw-r--r--gnu/usr.bin/perl/perl/dump.c5
-rw-r--r--gnu/usr.bin/perl/perl/eval.c5
-rw-r--r--gnu/usr.bin/perl/perl/form.c5
-rw-r--r--gnu/usr.bin/perl/perl/form.h5
-rw-r--r--gnu/usr.bin/perl/perl/handy.h5
-rw-r--r--gnu/usr.bin/perl/perl/hash.c5
-rw-r--r--gnu/usr.bin/perl/perl/hash.h5
-rw-r--r--gnu/usr.bin/perl/perl/malloc.c5
-rw-r--r--gnu/usr.bin/perl/perl/perl.18
-rw-r--r--gnu/usr.bin/perl/perl/perl.c5
-rw-r--r--gnu/usr.bin/perl/perl/perl.h5
-rw-r--r--gnu/usr.bin/perl/perl/regcomp.c5
-rw-r--r--gnu/usr.bin/perl/perl/regcomp.h5
-rw-r--r--gnu/usr.bin/perl/perl/regexec.c5
-rw-r--r--gnu/usr.bin/perl/perl/regexp.h5
-rw-r--r--gnu/usr.bin/perl/perl/spat.h5
-rw-r--r--gnu/usr.bin/perl/perl/stab.c5
-rw-r--r--gnu/usr.bin/perl/perl/stab.h5
-rw-r--r--gnu/usr.bin/perl/perl/str.c5
-rw-r--r--gnu/usr.bin/perl/perl/str.h5
-rwxr-xr-xgnu/usr.bin/perl/perl/t/TEST2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/base/cond.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/base/if.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/base/lex.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/base/pat.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/base/term.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/cmd/elsif.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/cmd/for.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/cmd/mod.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/cmd/subval.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/cmd/switch.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/cmd/while.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/comp/cmdopt.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/comp/cpp.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/comp/decl.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/comp/multiline.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/comp/script.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/comp/term.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/io/argv.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/io/dup.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/io/fs.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/io/inplace.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/io/pipe.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/io/print.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/io/tell.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/append.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/array.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/auto.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/chop.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/cond.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/dbm.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/delete.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/do.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/each.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/eval.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/exec.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/exp.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/flip.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/fork.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/glob.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/goto.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/index.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/int.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/join.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/list.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/local.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/magic.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/mkdir.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/oct.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/ord.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/pack.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/pat.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/push.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/range.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/read.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/regexp.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/repeat.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/s.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/sleep.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/sort.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/split.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/sprintf.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/stat.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/study.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/substr.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/time.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/undef.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/unshift.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/vec.t2
-rwxr-xr-xgnu/usr.bin/perl/perl/t/op/write.t2
-rw-r--r--gnu/usr.bin/perl/perl/tdoio.c5
-rw-r--r--gnu/usr.bin/perl/perl/toke.c5
-rw-r--r--gnu/usr.bin/perl/perl/usersub.c5
-rw-r--r--gnu/usr.bin/perl/perl/util.c5
-rw-r--r--gnu/usr.bin/perl/perl/util.h5
-rw-r--r--gnu/usr.bin/perl/usub/curses.mus5
-rw-r--r--gnu/usr.bin/perl/usub/usersub.c5
-rw-r--r--gnu/usr.bin/perl/x2p/EXTERN.h5
-rw-r--r--gnu/usr.bin/perl/x2p/INTERN.h5
-rw-r--r--gnu/usr.bin/perl/x2p/a2p.17
-rw-r--r--gnu/usr.bin/perl/x2p/a2p.h5
-rw-r--r--gnu/usr.bin/perl/x2p/a2p.y5
-rw-r--r--gnu/usr.bin/perl/x2p/a2py.c5
-rw-r--r--gnu/usr.bin/perl/x2p/handy.h5
-rw-r--r--gnu/usr.bin/perl/x2p/hash.c5
-rw-r--r--gnu/usr.bin/perl/x2p/hash.h5
-rw-r--r--gnu/usr.bin/perl/x2p/malloc.c5
-rwxr-xr-xgnu/usr.bin/perl/x2p/s2p13
-rw-r--r--gnu/usr.bin/perl/x2p/s2p.17
-rw-r--r--gnu/usr.bin/perl/x2p/str.c5
-rw-r--r--gnu/usr.bin/perl/x2p/str.h5
-rw-r--r--gnu/usr.bin/perl/x2p/util.c5
-rw-r--r--gnu/usr.bin/perl/x2p/util.h5
-rw-r--r--gnu/usr.bin/perl/x2p/walk.c5
-rw-r--r--gnu/usr.bin/rcs/ci/ci.12
-rw-r--r--gnu/usr.bin/rcs/ci/ci.c5
-rw-r--r--gnu/usr.bin/rcs/co/co.12
-rw-r--r--gnu/usr.bin/rcs/co/co.c7
-rw-r--r--gnu/usr.bin/rcs/doc/rcs.ms2
-rw-r--r--gnu/usr.bin/rcs/ident/ident.12
-rw-r--r--gnu/usr.bin/rcs/ident/ident.c5
-rw-r--r--gnu/usr.bin/rcs/lib/conf.h2
-rw-r--r--gnu/usr.bin/rcs/lib/maketime.c5
-rw-r--r--gnu/usr.bin/rcs/lib/merger.c2
-rw-r--r--gnu/usr.bin/rcs/lib/partime.c5
-rw-r--r--gnu/usr.bin/rcs/lib/rcsbase.h7
-rw-r--r--gnu/usr.bin/rcs/lib/rcsedit.c7
-rw-r--r--gnu/usr.bin/rcs/lib/rcsfcmp.c5
-rw-r--r--gnu/usr.bin/rcs/lib/rcsfnms.c5
-rw-r--r--gnu/usr.bin/rcs/lib/rcsgen.c5
-rw-r--r--gnu/usr.bin/rcs/lib/rcskeep.c5
-rw-r--r--gnu/usr.bin/rcs/lib/rcskeys.c7
-rw-r--r--gnu/usr.bin/rcs/lib/rcslex.c5
-rw-r--r--gnu/usr.bin/rcs/lib/rcsmap.c2
-rw-r--r--gnu/usr.bin/rcs/lib/rcsrev.c5
-rw-r--r--gnu/usr.bin/rcs/lib/rcssyn.c5
-rw-r--r--gnu/usr.bin/rcs/lib/rcsutil.c5
-rw-r--r--gnu/usr.bin/rcs/merge/merge.12
-rw-r--r--gnu/usr.bin/rcs/merge/merge.c2
-rw-r--r--gnu/usr.bin/rcs/rcs/rcs.12
-rw-r--r--gnu/usr.bin/rcs/rcs/rcs.c5
-rw-r--r--gnu/usr.bin/rcs/rcs/rcsfile.52
-rw-r--r--gnu/usr.bin/rcs/rcs/rcsintro.12
-rw-r--r--gnu/usr.bin/rcs/rcsclean/rcsclean.12
-rw-r--r--gnu/usr.bin/rcs/rcsclean/rcsclean.c2
-rw-r--r--gnu/usr.bin/rcs/rcsdiff/rcsdiff.12
-rw-r--r--gnu/usr.bin/rcs/rcsdiff/rcsdiff.c5
-rw-r--r--gnu/usr.bin/rcs/rcsfreeze/rcsfreeze.12
-rw-r--r--gnu/usr.bin/rcs/rcsfreeze/rcsfreeze.sh2
-rw-r--r--gnu/usr.bin/rcs/rcsmerge/rcsmerge.12
-rw-r--r--gnu/usr.bin/rcs/rcsmerge/rcsmerge.c5
-rwxr-xr-xgnu/usr.bin/rcs/rcstest2
-rw-r--r--gnu/usr.bin/rcs/rlog/rlog.12
-rw-r--r--gnu/usr.bin/rcs/rlog/rlog.c5
-rw-r--r--gnu/usr.bin/tar/getdate.y4
-rw-r--r--gnu/usr.bin/tar/tar.12
-rw-r--r--gnu/usr.bin/texinfo/Makefile2
-rw-r--r--gnu/usr.bin/texinfo/Makefile.inc2
-rw-r--r--gnu/usr.bin/texinfo/makedoc/Makefile2
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/Makefile2
-rw-r--r--gnu/usr.bin/texinfo/texindex/Makefile2
-rw-r--r--gnu/usr.bin/yppush/Makefile2
-rw-r--r--gnu/usr.bin/yppush/yppush.82
-rw-r--r--gnu/usr.bin/yppush/yppush.c2
-rw-r--r--gnu/usr.sbin/Makefile2
-rw-r--r--gnu/usr.sbin/Makefile.inc2
-rw-r--r--gnu/usr.sbin/isdn/dbg/dbg.c8
-rw-r--r--gnu/usr.sbin/isdn/dbg/dbg_3008.c8
-rw-r--r--gnu/usr.sbin/isdn/dbg/dbg_3009.c8
-rw-r--r--gnu/usr.sbin/isdn/dbg/dbg_5000.c8
-rw-r--r--gnu/usr.sbin/isdn/iid/Changes8
-rw-r--r--gnu/usr.sbin/isdn/iid/iid.c8
-rw-r--r--gnu/usr.sbin/isdn/ispy/ispy.c8
-rw-r--r--gnu/usr.sbin/isdn/itel/iteld.c8
-rw-r--r--gnu/usr.sbin/isdn/ittd/ittd.c8
-rw-r--r--gnu/usr.sbin/isdn/load/load.c8
-rw-r--r--gnu/usr.sbin/isdn/misc/stime.c8
-rw-r--r--gnu/usr.sbin/isdn/misc/tst.c8
-rw-r--r--gnu/usr.sbin/isdn/nsplit/nsplit.c8
-rw-r--r--gnu/usr.sbin/isdn/rst/rst.c8
-rw-r--r--gnu/usr.sbin/isdn/rstcode/rstcode.c8
-rw-r--r--gnu/usr.sbin/isdn/spy/spy.c8
-rw-r--r--gnu/usr.sbin/yp_mkdb/Makefile2
-rw-r--r--gnu/usr.sbin/yp_mkdb/yp_mkdb.c2
-rw-r--r--gnu/usr.sbin/yppasswdd/Makefile2
-rw-r--r--gnu/usr.sbin/ypserv/Makefile2
-rw-r--r--gnu/usr.sbin/ypserv/Makefile.yp2
-rw-r--r--gnu/usr.sbin/ypserv/dnslookup.c2
-rw-r--r--gnu/usr.sbin/ypserv/server.c2
-rw-r--r--gnu/usr.sbin/ypserv/svc_run.c2
-rw-r--r--gnu/usr.sbin/ypserv/system.h2
-rw-r--r--gnu/usr.sbin/ypserv/yp.h2
-rw-r--r--gnu/usr.sbin/ypserv/yp_svc.c2
-rw-r--r--gnu/usr.sbin/ypserv/yp_xdr.c2
-rw-r--r--gnu/usr.sbin/ypserv/ypserv.82
-rw-r--r--include/Makefile2
-rw-r--r--include/link.h2
-rw-r--r--include/netdb.h2
-rw-r--r--include/nl_types.h2
-rw-r--r--include/nlist.h2
-rw-r--r--include/resolv.h2
-rw-r--r--include/rpc/auth.h2
-rw-r--r--include/rpc/auth_unix.h2
-rw-r--r--include/rpc/clnt.h2
-rw-r--r--include/rpc/pmap_clnt.h2
-rw-r--r--include/rpc/pmap_prot.h2
-rw-r--r--include/rpc/pmap_rmt.h2
-rw-r--r--include/rpc/rpc.h2
-rw-r--r--include/rpc/rpc_msg.h2
-rw-r--r--include/rpc/svc.h2
-rw-r--r--include/rpc/svc_auth.h2
-rw-r--r--include/rpc/types.h2
-rw-r--r--include/rpc/xdr.h2
-rw-r--r--include/rpcsvc/Makefile2
-rw-r--r--include/rpcsvc/klm_prot.x2
-rw-r--r--include/rpcsvc/mount.x2
-rw-r--r--include/rpcsvc/nfs_prot.x2
-rw-r--r--include/rpcsvc/nlm_prot.x2
-rw-r--r--include/rpcsvc/rex.x2
-rw-r--r--include/rpcsvc/rnusers.x2
-rw-r--r--include/rpcsvc/rquota.x2
-rw-r--r--include/rpcsvc/rstat.x2
-rw-r--r--include/rpcsvc/rwall.x2
-rw-r--r--include/rpcsvc/sm_inter.x2
-rw-r--r--include/rpcsvc/spray.x2
-rw-r--r--include/rpcsvc/yp.x2
-rw-r--r--include/rpcsvc/yp_prot.h2
-rw-r--r--include/rpcsvc/ypclnt.h2
-rw-r--r--include/rpcsvc/yppasswd.x2
-rw-r--r--include/strhash.h2
-rw-r--r--lib/csu/i386/Makefile2
-rw-r--r--lib/csu/i386/c++rt0.c2
-rw-r--r--lib/csu/i386/crt0.c2
-rw-r--r--lib/libc/db/doc/hash.usenix.ps2
-rw-r--r--lib/libc/db/doc/libtp.usenix.ps2
-rw-r--r--lib/libc/gen/Makefile.inc2
-rw-r--r--lib/libc/gen/config.c4
-rw-r--r--lib/libc/gen/config_open.32
-rw-r--r--lib/libc/gen/crypt.c2
-rw-r--r--lib/libc/gen/err.32
-rw-r--r--lib/libc/gen/getbootfile.32
-rw-r--r--lib/libc/gen/getbootfile.c2
-rw-r--r--lib/libc/gen/getdomainname.32
-rw-r--r--lib/libc/gen/getdomainname.c2
-rw-r--r--lib/libc/gen/getgrent.32
-rw-r--r--lib/libc/gen/getosreldate.c2
-rw-r--r--lib/libc/gen/getvfsent.32
-rw-r--r--lib/libc/gen/ntp_gettime.c2
-rw-r--r--lib/libc/gen/setdomainname.c2
-rw-r--r--lib/libc/gen/shmat.c2
-rw-r--r--lib/libc/gen/shmctl.c2
-rw-r--r--lib/libc/gen/shmdt.c2
-rw-r--r--lib/libc/gen/shmget.c2
-rw-r--r--lib/libc/gen/uname.c2
-rw-r--r--lib/libc/i386/DEFS.h2
-rw-r--r--lib/libc/i386/SYS.h2
-rw-r--r--lib/libc/i386/gen/Makefile.inc2
-rw-r--r--lib/libc/i386/gen/_setjmp.S4
-rw-r--r--lib/libc/i386/gen/alloca.S4
-rw-r--r--lib/libc/i386/gen/divsi3.S4
-rw-r--r--lib/libc/i386/gen/fabs.S4
-rw-r--r--lib/libc/i386/gen/fixdfsi.S2
-rw-r--r--lib/libc/i386/gen/fixunsdfsi.S4
-rw-r--r--lib/libc/i386/gen/frexp.c4
-rw-r--r--lib/libc/i386/gen/infinity.c2
-rw-r--r--lib/libc/i386/gen/isinf.c4
-rw-r--r--lib/libc/i386/gen/ldexp.c4
-rw-r--r--lib/libc/i386/gen/modf.S4
-rw-r--r--lib/libc/i386/gen/setjmp.S4
-rw-r--r--lib/libc/i386/gen/sigsetjmp.S4
-rw-r--r--lib/libc/i386/gen/udivsi3.S4
-rw-r--r--lib/libc/i386/net/Makefile.inc2
-rw-r--r--lib/libc/i386/net/htonl.S4
-rw-r--r--lib/libc/i386/net/htons.S4
-rw-r--r--lib/libc/i386/net/ntohl.S4
-rw-r--r--lib/libc/i386/net/ntohs.S4
-rw-r--r--lib/libc/i386/stdlib/Makefile.inc2
-rw-r--r--lib/libc/i386/stdlib/abs.S4
-rw-r--r--lib/libc/i386/stdlib/div.S4
-rw-r--r--lib/libc/i386/stdlib/labs.S4
-rw-r--r--lib/libc/i386/stdlib/ldiv.S4
-rw-r--r--lib/libc/i386/string/Makefile.inc2
-rw-r--r--lib/libc/i386/string/bcmp.S4
-rw-r--r--lib/libc/i386/string/bcopy.S4
-rw-r--r--lib/libc/i386/string/bzero.S4
-rw-r--r--lib/libc/i386/string/ffs.S4
-rw-r--r--lib/libc/i386/string/index.S4
-rw-r--r--lib/libc/i386/string/memchr.S4
-rw-r--r--lib/libc/i386/string/memcmp.S4
-rw-r--r--lib/libc/i386/string/memmove.S4
-rw-r--r--lib/libc/i386/string/memset.S4
-rw-r--r--lib/libc/i386/string/rindex.S4
-rw-r--r--lib/libc/i386/string/strcat.S4
-rw-r--r--lib/libc/i386/string/strchr.S4
-rw-r--r--lib/libc/i386/string/strcmp.S4
-rw-r--r--lib/libc/i386/string/strcpy.S4
-rw-r--r--lib/libc/i386/string/strlen.S4
-rw-r--r--lib/libc/i386/string/strncmp.S4
-rw-r--r--lib/libc/i386/string/strrchr.S4
-rw-r--r--lib/libc/i386/string/swab.S4
-rw-r--r--lib/libc/i386/sys/Makefile.inc2
-rw-r--r--lib/libc/i386/sys/Ovfork.S4
-rw-r--r--lib/libc/i386/sys/brk.S4
-rw-r--r--lib/libc/i386/sys/cerror.S4
-rw-r--r--lib/libc/i386/sys/exect.S4
-rw-r--r--lib/libc/i386/sys/fork.S4
-rw-r--r--lib/libc/i386/sys/i386_get_ldt.22
-rw-r--r--lib/libc/i386/sys/i386_get_ldt.c4
-rw-r--r--lib/libc/i386/sys/i386_set_ldt.c4
-rw-r--r--lib/libc/i386/sys/mount.S4
-rw-r--r--lib/libc/i386/sys/pipe.S4
-rw-r--r--lib/libc/i386/sys/ptrace.S4
-rw-r--r--lib/libc/i386/sys/reboot.S4
-rw-r--r--lib/libc/i386/sys/sbrk.S4
-rw-r--r--lib/libc/i386/sys/setlogin.S4
-rw-r--r--lib/libc/i386/sys/sigpending.S4
-rw-r--r--lib/libc/i386/sys/sigprocmask.S4
-rw-r--r--lib/libc/i386/sys/sigreturn.S4
-rw-r--r--lib/libc/i386/sys/sigsuspend.S4
-rw-r--r--lib/libc/i386/sys/syscall.S4
-rw-r--r--lib/libc/locale/collate.c2
-rw-r--r--lib/libc/locale/collate.h2
-rw-r--r--lib/libc/net/ether_addr.c2
-rw-r--r--lib/libc/net/ethers.32
-rw-r--r--lib/libc/net/gethostbydns.c2
-rw-r--r--lib/libc/net/gethostbyht.c2
-rw-r--r--lib/libc/net/gethostbynis.c4
-rw-r--r--lib/libc/net/gethostnamadr.c4
-rw-r--r--lib/libc/net/getnetbydns.c2
-rw-r--r--lib/libc/net/getnetbynis.c4
-rw-r--r--lib/libc/net/getnetnamadr.c4
-rw-r--r--lib/libc/net/herror.c2
-rw-r--r--lib/libc/net/res_comp.c2
-rw-r--r--lib/libc/net/res_debug.c2
-rw-r--r--lib/libc/net/res_init.c2
-rw-r--r--lib/libc/net/res_mkquery.c2
-rw-r--r--lib/libc/net/res_query.c2
-rw-r--r--lib/libc/net/res_send.c2
-rw-r--r--lib/libc/nls/catclose.32
-rw-r--r--lib/libc/nls/catclose.c2
-rw-r--r--lib/libc/nls/catgets.32
-rw-r--r--lib/libc/nls/catgets.c2
-rw-r--r--lib/libc/nls/catopen.32
-rw-r--r--lib/libc/nls/catopen.c2
-rw-r--r--lib/libc/nls/msgcat.c2
-rw-r--r--lib/libc/nls/msgcat.h2
-rw-r--r--lib/libc/rpc/auth_none.c2
-rw-r--r--lib/libc/rpc/auth_unix.c2
-rw-r--r--lib/libc/rpc/authunix_prot.c2
-rw-r--r--lib/libc/rpc/bindresvport.c2
-rw-r--r--lib/libc/rpc/clnt_generic.c2
-rw-r--r--lib/libc/rpc/clnt_perror.c2
-rw-r--r--lib/libc/rpc/clnt_raw.c2
-rw-r--r--lib/libc/rpc/clnt_simple.c2
-rw-r--r--lib/libc/rpc/clnt_tcp.c2
-rw-r--r--lib/libc/rpc/clnt_udp.c2
-rw-r--r--lib/libc/rpc/get_myaddress.c2
-rw-r--r--lib/libc/rpc/getrpcent.c2
-rw-r--r--lib/libc/rpc/getrpcport.c2
-rw-r--r--lib/libc/rpc/pmap_clnt.c2
-rw-r--r--lib/libc/rpc/pmap_getmaps.c2
-rw-r--r--lib/libc/rpc/pmap_getport.c2
-rw-r--r--lib/libc/rpc/pmap_prot.c2
-rw-r--r--lib/libc/rpc/pmap_prot2.c2
-rw-r--r--lib/libc/rpc/pmap_rmt.c2
-rw-r--r--lib/libc/rpc/rpc_callmsg.c2
-rw-r--r--lib/libc/rpc/rpc_commondata.c2
-rw-r--r--lib/libc/rpc/rpc_prot.c2
-rw-r--r--lib/libc/rpc/svc.c2
-rw-r--r--lib/libc/rpc/svc_auth.c2
-rw-r--r--lib/libc/rpc/svc_auth_unix.c2
-rw-r--r--lib/libc/rpc/svc_raw.c2
-rw-r--r--lib/libc/rpc/svc_run.c2
-rw-r--r--lib/libc/rpc/svc_simple.c2
-rw-r--r--lib/libc/rpc/svc_tcp.c2
-rw-r--r--lib/libc/rpc/svc_udp.c2
-rw-r--r--lib/libc/stdlib/strhash.c5
-rw-r--r--lib/libc/stdtime/Makefile.inc2
-rw-r--r--lib/libc/stdtime/strftime.c2
-rw-r--r--lib/libc/string/strcoll.c2
-rw-r--r--lib/libc/string/strxfrm.c2
-rw-r--r--lib/libc/sys/rtprio.22
-rw-r--r--lib/libc/sys/semctl.22
-rw-r--r--lib/libc/sys/semget.22
-rw-r--r--lib/libc/sys/semop.22
-rw-r--r--lib/libc/sys/send.22
-rw-r--r--lib/libc/sys/shmat.22
-rw-r--r--lib/libc/sys/shmctl.22
-rw-r--r--lib/libc/sys/shmget.22
-rw-r--r--lib/libc/sys/socket.22
-rw-r--r--lib/libc/xdr/xdr.c2
-rw-r--r--lib/libc/xdr/xdr_array.c2
-rw-r--r--lib/libc/xdr/xdr_float.c2
-rw-r--r--lib/libc/xdr/xdr_mem.c2
-rw-r--r--lib/libc/xdr/xdr_rec.c2
-rw-r--r--lib/libc/xdr/xdr_reference.c2
-rw-r--r--lib/libc/xdr/xdr_stdio.c2
-rw-r--r--lib/libc/yp/Makefile.inc2
-rw-r--r--lib/libc/yp/xdryp.c2
-rw-r--r--lib/libc/yp/yplib.c2
-rw-r--r--lib/libcom_err/Makefile2
-rw-r--r--lib/libcom_err/com_err.32
-rw-r--r--lib/libcom_err/com_err.c2
-rw-r--r--lib/libcom_err/doc/Makefile2
-rw-r--r--lib/libcom_err/doc/com_err.texinfo6
-rw-r--r--lib/libcom_err/error_message.c6
-rw-r--r--lib/libcom_err/et_name.c2
-rw-r--r--lib/libcom_err/init_et.c6
-rw-r--r--lib/libcompat/4.1/ascftime.c2
-rw-r--r--lib/libcompat/4.1/cftime.32
-rw-r--r--lib/libcompat/4.1/cftime.c2
-rw-r--r--lib/libcompat/4.1/ftime.c2
-rw-r--r--lib/libcompat/4.1/getpw.c2
-rw-r--r--lib/libcompat/4.1/gtty.c2
-rw-r--r--lib/libcompat/4.1/stty.c2
-rw-r--r--lib/libcompat/4.4/cuserid.32
-rw-r--r--lib/libcompat/SysV/ftok.32
-rw-r--r--lib/libcompat/SysV/ftok.c2
-rw-r--r--lib/libcrypt/Makefile2
-rw-r--r--lib/libcrypt/crypt.c4
-rw-r--r--lib/libcurses/Makefile2
-rw-r--r--lib/libkvm/kvm_getprocs.32
-rw-r--r--lib/libm/Makefile2
-rw-r--r--lib/libmd/mdXhl.c2
-rw-r--r--lib/libmytinfo/Makefile2
-rw-r--r--lib/libmytinfo/TESTS/Makefile2
-rw-r--r--lib/libncurses/Makefile2
-rw-r--r--lib/libncurses/TESTS/newdemo.c2
-rw-r--r--lib/libpcap/Makefile2
-rw-r--r--lib/libpcap/bpf_filter.c4
-rw-r--r--lib/libpcap/bpf_image.c2
-rw-r--r--lib/libpcap/etherent.c2
-rw-r--r--lib/libpcap/ethertype.h2
-rw-r--r--lib/libpcap/gencode.c2
-rw-r--r--lib/libpcap/gencode.h2
-rw-r--r--lib/libpcap/grammar.y2
-rw-r--r--lib/libpcap/inet.c2
-rw-r--r--lib/libpcap/nametoaddr.c2
-rw-r--r--lib/libpcap/optimize.c2
-rw-r--r--lib/libpcap/pcap-bpf.c2
-rw-r--r--lib/libpcap/pcap-dlpi.c2
-rw-r--r--lib/libpcap/pcap-int.h2
-rw-r--r--lib/libpcap/pcap-namedb.h2
-rw-r--r--lib/libpcap/pcap-nit.c2
-rw-r--r--lib/libpcap/pcap-nit.h2
-rw-r--r--lib/libpcap/pcap-pf.c2
-rw-r--r--lib/libpcap/pcap-pf.h2
-rw-r--r--lib/libpcap/pcap-snit.c2
-rw-r--r--lib/libpcap/pcap-snoop.c2
-rw-r--r--lib/libpcap/pcap.c2
-rw-r--r--lib/libpcap/pcap.h2
-rw-r--r--lib/libpcap/savefile.c2
-rw-r--r--lib/libpcap/scanner.l2
-rw-r--r--lib/librpcsvc/Makefile2
-rw-r--r--lib/libscsi/scsi.c2
-rw-r--r--lib/libskey/pathnames.h2
-rw-r--r--lib/libss/Makefile2
-rw-r--r--lib/libtelnet/Makefile2
-rw-r--r--lib/libtermcap/termcap.h2
-rw-r--r--lib/msun/Makefile2
-rw-r--r--lib/msun/i387/e_acos.S2
-rw-r--r--lib/msun/i387/e_asin.S2
-rw-r--r--lib/msun/i387/e_atan2.S2
-rw-r--r--lib/msun/i387/e_exp.S2
-rw-r--r--lib/msun/i387/e_fmod.S2
-rw-r--r--lib/msun/i387/e_log.S2
-rw-r--r--lib/msun/i387/e_log10.S2
-rw-r--r--lib/msun/i387/e_remainder.S2
-rw-r--r--lib/msun/i387/e_scalb.S2
-rw-r--r--lib/msun/i387/e_sqrt.S2
-rw-r--r--lib/msun/i387/s_atan.S2
-rw-r--r--lib/msun/i387/s_ceil.S2
-rw-r--r--lib/msun/i387/s_copysign.S2
-rw-r--r--lib/msun/i387/s_cos.S2
-rw-r--r--lib/msun/i387/s_finite.S2
-rw-r--r--lib/msun/i387/s_floor.S2
-rw-r--r--lib/msun/i387/s_ilogb.S2
-rw-r--r--lib/msun/i387/s_log1p.S2
-rw-r--r--lib/msun/i387/s_logb.S2
-rw-r--r--lib/msun/i387/s_rint.S2
-rw-r--r--lib/msun/i387/s_scalbn.S2
-rw-r--r--lib/msun/i387/s_significand.S2
-rw-r--r--lib/msun/i387/s_sin.S2
-rw-r--r--lib/msun/i387/s_tan.S2
-rw-r--r--lib/msun/man/acos.32
-rw-r--r--lib/msun/man/acosh.32
-rw-r--r--lib/msun/man/asin.32
-rw-r--r--lib/msun/man/asinh.32
-rw-r--r--lib/msun/man/atan.32
-rw-r--r--lib/msun/man/atan2.32
-rw-r--r--lib/msun/man/atanh.32
-rw-r--r--lib/msun/man/ceil.32
-rw-r--r--lib/msun/man/cos.32
-rw-r--r--lib/msun/man/cosh.32
-rw-r--r--lib/msun/man/erf.32
-rw-r--r--lib/msun/man/exp.32
-rw-r--r--lib/msun/man/fabs.32
-rw-r--r--lib/msun/man/floor.32
-rw-r--r--lib/msun/man/fmod.32
-rw-r--r--lib/msun/man/hypot.32
-rw-r--r--lib/msun/man/ieee.32
-rw-r--r--lib/msun/man/ieee_test.32
-rw-r--r--lib/msun/man/j0.32
-rw-r--r--lib/msun/man/lgamma.32
-rw-r--r--lib/msun/man/math.32
-rw-r--r--lib/msun/man/rint.32
-rw-r--r--lib/msun/man/sin.32
-rw-r--r--lib/msun/man/sinh.32
-rw-r--r--lib/msun/man/sqrt.32
-rw-r--r--lib/msun/man/tan.32
-rw-r--r--lib/msun/man/tanh.32
-rw-r--r--lib/msun/src/e_acos.c2
-rw-r--r--lib/msun/src/e_acosf.c2
-rw-r--r--lib/msun/src/e_acosh.c2
-rw-r--r--lib/msun/src/e_acoshf.c2
-rw-r--r--lib/msun/src/e_asin.c2
-rw-r--r--lib/msun/src/e_asinf.c2
-rw-r--r--lib/msun/src/e_atan2.c2
-rw-r--r--lib/msun/src/e_atan2f.c2
-rw-r--r--lib/msun/src/e_atanh.c2
-rw-r--r--lib/msun/src/e_atanhf.c2
-rw-r--r--lib/msun/src/e_cosh.c2
-rw-r--r--lib/msun/src/e_coshf.c2
-rw-r--r--lib/msun/src/e_exp.c2
-rw-r--r--lib/msun/src/e_expf.c2
-rw-r--r--lib/msun/src/e_fmod.c2
-rw-r--r--lib/msun/src/e_fmodf.c2
-rw-r--r--lib/msun/src/e_gamma.c2
-rw-r--r--lib/msun/src/e_gamma_r.c2
-rw-r--r--lib/msun/src/e_gammaf.c2
-rw-r--r--lib/msun/src/e_gammaf_r.c2
-rw-r--r--lib/msun/src/e_hypot.c2
-rw-r--r--lib/msun/src/e_hypotf.c2
-rw-r--r--lib/msun/src/e_j0.c2
-rw-r--r--lib/msun/src/e_j0f.c2
-rw-r--r--lib/msun/src/e_j1.c2
-rw-r--r--lib/msun/src/e_j1f.c2
-rw-r--r--lib/msun/src/e_jn.c2
-rw-r--r--lib/msun/src/e_jnf.c2
-rw-r--r--lib/msun/src/e_lgamma.c2
-rw-r--r--lib/msun/src/e_lgamma_r.c2
-rw-r--r--lib/msun/src/e_lgammaf.c2
-rw-r--r--lib/msun/src/e_lgammaf_r.c2
-rw-r--r--lib/msun/src/e_log.c2
-rw-r--r--lib/msun/src/e_log10.c2
-rw-r--r--lib/msun/src/e_log10f.c2
-rw-r--r--lib/msun/src/e_logf.c2
-rw-r--r--lib/msun/src/e_pow.c2
-rw-r--r--lib/msun/src/e_powf.c2
-rw-r--r--lib/msun/src/e_rem_pio2.c2
-rw-r--r--lib/msun/src/e_rem_pio2f.c2
-rw-r--r--lib/msun/src/e_remainder.c2
-rw-r--r--lib/msun/src/e_remainderf.c2
-rw-r--r--lib/msun/src/e_scalb.c2
-rw-r--r--lib/msun/src/e_scalbf.c2
-rw-r--r--lib/msun/src/e_sinh.c2
-rw-r--r--lib/msun/src/e_sinhf.c2
-rw-r--r--lib/msun/src/e_sqrt.c2
-rw-r--r--lib/msun/src/e_sqrtf.c2
-rw-r--r--lib/msun/src/k_cos.c2
-rw-r--r--lib/msun/src/k_cosf.c2
-rw-r--r--lib/msun/src/k_rem_pio2.c2
-rw-r--r--lib/msun/src/k_rem_pio2f.c2
-rw-r--r--lib/msun/src/k_sin.c2
-rw-r--r--lib/msun/src/k_sinf.c2
-rw-r--r--lib/msun/src/k_standard.c2
-rw-r--r--lib/msun/src/k_tan.c2
-rw-r--r--lib/msun/src/k_tanf.c2
-rw-r--r--lib/msun/src/math.h2
-rw-r--r--lib/msun/src/math_private.h2
-rw-r--r--lib/msun/src/s_asinh.c2
-rw-r--r--lib/msun/src/s_asinhf.c2
-rw-r--r--lib/msun/src/s_atan.c2
-rw-r--r--lib/msun/src/s_atanf.c2
-rw-r--r--lib/msun/src/s_cbrt.c2
-rw-r--r--lib/msun/src/s_cbrtf.c2
-rw-r--r--lib/msun/src/s_ceil.c2
-rw-r--r--lib/msun/src/s_ceilf.c2
-rw-r--r--lib/msun/src/s_copysign.c2
-rw-r--r--lib/msun/src/s_copysignf.c2
-rw-r--r--lib/msun/src/s_cos.c2
-rw-r--r--lib/msun/src/s_cosf.c2
-rw-r--r--lib/msun/src/s_erf.c2
-rw-r--r--lib/msun/src/s_erff.c2
-rw-r--r--lib/msun/src/s_expm1.c2
-rw-r--r--lib/msun/src/s_expm1f.c2
-rw-r--r--lib/msun/src/s_fabs.c2
-rw-r--r--lib/msun/src/s_fabsf.c2
-rw-r--r--lib/msun/src/s_finite.c2
-rw-r--r--lib/msun/src/s_finitef.c2
-rw-r--r--lib/msun/src/s_floor.c2
-rw-r--r--lib/msun/src/s_floorf.c2
-rw-r--r--lib/msun/src/s_frexp.c2
-rw-r--r--lib/msun/src/s_frexpf.c2
-rw-r--r--lib/msun/src/s_ilogb.c2
-rw-r--r--lib/msun/src/s_ilogbf.c2
-rw-r--r--lib/msun/src/s_isnan.c2
-rw-r--r--lib/msun/src/s_isnanf.c2
-rw-r--r--lib/msun/src/s_ldexp.c2
-rw-r--r--lib/msun/src/s_ldexpf.c2
-rw-r--r--lib/msun/src/s_lib_version.c2
-rw-r--r--lib/msun/src/s_log1p.c2
-rw-r--r--lib/msun/src/s_log1pf.c2
-rw-r--r--lib/msun/src/s_logb.c2
-rw-r--r--lib/msun/src/s_logbf.c2
-rw-r--r--lib/msun/src/s_matherr.c2
-rw-r--r--lib/msun/src/s_modf.c2
-rw-r--r--lib/msun/src/s_modff.c2
-rw-r--r--lib/msun/src/s_nextafter.c2
-rw-r--r--lib/msun/src/s_nextafterf.c2
-rw-r--r--lib/msun/src/s_rint.c2
-rw-r--r--lib/msun/src/s_rintf.c2
-rw-r--r--lib/msun/src/s_scalbn.c2
-rw-r--r--lib/msun/src/s_scalbnf.c2
-rw-r--r--lib/msun/src/s_significand.c2
-rw-r--r--lib/msun/src/s_significandf.c2
-rw-r--r--lib/msun/src/s_sin.c2
-rw-r--r--lib/msun/src/s_sinf.c2
-rw-r--r--lib/msun/src/s_tan.c2
-rw-r--r--lib/msun/src/s_tanf.c2
-rw-r--r--lib/msun/src/s_tanh.c2
-rw-r--r--lib/msun/src/s_tanhf.c2
-rw-r--r--lib/msun/src/w_acos.c2
-rw-r--r--lib/msun/src/w_acosf.c2
-rw-r--r--lib/msun/src/w_acosh.c2
-rw-r--r--lib/msun/src/w_acoshf.c2
-rw-r--r--lib/msun/src/w_asin.c2
-rw-r--r--lib/msun/src/w_asinf.c2
-rw-r--r--lib/msun/src/w_atan2.c2
-rw-r--r--lib/msun/src/w_atan2f.c2
-rw-r--r--lib/msun/src/w_atanh.c2
-rw-r--r--lib/msun/src/w_atanhf.c2
-rw-r--r--lib/msun/src/w_cosh.c2
-rw-r--r--lib/msun/src/w_coshf.c2
-rw-r--r--lib/msun/src/w_exp.c2
-rw-r--r--lib/msun/src/w_expf.c2
-rw-r--r--lib/msun/src/w_fmod.c2
-rw-r--r--lib/msun/src/w_fmodf.c2
-rw-r--r--lib/msun/src/w_gamma.c2
-rw-r--r--lib/msun/src/w_gamma_r.c2
-rw-r--r--lib/msun/src/w_gammaf.c2
-rw-r--r--lib/msun/src/w_gammaf_r.c2
-rw-r--r--lib/msun/src/w_hypot.c2
-rw-r--r--lib/msun/src/w_hypotf.c2
-rw-r--r--lib/msun/src/w_j0.c2
-rw-r--r--lib/msun/src/w_j0f.c2
-rw-r--r--lib/msun/src/w_j1.c2
-rw-r--r--lib/msun/src/w_j1f.c2
-rw-r--r--lib/msun/src/w_jn.c2
-rw-r--r--lib/msun/src/w_jnf.c2
-rw-r--r--lib/msun/src/w_lgamma.c2
-rw-r--r--lib/msun/src/w_lgamma_r.c2
-rw-r--r--lib/msun/src/w_lgammaf.c2
-rw-r--r--lib/msun/src/w_lgammaf_r.c2
-rw-r--r--lib/msun/src/w_log.c2
-rw-r--r--lib/msun/src/w_log10.c2
-rw-r--r--lib/msun/src/w_log10f.c2
-rw-r--r--lib/msun/src/w_logf.c2
-rw-r--r--lib/msun/src/w_powf.c2
-rw-r--r--lib/msun/src/w_remainder.c2
-rw-r--r--lib/msun/src/w_remainderf.c2
-rw-r--r--lib/msun/src/w_scalb.c2
-rw-r--r--lib/msun/src/w_scalbf.c2
-rw-r--r--lib/msun/src/w_sinh.c2
-rw-r--r--lib/msun/src/w_sinhf.c2
-rw-r--r--lib/msun/src/w_sqrt.c2
-rw-r--r--lib/msun/src/w_sqrtf.c2
-rw-r--r--libexec/atrun/Makefile2
-rw-r--r--libexec/atrun/atrun.c2
-rw-r--r--libexec/atrun/atrun.man2
-rw-r--r--libexec/bootpd/Makefile2
-rw-r--r--libexec/bootpd/bootp.h2
-rw-r--r--libexec/bootpd/bootpd.82
-rw-r--r--libexec/bootpd/bootpd.c2
-rw-r--r--libexec/bootpd/bootptab.52
-rw-r--r--libexec/bootpd/hash.c2
-rw-r--r--libexec/bootpd/readfile.c2
-rw-r--r--libexec/bootpd/rtmsg.c2
-rw-r--r--libexec/bootpd/tools/Makefile2
-rw-r--r--libexec/bootpd/tools/Makefile.inc2
-rw-r--r--libexec/bootpd/tools/bootpef/Makefile2
-rw-r--r--libexec/bootpd/tools/bootpef/bootpef.c2
-rw-r--r--libexec/bootpd/tools/bootptest/Makefile2
-rw-r--r--libexec/bootpd/tools/bootptest/print-bootp.c2
-rw-r--r--libexec/bootpgw/Makefile2
-rw-r--r--libexec/bootpgw/bootpgw.c2
-rw-r--r--libexec/ftpd/ftpd.c2
-rw-r--r--libexec/rpc.rstatd/Makefile2
-rw-r--r--libexec/rpc.rstatd/rpc.rstatd.82
-rw-r--r--libexec/rpc.rstatd/rstat_proc.c2
-rw-r--r--libexec/rpc.rstatd/rstatd.c2
-rw-r--r--libexec/rpc.rusersd/Makefile2
-rw-r--r--libexec/rpc.rusersd/rpc.rusersd.82
-rw-r--r--libexec/rpc.rusersd/rusers_proc.c2
-rw-r--r--libexec/rpc.rusersd/rusersd.c2
-rw-r--r--libexec/rpc.rwalld/Makefile2
-rw-r--r--libexec/rpc.rwalld/rpc.rwalld.82
-rw-r--r--libexec/rpc.rwalld/rwalld.c2
-rw-r--r--libexec/rshd/Makefile2
-rw-r--r--libexec/xtend/Makefile2
-rw-r--r--lkm/Makefile2
-rw-r--r--lkm/Makefile.inc2
-rw-r--r--lkm/cd9660/Makefile2
-rw-r--r--lkm/coff/Makefile2
-rw-r--r--lkm/coff/coff.c2
-rw-r--r--lkm/fdesc/Makefile2
-rw-r--r--lkm/ibcs2/Makefile2
-rwxr-xr-xlkm/ibcs2/ibcs22
-rw-r--r--lkm/ibcs2/ibcs2.c2
-rw-r--r--lkm/if_disc/Makefile2
-rw-r--r--lkm/if_ppp/Makefile2
-rw-r--r--lkm/if_sl/Makefile2
-rw-r--r--lkm/if_tun/Makefile2
-rw-r--r--lkm/ip_mroute_mod/Makefile2
-rw-r--r--lkm/ipfw/Makefile2
-rw-r--r--lkm/kernfs/Makefile2
-rw-r--r--lkm/linux/Makefile2
-rw-r--r--lkm/linux/linux2
-rw-r--r--lkm/linux/linux.c2
-rw-r--r--lkm/mfs/Makefile2
-rw-r--r--lkm/msdos/Makefile2
-rw-r--r--lkm/nfs/Makefile2
-rw-r--r--lkm/nullfs/Makefile2
-rw-r--r--lkm/portal/Makefile2
-rw-r--r--lkm/procfs/Makefile2
-rw-r--r--lkm/socksys/Makefile2
-rw-r--r--lkm/socksys/socksys.c2
-rw-r--r--lkm/syscons/Makefile2
-rw-r--r--lkm/syscons/blank/Makefile2
-rw-r--r--lkm/syscons/blank/blank_saver.c2
-rw-r--r--lkm/syscons/fade/Makefile2
-rw-r--r--lkm/syscons/fade/fade_saver.c2
-rw-r--r--lkm/syscons/green/Makefile2
-rw-r--r--lkm/syscons/green/green_saver.c2
-rw-r--r--lkm/syscons/snake/Makefile2
-rw-r--r--lkm/syscons/snake/snake_saver.c2
-rw-r--r--lkm/syscons/star/Makefile2
-rw-r--r--lkm/syscons/star/star_saver.c2
-rw-r--r--lkm/umapfs/Makefile2
-rw-r--r--lkm/union/Makefile2
-rw-r--r--release/MIRROR.SITES2
-rw-r--r--release/Makefile2
-rw-r--r--release/boot_crunch.conf2
-rw-r--r--release/compat20/libgcc.so.261.0.uu2
-rw-r--r--release/fixit.profile2
-rw-r--r--release/fixit_crunch.conf2
-rwxr-xr-x[-rw-r--r--]release/info.sh0
-rw-r--r--release/libdisk/blocks.c2
-rw-r--r--release/libdisk/change.c2
-rw-r--r--release/libdisk/chunk.c2
-rw-r--r--release/libdisk/create_chunk.c5
-rw-r--r--release/libdisk/disk.c2
-rw-r--r--release/libdisk/disklabel.c2
-rw-r--r--release/libdisk/libdisk.h2
-rw-r--r--release/libdisk/rules.c2
-rw-r--r--release/libdisk/tst01.c2
-rw-r--r--release/libdisk/write_disk.c2
-rw-r--r--release/root_crunch.conf2
-rw-r--r--release/sysinstall/anonFTP.c2
-rw-r--r--release/sysinstall/apache.c2
-rw-r--r--release/sysinstall/attr.c2
-rw-r--r--release/sysinstall/cdrom.c2
-rw-r--r--release/sysinstall/command.c2
-rw-r--r--release/sysinstall/config.c2
-rw-r--r--release/sysinstall/decode.c2
-rw-r--r--release/sysinstall/dev2c.sh2
-rw-r--r--release/sysinstall/devices.c2
-rw-r--r--release/sysinstall/disks.c2
-rw-r--r--release/sysinstall/dist.c2
-rw-r--r--release/sysinstall/dmenu.c2
-rw-r--r--release/sysinstall/doc.c2
-rw-r--r--release/sysinstall/dos.c2
-rw-r--r--release/sysinstall/floppy.c2
-rw-r--r--release/sysinstall/ftp.c2
-rw-r--r--release/sysinstall/ftp_strat.c2
-rw-r--r--release/sysinstall/globals.c2
-rw-r--r--release/sysinstall/help/apache.hlp76
-rw-r--r--release/sysinstall/help/hardware.hlp2
-rw-r--r--release/sysinstall/help/install.hlp116
-rw-r--r--release/sysinstall/help/readme.hlp6
-rw-r--r--release/sysinstall/help/relnotes.hlp6
-rw-r--r--release/sysinstall/index.c2
-rw-r--r--release/sysinstall/install.c2
-rw-r--r--release/sysinstall/installFinal.c17
-rw-r--r--release/sysinstall/installPreconfig.c2
-rw-r--r--release/sysinstall/installUpgrade.c14
-rw-r--r--release/sysinstall/label.c2
-rw-r--r--release/sysinstall/lang.c2
-rw-r--r--release/sysinstall/main.c2
-rw-r--r--release/sysinstall/media.c2
-rw-r--r--release/sysinstall/menus.c4
-rw-r--r--release/sysinstall/misc.c2
-rw-r--r--release/sysinstall/msg.c2
-rw-r--r--release/sysinstall/network.c2
-rw-r--r--release/sysinstall/nfs.c2
-rw-r--r--release/sysinstall/options.c2
-rw-r--r--release/sysinstall/package.c2
-rw-r--r--release/sysinstall/sysinstall.h1
-rw-r--r--release/sysinstall/system.c2
-rw-r--r--release/sysinstall/tape.c2
-rw-r--r--release/sysinstall/tcpip.c2
-rw-r--r--release/sysinstall/ufs.c2
-rw-r--r--release/sysinstall/variable.c2
-rw-r--r--release/sysinstall/version.h2
-rw-r--r--release/sysinstall/wizard.c2
-rw-r--r--release/write_mfs_in_kernel.c2
-rw-r--r--sbin/dumpon/Makefile2
-rw-r--r--sbin/dumpon/dumpon.82
-rw-r--r--sbin/dumpon/dumpon.c2
-rw-r--r--sbin/i386/Makefile2
-rw-r--r--sbin/i386/Makefile.inc2
-rw-r--r--sbin/i386/ft/Makefile2
-rw-r--r--sbin/i386/mount_msdos/Makefile2
-rw-r--r--sbin/i386/mount_msdos/mount_msdos.82
-rw-r--r--sbin/i386/mount_msdos/mount_msdos.c2
-rw-r--r--sbin/md5/md5.c2
-rw-r--r--sbin/modload/Makefile2
-rw-r--r--sbin/modload/modload.82
-rw-r--r--sbin/modload/modload.c2
-rw-r--r--sbin/modload/pathnames.h2
-rw-r--r--sbin/modunload/Makefile2
-rw-r--r--sbin/modunload/modunload.82
-rw-r--r--sbin/modunload/modunload.c2
-rw-r--r--sbin/mount_portal/Makefile2
-rw-r--r--sbin/mount_portal/activate.c2
-rw-r--r--sbin/mount_portal/conf.c2
-rw-r--r--sbin/mount_portal/pathnames.h2
-rw-r--r--sbin/mount_portal/portal.conf2
-rw-r--r--sbin/mount_portal/portald.h2
-rw-r--r--sbin/mount_portal/pt_conf.c2
-rw-r--r--sbin/mount_portal/pt_exec.c2
-rw-r--r--sbin/mount_portal/pt_file.c2
-rw-r--r--sbin/mount_portal/pt_tcp.c2
-rw-r--r--sbin/mountd/Makefile2
-rw-r--r--sbin/mountd/mountd.82
-rw-r--r--sbin/mountd/mountd.c2
-rw-r--r--sbin/nfsiod/nfsiod.82
-rw-r--r--sbin/reboot/boot_i386.82
-rw-r--r--sbin/savecore/savecore.82
-rw-r--r--sbin/scsi/scsi.82
-rw-r--r--sbin/scsi/scsi.c2
-rw-r--r--sbin/slattach/Makefile2
-rw-r--r--sbin/slattach/slattach.82
-rw-r--r--sbin/startslip/startslip.c2
-rw-r--r--secure/Makefile10
-rw-r--r--secure/Makefile.inc15
-rw-r--r--secure/bin/Makefile6
-rw-r--r--secure/bin/Makefile.inc5
-rw-r--r--secure/bin/ed/Makefile13
-rw-r--r--secure/lib/Makefile6
-rw-r--r--secure/lib/Makefile.inc6
-rw-r--r--secure/lib/libcipher/Makefile17
-rw-r--r--secure/lib/libcipher/README98
-rw-r--r--secure/lib/libcipher/README.FreeBSD6
-rw-r--r--secure/lib/libcipher/crypt.3236
-rw-r--r--secure/lib/libcipher/crypt.c623
-rw-r--r--secure/lib/libcipher/test/Makefile56
-rw-r--r--secure/lib/libcipher/test/README10
-rw-r--r--secure/lib/libcipher/test/cert.c344
-rw-r--r--secure/lib/libcipher/test/cert.input179
-rw-r--r--secure/lib/libcipher/test/speedcrypt.c76
-rw-r--r--secure/lib/libcipher/test/speeddes.c61
-rw-r--r--secure/lib/libcrypt/Makefile52
-rw-r--r--secure/lib/libcrypt/README98
-rw-r--r--secure/lib/libcrypt/README.FreeBSD21
-rw-r--r--secure/lib/libcrypt/crypt.3236
-rw-r--r--secure/lib/libcrypt/crypt.c697
-rw-r--r--secure/lib/libcrypt/test/Makefile48
-rw-r--r--secure/lib/libcrypt/test/README10
-rw-r--r--secure/lib/libcrypt/test/cert.c208
-rw-r--r--secure/lib/libcrypt/test/cert.input179
-rw-r--r--secure/lib/libcrypt/test/speedcrypt.c76
-rw-r--r--secure/lib/libtelnet/Makefile59
-rw-r--r--secure/lib/libtelnet/auth-proto.h96
-rw-r--r--secure/lib/libtelnet/auth.c671
-rw-r--r--secure/lib/libtelnet/auth.h87
-rw-r--r--secure/lib/libtelnet/enc-proto.h120
-rw-r--r--secure/lib/libtelnet/enc_des.c724
-rw-r--r--secure/lib/libtelnet/encrypt.c1000
-rw-r--r--secure/lib/libtelnet/encrypt.h108
-rw-r--r--secure/lib/libtelnet/kerberos.c555
-rw-r--r--secure/lib/libtelnet/kerberos5.c764
-rw-r--r--secure/lib/libtelnet/key-proto.h71
-rw-r--r--secure/lib/libtelnet/krb4encpwd.c446
-rw-r--r--secure/lib/libtelnet/misc.c94
-rw-r--r--secure/lib/libtelnet/read_password.c145
-rw-r--r--secure/lib/libtelnet/rsaencpwd.c492
-rw-r--r--secure/lib/libtelnet/spx.c588
-rw-r--r--secure/libexec/Makefile6
-rw-r--r--secure/libexec/Makefile.inc6
-rw-r--r--secure/libexec/telnetd/Makefile58
-rw-r--r--secure/libexec/telnetd/defs.h296
-rw-r--r--secure/libexec/telnetd/ext.h242
-rw-r--r--secure/libexec/telnetd/pathnames.h55
-rw-r--r--secure/libexec/telnetd/slc.c491
-rw-r--r--secure/libexec/telnetd/state.c1612
-rw-r--r--secure/libexec/telnetd/sys_term.c2319
-rw-r--r--secure/libexec/telnetd/telnetd.8607
-rw-r--r--secure/libexec/telnetd/telnetd.c1593
-rw-r--r--secure/libexec/telnetd/telnetd.h49
-rw-r--r--secure/libexec/telnetd/termstat.c669
-rw-r--r--secure/libexec/telnetd/utility.c1192
-rw-r--r--secure/sbin/Makefile6
-rw-r--r--secure/sbin/Makefile.inc6
-rw-r--r--secure/sbin/init/Makefile12
-rw-r--r--secure/usr.bin/Makefile6
-rw-r--r--secure/usr.bin/Makefile.inc4
-rw-r--r--secure/usr.bin/bdes/Makefile10
-rw-r--r--secure/usr.bin/bdes/bdes.1304
-rw-r--r--secure/usr.bin/bdes/bdes.c1046
-rw-r--r--secure/usr.bin/bdes/bdes.ps2945
-rw-r--r--secure/usr.bin/telnet/Makefile91
-rw-r--r--secure/usr.bin/telnet/README566
-rw-r--r--secure/usr.bin/telnet/commands.c2945
-rw-r--r--secure/usr.bin/telnet/externs.h482
-rw-r--r--secure/usr.bin/telnet/krb4-proto.h207
-rw-r--r--secure/usr.bin/telnet/main.c322
-rw-r--r--secure/usr.bin/telnet/network.c177
-rw-r--r--secure/usr.bin/telnet/ring.c362
-rw-r--r--secure/usr.bin/telnet/ring.h105
-rw-r--r--secure/usr.bin/telnet/sys_bsd.c1220
-rw-r--r--secure/usr.bin/telnet/telnet.11366
-rw-r--r--secure/usr.bin/telnet/telnet.c2650
-rw-r--r--secure/usr.bin/telnet/terminal.c240
-rw-r--r--secure/usr.bin/telnet/tn3270.c411
-rw-r--r--secure/usr.bin/telnet/types.h52
-rw-r--r--secure/usr.bin/telnet/utilities.c939
-rw-r--r--secure/usr.sbin/xntpd/lib/authdes.c869
-rw-r--r--share/doc/FAQ/Makefile2
-rw-r--r--share/doc/FAQ/freebsd-faq.sgml2
-rw-r--r--share/doc/Makefile2
-rw-r--r--share/doc/handbook/Makefile2
-rw-r--r--share/doc/handbook/authors.sgml2
-rw-r--r--share/doc/handbook/basics.sgml2
-rw-r--r--share/doc/handbook/bibliography.sgml2
-rw-r--r--share/doc/handbook/boothelp.sgml2
-rw-r--r--share/doc/handbook/booting.sgml2
-rw-r--r--share/doc/handbook/contrib.sgml2
-rw-r--r--share/doc/handbook/crypt.sgml2
-rw-r--r--share/doc/handbook/ctm.sgml2
-rw-r--r--share/doc/handbook/current.sgml4
-rw-r--r--share/doc/handbook/dialup.sgml2
-rw-r--r--share/doc/handbook/diskless.sgml2
-rw-r--r--share/doc/handbook/dma.sgml2
-rw-r--r--share/doc/handbook/eresources.sgml2
-rw-r--r--share/doc/handbook/esdi.sgml2
-rw-r--r--share/doc/handbook/firewalls.sgml2
-rw-r--r--share/doc/handbook/glossary.sgml2
-rw-r--r--share/doc/handbook/handbook.sgml2
-rw-r--r--share/doc/handbook/history.sgml2
-rw-r--r--share/doc/handbook/hw.sgml2
-rw-r--r--share/doc/handbook/install.sgml2
-rw-r--r--share/doc/handbook/kerberos.sgml2
-rw-r--r--share/doc/handbook/kernelconfig.sgml2
-rw-r--r--share/doc/handbook/kerneldebug.sgml2
-rw-r--r--share/doc/handbook/memoryuse.sgml2
-rw-r--r--share/doc/handbook/mirrors.sgml2
-rw-r--r--share/doc/handbook/nfs.sgml2
-rw-r--r--share/doc/handbook/nutshell.sgml2
-rw-r--r--share/doc/handbook/porting.sgml6
-rw-r--r--share/doc/handbook/ports.sgml2
-rw-r--r--share/doc/handbook/ppp.sgml2
-rw-r--r--share/doc/handbook/printing.sgml2
-rw-r--r--share/doc/handbook/relnotes.sgml2
-rw-r--r--share/doc/handbook/routing.sgml2
-rw-r--r--share/doc/handbook/scsi.sgml2
-rw-r--r--share/doc/handbook/sections.sgml2
-rw-r--r--share/doc/handbook/skey.sgml2
-rw-r--r--share/doc/handbook/slipc.sgml2
-rw-r--r--share/doc/handbook/submitters.sgml4
-rw-r--r--share/doc/handbook/sup.sgml2
-rw-r--r--share/doc/handbook/troubleshooting.sgml2
-rw-r--r--share/doc/handbook/userppp.sgml2
-rw-r--r--share/doc/iso/ucb/program.nr4
-rw-r--r--share/doc/iso/wisc/appendix_a.nr2
-rw-r--r--share/doc/iso/wisc/appendix_b.nr2
-rw-r--r--share/doc/iso/wisc/debug.nr4
-rw-r--r--share/doc/iso/wisc/errors.nr4
-rw-r--r--share/doc/iso/wisc/parts.nr4
-rw-r--r--share/doc/iso/wisc/program.nr4
-rw-r--r--share/doc/iso/wiscman/cons.44
-rw-r--r--share/doc/iso/wiscman/if.4n4
-rw-r--r--share/doc/iso/wiscman/rvd.4p4
-rw-r--r--share/doc/papers/Makefile2
-rw-r--r--share/doc/papers/beyond4.3/Makefile2
-rw-r--r--share/doc/papers/diskperf/Makefile2
-rw-r--r--share/doc/papers/fsinterface/Makefile2
-rw-r--r--share/doc/papers/kernmalloc/Makefile2
-rw-r--r--share/doc/papers/kerntune/Makefile2
-rw-r--r--share/doc/papers/memfs/Makefile2
-rw-r--r--share/doc/papers/newvm/Makefile2
-rw-r--r--share/doc/papers/nqnfs/Makefile2
-rw-r--r--share/doc/papers/px/Makefile2
-rw-r--r--share/doc/papers/relengr/Makefile2
-rw-r--r--share/doc/papers/sysperf/Makefile2
-rw-r--r--share/doc/psd/05.sysman/Makefile2
-rw-r--r--share/doc/psd/12.make/Makefile2
-rw-r--r--share/doc/psd/18.gprof/Makefile2
-rw-r--r--share/doc/psd/19.curses/Makefile2
-rw-r--r--share/doc/psd/20.ipctut/Makefile2
-rw-r--r--share/doc/psd/21.ipc/Makefile2
-rw-r--r--share/doc/psd/22.rpcgen/Makefile2
-rw-r--r--share/doc/psd/23.rpc/Makefile2
-rw-r--r--share/doc/psd/24.xdr/Makefile2
-rw-r--r--share/doc/psd/25.xdrrfc/Makefile2
-rw-r--r--share/doc/psd/26.rpcrfc/Makefile2
-rw-r--r--share/doc/psd/27.nfsrpc/Makefile2
-rw-r--r--share/doc/psd/Makefile2
-rw-r--r--share/doc/psd/contents/Makefile2
-rw-r--r--share/doc/psd/title/Makefile2
-rw-r--r--share/doc/smm/01.setup/Makefile2
-rw-r--r--share/doc/smm/02.config/Makefile2
-rw-r--r--share/doc/smm/03.fsck/Makefile2
-rw-r--r--share/doc/smm/04.quotas/Makefile2
-rw-r--r--share/doc/smm/05.fastfs/Makefile2
-rw-r--r--share/doc/smm/06.nfs/Makefile2
-rw-r--r--share/doc/smm/07.lpd/Makefile2
-rw-r--r--share/doc/smm/08.sendmailop/Makefile2
-rw-r--r--share/doc/smm/09.sendmail/Makefile2
-rw-r--r--share/doc/smm/11.timedop/Makefile2
-rw-r--r--share/doc/smm/12.timed/Makefile2
-rw-r--r--share/doc/smm/18.net/Makefile2
-rw-r--r--share/doc/smm/Makefile2
-rw-r--r--share/doc/smm/contents/Makefile2
-rw-r--r--share/doc/smm/title/Makefile2
-rw-r--r--share/doc/usd/04.csh/Makefile2
-rw-r--r--share/doc/usd/07.mail/Makefile2
-rw-r--r--share/doc/usd/10.exref/Makefile2
-rw-r--r--share/doc/usd/11.vitut/Makefile2
-rw-r--r--share/doc/usd/12.vi/Makefile2
-rw-r--r--share/doc/usd/13.viref/Makefile2
-rw-r--r--share/doc/usd/18.msdiffs/Makefile2
-rw-r--r--share/doc/usd/19.memacros/Makefile2
-rw-r--r--share/doc/usd/20.meref/Makefile2
-rw-r--r--share/doc/usd/30.rogue/Makefile2
-rw-r--r--share/doc/usd/31.trek/Makefile2
-rw-r--r--share/doc/usd/Makefile2
-rw-r--r--share/doc/usd/contents/Makefile2
-rw-r--r--share/doc/usd/title/Makefile2
-rw-r--r--share/examples/FreeBSD_version/Makefile2
-rw-r--r--share/examples/Makefile2
-rw-r--r--share/examples/etc/README.examples2
-rw-r--r--share/man/man0/Makefile2
-rw-r--r--share/man/man4/inet.42
-rw-r--r--share/man/man4/lkm.42
-rw-r--r--share/man/man4/man4.i386/cy.42
-rw-r--r--share/man/man4/man4.i386/dgb.42
-rw-r--r--share/man/man4/man4.i386/ed.42
-rw-r--r--share/man/man4/man4.i386/fe.42
-rw-r--r--share/man/man4/man4.i386/npx.42
-rw-r--r--share/man/man4/man4.i386/si.42
-rw-r--r--share/man/man4/man4.i386/sio.42
-rw-r--r--share/man/man4/snp.42
-rw-r--r--share/man/man4/tcp.42
-rw-r--r--share/man/man4/ttcp.42
-rw-r--r--share/man/man4/yp.42
-rw-r--r--share/man/man5/a.out.52
-rw-r--r--share/man/man5/ethers.52
-rw-r--r--share/man/man5/group.52
-rw-r--r--share/man/man5/link.52
-rw-r--r--share/man/man5/procfs.52
-rw-r--r--share/mk/Makefile2
-rw-r--r--share/mk/bsd.dep.mk2
-rw-r--r--share/mk/bsd.doc.mk2
-rw-r--r--share/mk/bsd.info.mk2
-rw-r--r--share/mk/bsd.kmod.mk2
-rw-r--r--share/mk/bsd.lib.mk2
-rw-r--r--share/mk/bsd.man.mk2
-rw-r--r--share/mk/bsd.own.mk2
-rw-r--r--share/mk/bsd.port.mk2
-rw-r--r--share/mk/bsd.port.subdir.mk2
-rw-r--r--share/mk/bsd.prog.mk2
-rw-r--r--share/mk/bsd.sgml.mk2
-rw-r--r--share/mk/bsd.subdir.mk2
-rw-r--r--share/mk/sys.mk2
-rw-r--r--share/sgml/FreeBSD/Makefile2
-rw-r--r--share/sgml/FreeBSD/Makefile.inc2
-rw-r--r--share/sgml/FreeBSD/dtd/Makefile2
-rw-r--r--share/sgml/FreeBSD/lib/Makefile2
-rw-r--r--share/sgml/FreeBSD/rep/Makefile2
-rw-r--r--share/sgml/Makefile2
-rw-r--r--share/sgml/Makefile.inc2
-rw-r--r--share/syscons/Makefile2
-rw-r--r--share/syscons/fonts/INDEX.fonts2
-rw-r--r--share/syscons/fonts/Makefile2
-rw-r--r--share/syscons/keymaps/INDEX.keymaps2
-rw-r--r--share/zoneinfo/Makefile2
-rw-r--r--sys/Makefile2
-rw-r--r--sys/conf/newvers.sh4
-rw-r--r--sys/conf/nfsswapkernel.c2
-rw-r--r--sys/conf/param.c2
-rw-r--r--sys/conf/systags.sh2
-rw-r--r--sys/ddb/db_access.c2
-rw-r--r--sys/ddb/db_access.h2
-rw-r--r--sys/ddb/db_aout.c2
-rw-r--r--sys/ddb/db_break.c2
-rw-r--r--sys/ddb/db_break.h2
-rw-r--r--sys/ddb/db_command.c2
-rw-r--r--sys/ddb/db_command.h2
-rw-r--r--sys/ddb/db_examine.c2
-rw-r--r--sys/ddb/db_expr.c2
-rw-r--r--sys/ddb/db_input.c2
-rw-r--r--sys/ddb/db_lex.c2
-rw-r--r--sys/ddb/db_lex.h2
-rw-r--r--sys/ddb/db_output.c2
-rw-r--r--sys/ddb/db_output.h2
-rw-r--r--sys/ddb/db_print.c2
-rw-r--r--sys/ddb/db_ps.c2
-rw-r--r--sys/ddb/db_run.c2
-rw-r--r--sys/ddb/db_sym.c2
-rw-r--r--sys/ddb/db_sym.h2
-rw-r--r--sys/ddb/db_trap.c2
-rw-r--r--sys/ddb/db_variables.c2
-rw-r--r--sys/ddb/db_variables.h2
-rw-r--r--sys/ddb/db_watch.c2
-rw-r--r--sys/ddb/db_watch.h2
-rw-r--r--sys/ddb/db_write_cmd.c2
-rw-r--r--sys/ddb/ddb.h2
-rw-r--r--sys/dev/aic7xxx/aic7xxx.seq2
-rw-r--r--sys/dev/aic7xxx/aic7xxx_asm.c2
-rw-r--r--sys/gnu/i386/fpemul/control_w.h2
-rw-r--r--sys/gnu/i386/fpemul/div_small.s2
-rw-r--r--sys/gnu/i386/fpemul/errors.c2
-rw-r--r--sys/gnu/i386/fpemul/exception.h2
-rw-r--r--sys/gnu/i386/fpemul/fpu_arith.c2
-rw-r--r--sys/gnu/i386/fpemul/fpu_asm.h2
-rw-r--r--sys/gnu/i386/fpemul/fpu_aux.c2
-rw-r--r--sys/gnu/i386/fpemul/fpu_emu.h2
-rw-r--r--sys/gnu/i386/fpemul/fpu_entry.c2
-rw-r--r--sys/gnu/i386/fpemul/fpu_etc.c2
-rw-r--r--sys/gnu/i386/fpemul/fpu_proto.h2
-rw-r--r--sys/gnu/i386/fpemul/fpu_system.h2
-rw-r--r--sys/gnu/i386/fpemul/fpu_trig.c2
-rw-r--r--sys/gnu/i386/fpemul/get_address.c2
-rw-r--r--sys/gnu/i386/fpemul/load_store.c2
-rw-r--r--sys/gnu/i386/fpemul/math_emu.h2
-rw-r--r--sys/gnu/i386/fpemul/poly_2xm1.c2
-rw-r--r--sys/gnu/i386/fpemul/poly_atan.c2
-rw-r--r--sys/gnu/i386/fpemul/poly_div.s2
-rw-r--r--sys/gnu/i386/fpemul/poly_l2.c2
-rw-r--r--sys/gnu/i386/fpemul/poly_mul64.s2
-rw-r--r--sys/gnu/i386/fpemul/poly_sin.c2
-rw-r--r--sys/gnu/i386/fpemul/poly_tan.c2
-rw-r--r--sys/gnu/i386/fpemul/polynomial.s2
-rw-r--r--sys/gnu/i386/fpemul/reg_add_sub.c2
-rw-r--r--sys/gnu/i386/fpemul/reg_compare.c2
-rw-r--r--sys/gnu/i386/fpemul/reg_constant.h2
-rw-r--r--sys/gnu/i386/fpemul/reg_div.s2
-rw-r--r--sys/gnu/i386/fpemul/reg_ld_str.c2
-rw-r--r--sys/gnu/i386/fpemul/reg_mul.c2
-rw-r--r--sys/gnu/i386/fpemul/reg_norm.s2
-rw-r--r--sys/gnu/i386/fpemul/reg_round.s2
-rw-r--r--sys/gnu/i386/fpemul/reg_u_add.s2
-rw-r--r--sys/gnu/i386/fpemul/reg_u_div.s2
-rw-r--r--sys/gnu/i386/fpemul/reg_u_mul.s2
-rw-r--r--sys/gnu/i386/fpemul/reg_u_sub.s2
-rw-r--r--sys/gnu/i386/fpemul/status_w.h2
-rw-r--r--sys/gnu/i386/fpemul/version.h2
-rw-r--r--sys/gnu/i386/fpemul/wm_shrx.s2
-rw-r--r--sys/gnu/i386/fpemul/wm_sqrt.s2
-rw-r--r--sys/gnu/i386/isa/dgb.c2
-rw-r--r--sys/gnu/i386/isa/dgreg.h2
-rw-r--r--sys/gnu/i386/isa/nic3008.c11
-rw-r--r--sys/gnu/i386/isa/nic3008.h11
-rw-r--r--sys/gnu/i386/isa/nic3009.c11
-rw-r--r--sys/gnu/i386/isa/nic3009.h11
-rw-r--r--sys/gnu/i386/isa/niccyreg.h11
-rw-r--r--sys/gnu/isdn/if_ii.c7
-rw-r--r--sys/gnu/isdn/iispy.c11
-rw-r--r--sys/gnu/isdn/iitel.c11
-rw-r--r--sys/gnu/isdn/iitty.c11
-rw-r--r--sys/gnu/isdn/isdn.c11
-rw-r--r--sys/gnu/isdn/isdn_ioctl.h9
-rw-r--r--sys/i386/Makefile2
-rw-r--r--sys/i386/apm/apm.c2
-rw-r--r--sys/i386/apm/apm_init/Makefile2
-rw-r--r--sys/i386/apm/apm_init/apm_init.S2
-rw-r--r--sys/i386/apm/apm_init/bin2asm.c2
-rw-r--r--sys/i386/apm/apm_init/real_prot.S2
-rw-r--r--sys/i386/apm/apm_init/real_prot.h2
-rw-r--r--sys/i386/apm/apm_init/rmaouthdr2
-rw-r--r--sys/i386/apm/apm_init/table.c2
-rw-r--r--sys/i386/apm/apm_setup.h2
-rw-r--r--sys/i386/apm/apm_setup.s2
-rw-r--r--sys/i386/boot/Makefile2
-rw-r--r--sys/i386/boot/biosboot/Makefile2
-rw-r--r--sys/i386/boot/biosboot/README.386BSD2
-rw-r--r--sys/i386/boot/biosboot/README.MACH2
-rw-r--r--sys/i386/boot/biosboot/README.serial2
-rw-r--r--sys/i386/boot/biosboot/asm.S2
-rw-r--r--sys/i386/boot/biosboot/asm.h2
-rw-r--r--sys/i386/boot/biosboot/bios.S2
-rw-r--r--sys/i386/boot/biosboot/boot.c2
-rw-r--r--sys/i386/boot/biosboot/boot.h2
-rw-r--r--sys/i386/boot/biosboot/boot2.S2
-rw-r--r--sys/i386/boot/biosboot/disk.c2
-rw-r--r--sys/i386/boot/biosboot/io.c2
-rw-r--r--sys/i386/boot/biosboot/probe_keyboard.c2
-rw-r--r--sys/i386/boot/biosboot/serial.S2
-rw-r--r--sys/i386/boot/biosboot/start.S2
-rw-r--r--sys/i386/boot/biosboot/sys.c2
-rw-r--r--sys/i386/boot/biosboot/table.c2
-rw-r--r--sys/i386/boot/dosboot/Makefile2
-rw-r--r--sys/i386/boot/dosboot/ansi.h2
-rw-r--r--sys/i386/boot/dosboot/boot.c2
-rw-r--r--sys/i386/boot/dosboot/boot.h2
-rw-r--r--sys/i386/boot/dosboot/bootinfo.h2
-rw-r--r--sys/i386/boot/dosboot/cdefs.h2
-rw-r--r--sys/i386/boot/dosboot/dinode.h2
-rw-r--r--sys/i386/boot/dosboot/dir.h2
-rw-r--r--sys/i386/boot/dosboot/disk.c2
-rw-r--r--sys/i386/boot/dosboot/disklabe.h2
-rw-r--r--sys/i386/boot/dosboot/dkbad.h2
-rw-r--r--sys/i386/boot/dosboot/endian.h2
-rw-r--r--sys/i386/boot/dosboot/exec.h2
-rw-r--r--sys/i386/boot/dosboot/fs.h2
-rw-r--r--sys/i386/boot/dosboot/imgact.h2
-rw-r--r--sys/i386/boot/dosboot/inode.h2
-rw-r--r--sys/i386/boot/dosboot/mexec.h2
-rw-r--r--sys/i386/boot/dosboot/param.h2
-rw-r--r--sys/i386/boot/dosboot/quota.h2
-rw-r--r--sys/i386/boot/dosboot/reboot.h2
-rw-r--r--sys/i386/boot/dosboot/sys.c2
-rw-r--r--sys/i386/boot/dosboot/syslimit.h2
-rw-r--r--sys/i386/boot/dosboot/sysparam.h2
-rw-r--r--sys/i386/boot/dosboot/types.h2
-rw-r--r--sys/i386/boot/kzipboot/Makefile2
-rw-r--r--sys/i386/boot/netboot/3c509.c2
-rw-r--r--sys/i386/conf/BOOTMFS120
-rw-r--r--sys/i386/conf/GENERIC2
-rw-r--r--sys/i386/conf/LINT2
-rw-r--r--sys/i386/conf/Makefile.i3862
-rw-r--r--sys/i386/conf/devices.i3862
-rw-r--r--sys/i386/conf/files.i3862
-rw-r--r--sys/i386/eisa/eisaconf.c2
-rw-r--r--sys/i386/eisa/eisaconf.h2
-rw-r--r--sys/i386/eisa/eisadevs.c2
-rw-r--r--sys/i386/i386/autoconf.c2
-rw-r--r--sys/i386/i386/conf.c2
-rw-r--r--sys/i386/i386/cons.c2
-rw-r--r--sys/i386/i386/cons.h2
-rw-r--r--sys/i386/i386/db_disasm.c2
-rw-r--r--sys/i386/i386/db_interface.c2
-rw-r--r--sys/i386/i386/db_trace.c2
-rw-r--r--sys/i386/i386/dkbad.c2
-rw-r--r--sys/i386/i386/exception.s2
-rw-r--r--sys/i386/i386/genassym.c2
-rw-r--r--sys/i386/i386/in_cksum.c2
-rw-r--r--sys/i386/i386/locore.s2
-rw-r--r--sys/i386/i386/machdep.c2
-rw-r--r--sys/i386/i386/math_emu.h2
-rw-r--r--sys/i386/i386/math_emulate.c2
-rw-r--r--sys/i386/i386/mem.c2
-rw-r--r--sys/i386/i386/microtime.s2
-rw-r--r--sys/i386/i386/ns_cksum.c2
-rw-r--r--sys/i386/i386/pmap.c2
-rw-r--r--sys/i386/i386/procfs_machdep.c2
-rw-r--r--sys/i386/i386/support.s2
-rw-r--r--sys/i386/i386/swapgeneric.c2
-rw-r--r--sys/i386/i386/swtch.s2
-rw-r--r--sys/i386/i386/symbols.raw2
-rw-r--r--sys/i386/i386/sys_machdep.c2
-rw-r--r--sys/i386/i386/trap.c2
-rw-r--r--sys/i386/i386/userconfig.c4
-rw-r--r--sys/i386/i386/vm_machdep.c2
-rw-r--r--sys/i386/ibcs2/coff.h2
-rw-r--r--sys/i386/ibcs2/ibcs2.h2
-rw-r--r--sys/i386/ibcs2/ibcs2_dummy.c2
-rw-r--r--sys/i386/ibcs2/ibcs2_file.c2
-rw-r--r--sys/i386/ibcs2/ibcs2_ioctl.c2
-rw-r--r--sys/i386/ibcs2/ibcs2_ipc.c2
-rw-r--r--sys/i386/ibcs2/ibcs2_isc.c2
-rw-r--r--sys/i386/ibcs2/ibcs2_misc.c2
-rw-r--r--sys/i386/ibcs2/ibcs2_signal.c2
-rw-r--r--sys/i386/ibcs2/ibcs2_socksys.c2
-rw-r--r--sys/i386/ibcs2/ibcs2_socksys.h2
-rw-r--r--sys/i386/ibcs2/ibcs2_stats.c2
-rw-r--r--sys/i386/ibcs2/ibcs2_sysent.c2
-rw-r--r--sys/i386/ibcs2/ibcs2_sysi86.c2
-rw-r--r--sys/i386/ibcs2/ibcs2_xenix.c2
-rw-r--r--sys/i386/ibcs2/imgact_coff.c2
-rw-r--r--sys/i386/include/ansi.h2
-rw-r--r--sys/i386/include/apm_bios.h2
-rw-r--r--sys/i386/include/apm_segments.h2
-rw-r--r--sys/i386/include/asmacros.h2
-rw-r--r--sys/i386/include/bootinfo.h2
-rw-r--r--sys/i386/include/cons.h2
-rw-r--r--sys/i386/include/console.h2
-rw-r--r--sys/i386/include/cpu.h2
-rw-r--r--sys/i386/include/cpufunc.h2
-rw-r--r--sys/i386/include/cputypes.h2
-rw-r--r--sys/i386/include/db_machdep.h2
-rw-r--r--sys/i386/include/devconf.h2
-rw-r--r--sys/i386/include/endian.h2
-rw-r--r--sys/i386/include/exec.h2
-rw-r--r--sys/i386/include/float.h2
-rw-r--r--sys/i386/include/floatingpoint.h2
-rw-r--r--sys/i386/include/frame.h2
-rw-r--r--sys/i386/include/ieeefp.h2
-rw-r--r--sys/i386/include/ioctl_ctx.h2
-rw-r--r--sys/i386/include/ioctl_fd.h2
-rw-r--r--sys/i386/include/ipl.h2
-rw-r--r--sys/i386/include/limits.h2
-rw-r--r--sys/i386/include/lpt.h2
-rw-r--r--sys/i386/include/md_var.h2
-rw-r--r--sys/i386/include/mouse.h2
-rw-r--r--sys/i386/include/mtpr.h2
-rw-r--r--sys/i386/include/npx.h2
-rw-r--r--sys/i386/include/param.h2
-rw-r--r--sys/i386/include/pc/display.h2
-rw-r--r--sys/i386/include/pc/msdos.h2
-rw-r--r--sys/i386/include/pcaudioio.h2
-rw-r--r--sys/i386/include/pcb.h2
-rw-r--r--sys/i386/include/pmap.h2
-rw-r--r--sys/i386/include/proc.h2
-rw-r--r--sys/i386/include/profile.h2
-rw-r--r--sys/i386/include/psl.h2
-rw-r--r--sys/i386/include/pte.h2
-rw-r--r--sys/i386/include/ptrace.h2
-rw-r--r--sys/i386/include/reg.h2
-rw-r--r--sys/i386/include/reloc.h2
-rw-r--r--sys/i386/include/segments.h2
-rw-r--r--sys/i386/include/si.h2
-rw-r--r--sys/i386/include/signal.h2
-rw-r--r--sys/i386/include/speaker.h2
-rw-r--r--sys/i386/include/specialreg.h2
-rw-r--r--sys/i386/include/spl.h2
-rw-r--r--sys/i386/include/stdarg.h2
-rw-r--r--sys/i386/include/sysarch.h2
-rw-r--r--sys/i386/include/trap.h2
-rw-r--r--sys/i386/include/tss.h2
-rw-r--r--sys/i386/include/types.h2
-rw-r--r--sys/i386/include/ultrasound.h2
-rw-r--r--sys/i386/include/varargs.h2
-rw-r--r--sys/i386/include/vmparam.h2
-rw-r--r--sys/i386/isa/README.le2
-rw-r--r--sys/i386/isa/aha1542.c2
-rw-r--r--sys/i386/isa/aha1742.c2
-rw-r--r--sys/i386/isa/aic6360.c2
-rw-r--r--sys/i386/isa/aic7770.c2
-rw-r--r--sys/i386/isa/asc.c2
-rw-r--r--sys/i386/isa/ascreg.h2
-rw-r--r--sys/i386/isa/bt742a.c2
-rw-r--r--sys/i386/isa/clock.c2
-rw-r--r--sys/i386/isa/ctx.c2
-rw-r--r--sys/i386/isa/ctxreg.h2
-rw-r--r--sys/i386/isa/cy.c2
-rw-r--r--sys/i386/isa/cyreg.h2
-rw-r--r--sys/i386/isa/diskslice_machdep.c2
-rw-r--r--sys/i386/isa/elink.c2
-rw-r--r--sys/i386/isa/elink.h2
-rw-r--r--sys/i386/isa/fd.c2
-rw-r--r--sys/i386/isa/fdc.h2
-rw-r--r--sys/i386/isa/fdreg.h2
-rw-r--r--sys/i386/isa/ft.c2
-rw-r--r--sys/i386/isa/ic/cd1400.h2
-rw-r--r--sys/i386/isa/ic/i8042.h2
-rw-r--r--sys/i386/isa/ic/i8237.h2
-rw-r--r--sys/i386/isa/ic/i82586.h2
-rw-r--r--sys/i386/isa/ic/lemac.h2
-rw-r--r--sys/i386/isa/ic/nec765.h2
-rw-r--r--sys/i386/isa/ic/ns16450.h2
-rw-r--r--sys/i386/isa/ic/ns16550.h2
-rw-r--r--sys/i386/isa/icu.h2
-rw-r--r--sys/i386/isa/icu.s2
-rw-r--r--sys/i386/isa/if_ed.c2
-rw-r--r--sys/i386/isa/if_edreg.h2
-rw-r--r--sys/i386/isa/if_eg.c2
-rw-r--r--sys/i386/isa/if_egreg.h2
-rw-r--r--sys/i386/isa/if_el.c2
-rw-r--r--sys/i386/isa/if_elreg.h2
-rw-r--r--sys/i386/isa/if_ep.c2
-rw-r--r--sys/i386/isa/if_epreg.h2
-rw-r--r--sys/i386/isa/if_ie.c2
-rw-r--r--sys/i386/isa/if_ie507.h2
-rw-r--r--sys/i386/isa/if_iereg.h2
-rw-r--r--sys/i386/isa/if_ix.c2
-rw-r--r--sys/i386/isa/if_ixreg.h2
-rw-r--r--sys/i386/isa/if_le.c2
-rw-r--r--sys/i386/isa/if_ze.c2
-rw-r--r--sys/i386/isa/if_zp.c2
-rw-r--r--sys/i386/isa/if_zpreg.h2
-rw-r--r--sys/i386/isa/isa.c2
-rw-r--r--sys/i386/isa/isa.h2
-rw-r--r--sys/i386/isa/isa_device.h2
-rw-r--r--sys/i386/isa/iso8859.font2
-rw-r--r--sys/i386/isa/kbd.h2
-rw-r--r--sys/i386/isa/kbdtables.h2
-rw-r--r--sys/i386/isa/lpt.c2
-rw-r--r--sys/i386/isa/lptreg.h2
-rw-r--r--sys/i386/isa/mcd.c2
-rw-r--r--sys/i386/isa/mcdreg.h2
-rw-r--r--sys/i386/isa/mse.c2
-rw-r--r--sys/i386/isa/npx.c2
-rw-r--r--sys/i386/isa/pcaudio.c2
-rw-r--r--sys/i386/isa/pcibus.c2
-rw-r--r--sys/i386/isa/readMBR.c2
-rw-r--r--sys/i386/isa/rtc.h2
-rw-r--r--sys/i386/isa/scd.c2
-rw-r--r--sys/i386/isa/scdreg.h2
-rw-r--r--sys/i386/isa/seagate.c2
-rw-r--r--sys/i386/isa/si.c2
-rw-r--r--sys/i386/isa/si_code.c2
-rw-r--r--sys/i386/isa/sio.c2
-rw-r--r--sys/i386/isa/sioreg.h2
-rw-r--r--sys/i386/isa/sireg.h2
-rw-r--r--sys/i386/isa/sound/sound.doc2
-rw-r--r--sys/i386/isa/sound/soundcard.c2
-rw-r--r--sys/i386/isa/spkr.c2
-rw-r--r--sys/i386/isa/syscons.c2
-rw-r--r--sys/i386/isa/syscons.h2
-rw-r--r--sys/i386/isa/timerreg.h2
-rw-r--r--sys/i386/isa/ultra14f.c2
-rw-r--r--sys/i386/isa/vector.s2
-rw-r--r--sys/i386/isa/wd.c2
-rw-r--r--sys/i386/isa/wdreg.h2
-rw-r--r--sys/i386/isa/wt.c2
-rw-r--r--sys/i386/isa/wtreg.h2
-rw-r--r--sys/i386/linux/imgact_linux.c2
-rw-r--r--sys/i386/linux/linux.h2
-rw-r--r--sys/i386/linux/linux_dummy.c2
-rw-r--r--sys/i386/linux/linux_file.c2
-rw-r--r--sys/i386/linux/linux_generic.c2
-rw-r--r--sys/i386/linux/linux_ioctl.c2
-rw-r--r--sys/i386/linux/linux_ipc.c2
-rw-r--r--sys/i386/linux/linux_misc.c2
-rw-r--r--sys/i386/linux/linux_signal.c2
-rw-r--r--sys/i386/linux/linux_socket.c2
-rw-r--r--sys/i386/linux/linux_stats.c2
-rw-r--r--sys/i386/linux/linux_sysent.c2
-rw-r--r--sys/i386/scsi/93cx6.c2
-rw-r--r--sys/i386/scsi/93cx6.h2
-rw-r--r--sys/i386/scsi/aic7xxx.c2
-rw-r--r--sys/i386/scsi/aic7xxx.h2
-rw-r--r--sys/isofs/cd9660/TODO2
-rw-r--r--sys/isofs/cd9660/cd9660_bmap.c2
-rw-r--r--sys/isofs/cd9660/cd9660_lookup.c2
-rw-r--r--sys/isofs/cd9660/cd9660_node.c2
-rw-r--r--sys/isofs/cd9660/cd9660_node.h2
-rw-r--r--sys/isofs/cd9660/cd9660_rrip.c2
-rw-r--r--sys/isofs/cd9660/cd9660_rrip.h2
-rw-r--r--sys/isofs/cd9660/cd9660_util.c2
-rw-r--r--sys/isofs/cd9660/cd9660_vfsops.c2
-rw-r--r--sys/isofs/cd9660/cd9660_vnops.c2
-rw-r--r--sys/isofs/cd9660/iso.h2
-rw-r--r--sys/isofs/cd9660/iso_rrip.h2
-rw-r--r--sys/kern/Make.tags.inc2
-rw-r--r--sys/kern/imgact_aout.c2
-rw-r--r--sys/kern/imgact_gzip.c2
-rw-r--r--sys/kern/imgact_shell.c2
-rw-r--r--sys/kern/inflate.c2
-rw-r--r--sys/kern/init_main.c2
-rw-r--r--sys/kern/init_sysent.c2
-rw-r--r--sys/kern/kern_acct.c2
-rw-r--r--sys/kern/kern_clock.c2
-rw-r--r--sys/kern/kern_descrip.c2
-rw-r--r--sys/kern/kern_devconf.c2
-rw-r--r--sys/kern/kern_exec.c2
-rw-r--r--sys/kern/kern_exit.c2
-rw-r--r--sys/kern/kern_fork.c2
-rw-r--r--sys/kern/kern_ktrace.c2
-rw-r--r--sys/kern/kern_lkm.c2
-rw-r--r--sys/kern/kern_lockf.c2
-rw-r--r--sys/kern/kern_malloc.c2
-rw-r--r--sys/kern/kern_physio.c2
-rw-r--r--sys/kern/kern_proc.c2
-rw-r--r--sys/kern/kern_prot.c2
-rw-r--r--sys/kern/kern_resource.c2
-rw-r--r--sys/kern/kern_sig.c2
-rw-r--r--sys/kern/kern_subr.c2
-rw-r--r--sys/kern/kern_synch.c2
-rw-r--r--sys/kern/kern_sysctl.c2
-rw-r--r--sys/kern/kern_time.c2
-rw-r--r--sys/kern/kern_xxx.c2
-rw-r--r--sys/kern/makesyscalls.sh2
-rw-r--r--sys/kern/subr_autoconf.c2
-rw-r--r--sys/kern/subr_diskslice.c2
-rw-r--r--sys/kern/subr_log.c2
-rw-r--r--sys/kern/subr_prf.c2
-rw-r--r--sys/kern/subr_prof.c2
-rw-r--r--sys/kern/subr_rlist.c2
-rw-r--r--sys/kern/subr_xxx.c2
-rw-r--r--sys/kern/sys_generic.c2
-rw-r--r--sys/kern/sys_process.c2
-rw-r--r--sys/kern/sys_socket.c2
-rw-r--r--sys/kern/syscalls.c2
-rw-r--r--sys/kern/syscalls.master2
-rw-r--r--sys/kern/sysv_ipc.c2
-rw-r--r--sys/kern/sysv_msg.c2
-rw-r--r--sys/kern/sysv_sem.c2
-rw-r--r--sys/kern/sysv_shm.c2
-rw-r--r--sys/kern/tty.c2
-rw-r--r--sys/kern/tty_compat.c2
-rw-r--r--sys/kern/tty_conf.c2
-rw-r--r--sys/kern/tty_pty.c2
-rw-r--r--sys/kern/tty_subr.c2
-rw-r--r--sys/kern/tty_tb.c2
-rw-r--r--sys/kern/tty_tty.c2
-rw-r--r--sys/kern/uipc_domain.c2
-rw-r--r--sys/kern/uipc_mbuf.c2
-rw-r--r--sys/kern/uipc_proto.c2
-rw-r--r--sys/kern/uipc_socket.c2
-rw-r--r--sys/kern/uipc_socket2.c2
-rw-r--r--sys/kern/uipc_syscalls.c2
-rw-r--r--sys/kern/uipc_usrreq.c2
-rw-r--r--sys/kern/vfs_bio.c2
-rw-r--r--sys/kern/vfs_cache.c2
-rw-r--r--sys/kern/vfs_cluster.c2
-rw-r--r--sys/kern/vfs_conf.c2
-rw-r--r--sys/kern/vfs_init.c2
-rw-r--r--sys/kern/vfs_lookup.c2
-rw-r--r--sys/kern/vfs_subr.c2
-rw-r--r--sys/kern/vfs_syscalls.c2
-rw-r--r--sys/kern/vfs_vnops.c2
-rw-r--r--sys/kern/vnode_if.sh2
-rw-r--r--sys/kern/vnode_if.src2
-rw-r--r--sys/libkern/Makefile2
-rw-r--r--sys/libkern/adddi3.c2
-rw-r--r--sys/libkern/anddi3.c2
-rw-r--r--sys/libkern/ashldi3.c2
-rw-r--r--sys/libkern/ashrdi3.c2
-rw-r--r--sys/libkern/bcmp.c2
-rw-r--r--sys/libkern/cmpdi2.c2
-rw-r--r--sys/libkern/divdi3.c2
-rw-r--r--sys/libkern/ffs.c2
-rw-r--r--sys/libkern/iordi3.c2
-rw-r--r--sys/libkern/locc.c2
-rw-r--r--sys/libkern/lshldi3.c2
-rw-r--r--sys/libkern/lshrdi3.c2
-rw-r--r--sys/libkern/mcount.c2
-rw-r--r--sys/libkern/moddi3.c2
-rw-r--r--sys/libkern/muldi3.c2
-rw-r--r--sys/libkern/negdi2.c2
-rw-r--r--sys/libkern/notdi2.c2
-rw-r--r--sys/libkern/qdivrem.c2
-rw-r--r--sys/libkern/quad.h2
-rw-r--r--sys/libkern/random.c2
-rw-r--r--sys/libkern/rindex.c2
-rw-r--r--sys/libkern/scanc.c2
-rw-r--r--sys/libkern/skpc.c2
-rw-r--r--sys/libkern/strcat.c2
-rw-r--r--sys/libkern/strcmp.c2
-rw-r--r--sys/libkern/strcpy.c2
-rw-r--r--sys/libkern/strlen.c2
-rw-r--r--sys/libkern/strncpy.c2
-rw-r--r--sys/libkern/subdi3.c2
-rw-r--r--sys/libkern/ucmpdi2.c2
-rw-r--r--sys/libkern/udivdi3.c2
-rw-r--r--sys/libkern/umoddi3.c2
-rw-r--r--sys/libkern/xordi3.c2
-rw-r--r--sys/miscfs/deadfs/dead_vnops.c2
-rw-r--r--sys/miscfs/devfs/devfs_back.c2
-rw-r--r--sys/miscfs/devfs/devfs_front.c2
-rw-r--r--sys/miscfs/devfs/devfs_vfsops.c2
-rw-r--r--sys/miscfs/devfs/devfs_vnops.c2
-rw-r--r--sys/miscfs/devfs/devfsdefs.h2
-rw-r--r--sys/miscfs/fdesc/fdesc.h2
-rw-r--r--sys/miscfs/fdesc/fdesc_vfsops.c2
-rw-r--r--sys/miscfs/fdesc/fdesc_vnops.c2
-rw-r--r--sys/miscfs/fifofs/fifo.h2
-rw-r--r--sys/miscfs/fifofs/fifo_vnops.c2
-rw-r--r--sys/miscfs/kernfs/kernfs.h2
-rw-r--r--sys/miscfs/kernfs/kernfs_vfsops.c2
-rw-r--r--sys/miscfs/kernfs/kernfs_vnops.c2
-rw-r--r--sys/miscfs/nullfs/null.h2
-rw-r--r--sys/miscfs/nullfs/null_subr.c2
-rw-r--r--sys/miscfs/nullfs/null_vfsops.c2
-rw-r--r--sys/miscfs/nullfs/null_vnops.c2
-rw-r--r--sys/miscfs/portal/portal.h2
-rw-r--r--sys/miscfs/portal/portal_vfsops.c2
-rw-r--r--sys/miscfs/portal/portal_vnops.c2
-rw-r--r--sys/miscfs/procfs/README2
-rw-r--r--sys/miscfs/procfs/procfs.h2
-rw-r--r--sys/miscfs/procfs/procfs_ctl.c2
-rw-r--r--sys/miscfs/procfs/procfs_fpregs.c2
-rw-r--r--sys/miscfs/procfs/procfs_mem.c2
-rw-r--r--sys/miscfs/procfs/procfs_note.c2
-rw-r--r--sys/miscfs/procfs/procfs_regs.c2
-rw-r--r--sys/miscfs/procfs/procfs_status.c2
-rw-r--r--sys/miscfs/procfs/procfs_subr.c2
-rw-r--r--sys/miscfs/procfs/procfs_vfsops.c2
-rw-r--r--sys/miscfs/procfs/procfs_vnops.c2
-rw-r--r--sys/miscfs/specfs/spec_vnops.c2
-rw-r--r--sys/miscfs/specfs/specdev.h2
-rw-r--r--sys/miscfs/umapfs/umap.h2
-rw-r--r--sys/miscfs/umapfs/umap_subr.c2
-rw-r--r--sys/miscfs/umapfs/umap_vfsops.c2
-rw-r--r--sys/miscfs/umapfs/umap_vnops.c2
-rw-r--r--sys/miscfs/union/libc.opendir.c2
-rw-r--r--sys/miscfs/union/union.h2
-rw-r--r--sys/miscfs/union/union_subr.c2
-rw-r--r--sys/miscfs/union/union_vfsops.c2
-rw-r--r--sys/miscfs/union/union_vnops.c2
-rw-r--r--sys/msdosfs/bootsect.h2
-rw-r--r--sys/msdosfs/bpb.h2
-rw-r--r--sys/msdosfs/denode.h2
-rw-r--r--sys/msdosfs/direntry.h2
-rw-r--r--sys/msdosfs/fat.h2
-rw-r--r--sys/msdosfs/msdosfs_conv.c2
-rw-r--r--sys/msdosfs/msdosfs_denode.c2
-rw-r--r--sys/msdosfs/msdosfs_fat.c2
-rw-r--r--sys/msdosfs/msdosfs_lookup.c2
-rw-r--r--sys/msdosfs/msdosfs_vfsops.c2
-rw-r--r--sys/msdosfs/msdosfs_vnops.c2
-rw-r--r--sys/msdosfs/msdosfsmount.h2
-rw-r--r--sys/net/bpf.c2
-rw-r--r--sys/net/bpf.h2
-rw-r--r--sys/net/bpf_compat.h2
-rw-r--r--sys/net/bpf_filter.c2
-rw-r--r--sys/net/bpfdesc.h2
-rw-r--r--sys/net/if.c2
-rw-r--r--sys/net/if.h2
-rw-r--r--sys/net/if_arp.h2
-rw-r--r--sys/net/if_disc.c2
-rw-r--r--sys/net/if_dl.h2
-rw-r--r--sys/net/if_ethersubr.c2
-rw-r--r--sys/net/if_fddisubr.c2
-rw-r--r--sys/net/if_llc.h2
-rw-r--r--sys/net/if_loop.c2
-rw-r--r--sys/net/if_ppp.c2
-rw-r--r--sys/net/if_ppp.h2
-rw-r--r--sys/net/if_sl.c2
-rw-r--r--sys/net/if_slvar.h2
-rw-r--r--sys/net/if_types.h2
-rw-r--r--sys/net/netisr.h2
-rw-r--r--sys/net/pppcompress.c2
-rw-r--r--sys/net/pppcompress.h2
-rw-r--r--sys/net/radix.c2
-rw-r--r--sys/net/radix.h2
-rw-r--r--sys/net/raw_cb.c2
-rw-r--r--sys/net/raw_cb.h2
-rw-r--r--sys/net/raw_usrreq.c2
-rw-r--r--sys/net/route.c2
-rw-r--r--sys/net/route.h2
-rw-r--r--sys/net/rtsock.c2
-rw-r--r--sys/net/slcompress.c2
-rw-r--r--sys/net/slcompress.h2
-rw-r--r--sys/net/slip.h2
-rw-r--r--sys/netccitt/ccitt_proto.c2
-rw-r--r--sys/netccitt/dll.h2
-rw-r--r--sys/netccitt/hd_debug.c2
-rw-r--r--sys/netccitt/hd_input.c2
-rw-r--r--sys/netccitt/hd_output.c2
-rw-r--r--sys/netccitt/hd_subr.c2
-rw-r--r--sys/netccitt/hd_timer.c2
-rw-r--r--sys/netccitt/hd_var.h2
-rw-r--r--sys/netccitt/hdlc.h2
-rw-r--r--sys/netccitt/if_x25subr.c2
-rw-r--r--sys/netccitt/llc_input.c2
-rw-r--r--sys/netccitt/llc_output.c2
-rw-r--r--sys/netccitt/llc_subr.c2
-rw-r--r--sys/netccitt/llc_timer.c2
-rw-r--r--sys/netccitt/llc_var.h2
-rw-r--r--sys/netccitt/pk.h2
-rw-r--r--sys/netccitt/pk_acct.c2
-rw-r--r--sys/netccitt/pk_debug.c2
-rw-r--r--sys/netccitt/pk_input.c2
-rw-r--r--sys/netccitt/pk_llcsubr.c2
-rw-r--r--sys/netccitt/pk_output.c2
-rw-r--r--sys/netccitt/pk_subr.c2
-rw-r--r--sys/netccitt/pk_timer.c2
-rw-r--r--sys/netccitt/pk_usrreq.c2
-rw-r--r--sys/netccitt/pk_var.h2
-rw-r--r--sys/netccitt/x25.h2
-rw-r--r--sys/netccitt/x25acct.h2
-rw-r--r--sys/netccitt/x25err.h2
-rw-r--r--sys/netinet/icmp_var.h2
-rw-r--r--sys/netinet/if_ether.c2
-rw-r--r--sys/netinet/if_ether.h2
-rw-r--r--sys/netinet/if_fddi.h2
-rw-r--r--sys/netinet/igmp.c2
-rw-r--r--sys/netinet/igmp.h2
-rw-r--r--sys/netinet/igmp_var.h2
-rw-r--r--sys/netinet/in.c2
-rw-r--r--sys/netinet/in.h2
-rw-r--r--sys/netinet/in_cksum.c2
-rw-r--r--sys/netinet/in_pcb.c2
-rw-r--r--sys/netinet/in_pcb.h2
-rw-r--r--sys/netinet/in_proto.c2
-rw-r--r--sys/netinet/in_rmx.c2
-rw-r--r--sys/netinet/in_systm.h2
-rw-r--r--sys/netinet/in_var.h2
-rw-r--r--sys/netinet/ip.h2
-rw-r--r--sys/netinet/ip_fw.c2
-rw-r--r--sys/netinet/ip_fw.h2
-rw-r--r--sys/netinet/ip_fwdef.c2
-rw-r--r--sys/netinet/ip_icmp.c2
-rw-r--r--sys/netinet/ip_icmp.h2
-rw-r--r--sys/netinet/ip_input.c2
-rw-r--r--sys/netinet/ip_mroute.c2
-rw-r--r--sys/netinet/ip_mroute.h2
-rw-r--r--sys/netinet/ip_output.c2
-rw-r--r--sys/netinet/ip_var.h2
-rw-r--r--sys/netinet/raw_ip.c2
-rw-r--r--sys/netinet/tcp.h2
-rw-r--r--sys/netinet/tcp_debug.c2
-rw-r--r--sys/netinet/tcp_debug.h2
-rw-r--r--sys/netinet/tcp_fsm.h2
-rw-r--r--sys/netinet/tcp_input.c2
-rw-r--r--sys/netinet/tcp_output.c2
-rw-r--r--sys/netinet/tcp_seq.h2
-rw-r--r--sys/netinet/tcp_subr.c2
-rw-r--r--sys/netinet/tcp_timer.c2
-rw-r--r--sys/netinet/tcp_timer.h2
-rw-r--r--sys/netinet/tcp_usrreq.c2
-rw-r--r--sys/netinet/tcp_var.h2
-rw-r--r--sys/netinet/tcpip.h2
-rw-r--r--sys/netinet/udp.h2
-rw-r--r--sys/netinet/udp_usrreq.c2
-rw-r--r--sys/netinet/udp_var.h2
-rw-r--r--sys/netiso/argo_debug.h4
-rw-r--r--sys/netiso/clnl.h2
-rw-r--r--sys/netiso/clnp.h4
-rw-r--r--sys/netiso/clnp_debug.c4
-rw-r--r--sys/netiso/clnp_er.c4
-rw-r--r--sys/netiso/clnp_frag.c4
-rw-r--r--sys/netiso/clnp_input.c4
-rw-r--r--sys/netiso/clnp_options.c4
-rw-r--r--sys/netiso/clnp_output.c4
-rw-r--r--sys/netiso/clnp_raw.c4
-rw-r--r--sys/netiso/clnp_stat.h4
-rw-r--r--sys/netiso/clnp_subr.c4
-rw-r--r--sys/netiso/clnp_timer.c4
-rw-r--r--sys/netiso/cltp_usrreq.c2
-rw-r--r--sys/netiso/cltp_var.h2
-rw-r--r--sys/netiso/cons.h4
-rw-r--r--sys/netiso/cons_pcb.h4
-rw-r--r--sys/netiso/eonvar.h2
-rw-r--r--sys/netiso/esis.c2
-rw-r--r--sys/netiso/esis.h4
-rw-r--r--sys/netiso/idrp_usrreq.c2
-rw-r--r--sys/netiso/if_cons.c4
-rw-r--r--sys/netiso/if_eon.c4
-rw-r--r--sys/netiso/iso.c4
-rw-r--r--sys/netiso/iso.h4
-rw-r--r--sys/netiso/iso_chksum.c4
-rw-r--r--sys/netiso/iso_errno.h2
-rw-r--r--sys/netiso/iso_pcb.c4
-rw-r--r--sys/netiso/iso_pcb.h4
-rw-r--r--sys/netiso/iso_proto.c4
-rw-r--r--sys/netiso/iso_snpac.c4
-rw-r--r--sys/netiso/iso_snpac.h2
-rw-r--r--sys/netiso/iso_var.h4
-rw-r--r--sys/netiso/tp.trans2
-rw-r--r--sys/netiso/tp_astring.c2
-rw-r--r--sys/netiso/tp_clnp.h4
-rw-r--r--sys/netiso/tp_cons.c4
-rw-r--r--sys/netiso/tp_driver.c2
-rw-r--r--sys/netiso/tp_emit.c4
-rw-r--r--sys/netiso/tp_events.h2
-rw-r--r--sys/netiso/tp_inet.c4
-rw-r--r--sys/netiso/tp_input.c4
-rw-r--r--sys/netiso/tp_ip.h4
-rw-r--r--sys/netiso/tp_iso.c4
-rw-r--r--sys/netiso/tp_meas.c4
-rw-r--r--sys/netiso/tp_meas.h2
-rw-r--r--sys/netiso/tp_output.c4
-rw-r--r--sys/netiso/tp_param.h4
-rw-r--r--sys/netiso/tp_pcb.c4
-rw-r--r--sys/netiso/tp_pcb.h4
-rw-r--r--sys/netiso/tp_seq.h4
-rw-r--r--sys/netiso/tp_stat.h4
-rw-r--r--sys/netiso/tp_states.h2
-rw-r--r--sys/netiso/tp_states.init4
-rw-r--r--sys/netiso/tp_subr.c4
-rw-r--r--sys/netiso/tp_subr2.c4
-rw-r--r--sys/netiso/tp_timer.c4
-rw-r--r--sys/netiso/tp_timer.h4
-rw-r--r--sys/netiso/tp_tpdu.h4
-rw-r--r--sys/netiso/tp_trace.c4
-rw-r--r--sys/netiso/tp_trace.h4
-rw-r--r--sys/netiso/tp_user.h4
-rw-r--r--sys/netiso/tp_usrreq.c4
-rw-r--r--sys/netiso/tuba_subr.c2
-rw-r--r--sys/netiso/tuba_table.c2
-rw-r--r--sys/netiso/tuba_table.h2
-rw-r--r--sys/netiso/tuba_usrreq.c2
-rw-r--r--sys/netiso/xebec/debug.h2
-rw-r--r--sys/netiso/xebec/llparse.c2
-rw-r--r--sys/netiso/xebec/llparse.h2
-rw-r--r--sys/netiso/xebec/llscan.c2
-rw-r--r--sys/netiso/xebec/main.c2
-rw-r--r--sys/netiso/xebec/main.h2
-rw-r--r--sys/netiso/xebec/malloc.c2
-rw-r--r--sys/netiso/xebec/malloc.h4
-rw-r--r--sys/netiso/xebec/procs.c2
-rw-r--r--sys/netiso/xebec/procs.h4
-rw-r--r--sys/netiso/xebec/putdriver.c2
-rw-r--r--sys/netiso/xebec/sets.c2
-rw-r--r--sys/netiso/xebec/sets.h2
-rw-r--r--sys/netiso/xebec/test.trans2
-rw-r--r--sys/netiso/xebec/xebec.c2
-rw-r--r--sys/netiso/xebec/xebec.h4
-rw-r--r--sys/netns/idp.h2
-rw-r--r--sys/netns/idp_usrreq.c2
-rw-r--r--sys/netns/idp_var.h2
-rw-r--r--sys/netns/ns.c2
-rw-r--r--sys/netns/ns.h2
-rw-r--r--sys/netns/ns_cksum.c2
-rw-r--r--sys/netns/ns_error.c2
-rw-r--r--sys/netns/ns_error.h2
-rw-r--r--sys/netns/ns_if.h2
-rw-r--r--sys/netns/ns_input.c2
-rw-r--r--sys/netns/ns_ip.c2
-rw-r--r--sys/netns/ns_output.c2
-rw-r--r--sys/netns/ns_pcb.c2
-rw-r--r--sys/netns/ns_pcb.h2
-rw-r--r--sys/netns/ns_proto.c2
-rw-r--r--sys/netns/sp.h2
-rw-r--r--sys/netns/spidp.h2
-rw-r--r--sys/netns/spp_debug.c2
-rw-r--r--sys/netns/spp_debug.h2
-rw-r--r--sys/netns/spp_timer.h2
-rw-r--r--sys/netns/spp_usrreq.c2
-rw-r--r--sys/netns/spp_var.h2
-rw-r--r--sys/nfs/nfs.h2
-rw-r--r--sys/nfs/nfs_bio.c2
-rw-r--r--sys/nfs/nfs_node.c2
-rw-r--r--sys/nfs/nfs_nqlease.c2
-rw-r--r--sys/nfs/nfs_serv.c2
-rw-r--r--sys/nfs/nfs_socket.c2
-rw-r--r--sys/nfs/nfs_srvcache.c2
-rw-r--r--sys/nfs/nfs_subs.c2
-rw-r--r--sys/nfs/nfs_syscalls.c2
-rw-r--r--sys/nfs/nfs_vfsops.c2
-rw-r--r--sys/nfs/nfs_vnops.c2
-rw-r--r--sys/nfs/nfsdiskless.h2
-rw-r--r--sys/nfs/nfsm_subs.h2
-rw-r--r--sys/nfs/nfsmount.h2
-rw-r--r--sys/nfs/nfsnode.h2
-rw-r--r--sys/nfs/nfsrtt.h2
-rw-r--r--sys/nfs/nfsrvcache.h2
-rw-r--r--sys/nfs/nfsv2.h2
-rw-r--r--sys/nfs/nqnfs.h2
-rw-r--r--sys/nfs/rpcv2.h2
-rw-r--r--sys/nfs/xdr_subs.h2
-rw-r--r--sys/pci/README.de2
-rw-r--r--sys/pci/README.de-le2
-rw-r--r--sys/pci/aic7870.c2
-rw-r--r--sys/pci/dc21040.h2
-rw-r--r--sys/pci/if_de.c2
-rw-r--r--sys/pci/if_pdq.c2
-rw-r--r--sys/pci/ncr.c4
-rw-r--r--sys/pci/ncrreg.h2
-rw-r--r--sys/pci/pci.c2
-rw-r--r--sys/pci/pcibus.h2
-rw-r--r--sys/pci/pcireg.h2
-rw-r--r--sys/pci/pcisupport.c2
-rw-r--r--sys/pci/pcivar.h2
-rw-r--r--sys/pci/pdq.c5
-rw-r--r--sys/pci/pdq_os.h5
-rw-r--r--sys/pci/pdqreg.h5
-rw-r--r--sys/scsi/cd.c2
-rw-r--r--sys/scsi/ch.c2
-rw-r--r--sys/scsi/pt.c2
-rw-r--r--sys/scsi/scsi_all.h2
-rw-r--r--sys/scsi/scsi_base.c2
-rw-r--r--sys/scsi/scsi_cd.h2
-rw-r--r--sys/scsi/scsi_changer.h2
-rw-r--r--sys/scsi/scsi_debug.h2
-rw-r--r--sys/scsi/scsi_disk.h2
-rw-r--r--sys/scsi/scsi_driver.c2
-rw-r--r--sys/scsi/scsi_driver.h2
-rw-r--r--sys/scsi/scsi_generic.h2
-rw-r--r--sys/scsi/scsi_ioctl.c2
-rw-r--r--sys/scsi/scsi_tape.h2
-rw-r--r--sys/scsi/scsiconf.c2
-rw-r--r--sys/scsi/scsiconf.h2
-rw-r--r--sys/scsi/sctarg.c2
-rw-r--r--sys/scsi/sd.c2
-rw-r--r--sys/scsi/ssc.c2
-rw-r--r--sys/scsi/st.c2
-rw-r--r--sys/scsi/su.c2
-rw-r--r--sys/scsi/uk.c2
-rw-r--r--sys/scsi/worm.c2
-rw-r--r--sys/sys/acct.h2
-rw-r--r--sys/sys/buf.h2
-rw-r--r--sys/sys/callout.h2
-rw-r--r--sys/sys/cdefs.h2
-rw-r--r--sys/sys/cdio.h2
-rw-r--r--sys/sys/chio.h2
-rw-r--r--sys/sys/clist.h2
-rw-r--r--sys/sys/conf.h2
-rw-r--r--sys/sys/devconf.h2
-rw-r--r--sys/sys/device.h2
-rw-r--r--sys/sys/dir.h2
-rw-r--r--sys/sys/dirent.h2
-rw-r--r--sys/sys/disk.h2
-rw-r--r--sys/sys/disklabel.h2
-rw-r--r--sys/sys/diskslice.h2
-rw-r--r--sys/sys/dkbad.h2
-rw-r--r--sys/sys/dkstat.h2
-rw-r--r--sys/sys/dmap.h2
-rw-r--r--sys/sys/domain.h2
-rw-r--r--sys/sys/errno.h2
-rw-r--r--sys/sys/exec.h2
-rw-r--r--sys/sys/fbio.h2
-rw-r--r--sys/sys/fcntl.h2
-rw-r--r--sys/sys/file.h2
-rw-r--r--sys/sys/filedesc.h2
-rw-r--r--sys/sys/filio.h2
-rw-r--r--sys/sys/gmon.h2
-rw-r--r--sys/sys/imgact.h2
-rw-r--r--sys/sys/imgact_aout.h2
-rw-r--r--sys/sys/inflate.h2
-rw-r--r--sys/sys/ioccom.h2
-rw-r--r--sys/sys/ioctl.h2
-rw-r--r--sys/sys/ioctl_compat.h2
-rw-r--r--sys/sys/ipc.h2
-rw-r--r--sys/sys/kernel.h2
-rw-r--r--sys/sys/ktrace.h2
-rw-r--r--sys/sys/libkern.h2
-rw-r--r--sys/sys/link_aout.h297
-rw-r--r--sys/sys/link_elf.h297
-rw-r--r--sys/sys/lkm.h2
-rw-r--r--sys/sys/lockf.h2
-rw-r--r--sys/sys/malloc.h2
-rw-r--r--sys/sys/mbuf.h2
-rw-r--r--sys/sys/mman.h2
-rw-r--r--sys/sys/mount.h2
-rw-r--r--sys/sys/msg.h2
-rw-r--r--sys/sys/msgbuf.h2
-rw-r--r--sys/sys/mtio.h2
-rw-r--r--sys/sys/namei.h2
-rw-r--r--sys/sys/nlist_aout.h90
-rw-r--r--sys/sys/param.h2
-rw-r--r--sys/sys/proc.h2
-rw-r--r--sys/sys/protosw.h2
-rw-r--r--sys/sys/ptrace.h2
-rw-r--r--sys/sys/queue.h2
-rw-r--r--sys/sys/reboot.h2
-rw-r--r--sys/sys/resource.h2
-rw-r--r--sys/sys/resourcevar.h2
-rw-r--r--sys/sys/rlist.h2
-rw-r--r--sys/sys/rtprio.h2
-rw-r--r--sys/sys/scsiio.h2
-rw-r--r--sys/sys/select.h2
-rw-r--r--sys/sys/sem.h2
-rw-r--r--sys/sys/shm.h2
-rw-r--r--sys/sys/signal.h2
-rw-r--r--sys/sys/signalvar.h2
-rw-r--r--sys/sys/socket.h2
-rw-r--r--sys/sys/socketvar.h2
-rw-r--r--sys/sys/sockio.h2
-rw-r--r--sys/sys/stat.h2
-rw-r--r--sys/sys/syscall-hide.h2
-rw-r--r--sys/sys/syscall.h2
-rw-r--r--sys/sys/sysctl.h2
-rw-r--r--sys/sys/sysent.h2
-rw-r--r--sys/sys/syslimits.h2
-rw-r--r--sys/sys/syslog.h2
-rw-r--r--sys/sys/systm.h2
-rw-r--r--sys/sys/tablet.h2
-rw-r--r--sys/sys/termios.h2
-rw-r--r--sys/sys/time.h2
-rw-r--r--sys/sys/timeb.h2
-rw-r--r--sys/sys/times.h2
-rw-r--r--sys/sys/tprintf.h2
-rw-r--r--sys/sys/tty.h2
-rw-r--r--sys/sys/ttychars.h2
-rw-r--r--sys/sys/ttycom.h2
-rw-r--r--sys/sys/ttydefaults.h2
-rw-r--r--sys/sys/ttydev.h2
-rw-r--r--sys/sys/types.h2
-rw-r--r--sys/sys/ucred.h2
-rw-r--r--sys/sys/uio.h2
-rw-r--r--sys/sys/un.h2
-rw-r--r--sys/sys/unistd.h2
-rw-r--r--sys/sys/unpcb.h2
-rw-r--r--sys/sys/user.h2
-rw-r--r--sys/sys/utsname.h2
-rw-r--r--sys/sys/vadvise.h2
-rw-r--r--sys/sys/vcmd.h2
-rw-r--r--sys/sys/vlimit.h2
-rw-r--r--sys/sys/vmmeter.h2
-rw-r--r--sys/sys/vnode.h2
-rw-r--r--sys/sys/vsio.h2
-rw-r--r--sys/sys/wait.h2
-rw-r--r--sys/ufs/ffs/ffs_alloc.c2
-rw-r--r--sys/ufs/ffs/ffs_balloc.c2
-rw-r--r--sys/ufs/ffs/ffs_extern.h2
-rw-r--r--sys/ufs/ffs/ffs_inode.c2
-rw-r--r--sys/ufs/ffs/ffs_subr.c2
-rw-r--r--sys/ufs/ffs/ffs_tables.c2
-rw-r--r--sys/ufs/ffs/ffs_vfsops.c2
-rw-r--r--sys/ufs/ffs/ffs_vnops.c2
-rw-r--r--sys/ufs/ffs/fs.h2
-rw-r--r--sys/ufs/lfs/lfs.h2
-rw-r--r--sys/ufs/lfs/lfs_alloc.c2
-rw-r--r--sys/ufs/lfs/lfs_balloc.c2
-rw-r--r--sys/ufs/lfs/lfs_bio.c2
-rw-r--r--sys/ufs/lfs/lfs_cksum.c2
-rw-r--r--sys/ufs/lfs/lfs_debug.c2
-rw-r--r--sys/ufs/lfs/lfs_extern.h2
-rw-r--r--sys/ufs/lfs/lfs_inode.c2
-rw-r--r--sys/ufs/lfs/lfs_segment.c2
-rw-r--r--sys/ufs/lfs/lfs_subr.c2
-rw-r--r--sys/ufs/lfs/lfs_syscalls.c2
-rw-r--r--sys/ufs/lfs/lfs_vfsops.c2
-rw-r--r--sys/ufs/lfs/lfs_vnops.c2
-rw-r--r--sys/ufs/mfs/mfs_extern.h2
-rw-r--r--sys/ufs/mfs/mfs_vfsops.c2
-rw-r--r--sys/ufs/mfs/mfs_vnops.c2
-rw-r--r--sys/ufs/mfs/mfsiom.h2
-rw-r--r--sys/ufs/mfs/mfsnode.h2
-rw-r--r--sys/ufs/ufs/dinode.h2
-rw-r--r--sys/ufs/ufs/dir.h2
-rw-r--r--sys/ufs/ufs/inode.h2
-rw-r--r--sys/ufs/ufs/quota.h2
-rw-r--r--sys/ufs/ufs/ufs_bmap.c2
-rw-r--r--sys/ufs/ufs/ufs_disksubr.c2
-rw-r--r--sys/ufs/ufs/ufs_extern.h2
-rw-r--r--sys/ufs/ufs/ufs_ihash.c2
-rw-r--r--sys/ufs/ufs/ufs_inode.c2
-rw-r--r--sys/ufs/ufs/ufs_lookup.c2
-rw-r--r--sys/ufs/ufs/ufs_quota.c2
-rw-r--r--sys/ufs/ufs/ufs_readwrite.c2
-rw-r--r--sys/ufs/ufs/ufs_vfsops.c2
-rw-r--r--sys/ufs/ufs/ufs_vnops.c2
-rw-r--r--sys/ufs/ufs/ufsmount.h2
-rw-r--r--sys/vm/device_pager.c2
-rw-r--r--sys/vm/device_pager.h2
-rw-r--r--sys/vm/kern_lock.c2
-rw-r--r--sys/vm/lock.h2
-rw-r--r--sys/vm/pmap.h2
-rw-r--r--sys/vm/swap_pager.c2
-rw-r--r--sys/vm/swap_pager.h2
-rw-r--r--sys/vm/vm.h2
-rw-r--r--sys/vm/vm_extern.h2
-rw-r--r--sys/vm/vm_fault.c2
-rw-r--r--sys/vm/vm_glue.c2
-rw-r--r--sys/vm/vm_inherit.h2
-rw-r--r--sys/vm/vm_init.c2
-rw-r--r--sys/vm/vm_kern.c2
-rw-r--r--sys/vm/vm_kern.h2
-rw-r--r--sys/vm/vm_map.c2
-rw-r--r--sys/vm/vm_map.h2
-rw-r--r--sys/vm/vm_meter.c2
-rw-r--r--sys/vm/vm_mmap.c2
-rw-r--r--sys/vm/vm_object.c2
-rw-r--r--sys/vm/vm_object.h2
-rw-r--r--sys/vm/vm_page.c2
-rw-r--r--sys/vm/vm_page.h2
-rw-r--r--sys/vm/vm_pageout.c2
-rw-r--r--sys/vm/vm_pageout.h2
-rw-r--r--sys/vm/vm_pager.c2
-rw-r--r--sys/vm/vm_pager.h2
-rw-r--r--sys/vm/vm_param.h2
-rw-r--r--sys/vm/vm_prot.h2
-rw-r--r--sys/vm/vm_swap.c2
-rw-r--r--sys/vm/vm_unix.c2
-rw-r--r--sys/vm/vnode_pager.c2
-rw-r--r--sys/vm/vnode_pager.h2
-rw-r--r--usr.bin/Makefile2
-rw-r--r--usr.bin/at/Makefile2
-rw-r--r--usr.bin/at/at.c2
-rw-r--r--usr.bin/at/at.man2
-rw-r--r--usr.bin/at/panic.c2
-rw-r--r--usr.bin/at/parsetime.c2
-rw-r--r--usr.bin/at/perm.c2
-rw-r--r--usr.bin/chat/Makefile2
-rw-r--r--usr.bin/chat/chat.82
-rw-r--r--usr.bin/chat/chat.c2
-rw-r--r--usr.bin/chpass/chpass.c2
-rw-r--r--usr.bin/chpass/pw_yp.c2
-rw-r--r--usr.bin/chpass/pw_yp.h2
-rw-r--r--usr.bin/colldef/Makefile2
-rw-r--r--usr.bin/colldef/parse.y2
-rw-r--r--usr.bin/colldef/scan.l2
-rw-r--r--usr.bin/compile_et/Makefile2
-rw-r--r--usr.bin/compile_et/compile_et.12
-rw-r--r--usr.bin/compile_et/compile_et.c2
-rw-r--r--usr.bin/compile_et/error_table.y2
-rw-r--r--usr.bin/compile_et/et_lex.lex.l2
-rw-r--r--usr.bin/compress/doc/revision.log9
-rw-r--r--usr.bin/cpp/cpp.sh2
-rw-r--r--usr.bin/devmenu/Makefile2
-rw-r--r--usr.bin/devmenu/devmenu.12
-rw-r--r--usr.bin/devmenu/devmenu.c2
-rw-r--r--usr.bin/devmenu/devmenu.h2
-rw-r--r--usr.bin/dig/dig.12
-rw-r--r--usr.bin/dig/dig.c2
-rw-r--r--usr.bin/ee/doc/new_curse.c4
-rw-r--r--usr.bin/ee/ee.c4
-rw-r--r--usr.bin/ee/ee.obin0 -> 67038 bytes
-rw-r--r--usr.bin/ee/nls/de_DE.ISO_8859-1/ee.msg2
-rw-r--r--usr.bin/ee/nls/en_US.ISO_8859-1/ee.msg2
-rw-r--r--usr.bin/ee/nls/fr_FR.ISO_8859-1/ee.msg2
-rw-r--r--usr.bin/file/LEGAL.NOTICE2
-rw-r--r--usr.bin/file/MAINT2
-rw-r--r--usr.bin/file/Magdir/Localstuff2
-rw-r--r--usr.bin/file/Magdir/sgml2
-rw-r--r--usr.bin/file/Magdir/softquad2
-rw-r--r--usr.bin/file/Makefile2
-rw-r--r--usr.bin/file/PORTING2
-rw-r--r--usr.bin/file/README2
-rw-r--r--usr.bin/file/apprentice.c2
-rw-r--r--usr.bin/file/ascmagic.c2
-rw-r--r--usr.bin/file/compress.c2
-rw-r--r--usr.bin/file/cvsimport.sh2
-rw-r--r--usr.bin/file/file.12
-rw-r--r--usr.bin/file/file.c2
-rw-r--r--usr.bin/file/file.h2
-rw-r--r--usr.bin/file/fsmagic.c2
-rw-r--r--usr.bin/file/is_tar.c2
-rw-r--r--usr.bin/file/magic.52
-rw-r--r--usr.bin/file/names.h2
-rw-r--r--usr.bin/file/patchlevel.h5
-rw-r--r--usr.bin/file/print.c2
-rw-r--r--usr.bin/file/softmagic.c2
-rw-r--r--usr.bin/file/tar.h2
-rw-r--r--usr.bin/file2c/Makefile2
-rw-r--r--usr.bin/file2c/file2c.12
-rw-r--r--usr.bin/file2c/file2c.c2
-rw-r--r--usr.bin/gencat/Makefile2
-rw-r--r--usr.bin/getopt/Makefile2
-rw-r--r--usr.bin/host/host.12
-rw-r--r--usr.bin/host/host.c2
-rw-r--r--usr.bin/ipcrm/Makefile2
-rw-r--r--usr.bin/ipcrm/ipcrm.12
-rw-r--r--usr.bin/ipcrm/ipcrm.c2
-rw-r--r--usr.bin/ipcs/Makefile2
-rw-r--r--usr.bin/ipcs/ipcs.12
-rw-r--r--usr.bin/ipcs/ipcs.c2
-rw-r--r--usr.bin/kzip/Makefile2
-rw-r--r--usr.bin/kzip/kzip.c2
-rw-r--r--usr.bin/lex/FlexLexer.h2
-rw-r--r--usr.bin/lex/Makefile2
-rw-r--r--usr.bin/lex/ccl.c2
-rw-r--r--usr.bin/lex/dfa.c2
-rw-r--r--usr.bin/lex/ecs.c2
-rw-r--r--usr.bin/lex/flex.skl2
-rw-r--r--usr.bin/lex/flexdef.h2
-rw-r--r--usr.bin/lex/gen.c2
-rw-r--r--usr.bin/lex/initscan.c4
-rw-r--r--usr.bin/lex/lib/Makefile2
-rw-r--r--usr.bin/lex/lib/libmain.c2
-rw-r--r--usr.bin/lex/lib/libyywrap.c2
-rw-r--r--usr.bin/lex/main.c2
-rw-r--r--usr.bin/lex/misc.c2
-rw-r--r--usr.bin/lex/nfa.c2
-rw-r--r--usr.bin/lex/parse.y2
-rw-r--r--usr.bin/lex/scan.l2
-rw-r--r--usr.bin/lex/skel.c2
-rw-r--r--usr.bin/lex/sym.c2
-rw-r--r--usr.bin/lex/tblcmp.c2
-rw-r--r--usr.bin/lex/yylex.c2
-rw-r--r--usr.bin/login/Makefile2
-rw-r--r--usr.bin/lsvfs/Makefile2
-rw-r--r--usr.bin/lsvfs/lsvfs.12
-rw-r--r--usr.bin/lsvfs/lsvfs.c2
-rw-r--r--usr.bin/m4/m4.12
-rw-r--r--usr.bin/make/Makefile2
-rw-r--r--usr.bin/make/PSD.doc/tutorial.ms2
-rw-r--r--usr.bin/make/pathnames.h2
-rw-r--r--usr.bin/make/str.c2
-rw-r--r--usr.bin/mk_cmds/Makefile2
-rw-r--r--usr.bin/modstat/Makefile2
-rw-r--r--usr.bin/modstat/modstat.82
-rw-r--r--usr.bin/modstat/modstat.c2
-rw-r--r--usr.bin/more/Makefile2
-rw-r--r--usr.bin/msgs/Makefile2
-rw-r--r--usr.bin/netstat/iso.c2
-rw-r--r--usr.bin/netstat/route.c2
-rw-r--r--usr.bin/nfsstat/nfsstat.12
-rw-r--r--usr.bin/nfsstat/nfsstat.c2
-rw-r--r--usr.bin/passwd/Makefile2
-rw-r--r--usr.bin/passwd/extern.h2
-rw-r--r--usr.bin/passwd/passwd.c2
-rw-r--r--usr.bin/rdist/docmd.c2
-rw-r--r--usr.bin/rpcgen/Makefile2
-rw-r--r--usr.bin/rpcgen/rpc_clntout.c2
-rw-r--r--usr.bin/rpcgen/rpc_cout.c2
-rw-r--r--usr.bin/rpcgen/rpc_hout.c2
-rw-r--r--usr.bin/rpcgen/rpc_main.c2
-rw-r--r--usr.bin/rpcgen/rpc_parse.c2
-rw-r--r--usr.bin/rpcgen/rpc_parse.h2
-rw-r--r--usr.bin/rpcgen/rpc_scan.c2
-rw-r--r--usr.bin/rpcgen/rpc_scan.h2
-rw-r--r--usr.bin/rpcgen/rpc_svcout.c2
-rw-r--r--usr.bin/rpcgen/rpc_util.c2
-rw-r--r--usr.bin/rpcgen/rpc_util.h2
-rw-r--r--usr.bin/rpcgen/rpcgen.12
-rw-r--r--usr.bin/rpcinfo/Makefile2
-rw-r--r--usr.bin/rpcinfo/rpcinfo.82
-rw-r--r--usr.bin/rpcinfo/rpcinfo.c2
-rw-r--r--usr.bin/rsh/rsh.c2
-rw-r--r--usr.bin/rup/Makefile2
-rw-r--r--usr.bin/rup/rup.12
-rw-r--r--usr.bin/rup/rup.c2
-rw-r--r--usr.bin/ruptime/ruptime.c2
-rw-r--r--usr.bin/rusers/Makefile2
-rw-r--r--usr.bin/rusers/rusers.12
-rw-r--r--usr.bin/rusers/rusers.c2
-rw-r--r--usr.bin/rwall/Makefile2
-rw-r--r--usr.bin/rwall/rwall.12
-rw-r--r--usr.bin/rwall/rwall.c2
-rw-r--r--usr.bin/sgmlfmt/Makefile2
-rwxr-xr-xusr.bin/sgmlfmt/sgmlfmt.pl2
-rw-r--r--usr.bin/sgmls/Makefile2
-rw-r--r--usr.bin/sgmls/README2
-rw-r--r--usr.bin/strip/strip.c2
-rw-r--r--usr.bin/talk/Makefile2
-rw-r--r--usr.bin/tconv/Makefile2
-rw-r--r--usr.bin/vi/USD.doc/vi.ref/index270
-rw-r--r--usr.bin/which/which.12
-rwxr-xr-xusr.bin/which/which.pl2
-rw-r--r--usr.bin/ypcat/Makefile2
-rw-r--r--usr.bin/ypcat/ypcat.12
-rw-r--r--usr.bin/ypmatch/Makefile2
-rw-r--r--usr.bin/ypmatch/ypmatch.12
-rw-r--r--usr.bin/ypwhich/Makefile2
-rw-r--r--usr.sbin/Makefile2
-rw-r--r--usr.sbin/ac/Makefile2
-rw-r--r--usr.sbin/ac/ac.82
-rw-r--r--usr.sbin/ac/ac.c2
-rw-r--r--usr.sbin/adduser/adduser.82
-rwxr-xr-x[-rw-r--r--]usr.sbin/adduser/adduser.perl2
-rw-r--r--usr.sbin/amd/amd/afs_ops.c2
-rw-r--r--usr.sbin/amd/amd/am_ops.c2
-rw-r--r--usr.sbin/amd/amd/amd.82
-rw-r--r--usr.sbin/amd/amd/amd.c2
-rw-r--r--usr.sbin/amd/amd/amq_subr.c2
-rw-r--r--usr.sbin/amd/amd/clock.c2
-rw-r--r--usr.sbin/amd/amd/efs_ops.c2
-rw-r--r--usr.sbin/amd/amd/get_args.c2
-rw-r--r--usr.sbin/amd/amd/host_ops.c2
-rw-r--r--usr.sbin/amd/amd/ifs_ops.c2
-rw-r--r--usr.sbin/amd/amd/info_file.c2
-rw-r--r--usr.sbin/amd/amd/info_hes.c2
-rw-r--r--usr.sbin/amd/amd/info_ndbm.c2
-rw-r--r--usr.sbin/amd/amd/info_nis.c2
-rw-r--r--usr.sbin/amd/amd/info_passwd.c2
-rw-r--r--usr.sbin/amd/amd/info_union.c2
-rw-r--r--usr.sbin/amd/amd/map.c2
-rw-r--r--usr.sbin/amd/amd/mapc.c2
-rw-r--r--usr.sbin/amd/amd/misc_rpc.c2
-rw-r--r--usr.sbin/amd/amd/mntfs.c2
-rw-r--r--usr.sbin/amd/amd/mount_fs.c2
-rw-r--r--usr.sbin/amd/amd/mtab.c2
-rw-r--r--usr.sbin/amd/amd/nfs_ops.c2
-rw-r--r--usr.sbin/amd/amd/nfs_start.c2
-rw-r--r--usr.sbin/amd/amd/nfs_subr.c2
-rw-r--r--usr.sbin/amd/amd/nfsx_ops.c2
-rw-r--r--usr.sbin/amd/amd/opts.c2
-rw-r--r--usr.sbin/amd/amd/pfs_ops.c2
-rw-r--r--usr.sbin/amd/amd/restart.c2
-rw-r--r--usr.sbin/amd/amd/rpc_fwd.c2
-rw-r--r--usr.sbin/amd/amd/sched.c2
-rw-r--r--usr.sbin/amd/amd/sfs_ops.c2
-rw-r--r--usr.sbin/amd/amd/srvr_afs.c2
-rw-r--r--usr.sbin/amd/amd/srvr_nfs.c2
-rw-r--r--usr.sbin/amd/amd/ufs_ops.c2
-rw-r--r--usr.sbin/amd/amd/umount_fs.c2
-rw-r--r--usr.sbin/amd/amd/util.c2
-rw-r--r--usr.sbin/amd/amd/wire.c2
-rw-r--r--usr.sbin/amd/amd/xutil.c2
-rw-r--r--usr.sbin/amd/amq/amq.82
-rw-r--r--usr.sbin/amd/amq/amq.c4
-rw-r--r--usr.sbin/amd/config/Configure2
-rw-r--r--usr.sbin/amd/config/Makefile.aix32
-rw-r--r--usr.sbin/amd/config/Makefile.bsd442
-rw-r--r--usr.sbin/amd/config/Makefile.config2
-rw-r--r--usr.sbin/amd/config/Makefile.hpux2
-rw-r--r--usr.sbin/amd/config/Makefile.irix2
-rw-r--r--usr.sbin/amd/config/Makefile.irix32
-rw-r--r--usr.sbin/amd/config/Makefile.irix42
-rw-r--r--usr.sbin/amd/config/Makefile.stellix2
-rw-r--r--usr.sbin/amd/config/RELEASE2
-rw-r--r--usr.sbin/amd/config/arch2
-rw-r--r--usr.sbin/amd/config/misc-aix3.h2
-rw-r--r--usr.sbin/amd/config/misc-hpux.h2
-rw-r--r--usr.sbin/amd/config/misc-irix.h2
-rw-r--r--usr.sbin/amd/config/misc-next.h2
-rw-r--r--usr.sbin/amd/config/misc-ultrix.h2
-rw-r--r--usr.sbin/amd/config/mount_aix.c2
-rw-r--r--usr.sbin/amd/config/mount_irix.c2
-rw-r--r--usr.sbin/amd/config/mtab_aix.c2
-rw-r--r--usr.sbin/amd/config/mtab_bsd.c2
-rw-r--r--usr.sbin/amd/config/mtab_file.c2
-rw-r--r--usr.sbin/amd/config/mtab_ultrix.c2
-rw-r--r--usr.sbin/amd/config/newvers.sh2
-rw-r--r--usr.sbin/amd/config/os-acis43.h2
-rw-r--r--usr.sbin/amd/config/os-aix3.h2
-rw-r--r--usr.sbin/amd/config/os-aux.h2
-rw-r--r--usr.sbin/amd/config/os-bsd44.h2
-rw-r--r--usr.sbin/amd/config/os-concentrix.h2
-rw-r--r--usr.sbin/amd/config/os-convex.h2
-rw-r--r--usr.sbin/amd/config/os-defaults.h2
-rw-r--r--usr.sbin/amd/config/os-dgux.h2
-rw-r--r--usr.sbin/amd/config/os-fpx4.h2
-rw-r--r--usr.sbin/amd/config/os-hcx.h2
-rw-r--r--usr.sbin/amd/config/os-hlh42.h2
-rw-r--r--usr.sbin/amd/config/os-hpux.h2
-rw-r--r--usr.sbin/amd/config/os-irix.h2
-rw-r--r--usr.sbin/amd/config/os-irix3.h2
-rw-r--r--usr.sbin/amd/config/os-irix4.h2
-rw-r--r--usr.sbin/amd/config/os-next.h2
-rw-r--r--usr.sbin/amd/config/os-pyrOSx.h2
-rw-r--r--usr.sbin/amd/config/os-riscix.h2
-rw-r--r--usr.sbin/amd/config/os-sos3.h2
-rw-r--r--usr.sbin/amd/config/os-sos4.h2
-rw-r--r--usr.sbin/amd/config/os-stellix.h2
-rw-r--r--usr.sbin/amd/config/os-type2
-rw-r--r--usr.sbin/amd/config/os-u2_2.h2
-rw-r--r--usr.sbin/amd/config/os-u3_0.h2
-rw-r--r--usr.sbin/amd/config/os-u4_0.h2
-rw-r--r--usr.sbin/amd/config/os-u4_2.h2
-rw-r--r--usr.sbin/amd/config/os-umax43.h2
-rw-r--r--usr.sbin/amd/config/os-utek.h2
-rw-r--r--usr.sbin/amd/config/os-utx32.h2
-rw-r--r--usr.sbin/amd/config/os-xinu43.h2
-rw-r--r--usr.sbin/amd/doc/Makefile2
-rw-r--r--usr.sbin/amd/doc/amdref.texinfo2
-rw-r--r--usr.sbin/amd/fsinfo/conf/csg_sun32
-rw-r--r--usr.sbin/amd/fsinfo/conf/csg_vax2
-rw-r--r--usr.sbin/amd/fsinfo/conf/hosts/flamingo.doc.ic.ac.uk2
-rw-r--r--usr.sbin/amd/fsinfo/conf/hosts/gould.doc.ic.ac.uk2
-rw-r--r--usr.sbin/amd/fsinfo/conf/hosts/ivax.doc.ic.ac.uk2
-rw-r--r--usr.sbin/amd/fsinfo/conf/hosts/obsidian.doc.ic.ac.uk2
-rw-r--r--usr.sbin/amd/fsinfo/conf/hosts/pelican.doc.ic.ac.uk2
-rw-r--r--usr.sbin/amd/fsinfo/conf/hosts/rvax.doc.ic.ac.uk2
-rw-r--r--usr.sbin/amd/fsinfo/conf/hosts/sky.doc.ic.ac.uk2
-rw-r--r--usr.sbin/amd/fsinfo/conf/hosts/svax.doc.ic.ac.uk2
-rw-r--r--usr.sbin/amd/fsinfo/conf/hosts/tsunfs.doc.ic.ac.uk2
-rw-r--r--usr.sbin/amd/fsinfo/conf/hosts/whoops.doc.ic.ac.uk2
-rw-r--r--usr.sbin/amd/fsinfo/fsi_analyze.c2
-rw-r--r--usr.sbin/amd/fsinfo/fsi_data.h2
-rw-r--r--usr.sbin/amd/fsinfo/fsi_dict.c2
-rw-r--r--usr.sbin/amd/fsinfo/fsi_gram.y2
-rw-r--r--usr.sbin/amd/fsinfo/fsi_lex.l2
-rw-r--r--usr.sbin/amd/fsinfo/fsi_util.c2
-rw-r--r--usr.sbin/amd/fsinfo/fsinfo.c2
-rw-r--r--usr.sbin/amd/fsinfo/fsinfo.h2
-rw-r--r--usr.sbin/amd/fsinfo/wr_atab.c2
-rw-r--r--usr.sbin/amd/fsinfo/wr_bparam.c2
-rw-r--r--usr.sbin/amd/fsinfo/wr_dumpset.c2
-rw-r--r--usr.sbin/amd/fsinfo/wr_exportfs.c2
-rw-r--r--usr.sbin/amd/fsinfo/wr_fstab.c2
-rw-r--r--usr.sbin/amd/include/am.h2
-rw-r--r--usr.sbin/amd/include/config.h2
-rw-r--r--usr.sbin/amd/include/fstype.h2
-rw-r--r--usr.sbin/amd/include/uwait.h2
-rw-r--r--usr.sbin/amd/mk-amd-map/mk-amd-map.c4
-rw-r--r--usr.sbin/amd/rpcx/amq.h2
-rw-r--r--usr.sbin/amd/rpcx/amq.x2
-rw-r--r--usr.sbin/amd/rpcx/amq_clnt.c2
-rw-r--r--usr.sbin/amd/rpcx/amq_svc.c2
-rw-r--r--usr.sbin/amd/rpcx/amq_xdr.c2
-rw-r--r--usr.sbin/amd/rpcx/mount.h2
-rw-r--r--usr.sbin/amd/rpcx/mount_xdr.c2
-rw-r--r--usr.sbin/amd/rpcx/nfs_prot.h2
-rw-r--r--usr.sbin/amd/rpcx/nfs_prot_svc.c2
-rw-r--r--usr.sbin/amd/rpcx/nfs_prot_xdr.c2
-rw-r--r--usr.sbin/amd/text/INSTALL2
-rw-r--r--usr.sbin/amd/text/README2
-rw-r--r--usr.sbin/amd/text/amd.start.ex2
-rw-r--r--usr.sbin/bootparamd/bootparamd/Makefile2
-rwxr-xr-x[-rw-r--r--]usr.sbin/bootparamd/bootparamd/bootparamd.80
-rw-r--r--usr.sbin/bootparamd/bootparamd/bootparamd.c2
-rw-r--r--usr.sbin/bootparamd/bootparamd/main.c2
-rw-r--r--usr.sbin/bootparamd/callbootd/Makefile2
-rw-r--r--usr.sbin/bootparamd/callbootd/callbootd.c2
-rw-r--r--usr.sbin/cron/cron/compat.h2
-rw-r--r--usr.sbin/cron/cron/config.h2
-rw-r--r--usr.sbin/cron/cron/cron.82
-rw-r--r--usr.sbin/cron/cron/cron.c2
-rw-r--r--usr.sbin/cron/cron/cron.h2
-rw-r--r--usr.sbin/cron/cron/database.c2
-rw-r--r--usr.sbin/cron/cron/do_command.c2
-rw-r--r--usr.sbin/cron/cron/job.c2
-rw-r--r--usr.sbin/cron/cron/pathnames.h2
-rw-r--r--usr.sbin/cron/cron/popen.c2
-rw-r--r--usr.sbin/cron/cron/user.c2
-rw-r--r--usr.sbin/cron/crontab/crontab.12
-rw-r--r--usr.sbin/cron/crontab/crontab.52
-rw-r--r--usr.sbin/cron/crontab/crontab.c2
-rw-r--r--usr.sbin/cron/doc/CONVERSION2
-rw-r--r--usr.sbin/cron/doc/FEATURES2
-rw-r--r--usr.sbin/cron/doc/INSTALL2
-rw-r--r--usr.sbin/cron/doc/MAIL2
-rw-r--r--usr.sbin/cron/doc/Makefile.vixie2
-rw-r--r--usr.sbin/cron/doc/README2
-rw-r--r--usr.sbin/cron/lib/compat.c2
-rw-r--r--usr.sbin/cron/lib/entry.c2
-rw-r--r--usr.sbin/cron/lib/env.c2
-rw-r--r--usr.sbin/cron/lib/misc.c2
-rwxr-xr-x[-rw-r--r--]usr.sbin/crunch/crunchgen/mkskel.sh0
-rw-r--r--usr.sbin/crunch/examples/filesystem.conf2
-rw-r--r--usr.sbin/crunch/examples/kcopy.conf2
-rw-r--r--usr.sbin/ctm/Makefile.inc2
-rw-r--r--usr.sbin/ctm/README2
-rw-r--r--usr.sbin/ctm/ctm/Makefile2
-rw-r--r--usr.sbin/ctm/ctm/ctm.12
-rw-r--r--usr.sbin/ctm/ctm/ctm.52
-rw-r--r--usr.sbin/ctm/ctm/ctm.c2
-rw-r--r--usr.sbin/ctm/ctm/ctm.h2
-rw-r--r--usr.sbin/ctm/ctm/ctm_ed.c2
-rw-r--r--usr.sbin/ctm/ctm/ctm_input.c2
-rw-r--r--usr.sbin/ctm/ctm/ctm_pass1.c2
-rw-r--r--usr.sbin/ctm/ctm/ctm_pass2.c2
-rw-r--r--usr.sbin/ctm/ctm/ctm_pass3.c2
-rw-r--r--usr.sbin/ctm/ctm/ctm_syntax.c2
-rw-r--r--usr.sbin/ctm/ctm_scan/Makefile2
-rw-r--r--usr.sbin/ctm/ctm_scan/ctm_scan.c2
-rw-r--r--usr.sbin/fdwrite/Makefile2
-rw-r--r--usr.sbin/fdwrite/fdwrite.12
-rw-r--r--usr.sbin/fdwrite/fdwrite.c2
-rw-r--r--usr.sbin/inetd/inetd.82
-rw-r--r--usr.sbin/inetd/inetd.c2
-rw-r--r--usr.sbin/kbdcontrol/kbdcontrol.c2
-rw-r--r--usr.sbin/kbdcontrol/lex.h2
-rw-r--r--usr.sbin/kbdcontrol/lex.l2
-rw-r--r--usr.sbin/kbdmap/Makefile2
-rw-r--r--usr.sbin/kbdmap/kbdmap.12
-rwxr-xr-x[-rw-r--r--]usr.sbin/kbdmap/kbdmap.pl2
-rwxr-xr-x[-rw-r--r--]usr.sbin/kbdmap/strip_pl.pl0
-rw-r--r--usr.sbin/kernbb/Makefile2
-rw-r--r--usr.sbin/kernbb/kernbb.c2
-rw-r--r--usr.sbin/lpr/lp/lp.12
-rwxr-xr-x[-rw-r--r--]usr.sbin/lpr/lp/lp.sh2
-rw-r--r--usr.sbin/lptcontrol/lptcontrol.82
-rw-r--r--usr.sbin/lptcontrol/lptcontrol.c2
-rw-r--r--usr.sbin/lsdev/Makefile2
-rw-r--r--usr.sbin/lsdev/lsdev.82
-rw-r--r--usr.sbin/manctl/Makefile2
-rw-r--r--usr.sbin/manctl/manctl.sh2
-rw-r--r--usr.sbin/mixer/Makefile2
-rw-r--r--usr.sbin/mrouted/Makefile2
-rw-r--r--usr.sbin/mrouted/callout.c2
-rw-r--r--usr.sbin/mrouted/cfparse.y2
-rw-r--r--usr.sbin/mrouted/common/Makefile2
-rw-r--r--usr.sbin/mrouted/config.c2
-rw-r--r--usr.sbin/mrouted/defs.h2
-rw-r--r--usr.sbin/mrouted/dvmrp.h2
-rw-r--r--usr.sbin/mrouted/igmp.c2
-rw-r--r--usr.sbin/mrouted/inet.c2
-rw-r--r--usr.sbin/mrouted/kern.c2
-rw-r--r--usr.sbin/mrouted/main.c2
-rw-r--r--usr.sbin/mrouted/map-mbone/Makefile2
-rw-r--r--usr.sbin/mrouted/mapper.c2
-rw-r--r--usr.sbin/mrouted/mrinfo.c2
-rw-r--r--usr.sbin/mrouted/mrinfo/Makefile2
-rw-r--r--usr.sbin/mrouted/mrouted.82
-rw-r--r--usr.sbin/mrouted/mrouted.conf2
-rw-r--r--usr.sbin/mrouted/mrouted/Makefile2
-rw-r--r--usr.sbin/mrouted/mtrace.82
-rw-r--r--usr.sbin/mrouted/mtrace.c2
-rw-r--r--usr.sbin/mrouted/mtrace/Makefile2
-rw-r--r--usr.sbin/mrouted/pathnames.h2
-rw-r--r--usr.sbin/mrouted/prune.c2
-rw-r--r--usr.sbin/mrouted/prune.h2
-rw-r--r--usr.sbin/mrouted/route.c2
-rw-r--r--usr.sbin/mrouted/route.h2
-rw-r--r--usr.sbin/mrouted/testrsrr/Makefile2
-rw-r--r--usr.sbin/mrouted/testrsrr/testrsrr.c2
-rw-r--r--usr.sbin/mrouted/vif.c2
-rw-r--r--usr.sbin/mrouted/vif.h2
-rw-r--r--usr.sbin/mtree/Makefile2
-rw-r--r--usr.sbin/mtree/mtree.82
-rw-r--r--usr.sbin/named/Version.c4
-rw-r--r--usr.sbin/named/db_defs.h2
-rw-r--r--usr.sbin/named/db_dump.c2
-rw-r--r--usr.sbin/named/db_func.h2
-rw-r--r--usr.sbin/named/db_glob.h2
-rw-r--r--usr.sbin/named/db_glue.c2
-rw-r--r--usr.sbin/named/db_load.c2
-rw-r--r--usr.sbin/named/db_lookup.c2
-rw-r--r--usr.sbin/named/db_reload.c2
-rw-r--r--usr.sbin/named/db_save.c2
-rw-r--r--usr.sbin/named/db_secure.c2
-rw-r--r--usr.sbin/named/db_update.c2
-rw-r--r--usr.sbin/named/dmalloc.c2
-rw-r--r--usr.sbin/named/dmalloc.h2
-rw-r--r--usr.sbin/named/named.h2
-rw-r--r--usr.sbin/named/ns_defs.h2
-rw-r--r--usr.sbin/named/ns_forw.c2
-rw-r--r--usr.sbin/named/ns_func.h2
-rw-r--r--usr.sbin/named/ns_glob.h2
-rw-r--r--usr.sbin/named/ns_main.c2
-rw-r--r--usr.sbin/named/ns_maint.c2
-rw-r--r--usr.sbin/named/ns_req.c2
-rw-r--r--usr.sbin/named/ns_resp.c2
-rw-r--r--usr.sbin/named/ns_sort.c2
-rw-r--r--usr.sbin/named/ns_stats.c2
-rw-r--r--usr.sbin/named/options.h2
-rw-r--r--usr.sbin/named/pathnames.h2
-rw-r--r--usr.sbin/named/portability.h2
-rw-r--r--usr.sbin/named/storage.c2
-rw-r--r--usr.sbin/named/tools/named.reload/named.reload.sh2
-rw-r--r--usr.sbin/named/tools/named.restart/Makefile2
-rw-r--r--usr.sbin/named/tools/named.restart/named.restart.82
-rw-r--r--usr.sbin/named/tools/named.restart/named.restart.sh2
-rw-r--r--usr.sbin/named/tools/nsquery/nsquery.c2
-rw-r--r--usr.sbin/named/tools/nstest/nstest.c2
-rw-r--r--usr.sbin/named/tree.h2
-rw-r--r--usr.sbin/named/xfer/named-xfer.c2
-rw-r--r--usr.sbin/ncrcontrol/ncrcontrol.82
-rw-r--r--usr.sbin/ncrcontrol/ncrcontrol.c2
-rw-r--r--usr.sbin/nslookup/debug.c2
-rw-r--r--usr.sbin/nslookup/getinfo.c2
-rw-r--r--usr.sbin/nslookup/list.c2
-rw-r--r--usr.sbin/nslookup/main.c2
-rw-r--r--usr.sbin/nslookup/nslookup.help2
-rw-r--r--usr.sbin/nslookup/pathnames.h2
-rw-r--r--usr.sbin/nslookup/res.h2
-rw-r--r--usr.sbin/nslookup/send.c2
-rw-r--r--usr.sbin/nslookup/skip.c2
-rw-r--r--usr.sbin/nslookup/subr.c2
-rw-r--r--usr.sbin/pcvt/kbdio/kbdio.y7
-rw-r--r--usr.sbin/pcvt/kbdio/lex.l7
-rw-r--r--usr.sbin/pcvt/set2061/compiler.h2
-rw-r--r--usr.sbin/pcvt/vgaio/lex.l6
-rw-r--r--usr.sbin/pcvt/vgaio/vgaio.82
-rw-r--r--usr.sbin/pcvt/vgaio/vgaio.h3
-rw-r--r--usr.sbin/pcvt/vgaio/vgaio.y6
-rw-r--r--usr.sbin/pkg_install/add/add.h2
-rw-r--r--usr.sbin/pkg_install/add/extract.c2
-rw-r--r--usr.sbin/pkg_install/add/futil.c2
-rw-r--r--usr.sbin/pkg_install/add/main.c2
-rw-r--r--usr.sbin/pkg_install/add/perform.c2
-rw-r--r--usr.sbin/pkg_install/create/create.h2
-rw-r--r--usr.sbin/pkg_install/create/main.c2
-rw-r--r--usr.sbin/pkg_install/create/perform.c2
-rw-r--r--usr.sbin/pkg_install/create/pkg_create.12
-rw-r--r--usr.sbin/pkg_install/create/pl.c2
-rw-r--r--usr.sbin/pkg_install/delete/delete.h2
-rw-r--r--usr.sbin/pkg_install/delete/main.c2
-rw-r--r--usr.sbin/pkg_install/delete/perform.c2
-rw-r--r--usr.sbin/pkg_install/info/info.h2
-rw-r--r--usr.sbin/pkg_install/info/main.c2
-rw-r--r--usr.sbin/pkg_install/info/perform.c2
-rw-r--r--usr.sbin/pkg_install/info/show.c2
-rw-r--r--usr.sbin/pkg_install/lib/exec.c2
-rw-r--r--usr.sbin/pkg_install/lib/file.c2
-rw-r--r--usr.sbin/pkg_install/lib/ftp.c2
-rw-r--r--usr.sbin/pkg_install/lib/global.c2
-rw-r--r--usr.sbin/pkg_install/lib/lib.h2
-rw-r--r--usr.sbin/pkg_install/lib/msg.c2
-rw-r--r--usr.sbin/pkg_install/lib/pen.c2
-rw-r--r--usr.sbin/pkg_install/lib/plist.c2
-rwxr-xr-xusr.sbin/pkg_install/tkpkg6
-rw-r--r--usr.sbin/pkg_manage/Makefile2
-rw-r--r--usr.sbin/ppp/Makefile2
-rw-r--r--usr.sbin/ppp/arp.c2
-rw-r--r--usr.sbin/ppp/async.c2
-rw-r--r--usr.sbin/ppp/auth.c2
-rw-r--r--usr.sbin/ppp/auth.h2
-rw-r--r--usr.sbin/ppp/ccp.c2
-rw-r--r--usr.sbin/ppp/ccp.h2
-rw-r--r--usr.sbin/ppp/cdefs.h2
-rw-r--r--usr.sbin/ppp/chap.c2
-rw-r--r--usr.sbin/ppp/chap.h2
-rw-r--r--usr.sbin/ppp/chat.c2
-rw-r--r--usr.sbin/ppp/command.c2
-rw-r--r--usr.sbin/ppp/command.h2
-rw-r--r--usr.sbin/ppp/defs.h2
-rw-r--r--usr.sbin/ppp/filter.c2
-rw-r--r--usr.sbin/ppp/filter.h2
-rw-r--r--usr.sbin/ppp/fsm.c2
-rw-r--r--usr.sbin/ppp/fsm.h2
-rw-r--r--usr.sbin/ppp/global.h2
-rw-r--r--usr.sbin/ppp/hdlc.c2
-rw-r--r--usr.sbin/ppp/hdlc.h2
-rw-r--r--usr.sbin/ppp/ip.c2
-rw-r--r--usr.sbin/ppp/ipcp.c2
-rw-r--r--usr.sbin/ppp/ipcp.h2
-rw-r--r--usr.sbin/ppp/lcp.c2
-rw-r--r--usr.sbin/ppp/lcp.h2
-rw-r--r--usr.sbin/ppp/lcpproto.h2
-rw-r--r--usr.sbin/ppp/log.c2
-rw-r--r--usr.sbin/ppp/log.h2
-rw-r--r--usr.sbin/ppp/lqr.c2
-rw-r--r--usr.sbin/ppp/lqr.h2
-rw-r--r--usr.sbin/ppp/main.c2
-rw-r--r--usr.sbin/ppp/mbuf.c2
-rw-r--r--usr.sbin/ppp/mbuf.h2
-rw-r--r--usr.sbin/ppp/md5.h2
-rw-r--r--usr.sbin/ppp/md5c.c2
-rw-r--r--usr.sbin/ppp/modem.c2
-rw-r--r--usr.sbin/ppp/modem.h2
-rw-r--r--usr.sbin/ppp/os.c2
-rw-r--r--usr.sbin/ppp/os.h2
-rw-r--r--usr.sbin/ppp/pap.c2
-rw-r--r--usr.sbin/ppp/pap.h2
-rw-r--r--usr.sbin/ppp/pathnames.h2
-rw-r--r--usr.sbin/ppp/phase.h2
-rw-r--r--usr.sbin/ppp/ppp.82
-rw-r--r--usr.sbin/ppp/pred.c2
-rw-r--r--usr.sbin/ppp/route.c2
-rw-r--r--usr.sbin/ppp/slcompress.c2
-rw-r--r--usr.sbin/ppp/slcompress.h4
-rw-r--r--usr.sbin/ppp/systems.c2
-rw-r--r--usr.sbin/ppp/timeout.h2
-rw-r--r--usr.sbin/ppp/timer.c2
-rw-r--r--usr.sbin/ppp/uucplock.c2
-rw-r--r--usr.sbin/ppp/vars.c4
-rw-r--r--usr.sbin/ppp/vars.h2
-rw-r--r--usr.sbin/ppp/vjcomp.c2
-rw-r--r--usr.sbin/pppd/Makefile2
-rw-r--r--usr.sbin/pppd/args.h2
-rw-r--r--usr.sbin/pppd/auth.c2
-rw-r--r--usr.sbin/pppd/callout.h2
-rw-r--r--usr.sbin/pppd/chap.c2
-rw-r--r--usr.sbin/pppd/chap.h2
-rw-r--r--usr.sbin/pppd/fsm.c2
-rw-r--r--usr.sbin/pppd/fsm.h2
-rw-r--r--usr.sbin/pppd/ipcp.c2
-rw-r--r--usr.sbin/pppd/ipcp.h2
-rw-r--r--usr.sbin/pppd/lcp.c2
-rw-r--r--usr.sbin/pppd/lcp.h2
-rw-r--r--usr.sbin/pppd/lock.c2
-rw-r--r--usr.sbin/pppd/magic.c2
-rw-r--r--usr.sbin/pppd/magic.h2
-rw-r--r--usr.sbin/pppd/main.c2
-rw-r--r--usr.sbin/pppd/options.c2
-rw-r--r--usr.sbin/pppd/patchlevel.h2
-rw-r--r--usr.sbin/pppd/pathnames.h2
-rw-r--r--usr.sbin/pppd/ppp.h2
-rw-r--r--usr.sbin/pppd/pppd.82
-rw-r--r--usr.sbin/pppd/pppd.h2
-rw-r--r--usr.sbin/pppd/sys-bsd.c2
-rw-r--r--usr.sbin/pppd/upap.c2
-rw-r--r--usr.sbin/pppd/upap.h2
-rw-r--r--usr.sbin/pppstats/Makefile2
-rw-r--r--usr.sbin/pppstats/pppstats.c2
-rw-r--r--usr.sbin/pstat/pstat.82
-rw-r--r--usr.sbin/rarpd/Makefile2
-rw-r--r--usr.sbin/rarpd/rarpd.82
-rw-r--r--usr.sbin/rarpd/rarpd.c2
-rw-r--r--usr.sbin/rtprio/Makefile2
-rw-r--r--usr.sbin/rtprio/rtprio.12
-rw-r--r--usr.sbin/rtprio/rtprio.c2
-rw-r--r--usr.sbin/sa/Makefile2
-rw-r--r--usr.sbin/sa/extern.h2
-rw-r--r--usr.sbin/sa/main.c2
-rw-r--r--usr.sbin/sa/pathnames.h2
-rw-r--r--usr.sbin/sa/pdb.c2
-rw-r--r--usr.sbin/sa/sa.82
-rw-r--r--usr.sbin/sa/usrdb.c2
-rw-r--r--usr.sbin/sendmail/cf/README2
-rwxr-xr-xusr.sbin/sendmail/contrib/expn.pl2
-rw-r--r--usr.sbin/sendmail/src/conf.c2
-rw-r--r--usr.sbin/sgsc/Makefile2
-rw-r--r--usr.sbin/sicontrol/sicontrol.82
-rw-r--r--usr.sbin/sicontrol/sicontrol.c2
-rw-r--r--usr.sbin/slstat/Makefile2
-rw-r--r--usr.sbin/slstat/slstat.c2
-rw-r--r--usr.sbin/sysctl/sysctl.82
-rw-r--r--usr.sbin/sysctl/sysctl.c2
-rw-r--r--usr.sbin/tcpdump/tcpdump/Makefile2
-rw-r--r--usr.sbin/tcpdump/tcpdump/addrtoname.c2
-rw-r--r--usr.sbin/tcpdump/tcpdump/addrtoname.h2
-rw-r--r--usr.sbin/tcpdump/tcpdump/appletalk.h2
-rw-r--r--usr.sbin/tcpdump/tcpdump/bootp.h2
-rw-r--r--usr.sbin/tcpdump/tcpdump/bpf_dump.c2
-rw-r--r--usr.sbin/tcpdump/tcpdump/decnet.h2
-rw-r--r--usr.sbin/tcpdump/tcpdump/ethertype.h2
-rw-r--r--usr.sbin/tcpdump/tcpdump/extract.h2
-rw-r--r--usr.sbin/tcpdump/tcpdump/fddi.h2
-rw-r--r--usr.sbin/tcpdump/tcpdump/interface.h2
-rw-r--r--usr.sbin/tcpdump/tcpdump/ipx.h2
-rw-r--r--usr.sbin/tcpdump/tcpdump/llc.h2
-rw-r--r--usr.sbin/tcpdump/tcpdump/md.h2
-rw-r--r--usr.sbin/tcpdump/tcpdump/nfsfh.h2
-rw-r--r--usr.sbin/tcpdump/tcpdump/ntp.h2
-rw-r--r--usr.sbin/tcpdump/tcpdump/os.h2
-rw-r--r--usr.sbin/tcpdump/tcpdump/parsenfsfh.c2
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-arp.c2
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-atalk.c2
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-bootp.c2
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-decnet.c2
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-domain.c2
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-egp.c2
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-ether.c2
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-fddi.c2
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-icmp.c2
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-ip.c2
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-ipx.c2
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-isoclns.c2
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-krb.c2
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-llc.c2
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-nfs.c2
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-ntp.c2
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-null.c2
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-ospf.c2
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-ppp.c2
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-rip.c2
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-sl.c2
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-snmp.c2
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-sunrpc.c2
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-tcp.c2
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-tftp.c2
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-udp.c2
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-wb.c2
-rw-r--r--usr.sbin/tcpdump/tcpdump/tcpdump.12
-rw-r--r--usr.sbin/tcpdump/tcpdump/tcpdump.c2
-rw-r--r--usr.sbin/tcpdump/tcpdump/util.c2
-rw-r--r--usr.sbin/tcpdump/tcpslice/gwtm2secs.c2
-rw-r--r--usr.sbin/tcpdump/tcpslice/search.c2
-rw-r--r--usr.sbin/tcpdump/tcpslice/tcpslice.12
-rw-r--r--usr.sbin/tcpdump/tcpslice/tcpslice.c2
-rw-r--r--usr.sbin/tcpdump/tcpslice/util.c2
-rw-r--r--usr.sbin/timed/timed/acksend.c2
-rw-r--r--usr.sbin/timed/timed/byteorder.c2
-rw-r--r--usr.sbin/timed/timed/candidate.c2
-rw-r--r--usr.sbin/timed/timed/cksum.c2
-rw-r--r--usr.sbin/timed/timed/correct.c2
-rw-r--r--usr.sbin/timed/timed/globals.h2
-rw-r--r--usr.sbin/timed/timed/master.c2
-rw-r--r--usr.sbin/timed/timed/measure.c2
-rw-r--r--usr.sbin/timed/timed/networkdelta.c2
-rw-r--r--usr.sbin/timed/timed/readmsg.c2
-rw-r--r--usr.sbin/timed/timed/slave.c2
-rw-r--r--usr.sbin/timed/timed/timed.c2
-rw-r--r--usr.sbin/timed/timedc/cmds.c2
-rw-r--r--usr.sbin/timed/timedc/timedc.c2
-rw-r--r--usr.sbin/tzsetup/Makefile2
-rw-r--r--usr.sbin/tzsetup/main.c2
-rw-r--r--usr.sbin/tzsetup/tzmenu.c2
-rw-r--r--usr.sbin/tzsetup/tzsetup.h2
-rw-r--r--usr.sbin/vidcontrol/decode.c2
-rw-r--r--usr.sbin/vidcontrol/vidcontrol.c2
-rw-r--r--usr.sbin/vnconfig/Makefile2
-rw-r--r--usr.sbin/xntpd/Makefile2
-rw-r--r--usr.sbin/xntpd/README.FreeBSD2
-rw-r--r--usr.sbin/xntpd/authstuff/Makefile2
-rw-r--r--usr.sbin/xntpd/clockstuff/Makefile2
-rw-r--r--usr.sbin/xntpd/kernel/chuinit.c2
-rw-r--r--usr.sbin/xntpd/kernel/clkinit.c2
-rw-r--r--usr.sbin/xntpd/lib/Makefile2
-rw-r--r--usr.sbin/xntpd/lib/machines.c2
-rw-r--r--usr.sbin/xntpd/ntpdate/Makefile2
-rw-r--r--usr.sbin/xntpd/ntpq/Makefile2
-rw-r--r--usr.sbin/xntpd/ntptrace/Makefile2
-rw-r--r--usr.sbin/xntpd/parse/Makefile2
-rw-r--r--usr.sbin/xntpd/parse/clk_trimtaip.c7
-rw-r--r--usr.sbin/xntpd/parse/clk_trimtsip.c5
-rw-r--r--usr.sbin/xntpd/parse/util/Makefile2
-rw-r--r--usr.sbin/xntpd/parse/util/parsetest.c3
-rw-r--r--usr.sbin/xntpd/util/Makefile2
-rw-r--r--usr.sbin/xntpd/xntpd/Makefile2
-rw-r--r--usr.sbin/xntpd/xntpdc/Makefile2
-rw-r--r--usr.sbin/ypbind/Makefile2
-rw-r--r--usr.sbin/ypbind/ypbind.82
-rw-r--r--usr.sbin/ypbind/ypbind.c2
-rw-r--r--usr.sbin/yppoll/Makefile2
-rw-r--r--usr.sbin/ypset/Makefile2
-rw-r--r--usr.sbin/zic/Makefile2
-rw-r--r--usr.sbin/zic/Makefile.inc2
-rw-r--r--usr.sbin/zic/zdump/Makefile2
-rw-r--r--usr.sbin/zic/zic/Makefile2
3861 files changed, 64738 insertions, 74119 deletions
diff --git a/Makefile b/Makefile
index e04fc63469ae..3680d801b860 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.57.4.7 1995/11/09 10:57:04 jkh Exp $
+# $Id: Makefile,v 1.57.4.8 1995/11/10 03:06:55 jkh Exp $
#
# Make command line options:
# -DCLOBBER will remove /usr/include and MOST of /usr/lib
diff --git a/TODO b/TODO
index 6ffde49d9af9..260b000ea8ca 100644
--- a/TODO
+++ b/TODO
@@ -1,4 +1,4 @@
-; $Id: TODO,v 1.11 1995/04/05 13:16:30 jkh Exp $
+; $Id: TODO,v 1.12 1995/04/23 21:34:23 paul Exp $
** To skip this preamble, search forward for the pattern `**'.
diff --git a/TODO-2.1/README b/TODO-2.1/README
new file mode 100644
index 000000000000..2ff3e6a1779e
--- /dev/null
+++ b/TODO-2.1/README
@@ -0,0 +1,16 @@
+This directory contains the "TODO" files for various core team members.
+This gives interested parties external to the project some idea as
+to just what exactly it is that we're doing over here!
+
+If something on one of these lists catches your eye as something you think
+you may be able to render valuable assistance with, please! By all means
+send mail to the member owning the list (<name>@FreeBSD.org). Chances are good
+they'll more than appreciate hearing from you. By the the same token, however,
+please do NOT send "when will this be done?" or "yes! please!" sorts of
+messages to the core team. If something is on one of these lists it's
+because the team member in question really WANTS to do it and must now simply
+wrestle with the demons of time, sleep and hunger in trying to get it
+done before the freeze date. If you want to make anything on any of these
+lists go faster, offer to help! :-) Thanks!
+
+ Jordan
diff --git a/TODO-2.1/asami b/TODO-2.1/asami
new file mode 100644
index 000000000000..7c70b79c5580
--- /dev/null
+++ b/TODO-2.1/asami
@@ -0,0 +1,61 @@
+# TODO File for core-team member: Satoshi Asami
+# Revision: $Id: asami,v 1.7.4.1 1995/09/18 08:56:14 davidg Exp $
+#
+# This is my publically readable TODO file, showing the things I have
+# on my TODO list for 2.1/2.2. Comments (intelligent ones, anyway :)
+# always welcome!
+#
+-*----------------------------------------------------------------------------*-
+
+Update: Thu Apr 6 08:47:09 PDT 1995
+Due: Unspecified
+Prio: High
+Task: Get Some Sleep.
+
+Seems like this one is mandatory. :)
+
+-*-
+
+Update: Wed May 17 07:08:07 PDT 1995
+Due: Before 2.2
+Prio: Medium
+Task: Clean up bsd.port.mk
+Status: (1) is done.
+
+There are a couple of ideas here:
+
+(1) Standardize the pre-* and post-* targets.
+
+(2) Re-think the defaults of the variables. The "good" Makefiles are
+ so terse it's hard to find out how you're supposed to modify it
+ unless your port is extremely "standard".
+
+-*-
+
+Update: Wed May 17 07:08:07 PDT 1995
+Due: Not specified
+Prio: High
+Task: A graphical front-end for port/package installation
+
+Status: Erin MacNeil (erin@emn.ocunix.on.ca) is working on tkpkg now.
+
+-*-
+
+Update: Thu Apr 6 08:44:01 PDT 1995
+Due: Sometime in the future
+Prio: Would be great if it worked
+Task: A graphical front-end for making ports
+
+Yes, I know it's a pipe dream...but don't you think it will be great
+if you can make a port by just modifying the source, and then giving
+that and the original to a tk program, clicking the buttons the rest
+of the way?
+
+-*-
+
+Update: Thu Apr 6 08:39:07 PDT 1995
+Due: If I ever get to it
+Prio: Would be really great
+Task: Write a bestseller "ports for dummies"
+
+...and become rich! :)
diff --git a/TODO-2.1/core-team b/TODO-2.1/core-team
new file mode 100644
index 000000000000..36d71d47e899
--- /dev/null
+++ b/TODO-2.1/core-team
@@ -0,0 +1,93 @@
+# TODO File for the core-team as such.
+# Revision: $Id: core-team,v 1.6 1995/05/30 06:45:57 rgrimes Exp $
+#
+# This is things and issues the coreteam need to resolve.
+#
+-*----------------------------------------------------------------------------*-
+
+Update: Thu Apr 20 01:09:59 PDT 1995
+Due: Apr 22 1995
+Prio: High
+Task: Should the files in the src-dist be "cvs co"'ed or "cvs export"'ed.
+
+Pro cvs co:
+
+ cvs Id's and other magic stuff survives, so it people send us a
+ patch we don't risk loosing the cvs $Id: core-team,v 1.6 1995/05/30 06:45:57 rgrimes Exp $ info.
+
+Pro cvs export:
+
+ If people import our source to a foreign cvs/rcs tree, we will not
+ loose our $Id: core-team,v 1.6 1995/05/30 06:45:57 rgrimes Exp $ info.
+
+Contra cvs export:
+
+ The diff (& ctm-delta) to current is big for no good reason.
+
+-*-
+
+Update: Thu Apr 20 01:09:59 PDT 1995
+Due: Apr 22 1995
+Prio: High
+Task: RELEASE/RELDATE strings
+
+Should we set the RELEASE to "CURRENT-yyyymmdd" as default in current
+and fix it up in src/release/Makefile ?
+
+Should we set RELDATE to this month, or administratively at release time.
+
+Pro "this month": We would get better granularity for -current).
+
+Pro "admin": Thats the way Garrett meant it to be.
+
+-*-
+
+Update: Wed Apr 26 03:36:18 PDT 1995
+Due: Apr 22 1995
+Prio: High
+Task: The name of 2.0.foo
+State: Closed
+
+2.0.5 ... 2.0.9 or 2.1 ?
+
+Contra 2.0.5: pcvt jumped ahead of us :-/
+
+[It has been declared by executive decision of the new release engineer (me)
+ to be 2.0.5, period. I needed to tell the artists something while everyone
+ was still wranging. It's too late. You will call it 2.0.5 and you will
+ like it. :-) -jkh]
+-*-
+
+Update: Mon Apr 24 17:48:20 PDT 1995
+Due: Apr 27 1995
+Prio: Low
+Task: Change to config
+
+While I can see the general idea that config will generate a
+ -D<KERNELNAME>
+I have now received several emails from people with kernels named "DEBUG"
+and thats not fun.
+
+Would the world end if config was changed to generate
+ -DKERNEL_<KERNELNAME>
+instead ?
+
+-*-
+
+Update: Mon Apr 24 22:20:29 PDT 1995
+Due: Apr 30th 1995
+Prio: High
+Task: Decide on mailinglist <-> newsgroup connection
+
+1) Should we gate -hackers into a newsgroup
+ 1-1-A) should we gate the newsgroup back ?
+ or
+ 1-1-B) use some header to direct replies back
+
+ 1-2) What newsgroup
+
+2) as above, but -questions
+
+3) as above, but -current
+
+-*-
diff --git a/TODO-2.1/dyson b/TODO-2.1/dyson
new file mode 100644
index 000000000000..5fa0a445457d
--- /dev/null
+++ b/TODO-2.1/dyson
@@ -0,0 +1,58 @@
+# TODO File for core-team member: John Dyson
+# Revision: $Id: dyson,v 1.1 1995/04/10 06:10:05 dyson Exp $
+#
+# This is my publically readable TODO file, showing the things I have on
+# my TODO list.
+#
+-*----------------------------------------------------------------------------*-
+
+Update: Sun Apr 9, 1995
+Due: 2.2, maybe 2.1
+Prio: High
+Task: Implement full VOP_GETPAGE/VOP_PUTPAGE interface
+
+The current vnode pager violates the vfs layering. Prototype mods have
+already been implemented. Since the VM system and VFS systems are
+central to the reliable operation of the system, and other filesystems will
+be worked on by 2.1, this change will be added to 2.1 only if it is very
+smooth to integrate. It will probably be placed into -current immediately
+after 2.1 release, before which I will have tested the code. The good side
+of the 2.1 or pre 2.1 implementation is that it currently has no known
+negative side-effects and is about as CPU efficient as it can get.
+
+
+Update: Sun Apr 9, 1995
+Due: 2.2
+Prio: Medium
+Task: Implement proper page fault handling of non-page aligned (offset 1k
+ or other) binary formats.
+
+The task says it all. Currently, some of the non-native executable loaders
+have work-arounds for this.
+
+
+Update: Sun Apr 9, 1995
+Due: 2.2
+Prio: Medium
+Task: Change the object page list into a tree representation.
+
+Since we now have a properly working merged-VM buffer cache mechanism, it
+is likely that more file modifications will be done by the mmap mechanism.
+Unfortunately, some of the VM data structures inherited from MACH are not
+very efficient at handling this kind of output. We will implement a much
+more efficient method of handling the flushing of modified pages. This
+is a very basic and simple change, and will have the added benefit of
+improving the efficiency of ordered traversal of pages in objects in general.
+
+Update: Sun Apr 9, 1995
+Due: 2.2, maybe 2.1
+Prio: Medium
+Task: Allow simple paging to files, and turning off such paging
+
+We currently can page to files through the vn device. This is a bit
+of hackery -- and there is no way to turn off paging to such a file. If
+there is enough swap space, it should be easy to turn off paging to either
+an explicit swap file or paging to/from any physical device, and force
+the swap/page-ins.
+
+
diff --git a/TODO-2.1/gibbs b/TODO-2.1/gibbs
new file mode 100644
index 000000000000..234e8405b50b
--- /dev/null
+++ b/TODO-2.1/gibbs
@@ -0,0 +1,65 @@
+# TODO File for core-team member: Justin Gibbs
+# Revision: $Id: gibbs,v 1.1 1995/07/03 22:04:37 gibbs Exp $
+#
+# This list contains my medium term goals (three month time frames). Feel
+# free to contact me on any of these issues.
+#
+-*----------------------------------------------------------------------------*-
+
+Update: Mon Jul 3, 1995
+Due: Mid Jul
+Prio: High
+Task: Adaptec 27/28/29/3940 driver house cleaning.
+
+The current aic7xxx driver, although quite stable, still has many weak
+points.
+
+1) The abort code is incomplete and insufficient to handle most errors.
+The code should first perform a bus device reset and resort to a full
+bus reset only if that fails. The clean up after a bus reset currently
+doesn't account for commands other than the command that was the cause
+of the abort, so they are not reported properly to the upper level
+SCSI code.
+
+2) The scatter gather sequencer code was an abomination. I've rewritten
+it, but in making it faster, I've exposed some race conditions in the
+Twin channel support that I'm in the process of diagnosing.
+
+3) I'd like to be able to have active selections on both busses of a twin
+channeled adapter at a time. This may come about while I fix #2.
+
+4) Add support for the 3940 controller. I've already got this in my "alpha"
+driver I'm working on, but I need to test being able to handle 255 commands.
+
+Update: Mon Jul 3, 1995
+Due: 2.1
+Prio: High
+Task: Implement proper tagged queuing functionality and better error
+ handling in the SCSI subsystem.
+
+A major week point in the SCSI system is how it handles tape devices. It
+doesn't allow any retries irregardless of the type of error encountered.
+For example, a "device busy" statis is not a failure (many devices give
+this statis when they are repositioning the tape), but will abort the I/O.
+Whenever this type of abort occurs (this is the "Oops, not queued" error),
+the VM system for some reason believes that buffer is already run down even
+though is hasn't been touched at all. Other weak points are parity errors,
+and sense keys that signal command aborts.
+
+Update: Mon Jul 3, 1995
+Due: 2.1
+Prio: High
+Task: Better support for removable r/w SCSI devices.
+
+Chuck Robey has sent me a Zip drive to work on this with, but I haven't
+had a chance to look at how difficult this task will be.
+
+Update: Mon Jul 3, 1995
+Due: 2.2 possibly 2.1
+Prio: Medium
+Task: Get LFS to work
+
+Subject says it all. This entailes updating LFS to the new VM system and
+killing many places in the code where it "doesn't play by the rules." How
+soon I get to start working on this task will depend on how well the other
+tasks go on my list.
diff --git a/TODO-2.1/gpalmer b/TODO-2.1/gpalmer
new file mode 100644
index 000000000000..2e2592ff620b
--- /dev/null
+++ b/TODO-2.1/gpalmer
@@ -0,0 +1,66 @@
+# TODO File for core-team member: Gary Palmer
+# Revision: $Id: gpalmer,v 1.3.4.1 1995/09/18 08:56:15 davidg Exp $
+#
+# This is my publically readable TODO file, showing the things I have on
+# my TODO list for 2.1.
+#
+-*----------------------------------------------------------------------------*-
+
+Update: Thu Apr 27 23:58:46 PDT 1995
+Due: April 29th
+Prio: High
+Task: Run a gcc -Wall on LINT and see what it says
+Status: Underway.
+
+Some of the warnings generated may well be the result of true errors. Go
+through the output of this and see which ones are simply poor coding
+practice and which ones are actual errors.
+-*-
+
+Update: Thu Apr 27 23:58:46 PDT 1995
+Due: April 29th
+Prio: High
+Task: Fix mkisofs
+
+Make mkisofs be a little less pathological in its dealings with "non-optional
+optional flags" and stop asserting all over the place.
+-*-
+
+Update: Thu Apr 27 23:58:46 PDT 1995
+Due: April 30th
+Prio: High
+Task: Write some scripts for CD-ifying the ports and packages collection
+
+I'm not sure what's involved here, but we need some release tools for
+bundling up a `portsdist'.
+-*-
+
+Update: Thu Apr 27 23:58:46 PDT 1995
+Due: April 30th
+Prio: High
+Task: Come up with canonical supfiles.
+Status: Done (?)
+
+The canonical supfiles are out of date. Fix them.
+
+-*-
+
+Update: Sun Apr 30 07:36:04 PDT 1995
+Due: April 30th
+Prio: High
+Task: Go through the GNATS database closing off dead bugs
+
+There are bugs still ``open'' in the GNATS database which are no longer
+present. Correct the situation.
+-*-
+
+Update: Wed Jul 12 17:52:51 PDT 1995
+Due: Soonish
+Prio: High
+Task: Firewall related work
+Status: open
+
+There is still a lot of work waiting to be done on out firewall
+implimentation, particularly on the doc / front end side, and I
+have a feeling there may be a lurking bug in there yet.
+-*-
diff --git a/TODO-2.1/jkh b/TODO-2.1/jkh
new file mode 100644
index 000000000000..fc952c3a4f4c
--- /dev/null
+++ b/TODO-2.1/jkh
@@ -0,0 +1,78 @@
+# TODO File for core-team member: Jordan Hubbard
+# Revision: $Id: jkh,v 1.6 1995/05/16 05:32:58 jkh Exp $
+#
+# This is my publically readable TODO file, showing the things I have on
+# my TODO list for 2.1. Comments (intelligent ones, anyway :) always
+# welcome!
+#
+-*----------------------------------------------------------------------------*-
+
+Update: Mon May 15 22:30:05 PDT 1995
+Due: Closed
+Prio: High
+Task: Forms language spec and first implementation for "ncurses graphics"
+
+Finish this up with the install-geeks after Paul gets back from Tallin
+(lucky dog). Need to have the first few screens up and in the generally
+planned framework before any of this will really start to make sense.
+
+[Closed: This is no longer a 2.1 item]
+-*-
+
+Update: Mon May 15 22:30:05 PDT 1995
+Due: Mid-April
+Prio: Closed
+Task: Investigate libftp.
+
+Need to see if libftp can let me dump ncftp from the boot floppy and
+use a more directly controlled (error handling and timeouts! yes!) ftp
+interface directly from sysinstall. This would also allow me to fetch
+index files on the fly and digest their contents easily. How about a
+scheme that elimiated the temp files on your HD during an ftp install at
+all? Just fork and have the child end feed you the pieces down a pipe
+in order, that'd work! Libftp definitely has possibilities.
+
+[Closed: libftp doesn't support passive mode transfers and is therefore
+useless for my purposes]
+-*-
+
+Update: Mon May 15 22:30:05 PDT 1995
+Due: late-May
+Prio: High
+Task: Reorganise the /etc/*ly crud.
+
+I can't stand it. I have to do it. I promise to at least plan it
+out in advance before doing anything this time! Honest! :-)
+[Revised due-date: This won't happen right away]
+-*-
+
+Update: Mon May 15 22:30:05 PDT 1995
+Due: end-May
+Prio: High
+Task: Identify the default docfile browser and get it into the system.
+
+Something is going to be invoked on our docfiles as part of the
+installation (what happens when you type F1) and I'd like to make sure
+I know what it is (Lynx? info? Something else?).
+[Revised due-date: This isn't going to make it into 2.0.5, clearly]
+-*-
+
+Update: Mon May 15 22:30:05 PDT 1995
+Due: Mid-April
+Prio: Finished
+Task: Fix the broken pkg_delete command
+
+Either John's changes or my merging of those changes really hosed pkg_delete
+and the delete routines used by pkg_add as well.
+[Closed: Problem was fixed]
+-*-
+
+Update: Mon May 15 22:30:05 PDT 1995
+Due: ?
+Prio: Med
+Task: Update pkg_install to not rely on libftp.
+
+libftp doesn't handle passive ftp connections, making it useless
+for firewall situations. pkg_install needs to stop relying on it
+for this reason.
+-*-
diff --git a/TODO-2.1/joerg b/TODO-2.1/joerg
new file mode 100644
index 000000000000..bdbbd3d620c8
--- /dev/null
+++ b/TODO-2.1/joerg
@@ -0,0 +1,56 @@
+# TODO File for: Joerg Wunsch
+# Revision: $Id: joerg,v 1.5.4.1 1995/09/18 08:56:17 davidg Exp $
+#
+# This is my publically readable TODO file, showing the things I have on
+# my TODO list for 2.1. Comments (intelligent ones, anyway :) always
+# welcome!
+#
+-*----------------------------------------------------------------------------*-
+
+Update: Sat Apr 8 14:32:56 MET DST 1995
+Due: mid april
+Prio: high
+Task: Silence floppy error messages
+
+The floppy error messages require a cleanup.
+-*-
+
+Update: Sat Apr 8 14:32:56 MET DST 1995
+Due: end april
+Prio: medium
+Task: Repair EOF handling in floppy driver
+
+>> The floppy device driver returns 0 for attempted reads from and writes
+>> to precisely the end of the disk. It returns -1 and sets errno to
+>> ENOSPC for reads and writes that would cross the end of the disk or are
+>> strictly beyond the end.
+-*-
+
+Update: Sat Apr 8 14:32:56 MET DST 1995
+Due: ongoing work
+Prio: medium
+Task: keep pcvt in -current up to date
+
+Merge Hellmuth Michaelis' betas and the expected release of pcvt-3.20
+into the -current sources.
+-*-
+
+Update: Wed Jun 14 08:27:44 MET DST 1995
+Due: 2.1
+Prio: low
+Task: QFA changes to st(4)/mt(1)
+
+Date: Mon, 22 May 1995 20:23:07 +0100
+From: Philippe Causse <caussep@osiris.cpc.wmin.ac.uk>
+Message-Id: <199505221923.UAA09024@osiris.cpc.wmin.ac.uk>
+To: hackers@FreeBSD.org
+CC: caussep@osiris.cpc.wmin.ac.uk
+Subject: Patches...
+
+ -> in /usr/src/sys/scsi/(st.c,scsi_tape.h)
+ -> and /usr/src/usr.bin/mt.*
+I added QFA (quick file access) commands which can be used on the
+Archive Viper 150 (SCSI-1, 250Mb, QIC-150). You can do
+"mt tell" and "mt seek blk_no", see the updated manpage.
+-*-
+
diff --git a/TODO-2.1/nate b/TODO-2.1/nate
new file mode 100644
index 000000000000..4eb39cacb38c
--- /dev/null
+++ b/TODO-2.1/nate
@@ -0,0 +1,37 @@
+# TODO File for core-team member: Nate Williams
+# Revision: $Id: nate,v 1.2 1995/05/30 06:45:58 rgrimes Exp $
+#
+# This is my publically readable TODO file, showing the things I have on
+# my TODO list for 2.1. Comments (intelligent ones, anyway :) always
+# welcome!
+#
+-*----------------------------------------------------------------------------*-
+
+Update: Thu Apr 6 22:24:38 PDT 1995
+Due: Before 2.1
+Prio: High
+Task: Fix the linker to enforce command line order linking when mixing
+ static/shared libraries.
+
+The state of affairs of the linker when mixing static and shared
+libraries is non-intuitive. A program can have completely different
+runtime behavior dependant on if it compiled shared/static, which is
+bogus IMHO. This 'feature' crops up in many unrelated areas of FreeBSD
+and needs to be resolved correctly. Unfortunately, it may require a
+complete re-write of some of the underlying functions in both ld and
+ld.so.
+
+-*-
+
+Update: Thu Apr 6 22:24:38 PDT 1995
+Due: Unspcified
+Prio: Low
+Task: Integrate the VM86() patches posted on the NetBSD mailing list
+ into FreeBSD for inclusion as an 'experimental' project
+
+John Kohl posted patches to the NetBSD mailing list to implement a
+vm86() call. These patches do not patch cleanly into FreeBSD, and may
+not even work after they do. I'd like to get them in so that people can
+go off and try things with at least a basis to start from.
+
+-*-
diff --git a/TODO-2.1/phk b/TODO-2.1/phk
new file mode 100644
index 000000000000..fccc42207c36
--- /dev/null
+++ b/TODO-2.1/phk
@@ -0,0 +1,106 @@
+# TODO File for core-team member: Poul-Henning Kamp
+# Revision: $Id: phk,v 1.4 1995/05/30 06:45:59 rgrimes Exp $
+#
+# This is my publically readable TODO file, showing the things I have on
+# my TODO list for 2.1. Comments (intelligent ones, anyway :) always
+# welcome!
+#
+-*----------------------------------------------------------------------------*-
+
+Update: Thu Apr 6 00:37:50 PDT 1995
+Due: Unspecified
+Prio: High
+Task: Get Much Sleep.
+
+My newborn son is still not clear on the concept of a good nights sleep.
+more later.
+
+-*-
+
+Update: Thu Apr 6 22:15:29 PDT 1995
+Due: 2.1
+Prio: High
+Task: "make release" rule(s)
+
+Make the stuff in src/release do what the install-geeks need it to do.
+
+-*-
+
+Update: Thu Apr 6 22:16:52 PDT 1995
+Due: 2.1
+Prio: Med
+Task: bad144 testing
+
+Now that I finally seem to have got access to an machine with old and
+funcky disks that should be possible
+
+-*-
+
+Update: Thu Apr 6 22:18:38 PDT 1995
+Due: 2.1
+Prio: High
+Task: Boot from CD
+
+Make a boot from CD facility working.
+
+-*-
+
+Update: Thu Apr 6 22:22:10 PDT 1995
+Due: 2.1
+Prio: High
+Task: Write lowlevel code for sysinstall TNG.
+
+The boys will need some routines doing mostly what the old sysinstall did
+too, but interfacing to the new GUI.
+
+-*-
+
+Update: Thu Apr 6 22:54:45 PDT 1995
+Due: 2.1ish
+Prio: Med
+Task: Review, test and commit PCMCIA stuff for Andrew McRae
+
+Andrew is busy doing our PCMCIA support. I have promised to get it into
+the tree.
+
+-*-
+
+Update: Thu Apr 6 22:56:20 PDT 1995
+Due: 2.1
+Prio: Med
+Task: setup "WIP" section
+
+We want a (W)ork (I)n (P)rogress section on the ftp-area and the CD.
+
+-*-
+
+Update: Thu Apr 6 22:58:27 PDT 1995
+Due: 2.1ish
+Prio: Med
+Task: CTM
+
+Continue to champion, architect, code and implement CTM.
+
+-*-
+
+Update: Thu Apr 6 23:00:45 PDT 1995
+Due: 2.1
+Prio: Med
+Task: doc
+
+Produce (better) draft documentation for these areas:
+ CTM
+ lp#
+ gzip execution
+ install (in particular disk layout).
+
+-*-
+
+Update: Thu Apr 13 13:04:34 PDT 1995
+Due: sometime
+Prio: Med
+Task: multiboot
+
+Represent FreeBSD in the "multiboot" forum, and make sure we can use the
+resulting code.
+
diff --git a/TODO-2.1/sos b/TODO-2.1/sos
new file mode 100644
index 000000000000..fda7dc4bca35
--- /dev/null
+++ b/TODO-2.1/sos
@@ -0,0 +1,46 @@
+# TODO File for core-team member: Soren Schmidt
+# Revision: $Id: sos,v 1.2 1995/05/30 06:45:59 rgrimes Exp $
+#
+# This is my publically readable TODO file, showing the things I have on
+# my TODO list for 2.1. Comments (intelligent ones, anyway :) always
+# welcome!
+#
+-*----------------------------------------------------------------------------*-
+
+Update: Wed Apr 5 21:46:44 MET DST 1995
+Due: Before 2.1
+Prio: High
+Task: ata/atapi driver.
+
+Driver for ata3/atapi devices. This is the interface for the newer IDE
+CDROM drives. Basically its thought as a replacement for wd.c, but it
+won't handle old st506/ESDI drives (use wd.c for that).
+Its currently at a state where it can probe the devices, find out their
+type (ata/atapi/disk/cdrom), and initialize them proberly. It will also
+send atapi packets. Currently it can make a disklabel, and open/close
+the tray of my Mitsumi FX400 drive, so the communication is working.
+
+-*-
+
+Update: Wed Apr 5 21:46:44 MET DST 1995
+Due: Before 2.1
+Prio: Medium
+Task: Linux binary support.
+
+LKM module for running Linux binaries. Main goal is to run (you guessed
+it) DOOM. Its now so far that it'l run bash both static and shared, but
+there is still a problem with signal handling/return status.
+
+-*-
+
+Update: Wed Apr 5 21:46:44 MET DST 1995
+Due: Before 2.1
+Prio: Medium
+Task: New socksys driver for iBCS2 support
+
+A new socksys implementation for the iBCS2 support. The current one is
+overly complex (and it doesn't work right), this should clear up the
+situation and actually get us to run WordPerfect..
+
+-*-
+
diff --git a/TODO-2.1/wollman b/TODO-2.1/wollman
new file mode 100644
index 000000000000..d6deefe4c635
--- /dev/null
+++ b/TODO-2.1/wollman
@@ -0,0 +1,37 @@
+# TODO File for core-team member: Garrett Wollman
+# Revision: $Id: wollman,v 1.3 1995/04/25 19:53:24 wollman Exp $
+#
+-*----------------------------------------------------------------------------*-
+
+Update: Fri Apr 07 11:58:56 EDT 1995
+Due: Late April
+Prio: Medium
+Task: Path MTU Discovery
+
+If this can be done quickly, I'll try to do it. Otherwise it's a 2.2
+task.
+-*-
+
+Update: Fri Apr 07 12:00:18 EDT 1995
+Due: Late April
+Prio: Medium
+Task: Packet scheduler hooks
+
+The MIT packet-scheduling kernel is going to have an initial public
+release sometime soon. It is probably not reasonable to import the
+entire distribution into FreeBSD at this time (although this is a
+medium-term goal of mine). However, it may be possible to incorporate
+the hooks which the scheduler has into the rest of the kernel, thus
+making it easier for people who get the MIT code to add it into their
+systems. I intend to look into this.
+-*-
+
+Update: Fri Apr 07 12:04:45 EDT 1995
+Due: Now
+Prio: High
+Task: Add sysctl hooks to sysconfig, rc.
+
+There needs to be a generic mechanism in sysconfig to say `run these
+sysctl -nw commands during boot-up'.
+-*-
+
diff --git a/bin/Makefile b/bin/Makefile
index b324bba44ab9..e2c4bcc8af20 100644
--- a/bin/Makefile
+++ b/bin/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 5/31/93
-# $Id$
+# $Id: Makefile,v 1.2 1994/09/18 21:25:26 wollman Exp $
SUBDIR= cat chmod cp csh date dd df domainname echo ed expr hostname \
kill ln ls mkdir mv pax ps pwd rcp rm rmail rmdir sh sleep \
diff --git a/bin/cat/Makefile b/bin/cat/Makefile
index 6da43b3828af..7f4221e97ac1 100644
--- a/bin/cat/Makefile
+++ b/bin/cat/Makefile
@@ -1,5 +1,5 @@
# @(#)Makefile 8.1 (Berkeley) 5/31/93
-# $Id$
+# $Id: Makefile,v 1.2 1994/09/24 02:53:25 davidg Exp $
PROG= cat
diff --git a/bin/cat/cat.1 b/bin/cat/cat.1
index 05402f22a73b..c18503459f1a 100644
--- a/bin/cat/cat.1
+++ b/bin/cat/cat.1
@@ -33,7 +33,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)cat.1 8.1 (Berkeley) 6/29/93
-.\" $Id$
+.\" $Id: cat.1,v 1.2 1994/09/24 02:53:25 davidg Exp $
.\"
.Dd June 29, 1993
.Dt CAT 1
diff --git a/bin/cat/cat.c b/bin/cat/cat.c
index 3d3b210cc31f..58f3eb298827 100644
--- a/bin/cat/cat.c
+++ b/bin/cat/cat.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: cat.c,v 1.3 1995/10/03 12:46:37 bde Exp $
+ * $Id: cat.c,v 1.2.6.1 1995/10/05 07:20:59 davidg Exp $
*/
#ifndef lint
diff --git a/bin/chmod/Makefile b/bin/chmod/Makefile
index dc9390bb289f..74c1dec8bd54 100644
--- a/bin/chmod/Makefile
+++ b/bin/chmod/Makefile
@@ -1,5 +1,5 @@
# @(#)Makefile 8.1 (Berkeley) 5/31/93
-# $Id$
+# $Id: Makefile,v 1.2 1994/09/24 02:53:36 davidg Exp $
PROG= chmod
diff --git a/bin/chmod/chmod.1 b/bin/chmod/chmod.1
index 5c06913f0cf6..70d681d579a4 100644
--- a/bin/chmod/chmod.1
+++ b/bin/chmod/chmod.1
@@ -33,7 +33,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)chmod.1 8.4 (Berkeley) 3/31/94
-.\" $Id$
+.\" $Id: chmod.1,v 1.2 1994/09/24 02:53:37 davidg Exp $
.\"
.Dd March 31, 1994
.Dt CHMOD 1
diff --git a/bin/chmod/chmod.c b/bin/chmod/chmod.c
index c02994df9bd7..979519eb3c1c 100644
--- a/bin/chmod/chmod.c
+++ b/bin/chmod/chmod.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: chmod.c,v 1.3 1995/02/03 22:21:09 bde Exp $
+ * $Id: chmod.c,v 1.4 1995/03/19 13:27:43 joerg Exp $
*/
#ifndef lint
diff --git a/bin/cp/Makefile b/bin/cp/Makefile
index 57883daad0d1..48c253b5153a 100644
--- a/bin/cp/Makefile
+++ b/bin/cp/Makefile
@@ -1,5 +1,5 @@
# @(#)Makefile 8.1 (Berkeley) 5/31/93
-# $Id$
+# $Id: Makefile,v 1.2 1994/09/24 02:53:39 davidg Exp $
PROG= cp
SRCS= cp.c utils.c
diff --git a/bin/cp/cp.1 b/bin/cp/cp.1
index 9d4a77d5dcf9..fad0c0acc72e 100644
--- a/bin/cp/cp.1
+++ b/bin/cp/cp.1
@@ -33,7 +33,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)cp.1 8.3 (Berkeley) 4/18/94
-.\" $Id$
+.\" $Id: cp.1,v 1.2 1994/09/24 02:53:40 davidg Exp $
.\"
.Dd April 18, 1994
.Dt CP 1
diff --git a/bin/cp/cp.c b/bin/cp/cp.c
index ef88b8cb4d31..cfbcd5636f3a 100644
--- a/bin/cp/cp.c
+++ b/bin/cp/cp.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: cp.c,v 1.5 1995/04/02 00:49:16 bde Exp $
+ * $Id: cp.c,v 1.6 1995/05/30 00:06:21 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/cp/extern.h b/bin/cp/extern.h
index 6f84535b34ca..d97d76aa46d6 100644
--- a/bin/cp/extern.h
+++ b/bin/cp/extern.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)extern.h 8.2 (Berkeley) 4/1/94
- * $Id$
+ * $Id: extern.h,v 1.2 1994/09/24 02:53:41 davidg Exp $
*/
typedef struct {
diff --git a/bin/cp/utils.c b/bin/cp/utils.c
index 0aa480d7b163..0f2c100c6a4b 100644
--- a/bin/cp/utils.c
+++ b/bin/cp/utils.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: utils.c,v 1.5 1995/10/03 12:55:01 bde Exp $
+ * $Id: utils.c,v 1.3.4.2 1995/10/05 07:24:24 davidg Exp $
*/
#ifndef lint
diff --git a/bin/csh/Makefile b/bin/csh/Makefile
index 2bf842dde074..bc35a5618775 100644
--- a/bin/csh/Makefile
+++ b/bin/csh/Makefile
@@ -1,5 +1,5 @@
# @(#)Makefile 8.1 (Berkeley) 5/31/93
-# $Id$
+# $Id: Makefile,v 1.5 1994/09/24 02:53:44 davidg Exp $
#
# C Shell with process control; VM/UNIX VAX Makefile
# Bill Joy UC Berkeley; Jim Kulp IIASA, Austria
diff --git a/bin/csh/USD.doc/Makefile b/bin/csh/USD.doc/Makefile
index c85e28041507..f0aa8fb0f0fe 100644
--- a/bin/csh/USD.doc/Makefile
+++ b/bin/csh/USD.doc/Makefile
@@ -1,5 +1,5 @@
# @(#)Makefile 8.1 (Berkeley) 8/14/93
-# $Id$
+# $Id: Makefile,v 1.2 1994/09/24 02:54:22 davidg Exp $
DIR= usd/04.csh
SRCS= tabs csh.1 csh.2 csh.3 csh.4 csh.a csh.g
diff --git a/bin/csh/USD.doc/csh.1 b/bin/csh/USD.doc/csh.1
index 6bc0856b5932..cea97f9b3ef2 100644
--- a/bin/csh/USD.doc/csh.1
+++ b/bin/csh/USD.doc/csh.1
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)csh.1 8.1 (Berkeley) 6/8/93
-.\" $Id$
+.\" $Id: csh.1,v 1.2 1994/09/24 02:54:23 davidg Exp $
.\"
.EH 'USD:4-%''An Introduction to the C shell'
.OH 'An Introduction to the C shell''USD:4-%'
diff --git a/bin/csh/USD.doc/csh.2 b/bin/csh/USD.doc/csh.2
index 88711139d362..1cdaccfda339 100644
--- a/bin/csh/USD.doc/csh.2
+++ b/bin/csh/USD.doc/csh.2
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)csh.2 8.1 (Berkeley) 6/8/93
-.\" $Id$
+.\" $Id: csh.2,v 1.2 1994/09/24 02:54:24 davidg Exp $
.\"
.nr H1 1
.NH
diff --git a/bin/csh/USD.doc/csh.3 b/bin/csh/USD.doc/csh.3
index d6e3819c55d9..26fa4963b88c 100644
--- a/bin/csh/USD.doc/csh.3
+++ b/bin/csh/USD.doc/csh.3
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)csh.3 8.1 (Berkeley) 6/8/93
-.\" $Id$
+.\" $Id: csh.3,v 1.2 1994/09/24 02:54:26 davidg Exp $
.\"
.nr H1 2
.NH
diff --git a/bin/csh/USD.doc/csh.4 b/bin/csh/USD.doc/csh.4
index 2b2aaa9920a0..941b1c502964 100644
--- a/bin/csh/USD.doc/csh.4
+++ b/bin/csh/USD.doc/csh.4
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)csh.4 8.1 (Berkeley) 6/8/93
-.\" $Id$
+.\" $Id: csh.4,v 1.2 1994/09/24 02:54:27 davidg Exp $
.\"
.nr H1 3
.NH
diff --git a/bin/csh/USD.doc/csh.a b/bin/csh/USD.doc/csh.a
index f01312a41b94..28b1264f9f74 100644
--- a/bin/csh/USD.doc/csh.a
+++ b/bin/csh/USD.doc/csh.a
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)csh.a 8.1 (Berkeley) 6/8/93
-.\" $Id$
+.\" $Id: csh.a,v 1.2 1994/09/24 02:54:28 davidg Exp $
.\"
.SH
Appendix \- Special characters
diff --git a/bin/csh/USD.doc/csh.g b/bin/csh/USD.doc/csh.g
index ac27152bccd6..51a600d6f7b7 100644
--- a/bin/csh/USD.doc/csh.g
+++ b/bin/csh/USD.doc/csh.g
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)csh.g 8.1 (Berkeley) 6/8/93
-.\" $Id$
+.\" $Id: csh.g,v 1.2 1994/09/24 02:54:31 davidg Exp $
.\"
.SH
Glossary
diff --git a/bin/csh/USD.doc/tabs b/bin/csh/USD.doc/tabs
index 84deab72a15f..e7b6218d397f 100644
--- a/bin/csh/USD.doc/tabs
+++ b/bin/csh/USD.doc/tabs
@@ -30,6 +30,6 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)tabs 8.1 (Berkeley) 6/8/93
-.\" $Id$
+.\" $Id: tabs,v 1.2 1994/09/24 02:54:32 davidg Exp $
.\"
.ta 5n 10n 15n 20n 25n 30n 35n 40n 45n 50n 55n 60n 65n 70n 75n 80n
diff --git a/bin/csh/alloc.c b/bin/csh/alloc.c
index 3c4a1869ff41..34b375481cfb 100644
--- a/bin/csh/alloc.c
+++ b/bin/csh/alloc.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: alloc.c,v 1.3 1995/03/19 13:28:10 joerg Exp $
+ * $Id: alloc.c,v 1.4 1995/05/30 00:06:28 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/csh/char.c b/bin/csh/char.c
index 5e1a1e4a6bc0..ee2679e14dee 100644
--- a/bin/csh/char.c
+++ b/bin/csh/char.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: char.c,v 1.2 1994/09/24 02:53:46 davidg Exp $
*/
#ifndef lint
diff --git a/bin/csh/char.h b/bin/csh/char.h
index 9fba6f7157bf..133a6ef36639 100644
--- a/bin/csh/char.h
+++ b/bin/csh/char.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)char.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: char.h,v 1.2 1994/09/24 02:53:47 davidg Exp $
*/
#include <ctype.h>
diff --git a/bin/csh/const.c b/bin/csh/const.c
index 4dac78293cdd..7a6df42c26a6 100644
--- a/bin/csh/const.c
+++ b/bin/csh/const.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: const.c,v 1.2 1994/09/24 02:53:48 davidg Exp $
+ * $Id: const.c,v 1.3 1995/05/30 00:06:29 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/csh/csh.1 b/bin/csh/csh.1
index 52e7dc279138..7f179d85a466 100644
--- a/bin/csh/csh.1
+++ b/bin/csh/csh.1
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)csh.1 8.2 (Berkeley) 1/21/94
-.\" $Id: csh.1,v 1.2 1994/09/24 02:53:49 davidg Exp $
+.\" $Id: csh.1,v 1.3 1995/05/06 13:52:29 ache Exp $
.\"
.Dd January 21, 1994
.Dt CSH 1
diff --git a/bin/csh/csh.c b/bin/csh/csh.c
index 826c4276ce3f..98a719b9c892 100644
--- a/bin/csh/csh.c
+++ b/bin/csh/csh.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: csh.c,v 1.3 1995/05/30 00:06:30 rgrimes Exp $
+ * $Id: csh.c,v 1.3.4.1 1995/08/25 02:55:47 davidg Exp $
*/
#ifndef lint
diff --git a/bin/csh/csh.h b/bin/csh/csh.h
index 290262f5ca82..b58040d5944c 100644
--- a/bin/csh/csh.h
+++ b/bin/csh/csh.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)csh.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: csh.h,v 1.2 1994/09/24 02:53:52 davidg Exp $
*/
/*
diff --git a/bin/csh/dir.c b/bin/csh/dir.c
index 4f8c44fc8460..e8fe9b7b9785 100644
--- a/bin/csh/dir.c
+++ b/bin/csh/dir.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: dir.c,v 1.3 1995/05/30 00:06:30 rgrimes Exp $
+ * $Id: dir.c,v 1.3.4.1 1995/08/25 02:57:08 davidg Exp $
*/
#ifndef lint
diff --git a/bin/csh/dir.h b/bin/csh/dir.h
index ec57104831cf..582390140711 100644
--- a/bin/csh/dir.h
+++ b/bin/csh/dir.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)dir.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: dir.h,v 1.2 1994/09/24 02:53:55 davidg Exp $
*/
/*
diff --git a/bin/csh/dol.c b/bin/csh/dol.c
index 276ea2b59c13..7d5169ec9e42 100644
--- a/bin/csh/dol.c
+++ b/bin/csh/dol.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: dol.c,v 1.2 1994/09/24 02:53:56 davidg Exp $
+ * $Id: dol.c,v 1.3 1995/05/30 00:06:31 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/csh/err.c b/bin/csh/err.c
index 77ae9e055b97..b683309fe31f 100644
--- a/bin/csh/err.c
+++ b/bin/csh/err.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: err.c,v 1.2 1994/09/24 02:53:57 davidg Exp $
*/
#ifndef lint
diff --git a/bin/csh/exec.c b/bin/csh/exec.c
index d7750733a7fa..53a91b7bba2f 100644
--- a/bin/csh/exec.c
+++ b/bin/csh/exec.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: exec.c,v 1.3 1995/05/30 00:06:32 rgrimes Exp $
+ * $Id: exec.c,v 1.3.4.1 1995/08/25 02:58:40 davidg Exp $
*/
#ifndef lint
diff --git a/bin/csh/exp.c b/bin/csh/exp.c
index ff484ce405df..eddc3956a6b4 100644
--- a/bin/csh/exp.c
+++ b/bin/csh/exp.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: exp.c,v 1.2 1994/09/24 02:54:00 davidg Exp $
*/
#ifndef lint
diff --git a/bin/csh/extern.h b/bin/csh/extern.h
index f9ebd99aabe6..a0cb188924c7 100644
--- a/bin/csh/extern.h
+++ b/bin/csh/extern.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)extern.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: extern.h,v 1.2 1994/09/24 02:54:02 davidg Exp $
*/
#include <sys/cdefs.h>
diff --git a/bin/csh/file.c b/bin/csh/file.c
index 639e09c00029..73b5d4f804b5 100644
--- a/bin/csh/file.c
+++ b/bin/csh/file.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: file.c,v 1.3 1995/05/30 00:06:33 rgrimes Exp $
+ * $Id: file.c,v 1.3.4.1 1995/08/25 03:01:01 davidg Exp $
*/
#ifndef lint
diff --git a/bin/csh/func.c b/bin/csh/func.c
index e409197e90fe..cdf191659309 100644
--- a/bin/csh/func.c
+++ b/bin/csh/func.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: func.c,v 1.2 1994/09/24 02:54:04 davidg Exp $
+ * $Id: func.c,v 1.3 1995/05/30 00:06:34 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/csh/glob.c b/bin/csh/glob.c
index 2dd0895911dc..e5e16a5d51d3 100644
--- a/bin/csh/glob.c
+++ b/bin/csh/glob.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: glob.c,v 1.2 1994/09/24 02:54:05 davidg Exp $
+ * $Id: glob.c,v 1.3 1995/05/30 00:06:35 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/csh/hist.c b/bin/csh/hist.c
index c90dd66565a5..c92b7cb20757 100644
--- a/bin/csh/hist.c
+++ b/bin/csh/hist.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: hist.c,v 1.2 1994/09/24 02:54:06 davidg Exp $
*/
#ifndef lint
diff --git a/bin/csh/init.c b/bin/csh/init.c
index cee64c6f6477..d15faaf9f66e 100644
--- a/bin/csh/init.c
+++ b/bin/csh/init.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: init.c,v 1.2 1994/09/24 02:54:07 davidg Exp $
*/
#ifndef lint
diff --git a/bin/csh/lex.c b/bin/csh/lex.c
index 940ccaedadab..3fc7d64e389d 100644
--- a/bin/csh/lex.c
+++ b/bin/csh/lex.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: lex.c,v 1.3 1995/05/30 00:06:35 rgrimes Exp $
+ * $Id: lex.c,v 1.3.4.1 1995/08/25 03:02:28 davidg Exp $
*/
#ifndef lint
diff --git a/bin/csh/misc.c b/bin/csh/misc.c
index 79d2f9034403..07f4c7d5e5f9 100644
--- a/bin/csh/misc.c
+++ b/bin/csh/misc.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: misc.c,v 1.2 1994/09/24 02:54:10 davidg Exp $
*/
#ifndef lint
diff --git a/bin/csh/parse.c b/bin/csh/parse.c
index 5d0632e092b7..dad3d96f6366 100644
--- a/bin/csh/parse.c
+++ b/bin/csh/parse.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: parse.c,v 1.2 1994/09/24 02:54:11 davidg Exp $
+ * $Id: parse.c,v 1.3 1995/05/30 00:06:37 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/csh/pathnames.h b/bin/csh/pathnames.h
index f1cf072c4a05..359e7d6ca6b1 100644
--- a/bin/csh/pathnames.h
+++ b/bin/csh/pathnames.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)pathnames.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: pathnames.h,v 1.2 1994/09/24 02:54:12 davidg Exp $
*/
#define _PATH_BIN "/bin"
diff --git a/bin/csh/proc.c b/bin/csh/proc.c
index d70d29ffc4e4..90e0250a8233 100644
--- a/bin/csh/proc.c
+++ b/bin/csh/proc.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: proc.c,v 1.2 1994/09/24 02:54:13 davidg Exp $
*/
#ifndef lint
diff --git a/bin/csh/proc.h b/bin/csh/proc.h
index c621a742787f..b62ad57b7f81 100644
--- a/bin/csh/proc.h
+++ b/bin/csh/proc.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)proc.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: proc.h,v 1.2 1994/09/24 02:54:14 davidg Exp $
*/
/*
diff --git a/bin/csh/sem.c b/bin/csh/sem.c
index 8216d5590d2a..64e6d1b25ff2 100644
--- a/bin/csh/sem.c
+++ b/bin/csh/sem.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: sem.c,v 1.2 1994/09/24 02:54:15 davidg Exp $
+ * $Id: sem.c,v 1.3 1995/05/30 00:06:37 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/csh/set.c b/bin/csh/set.c
index f1b5532c0f00..233c868c8eaf 100644
--- a/bin/csh/set.c
+++ b/bin/csh/set.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: set.c,v 1.3 1995/05/30 00:06:38 rgrimes Exp $
+ * $Id: set.c,v 1.3.4.1 1995/08/25 02:55:49 davidg Exp $
*/
#ifndef lint
diff --git a/bin/csh/str.c b/bin/csh/str.c
index d30b95ef7bad..dc76df52f559 100644
--- a/bin/csh/str.c
+++ b/bin/csh/str.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: str.c,v 1.2 1994/09/24 02:54:18 davidg Exp $
+ * $Id: str.c,v 1.3 1995/05/30 00:06:39 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/csh/time.c b/bin/csh/time.c
index 95de7d2b444b..10a9daae1e44 100644
--- a/bin/csh/time.c
+++ b/bin/csh/time.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: time.c,v 1.4 1995/03/19 13:28:12 joerg Exp $
+ * $Id: time.c,v 1.5 1995/05/30 00:06:40 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/date/Makefile b/bin/date/Makefile
index 294aae0cc99b..72e6369dd62e 100644
--- a/bin/date/Makefile
+++ b/bin/date/Makefile
@@ -1,5 +1,5 @@
# @(#)Makefile 8.1 (Berkeley) 5/31/93
-# $Id$
+# $Id: Makefile,v 1.2 1994/09/24 02:54:33 davidg Exp $
PROG= date
SRCS= date.c netdate.c
diff --git a/bin/date/date.1 b/bin/date/date.1
index 59c712139224..638096bac7e1 100644
--- a/bin/date/date.1
+++ b/bin/date/date.1
@@ -33,7 +33,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)date.1 8.2 (Berkeley) 11/17/93
-.\" $Id: date.1,v 1.5 1995/04/03 20:08:32 joerg Exp $
+.\" $Id: date.1,v 1.5.4.1 1995/08/28 10:33:04 davidg Exp $
.\"
.Dd November 17, 1993
.Dt DATE 1
diff --git a/bin/date/date.c b/bin/date/date.c
index 94e3b33227e6..af348ee15a92 100644
--- a/bin/date/date.c
+++ b/bin/date/date.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: date.c,v 1.4 1995/04/03 20:08:33 joerg Exp $
+ * $Id: date.c,v 1.4.4.1 1995/08/28 10:31:25 davidg Exp $
*/
#ifndef lint
diff --git a/bin/date/extern.h b/bin/date/extern.h
index c21fdc63d0b2..560d2a9b4d16 100644
--- a/bin/date/extern.h
+++ b/bin/date/extern.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)extern.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: extern.h,v 1.2 1994/09/24 02:54:37 davidg Exp $
*/
int netsettime __P((time_t));
diff --git a/bin/date/netdate.c b/bin/date/netdate.c
index 0f12aae5ddf5..08f6de731670 100644
--- a/bin/date/netdate.c
+++ b/bin/date/netdate.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: netdate.c,v 1.2 1994/09/24 02:54:38 davidg Exp $
+ * $Id: netdate.c,v 1.3 1995/05/30 00:06:41 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/dd/Makefile b/bin/dd/Makefile
index 09158e5a81c0..4ddbc0c41b96 100644
--- a/bin/dd/Makefile
+++ b/bin/dd/Makefile
@@ -1,5 +1,5 @@
# @(#)Makefile 8.1 (Berkeley) 5/31/93
-# $Id$
+# $Id: Makefile,v 1.2 1994/09/24 02:54:40 davidg Exp $
PROG= dd
SRCS= args.c conv.c conv_tab.c dd.c misc.c position.c
diff --git a/bin/dd/args.c b/bin/dd/args.c
index 61b479451826..d2268dcf83c0 100644
--- a/bin/dd/args.c
+++ b/bin/dd/args.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: args.c,v 1.3 1994/09/24 02:54:42 davidg Exp $
*/
#ifndef lint
diff --git a/bin/dd/conv.c b/bin/dd/conv.c
index e87c396440da..295d88b749fa 100644
--- a/bin/dd/conv.c
+++ b/bin/dd/conv.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: conv.c,v 1.3 1994/09/24 02:54:44 davidg Exp $
*/
#ifndef lint
diff --git a/bin/dd/conv_tab.c b/bin/dd/conv_tab.c
index 2fb2bc6ec706..3a617ae475f2 100644
--- a/bin/dd/conv_tab.c
+++ b/bin/dd/conv_tab.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: conv_tab.c,v 1.2 1994/09/24 02:54:47 davidg Exp $
+ * $Id: conv_tab.c,v 1.3 1995/01/17 23:04:28 ache Exp $
*/
#ifndef lint
diff --git a/bin/dd/dd.1 b/bin/dd/dd.1
index 03897fb96c74..9fa49873c91b 100644
--- a/bin/dd/dd.1
+++ b/bin/dd/dd.1
@@ -33,7 +33,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)dd.1 8.2 (Berkeley) 1/13/94
-.\" $Id$
+.\" $Id: dd.1,v 1.2 1994/09/24 02:54:49 davidg Exp $
.\"
.Dd January 13, 1994
.Dt DD 1
diff --git a/bin/dd/dd.c b/bin/dd/dd.c
index d3428701a43f..89f3d3a207f0 100644
--- a/bin/dd/dd.c
+++ b/bin/dd/dd.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: dd.c,v 1.3 1995/01/17 22:55:59 ache Exp $
+ * $Id: dd.c,v 1.4 1995/01/17 23:04:29 ache Exp $
*/
#ifndef lint
diff --git a/bin/dd/dd.h b/bin/dd/dd.h
index 4ad97473e25d..45c221112257 100644
--- a/bin/dd/dd.h
+++ b/bin/dd/dd.h
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* @(#)dd.h 8.3 (Berkeley) 4/2/94
- * $Id$
+ * $Id: dd.h,v 1.2 1994/09/24 02:54:54 davidg Exp $
*/
/* Input/output stream state. */
diff --git a/bin/dd/extern.h b/bin/dd/extern.h
index 7445fee4b083..192ca82e1543 100644
--- a/bin/dd/extern.h
+++ b/bin/dd/extern.h
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* @(#)extern.h 8.3 (Berkeley) 4/2/94
- * $Id$
+ * $Id: extern.h,v 1.2 1994/09/24 02:54:57 davidg Exp $
*/
#include <sys/cdefs.h>
diff --git a/bin/dd/misc.c b/bin/dd/misc.c
index a135c85496a7..3d9a1c558299 100644
--- a/bin/dd/misc.c
+++ b/bin/dd/misc.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: misc.c,v 1.2 1994/09/24 02:55:01 davidg Exp $
*/
#ifndef lint
diff --git a/bin/dd/position.c b/bin/dd/position.c
index c50102241c99..6062a9d4283f 100644
--- a/bin/dd/position.c
+++ b/bin/dd/position.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: position.c,v 1.2 1994/09/24 02:55:03 davidg Exp $
*/
#ifndef lint
diff --git a/bin/df/Makefile b/bin/df/Makefile
index 302345204967..4f94ca71a1d5 100644
--- a/bin/df/Makefile
+++ b/bin/df/Makefile
@@ -1,5 +1,5 @@
# @(#)Makefile 8.2 (Berkeley) 4/1/94
-# $Id$
+# $Id: Makefile,v 1.2 1994/09/24 02:55:06 davidg Exp $
PROG= df
BINGRP= operator
diff --git a/bin/df/df.1 b/bin/df/df.1
index 4337ac1bc0d0..f1f6b359b2f7 100644
--- a/bin/df/df.1
+++ b/bin/df/df.1
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)df.1 8.2 (Berkeley) 1/13/94
-.\" $Id$
+.\" $Id: df.1,v 1.3 1994/09/24 02:55:08 davidg Exp $
.\"
.Dd January 13, 1994
.Dt DF 1
diff --git a/bin/df/df.c b/bin/df/df.c
index 80cbba4abe16..d53fb960ee0f 100644
--- a/bin/df/df.c
+++ b/bin/df/df.c
@@ -35,7 +35,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: df.c,v 1.6 1995/03/19 13:28:15 joerg Exp $
+ * $Id: df.c,v 1.7 1995/05/30 00:06:42 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/domainname/Makefile b/bin/domainname/Makefile
index 8274b61c0ad6..b54c69ab7911 100644
--- a/bin/domainname/Makefile
+++ b/bin/domainname/Makefile
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile,v 1.1 1994/09/18 21:23:35 wollman Exp $
PROG= domainname
diff --git a/bin/domainname/domainname.1 b/bin/domainname/domainname.1
index 782e708edac6..24ae17d3b4a0 100644
--- a/bin/domainname/domainname.1
+++ b/bin/domainname/domainname.1
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" From: @(#)hostname.1 8.1 (Berkeley) 5/31/93
-.\" $Id: domainname.1,v 1.1 1994/09/18 21:23:36 wollman Exp $
+.\" $Id: domainname.1,v 1.2 1995/01/14 17:02:33 ats Exp $
.\"
.Dd September 18, 1994
.Dt DOMAINNAME 1
diff --git a/bin/domainname/domainname.c b/bin/domainname/domainname.c
index 4295ec5bff27..335b5d77b85f 100644
--- a/bin/domainname/domainname.c
+++ b/bin/domainname/domainname.c
@@ -40,7 +40,7 @@ static char copyright[] =
#ifndef lint
/*static char sccsid[] = "From: @(#)hostname.c 8.1 (Berkeley) 5/31/93"; */
static const char rcsid[] =
- "$Id: domainname.c,v 1.4 1994/09/26 02:14:27 wollman Exp $";
+ "$Id: domainname.c,v 1.5 1995/03/19 13:28:17 joerg Exp $";
#endif /* not lint */
#include <sys/param.h>
diff --git a/bin/echo/Makefile b/bin/echo/Makefile
index c296871792c5..b562b331c319 100644
--- a/bin/echo/Makefile
+++ b/bin/echo/Makefile
@@ -1,5 +1,5 @@
# @(#)Makefile 8.1 (Berkeley) 5/31/93
-# $Id$
+# $Id: Makefile,v 1.2 1994/09/24 02:55:15 davidg Exp $
PROG= echo
diff --git a/bin/echo/echo.1 b/bin/echo/echo.1
index b74272c8a9f2..e97ac08c837c 100644
--- a/bin/echo/echo.1
+++ b/bin/echo/echo.1
@@ -33,7 +33,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)echo.1 8.1 (Berkeley) 7/22/93
-.\" $Id$
+.\" $Id: echo.1,v 1.2 1994/09/24 02:55:17 davidg Exp $
.\"
.Dd July 22, 1993
.Dt ECHO 1
diff --git a/bin/echo/echo.c b/bin/echo/echo.c
index ba9f9ed7cc2b..e12f0a6e9ee9 100644
--- a/bin/echo/echo.c
+++ b/bin/echo/echo.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: echo.c,v 1.2 1994/09/24 02:55:18 davidg Exp $
*/
#ifndef lint
diff --git a/bin/ed/Makefile b/bin/ed/Makefile
index 68cfc3a9aae9..7da27f20079f 100644
--- a/bin/ed/Makefile
+++ b/bin/ed/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.9 1994/10/29 10:13:34 phk Exp $
+# $Id: Makefile,v 1.10 1994/12/18 15:15:10 jkh Exp $
PROG= ed
SRCS= buf.c cbc.c glbl.c io.c main.c re.c sub.c undo.c
diff --git a/bin/ed/POSIX b/bin/ed/POSIX
index db1a155e2cf2..179ce3d58fc1 100644
--- a/bin/ed/POSIX
+++ b/bin/ed/POSIX
@@ -1,4 +1,4 @@
-$Id$
+$Id: POSIX,v 1.4 1994/09/24 02:55:20 davidg Exp $
This version of ed(1) is not strictly POSIX compliant, as described in
the POSIX 1003.2 document. The following is a summary of the omissions,
diff --git a/bin/ed/README b/bin/ed/README
index 322e65e0fcaf..9988a30353f2 100644
--- a/bin/ed/README
+++ b/bin/ed/README
@@ -1,4 +1,4 @@
-$Id$
+$Id: README,v 1.4 1994/09/24 02:55:21 davidg Exp $
ed is an 8-bit-clean, POSIX-compliant line editor. It should work with
any regular expression package that conforms to the POSIX interface
diff --git a/bin/ed/buf.c b/bin/ed/buf.c
index e14a65c59730..a6ec5244ee76 100644
--- a/bin/ed/buf.c
+++ b/bin/ed/buf.c
@@ -25,7 +25,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: buf.c,v 1.6 1994/09/24 02:55:22 davidg Exp $
+ * $Id: buf.c,v 1.7 1995/05/30 00:06:43 rgrimes Exp $
*/
#ifndef lint
static char *rcsid = "@(#)buf.c,v 1.4 1994/02/01 00:34:35 alm Exp";
diff --git a/bin/ed/cbc.c b/bin/ed/cbc.c
index 62fcd9909275..e41629832c54 100644
--- a/bin/ed/cbc.c
+++ b/bin/ed/cbc.c
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* from: @(#)bdes.c 5.5 (Berkeley) 6/27/91
- * $Id: cbc.c,v 1.4 1994/09/24 02:55:24 davidg Exp $
+ * $Id: cbc.c,v 1.5 1995/03/19 13:28:24 joerg Exp $
*/
#ifndef lint
diff --git a/bin/ed/ed.1 b/bin/ed/ed.1
index e650e3c4b58c..f8a4e6da4890 100644
--- a/bin/ed/ed.1
+++ b/bin/ed/ed.1
@@ -1,4 +1,4 @@
-.\" $Id$
+.\" $Id: ed.1,v 1.6 1994/09/24 02:55:24 davidg Exp $
.TH ED 1 "21 May 1993"
.SH NAME
.\" ed, red \- text editor
diff --git a/bin/ed/ed.h b/bin/ed/ed.h
index 629651642cd0..0f8164edddc6 100644
--- a/bin/ed/ed.h
+++ b/bin/ed/ed.h
@@ -25,7 +25,7 @@
* SUCH DAMAGE.
*
* @(#)ed.h,v 1.5 1994/02/01 00:34:39 alm Exp
- * $Id: ed.h,v 1.7 1994/09/24 02:55:25 davidg Exp $
+ * $Id: ed.h,v 1.8 1994/11/03 21:46:55 davidg Exp $
*/
#include <sys/types.h>
diff --git a/bin/ed/glbl.c b/bin/ed/glbl.c
index b9856c3e6654..a124e5b779c4 100644
--- a/bin/ed/glbl.c
+++ b/bin/ed/glbl.c
@@ -25,7 +25,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: glbl.c,v 1.3 1995/03/19 13:28:27 joerg Exp $
+ * $Id: glbl.c,v 1.4 1995/05/30 00:06:46 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/ed/io.c b/bin/ed/io.c
index 1072d06b7a00..f4b4f76ba17a 100644
--- a/bin/ed/io.c
+++ b/bin/ed/io.c
@@ -24,7 +24,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: io.c,v 1.3 1994/09/24 02:55:27 davidg Exp $
+ * $Id: io.c,v 1.4 1995/03/19 13:28:32 joerg Exp $
*/
#ifndef lint
diff --git a/bin/ed/main.c b/bin/ed/main.c
index 01f30e52d046..dc6b1662f80c 100644
--- a/bin/ed/main.c
+++ b/bin/ed/main.c
@@ -25,7 +25,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: main.c,v 1.4 1995/03/19 13:28:34 joerg Exp $
+ * $Id: main.c,v 1.5 1995/05/30 00:06:47 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/ed/re.c b/bin/ed/re.c
index 252e8f8678d9..847b774649e9 100644
--- a/bin/ed/re.c
+++ b/bin/ed/re.c
@@ -25,7 +25,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: re.c,v 1.9 1995/03/19 13:28:36 joerg Exp $
+ * $Id: re.c,v 1.10 1995/05/30 00:06:47 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/ed/sub.c b/bin/ed/sub.c
index c61c7e4e196c..e571d7ec877f 100644
--- a/bin/ed/sub.c
+++ b/bin/ed/sub.c
@@ -25,7 +25,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: sub.c,v 1.5 1995/03/19 13:28:38 joerg Exp $
+ * $Id: sub.c,v 1.6 1995/05/30 00:06:48 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/ed/test/Makefile b/bin/ed/test/Makefile
index 9f10e1e3c225..da19e499659d 100644
--- a/bin/ed/test/Makefile
+++ b/bin/ed/test/Makefile
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile,v 1.5 1994/09/24 02:55:35 davidg Exp $
SHELL= /bin/sh
ED= ../obj/ed
diff --git a/bin/ed/undo.c b/bin/ed/undo.c
index ec813c2d5c7d..1fdad02cd5c6 100644
--- a/bin/ed/undo.c
+++ b/bin/ed/undo.c
@@ -24,7 +24,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: undo.c,v 1.3 1994/09/24 02:55:32 davidg Exp $
*/
#ifndef lint
diff --git a/bin/expr/Makefile b/bin/expr/Makefile
index c98e59fbcb3b..71cf46a00383 100644
--- a/bin/expr/Makefile
+++ b/bin/expr/Makefile
@@ -1,5 +1,5 @@
# /b/source/CVS/src/bin/expr/Makefile,v 1.5 1993/06/14 19:56:06 jtc Exp
-# $Id: Makefile,v 1.6 1994/09/24 02:55:36 davidg Exp $
+# $Id: Makefile,v 1.7 1995/05/30 00:06:49 rgrimes Exp $
PROG= expr
SRCS= expr.c
diff --git a/bin/expr/expr.1 b/bin/expr/expr.1
index b2aba80876dd..e6af35a40b17 100644
--- a/bin/expr/expr.1
+++ b/bin/expr/expr.1
@@ -28,7 +28,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.\" $Id: expr.1,v 1.2 1993/10/04 22:07:27 jtc Exp $
+.\" $Id: expr.1,v 1.3 1994/04/24 01:18:46 jkh Exp $
.\"
.Dd July 3, 1993
.Dt EXPR 1
diff --git a/bin/expr/expr.y b/bin/expr/expr.y
index 76ffe4454f5e..30a07db69f12 100644
--- a/bin/expr/expr.y
+++ b/bin/expr/expr.y
@@ -4,7 +4,7 @@
*
* Largely rewritten by J.T. Conklin (jtc@wimsey.com)
*
- * $Id: expr.y,v 1.9 1995/03/19 13:28:41 joerg Exp $
+ * $Id: expr.y,v 1.9.4.1 1995/08/25 03:06:36 davidg Exp $
*/
#include <stdio.h>
diff --git a/bin/hostname/Makefile b/bin/hostname/Makefile
index adee034af686..a6eb65fa99e3 100644
--- a/bin/hostname/Makefile
+++ b/bin/hostname/Makefile
@@ -1,5 +1,5 @@
# @(#)Makefile 8.1 (Berkeley) 5/31/93
-# $Id$
+# $Id: Makefile,v 1.2 1994/09/24 02:55:39 davidg Exp $
PROG= hostname
diff --git a/bin/hostname/hostname.1 b/bin/hostname/hostname.1
index 8235045fb25f..5493b2579a78 100644
--- a/bin/hostname/hostname.1
+++ b/bin/hostname/hostname.1
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)hostname.1 8.1 (Berkeley) 5/31/93
-.\" $Id$
+.\" $Id: hostname.1,v 1.2 1994/09/24 02:55:40 davidg Exp $
.\"
.Dd May 31, 1993
.Dt HOSTNAME 1
diff --git a/bin/hostname/hostname.c b/bin/hostname/hostname.c
index 00408ecdd353..74e362473a22 100644
--- a/bin/hostname/hostname.c
+++ b/bin/hostname/hostname.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: hostname.c,v 1.2 1994/09/24 02:55:40 davidg Exp $
*/
#ifndef lint
diff --git a/bin/kill/Makefile b/bin/kill/Makefile
index 610341f6b8c1..686167e3f254 100644
--- a/bin/kill/Makefile
+++ b/bin/kill/Makefile
@@ -1,5 +1,5 @@
# @(#)Makefile 8.1 (Berkeley) 5/31/93
-# $Id$
+# $Id: Makefile,v 1.2 1994/09/24 02:55:42 davidg Exp $
PROG= kill
diff --git a/bin/kill/kill.1 b/bin/kill/kill.1
index 0795098d8aa0..c18ede2509d9 100644
--- a/bin/kill/kill.1
+++ b/bin/kill/kill.1
@@ -33,7 +33,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)kill.1 8.1 (Berkeley) 5/31/93
-.\" $Id$
+.\" $Id: kill.1,v 1.2 1994/09/24 02:55:43 davidg Exp $
.\"
.Dd May 31, 1993
.Dt KILL 1
diff --git a/bin/kill/kill.c b/bin/kill/kill.c
index 7de25e157206..814885f8d4f2 100644
--- a/bin/kill/kill.c
+++ b/bin/kill/kill.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: kill.c,v 1.2 1994/09/24 02:55:44 davidg Exp $
+ * $Id: kill.c,v 1.3 1995/03/05 21:52:41 jkh Exp $
*/
#ifndef lint
diff --git a/bin/ln/Makefile b/bin/ln/Makefile
index 83a6e1dca2f1..77d66645eccb 100644
--- a/bin/ln/Makefile
+++ b/bin/ln/Makefile
@@ -1,5 +1,5 @@
# @(#)Makefile 8.2 (Berkeley) 5/31/93
-# $Id$
+# $Id: Makefile,v 1.3 1994/09/24 02:55:45 davidg Exp $
PROG= ln
MAN1= ln.1
diff --git a/bin/ln/ln.1 b/bin/ln/ln.1
index 2e1337376f53..98522bcea3fd 100644
--- a/bin/ln/ln.1
+++ b/bin/ln/ln.1
@@ -33,7 +33,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)ln.1 8.2 (Berkeley) 12/30/93
-.\" $Id$
+.\" $Id: ln.1,v 1.2 1994/09/24 02:55:47 davidg Exp $
.\"
.Dd December 30, 1993
.Dt LN 1
diff --git a/bin/ln/ln.c b/bin/ln/ln.c
index 73fffa711856..69ae926cabce 100644
--- a/bin/ln/ln.c
+++ b/bin/ln/ln.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: ln.c,v 1.4 1994/09/24 02:55:48 davidg Exp $
+ * $Id: ln.c,v 1.5 1994/12/06 18:50:44 bde Exp $
*/
#ifndef lint
diff --git a/bin/ln/symlink.7 b/bin/ln/symlink.7
index 1fb4ea41bfdb..94b5396cf706 100644
--- a/bin/ln/symlink.7
+++ b/bin/ln/symlink.7
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)symlink.7 8.3 (Berkeley) 3/31/94
-.\" $Id$
+.\" $Id: symlink.7,v 1.2 1994/09/24 02:55:49 davidg Exp $
.\"
.Dd March 31, 1994
.Dt SYMLINK 7
diff --git a/bin/ls/Makefile b/bin/ls/Makefile
index d1a6b6b84384..262c5d6892d2 100644
--- a/bin/ls/Makefile
+++ b/bin/ls/Makefile
@@ -1,5 +1,5 @@
# @(#)Makefile 8.1 (Berkeley) 6/2/93
-# $Id$
+# $Id: Makefile,v 1.2 1994/09/24 02:55:51 davidg Exp $
PROG= ls
SRCS= cmp.c stat_flags.c ls.c print.c util.c
diff --git a/bin/ls/cmp.c b/bin/ls/cmp.c
index 51397b45c390..2327abb223df 100644
--- a/bin/ls/cmp.c
+++ b/bin/ls/cmp.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: cmp.c,v 1.2 1994/09/24 02:55:52 davidg Exp $
*/
#ifndef lint
diff --git a/bin/ls/extern.h b/bin/ls/extern.h
index 253d50642d4a..34cd71ce7ece 100644
--- a/bin/ls/extern.h
+++ b/bin/ls/extern.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)extern.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: extern.h,v 1.2 1994/09/24 02:55:52 davidg Exp $
*/
int acccmp __P((const FTSENT *, const FTSENT *));
diff --git a/bin/ls/ls.1 b/bin/ls/ls.1
index 49fa38edb8ea..213d4fc575e8 100644
--- a/bin/ls/ls.1
+++ b/bin/ls/ls.1
@@ -33,7 +33,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)ls.1 8.6 (Berkeley) 4/18/94
-.\" $Id: ls.1,v 1.4 1995/09/26 08:48:09 mpp Exp $
+.\" $Id: ls.1,v 1.3.6.1 1995/10/05 07:28:28 davidg Exp $
.\"
.Dd April 18, 1994
.Dt LS 1
diff --git a/bin/ls/ls.c b/bin/ls/ls.c
index 17f7137c1d3a..c125d678e543 100644
--- a/bin/ls/ls.c
+++ b/bin/ls/ls.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: ls.c,v 1.5 1995/03/19 13:28:44 joerg Exp $
+ * $Id: ls.c,v 1.6 1995/03/23 19:05:00 phk Exp $
*/
#ifndef lint
diff --git a/bin/ls/ls.h b/bin/ls/ls.h
index 61c319e9c187..4f34ba812721 100644
--- a/bin/ls/ls.h
+++ b/bin/ls/ls.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)ls.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: ls.h,v 1.2 1994/09/24 02:55:55 davidg Exp $
*/
#define NO_PRINT 1
diff --git a/bin/ls/print.c b/bin/ls/print.c
index 058d0b3a7a8a..54e76bbfa8d5 100644
--- a/bin/ls/print.c
+++ b/bin/ls/print.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: print.c,v 1.4 1995/05/30 00:06:50 rgrimes Exp $
+ * $Id: print.c,v 1.4.4.1 1995/08/28 10:30:27 davidg Exp $
*/
#ifndef lint
diff --git a/bin/ls/stat_flags.c b/bin/ls/stat_flags.c
index d62a0fd42e0d..d3f335e4936f 100644
--- a/bin/ls/stat_flags.c
+++ b/bin/ls/stat_flags.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: stat_flags.c,v 1.2 1994/09/24 02:55:57 davidg Exp $
*/
#ifndef lint
diff --git a/bin/ls/util.c b/bin/ls/util.c
index e436c922ff61..12679945cc8f 100644
--- a/bin/ls/util.c
+++ b/bin/ls/util.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: util.c,v 1.3 1994/09/24 02:55:58 davidg Exp $
+ * $Id: util.c,v 1.4 1994/10/09 15:25:23 ache Exp $
*/
#ifndef lint
diff --git a/bin/mkdir/Makefile b/bin/mkdir/Makefile
index 03ca565911e9..a1ba4a55bb85 100644
--- a/bin/mkdir/Makefile
+++ b/bin/mkdir/Makefile
@@ -1,5 +1,5 @@
# @(#)Makefile 8.1 (Berkeley) 5/31/93
-# $Id$
+# $Id: Makefile,v 1.2 1994/09/24 02:56:01 davidg Exp $
PROG= mkdir
diff --git a/bin/mkdir/mkdir.1 b/bin/mkdir/mkdir.1
index 4627b8a68dd3..7e9a00322fb1 100644
--- a/bin/mkdir/mkdir.1
+++ b/bin/mkdir/mkdir.1
@@ -33,7 +33,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)mkdir.1 8.2 (Berkeley) 1/25/94
-.\" $Id$
+.\" $Id: mkdir.1,v 1.2 1994/09/24 02:56:02 davidg Exp $
.\"
.Dd January 25, 1994
.Dt MKDIR 1
diff --git a/bin/mkdir/mkdir.c b/bin/mkdir/mkdir.c
index d5fe7e516649..1a6053b524ec 100644
--- a/bin/mkdir/mkdir.c
+++ b/bin/mkdir/mkdir.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: mkdir.c,v 1.5 1994/09/24 02:56:03 davidg Exp $
*/
#ifndef lint
diff --git a/bin/mv/Makefile b/bin/mv/Makefile
index 0ba523e61b44..d5f89c6df6a8 100644
--- a/bin/mv/Makefile
+++ b/bin/mv/Makefile
@@ -1,5 +1,5 @@
# @(#)Makefile 8.2 (Berkeley) 4/2/94
-# $Id$
+# $Id: Makefile,v 1.2 1994/09/24 02:56:05 davidg Exp $
PROG= mv
diff --git a/bin/mv/mv.1 b/bin/mv/mv.1
index 01c0f2b7415d..c79f74a3271c 100644
--- a/bin/mv/mv.1
+++ b/bin/mv/mv.1
@@ -33,7 +33,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)mv.1 8.1 (Berkeley) 5/31/93
-.\" $Id: mv.1,v 1.2 1994/09/24 02:56:06 davidg Exp $
+.\" $Id: mv.1,v 1.2.6.1 1995/08/29 11:14:21 davidg Exp $
.\"
.Dd May 31, 1993
.Dt MV 1
diff --git a/bin/mv/mv.c b/bin/mv/mv.c
index 28da455ecd6f..41c71bd12b4f 100644
--- a/bin/mv/mv.c
+++ b/bin/mv/mv.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: mv.c,v 1.3 1995/10/07 10:42:48 bde Exp $
+ * $Id: mv.c,v 1.2.6.1 1995/10/09 05:12:21 davidg Exp $
*/
#ifndef lint
diff --git a/bin/mv/pathnames.h b/bin/mv/pathnames.h
index 4adf62b4ec5f..3ca9f6442c8e 100644
--- a/bin/mv/pathnames.h
+++ b/bin/mv/pathnames.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)pathnames.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: pathnames.h,v 1.2 1994/09/24 02:56:08 davidg Exp $
*/
#define _PATH_RM "/bin/rm"
diff --git a/bin/pax/Makefile b/bin/pax/Makefile
index cd0cc2d82e4c..eef5d60a121a 100644
--- a/bin/pax/Makefile
+++ b/bin/pax/Makefile
@@ -1,5 +1,5 @@
# @(#)Makefile 8.1 (Berkeley) 5/31/93
-# $Id$
+# $Id: Makefile,v 1.2 1994/09/24 02:56:10 davidg Exp $
# To install on versions prior to BSD 4.4 the following may have to be
# defined with CFLAGS +=
diff --git a/bin/pax/ar_io.c b/bin/pax/ar_io.c
index e3481bda9e2e..9bf75662f15d 100644
--- a/bin/pax/ar_io.c
+++ b/bin/pax/ar_io.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: ar_io.c,v 1.2 1994/09/24 02:56:11 davidg Exp $
+ * $Id: ar_io.c,v 1.3 1995/05/30 00:06:52 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/pax/ar_subs.c b/bin/pax/ar_subs.c
index c725fe854a27..79cbe0338a9a 100644
--- a/bin/pax/ar_subs.c
+++ b/bin/pax/ar_subs.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: ar_subs.c,v 1.2 1994/09/24 02:56:12 davidg Exp $
+ * $Id: ar_subs.c,v 1.3 1995/05/30 00:06:52 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/pax/buf_subs.c b/bin/pax/buf_subs.c
index b8b6a8c966c6..1cca4138b270 100644
--- a/bin/pax/buf_subs.c
+++ b/bin/pax/buf_subs.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: buf_subs.c,v 1.2 1994/09/24 02:56:13 davidg Exp $
+ * $Id: buf_subs.c,v 1.3 1995/05/30 00:06:53 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/pax/cache.c b/bin/pax/cache.c
index 8d88abe15b29..5e8770fd70b5 100644
--- a/bin/pax/cache.c
+++ b/bin/pax/cache.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: cache.c,v 1.2 1994/09/24 02:56:14 davidg Exp $
*/
#ifndef lint
diff --git a/bin/pax/cache.h b/bin/pax/cache.h
index 5c01ef410aef..2be117544b8d 100644
--- a/bin/pax/cache.h
+++ b/bin/pax/cache.h
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* @(#)cache.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: cache.h,v 1.2 1994/09/24 02:56:15 davidg Exp $
*/
/*
diff --git a/bin/pax/cpio.c b/bin/pax/cpio.c
index 0307c54ff95c..f0b0586e7a33 100644
--- a/bin/pax/cpio.c
+++ b/bin/pax/cpio.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: cpio.c,v 1.2 1994/09/24 02:56:16 davidg Exp $
+ * $Id: cpio.c,v 1.3 1995/05/30 00:06:54 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/pax/cpio.h b/bin/pax/cpio.h
index 6e500487f550..a3a174f02bcf 100644
--- a/bin/pax/cpio.h
+++ b/bin/pax/cpio.h
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* @(#)cpio.h 8.1 (Berkeley) 5/31/93
- * $Id: cpio.h,v 1.2 1994/09/24 02:56:17 davidg Exp $
+ * $Id: cpio.h,v 1.3 1995/05/30 00:06:55 rgrimes Exp $
*/
/*
diff --git a/bin/pax/extern.h b/bin/pax/extern.h
index 819329f2c2b8..b95d88a6af2c 100644
--- a/bin/pax/extern.h
+++ b/bin/pax/extern.h
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* @(#)extern.h 8.2 (Berkeley) 4/18/94
- * $Id$
+ * $Id: extern.h,v 1.2 1994/09/24 02:56:18 davidg Exp $
*/
/*
diff --git a/bin/pax/file_subs.c b/bin/pax/file_subs.c
index f220639870d6..e8c6fd345d58 100644
--- a/bin/pax/file_subs.c
+++ b/bin/pax/file_subs.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: file_subs.c,v 1.2 1994/09/24 02:56:19 davidg Exp $
+ * $Id: file_subs.c,v 1.3 1995/05/30 00:06:56 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/pax/ftree.c b/bin/pax/ftree.c
index 6f2b14b256bd..36bdecf6ba35 100644
--- a/bin/pax/ftree.c
+++ b/bin/pax/ftree.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: ftree.c,v 1.2 1994/09/24 02:56:20 davidg Exp $
+ * $Id: ftree.c,v 1.3 1995/05/30 00:06:57 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/pax/ftree.h b/bin/pax/ftree.h
index a98654632f54..ca456c1205a2 100644
--- a/bin/pax/ftree.h
+++ b/bin/pax/ftree.h
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* @(#)ftree.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: ftree.h,v 1.2 1994/09/24 02:56:21 davidg Exp $
*/
/*
diff --git a/bin/pax/gen_subs.c b/bin/pax/gen_subs.c
index fba1699f0955..8fb957514b5d 100644
--- a/bin/pax/gen_subs.c
+++ b/bin/pax/gen_subs.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: gen_subs.c,v 1.5 1995/08/07 19:17:36 wollman Exp $
+ * $Id: gen_subs.c,v 1.4.4.1 1995/08/28 10:41:14 davidg Exp $
*/
#ifndef lint
diff --git a/bin/pax/options.c b/bin/pax/options.c
index e8e5cc6d0f7b..da5229829a06 100644
--- a/bin/pax/options.c
+++ b/bin/pax/options.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: options.c,v 1.2 1994/09/24 02:56:22 davidg Exp $
+ * $Id: options.c,v 1.3 1995/03/19 13:28:53 joerg Exp $
*/
#ifndef lint
diff --git a/bin/pax/options.h b/bin/pax/options.h
index df1bd7daac41..675a78c9af24 100644
--- a/bin/pax/options.h
+++ b/bin/pax/options.h
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* @(#)options.h 8.2 (Berkeley) 4/18/94
- * $Id$
+ * $Id: options.h,v 1.2 1994/09/24 02:56:24 davidg Exp $
*/
/*
diff --git a/bin/pax/pat_rep.c b/bin/pax/pat_rep.c
index aadd17cd5d61..6c43f37ab191 100644
--- a/bin/pax/pat_rep.c
+++ b/bin/pax/pat_rep.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: pat_rep.c,v 1.3 1995/03/19 13:28:56 joerg Exp $
+ * $Id: pat_rep.c,v 1.4 1995/05/30 00:06:59 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/pax/pat_rep.h b/bin/pax/pat_rep.h
index e994a33cb6ed..ee5165496547 100644
--- a/bin/pax/pat_rep.h
+++ b/bin/pax/pat_rep.h
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* @(#)pat_rep.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: pat_rep.h,v 1.2 1994/09/24 02:56:25 davidg Exp $
*/
/*
diff --git a/bin/pax/pax.1 b/bin/pax/pax.1
index 8fe6b49538a2..a8b748368ef5 100644
--- a/bin/pax/pax.1
+++ b/bin/pax/pax.1
@@ -34,7 +34,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)pax.1 8.4 (Berkeley) 4/18/94
-.\" $Id: pax.1,v 1.3 1995/08/16 23:12:25 nate Exp $
+.\" $Id: pax.1,v 1.2.6.1 1995/08/29 11:46:20 davidg Exp $
.\"
.Dd April 18, 1994
.Dt PAX 1
diff --git a/bin/pax/pax.c b/bin/pax/pax.c
index 2bdf6bd81166..6b9ee71d8ee6 100644
--- a/bin/pax/pax.c
+++ b/bin/pax/pax.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: pax.c,v 1.2 1994/09/24 02:56:27 davidg Exp $
+ * $Id: pax.c,v 1.3 1995/05/30 00:07:00 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/pax/pax.h b/bin/pax/pax.h
index d6fe02c26c18..5109fff39a3a 100644
--- a/bin/pax/pax.h
+++ b/bin/pax/pax.h
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* @(#)pax.h 8.2 (Berkeley) 4/18/94
- * $Id: pax.h,v 1.3 1995/05/30 00:07:01 rgrimes Exp $
+ * $Id: pax.h,v 1.3.4.1 1995/08/25 03:15:56 davidg Exp $
*/
/*
diff --git a/bin/pax/sel_subs.c b/bin/pax/sel_subs.c
index c90dc786ee7b..2af13397a5af 100644
--- a/bin/pax/sel_subs.c
+++ b/bin/pax/sel_subs.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: sel_subs.c,v 1.2 1994/09/24 02:56:29 davidg Exp $
*/
#ifndef lint
diff --git a/bin/pax/sel_subs.h b/bin/pax/sel_subs.h
index dbab257b3e83..01acd79221cc 100644
--- a/bin/pax/sel_subs.h
+++ b/bin/pax/sel_subs.h
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* @(#)sel_subs.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: sel_subs.h,v 1.2 1994/09/24 02:56:31 davidg Exp $
*/
/*
diff --git a/bin/pax/tables.c b/bin/pax/tables.c
index c3ccc1c6a9e3..5cc749d9dd93 100644
--- a/bin/pax/tables.c
+++ b/bin/pax/tables.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: tables.c,v 1.2 1994/09/24 02:56:34 davidg Exp $
+ * $Id: tables.c,v 1.3 1995/05/30 00:07:01 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/pax/tables.h b/bin/pax/tables.h
index d7ff769fdb9b..3596a3599974 100644
--- a/bin/pax/tables.h
+++ b/bin/pax/tables.h
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* @(#)tables.h 8.1 (Berkeley) 5/31/93
- * $Id: tables.h,v 1.2 1994/09/24 02:56:35 davidg Exp $
+ * $Id: tables.h,v 1.3 1995/05/30 00:07:02 rgrimes Exp $
*/
/*
diff --git a/bin/pax/tar.c b/bin/pax/tar.c
index fc5ca2fa7f42..48a6ebfda0b9 100644
--- a/bin/pax/tar.c
+++ b/bin/pax/tar.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: tar.c,v 1.2 1994/09/24 02:56:37 davidg Exp $
+ * $Id: tar.c,v 1.3 1995/05/30 00:07:03 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/pax/tar.h b/bin/pax/tar.h
index 5533a0777e6d..f9b7db8f5aab 100644
--- a/bin/pax/tar.h
+++ b/bin/pax/tar.h
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* @(#)tar.h 8.2 (Berkeley) 4/18/94
- * $Id$
+ * $Id: tar.h,v 1.2 1994/09/24 02:56:38 davidg Exp $
*/
/*
diff --git a/bin/pax/tty_subs.c b/bin/pax/tty_subs.c
index 4a6cb5839719..ef507c1808da 100644
--- a/bin/pax/tty_subs.c
+++ b/bin/pax/tty_subs.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: tty_subs.c,v 1.2 1994/09/24 02:56:38 davidg Exp $
*/
#ifndef lint
diff --git a/bin/ps/Makefile b/bin/ps/Makefile
index e8885f24d177..dea0ff4e821d 100644
--- a/bin/ps/Makefile
+++ b/bin/ps/Makefile
@@ -1,5 +1,5 @@
# @(#)Makefile 8.1 (Berkeley) 6/2/93
-# $Id: Makefile,v 1.4 1995/04/15 03:23:36 davidg Exp $
+# $Id: Makefile,v 1.5 1995/04/15 03:31:19 davidg Exp $
PROG= ps
SRCS= fmt.c keyword.c nlist.c print.c ps.c
diff --git a/bin/ps/devname.c b/bin/ps/devname.c
index 0aedb2b293be..cce23d14ef33 100644
--- a/bin/ps/devname.c
+++ b/bin/ps/devname.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: devname.c,v 1.2 1994/09/24 02:56:41 davidg Exp $
*/
#if defined(LIBC_SCCS) && !defined(lint)
diff --git a/bin/ps/extern.h b/bin/ps/extern.h
index 173ddf33c3ac..305513b17a28 100644
--- a/bin/ps/extern.h
+++ b/bin/ps/extern.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)extern.h 8.3 (Berkeley) 4/2/94
- * $Id$
+ * $Id: extern.h,v 1.2 1994/09/24 02:56:42 davidg Exp $
*/
struct kinfo;
diff --git a/bin/ps/fmt.c b/bin/ps/fmt.c
index ce8efe902fab..23d6adb6acc4 100644
--- a/bin/ps/fmt.c
+++ b/bin/ps/fmt.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: fmt.c,v 1.4 1994/11/10 23:25:12 ats Exp $
+ * $Id: fmt.c,v 1.5 1995/03/09 20:40:17 davidg Exp $
*/
#ifndef lint
diff --git a/bin/ps/keyword.c b/bin/ps/keyword.c
index d2423181b81d..3b2f5a3bdc7c 100644
--- a/bin/ps/keyword.c
+++ b/bin/ps/keyword.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: keyword.c,v 1.7 1995/09/26 17:48:58 peter Exp $
+ * $Id: keyword.c,v 1.5.6.1 1995/10/05 07:46:36 davidg Exp $
*/
#ifndef lint
diff --git a/bin/ps/nlist.c b/bin/ps/nlist.c
index 293a6273aaf0..b41ecd4e4f78 100644
--- a/bin/ps/nlist.c
+++ b/bin/ps/nlist.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: nlist.c,v 1.4 1994/10/02 08:33:29 davidg Exp $
+ * $Id: nlist.c,v 1.5 1994/11/24 13:13:55 davidg Exp $
*/
#ifndef lint
diff --git a/bin/ps/print.c b/bin/ps/print.c
index 01f815abfcf3..be2a4d089a4a 100644
--- a/bin/ps/print.c
+++ b/bin/ps/print.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: print.c,v 1.10 1995/09/26 17:48:59 peter Exp $
+ * $Id: print.c,v 1.7.4.2 1995/10/05 07:46:37 davidg Exp $
*/
#ifndef lint
diff --git a/bin/ps/ps.1 b/bin/ps/ps.1
index 0c73e1768365..2fb6aa9c1432 100644
--- a/bin/ps/ps.1
+++ b/bin/ps/ps.1
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)ps.1 8.3 (Berkeley) 4/18/94
-.\" $Id$
+.\" $Id: ps.1,v 1.4 1994/09/24 02:56:46 davidg Exp $
.\"
.Dd April 18, 1994
.Dt PS 1
diff --git a/bin/ps/ps.c b/bin/ps/ps.c
index b6347d524c26..02bcd4b04c6c 100644
--- a/bin/ps/ps.c
+++ b/bin/ps/ps.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: ps.c,v 1.6 1995/03/19 13:29:06 joerg Exp $
+ * $Id: ps.c,v 1.7 1995/05/30 00:07:05 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/ps/ps.h b/bin/ps/ps.h
index d1b84333ec01..3f5ed2b9aee2 100644
--- a/bin/ps/ps.h
+++ b/bin/ps/ps.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ps.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: ps.h,v 1.2 1994/09/24 02:56:48 davidg Exp $
*/
#define UNLIMITED 0 /* unlimited terminal width */
diff --git a/bin/pwd/Makefile b/bin/pwd/Makefile
index 4937fb391932..ef1af5ed6877 100644
--- a/bin/pwd/Makefile
+++ b/bin/pwd/Makefile
@@ -1,5 +1,5 @@
# @(#)Makefile 8.1 (Berkeley) 5/31/93
-# $Id$
+# $Id: Makefile,v 1.2 1994/09/24 02:56:50 davidg Exp $
PROG= pwd
diff --git a/bin/pwd/pwd.1 b/bin/pwd/pwd.1
index d340aa7522a9..03cd35c3fe10 100644
--- a/bin/pwd/pwd.1
+++ b/bin/pwd/pwd.1
@@ -33,7 +33,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)pwd.1 8.1 (Berkeley) 5/31/93
-.\" $Id$
+.\" $Id: pwd.1,v 1.2 1994/09/24 02:56:51 davidg Exp $
.\"
.Dd May 31, 1993
.Dt PWD 1
diff --git a/bin/pwd/pwd.c b/bin/pwd/pwd.c
index 4cb2d1923e7f..5fa2d77e079d 100644
--- a/bin/pwd/pwd.c
+++ b/bin/pwd/pwd.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: pwd.c,v 1.2 1994/09/24 02:56:52 davidg Exp $
*/
#ifndef lint
diff --git a/bin/rcp/Makefile b/bin/rcp/Makefile
index 06e2fe0bd260..bf37d058a3da 100644
--- a/bin/rcp/Makefile
+++ b/bin/rcp/Makefile
@@ -1,5 +1,5 @@
# @(#)Makefile 8.1 (Berkeley) 7/19/93
-# $Id: Makefile,v 1.4 1994/09/29 13:06:00 csgr Exp $
+# $Id: Makefile,v 1.5 1994/11/20 23:18:15 wollman Exp $
PROG= rcp
SRCS= rcp.c util.c
diff --git a/bin/rcp/extern.h b/bin/rcp/extern.h
index ef055c4c7f47..ce959acd4ec0 100644
--- a/bin/rcp/extern.h
+++ b/bin/rcp/extern.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)extern.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: extern.h,v 1.2 1994/09/24 02:56:54 davidg Exp $
*/
typedef struct {
diff --git a/bin/rcp/pathnames.h b/bin/rcp/pathnames.h
index 39158f0d49ca..41ef6b9bc690 100644
--- a/bin/rcp/pathnames.h
+++ b/bin/rcp/pathnames.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)pathnames.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: pathnames.h,v 1.2 1994/09/24 02:56:55 davidg Exp $
*/
#include <paths.h>
diff --git a/bin/rcp/rcp.1 b/bin/rcp/rcp.1
index 67f1167e975d..48d608068697 100644
--- a/bin/rcp/rcp.1
+++ b/bin/rcp/rcp.1
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)rcp.1 8.1 (Berkeley) 5/31/93
-.\" $Id$
+.\" $Id: rcp.1,v 1.2 1994/09/24 02:56:56 davidg Exp $
.\"
.Dd May 31, 1993
.Dt RCP 1
diff --git a/bin/rcp/rcp.c b/bin/rcp/rcp.c
index 564786828af7..5cedc6cb41f0 100644
--- a/bin/rcp/rcp.c
+++ b/bin/rcp/rcp.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: rcp.c,v 1.3 1995/03/19 13:29:14 joerg Exp $
+ * $Id: rcp.c,v 1.4 1995/05/30 00:07:06 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/rcp/util.c b/bin/rcp/util.c
index 099d2f9f2a54..af356d7f8a70 100644
--- a/bin/rcp/util.c
+++ b/bin/rcp/util.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: util.c,v 1.3 1995/03/19 13:29:16 joerg Exp $
+ * $Id: util.c,v 1.4 1995/05/30 00:07:07 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/rm/Makefile b/bin/rm/Makefile
index b7e1d5894cb9..9a534293f246 100644
--- a/bin/rm/Makefile
+++ b/bin/rm/Makefile
@@ -1,5 +1,5 @@
# @(#)Makefile 8.1 (Berkeley) 5/31/93
-# $Id: Makefile,v 1.2 1994/09/24 02:56:59 davidg Exp $
+# $Id: Makefile,v 1.3 1995/04/13 13:35:07 ache Exp $
PROG= rm
SRCS= rm.c stat_flags.c
diff --git a/bin/rm/rm.1 b/bin/rm/rm.1
index 2e523b9a8639..31aba2cfe6ce 100644
--- a/bin/rm/rm.1
+++ b/bin/rm/rm.1
@@ -33,7 +33,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)rm.1 8.2 (Berkeley) 4/18/94
-.\" $Id$
+.\" $Id: rm.1,v 1.2 1994/09/24 02:57:00 davidg Exp $
.\"
.Dd April 18, 1994
.Dt RM 1
diff --git a/bin/rm/rm.c b/bin/rm/rm.c
index 1a743786030d..ffe565505241 100644
--- a/bin/rm/rm.c
+++ b/bin/rm/rm.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: rm.c,v 1.5 1994/09/24 02:57:02 davidg Exp $
+ * $Id: rm.c,v 1.6 1995/04/13 13:35:09 ache Exp $
*/
#ifndef lint
diff --git a/bin/rmail/Makefile b/bin/rmail/Makefile
index ca3c69c2ea1d..f118add14676 100644
--- a/bin/rmail/Makefile
+++ b/bin/rmail/Makefile
@@ -1,5 +1,5 @@
# @(#)Makefile 8.1 (Berkeley) 5/31/93
-# $Id: Makefile,v 1.3 1994/09/24 02:57:03 davidg Exp $
+# $Id: Makefile,v 1.4 1995/03/05 08:27:14 joerg Exp $
PROG= rmail
MAN8= rmail.8
diff --git a/bin/rmail/rmail.8 b/bin/rmail/rmail.8
index 859a3c55c9b8..b7a5be096855 100644
--- a/bin/rmail/rmail.8
+++ b/bin/rmail/rmail.8
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)rmail.8 6.10 (Berkeley) 4/29/93
-.\" $Id$
+.\" $Id: rmail.8,v 1.2 1994/09/24 02:57:04 davidg Exp $
.\"
.Dd April 29, 1993
.Dt RMAIL 8
diff --git a/bin/rmail/rmail.c b/bin/rmail/rmail.c
index aeec46cca134..d3f6221a211f 100644
--- a/bin/rmail/rmail.c
+++ b/bin/rmail/rmail.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: rmail.c,v 1.4 1995/03/19 13:29:18 joerg Exp $
+ * $Id: rmail.c,v 1.5 1995/05/30 00:07:08 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/rmdir/Makefile b/bin/rmdir/Makefile
index 4bedbff9d478..76befda8dcf1 100644
--- a/bin/rmdir/Makefile
+++ b/bin/rmdir/Makefile
@@ -1,5 +1,5 @@
# @(#)Makefile 8.1 (Berkeley) 5/31/93
-# $Id$
+# $Id: Makefile,v 1.2 1994/09/24 02:57:09 davidg Exp $
PROG= rmdir
diff --git a/bin/rmdir/rmdir.1 b/bin/rmdir/rmdir.1
index 7b2ddf7cd4a4..02ab22befb5c 100644
--- a/bin/rmdir/rmdir.1
+++ b/bin/rmdir/rmdir.1
@@ -33,7 +33,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)rmdir.1 8.1 (Berkeley) 5/31/93
-.\" $Id$
+.\" $Id: rmdir.1,v 1.2 1994/09/24 02:57:11 davidg Exp $
.\"
.Dd May 31, 1993
.Dt RMDIR 1
diff --git a/bin/rmdir/rmdir.c b/bin/rmdir/rmdir.c
index e47cbb2bdba1..6bd13df3dcd7 100644
--- a/bin/rmdir/rmdir.c
+++ b/bin/rmdir/rmdir.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: rmdir.c,v 1.2 1994/09/24 02:57:13 davidg Exp $
*/
#ifndef lint
diff --git a/bin/sh/Makefile b/bin/sh/Makefile
index 1d00e1abb132..40a2bfc31fe3 100644
--- a/bin/sh/Makefile
+++ b/bin/sh/Makefile
@@ -1,5 +1,5 @@
# @(#)Makefile 8.1 (Berkeley) 6/8/93
-# $Id: Makefile,v 1.6 1994/09/24 02:57:18 davidg Exp $
+# $Id: Makefile,v 1.7 1994/10/02 01:36:03 ache Exp $
PROG= sh
SRCS= alias.c builtins.c cd.c echo.c error.c eval.c exec.c expand.c \
diff --git a/bin/sh/TOUR b/bin/sh/TOUR
index 23925e4fa312..d026868ec9ff 100644
--- a/bin/sh/TOUR
+++ b/bin/sh/TOUR
@@ -1,5 +1,5 @@
# @(#)TOUR 8.1 (Berkeley) 5/31/93
-# $Id$
+# $Id: TOUR,v 1.2 1994/09/24 02:57:19 davidg Exp $
NOTE -- This is the original TOUR paper distributed with ash and
does not represent the current state of the shell. It is provided anyway
diff --git a/bin/sh/alias.c b/bin/sh/alias.c
index c851287a4643..e37f70332cb1 100644
--- a/bin/sh/alias.c
+++ b/bin/sh/alias.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: alias.c,v 1.2 1994/09/24 02:57:20 davidg Exp $
+ * $Id: alias.c,v 1.3 1995/05/30 00:07:10 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/sh/alias.h b/bin/sh/alias.h
index b5fed8dd50dd..cbb98c94a8f7 100644
--- a/bin/sh/alias.h
+++ b/bin/sh/alias.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)alias.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: alias.h,v 1.2 1994/09/24 02:57:20 davidg Exp $
*/
#define ALIASINUSE 1
diff --git a/bin/sh/arith.y b/bin/sh/arith.y
index b71be6ba639a..53aefa58d00c 100644
--- a/bin/sh/arith.y
+++ b/bin/sh/arith.y
@@ -74,7 +74,7 @@ expr: ARITH_LPAREN expr ARITH_RPAREN = { $$ = $2; }
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: arith.y,v 1.2 1994/09/24 02:57:21 davidg Exp $
*/
#ifndef lint
diff --git a/bin/sh/arith_lex.l b/bin/sh/arith_lex.l
index c50463f56815..9c3b851c4dff 100644
--- a/bin/sh/arith_lex.l
+++ b/bin/sh/arith_lex.l
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: arith_lex.l,v 1.2 1994/09/24 02:57:22 davidg Exp $
*/
#ifndef lint
diff --git a/bin/sh/bltin/bltin.h b/bin/sh/bltin/bltin.h
index 67011295874d..8ff7701d1204 100644
--- a/bin/sh/bltin/bltin.h
+++ b/bin/sh/bltin/bltin.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)bltin.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: bltin.h,v 1.2 1994/09/24 02:58:26 davidg Exp $
*/
/*
diff --git a/bin/sh/bltin/echo.1 b/bin/sh/bltin/echo.1
index 435b85131a08..81ac89b84831 100644
--- a/bin/sh/bltin/echo.1
+++ b/bin/sh/bltin/echo.1
@@ -34,7 +34,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)echo.1 8.1 (Berkeley) 5/31/93
-.\" $Id$
+.\" $Id: echo.1,v 1.2 1994/09/24 02:58:27 davidg Exp $
.\"
.Dd May 31, 1993
.Dt ECHO 1
diff --git a/bin/sh/bltin/echo.c b/bin/sh/bltin/echo.c
index f9f1928aa68b..121ab23f8129 100644
--- a/bin/sh/bltin/echo.c
+++ b/bin/sh/bltin/echo.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)echo.c 8.1 (Berkeley) 5/31/93
- * $Id: echo.c,v 1.2 1994/09/24 02:58:29 davidg Exp $
+ * $Id: echo.c,v 1.2.6.1 1995/08/30 05:44:18 davidg Exp $
*/
/*
diff --git a/bin/sh/builtins b/bin/sh/builtins
index 96247185b34b..b4a50fb41fec 100755
--- a/bin/sh/builtins
+++ b/bin/sh/builtins
@@ -35,7 +35,7 @@
# SUCH DAMAGE.
#
# @(#)builtins 8.1 (Berkeley) 5/31/93
-# $Id$
+# $Id: builtins,v 1.2 1994/09/24 02:57:23 davidg Exp $
#
# This file lists all the builtin commands. The first column is the name
diff --git a/bin/sh/cd.c b/bin/sh/cd.c
index ac440696e80d..834334ed4a64 100644
--- a/bin/sh/cd.c
+++ b/bin/sh/cd.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: cd.c,v 1.3 1994/11/06 01:29:26 jkh Exp $
+ * $Id: cd.c,v 1.4 1994/12/26 13:02:05 bde Exp $
*/
#ifndef lint
diff --git a/bin/sh/errmsg.c b/bin/sh/errmsg.c
index 87a8d0cd1bdf..00fef65d2950 100644
--- a/bin/sh/errmsg.c
+++ b/bin/sh/errmsg.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: errmsg.c,v 1.2 1994/09/24 02:57:26 davidg Exp $
*/
#ifndef lint
diff --git a/bin/sh/errmsg.h b/bin/sh/errmsg.h
index 209094a3843d..34dc6c28035c 100644
--- a/bin/sh/errmsg.h
+++ b/bin/sh/errmsg.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)errmsg.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: errmsg.h,v 1.2 1994/09/24 02:57:26 davidg Exp $
*/
#define E_OPEN 01
diff --git a/bin/sh/error.c b/bin/sh/error.c
index c1c3b826eba7..4bce4a565cca 100644
--- a/bin/sh/error.c
+++ b/bin/sh/error.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: error.c,v 1.2 1994/09/24 02:57:27 davidg Exp $
+ * $Id: error.c,v 1.3 1995/05/30 00:07:10 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/sh/error.h b/bin/sh/error.h
index 03a2f89c56e1..cbb76f4cda39 100644
--- a/bin/sh/error.h
+++ b/bin/sh/error.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)error.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: error.h,v 1.2 1994/09/24 02:57:28 davidg Exp $
*/
/*
diff --git a/bin/sh/eval.c b/bin/sh/eval.c
index 34417df5f3c1..8b4405e6d54b 100644
--- a/bin/sh/eval.c
+++ b/bin/sh/eval.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: eval.c,v 1.3 1995/05/30 00:07:11 rgrimes Exp $
+ * $Id: eval.c,v 1.3.4.1 1995/09/20 08:34:47 davidg Exp $
*/
#ifndef lint
diff --git a/bin/sh/eval.h b/bin/sh/eval.h
index 6d64449599f9..53aa5755915e 100644
--- a/bin/sh/eval.h
+++ b/bin/sh/eval.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)eval.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: eval.h,v 1.2 1994/09/24 02:57:31 davidg Exp $
*/
extern char *commandname; /* currently executing command */
diff --git a/bin/sh/exec.c b/bin/sh/exec.c
index e9061e8b1879..169e0f528661 100644
--- a/bin/sh/exec.c
+++ b/bin/sh/exec.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: exec.c,v 1.3 1994/09/24 02:57:32 davidg Exp $
+ * $Id: exec.c,v 1.4 1995/05/30 00:07:12 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/sh/exec.h b/bin/sh/exec.h
index 90d91003ae33..60500ca248d2 100644
--- a/bin/sh/exec.h
+++ b/bin/sh/exec.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)exec.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: exec.h,v 1.2 1994/09/24 02:57:33 davidg Exp $
*/
/* values of cmdtype */
diff --git a/bin/sh/expand.c b/bin/sh/expand.c
index a5d69ce9672d..50779276fb94 100644
--- a/bin/sh/expand.c
+++ b/bin/sh/expand.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: expand.c,v 1.3 1995/03/01 13:04:15 guido Exp $
+ * $Id: expand.c,v 1.4 1995/05/30 00:07:13 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/sh/expand.h b/bin/sh/expand.h
index 6af4360abe16..efc75f12791e 100644
--- a/bin/sh/expand.h
+++ b/bin/sh/expand.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)expand.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: expand.h,v 1.2 1994/09/24 02:57:35 davidg Exp $
*/
struct strlist {
diff --git a/bin/sh/funcs/cmv b/bin/sh/funcs/cmv
index cacb5ba65c51..9ddddffc12ee 100644
--- a/bin/sh/funcs/cmv
+++ b/bin/sh/funcs/cmv
@@ -33,7 +33,7 @@
# SUCH DAMAGE.
#
# @(#)cmv 8.1 (Berkeley) 5/31/93
-# $Id$
+# $Id: cmv,v 1.2 1994/09/24 02:58:33 davidg Exp $
# Conditional move--don't replace an existing file.
diff --git a/bin/sh/funcs/dirs b/bin/sh/funcs/dirs
index fe70c6856c70..b6a02c3facdf 100644
--- a/bin/sh/funcs/dirs
+++ b/bin/sh/funcs/dirs
@@ -33,7 +33,7 @@
# SUCH DAMAGE.
#
# @(#)dirs 8.1 (Berkeley) 5/31/93
-# $Id$
+# $Id: dirs,v 1.2 1994/09/24 02:58:34 davidg Exp $
# pushd, popd, and dirs --- written by Chris Bertin
# Pixel Computer Inc. ...!wjh12!pixel!pixutl!chris
diff --git a/bin/sh/funcs/kill b/bin/sh/funcs/kill
index f3489b5efe3c..5578ca45b1f0 100644
--- a/bin/sh/funcs/kill
+++ b/bin/sh/funcs/kill
@@ -33,7 +33,7 @@
# SUCH DAMAGE.
#
# @(#)kill 8.1 (Berkeley) 5/31/93
-# $Id$
+# $Id: kill,v 1.2 1994/09/24 02:58:36 davidg Exp $
# Convert job names to process ids and then run /bin/kill.
diff --git a/bin/sh/funcs/login b/bin/sh/funcs/login
index f44d3a593d78..b4e2747d3871 100644
--- a/bin/sh/funcs/login
+++ b/bin/sh/funcs/login
@@ -33,7 +33,7 @@
# SUCH DAMAGE.
#
# @(#)login 8.1 (Berkeley) 5/31/93
-# $Id$
+# $Id: login,v 1.2 1994/09/24 02:58:38 davidg Exp $
# replaces the login builtin in the BSD shell
login () exec login "$@"
diff --git a/bin/sh/funcs/newgrp b/bin/sh/funcs/newgrp
index fc02baacd0fa..ba38f221157f 100644
--- a/bin/sh/funcs/newgrp
+++ b/bin/sh/funcs/newgrp
@@ -33,6 +33,6 @@
# SUCH DAMAGE.
#
# @(#)newgrp 8.1 (Berkeley) 5/31/93
-# $Id$
+# $Id: newgrp,v 1.2 1994/09/24 02:58:40 davidg Exp $
newgrp() exec newgrp "$@"
diff --git a/bin/sh/funcs/popd b/bin/sh/funcs/popd
index 938aabc2b702..b6c198e2a8c5 100644
--- a/bin/sh/funcs/popd
+++ b/bin/sh/funcs/popd
@@ -33,7 +33,7 @@
# SUCH DAMAGE.
#
# @(#)popd 8.1 (Berkeley) 5/31/93
-# $Id$
+# $Id: popd,v 1.2 1994/09/24 02:58:41 davidg Exp $
# pushd, popd, and dirs --- written by Chris Bertin
# Pixel Computer Inc. ...!wjh12!pixel!pixutl!chris
diff --git a/bin/sh/funcs/pushd b/bin/sh/funcs/pushd
index 879ae207c111..f4c3b389002f 100644
--- a/bin/sh/funcs/pushd
+++ b/bin/sh/funcs/pushd
@@ -33,7 +33,7 @@
# SUCH DAMAGE.
#
# @(#)pushd 8.1 (Berkeley) 5/31/93
-# $Id$
+# $Id: pushd,v 1.2 1994/09/24 02:58:43 davidg Exp $
# pushd, popd, and dirs --- written by Chris Bertin
# Pixel Computer Inc. ...!wjh12!pixel!pixutl!chris
diff --git a/bin/sh/funcs/suspend b/bin/sh/funcs/suspend
index 3a0735c21856..6c776c296a40 100644
--- a/bin/sh/funcs/suspend
+++ b/bin/sh/funcs/suspend
@@ -33,7 +33,7 @@
# SUCH DAMAGE.
#
# @(#)suspend 8.1 (Berkeley) 5/31/93
-# $Id$
+# $Id: suspend,v 1.2 1994/09/24 02:58:44 davidg Exp $
suspend() {
local -
diff --git a/bin/sh/histedit.c b/bin/sh/histedit.c
index 9cf8a2305957..5801038a391c 100644
--- a/bin/sh/histedit.c
+++ b/bin/sh/histedit.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: histedit.c,v 1.3 1995/05/05 06:34:13 davidg Exp $
+ * $Id: histedit.c,v 1.4 1995/05/30 00:07:14 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/sh/init.h b/bin/sh/init.h
index 8466409e46f2..b603dc5c86ff 100644
--- a/bin/sh/init.h
+++ b/bin/sh/init.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)init.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: init.h,v 1.2 1994/09/24 02:57:37 davidg Exp $
*/
#ifdef __STDC__
diff --git a/bin/sh/input.c b/bin/sh/input.c
index 423d51bf50ab..03db2fc10beb 100644
--- a/bin/sh/input.c
+++ b/bin/sh/input.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: input.c,v 1.2 1994/09/24 02:57:39 davidg Exp $
+ * $Id: input.c,v 1.3 1995/05/30 00:07:15 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/sh/input.h b/bin/sh/input.h
index 77b193b81c6a..a7677726a8c8 100644
--- a/bin/sh/input.h
+++ b/bin/sh/input.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)input.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: input.h,v 1.2 1994/09/24 02:57:40 davidg Exp $
*/
/* PEOF (the end of file marker) is defined in syntax.h */
diff --git a/bin/sh/jobs.c b/bin/sh/jobs.c
index ebc1d3d59595..5aded576f359 100644
--- a/bin/sh/jobs.c
+++ b/bin/sh/jobs.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: jobs.c,v 1.4 1995/09/21 13:24:20 bde Exp $
+ * $Id: jobs.c,v 1.3.4.1 1995/10/01 06:08:43 davidg Exp $
*/
#ifndef lint
diff --git a/bin/sh/jobs.h b/bin/sh/jobs.h
index fd0802383377..8f70b5b5151d 100644
--- a/bin/sh/jobs.h
+++ b/bin/sh/jobs.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)jobs.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: jobs.h,v 1.2 1994/09/24 02:57:42 davidg Exp $
*/
/* Mode argument to forkshell. Don't change FORK_FG or FORK_BG. */
diff --git a/bin/sh/machdep.h b/bin/sh/machdep.h
index 97d82a952a72..85dbe48761e3 100644
--- a/bin/sh/machdep.h
+++ b/bin/sh/machdep.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)machdep.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: machdep.h,v 1.2 1994/09/24 02:57:43 davidg Exp $
*/
/*
diff --git a/bin/sh/mail.c b/bin/sh/mail.c
index a122c9bd0961..61b0bda91578 100644
--- a/bin/sh/mail.c
+++ b/bin/sh/mail.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: mail.c,v 1.2 1994/09/24 02:57:44 davidg Exp $
*/
#ifndef lint
diff --git a/bin/sh/mail.h b/bin/sh/mail.h
index d7b4fe3e4c02..ae2f617f83ae 100644
--- a/bin/sh/mail.h
+++ b/bin/sh/mail.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)mail.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: mail.h,v 1.2 1994/09/24 02:57:45 davidg Exp $
*/
#ifdef __STDC__
diff --git a/bin/sh/main.c b/bin/sh/main.c
index 9d451d4cc09c..b3cafd26c9d6 100644
--- a/bin/sh/main.c
+++ b/bin/sh/main.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: main.c,v 1.2 1994/09/24 02:57:48 davidg Exp $
+ * $Id: main.c,v 1.3 1995/05/30 00:07:18 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/sh/main.h b/bin/sh/main.h
index b43f04108575..6158883ecb28 100644
--- a/bin/sh/main.h
+++ b/bin/sh/main.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)main.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: main.h,v 1.2 1994/09/24 02:57:49 davidg Exp $
*/
extern int rootpid; /* pid of main shell */
diff --git a/bin/sh/memalloc.c b/bin/sh/memalloc.c
index 873e30c8d6b4..45104314da3b 100644
--- a/bin/sh/memalloc.c
+++ b/bin/sh/memalloc.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: memalloc.c,v 1.2 1994/09/24 02:57:50 davidg Exp $
*/
#ifndef lint
diff --git a/bin/sh/memalloc.h b/bin/sh/memalloc.h
index 43f3335567ee..1fff3da8749c 100644
--- a/bin/sh/memalloc.h
+++ b/bin/sh/memalloc.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)memalloc.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: memalloc.h,v 1.2 1994/09/24 02:57:51 davidg Exp $
*/
struct stackmark {
diff --git a/bin/sh/miscbltin.c b/bin/sh/miscbltin.c
index 52a66e72e65c..339dae0a6a0c 100644
--- a/bin/sh/miscbltin.c
+++ b/bin/sh/miscbltin.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: miscbltin.c,v 1.2 1994/09/24 02:57:52 davidg Exp $
*/
#ifndef lint
diff --git a/bin/sh/mkbuiltins b/bin/sh/mkbuiltins
index e7f0d8dbbdf2..a1fca5c5e13e 100755
--- a/bin/sh/mkbuiltins
+++ b/bin/sh/mkbuiltins
@@ -35,7 +35,7 @@
# SUCH DAMAGE.
#
# @(#)mkbuiltins 8.1 (Berkeley) 5/31/93
-# $Id: mkbuiltins,v 1.2 1994/09/24 02:57:53 davidg Exp $
+# $Id: mkbuiltins,v 1.3 1995/03/30 19:45:20 phk Exp $
temp=/tmp/ka$$
havejobs=0
diff --git a/bin/sh/mkinit.c b/bin/sh/mkinit.c
index fc71cdb9cdbe..387268c620e7 100644
--- a/bin/sh/mkinit.c
+++ b/bin/sh/mkinit.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: mkinit.c,v 1.5 1995/10/01 15:13:31 joerg Exp $
+ * $Id: mkinit.c,v 1.4.4.1 1995/10/02 07:55:17 davidg Exp $
*/
#ifndef lint
diff --git a/bin/sh/mknodes.c b/bin/sh/mknodes.c
index 5ede3af9cef0..1c08d1487ab6 100644
--- a/bin/sh/mknodes.c
+++ b/bin/sh/mknodes.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: mknodes.c,v 1.2 1994/09/24 02:57:55 davidg Exp $
*/
#ifndef lint
diff --git a/bin/sh/mksignames.c b/bin/sh/mksignames.c
index 5d7b9da253c1..a348dcd6bff6 100644
--- a/bin/sh/mksignames.c
+++ b/bin/sh/mksignames.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: mksignames.c,v 1.2 1994/09/24 02:57:56 davidg Exp $
+ * $Id: mksignames.c,v 1.3 1995/05/30 00:07:20 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/sh/mksyntax.c b/bin/sh/mksyntax.c
index b55545c20e32..45cd1535ed39 100644
--- a/bin/sh/mksyntax.c
+++ b/bin/sh/mksyntax.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: mksyntax.c,v 1.2 1994/09/24 02:57:57 davidg Exp $
*/
#ifndef lint
diff --git a/bin/sh/mktokens b/bin/sh/mktokens
index 12983e846be4..e37c4505108b 100644
--- a/bin/sh/mktokens
+++ b/bin/sh/mktokens
@@ -35,7 +35,7 @@
# SUCH DAMAGE.
#
# @(#)mktokens 8.1 (Berkeley) 5/31/93
-# $Id$
+# $Id: mktokens,v 1.2 1994/09/24 02:57:58 davidg Exp $
# The following is a list of tokens. The second column is nonzero if the
# token marks the end of a list. The third column is the name to print in
diff --git a/bin/sh/myhistedit.h b/bin/sh/myhistedit.h
index c08951117ba1..7d9d9de748a0 100644
--- a/bin/sh/myhistedit.h
+++ b/bin/sh/myhistedit.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)myhistedit.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: myhistedit.h,v 1.2 1994/09/24 02:57:59 davidg Exp $
*/
#include <histedit.h>
diff --git a/bin/sh/mystring.c b/bin/sh/mystring.c
index 01b1add01abc..62d96644257c 100644
--- a/bin/sh/mystring.c
+++ b/bin/sh/mystring.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: mystring.c,v 1.2 1994/09/24 02:57:59 davidg Exp $
*/
#ifndef lint
diff --git a/bin/sh/mystring.h b/bin/sh/mystring.h
index ca04daab2543..419df4487b97 100644
--- a/bin/sh/mystring.h
+++ b/bin/sh/mystring.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)mystring.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: mystring.h,v 1.2 1994/09/24 02:58:00 davidg Exp $
*/
#include <string.h>
diff --git a/bin/sh/nodes.c.pat b/bin/sh/nodes.c.pat
index e0602ed69ddb..c22a80611dd8 100644
--- a/bin/sh/nodes.c.pat
+++ b/bin/sh/nodes.c.pat
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nodes.c.pat 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: nodes.c.pat,v 1.2 1994/09/24 02:58:02 davidg Exp $
*/
/*
diff --git a/bin/sh/nodetypes b/bin/sh/nodetypes
index 5f33a1703e49..ee1037276b36 100644
--- a/bin/sh/nodetypes
+++ b/bin/sh/nodetypes
@@ -34,7 +34,7 @@
# SUCH DAMAGE.
#
# @(#)nodetypes 8.1 (Berkeley) 5/31/93
-# $Id$
+# $Id: nodetypes,v 1.2 1994/09/24 02:58:03 davidg Exp $
# This file describes the nodes used in parse trees. Unindented lines
# contain a node type followed by a structure tag. Subsequent indented
diff --git a/bin/sh/options.c b/bin/sh/options.c
index 889715a6a60b..86307f2b75b3 100644
--- a/bin/sh/options.c
+++ b/bin/sh/options.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: options.c,v 1.3.4.2 1995/10/02 07:55:18 davidg Exp $
+ * $Id: options.c,v 1.3.4.3 1995/10/10 01:04:38 davidg Exp $
*/
#ifndef lint
diff --git a/bin/sh/options.h b/bin/sh/options.h
index 095dc29c3f04..532f07354ee6 100644
--- a/bin/sh/options.h
+++ b/bin/sh/options.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)options.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: options.h,v 1.2 1994/09/24 02:58:05 davidg Exp $
*/
struct shparam {
diff --git a/bin/sh/output.c b/bin/sh/output.c
index 914df67eb387..fd51672bcd31 100644
--- a/bin/sh/output.c
+++ b/bin/sh/output.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: output.c,v 1.2 1994/09/24 02:58:06 davidg Exp $
*/
#ifndef lint
diff --git a/bin/sh/output.h b/bin/sh/output.h
index e4318f3cacb1..032cd2d8b4f3 100644
--- a/bin/sh/output.h
+++ b/bin/sh/output.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)output.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: output.h,v 1.2 1994/09/24 02:58:08 davidg Exp $
*/
#ifndef OUTPUT_INCL
diff --git a/bin/sh/parser.c b/bin/sh/parser.c
index d12932685dd4..2ade7328d00c 100644
--- a/bin/sh/parser.c
+++ b/bin/sh/parser.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: parser.c,v 1.6.4.1 1995/08/25 03:21:06 davidg Exp $
+ * $Id: parser.c,v 1.6.4.2 1995/08/30 05:53:05 davidg Exp $
*/
#ifndef lint
diff --git a/bin/sh/parser.h b/bin/sh/parser.h
index 7408bd7a340c..6991a7aee7be 100644
--- a/bin/sh/parser.h
+++ b/bin/sh/parser.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)parser.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: parser.h,v 1.2 1994/09/24 02:58:09 davidg Exp $
*/
/* control characters in argument strings */
diff --git a/bin/sh/redir.c b/bin/sh/redir.c
index efd1d3af2ee3..63b74f60add9 100644
--- a/bin/sh/redir.c
+++ b/bin/sh/redir.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: redir.c,v 1.2 1994/09/24 02:58:10 davidg Exp $
+ * $Id: redir.c,v 1.3 1995/05/30 00:07:22 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/sh/redir.h b/bin/sh/redir.h
index 05842bba5137..ded09f773f68 100644
--- a/bin/sh/redir.h
+++ b/bin/sh/redir.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)redir.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: redir.h,v 1.2 1994/09/24 02:58:11 davidg Exp $
*/
/* flags passed to redirect */
diff --git a/bin/sh/sh.1 b/bin/sh/sh.1
index 989b214d20a7..1bdb1e26272a 100644
--- a/bin/sh/sh.1
+++ b/bin/sh/sh.1
@@ -33,7 +33,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)sh.1 8.4 (Berkeley) 4/18/94
-.\" $Id: sh.1,v 1.2 1994/09/24 02:58:13 davidg Exp $
+.\" $Id: sh.1,v 1.3 1995/05/05 16:49:15 adam Exp $
.\"
.na
.TH SH 1
diff --git a/bin/sh/shell.h b/bin/sh/shell.h
index d038f91b81f0..5f77da3004b2 100644
--- a/bin/sh/shell.h
+++ b/bin/sh/shell.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)shell.h 8.1 (Berkeley) 5/31/93
- * $Id: shell.h,v 1.2 1994/09/24 02:58:15 davidg Exp $
+ * $Id: shell.h,v 1.2.6.1 1995/08/30 05:53:08 davidg Exp $
*/
/*
diff --git a/bin/sh/show.c b/bin/sh/show.c
index 43fb34c82709..785ed31c5ce1 100644
--- a/bin/sh/show.c
+++ b/bin/sh/show.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: show.c,v 1.2 1994/09/24 02:58:16 davidg Exp $
*/
#ifndef lint
diff --git a/bin/sh/trap.c b/bin/sh/trap.c
index a09a0cf9782f..dec7bd4da32c 100644
--- a/bin/sh/trap.c
+++ b/bin/sh/trap.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: trap.c,v 1.2 1994/09/24 02:58:18 davidg Exp $
+ * $Id: trap.c,v 1.3 1995/05/30 00:07:23 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/sh/trap.h b/bin/sh/trap.h
index a588432ef882..c21496d830e0 100644
--- a/bin/sh/trap.h
+++ b/bin/sh/trap.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)trap.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: trap.h,v 1.2 1994/09/24 02:58:20 davidg Exp $
*/
extern int pendingsigs;
diff --git a/bin/sh/var.c b/bin/sh/var.c
index 00420d56b78d..9db81e402da8 100644
--- a/bin/sh/var.c
+++ b/bin/sh/var.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: var.c,v 1.2 1994/09/24 02:58:22 davidg Exp $
+ * $Id: var.c,v 1.3 1995/05/30 00:07:24 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/sh/var.h b/bin/sh/var.h
index 38e61ef276c9..758e23836067 100644
--- a/bin/sh/var.h
+++ b/bin/sh/var.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)var.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: var.h,v 1.2 1994/09/24 02:58:23 davidg Exp $
*/
/*
diff --git a/bin/sleep/Makefile b/bin/sleep/Makefile
index 163470fb3bd0..c148da8ccacf 100644
--- a/bin/sleep/Makefile
+++ b/bin/sleep/Makefile
@@ -1,5 +1,5 @@
# @(#)Makefile 8.1 (Berkeley) 5/31/93
-# $Id$
+# $Id: Makefile,v 1.2 1994/09/24 02:58:47 davidg Exp $
PROG= sleep
diff --git a/bin/sleep/sleep.1 b/bin/sleep/sleep.1
index 1e4934bc066c..9dad07d04fe0 100644
--- a/bin/sleep/sleep.1
+++ b/bin/sleep/sleep.1
@@ -33,7 +33,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)sleep.1 8.3 (Berkeley) 4/18/94
-.\" $Id$
+.\" $Id: sleep.1,v 1.2 1994/09/24 02:58:49 davidg Exp $
.\"
.Dd April 18, 1994
.Dt SLEEP 1
diff --git a/bin/sleep/sleep.c b/bin/sleep/sleep.c
index 773abe830570..14662b9208f2 100644
--- a/bin/sleep/sleep.c
+++ b/bin/sleep/sleep.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: sleep.c,v 1.2 1994/09/24 02:58:51 davidg Exp $
*/
#ifndef lint
diff --git a/bin/stty/Makefile b/bin/stty/Makefile
index d0b160d74b03..fdff14bcc63d 100644
--- a/bin/stty/Makefile
+++ b/bin/stty/Makefile
@@ -1,5 +1,5 @@
# @(#)Makefile 8.1 (Berkeley) 5/31/93
-# $Id$
+# $Id: Makefile,v 1.2 1994/09/24 02:58:53 davidg Exp $
PROG= stty
SRCS= cchar.c gfmt.c key.c modes.c print.c stty.c util.c
diff --git a/bin/stty/cchar.c b/bin/stty/cchar.c
index 8b0c97004024..fec0d204569c 100644
--- a/bin/stty/cchar.c
+++ b/bin/stty/cchar.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: cchar.c,v 1.3 1995/04/28 19:29:28 ache Exp $
+ * $Id: cchar.c,v 1.4 1995/05/30 00:07:25 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/stty/extern.h b/bin/stty/extern.h
index aa7a35b13d27..be23aed5dbb7 100644
--- a/bin/stty/extern.h
+++ b/bin/stty/extern.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)extern.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: extern.h,v 1.2 1994/09/24 02:58:56 davidg Exp $
*/
int c_cchars __P((const void *, const void *));
diff --git a/bin/stty/gfmt.c b/bin/stty/gfmt.c
index f6ef0e15c443..52e2bebec88f 100644
--- a/bin/stty/gfmt.c
+++ b/bin/stty/gfmt.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: gfmt.c,v 1.3 1995/03/19 13:29:23 joerg Exp $
+ * $Id: gfmt.c,v 1.4 1995/05/30 00:07:26 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/stty/key.c b/bin/stty/key.c
index 362b6f110be4..5574ba3d05e9 100644
--- a/bin/stty/key.c
+++ b/bin/stty/key.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: key.c,v 1.3 1995/03/19 13:29:25 joerg Exp $
+ * $Id: key.c,v 1.4 1995/04/28 19:29:29 ache Exp $
*/
#ifndef lint
diff --git a/bin/stty/modes.c b/bin/stty/modes.c
index 0aa7438ae7f2..a1f4b9d988a6 100644
--- a/bin/stty/modes.c
+++ b/bin/stty/modes.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: modes.c,v 1.2 1994/09/24 02:58:59 davidg Exp $
+ * $Id: modes.c,v 1.3 1995/04/29 15:17:17 bde Exp $
*/
#ifndef lint
diff --git a/bin/stty/print.c b/bin/stty/print.c
index 6df7fea2dc16..eb44c19496fe 100644
--- a/bin/stty/print.c
+++ b/bin/stty/print.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: print.c,v 1.4 1995/04/29 15:17:16 bde Exp $
+ * $Id: print.c,v 1.5 1995/05/30 00:07:27 rgrimes Exp $
*/
#ifndef lint
diff --git a/bin/stty/stty.1 b/bin/stty/stty.1
index addbe1b4d0fe..8de1d8da1a7f 100644
--- a/bin/stty/stty.1
+++ b/bin/stty/stty.1
@@ -33,7 +33,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)stty.1 8.4 (Berkeley) 4/18/94
-.\" $Id$
+.\" $Id: stty.1,v 1.2 1994/09/24 02:59:01 davidg Exp $
.\"
.Dd April 18, 1994
.Dt STTY 1
diff --git a/bin/stty/stty.c b/bin/stty/stty.c
index 5062c0403cdd..40e0f242f111 100644
--- a/bin/stty/stty.c
+++ b/bin/stty/stty.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: stty.c,v 1.4 1995/05/30 00:07:28 rgrimes Exp $
+ * $Id: stty.c,v 1.4.4.1 1995/08/25 03:23:33 davidg Exp $
*/
#ifndef lint
diff --git a/bin/stty/stty.h b/bin/stty/stty.h
index 2b822d6a8fb8..115b59c712b0 100644
--- a/bin/stty/stty.h
+++ b/bin/stty/stty.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)stty.h 8.1 (Berkeley) 5/31/93
- * $Id$
+ * $Id: stty.h,v 1.2 1994/09/24 02:59:03 davidg Exp $
*/
#include <sys/ioctl.h>
diff --git a/bin/stty/util.c b/bin/stty/util.c
index 036c48eb1f16..3f62cb22e409 100644
--- a/bin/stty/util.c
+++ b/bin/stty/util.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: util.c,v 1.2 1994/09/24 02:59:05 davidg Exp $
+ * $Id: util.c,v 1.2.6.1 1995/08/30 05:56:31 davidg Exp $
*/
#ifndef lint
diff --git a/bin/sync/Makefile b/bin/sync/Makefile
index 0656381fd00c..a4d88ebb052b 100644
--- a/bin/sync/Makefile
+++ b/bin/sync/Makefile
@@ -1,5 +1,5 @@
# @(#)Makefile 8.1 (Berkeley) 5/31/93
-# $Id$
+# $Id: Makefile,v 1.3 1994/09/24 02:59:07 davidg Exp $
PROG= sync
MAN8= sync.8
diff --git a/bin/sync/sync.8 b/bin/sync/sync.8
index 1dafffd6723b..33c20574a302 100644
--- a/bin/sync/sync.8
+++ b/bin/sync/sync.8
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)sync.8 8.1 (Berkeley) 5/31/93
-.\" $Id$
+.\" $Id: sync.8,v 1.2 1994/09/24 02:59:08 davidg Exp $
.\"
.Dd May 31, 1993
.Dt SYNC 8
diff --git a/bin/sync/sync.c b/bin/sync/sync.c
index 7e5a387e1a21..ff82a60c402f 100644
--- a/bin/sync/sync.c
+++ b/bin/sync/sync.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: sync.c,v 1.4 1994/09/24 02:59:09 davidg Exp $
*/
#ifndef lint
diff --git a/bin/test/Makefile b/bin/test/Makefile
index a3a8126b435b..6e2703803311 100644
--- a/bin/test/Makefile
+++ b/bin/test/Makefile
@@ -1,5 +1,5 @@
# @(#)Makefile 8.1 (Berkeley) 5/31/93
-# $Id$
+# $Id: Makefile,v 1.2 1994/09/24 02:59:10 davidg Exp $
PROG= test
SRCS= test.c operators.c
diff --git a/bin/test/TEST.csh b/bin/test/TEST.csh
index b18fefbaf940..eda32b3a34df 100644
--- a/bin/test/TEST.csh
+++ b/bin/test/TEST.csh
@@ -1,5 +1,5 @@
# @(#)TEST.csh 5.2 (Berkeley) 4/30/93
-# $Id$
+# $Id: TEST.csh,v 1.3 1994/09/24 02:59:11 davidg Exp $
#alias t '/usr/src/bin/test/obj/test \!*; echo $status'
alias t '/bin/test \!*; echo $status'
diff --git a/bin/test/operators.c b/bin/test/operators.c
index 38d73dab38c3..fb2ebd2b88a6 100644
--- a/bin/test/operators.c
+++ b/bin/test/operators.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: operators.c,v 1.3 1994/09/24 02:59:12 davidg Exp $
*/
#ifndef lint
diff --git a/bin/test/operators.h b/bin/test/operators.h
index 4bf8563652fe..19fdc68ac6d4 100644
--- a/bin/test/operators.h
+++ b/bin/test/operators.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)operators.h 8.3 (Berkeley) 4/2/94
- * $Id$
+ * $Id: operators.h,v 1.3 1994/09/24 02:59:13 davidg Exp $
*/
#define NOT 0
diff --git a/bin/test/test.1 b/bin/test/test.1
index e7af6447f818..9a010d1a3334 100644
--- a/bin/test/test.1
+++ b/bin/test/test.1
@@ -33,7 +33,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)test.1 8.1 (Berkeley) 5/31/93
-.\" $Id$
+.\" $Id: test.1,v 1.2 1994/09/24 02:59:14 davidg Exp $
.\"
.Dd May 31, 1993
.Dt TEST 1
diff --git a/bin/test/test.c b/bin/test/test.c
index e6f9dc9e0540..bd9251b0d1c2 100644
--- a/bin/test/test.c
+++ b/bin/test/test.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: test.c,v 1.10 1995/03/19 13:29:28 joerg Exp $
+ * $Id: test.c,v 1.11 1995/05/30 00:07:29 rgrimes Exp $
*/
#ifndef lint
diff --git a/eBones/ARTISTIC.libdes b/eBones/ARTISTIC.libdes
deleted file mode 100644
index b3826572dd99..000000000000
--- a/eBones/ARTISTIC.libdes
+++ /dev/null
@@ -1,105 +0,0 @@
-
- The "Artistic License"
-
- Preamble
-
-The intent of this document is to state the conditions under which a
-Package may be copied, such that the Copyright Holder maintains some
-semblance of artistic control over the development of the package,
-while giving the users of the package the right to use and distribute
-the Package in a more-or-less customary fashion, plus the right to make
-reasonable modifications.
-
-Definitions:
-
- "Package" refers to the collection of files distributed by the
- Copyright Holder, and derivatives of that collection of files
- created through textual modification.
-
- "Standard Version" refers to such a Package if it has not been
- modified, or has been modified in accordance with the wishes
- of the Copyright Holder as specified below.
-
- "Copyright Holder" is whoever is named in the copyright or
- copyrights for the package.
-
- "You" is you, if you're thinking about copying or distributing
- this Package.
-
- "Reasonable copying fee" is whatever you can justify on the
- basis of media cost, duplication charges, time of people involved,
- and so on. (You will not be required to justify it to the
- Copyright Holder, but only to the computing community at large
- as a market that must bear the fee.)
-
- "Freely Available" means that no fee is charged for the item
- itself, though there may be fees involved in handling the item.
- It also means that recipients of the item may redistribute it
- under the same conditions they received it.
-
-1. You may make and give away verbatim copies of the source form of the
-Standard Version of this Package without restriction, provided that you
-duplicate all of the original copyright notices and associated disclaimers.
-
-2. You may apply bug fixes, portability fixes and other modifications
-derived from the Public Domain or from the Copyright Holder. A Package
-modified in such a way shall still be considered the Standard Version.
-
-3. You may otherwise modify your copy of this Package in any way, provided
-that you insert a prominent notice in each changed file stating how and
-when you changed that file, and provided that you do at least ONE of the
-following:
-
- a) place your modifications in the Public Domain or otherwise make them
- Freely Available, such as by posting said modifications to Usenet or
- an equivalent medium, or placing the modifications on a major archive
- site such as uunet.uu.net, or by allowing the Copyright Holder to include
- your modifications in the Standard Version of the Package.
-
- b) use the modified Package only within your corporation or organization.
-
- c) rename any non-standard executables so the names do not conflict
- with standard executables, which must also be provided, and provide
- a separate manual page for each non-standard executable that clearly
- documents how it differs from the Standard Version.
-
- d) make other distribution arrangements with the Copyright Holder.
-
-4. You may distribute the programs of this Package in object code or
-executable form, provided that you do at least ONE of the following:
-
- a) distribute a Standard Version of the executables and library files,
- together with instructions (in the manual page or equivalent) on where
- to get the Standard Version.
-
- b) accompany the distribution with the machine-readable source of
- the Package with your modifications.
-
- c) give non-standard executables non-standard names, and clearly
- document the differences in manual pages (or equivalent), together
- with instructions on where to get the Standard Version.
-
- d) make other distribution arrangements with the Copyright Holder.
-
-5. You may charge a reasonable copying fee for any distribution of this
-Package. You may charge any fee you choose for support of this
-Package. You may not charge a fee for this Package itself. However,
-you may distribute this Package in aggregate with other (possibly
-commercial) programs as part of a larger (possibly commercial) software
-distribution provided that you do not advertise this Package as a
-product of your own.
-
-6. Any programs linked with this library do not automatically fall
-under the copyright of this Package, but belong to whomever generated
-them, and may be sold commercially, and may be aggregated with this
-Package.
-
-7. The name of the Copyright Holder may not be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-8. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-
- The End
-
diff --git a/eBones/Copyright.MIT b/eBones/Copyright.MIT
deleted file mode 100644
index cd1d89bc88d7..000000000000
--- a/eBones/Copyright.MIT
+++ /dev/null
@@ -1,24 +0,0 @@
-# $Id: Copyright.MIT,v 1.3 1995/07/18 16:34:16 mark Exp $
-
-The following Copyright notice applies to the original Bones package.
-
-/*-
- Copyright (C) 1989 by the Massachusetts Institute of Technology
-
- Export of this software from the United States of America is assumed
- to require a specific license from the United States Government.
- It is the responsibility of any person or organization contemplating
- export to obtain such a license before exporting.
-
-WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
-distribute this software and its documentation for any purpose and
-without fee is hereby granted, provided that the above copyright
-notice appear in all copies and that both that copyright notice and
-this permission notice appear in supporting documentation, and that
-the name of M.I.T. not be used in advertising or publicity pertaining
-to distribution of the software without specific, written prior
-permission. M.I.T. makes no representations about the suitability of
-this software for any purpose. It is provided "as is" without express
-or implied warranty.
-
- */
diff --git a/eBones/Copyright.SIPB b/eBones/Copyright.SIPB
deleted file mode 100644
index 5e6c38af38e7..000000000000
--- a/eBones/Copyright.SIPB
+++ /dev/null
@@ -1,23 +0,0 @@
-# $Id: Copyright.SIPB,v 1.3 1995/07/18 16:34:18 mark Exp $
-
-The following Copyright notice applies to parts of the Bones package.
-See source code for exact references.
-
-/*-
-Copyright 1987 by the Student Information Processing Board
- of the Massachusetts Institute of Technology
-
-Permission to use, copy, modify, and distribute this software
-and its documentation for any purpose and without fee is
-hereby granted, provided that the above copyright notice
-appear in all copies and that both that copyright notice and
-this permission notice appear in supporting documentation,
-and that the names of M.I.T. and the M.I.T. S.I.P.B. not be
-used in advertising or publicity pertaining to distribution
-of the software without specific, written prior permission.
-M.I.T. and the M.I.T. S.I.P.B. make no representations about
-the suitability of this software for any purpose. It is
-provided "as is" without express or implied warranty.
-
- */
-
diff --git a/eBones/Makefile b/eBones/Makefile
deleted file mode 100644
index 8b0b6187903c..000000000000
--- a/eBones/Makefile
+++ /dev/null
@@ -1,48 +0,0 @@
-# From: @(#)Makefile 5.1 (Berkeley) 6/25/90
-# $Id$
-
-SUBDIR= des include lib libexec usr.bin usr.sbin
-
-SDIR= ${.CURDIR}/..
-
-CODAI= ${MAKE} ${MFLAGS} cleandir; \
- ${MAKE} ${MFLAGS} obj; \
- ${MAKE} ${MFLAGS} depend all install
-
-CODAD= ${MAKE} ${MFLAGS} MAKE_EBONES=yes cleandir; \
- ${MAKE} ${MFLAGS} MAKE_EBONES=yes obj; \
- ${MAKE} ${MFLAGS} MAKE_EBONES=yes depend all distribute
-
-# These are the programs which depend on kerberos
-kprog:
- cd ${SDIR}/bin/rcp; ${CODAI}
- cd ${SDIR}/libexec/rlogind; ${CODAI}
- cd ${SDIR}/libexec/rshd; ${CODAI}
- cd ${SDIR}/sbin/mount_nfs; ${CODAI}
- cd ${SDIR}/sbin/nfsd; ${CODAI}
- cd ${SDIR}/usr.bin/login; ${CODAI}
- cd ${SDIR}/usr.bin/passwd; ${CODAI}
- cd ${SDIR}/usr.bin/rlogin; ${CODAI}
- cd ${SDIR}/usr.bin/rsh; ${CODAI}
- cd ${SDIR}/usr.bin/su; ${CODAI}
-
-bootstrap:
- ( cd include; ${MAKE} ${MFLAGS} install )
- ( cd des; ${MAKE} ${MFLAGS} depend all install )
- ${MAKE} ${MFLAGS} cleandir
- ${MAKE} ${MFLAGS} obj
- ${MAKE} ${MFLAGS} depend all install kprog
-
-help-distribute: distribute
- cd ${SDIR}/bin/rcp; ${CODAD}
- cd ${SDIR}/libexec/rlogind; ${CODAD}
- cd ${SDIR}/libexec/rshd; ${CODAD}
- cd ${SDIR}/sbin/mount_nfs; ${CODAD}
- cd ${SDIR}/sbin/nfsd; ${CODAD}
- cd ${SDIR}/usr.bin/login; ${CODAD}
- cd ${SDIR}/usr.bin/passwd; ${CODAD}
- cd ${SDIR}/usr.bin/rlogin; ${CODAD}
- cd ${SDIR}/usr.bin/rsh; ${CODAD}
- cd ${SDIR}/usr.bin/su; ${CODAD}
-
-.include <bsd.subdir.mk>
diff --git a/eBones/Makefile.inc b/eBones/Makefile.inc
deleted file mode 100644
index 1dc84372bfe0..000000000000
--- a/eBones/Makefile.inc
+++ /dev/null
@@ -1,65 +0,0 @@
-# From: @(#)Makefile.inc 5.1 (Berkeley) 6/25/90
-# $Id: Makefile.inc,v 1.8 1995/09/14 18:16:08 gibbs Exp $
-
-DISTRIBUTION= krb
-
-INCLUDEDIR= ${.CURDIR}/../../include
-
-.if exists(${.CURDIR}/../../des/obj)
-DESOBJDIR= ${.CURDIR}/../../des/obj
-.else
-DESOBJDIR= ${.CURDIR}/../../des
-.endif
-
-.if exists(${.CURDIR}/../../lib/libkrb/obj)
-KRBOBJDIR= ${.CURDIR}/../../lib/libkrb/obj
-.else
-KRBOBJDIR= ${.CURDIR}/../../lib/libkrb
-.endif
-
-.if exists(${.CURDIR}/../../lib/libkdb/obj)
-KDBOBJDIR= ${.CURDIR}/../../lib/libkdb/obj
-.else
-KDBOBJDIR= ${.CURDIR}/../../lib/libkdb
-.endif
-
-.if exists(${.CURDIR}/../../lib/libacl/obj)
-ACLOBJDIR= ${.CURDIR}/../../lib/libacl/obj
-.else
-ACLOBJDIR= ${.CURDIR}/../../lib/libacl
-.endif
-
-.if exists(${.CURDIR}/../../lib/libkadm/obj)
-KADMOBJDIR= ${.CURDIR}/../../lib/libkadm/obj
-.else
-KADMOBJDIR= ${.CURDIR}/../../lib/libkadm
-.endif
-
-.if exists(${.CURDIR}/../../lib/librkinit/obj)
-RKINITOBJDIR= ${.CURDIR}/../../lib/librkinit/obj
-.else
-RKINITOBJDIR= ${.CURDIR}/../../lib/librkinit
-.endif
-
-CFLAGS+= -I${INCLUDEDIR} -Wall
-
-COMPILE_ET= compile_et
-
-${KRBOBJDIR}/krb_err.h: ${.CURDIR}/../../lib/libkrb/krb_err.et
- test -e ${KRBOBJDIR}/krb_err.et || ln -s ${.ALLSRC} ${KRBOBJDIR}
- cd ${KRBOBJDIR}; compile_et krb_err.et
-
-CLEANFILES+=${KRBOBJDIR}/krb_err.h ${KRBOBJDIR}/krb_err.c
-
-${KADMOBJDIR}/kadm_err.h: ${.CURDIR}/../../lib/libkadm/kadm_err.et
- test -e ${KADMOBJDIR}/kadm_err.et || ln -s ${.ALLSRC} ${KADMOBJDIR}
- cd ${KADMOBJDIR}; compile_et kadm_err.et
-
-CLEANFILES+=${KADMOBJDIR}/kadm_err.h ${KADMOBJDIR}/kadm_err.c
-
-${RKINITOBJDIR}/rkinit_err.h: ${.CURDIR}/../../lib/librkinit/rkinit_err.et
- test -e ${RKINITOBJDIR}/rkinit_err.et || \
- ln -s ${.ALLSRC} ${RKINITOBJDIR}
- cd ${RKINITOBJDIR}; compile_et rkinit_err.et
-
-CLEANFILES+=${RKINITOBJDIR}/rkinit_err.h ${RKINITOBJDIR}/rkinit_err.c
diff --git a/eBones/README.libdes b/eBones/README.libdes
deleted file mode 100644
index a2aa1eb43099..000000000000
--- a/eBones/README.libdes
+++ /dev/null
@@ -1,56 +0,0 @@
-
- libdes, Version 3.00 93/10/07
-
- Copyright (c) 1993, Eric Young
- All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of either:
-
- a) the GNU General Public License as published by the Free
- Software Foundation; either version 1, or (at your option) any
- later version, or
-
- b) the "Artistic License" which comes with this Kit.
-
- 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. See either
- the GNU General Public License or the Artistic License for more details.
-
- You should have received a copy of the Artistic License with this
- Kit, in the file named "Artistic". If not, I'll be glad to provide one.
-
- You should also have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
----
-This kit builds a DES encryption library and a DES encryption program.
-It suports ecb, cbc, ofb, cfb, triple ecb, triple cbc and MIT's pcbc
-encryption modes and also has a fast implementation of crypt(3).
-It contains support routines to read keys from a terminal,
-generate a random key, generate a key from an arbitary length string,
-read/write encrypted data from/to a file descriptor.
-
-The implementation was written so as to conform with the manual entry
-for the des_crypt(3) library routines from MIT's project Athena.
-
-destest should be run after compilation to test the des routines.
-rpw should be run after compilation to test the read password routines.
-The des program is a replacement for the sun des command. I believe it
-conforms to the sun version.
-
-The Imakefile is setup for use in the kerberos distribution.
-
-These routines are best compiled with gcc or any other good
-optimising compiler.
-Just turn you optimiser up to the highest settings and run destest
-after the build to make sure everything works.
-
-I believe these routines are close to the fastest and most portable DES
-routines that use small lookup tables (4.5k) that are publicly available.
-The fcrypt routine is faster than ufc's fcrypt (when compiling with
-gcc2 -O2) on the sparc 2 (1410 vs 1270) but is not so good on other machines
-(on a sun3/260 168 vs 336).
-
-Eric Young (eay@psych.psy.uq.oz.au)
diff --git a/eBones/des/3cbc_enc.c b/eBones/des/3cbc_enc.c
deleted file mode 100644
index 1f64502e9954..000000000000
--- a/eBones/des/3cbc_enc.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/* 3cbc_enc.c */
-/* Copyright (C) 1993 Eric Young - see README for more details */
-
-/*-
- * $Id: 3cbc_enc.c,v 1.1.1.1 1994/09/30 14:49:50 csgr Exp $
- */
-
-#include "des_locl.h"
-
-void
-xp(a)
-unsigned char *a;
-{ int i; for(i=0; i<8; i++) printf("%02X",a[i]);printf("\n");}
-
-int des_3cbc_encrypt(input,output,length,ks1,ks2,iv1,iv2,encrypt)
-des_cblock *input;
-des_cblock *output;
-long length;
-des_key_schedule ks1,ks2;
-des_cblock *iv1,*iv2;
-int encrypt;
- {
- int off=length/8-1;
- des_cblock niv1,niv2;
-
-printf("3cbc\n");
-xp(iv1);
-xp(iv1);
-xp(iv2);
-xp(input);
- if (encrypt == DES_ENCRYPT)
- {
- des_cbc_encrypt(input,output,length,ks1,iv1,encrypt);
- if (length >= sizeof(des_cblock))
- bcopy(output[off],niv1,sizeof(des_cblock));
- des_cbc_encrypt(output,output,length,ks2,iv1,!encrypt);
- des_cbc_encrypt(output,output,length,ks1,iv2, encrypt);
- if (length >= sizeof(des_cblock))
- bcopy(output[off],niv2,sizeof(des_cblock));
- bcopy(niv1,*iv1,sizeof(des_cblock));
- }
- else
- {
- if (length >= sizeof(des_cblock))
- bcopy(input[off],niv1,sizeof(des_cblock));
- des_cbc_encrypt(input,output,length,ks1,iv1,encrypt);
- des_cbc_encrypt(output,output,length,ks2,iv2,!encrypt);
- if (length >= sizeof(des_cblock))
- bcopy(output[off],niv2,sizeof(des_cblock));
- des_cbc_encrypt(output,output,length,ks1,iv2, encrypt);
- }
- bcopy(niv1,iv1,sizeof(des_cblock));
- bcopy(niv2,iv2,sizeof(des_cblock));
-xp(iv1);
-xp(iv1);
-xp(iv2);
-xp(output);
- return(0);
- }
-
diff --git a/eBones/des/3ecb_enc.c b/eBones/des/3ecb_enc.c
deleted file mode 100644
index 4bd22865c6a9..000000000000
--- a/eBones/des/3ecb_enc.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* 3ecb_enc.c */
-/* Copyright (C) 1993 Eric Young - see README for more details */
-
-/*-
- * $Id: 3ecb_enc.c,v 1.1.1.1 1994/09/30 14:49:50 csgr Exp $
- */
-
-#include "des_locl.h"
-
-int des_3ecb_encrypt(input,output,ks1,ks2,encrypt)
-des_cblock *input;
-des_cblock *output;
-des_key_schedule ks1,ks2;
-int encrypt;
- {
- register unsigned long l0,l1;
- register unsigned char *in,*out;
- unsigned long ll[2];
-
- in=(unsigned char *)input;
- out=(unsigned char *)output;
- c2l(in,l0);
- c2l(in,l1);
- ll[0]=l0;
- ll[1]=l1;
- des_encrypt(ll,ll,ks1,encrypt);
- des_encrypt(ll,ll,ks2,!encrypt);
- des_encrypt(ll,ll,ks1,encrypt);
- l0=ll[0];
- l1=ll[1];
- l2c(l0,out);
- l2c(l1,out);
- return(0);
- }
-
diff --git a/eBones/des/Makefile b/eBones/des/Makefile
deleted file mode 100644
index af0859192d5d..000000000000
--- a/eBones/des/Makefile
+++ /dev/null
@@ -1,27 +0,0 @@
-# @(#)Makefile 5.4 (Berkeley) 5/7/91
-# $Id: Makefile,v 1.4 1995/09/14 18:16:11 gibbs Exp $
-
-LIB= des
-SRCS= cbc_cksm.c cbc_enc.c ecb_enc.c enc_read.c enc_writ.c pcbc_enc.c \
- qud_cksm.c rand_key.c read_pwd.c set_key.c str2key.c \
- cfb_enc.c 3ecb_enc.c ofb_enc.c 3cbc_enc.c new_rnd_key.c
-#MAN1= des.1
-#MAN3= des.3
-
-#LINKS= crypt
-CFLAGS+= -DDES_ENCRYPT -DKRBDES_ENCRYPT
-
-# Kerberos 4?
-#CFLAGS+=-DKRB4
-#SRCS+= kerberos.c
-
-# Kerberos 5?
-#CFLAGS+= -DKRB5
-#SRCS+= kerberos5.c
-
-CFLAGS+= -I${.CURDIR}/include -I${.CURDIR}/../include -DAUTHENTICATE
-SHLIB_MAJOR?= 2
-SHLIB_MINOR?= 0
-
-.include "/usr/src/lib/Makefile.inc"
-.include <bsd.lib.mk>
diff --git a/eBones/des/cbc_cksm.c b/eBones/des/cbc_cksm.c
deleted file mode 100644
index 5aa25ebfdf88..000000000000
--- a/eBones/des/cbc_cksm.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/* cbc_cksm.c */
-/* Copyright (C) 1993 Eric Young - see README for more details */
-
-/*-
- * $Id: cbc_cksm.c,v 1.1.1.1 1994/09/30 14:49:50 csgr Exp $
- */
-
-#include "des_locl.h"
-
-unsigned long des_cbc_cksum(input,output,length,schedule,ivec)
-des_cblock *input;
-des_cblock *output;
-long length;
-des_key_schedule schedule;
-des_cblock *ivec;
- {
- register unsigned long tout0,tout1,tin0,tin1;
- register long l=length;
- unsigned long tin[2],tout[2];
- unsigned char *in,*out,*iv;
-
- in=(unsigned char *)input;
- out=(unsigned char *)output;
- iv=(unsigned char *)ivec;
-
- c2l(iv,tout0);
- c2l(iv,tout1);
- for (; l>0; l-=8)
- {
- if (l >= 8)
- {
- c2l(in,tin0);
- c2l(in,tin1);
- }
- else
- c2ln(in,tin0,tin1,l);
-
- tin0^=tout0;
- tin1^=tout1;
- tin[0]=tin0;
- tin[1]=tin1;
- des_encrypt((unsigned long *)tin,(unsigned long *)tout,
- schedule,DES_ENCRYPT);
- /* fix 15/10/91 eay - thanks to keithr@sco.COM */
- tout0=tout[0];
- tout1=tout[1];
- }
- if (out != NULL)
- {
- l2c(tout0,out);
- l2c(tout1,out);
- }
- tout0=tin0=tin1=tin[0]=tin[1]=tout[0]=tout[1]=0;
- return(tout1);
- }
diff --git a/eBones/des/cbc_enc.c b/eBones/des/cbc_enc.c
deleted file mode 100644
index c2ebd3af241a..000000000000
--- a/eBones/des/cbc_enc.c
+++ /dev/null
@@ -1,83 +0,0 @@
-/* cbc_enc.c */
-/* Copyright (C) 1993 Eric Young - see README for more details */
-
-/*-
- * $Id: cbc_enc.c,v 1.2 1994/07/19 19:21:47 g89r4222 Exp $
- */
-
-#include "des_locl.h"
-
-int des_cbc_encrypt(input,output,length,schedule,ivec,encrypt)
-des_cblock *input;
-des_cblock *output;
-long length;
-des_key_schedule schedule;
-des_cblock *ivec;
-int encrypt;
- {
- register unsigned long tin0,tin1;
- register unsigned long tout0,tout1,xor0,xor1;
- register unsigned char *in,*out;
- register long l=length;
- unsigned long tout[2],tin[2];
- unsigned char *iv;
-
- in=(unsigned char *)input;
- out=(unsigned char *)output;
- iv=(unsigned char *)ivec;
-
- if (encrypt)
- {
- c2l(iv,tout0);
- c2l(iv,tout1);
- for (; l>0; l-=8)
- {
- if (l >= 8)
- {
- c2l(in,tin0);
- c2l(in,tin1);
- }
- else
- c2ln(in,tin0,tin1,l);
- tin0^=tout0;
- tin1^=tout1;
- tin[0]=tin0;
- tin[1]=tin1;
- des_encrypt((unsigned long *)tin,(unsigned long *)tout,
- schedule,encrypt);
- tout0=tout[0];
- tout1=tout[1];
- l2c(tout0,out);
- l2c(tout1,out);
- }
- }
- else
- {
- c2l(iv,xor0);
- c2l(iv,xor1);
- for (; l>0; l-=8)
- {
- c2l(in,tin0);
- c2l(in,tin1);
- tin[0]=tin0;
- tin[1]=tin1;
- des_encrypt((unsigned long *)tin,(unsigned long *)tout,
- schedule,encrypt);
- tout0=tout[0]^xor0;
- tout1=tout[1]^xor1;
- if (l >= 8)
- {
- l2c(tout0,out);
- l2c(tout1,out);
- }
- else
- l2cn(tout0,tout1,out,l);
- xor0=tin0;
- xor1=tin1;
- }
- }
- tin0=tin1=tout0=tout1=xor0=xor1=0;
- tin[0]=tin[1]=tout[0]=tout[1]=0;
- return(0);
- }
-
diff --git a/eBones/des/cfb_enc.c b/eBones/des/cfb_enc.c
deleted file mode 100644
index 367da5f1b234..000000000000
--- a/eBones/des/cfb_enc.c
+++ /dev/null
@@ -1,110 +0,0 @@
-/* cfb_enc.c */
-/* Copyright (C) 1993 Eric Young - see README for more details */
-
-/*-
- * $Id: cfb_enc.c,v 1.2 1994/07/19 19:21:48 g89r4222 Exp $
- */
-
-#include "des_locl.h"
-
-/* The input and output are loaded in multiples of 8 bits.
- * What this means is that if you hame numbits=12 and length=2
- * the first 12 bits will be retrieved from the first byte and half
- * the second. The second 12 bits will come from the 3rd and half the 4th
- * byte.
- */
-int des_cfb_encrypt(in,out,numbits,length,schedule,ivec,encrypt)
-unsigned char *in,*out;
-int numbits;
-long length;
-des_key_schedule schedule;
-des_cblock *ivec;
-int encrypt;
- {
- register unsigned long d0,d1,v0,v1,n=(numbits+7)/8;
- register unsigned long mask0,mask1;
- register long l=length;
- register int num=numbits;
- unsigned long ti[2],to[2];
- unsigned char *iv;
-
- if (num > 64) return(0);
- if (num > 32)
- {
- mask0=0xffffffff;
- if (num == 64)
- mask1=mask0;
- else
- mask1=(1L<<(num-32))-1;
- }
- else
- {
- if (num == 32)
- mask0=0xffffffff;
- else
- mask0=(1L<<num)-1;
- mask1=0x00000000;
- }
-
- iv=(unsigned char *)ivec;
- c2l(iv,v0);
- c2l(iv,v1);
- if (encrypt)
- {
- while (l-- > 0)
- {
- ti[0]=v0;
- ti[1]=v1;
- des_encrypt((unsigned long *)ti,(unsigned long *)to,
- schedule,DES_ENCRYPT);
- c2ln(in,d0,d1,n);
- in+=n;
- d0=(d0^to[0])&mask0;
- d1=(d1^to[1])&mask1;
- l2cn(d0,d1,out,n);
- out+=n;
- if (num > 32)
- {
- v0=((v1>>(num-32))|(d0<<(64-num)))&0xffffffff;
- v1=((d0>>(num-32))|(d1<<(64-num)))&0xffffffff;
- }
- else
- {
- v0=((v0>>num)|(v1<<(32-num)))&0xffffffff;
- v1=((v1>>num)|(d0<<(32-num)))&0xffffffff;
- }
- }
- }
- else
- {
- while (l-- > 0)
- {
- ti[0]=v0;
- ti[1]=v1;
- des_encrypt((unsigned long *)ti,(unsigned long *)to,
- schedule,DES_ENCRYPT);
- c2ln(in,d0,d1,n);
- in+=n;
- if (num > 32)
- {
- v0=((v1>>(num-32))|(d0<<(64-num)))&0xffffffff;
- v1=((d0>>(num-32))|(d1<<(64-num)))&0xffffffff;
- }
- else
- {
- v0=((v0>>num)|(v1<<(32-num)))&0xffffffff;
- v1=((v1>>num)|(d0<<(32-num)))&0xffffffff;
- }
- d0=(d0^to[0])&mask0;
- d1=(d1^to[1])&mask1;
- l2cn(d0,d1,out,n);
- out+=n;
- }
- }
- iv=(unsigned char *)ivec;
- l2c(v0,iv);
- l2c(v1,iv);
- v0=v1=d0=d1=ti[0]=ti[1]=to[0]=to[1]=0;
- return(0);
- }
-
diff --git a/eBones/des/des.3 b/eBones/des/des.3
deleted file mode 100644
index 280860d62625..000000000000
--- a/eBones/des/des.3
+++ /dev/null
@@ -1,503 +0,0 @@
-.\" $Id: des.3,v 1.2 1994/07/19 19:21:50 g89r4222 Exp $
-.TH DES_CRYPT 3
-.SH NAME
-des_read_password, des_read_2password,
-des_string_to_key, des_string_to_2key, des_read_pw_string,
-des_random_key, des_set_key,
-des_key_sched, des_ecb_encrypt, des_3ecb_encrypt, des_cbc_encrypt,
-des_3cbc_encrypt,
-des_pcbc_encrypt, des_cfb_encrypt, des_ofb_encrypt,
-des_cbc_cksum, des_quad_cksum,
-des_enc_read, des_enc_write, des_set_odd_parity,
-des_is_weak_key, crypt \- (non USA) DES encryption
-.SH SYNOPSIS
-.nf
-.nj
-.ft B
-#include <des.h>
-.PP
-.B int des_read_password(key,prompt,verify)
-des_cblock *key;
-char *prompt;
-int verify;
-.PP
-.B int des_read_2password(key1,key2,prompt,verify)
-des_cblock *key1,*key2;
-char *prompt;
-int verify;
-.PP
-.B int des_string_to_key(str,key)
-char *str;
-des_cblock *key;
-.PP
-.B int des_string_to_2keys(str,key1,key2)
-char *str;
-des_cblock *key1,*key2;
-.PP
-.B int des_read_pw_string(buf,length,prompt,verify)
-char *buf;
-int length;
-char *prompt;
-int verify;
-.PP
-.B int des_random_key(key)
-des_cblock *key;
-.PP
-.B int des_set_key(key,schedule)
-des_cblock *key;
-des_key_schedule schedule;
-.PP
-.B int des_key_sched(key,schedule)
-des_cblock *key;
-des_key_schedule schedule;
-.PP
-.B int des_ecb_encrypt(input,output,schedule,encrypt)
-des_cblock *input;
-des_cblock *output;
-des_key_schedule schedule;
-int encrypt;
-.PP
-.B int des_3ecb_encrypt(input,output,ks1,ks2,encrypt)
-des_cblock *input;
-des_cblock *output;
-des_key_schedule ks1,ks2;
-int encrypt;
-.PP
-.B int des_cbc_encrypt(input,output,length,schedule,ivec,encrypt)
-des_cblock *input;
-des_cblock *output;
-long length;
-des_key_schedule schedule;
-des_cblock *ivec;
-int encrypt;
-.PP
-.B int des_3cbc_encrypt(input,output,length,sk1,sk2,ivec1,ivec2,encrypt)
-des_cblock *input;
-des_cblock *output;
-long length;
-des_key_schedule sk1;
-des_key_schedule sk2;
-des_cblock *ivec1;
-des_cblock *ivec2;
-int encrypt;
-.PP
-.B int des_pcbc_encrypt(input,output,length,schedule,ivec,encrypt)
-des_cblock *input;
-des_cblock *output;
-long length;
-des_key_schedule schedule;
-des_cblock *ivec;
-int encrypt;
-.PP
-.B int des_cfb_encrypt(input,output,numbits,length,schedule,ivec,encrypt)
-unsigned char *input;
-unsigned char *output;
-int numbits;
-long length;
-des_key_schedule schedule;
-des_cblock *ivec;
-int encrypt;
-.PP
-.B int des_ofb_encrypt(input,output,numbits,length,schedule,ivec)
-unsigned char *input,*output;
-int numbits;
-long length;
-des_key_schedule schedule;
-des_cblock *ivec;
-.PP
-.B unsigned long des_cbc_cksum(input,output,length,schedule,ivec)
-des_cblock *input;
-des_cblock *output;
-long length;
-des_key_schedule schedule;
-des_cblock *ivec;
-.PP
-.B unsigned long des_quad_cksum(input,output,length,out_count,seed)
-des_cblock *input;
-des_cblock *output;
-long length;
-int out_count;
-des_cblock *seed;
-.PP
-.B int des_check_key;
-.PP
-.B int des_enc_read(fd,buf,len,sched,iv)
-int fd;
-char *buf;
-int len;
-des_key_schedule sched;
-des_cblock *iv;
-.PP
-.B int des_enc_write(fd,buf,len,sched,iv)
-int fd;
-char *buf;
-int len;
-des_key_schedule sched;
-des_cblock *iv;
-.PP
-.B extern int des_rw_mode;
-.PP
-.B void des_set_odd_parity(key)
-des_cblock *key;
-.PP
-.B int des_is_weak_key(key)
-des_cblock *key;
-.PP
-.B char *crypt(passwd,salt)
-char *passwd;
-char *salt;
-.PP
-.fi
-.SH DESCRIPTION
-This library contains a fast implementation of the DES encryption
-algorithm.
-.PP
-There are two phases to the use of DES encryption.
-The first is the generation of a
-.I des_key_schedule
-from a key,
-the second is the actual encryption.
-A des key is of type
-.I des_cblock.
-This type is made from 8 characters with odd parity.
-The least significant bit in the character is the parity bit.
-The key schedule is an expanded form of the key; it is used to speed the
-encryption process.
-.PP
-.I des_read_password
-writes the string specified by prompt to the standard output,
-turns off echo and reads an input string from standard input
-until terminated with a newline.
-If verify is non-zero, it prompts and reads the input again and verifies
-that both entered passwords are the same.
-The entered string is converted into a des key by using the
-.I des_string_to_key
-routine.
-The new key is placed in the
-.I des_cblock
-that was passed (by reference) to the routine.
-If there were no errors,
-.I des_read_password
-returns 0,
--1 is returned if there was a terminal error and 1 is returned for
-any other error.
-.PP
-.I des_read_2password
-operates in the same way as
-.I des_read_password
-except that it generates 2 keys by using the
-.I des_string_to_2key
-function.
-.PP
-.I des_read_pw_string
-is called by
-.I des_read_password
-to read and verify a string from a terminal device.
-The string is returned in
-.I buf.
-The size of
-.I buf
-is passed to the routine via the
-.I length
-parameter.
-.PP
-.I des_string_to_key
-converts a string into a valid des key.
-.PP
-.I des_string_to_2key
-converts a string into 2 valid des keys.
-This routine is best suited for used to generate keys for use with
-.I des_3ecb_encrypt.
-.PP
-.I des_random_key
-returns a random key that is made of a combination of process id,
-time and an increasing counter.
-.PP
-Before a des key can be used it is converted into a
-.I des_key_schedule
-via the
-.I des_set_key
-routine.
-If the
-.I des_check_key
-flag is non-zero,
-.I des_set_key
-will check that the key passed is of odd parity and is not a week or
-semi-weak key.
-If the parity is wrong,
-then -1 is returned.
-If the key is a weak key,
-then -2 is returned.
-If an error is returned,
-the key schedule is not generated.
-.PP
-.I des_key_sched
-is another name for the
-.I des_set_key
-function.
-.PP
-The following routines mostly operate on an input and output stream of
-.I des_cblock's.
-.PP
-.I des_ecb_encrypt
-is the basic DES encryption routine that encrypts or decrypts a single 8-byte
-.I des_cblock
-in
-.I electronic code book
-mode.
-It always transforms the input data, pointed to by
-.I input,
-into the output data,
-pointed to by the
-.I output
-argument.
-If the
-.I encrypt
-argument is non-zero (DES_ENCRYPT),
-the
-.I input
-(cleartext) is encrypted in to the
-.I output
-(ciphertext) using the key_schedule specified by the
-.I schedule
-argument,
-previously set via
-.I des_set_key.
-If
-.I encrypt
-is zero (DES_DECRYPT),
-the
-.I input
-(now ciphertext)
-is decrypted into the
-.I output
-(now cleartext).
-Input and output may overlap.
-No meaningful value is returned.
-.PP
-.I des_3ecb_encrypt
-encrypts/decrypts the
-.I input
-block by using triple ecb DES encryption.
-This involves encrypting the input with
-.I ks1,
-decryption with the key schedule
-.I ks2,
-and then encryption with the first again.
-This routine greatly reduces the chances of brute force breaking of
-DES and has the advantage of if
-.I ks1
-and
-.I ks2
-are the same, it is equivalent to just encryption using ecb mode and
-.I ks1
-as the key.
-.PP
-.I des_cbc_encrypt
-encrypts/decrypts using the
-.I cipher-block-chaining
-mode of DES.
-If the
-.I encrypt
-argument is non-zero,
-the routine cipher-block-chain encrypts the cleartext data pointed to by the
-.I input
-argument into the ciphertext pointed to by the
-.I output
-argument,
-using the key schedule provided by the
-.I schedule
-argument,
-and initialisation vector provided by the
-.I ivec
-argument.
-If the
-.I length
-argument is not an integral multiple of eight bytes,
-the last block is copied to a temporary area and zero filled.
-The output is always
-an integral multiple of eight bytes.
-To make multiple cbc encrypt calls on a large amount of data appear to
-be one
-.I des_cbc_encrypt
-call, the
-.I ivec
-of subsequent calls should be the last 8 bytes of the output.
-.PP
-.I des_3cbc_encrypt
-encrypts/decrypts the
-.I input
-block by using triple cbc DES encryption.
-This involves encrypting the input with key schedule
-.I ks1,
-decryption with the key schedule
-.I ks2,
-and then encryption with the first again.
-2 initialisation vectors are required,
-.I ivec1
-and
-.I ivec2.
-Unlike
-.I des_cbc_encrypt,
-these initialisation vectors are modified by the subroutine.
-This routine greatly reduces the chances of brute force breaking of
-DES and has the advantage of if
-.I ks1
-and
-.I ks2
-are the same, it is equivalent to just encryption using cbc mode and
-.I ks1
-as the key.
-.PP
-.I des_pcbc_encrypt
-encrypt/decrypts using a modified block chaining mode.
-It provides better error propagation characteristics than cbc
-encryption.
-.PP
-.I des_cfb_encrypt
-encrypt/decrypts using cipher feedback mode. This method takes an
-array of characters as input and outputs and array of characters. It
-does not require any padding to 8 character groups. Note: the ivec
-variable is changed and the new changed value needs to be passed to
-the next call to this function. Since this function runs a complete
-DES ecb encryption per numbits, this function is only suggested for
-use when sending small numbers of characters.
-.PP
-.I des_ofb_encrypt
-encrypt using output feedback mode. This method takes an
-array of characters as input and outputs and array of characters. It
-does not require any padding to 8 character groups. Note: the ivec
-variable is changed and the new changed value needs to be passed to
-the next call to this function. Since this function runs a complete
-DES ecb encryption per numbits, this function is only suggested for
-use when sending small numbers of characters.
-.PP
-.I des_cbc_cksum
-produces an 8 byte checksum based on the input stream (via cbc encryption).
-The last 4 bytes of the checksum is returned and the complete 8 bytes is
-placed in
-.I output.
-.PP
-.I des_quad_cksum
-returns a 4 byte checksum from the input bytes.
-The algorithm can be iterated over the input,
-depending on
-.I out_count,
-1, 2, 3 or 4 times.
-If
-.I output
-is non-NULL,
-the 8 bytes generated by each pass are written into
-.I output.
-.PP
-.I des_enc_write
-is used to write
-.I len
-bytes
-to file descriptor
-.I fd
-from buffer
-.I buf.
-The data is encrypted via
-.I pcbc_encrypt
-(default) using
-.I sched
-for the key and
-.I iv
-as a starting vector.
-The actual data send down
-.I fd
-consists of 4 bytes (in network byte order) containing the length of the
-following encrypted data. The encrypted data then follows, padded with random
-data out to a multiple of 8 bytes.
-.PP
-.I des_enc_read
-is used to read
-.I len
-bytes
-from file descriptor
-.I fd
-into buffer
-.I buf.
-The data being read from
-.I fd
-is assumed to have come from
-.I des_enc_write
-and is decrypted using
-.I sched
-for the key schedule and
-.I iv
-for the initial vector.
-The
-.I des_enc_read/des_enc_write
-pair can be used to read/write to files, pipes and sockets.
-I have used them in implementing a version of rlogin in which all
-data is encrypted.
-.PP
-.I des_rw_mode
-is used to specify the encryption mode to use with
-.I des_enc_read
-and
-.I des_end_write.
-If set to
-.I DES_PCBC_MODE
-(the default), des_pcbc_encrypt is used.
-If set to
-.I DES_CBC_MODE
-des_cbc_encrypt is used.
-These two routines and the variable are not part of the normal MIT library.
-.PP
-.I des_set_odd_parity
-sets the parity of the passed
-.I key
-to odd. This routine is not part of the standard MIT library.
-.PP
-.I des_is_weak_key
-returns 1 is the passed key is a weak key (pick again :-),
-0 if it is ok.
-This routine is not part of the standard MIT library.
-.PP
-.I crypt
-is a replacement for the normal system crypt.
-It is much faster than the system crypt.
-.PP
-.SH FILES
-/usr/include/des.h
-.br
-/usr/lib/libdes.a
-.PP
-The encryption routines have been tested on 16bit, 32bit and 64bit
-machines of various endian and even works under VMS.
-.PP
-.SH BUGS
-.PP
-If you think this manual is sparse,
-read the des_crypt(3) manual from the MIT kerberos (or bones outside
-of the USA) distribution.
-.PP
-.I des_cfb_encrypt
-and
-.I des_ofb_encrypt
-operates on input of 8 bits. What this means is that if you set
-numbits to 12, and length to 2, the first 12 bits will come from the 1st
-input byte and the low half of the second input byte. The second 12
-bits will have the low 8 bits taken from the 3rd input byte and the
-top 4 bits taken from the 4th input byte. The same holds for output.
-This function has been implemented this way because most people will
-be using a multiple of 8 and because once you get into pulling bytes input
-bytes apart things get ugly!
-.PP
-.I des_read_pw_string
-is the most machine/OS dependent function and normally generates the
-most problems when porting this code.
-.PP
-.I des_string_to_key
-is probably different from the MIT version since there are lots
-of fun ways to implement one-way encryption of a text string.
-.PP
-The routines are optimised for 32 bit machines and so are not efficient
-on IBM PCs.
-.SH AUTHOR
-Eric Young (eay@psych.psy.uq.oz.au),
-Psychology Department,
-University of Queensland, Australia.
diff --git a/eBones/des/docs.original/ARTISTIC b/eBones/des/docs.original/ARTISTIC
deleted file mode 100644
index b3826572dd99..000000000000
--- a/eBones/des/docs.original/ARTISTIC
+++ /dev/null
@@ -1,105 +0,0 @@
-
- The "Artistic License"
-
- Preamble
-
-The intent of this document is to state the conditions under which a
-Package may be copied, such that the Copyright Holder maintains some
-semblance of artistic control over the development of the package,
-while giving the users of the package the right to use and distribute
-the Package in a more-or-less customary fashion, plus the right to make
-reasonable modifications.
-
-Definitions:
-
- "Package" refers to the collection of files distributed by the
- Copyright Holder, and derivatives of that collection of files
- created through textual modification.
-
- "Standard Version" refers to such a Package if it has not been
- modified, or has been modified in accordance with the wishes
- of the Copyright Holder as specified below.
-
- "Copyright Holder" is whoever is named in the copyright or
- copyrights for the package.
-
- "You" is you, if you're thinking about copying or distributing
- this Package.
-
- "Reasonable copying fee" is whatever you can justify on the
- basis of media cost, duplication charges, time of people involved,
- and so on. (You will not be required to justify it to the
- Copyright Holder, but only to the computing community at large
- as a market that must bear the fee.)
-
- "Freely Available" means that no fee is charged for the item
- itself, though there may be fees involved in handling the item.
- It also means that recipients of the item may redistribute it
- under the same conditions they received it.
-
-1. You may make and give away verbatim copies of the source form of the
-Standard Version of this Package without restriction, provided that you
-duplicate all of the original copyright notices and associated disclaimers.
-
-2. You may apply bug fixes, portability fixes and other modifications
-derived from the Public Domain or from the Copyright Holder. A Package
-modified in such a way shall still be considered the Standard Version.
-
-3. You may otherwise modify your copy of this Package in any way, provided
-that you insert a prominent notice in each changed file stating how and
-when you changed that file, and provided that you do at least ONE of the
-following:
-
- a) place your modifications in the Public Domain or otherwise make them
- Freely Available, such as by posting said modifications to Usenet or
- an equivalent medium, or placing the modifications on a major archive
- site such as uunet.uu.net, or by allowing the Copyright Holder to include
- your modifications in the Standard Version of the Package.
-
- b) use the modified Package only within your corporation or organization.
-
- c) rename any non-standard executables so the names do not conflict
- with standard executables, which must also be provided, and provide
- a separate manual page for each non-standard executable that clearly
- documents how it differs from the Standard Version.
-
- d) make other distribution arrangements with the Copyright Holder.
-
-4. You may distribute the programs of this Package in object code or
-executable form, provided that you do at least ONE of the following:
-
- a) distribute a Standard Version of the executables and library files,
- together with instructions (in the manual page or equivalent) on where
- to get the Standard Version.
-
- b) accompany the distribution with the machine-readable source of
- the Package with your modifications.
-
- c) give non-standard executables non-standard names, and clearly
- document the differences in manual pages (or equivalent), together
- with instructions on where to get the Standard Version.
-
- d) make other distribution arrangements with the Copyright Holder.
-
-5. You may charge a reasonable copying fee for any distribution of this
-Package. You may charge any fee you choose for support of this
-Package. You may not charge a fee for this Package itself. However,
-you may distribute this Package in aggregate with other (possibly
-commercial) programs as part of a larger (possibly commercial) software
-distribution provided that you do not advertise this Package as a
-product of your own.
-
-6. Any programs linked with this library do not automatically fall
-under the copyright of this Package, but belong to whomever generated
-them, and may be sold commercially, and may be aggregated with this
-Package.
-
-7. The name of the Copyright Holder may not be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-8. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-
- The End
-
diff --git a/eBones/des/docs.original/CHANGES b/eBones/des/docs.original/CHANGES
deleted file mode 100644
index 4f441fae2d48..000000000000
--- a/eBones/des/docs.original/CHANGES
+++ /dev/null
@@ -1,16 +0,0 @@
-The main changes in this package since it was last posted to
-comp.sources.misc are
-
-The main changes are
-- Major changes to the Copyright restrictions.
-- Lots and lots of features added to the des(1) command, including
- - Triple DES, both triple ECB and triple CBC options.
- - uuencodeing/uudecoding built in to des(1).
- - generate checksums.
- - hex keys.
-- Cleaned up the prototypes in des.h
-- Filenames are now mostly <= 8 characters long.
-- OFB, CFB, triple ECB and triple CBC modes of DES added to the library.
-- Compiles and runs of all 64bit machines I could test the code on
- (Cray, ETA10, DEC Alpha).
-- It really does work with kerberos v 4 now :-).
diff --git a/eBones/des/docs.original/COPYING b/eBones/des/docs.original/COPYING
deleted file mode 100644
index 9b1a9329f150..000000000000
--- a/eBones/des/docs.original/COPYING
+++ /dev/null
@@ -1,489 +0,0 @@
-Copyright (C) 1993 Eric Young
-
-This is a DES implementation written by Eric Young (eay@psych.psy.uq.oz.au)
-The implementation was written so as to conform with the manual entry
-for the des_crypt(3) library routines from MIT's project Athena.
-
-
-
- GNU LIBRARY GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 675 Mass Ave, Cambridge, MA 02139, USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL. It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
- This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it. You can use it for
-your libraries, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
- For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you. You must make sure that they, too, receive or can get the source
-code. If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it. And you must show them these terms so they know their rights.
-
- Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
- Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library. If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software. To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
- Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs. This
-license, the GNU Library General Public License, applies to certain
-designated libraries. This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
- The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it. Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program. However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
- Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries. We
-concluded that weaker conditions might promote sharing better.
-
- However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves. This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them. (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.) The hope is that this
-will lead to faster development of free libraries.
-
- The precise terms and conditions for copying, distribution and
-modification follow. Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library". The
-former contains code derived from the library, while the latter only
-works together with the library.
-
- Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
- GNU LIBRARY GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License"). Each licensee is
-addressed as "you".
-
- A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
- The "Library", below, refers to any such software library or work
-which has been distributed under these terms. A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language. (Hereinafter, translation is
-included without limitation in the term "modification".)
-
- "Source code" for a work means the preferred form of the work for
-making modifications to it. For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
- Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it). Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
- 1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
- You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
- 2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices
- stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no
- charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a
- table of data to be supplied by an application program that uses
- the facility, other than as an argument passed when the facility
- is invoked, then you must make a good faith effort to ensure that,
- in the event an application does not supply such function or
- table, the facility still operates, and performs whatever part of
- its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has
- a purpose that is entirely well-defined independent of the
- application. Therefore, Subsection 2d requires that any
- application-supplied function or table used by this function must
- be optional: if the application does not supply it, the square
- root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library. To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License. (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.) Do not make any other change in
-these notices.
-
- Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
- This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
- 4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
- If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library". Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
- However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library". The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
- When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library. The
-threshold for this to be true is not precisely defined by law.
-
- If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work. (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
- Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
- 6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
- You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License. You must supply a copy of this License. If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License. Also, you must do one
-of these things:
-
- a) Accompany the work with the complete corresponding
- machine-readable source code for the Library including whatever
- changes were used in the work (which must be distributed under
- Sections 1 and 2 above); and, if the work is an executable linked
- with the Library, with the complete machine-readable "work that
- uses the Library", as object code and/or source code, so that the
- user can modify the Library and then relink to produce a modified
- executable containing the modified Library. (It is understood
- that the user who changes the contents of definitions files in the
- Library will not necessarily be able to recompile the application
- to use the modified definitions.)
-
- b) Accompany the work with a written offer, valid for at
- least three years, to give the same user the materials
- specified in Subsection 6a, above, for a charge no more
- than the cost of performing this distribution.
-
- c) If distribution of the work is made by offering access to copy
- from a designated place, offer equivalent access to copy the above
- specified materials from the same place.
-
- d) Verify that the user has already received a copy of these
- materials or that you have already sent this user a copy.
-
- For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it. However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
- It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system. Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
- 7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work
- based on the Library, uncombined with any other library
- facilities. This must be distributed under the terms of the
- Sections above.
-
- b) Give prominent notice with the combined library of the fact
- that part of it is a work based on the Library, and explaining
- where to find the accompanying uncombined form of the same work.
-
- 8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License. Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License. However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
- 9. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Library or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
- 10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all. For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded. In such case, this License incorporates the limitation as if
-written in the body of this License.
-
- 13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation. If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
- 14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission. For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this. Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
- NO WARRANTY
-
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- Appendix: How to Apply These Terms to Your New Libraries
-
- If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change. You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
- To apply these terms, attach the following notices to the library. It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
- <one line to give the library's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library 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. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this library; if not, write to the Free
- Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the
- library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
- <signature of Ty Coon>, 1 April 1990
- Ty Coon, President of Vice
-
-That's all there is to it!
diff --git a/eBones/des/docs.original/FILES b/eBones/des/docs.original/FILES
deleted file mode 100644
index a010ad1f8c83..000000000000
--- a/eBones/des/docs.original/FILES
+++ /dev/null
@@ -1,60 +0,0 @@
-/* General stuff */
-CHANGES - Changes since the last posting to comp.sources.misc.
-ARTISTIC - Copying info.
-COPYING - Copying info.
-MODES.DES - A description of the features of the different modes of DES.
-FILES - This file.
-INSTALL - How to make things compile.
-Imakefile - For use with kerberos.
-README - What this package is.
-VERSION - Which version this is.
-KERBEROS - Kerberos version 4 notes.
-makefile - The make file.
-times - Some outputs from 'speed' on my local machines.
-vms.com - For use when compiling under VMS
-
-/* My sunOS des(1) replacement */
-des.c - des(1) source code.
-des.man - des(1) manual.
-
-/* Testing and timing programs. */
-destest.c - Source for libdes.a test program.
-speed.c - Source for libdes.a timing program.
-rpw.c - Source for libdes.a testing password reading routines.
-
-/* libdes.a source code */
-des_crypt.man - libdes.a manual page.
-des.h - Public libdes.a header file.
-ecb_enc.c - des_ecb_encrypt() source, this contains the basic DES code.
-3ecb_enc.c - des_3ecb_encrypt() source.
-cbc_ckm.c - des_cbc_cksum() source.
-cbc_enc.c - des_cbc_encrypt() source.
-3cbc_enc.c - des_3cbc_encrypt() source.
-cfb_enc.c - des_cfb_encrypt() source.
-ofb_enc.c - des_cfb_encrypt() source.
-enc_read.c - des_enc_read() source.
-enc_writ.c - des_enc_write() source.
-pcbc_enc.c - des_pcbc_encrypt() source.
-qud_cksm.c - quad_cksum() source.
-rand_key.c - des_random_key() source.
-read_pwd.c - Source for des_read_password() plus related functions.
-set_key.c - Source for des_set_key().
-str2key.c - Covert a string of any length into a key.
-fcrypt.c - A small, fast version of crypt(3).
-des_locl.h - Internal libdes.a header file.
-podd.h - Odd parity tables - used in des_set_key().
-sk.h - Lookup tables used in des_set_key().
-spr.h - What is left of the S tables - used in ecb_encrypt().
-
-/* The perl scripts - you can ignore these files they are only
- * included for the curious */
-des.pl - des in perl anyone? des_set_key and des_ecb_encrypt
- both done in a perl library.
-testdes.pl - Testing program for des.pl
-doIP - Perl script used to develop IP xor/shift code.
-doPC1 - Perl script used to develop PC1 xor/shift code.
-doPC2 - Generates sk.h.
-PC1 - Output of doPC1 should be the same as output from PC1.
-PC2 - used in development of doPC2.
-shifts.pl - Perl library used by my perl scripts.
-
diff --git a/eBones/des/docs.original/INSTALL b/eBones/des/docs.original/INSTALL
deleted file mode 100644
index d34debe4f209..000000000000
--- a/eBones/des/docs.original/INSTALL
+++ /dev/null
@@ -1,53 +0,0 @@
-Check the CC and CFLAGS lines in the makefile
-
-If your C library does not support the times(3) function, change the
-#define TIMES to
-#undef TIMES in speed.c
-If it does, check the HZ value for the times(3) function.
-If your system does not define CLK_TCK it will be assumed to
-be 60.
-
-If possible use gcc v 2.2.2
-Turn on the maximum optimising
-
-type 'make'
-
-run './destest' to check things are ok.
-run './rpw' to check the tty code for reading passwords works.
-run './speed' to see how fast those optimisations make the library run :-)
-
-A make install will by default install
-libdes.a in /usr/local/lib/libdes.a
-des in /usr/local/bin/des
-des_crypt.man in /usr/local/man/man3/des_crypt.3
-des.man in /usr/local/man/man1/des.1
-des.h in /usr/include/des.h
-
-des(1) should be compatible with sunOS's but I have been unable to
-test it.
-
-These routines should compile on MSDOS, most 32bit and 64bit version
-of Unix (BSD and SYSV) and VMS, without modification.
-The only problems should be #include files that are in the wrong places.
-
-These routines can be compiled under MSDOS.
-I have successfully encrypted files using des(1) under MSDOS and then
-decrypted the files on a SparcStation.
-I have been able to compile and test the routines with
-Microsoft C v 5.1 and Turbo C v 2.0.
-The code in this library is in no way optimised for the 16bit
-operation of MSDOS. Microsoft C generates code that is 40% slower
-than Turbo C's code. I believe this is due to problems it has with
-code generation with the 32bit shift operation in the IP and FP
-sections. I have added some 16bit optimization in ecb_encrypt.c
-and this generated a %70 speedup under Turbo C. Such are the
-limitations of DOS compilers :-(.
-
-For Turbo C v 2.0, make sure to define MSDOS, in the relevant menu.
-
-There is an alternative version of the D_ENCRYPT macro that can be
-enabled with the -DALT_ECB option in the makefile. This alternative
-macro can make a +-%20 speed difference to the DES encryption speed,
-depending on the compiler/CPU combinations.
-It has its greatest effect on Sparc machines when using the sun compiler.
-If in doubt, try enable/disable it and running speed.
diff --git a/eBones/des/docs.original/KERBEROS b/eBones/des/docs.original/KERBEROS
deleted file mode 100644
index d8734b27f359..000000000000
--- a/eBones/des/docs.original/KERBEROS
+++ /dev/null
@@ -1,38 +0,0 @@
-To use this library with Bones (kerberos without DES):
-1) Get my modified Bones - eBones. It can be found on
- gondwana.ecr.mu.oz.au (128.250.1.63) /pub/athena/eBones-p9.tar.Z
- and
- nic.funet.fi (128.214.6.100) /pub/unix/security/Kerberos/eBones-p9.tar.Z
-
-2) Unpack this library in src/lib/des, makeing sure it is version
- 3.00 or greater (libdes.tar.93-10-07.Z). This versions differences
- from the version in comp.sources.misc volume 29 patchlevel2.
- The primarily difference is that it should compile under kerberos :-).
- It can be found at.
- ftp.psy.uq.oz.au (130.102.32.1) /pub/DES/libdes.tar.93-10-07.Z
-
-Now do a normal kerberos build and things should work.
-
-One problem I found when I was build on my local sun.
----
-For sunOS 4.1.1 apply the following patch to src/util/ss/make_commands.c
-
-*** make_commands.c.orig Fri Jul 3 04:18:35 1987
---- make_commands.c Wed May 20 08:47:42 1992
-***************
-*** 98,104 ****
- if (!rename(o_file, z_file)) {
- if (!vfork()) {
- chdir("/tmp");
-! execl("/bin/ld", "ld", "-o", o_file+5, "-s", "-r", "-n",
- z_file+5, 0);
- perror("/bin/ld");
- _exit(1);
---- 98,104 ----
- if (!rename(o_file, z_file)) {
- if (!vfork()) {
- chdir("/tmp");
-! execl("/bin/ld", "ld", "-o", o_file+5, "-s", "-r",
- z_file+5, 0);
- perror("/bin/ld");
- _exit(1);
diff --git a/eBones/des/docs.original/MODES.DES b/eBones/des/docs.original/MODES.DES
deleted file mode 100644
index fe9c0380457a..000000000000
--- a/eBones/des/docs.original/MODES.DES
+++ /dev/null
@@ -1,84 +0,0 @@
-Modes of DES
-Quite a bit of the following information has been taken from
- AS 2805.5.2
- Australian Standard
- Electronic funds transfer - Requirements for interfaces,
- Part 5.2: Modes of operation for an n-bit block cipher algorithm
- Appendix A
-
-There are several different modes in which DES can be used, they are
-as follows.
-
-Electronic Codebook Mode (ECB) (des_ecb_encrypt())
-- 64 bits are enciphered at a time.
-- The order of the blocks can be rearranged without detection.
-- The same plaintext block always produces the same ciphertext block
- (for the same key) making it vulnerable to a 'dictionary attack'.
-- An error will only affect one ciphertext block.
-
-Cipher Block Chaining Mode (CBC) (des_cbc_encrypt())
-- a multiple of 64 bits are enciphered at a time.
-- The CBC mode produces the same ciphertext whenever the same
- plaintext is encrypted using the same key and starting variable.
-- The chaining operation makes the ciphertext blocks dependent on the
- current and all preceding plaintext blocks and therefore blocks can not
- be rearranged.
-- The use of different starting variables prevents the same plaintext
- enciphering to the same ciphertext.
-- An error will affect the current and the following ciphertext blocks.
-
-Cipher Feedback Mode (CFB) (des_cfb_encrypt())
-- a number of bits (j) <= 64 are enciphered at a time.
-- The CFB mode produces the same ciphertext whenever the same
- plaintext is encrypted using the same key and starting variable.
-- The chaining operation makes the ciphertext variables dependent on the
- current and all preceding variables and therefore j-bit variables are
- chained together and con not be rearranged.
-- The use of different starting variables prevents the same plaintext
- enciphering to the same ciphertext.
-- The strength of the CFB mode depends on the size of k (maximal if
- j == k). In my implementation this is always the case.
-- Selection of a small value for j will require more cycles through
- the encipherment algorithm per unit of plaintext and thus cause
- greater processing overheads.
-- Only multiples of j bits can be enciphered.
-- An error will affect the current and the following ciphertext variables.
-
-Output Feedback Mode (OFB) (des_ofb_encrypt())
-- a number of bits (j) <= 64 are enciphered at a time.
-- The OFB mode produces the same ciphertext whenever the same
- plaintext enciphered using the same key and starting variable. More
- over, in the OFB mode the same key stream is produced when the same
- key and start variable are used. Consequently, for security reasons
- a specific start variable should be used only once for a given key.
-- The absence of chaining makes the OFB more vulnerable to specific attacks.
-- The use of different start variables values prevents the same
- plaintext enciphering to the same ciphertext, by producing different
- key streams.
-- Selection of a small value for j will require more cycles through
- the encipherment algorithm per unit of plaintext and thus cause
- greater processing overheads.
-- Only multiples of j bits can be enciphered.
-- OFB mode of operation does not extend ciphertext errors in the
- resultant plaintext output. Every bit error in the ciphertext causes
- only one bit to be in error in the deciphered plaintext.
-- OFB mode is not self-synchronising. If the two operation of
- encipherment and decipherment get out of synchronism, the system needs
- to be re-initialised.
-- Each re-initialisation should use a value of the start variable
-different from the start variable values used before with the same
-key. The reason for this is that an identical bit stream would be
-produced each time from the same parameters. This would be
-susceptible to a ' known plaintext' attack.
-
-Triple ECB Mode (des_3ecb_encrypt())
-- Encrypt with key1, decrypt with key2 and encrypt with key1 again.
-- As for ECB encryption but increases the effective key length to 112 bits.
-- If both keys are the same it is equivalent to encrypting once with
- just one key.
-
-Triple CBC Mode (des_3cbc_encrypt())
-- Encrypt with key1, decrypt with key2 and encrypt with key1 again.
-- As for CBC encryption but increases the effective key length to 112 bits.
-- If both keys are the same it is equivalent to encrypting once with
- just one key.
diff --git a/eBones/des/docs.original/README b/eBones/des/docs.original/README
deleted file mode 100644
index 6acd62c20cbb..000000000000
--- a/eBones/des/docs.original/README
+++ /dev/null
@@ -1,56 +0,0 @@
-
- libdes, Version 3.00 93/10/07
-
- Copyright (c) 1993, Eric Young
- All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of either:
-
- a) the GNU General Public License as published by the Free
- Software Foundation; either version 1, or (at your option) any
- later version, or
-
- b) the "Artistic License" which comes with this Kit.
-
- 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. See either
- the GNU General Public License or the Artistic License for more details.
-
- You should have received a copy of the Artistic License with this
- Kit, in the file named "Artistic". If not, I'll be glad to provide one.
-
- You should also have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
----
-This kit builds a DES encryption library and a DES encryption program.
-It suports ecb, cbc, ofb, cfb, triple ecb, triple cbc and MIT's pcbc
-encryption modes and also has a fast implementation of crypt(3).
-It contains support routines to read keys from a terminal,
-generate a random key, generate a key from an arbitary length string,
-read/write encrypted data from/to a file descriptor.
-
-The implementation was written so as to conform with the manual entry
-for the des_crypt(3) library routines from MIT's project Athena.
-
-destest should be run after compilation to test the des routines.
-rpw should be run after compilation to test the read password routines.
-The des program is a replacement for the sun des command. I believe it
-conforms to the sun version.
-
-The Imakefile is setup for use in the kerberos distribution.
-
-These routines are best compiled with gcc or any other good
-optimising compiler.
-Just turn you optimiser up to the highest settings and run destest
-after the build to make sure everything works.
-
-I believe these routines are close to the fastest and most portable DES
-routines that use small lookup tables (4.5k) that are publicly available.
-The fcrypt routine is faster than ufc's fcrypt (when compiling with
-gcc2 -O2) on the sparc 2 (1410 vs 1270) but is not so good on other machines
-(on a sun3/260 168 vs 336).
-
-Eric Young (eay@psych.psy.uq.oz.au)
diff --git a/eBones/des/docs.original/VERSION b/eBones/des/docs.original/VERSION
deleted file mode 100644
index 21e3b8dbadb2..000000000000
--- a/eBones/des/docs.original/VERSION
+++ /dev/null
@@ -1,185 +0,0 @@
-Release apon comp.sources.misc
-Version 3.01 08/10/93
- Added des_3cbc_encrypt()
-
-Version 3.00 07/10/93
- Fixed up documentation.
- quad_cksum definitly compatable with MIT's now.
-
-Version 2.30 24/08/93
- Tripple DES now defaults to tripple cbc but can do tripple ecb
- with the -b flag.
- Fixed some MSDOS uuen/uudecoding problems, thanks to
- Added prototypes.
-
-Version 2.22 29/06/93
- Fixed a bug in des_is_weak_key() which stopped it working :-(
- thanks to engineering@MorningStar.Com.
-
-Version 2.21 03/06/93
- des(1) with no arguments gives quite a bit of help.
- Added -c (generate ckecksum) flag to des(1).
- Added -3 (tripple DES) flag to des(1).
- Added cfb and ofb routines to the library.
-
-Version 2.20 11/03/93
- Added -u (uuencode) flag to des(1).
- I have been playing with byte order in quad_cksum to make it
- compatible with MIT's version. All I can say is aviod this
- function if possible since MIT's output is endian dependent.
-
-Version 2.12 14/10/92
- Added MSDOS specific macro in ecb_encrypt which gives a %70
- speed up when the code is compiled with turbo C.
-
-Version 2.11 12/10/92
- Speedup in set_key (recoding of PC-1)
- I now do it in 47 simple operations, down from 60.
- Thanks to John Fletcher (john_fletcher@lccmail.ocf.llnl.gov)
- for motivating me to look for a faster system :-)
- The speedup is probably less that 1% but it is still 13
- instructions less :-).
-
-Version 2.10 06/10/92
- The code now works on the 64bit ETA10 and CRAY without modifications or
- #defines. I believe the code should work on any machine that
- defines long, int or short to be 8 bytes long.
- Thanks to Shabbir J. Safdar (shabby@mentor.cc.purdue.edu)
- for helping me fix the code to run on 64bit machines (he had
- access to an ETA10).
- Thanks also to John Fletcher <john_fletcher@lccmail.ocf.llnl.gov>
- for testing the routines on a CRAY.
- read_password.c has been renamed to read_passwd.c
- string_to_key.c has been renamed to string2key.c
-
-Version 2.00 14/09/92
- Made mods so that the library should work on 64bit CPU's.
- Removed all my uchar and ulong defs. To many different
- versions of unix define them in their header files in too many
- different combinations :-)
- IRIX - Sillicon Graphics mods (mostly in read_password.c).
- Thanks to Andrew Daviel (advax@erich.triumf.ca)
-
-Version 1.99 26/08/92
- Fixed a bug or 2 in enc_read.c
- Fixed a bug in enc_write.c
- Fixed a pseudo bug in fcrypt.c (very obscure).
-
-Version 1.98 31/07/92
- Support for the ETA10. This is a strange machine that defines
- longs and ints as 8 bytes and shorts as 4 bytes.
- Since I do evil things with long * that assume that they are 4
- bytes. Look in the Makefile for the option to compile for
- this machine. quad_cksum appears to have problems but I
- will don't have the time to fix it right now, and this is not
- a function that uses DES and so will not effect the main uses
- of the library.
-
-Version 1.97 20/05/92 eay
- Fixed the Imakefile and made some changes to des.h to fix some
- problems when building this package with Kerberos v 4.
-
-Version 1.96 18/05/92 eay
- Fixed a small bug in string_to_key() where problems could
- occur if des_check_key was set to true and the string
- generated a weak key.
-
-Patch2 posted to comp.sources.misc
-Version 1.95 13/05/92 eay
- Added an alternative version of the D_ENCRYPT macro in
- ecb_encrypt and fcrypt. Depending on the compiler, one version or the
- other will be faster. This was inspired by
- Dana How <how@isl.stanford.edu>, and her pointers about doing the
- *(ulong *)((uchar *)ptr+(value&0xfc))
- vs
- ptr[value&0x3f]
- to stop the C compiler doing a <<2 to convert the long array index.
-
-Version 1.94 05/05/92 eay
- Fixed an incompatibility between my string_to_key and the MIT
- version. When the key is longer than 8 chars, I was wrapping
- with a different method. To use the old version, define
- OLD_STR_TO_KEY in the makefile. Thanks to
- viktor@newsu.shearson.com (Viktor Dukhovni).
-
-Version 1.93 28/04/92 eay
- Fixed the VMS mods so that echo is now turned off in
- read_password. Thanks again to brennan@coco.cchs.su.oz.AU.
- MSDOS support added. The routines can be compiled with
- Turbo C (v2.0) and MSC (v5.1). Make sure MSDOS is defined.
-
-Patch1 posted to comp.sources.misc
-Version 1.92 13/04/92 eay
- Changed D_ENCRYPT so that the rotation of R occurs outside of
- the loop. This required rotating all the longs in sp.h (now
- called spr.h). Thanks to Richard Outerbridge <71755.204@CompuServe.COM>
- speed.c has been changed so it will work without SIGALRM. If
- times(3) is not present it will try to use ftime() instead.
-
-Version 1.91 08/04/92 eay
- Added -E/-D options to des(1) so it can use string_to_key.
- Added SVR4 mods suggested by witr@rwwa.COM
- Added VMS mods suggested by brennan@coco.cchs.su.oz.AU. If
- anyone knows how to turn of tty echo in VMS please tell me or
- implement it yourself :-).
- Changed FILE *IN/*OUT to *DES_IN/*DES_OUT since it appears VMS
- does not like IN/OUT being used.
-
-Libdes posted to comp.sources.misc
-Version 1.9 24/03/92 eay
- Now contains a fast small crypt replacement.
- Added des(1) command.
- Added des_rw_mode so people can use cbc encryption with
- enc_read and enc_write.
-
-Version 1.8 15/10/91 eay
- Bug in cbc_cksum.
- Many thanks to Keith Reynolds (keithr@sco.COM) for pointing this
- one out.
-
-Version 1.7 24/09/91 eay
- Fixed set_key :-)
- set_key is 4 times faster and takes less space.
- There are a few minor changes that could be made.
-
-Version 1.6 19/09/1991 eay
- Finally go IP and FP finished.
- Now I need to fix set_key.
- This version is quite a bit faster that 1.51
-
-Version 1.52 15/06/1991 eay
- 20% speedup in ecb_encrypt by changing the E bit selection
- to use 2 32bit words. This also required modification of the
- sp table. There is still a way to speedup the IP and IP-1
- (hints from outer@sq.com) still working on this one :-(.
-
-Version 1.51 07/06/1991 eay
- Faster des_encrypt by loop unrolling
- Fixed bug in quad_cksum.c (thanks to hughes@logos.ucs.indiana.edu)
-
-Version 1.50 28/05/1991 eay
- Optimized the code a bit more for the sparc. I have improved the
- speed of the inner des_encrypt by speeding up the initial and
- final permutations.
-
-Version 1.40 23/10/1990 eay
- Fixed des_random_key, it did not produce a random key :-(
-
-Version 1.30 2/10/1990 eay
- Have made des_quad_cksum the same as MIT's, the full package
- should be compatible with MIT's
- Have tested on a DECstation 3100
- Still need to fix des_set_key (make it faster).
- Does des_cbc_encrypts at 70.5k/sec on a 3100.
-
-Version 1.20 18/09/1990 eay
- Fixed byte order dependencies.
- Fixed (I hope) all the word alignment problems.
- Speedup in des_ecb_encrypt.
-
-Version 1.10 11/09/1990 eay
- Added des_enc_read and des_enc_write.
- Still need to fix des_quad_cksum.
- Still need to document des_enc_read and des_enc_write.
-
-Version 1.00 27/08/1990 eay
diff --git a/eBones/des/ecb_enc.c b/eBones/des/ecb_enc.c
deleted file mode 100644
index e410eb88b31d..000000000000
--- a/eBones/des/ecb_enc.c
+++ /dev/null
@@ -1,123 +0,0 @@
-/* ecb_enc.c */
-/* Copyright (C) 1993 Eric Young - see README for more details */
-
-/*-
- * $Id: ecb_enc.c,v 1.2 1994/07/19 19:21:53 g89r4222 Exp $
- */
-
-#include "des_locl.h"
-#include "spr.h"
-
-int des_ecb_encrypt(input,output,ks,encrypt)
-des_cblock *input;
-des_cblock *output;
-des_key_schedule ks;
-int encrypt;
- {
- register unsigned long l0,l1;
- register unsigned char *in,*out;
- unsigned long ll[2];
-
- in=(unsigned char *)input;
- out=(unsigned char *)output;
- c2l(in,l0);
- c2l(in,l1);
- ll[0]=l0;
- ll[1]=l1;
- des_encrypt(ll,ll,ks,encrypt);
- l0=ll[0];
- l1=ll[1];
- l2c(l0,out);
- l2c(l1,out);
- l0=l1=ll[0]=ll[1]=0;
- return(0);
- }
-
-int des_encrypt(input,output,ks,encrypt)
-unsigned long *input;
-unsigned long *output;
-des_key_schedule ks;
-int encrypt;
- {
- register unsigned long l,r,t,u;
-#ifdef ALT_ECB
- register unsigned char *des_SP=(unsigned char *)des_SPtrans;
-#endif
-#ifdef MSDOS
- union fudge {
- unsigned long l;
- unsigned short s[2];
- unsigned char c[4];
- } U,T;
-#endif
- register int i;
- register unsigned long *s;
-
- l=input[0];
- r=input[1];
-
- /* do IP */
- PERM_OP(r,l,t, 4,0x0f0f0f0f);
- PERM_OP(l,r,t,16,0x0000ffff);
- PERM_OP(r,l,t, 2,0x33333333);
- PERM_OP(l,r,t, 8,0x00ff00ff);
- PERM_OP(r,l,t, 1,0x55555555);
- /* r and l are reversed - remember that :-) - fix
- * it in the next step */
-
- /* Things have been modified so that the initial rotate is
- * done outside the loop. This required the
- * des_SPtrans values in sp.h to be rotated 1 bit to the right.
- * One perl script later and things have a 5% speed up on a sparc2.
- * Thanks to Richard Outerbridge <71755.204@CompuServe.COM>
- * for pointing this out. */
- t=(r<<1)|(r>>31);
- r=(l<<1)|(l>>31);
- l=t;
-
- /* clear the top bits on machines with 8byte longs */
- l&=0xffffffff;
- r&=0xffffffff;
-
- s=(unsigned long *)ks;
- /* I don't know if it is worth the effort of loop unrolling the
- * inner loop */
- if (encrypt)
- {
- for (i=0; i<32; i+=4)
- {
- D_ENCRYPT(l,r,i+0); /* 1 */
- D_ENCRYPT(r,l,i+2); /* 2 */
- }
- }
- else
- {
- for (i=30; i>0; i-=4)
- {
- D_ENCRYPT(l,r,i-0); /* 16 */
- D_ENCRYPT(r,l,i-2); /* 15 */
- }
- }
- l=(l>>1)|(l<<31);
- r=(r>>1)|(r<<31);
- /* clear the top bits on machines with 8byte longs */
- l&=0xffffffff;
- r&=0xffffffff;
-
- /* swap l and r
- * we will not do the swap so just remember they are
- * reversed for the rest of the subroutine
- * luckily FP fixes this problem :-) */
-
- PERM_OP(r,l,t, 1,0x55555555);
- PERM_OP(l,r,t, 8,0x00ff00ff);
- PERM_OP(r,l,t, 2,0x33333333);
- PERM_OP(l,r,t,16,0x0000ffff);
- PERM_OP(r,l,t, 4,0x0f0f0f0f);
-
- output[0]=l;
- output[1]=r;
- l=r=t=u=0;
- return(0);
- }
-
diff --git a/eBones/des/enc_read.c b/eBones/des/enc_read.c
deleted file mode 100644
index ffd3ba977549..000000000000
--- a/eBones/des/enc_read.c
+++ /dev/null
@@ -1,150 +0,0 @@
-/* enc_read.c */
-/* Copyright (C) 1993 Eric Young - see README for more details */
-
-/*-
- * $Id: enc_read.c,v 1.2 1995/05/30 06:40:11 rgrimes Exp $
- */
-
-#include <sys/types.h>
-#include <sys/uio.h>
-#include <unistd.h>
-#include <errno.h>
-#include "des_locl.h"
-
-/* This has some uglies in it but it works - even over sockets. */
-extern int errno;
-int des_rw_mode=DES_PCBC_MODE;
-
-int des_enc_read(fd,buf,len,sched,iv)
-int fd;
-char *buf;
-int len;
-des_key_schedule sched;
-des_cblock *iv;
- {
- /* data to be unencrypted */
- int net_num=0;
- unsigned char net[BSIZE];
- /* extra unencrypted data
- * for when a block of 100 comes in but is des_read one byte at
- * a time. */
- static char unnet[BSIZE];
- static int unnet_start=0;
- static int unnet_left=0;
- int i;
- long num=0,rnum;
- unsigned char *p;
-
- /* left over data from last decrypt */
- if (unnet_left != 0)
- {
- if (unnet_left < len)
- {
- /* we still still need more data but will return
- * with the number of bytes we have - should always
- * check the return value */
- bcopy(&(unnet[unnet_start]),buf,unnet_left);
- /* eay 26/08/92 I had the next 2 lines
- * reversed :-( */
- i=unnet_left;
- unnet_start=unnet_left=0;
- }
- else
- {
- bcopy(&(unnet[unnet_start]),buf,len);
- unnet_start+=len;
- unnet_left-=len;
- i=len;
- }
- return(i);
- }
-
- /* We need to get more data. */
- if (len > MAXWRITE) len=MAXWRITE;
-
- /* first - get the length */
- net_num=0;
- while (net_num < HDRSIZE)
- {
- i=read(fd,&(net[net_num]),HDRSIZE-net_num);
- if ((i == -1) && (errno == EINTR)) continue;
- if (i <= 0) return(0);
- net_num+=i;
- }
-
- /* we now have at net_num bytes in net */
- p=net;
- num=0;
- n2l(p,num);
- /* num should be rounded up to the next group of eight
- * we make sure that we have read a multiple of 8 bytes from the net.
- */
- if ((num > MAXWRITE) || (num < 0)) /* error */
- return(-1);
- rnum=(num < 8)?8:((num+7)/8*8);
-
- net_num=0;
- while (net_num < rnum)
- {
- i=read(fd,&(net[net_num]),rnum-net_num);
- if ((i == -1) && (errno == EINTR)) continue;
- if (i <= 0) return(0);
- net_num+=i;
- }
-
- /* Check if there will be data left over. */
- if (len < num)
- {
- if (des_rw_mode & DES_PCBC_MODE)
- pcbc_encrypt((des_cblock *)net,(des_cblock *)unnet,
- num,sched,iv,DES_DECRYPT);
- else
- cbc_encrypt((des_cblock *)net,(des_cblock *)unnet,
- num,sched,iv,DES_DECRYPT);
- bcopy(unnet,buf,len);
- unnet_start=len;
- unnet_left=num-len;
-
- /* The following line is done because we return num
- * as the number of bytes read. */
- num=len;
- }
- else
- {
- /* >output is a multiple of 8 byes, if len < rnum
- * >we must be careful. The user must be aware that this
- * >routine will write more bytes than he asked for.
- * >The length of the buffer must be correct.
- * FIXED - Should be ok now 18-9-90 - eay */
- if (len < rnum)
- {
- char tmpbuf[BSIZE];
-
- if (des_rw_mode & DES_PCBC_MODE)
- pcbc_encrypt((des_cblock *)net,
- (des_cblock *)tmpbuf,
- num,sched,iv,DES_DECRYPT);
- else
- cbc_encrypt((des_cblock *)net,
- (des_cblock *)tmpbuf,
- num,sched,iv,DES_DECRYPT);
-
- /* eay 26/08/92 fix a bug that returned more
- * bytes than you asked for (returned len bytes :-( */
- bcopy(tmpbuf,buf,num);
- }
- else
- {
- if (des_rw_mode & DES_PCBC_MODE)
- pcbc_encrypt((des_cblock *)net,
- (des_cblock *)buf,num,sched,iv,
- DES_DECRYPT);
- else
- cbc_encrypt((des_cblock *)net,
- (des_cblock *)buf,num,sched,iv,
- DES_DECRYPT);
- }
- }
- return(num);
- }
-
diff --git a/eBones/des/enc_writ.c b/eBones/des/enc_writ.c
deleted file mode 100644
index e820e1fd3cb4..000000000000
--- a/eBones/des/enc_writ.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/* enc_writ.c */
-/* Copyright (C) 1993 Eric Young - see README for more details */
-
-/*-
- * $Id: enc_writ.c,v 1.2 1995/05/30 06:40:12 rgrimes Exp $
- */
-
-#include <sys/types.h>
-#include <sys/uio.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <time.h>
-#include <errno.h>
-#include "des_locl.h"
-
-int des_enc_write(fd,buf,len,sched,iv)
-int fd;
-char *buf;
-int len;
-des_key_schedule sched;
-des_cblock *iv;
- {
- long rnum;
- int i,j,k,outnum;
- char outbuf[BSIZE+HDRSIZE];
- char shortbuf[8];
- char *p;
- static int start=1;
-
- /* If we are sending less than 8 bytes, the same char will look
- * the same if we don't pad it out with random bytes */
- if (start)
- {
- start=0;
- srandom(time(NULL));
- }
-
- /* lets recurse if we want to send the data in small chunks */
- if (len > MAXWRITE)
- {
- j=0;
- for (i=0; i<len; i+=k)
- {
- k=des_enc_write(fd,&(buf[i]),
- ((len-i) > MAXWRITE)?MAXWRITE:(len-i),sched,iv);
- if (k < 0)
- return(k);
- else
- j+=k;
- }
- return(j);
- }
-
- /* write length first */
- p=outbuf;
- l2n(len,p);
-
- /* pad short strings */
- if (len < 8)
- {
- p=shortbuf;
- bcopy(buf,shortbuf,len);
- for (i=len; i<8; i++)
- shortbuf[i]=random();
- rnum=8;
- }
- else
- {
- p=buf;
- rnum=((len+7)/8*8); /* round up to nearest eight */
- }
-
- if (des_rw_mode & DES_PCBC_MODE)
- pcbc_encrypt((des_cblock *)p,(des_cblock *)&(outbuf[HDRSIZE]),
- (long)((len<8)?8:len),sched,iv,DES_ENCRYPT);
- else
- cbc_encrypt((des_cblock *)p,(des_cblock *)&(outbuf[HDRSIZE]),
- (long)((len<8)?8:len),sched,iv,DES_ENCRYPT);
-
- /* output */
- outnum=rnum+HDRSIZE;
-
- for (j=0; j<outnum; j+=i)
- {
- /* eay 26/08/92 I was not doing writing from where we
- * got upto. */
- i=write(fd,&(outbuf[j]),(int)(outnum-j));
- if (i == -1)
- {
- if (errno == EINTR)
- i=0;
- else /* This is really a bad error - very bad
- * It will stuff-up both ends. */
- return(-1);
- }
- }
-
- return(len);
- }
diff --git a/eBones/des/fcrypt.c b/eBones/des/fcrypt.c
deleted file mode 100644
index 1c2a805337cd..000000000000
--- a/eBones/des/fcrypt.c
+++ /dev/null
@@ -1,581 +0,0 @@
-/* fcrypt.c */
-/* Copyright (C) 1993 Eric Young - see README for more details */
-
-/*-
- * $Id: fcrypt.c,v 1.1.1.1 1994/09/30 14:49:51 csgr Exp $
- */
-
-#include <stdio.h>
-
-/* Eric Young.
- * This version of crypt has been developed from my MIT compatable
- * DES library.
- * The library is available at pub/DES at ftp.psy.uq.oz.au
- * eay@psych.psy.uq.oz.au
- */
-
-typedef unsigned char des_cblock[8];
-
-typedef struct des_ks_struct
- {
- union {
- des_cblock _;
- /* make sure things are correct size on machines with
- * 8 byte longs */
- unsigned long pad[2];
- } ks;
-#define _ ks._
- } des_key_schedule[16];
-
-#define DES_KEY_SZ (sizeof(des_cblock))
-#define DES_ENCRYPT 1
-#define DES_DECRYPT 0
-
-#define ITERATIONS 16
-#define HALF_ITERATIONS 8
-
-#define c2l(c,l) (l =((unsigned long)(*((c)++))) , \
- l|=((unsigned long)(*((c)++)))<< 8, \
- l|=((unsigned long)(*((c)++)))<<16, \
- l|=((unsigned long)(*((c)++)))<<24)
-
-#define l2c(l,c) (*((c)++)=(unsigned char)(((l) )&0xff), \
- *((c)++)=(unsigned char)(((l)>> 8)&0xff), \
- *((c)++)=(unsigned char)(((l)>>16)&0xff), \
- *((c)++)=(unsigned char)(((l)>>24)&0xff))
-
-static unsigned long SPtrans[8][64]={
-/* nibble 0 */
-0x00820200, 0x00020000, 0x80800000, 0x80820200,
-0x00800000, 0x80020200, 0x80020000, 0x80800000,
-0x80020200, 0x00820200, 0x00820000, 0x80000200,
-0x80800200, 0x00800000, 0x00000000, 0x80020000,
-0x00020000, 0x80000000, 0x00800200, 0x00020200,
-0x80820200, 0x00820000, 0x80000200, 0x00800200,
-0x80000000, 0x00000200, 0x00020200, 0x80820000,
-0x00000200, 0x80800200, 0x80820000, 0x00000000,
-0x00000000, 0x80820200, 0x00800200, 0x80020000,
-0x00820200, 0x00020000, 0x80000200, 0x00800200,
-0x80820000, 0x00000200, 0x00020200, 0x80800000,
-0x80020200, 0x80000000, 0x80800000, 0x00820000,
-0x80820200, 0x00020200, 0x00820000, 0x80800200,
-0x00800000, 0x80000200, 0x80020000, 0x00000000,
-0x00020000, 0x00800000, 0x80800200, 0x00820200,
-0x80000000, 0x80820000, 0x00000200, 0x80020200,
-/* nibble 1 */
-0x10042004, 0x00000000, 0x00042000, 0x10040000,
-0x10000004, 0x00002004, 0x10002000, 0x00042000,
-0x00002000, 0x10040004, 0x00000004, 0x10002000,
-0x00040004, 0x10042000, 0x10040000, 0x00000004,
-0x00040000, 0x10002004, 0x10040004, 0x00002000,
-0x00042004, 0x10000000, 0x00000000, 0x00040004,
-0x10002004, 0x00042004, 0x10042000, 0x10000004,
-0x10000000, 0x00040000, 0x00002004, 0x10042004,
-0x00040004, 0x10042000, 0x10002000, 0x00042004,
-0x10042004, 0x00040004, 0x10000004, 0x00000000,
-0x10000000, 0x00002004, 0x00040000, 0x10040004,
-0x00002000, 0x10000000, 0x00042004, 0x10002004,
-0x10042000, 0x00002000, 0x00000000, 0x10000004,
-0x00000004, 0x10042004, 0x00042000, 0x10040000,
-0x10040004, 0x00040000, 0x00002004, 0x10002000,
-0x10002004, 0x00000004, 0x10040000, 0x00042000,
-/* nibble 2 */
-0x41000000, 0x01010040, 0x00000040, 0x41000040,
-0x40010000, 0x01000000, 0x41000040, 0x00010040,
-0x01000040, 0x00010000, 0x01010000, 0x40000000,
-0x41010040, 0x40000040, 0x40000000, 0x41010000,
-0x00000000, 0x40010000, 0x01010040, 0x00000040,
-0x40000040, 0x41010040, 0x00010000, 0x41000000,
-0x41010000, 0x01000040, 0x40010040, 0x01010000,
-0x00010040, 0x00000000, 0x01000000, 0x40010040,
-0x01010040, 0x00000040, 0x40000000, 0x00010000,
-0x40000040, 0x40010000, 0x01010000, 0x41000040,
-0x00000000, 0x01010040, 0x00010040, 0x41010000,
-0x40010000, 0x01000000, 0x41010040, 0x40000000,
-0x40010040, 0x41000000, 0x01000000, 0x41010040,
-0x00010000, 0x01000040, 0x41000040, 0x00010040,
-0x01000040, 0x00000000, 0x41010000, 0x40000040,
-0x41000000, 0x40010040, 0x00000040, 0x01010000,
-/* nibble 3 */
-0x00100402, 0x04000400, 0x00000002, 0x04100402,
-0x00000000, 0x04100000, 0x04000402, 0x00100002,
-0x04100400, 0x04000002, 0x04000000, 0x00000402,
-0x04000002, 0x00100402, 0x00100000, 0x04000000,
-0x04100002, 0x00100400, 0x00000400, 0x00000002,
-0x00100400, 0x04000402, 0x04100000, 0x00000400,
-0x00000402, 0x00000000, 0x00100002, 0x04100400,
-0x04000400, 0x04100002, 0x04100402, 0x00100000,
-0x04100002, 0x00000402, 0x00100000, 0x04000002,
-0x00100400, 0x04000400, 0x00000002, 0x04100000,
-0x04000402, 0x00000000, 0x00000400, 0x00100002,
-0x00000000, 0x04100002, 0x04100400, 0x00000400,
-0x04000000, 0x04100402, 0x00100402, 0x00100000,
-0x04100402, 0x00000002, 0x04000400, 0x00100402,
-0x00100002, 0x00100400, 0x04100000, 0x04000402,
-0x00000402, 0x04000000, 0x04000002, 0x04100400,
-/* nibble 4 */
-0x02000000, 0x00004000, 0x00000100, 0x02004108,
-0x02004008, 0x02000100, 0x00004108, 0x02004000,
-0x00004000, 0x00000008, 0x02000008, 0x00004100,
-0x02000108, 0x02004008, 0x02004100, 0x00000000,
-0x00004100, 0x02000000, 0x00004008, 0x00000108,
-0x02000100, 0x00004108, 0x00000000, 0x02000008,
-0x00000008, 0x02000108, 0x02004108, 0x00004008,
-0x02004000, 0x00000100, 0x00000108, 0x02004100,
-0x02004100, 0x02000108, 0x00004008, 0x02004000,
-0x00004000, 0x00000008, 0x02000008, 0x02000100,
-0x02000000, 0x00004100, 0x02004108, 0x00000000,
-0x00004108, 0x02000000, 0x00000100, 0x00004008,
-0x02000108, 0x00000100, 0x00000000, 0x02004108,
-0x02004008, 0x02004100, 0x00000108, 0x00004000,
-0x00004100, 0x02004008, 0x02000100, 0x00000108,
-0x00000008, 0x00004108, 0x02004000, 0x02000008,
-/* nibble 5 */
-0x20000010, 0x00080010, 0x00000000, 0x20080800,
-0x00080010, 0x00000800, 0x20000810, 0x00080000,
-0x00000810, 0x20080810, 0x00080800, 0x20000000,
-0x20000800, 0x20000010, 0x20080000, 0x00080810,
-0x00080000, 0x20000810, 0x20080010, 0x00000000,
-0x00000800, 0x00000010, 0x20080800, 0x20080010,
-0x20080810, 0x20080000, 0x20000000, 0x00000810,
-0x00000010, 0x00080800, 0x00080810, 0x20000800,
-0x00000810, 0x20000000, 0x20000800, 0x00080810,
-0x20080800, 0x00080010, 0x00000000, 0x20000800,
-0x20000000, 0x00000800, 0x20080010, 0x00080000,
-0x00080010, 0x20080810, 0x00080800, 0x00000010,
-0x20080810, 0x00080800, 0x00080000, 0x20000810,
-0x20000010, 0x20080000, 0x00080810, 0x00000000,
-0x00000800, 0x20000010, 0x20000810, 0x20080800,
-0x20080000, 0x00000810, 0x00000010, 0x20080010,
-/* nibble 6 */
-0x00001000, 0x00000080, 0x00400080, 0x00400001,
-0x00401081, 0x00001001, 0x00001080, 0x00000000,
-0x00400000, 0x00400081, 0x00000081, 0x00401000,
-0x00000001, 0x00401080, 0x00401000, 0x00000081,
-0x00400081, 0x00001000, 0x00001001, 0x00401081,
-0x00000000, 0x00400080, 0x00400001, 0x00001080,
-0x00401001, 0x00001081, 0x00401080, 0x00000001,
-0x00001081, 0x00401001, 0x00000080, 0x00400000,
-0x00001081, 0x00401000, 0x00401001, 0x00000081,
-0x00001000, 0x00000080, 0x00400000, 0x00401001,
-0x00400081, 0x00001081, 0x00001080, 0x00000000,
-0x00000080, 0x00400001, 0x00000001, 0x00400080,
-0x00000000, 0x00400081, 0x00400080, 0x00001080,
-0x00000081, 0x00001000, 0x00401081, 0x00400000,
-0x00401080, 0x00000001, 0x00001001, 0x00401081,
-0x00400001, 0x00401080, 0x00401000, 0x00001001,
-/* nibble 7 */
-0x08200020, 0x08208000, 0x00008020, 0x00000000,
-0x08008000, 0x00200020, 0x08200000, 0x08208020,
-0x00000020, 0x08000000, 0x00208000, 0x00008020,
-0x00208020, 0x08008020, 0x08000020, 0x08200000,
-0x00008000, 0x00208020, 0x00200020, 0x08008000,
-0x08208020, 0x08000020, 0x00000000, 0x00208000,
-0x08000000, 0x00200000, 0x08008020, 0x08200020,
-0x00200000, 0x00008000, 0x08208000, 0x00000020,
-0x00200000, 0x00008000, 0x08000020, 0x08208020,
-0x00008020, 0x08000000, 0x00000000, 0x00208000,
-0x08200020, 0x08008020, 0x08008000, 0x00200020,
-0x08208000, 0x00000020, 0x00200020, 0x08008000,
-0x08208020, 0x00200000, 0x08200000, 0x08000020,
-0x00208000, 0x00008020, 0x08008020, 0x08200000,
-0x00000020, 0x08208000, 0x00208020, 0x00000000,
-0x08000000, 0x08200020, 0x00008000, 0x00208020};
-static unsigned long skb[8][64]={
-/* for C bits (numbered as per FIPS 46) 1 2 3 4 5 6 */
-0x00000000,0x00000010,0x20000000,0x20000010,
-0x00010000,0x00010010,0x20010000,0x20010010,
-0x00000800,0x00000810,0x20000800,0x20000810,
-0x00010800,0x00010810,0x20010800,0x20010810,
-0x00000020,0x00000030,0x20000020,0x20000030,
-0x00010020,0x00010030,0x20010020,0x20010030,
-0x00000820,0x00000830,0x20000820,0x20000830,
-0x00010820,0x00010830,0x20010820,0x20010830,
-0x00080000,0x00080010,0x20080000,0x20080010,
-0x00090000,0x00090010,0x20090000,0x20090010,
-0x00080800,0x00080810,0x20080800,0x20080810,
-0x00090800,0x00090810,0x20090800,0x20090810,
-0x00080020,0x00080030,0x20080020,0x20080030,
-0x00090020,0x00090030,0x20090020,0x20090030,
-0x00080820,0x00080830,0x20080820,0x20080830,
-0x00090820,0x00090830,0x20090820,0x20090830,
-/* for C bits (numbered as per FIPS 46) 7 8 10 11 12 13 */
-0x00000000,0x02000000,0x00002000,0x02002000,
-0x00200000,0x02200000,0x00202000,0x02202000,
-0x00000004,0x02000004,0x00002004,0x02002004,
-0x00200004,0x02200004,0x00202004,0x02202004,
-0x00000400,0x02000400,0x00002400,0x02002400,
-0x00200400,0x02200400,0x00202400,0x02202400,
-0x00000404,0x02000404,0x00002404,0x02002404,
-0x00200404,0x02200404,0x00202404,0x02202404,
-0x10000000,0x12000000,0x10002000,0x12002000,
-0x10200000,0x12200000,0x10202000,0x12202000,
-0x10000004,0x12000004,0x10002004,0x12002004,
-0x10200004,0x12200004,0x10202004,0x12202004,
-0x10000400,0x12000400,0x10002400,0x12002400,
-0x10200400,0x12200400,0x10202400,0x12202400,
-0x10000404,0x12000404,0x10002404,0x12002404,
-0x10200404,0x12200404,0x10202404,0x12202404,
-/* for C bits (numbered as per FIPS 46) 14 15 16 17 19 20 */
-0x00000000,0x00000001,0x00040000,0x00040001,
-0x01000000,0x01000001,0x01040000,0x01040001,
-0x00000002,0x00000003,0x00040002,0x00040003,
-0x01000002,0x01000003,0x01040002,0x01040003,
-0x00000200,0x00000201,0x00040200,0x00040201,
-0x01000200,0x01000201,0x01040200,0x01040201,
-0x00000202,0x00000203,0x00040202,0x00040203,
-0x01000202,0x01000203,0x01040202,0x01040203,
-0x08000000,0x08000001,0x08040000,0x08040001,
-0x09000000,0x09000001,0x09040000,0x09040001,
-0x08000002,0x08000003,0x08040002,0x08040003,
-0x09000002,0x09000003,0x09040002,0x09040003,
-0x08000200,0x08000201,0x08040200,0x08040201,
-0x09000200,0x09000201,0x09040200,0x09040201,
-0x08000202,0x08000203,0x08040202,0x08040203,
-0x09000202,0x09000203,0x09040202,0x09040203,
-/* for C bits (numbered as per FIPS 46) 21 23 24 26 27 28 */
-0x00000000,0x00100000,0x00000100,0x00100100,
-0x00000008,0x00100008,0x00000108,0x00100108,
-0x00001000,0x00101000,0x00001100,0x00101100,
-0x00001008,0x00101008,0x00001108,0x00101108,
-0x04000000,0x04100000,0x04000100,0x04100100,
-0x04000008,0x04100008,0x04000108,0x04100108,
-0x04001000,0x04101000,0x04001100,0x04101100,
-0x04001008,0x04101008,0x04001108,0x04101108,
-0x00020000,0x00120000,0x00020100,0x00120100,
-0x00020008,0x00120008,0x00020108,0x00120108,
-0x00021000,0x00121000,0x00021100,0x00121100,
-0x00021008,0x00121008,0x00021108,0x00121108,
-0x04020000,0x04120000,0x04020100,0x04120100,
-0x04020008,0x04120008,0x04020108,0x04120108,
-0x04021000,0x04121000,0x04021100,0x04121100,
-0x04021008,0x04121008,0x04021108,0x04121108,
-/* for D bits (numbered as per FIPS 46) 1 2 3 4 5 6 */
-0x00000000,0x10000000,0x00010000,0x10010000,
-0x00000004,0x10000004,0x00010004,0x10010004,
-0x20000000,0x30000000,0x20010000,0x30010000,
-0x20000004,0x30000004,0x20010004,0x30010004,
-0x00100000,0x10100000,0x00110000,0x10110000,
-0x00100004,0x10100004,0x00110004,0x10110004,
-0x20100000,0x30100000,0x20110000,0x30110000,
-0x20100004,0x30100004,0x20110004,0x30110004,
-0x00001000,0x10001000,0x00011000,0x10011000,
-0x00001004,0x10001004,0x00011004,0x10011004,
-0x20001000,0x30001000,0x20011000,0x30011000,
-0x20001004,0x30001004,0x20011004,0x30011004,
-0x00101000,0x10101000,0x00111000,0x10111000,
-0x00101004,0x10101004,0x00111004,0x10111004,
-0x20101000,0x30101000,0x20111000,0x30111000,
-0x20101004,0x30101004,0x20111004,0x30111004,
-/* for D bits (numbered as per FIPS 46) 8 9 11 12 13 14 */
-0x00000000,0x08000000,0x00000008,0x08000008,
-0x00000400,0x08000400,0x00000408,0x08000408,
-0x00020000,0x08020000,0x00020008,0x08020008,
-0x00020400,0x08020400,0x00020408,0x08020408,
-0x00000001,0x08000001,0x00000009,0x08000009,
-0x00000401,0x08000401,0x00000409,0x08000409,
-0x00020001,0x08020001,0x00020009,0x08020009,
-0x00020401,0x08020401,0x00020409,0x08020409,
-0x02000000,0x0A000000,0x02000008,0x0A000008,
-0x02000400,0x0A000400,0x02000408,0x0A000408,
-0x02020000,0x0A020000,0x02020008,0x0A020008,
-0x02020400,0x0A020400,0x02020408,0x0A020408,
-0x02000001,0x0A000001,0x02000009,0x0A000009,
-0x02000401,0x0A000401,0x02000409,0x0A000409,
-0x02020001,0x0A020001,0x02020009,0x0A020009,
-0x02020401,0x0A020401,0x02020409,0x0A020409,
-/* for D bits (numbered as per FIPS 46) 16 17 18 19 20 21 */
-0x00000000,0x00000100,0x00080000,0x00080100,
-0x01000000,0x01000100,0x01080000,0x01080100,
-0x00000010,0x00000110,0x00080010,0x00080110,
-0x01000010,0x01000110,0x01080010,0x01080110,
-0x00200000,0x00200100,0x00280000,0x00280100,
-0x01200000,0x01200100,0x01280000,0x01280100,
-0x00200010,0x00200110,0x00280010,0x00280110,
-0x01200010,0x01200110,0x01280010,0x01280110,
-0x00000200,0x00000300,0x00080200,0x00080300,
-0x01000200,0x01000300,0x01080200,0x01080300,
-0x00000210,0x00000310,0x00080210,0x00080310,
-0x01000210,0x01000310,0x01080210,0x01080310,
-0x00200200,0x00200300,0x00280200,0x00280300,
-0x01200200,0x01200300,0x01280200,0x01280300,
-0x00200210,0x00200310,0x00280210,0x00280310,
-0x01200210,0x01200310,0x01280210,0x01280310,
-/* for D bits (numbered as per FIPS 46) 22 23 24 25 27 28 */
-0x00000000,0x04000000,0x00040000,0x04040000,
-0x00000002,0x04000002,0x00040002,0x04040002,
-0x00002000,0x04002000,0x00042000,0x04042000,
-0x00002002,0x04002002,0x00042002,0x04042002,
-0x00000020,0x04000020,0x00040020,0x04040020,
-0x00000022,0x04000022,0x00040022,0x04040022,
-0x00002020,0x04002020,0x00042020,0x04042020,
-0x00002022,0x04002022,0x00042022,0x04042022,
-0x00000800,0x04000800,0x00040800,0x04040800,
-0x00000802,0x04000802,0x00040802,0x04040802,
-0x00002800,0x04002800,0x00042800,0x04042800,
-0x00002802,0x04002802,0x00042802,0x04042802,
-0x00000820,0x04000820,0x00040820,0x04040820,
-0x00000822,0x04000822,0x00040822,0x04040822,
-0x00002820,0x04002820,0x00042820,0x04042820,
-0x00002822,0x04002822,0x00042822,0x04042822,
-};
-
-/* See ecb_encrypt.c for a pseudo description of these macros. */
-#define PERM_OP(a,b,t,n,m) ((t)=((((a)>>(n))^(b))&(m)),\
- (b)^=(t),\
- (a)^=((t)<<(n)))
-
-#define HPERM_OP(a,t,n,m) ((t)=((((a)<<(16-(n)))^(a))&(m)),\
- (a)=(a)^(t)^(t>>(16-(n))))\
-
-static char shifts2[16]={0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0};
-
-static int body();
-static int des_set___key();
-
-static int des_set___key(key,schedule)
-des_cblock *key;
-des_key_schedule schedule;
- {
- register unsigned long c,d,t,s;
- register unsigned char *in;
- register unsigned long *k;
- register int i;
-
- k=(unsigned long *)schedule;
- in=(unsigned char *)key;
-
- c2l(in,c);
- c2l(in,d);
-
- /* I now do it in 47 simple operations :-)
- * Thanks to John Fletcher (john_fletcher@lccmail.ocf.llnl.gov)
- * for the inspiration. :-) */
- PERM_OP (d,c,t,4,0x0f0f0f0f);
- HPERM_OP(c,t,-2,0xcccc0000);
- HPERM_OP(d,t,-2,0xcccc0000);
- PERM_OP (d,c,t,1,0x55555555);
- PERM_OP (c,d,t,8,0x00ff00ff);
- PERM_OP (d,c,t,1,0x55555555);
- d= (((d&0x000000ff)<<16)| (d&0x0000ff00) |
- ((d&0x00ff0000)>>16)|((c&0xf0000000)>>4));
- c&=0x0fffffff;
-
- for (i=0; i<ITERATIONS; i++)
- {
- if (shifts2[i])
- { c=((c>>2)|(c<<26)); d=((d>>2)|(d<<26)); }
- else
- { c=((c>>1)|(c<<27)); d=((d>>1)|(d<<27)); }
- c&=0x0fffffff;
- d&=0x0fffffff;
- /* could be a few less shifts but I am to lazy at this
- * point in time to investigate */
- s= skb[0][ (c )&0x3f ]|
- skb[1][((c>> 6)&0x03)|((c>> 7)&0x3c)]|
- skb[2][((c>>13)&0x0f)|((c>>14)&0x30)]|
- skb[3][((c>>20)&0x01)|((c>>21)&0x06) |
- ((c>>22)&0x38)];
- t= skb[4][ (d )&0x3f ]|
- skb[5][((d>> 7)&0x03)|((d>> 8)&0x3c)]|
- skb[6][ (d>>15)&0x3f ]|
- skb[7][((d>>21)&0x0f)|((d>>22)&0x30)];
-
- /* table contained 0213 4657 */
- *(k++)=((t<<16)|(s&0x0000ffff))&0xffffffff;
- s= ((s>>16)|(t&0xffff0000));
-
- s=(s<<4)|(s>>28);
- *(k++)=s&0xffffffff;
- }
- return(0);
- }
-
-/******************************************************************
- * modified stuff for crypt.
- ******************************************************************/
-
-/* The changes to this macro may help or hinder, depending on the
- * compiler and the achitecture. gcc2 always seems to do well :-).
- * Inspired by Dana How <how@isl.stanford.edu>
- * DO NOT use the alternative version on machines with 8 byte longs.
- */
-#ifdef ALT_ECB
-#define D_ENCRYPT(L,R,S) \
- v=(R^(R>>16)); \
- u=(v&E0); \
- v=(v&E1); \
- u=((u^(u<<16))^R^s[S ])<<2; \
- t=(v^(v<<16))^R^s[S+1]; \
- t=(t>>2)|(t<<30); \
- L^= \
- *(unsigned long *)(des_SP+0x0100+((t )&0xfc))+ \
- *(unsigned long *)(des_SP+0x0300+((t>> 8)&0xfc))+ \
- *(unsigned long *)(des_SP+0x0500+((t>>16)&0xfc))+ \
- *(unsigned long *)(des_SP+0x0700+((t>>24)&0xfc))+ \
- *(unsigned long *)(des_SP+ ((u )&0xfc))+ \
- *(unsigned long *)(des_SP+0x0200+((u>> 8)&0xfc))+ \
- *(unsigned long *)(des_SP+0x0400+((u>>16)&0xfc))+ \
- *(unsigned long *)(des_SP+0x0600+((u>>24)&0xfc));
-#else /* original version */
-#define D_ENCRYPT(L,R,S) \
- v=(R^(R>>16)); \
- u=(v&E0); \
- v=(v&E1); \
- u=(u^(u<<16))^R^s[S ]; \
- t=(v^(v<<16))^R^s[S+1]; \
- t=(t>>4)|(t<<28); \
- L^= SPtrans[1][(t )&0x3f]| \
- SPtrans[3][(t>> 8)&0x3f]| \
- SPtrans[5][(t>>16)&0x3f]| \
- SPtrans[7][(t>>24)&0x3f]| \
- SPtrans[0][(u )&0x3f]| \
- SPtrans[2][(u>> 8)&0x3f]| \
- SPtrans[4][(u>>16)&0x3f]| \
- SPtrans[6][(u>>24)&0x3f];
-#endif
-
-unsigned char con_salt[128]={
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
-0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
-0x0A,0x0B,0x05,0x06,0x07,0x08,0x09,0x0A,
-0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,
-0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,
-0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,
-0x23,0x24,0x25,0x20,0x21,0x22,0x23,0x24,
-0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,
-0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,
-0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
-0x3D,0x3E,0x3F,0x00,0x00,0x00,0x00,0x00,
-};
-
-unsigned char cov_2char[64]={
-0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,
-0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,
-0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,
-0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,
-0x55,0x56,0x57,0x58,0x59,0x5A,0x61,0x62,
-0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,
-0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,
-0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A
-};
-
-char *crypt(buf,salt)
-char *buf;
-char *salt;
- {
- unsigned int i,j,x,y;
- unsigned long Eswap0=0,Eswap1=0;
- unsigned long out[2],ll;
- des_cblock key;
- des_key_schedule ks;
- static unsigned char buff[20];
- unsigned char bb[9];
- unsigned char *b=bb;
- unsigned char c,u;
-
- /* eay 25/08/92
- * If you call crypt("pwd","*") as often happens when you
- * have * as the pwd field in /etc/passwd, the function
- * returns *\0XXXXXXXXX
- * The \0 makes the string look like * so the pwd "*" would
- * crypt to "*". This was found when replacing the crypt in
- * our shared libraries. People found that the disbled
- * accounts effectivly had no passwd :-(. */
- if (salt[0] == '\0') salt[0]='A';
- if (salt[1] == '\0') salt[1]='A';
- x=buff[0]=salt[0];
- Eswap0=con_salt[x];
- x=buff[1]=salt[1];
- Eswap1=con_salt[x]<<4;
-
- for (i=0; i<8; i++)
- {
- c= *(buf++);
- if (!c) break;
- key[i]=(c<<1);
- }
- for (; i<8; i++)
- key[i]=0;
-
- des_set___key((des_cblock *)(key),ks);
- body(&out[0],&out[1],ks,Eswap0,Eswap1);
-
- ll=out[0]; l2c(ll,b);
- ll=out[1]; l2c(ll,b);
- y=0;
- u=0x80;
- bb[8]=0;
- for (i=2; i<13; i++)
- {
- c=0;
- for (j=0; j<6; j++)
- {
- c<<=1;
- if (bb[y] & u) c|=1;
- u>>=1;
- if (!u)
- {
- y++;
- u=0x80;
- }
- }
- buff[i]=cov_2char[c];
- }
- return((char *)buff);
- }
-
-static int body(out0,out1,ks,Eswap0,Eswap1)
-unsigned long *out0,*out1;
-des_key_schedule *ks;
-unsigned long Eswap0,Eswap1;
- {
- register unsigned long l,r,t,u,v;
-#ifdef ALT_ECB
- register unsigned char *des_SP=(unsigned char *)SPtrans;
-#endif
- register unsigned long *s;
- register int i,j;
- register unsigned long E0,E1;
-
- l=0;
- r=0;
-
- s=(unsigned long *)ks;
- E0=Eswap0;
- E1=Eswap1;
-
- for (j=0; j<25; j++)
- {
- for (i=0; i<(ITERATIONS*2); i+=4)
- {
- D_ENCRYPT(l,r, i); /* 1 */
- D_ENCRYPT(r,l, i+2); /* 2 */
- }
- t=l;
- l=r;
- r=t;
- }
- t=r;
- r=(l>>1)|(l<<31);
- l=(t>>1)|(t<<31);
- /* clear the top bits on machines with 8byte longs */
- l&=0xffffffff;
- r&=0xffffffff;
-
- PERM_OP(r,l,t, 1,0x55555555);
- PERM_OP(l,r,t, 8,0x00ff00ff);
- PERM_OP(r,l,t, 2,0x33333333);
- PERM_OP(l,r,t,16,0x0000ffff);
- PERM_OP(r,l,t, 4,0x0f0f0f0f);
-
- *out0=l;
- *out1=r;
- return(0);
- }
-
diff --git a/eBones/des/include/des_locl.h b/eBones/des/include/des_locl.h
deleted file mode 100644
index b35f33cd085e..000000000000
--- a/eBones/des/include/des_locl.h
+++ /dev/null
@@ -1,186 +0,0 @@
-/* des_locl.h */
-/* Copyright (C) 1993 Eric Young - see README for more details */
-
-/*-
- * $Id: des_locl.h,v 1.2 1994/07/19 19:22:18 g89r4222 Exp $
- */
-
-#include <stdio.h>
-#include "des.h"
-
-#if defined(__STDC__) || defined(VMS) || defined(M_XENIX) || defined(MSDOS)
-#include <string.h>
-#define bcopy(b1,b2,len) memcpy(b2, b1, (size_t)(len))
-#define bzero(b,len) memset(b, 0, (size_t)(len))
-#define bcmp(b1,b2,len) memcmp(b1, b2, (size_t)(len))
-#define index(s1,char) strchr(s1,char)
-#endif
-
-#ifdef MSDOS
-#define getpid() 2
-#define RAND
-extern int errno;
-#define PROTO
-#endif
-
-#ifdef __STDC__
-#define PROTO
-#endif
-
-#ifdef RAND
-#define random() rand()
-#define srandom(s) srand(s)
-#endif
-
-#define ITERATIONS 16
-#define HALF_ITERATIONS 8
-
-/* used in des_read and des_write */
-#define MAXWRITE (1024*16)
-#define BSIZE (MAXWRITE+4)
-
-#define c2l(c,l) (l =((unsigned long)(*((c)++))) , \
- l|=((unsigned long)(*((c)++)))<< 8, \
- l|=((unsigned long)(*((c)++)))<<16, \
- l|=((unsigned long)(*((c)++)))<<24)
-
-/* NOTE - c is not incremented as per c2l */
-#define c2ln(c,l1,l2,n) { \
- c+=n; \
- l1=l2=0; \
- switch (n) { \
- case 8: l2|=((unsigned long)(*(--(c))))<<24; \
- case 7: l2|=((unsigned long)(*(--(c))))<<16; \
- case 6: l2|=((unsigned long)(*(--(c))))<< 8; \
- case 5: l2|=((unsigned long)(*(--(c)))); \
- case 4: l1|=((unsigned long)(*(--(c))))<<24; \
- case 3: l1|=((unsigned long)(*(--(c))))<<16; \
- case 2: l1|=((unsigned long)(*(--(c))))<< 8; \
- case 1: l1|=((unsigned long)(*(--(c)))); \
- } \
- }
-
-#define l2c(l,c) (*((c)++)=(unsigned char)(((l) )&0xff), \
- *((c)++)=(unsigned char)(((l)>> 8)&0xff), \
- *((c)++)=(unsigned char)(((l)>>16)&0xff), \
- *((c)++)=(unsigned char)(((l)>>24)&0xff))
-
-/* replacements for htonl and ntohl since I have no idea what to do
- * when faced with machines with 8 byte longs. */
-#define HDRSIZE 4
-
-#define n2l(c,l) (l =((unsigned long)(*((c)++)))<<24, \
- l|=((unsigned long)(*((c)++)))<<16, \
- l|=((unsigned long)(*((c)++)))<< 8, \
- l|=((unsigned long)(*((c)++))))
-
-#define l2n(l,c) (*((c)++)=(unsigned char)(((l)>>24)&0xff), \
- *((c)++)=(unsigned char)(((l)>>16)&0xff), \
- *((c)++)=(unsigned char)(((l)>> 8)&0xff), \
- *((c)++)=(unsigned char)(((l) )&0xff))
-
-/* NOTE - c is not incremented as per l2c */
-#define l2cn(l1,l2,c,n) { \
- c+=n; \
- switch (n) { \
- case 8: *(--(c))=(unsigned char)(((l2)>>24)&0xff); \
- case 7: *(--(c))=(unsigned char)(((l2)>>16)&0xff); \
- case 6: *(--(c))=(unsigned char)(((l2)>> 8)&0xff); \
- case 5: *(--(c))=(unsigned char)(((l2) )&0xff); \
- case 4: *(--(c))=(unsigned char)(((l1)>>24)&0xff); \
- case 3: *(--(c))=(unsigned char)(((l1)>>16)&0xff); \
- case 2: *(--(c))=(unsigned char)(((l1)>> 8)&0xff); \
- case 1: *(--(c))=(unsigned char)(((l1) )&0xff); \
- } \
- }
-
-/* The changes to this macro may help or hinder, depending on the
- * compiler and the achitecture. gcc2 always seems to do well :-).
- * Inspired by Dana How <how@isl.stanford.edu>
- * DO NOT use the alternative version on machines with 8 byte longs. */
-#ifdef ALT_ECB
-#define D_ENCRYPT(L,R,S) \
- u=((R^s[S ])<<2); \
- t= R^s[S+1]; \
- t=((t>>2)+(t<<30)); \
- L^= \
- *(unsigned long *)(des_SP+0x0100+((t )&0xfc))+ \
- *(unsigned long *)(des_SP+0x0300+((t>> 8)&0xfc))+ \
- *(unsigned long *)(des_SP+0x0500+((t>>16)&0xfc))+ \
- *(unsigned long *)(des_SP+0x0700+((t>>24)&0xfc))+ \
- *(unsigned long *)(des_SP+ ((u )&0xfc))+ \
- *(unsigned long *)(des_SP+0x0200+((u>> 8)&0xfc))+ \
- *(unsigned long *)(des_SP+0x0400+((u>>16)&0xfc))+ \
- *(unsigned long *)(des_SP+0x0600+((u>>24)&0xfc));
-#else /* original version */
-#ifdef MSDOS
-#define D_ENCRYPT(L,R,S) \
- U.l=R^s[S+1]; \
- T.s[0]=((U.s[0]>>4)|(U.s[1]<<12))&0x3f3f; \
- T.s[1]=((U.s[1]>>4)|(U.s[0]<<12))&0x3f3f; \
- U.l=(R^s[S ])&0x3f3f3f3f; \
- L^= des_SPtrans[1][(T.c[0])]| \
- des_SPtrans[3][(T.c[1])]| \
- des_SPtrans[5][(T.c[2])]| \
- des_SPtrans[7][(T.c[3])]| \
- des_SPtrans[0][(U.c[0])]| \
- des_SPtrans[2][(U.c[1])]| \
- des_SPtrans[4][(U.c[2])]| \
- des_SPtrans[6][(U.c[3])];
-#else
-#define D_ENCRYPT(L,R,S) \
- u=(R^s[S ]); \
- t=R^s[S+1]; \
- t=((t>>4)+(t<<28)); \
- L^= des_SPtrans[1][(t )&0x3f]| \
- des_SPtrans[3][(t>> 8)&0x3f]| \
- des_SPtrans[5][(t>>16)&0x3f]| \
- des_SPtrans[7][(t>>24)&0x3f]| \
- des_SPtrans[0][(u )&0x3f]| \
- des_SPtrans[2][(u>> 8)&0x3f]| \
- des_SPtrans[4][(u>>16)&0x3f]| \
- des_SPtrans[6][(u>>24)&0x3f];
-#endif
-#endif
-
- /* IP and FP
- * The problem is more of a geometric problem that random bit fiddling.
- 0 1 2 3 4 5 6 7 62 54 46 38 30 22 14 6
- 8 9 10 11 12 13 14 15 60 52 44 36 28 20 12 4
- 16 17 18 19 20 21 22 23 58 50 42 34 26 18 10 2
- 24 25 26 27 28 29 30 31 to 56 48 40 32 24 16 8 0
-
- 32 33 34 35 36 37 38 39 63 55 47 39 31 23 15 7
- 40 41 42 43 44 45 46 47 61 53 45 37 29 21 13 5
- 48 49 50 51 52 53 54 55 59 51 43 35 27 19 11 3
- 56 57 58 59 60 61 62 63 57 49 41 33 25 17 9 1
-
- The output has been subject to swaps of the form
- 0 1 -> 3 1 but the odd and even bits have been put into
- 2 3 2 0
- different words. The main trick is to remember that
- t=((l>>size)^r)&(mask);
- r^=t;
- l^=(t<<size);
- can be used to swap and move bits between words.
-
- So l = 0 1 2 3 r = 16 17 18 19
- 4 5 6 7 20 21 22 23
- 8 9 10 11 24 25 26 27
- 12 13 14 15 28 29 30 31
- becomes (for size == 2 and mask == 0x3333)
- t = 2^16 3^17 -- -- l = 0 1 16 17 r = 2 3 18 19
- 6^20 7^21 -- -- 4 5 20 21 6 7 22 23
- 10^24 11^25 -- -- 8 9 24 25 10 11 24 25
- 14^28 15^29 -- -- 12 13 28 29 14 15 28 29
-
- Thanks for hints from Richard Outerbridge - he told me IP&FP
- could be done in 15 xor, 10 shifts and 5 ands.
- When I finally started to think of the problem in 2D
- I first got ~42 operations without xors. When I remembered
- how to use xors :-) I got it to its final state.
- */
-#define PERM_OP(a,b,t,n,m) ((t)=((((a)>>(n))^(b))&(m)),\
- (b)^=(t),\
- (a)^=((t)<<(n)))
-
diff --git a/eBones/des/include/podd.h b/eBones/des/include/podd.h
deleted file mode 100644
index 52b89d3aa030..000000000000
--- a/eBones/des/include/podd.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/* podd.h */
-/* Copyright (C) 1993 Eric Young - see README for more details */
-
-/*-
- * $Id: podd.h,v 1.2 1994/07/19 19:22:20 g89r4222 Exp $
- */
-
-static unsigned char odd_parity[256]={
- 1, 1, 2, 2, 4, 4, 7, 7, 8, 8, 11, 11, 13, 13, 14, 14,
- 16, 16, 19, 19, 21, 21, 22, 22, 25, 25, 26, 26, 28, 28, 31, 31,
- 32, 32, 35, 35, 37, 37, 38, 38, 41, 41, 42, 42, 44, 44, 47, 47,
- 49, 49, 50, 50, 52, 52, 55, 55, 56, 56, 59, 59, 61, 61, 62, 62,
- 64, 64, 67, 67, 69, 69, 70, 70, 73, 73, 74, 74, 76, 76, 79, 79,
- 81, 81, 82, 82, 84, 84, 87, 87, 88, 88, 91, 91, 93, 93, 94, 94,
- 97, 97, 98, 98,100,100,103,103,104,104,107,107,109,109,110,110,
-112,112,115,115,117,117,118,118,121,121,122,122,124,124,127,127,
-128,128,131,131,133,133,134,134,137,137,138,138,140,140,143,143,
-145,145,146,146,148,148,151,151,152,152,155,155,157,157,158,158,
-161,161,162,162,164,164,167,167,168,168,171,171,173,173,174,174,
-176,176,179,179,181,181,182,182,185,185,186,186,188,188,191,191,
-193,193,194,194,196,196,199,199,200,200,203,203,205,205,206,206,
-208,208,211,211,213,213,214,214,217,217,218,218,220,220,223,223,
-224,224,227,227,229,229,230,230,233,233,234,234,236,236,239,239,
-241,241,242,242,244,244,247,247,248,248,251,251,253,253,254,254};
diff --git a/eBones/des/include/sk.h b/eBones/des/include/sk.h
deleted file mode 100644
index 5aaf7d8e2236..000000000000
--- a/eBones/des/include/sk.h
+++ /dev/null
@@ -1,145 +0,0 @@
-/* sk.h */
-/* Copyright (C) 1993 Eric Young - see README for more details */
-
-/*-
- * $Id: sk.h,v 1.2 1994/07/19 19:22:22 g89r4222 Exp $
- */
-
-static unsigned long des_skb[8][64]={
-/* for C bits (numbered as per FIPS 46) 1 2 3 4 5 6 */
-0x00000000,0x00000010,0x20000000,0x20000010,
-0x00010000,0x00010010,0x20010000,0x20010010,
-0x00000800,0x00000810,0x20000800,0x20000810,
-0x00010800,0x00010810,0x20010800,0x20010810,
-0x00000020,0x00000030,0x20000020,0x20000030,
-0x00010020,0x00010030,0x20010020,0x20010030,
-0x00000820,0x00000830,0x20000820,0x20000830,
-0x00010820,0x00010830,0x20010820,0x20010830,
-0x00080000,0x00080010,0x20080000,0x20080010,
-0x00090000,0x00090010,0x20090000,0x20090010,
-0x00080800,0x00080810,0x20080800,0x20080810,
-0x00090800,0x00090810,0x20090800,0x20090810,
-0x00080020,0x00080030,0x20080020,0x20080030,
-0x00090020,0x00090030,0x20090020,0x20090030,
-0x00080820,0x00080830,0x20080820,0x20080830,
-0x00090820,0x00090830,0x20090820,0x20090830,
-/* for C bits (numbered as per FIPS 46) 7 8 10 11 12 13 */
-0x00000000,0x02000000,0x00002000,0x02002000,
-0x00200000,0x02200000,0x00202000,0x02202000,
-0x00000004,0x02000004,0x00002004,0x02002004,
-0x00200004,0x02200004,0x00202004,0x02202004,
-0x00000400,0x02000400,0x00002400,0x02002400,
-0x00200400,0x02200400,0x00202400,0x02202400,
-0x00000404,0x02000404,0x00002404,0x02002404,
-0x00200404,0x02200404,0x00202404,0x02202404,
-0x10000000,0x12000000,0x10002000,0x12002000,
-0x10200000,0x12200000,0x10202000,0x12202000,
-0x10000004,0x12000004,0x10002004,0x12002004,
-0x10200004,0x12200004,0x10202004,0x12202004,
-0x10000400,0x12000400,0x10002400,0x12002400,
-0x10200400,0x12200400,0x10202400,0x12202400,
-0x10000404,0x12000404,0x10002404,0x12002404,
-0x10200404,0x12200404,0x10202404,0x12202404,
-/* for C bits (numbered as per FIPS 46) 14 15 16 17 19 20 */
-0x00000000,0x00000001,0x00040000,0x00040001,
-0x01000000,0x01000001,0x01040000,0x01040001,
-0x00000002,0x00000003,0x00040002,0x00040003,
-0x01000002,0x01000003,0x01040002,0x01040003,
-0x00000200,0x00000201,0x00040200,0x00040201,
-0x01000200,0x01000201,0x01040200,0x01040201,
-0x00000202,0x00000203,0x00040202,0x00040203,
-0x01000202,0x01000203,0x01040202,0x01040203,
-0x08000000,0x08000001,0x08040000,0x08040001,
-0x09000000,0x09000001,0x09040000,0x09040001,
-0x08000002,0x08000003,0x08040002,0x08040003,
-0x09000002,0x09000003,0x09040002,0x09040003,
-0x08000200,0x08000201,0x08040200,0x08040201,
-0x09000200,0x09000201,0x09040200,0x09040201,
-0x08000202,0x08000203,0x08040202,0x08040203,
-0x09000202,0x09000203,0x09040202,0x09040203,
-/* for C bits (numbered as per FIPS 46) 21 23 24 26 27 28 */
-0x00000000,0x00100000,0x00000100,0x00100100,
-0x00000008,0x00100008,0x00000108,0x00100108,
-0x00001000,0x00101000,0x00001100,0x00101100,
-0x00001008,0x00101008,0x00001108,0x00101108,
-0x04000000,0x04100000,0x04000100,0x04100100,
-0x04000008,0x04100008,0x04000108,0x04100108,
-0x04001000,0x04101000,0x04001100,0x04101100,
-0x04001008,0x04101008,0x04001108,0x04101108,
-0x00020000,0x00120000,0x00020100,0x00120100,
-0x00020008,0x00120008,0x00020108,0x00120108,
-0x00021000,0x00121000,0x00021100,0x00121100,
-0x00021008,0x00121008,0x00021108,0x00121108,
-0x04020000,0x04120000,0x04020100,0x04120100,
-0x04020008,0x04120008,0x04020108,0x04120108,
-0x04021000,0x04121000,0x04021100,0x04121100,
-0x04021008,0x04121008,0x04021108,0x04121108,
-/* for D bits (numbered as per FIPS 46) 1 2 3 4 5 6 */
-0x00000000,0x10000000,0x00010000,0x10010000,
-0x00000004,0x10000004,0x00010004,0x10010004,
-0x20000000,0x30000000,0x20010000,0x30010000,
-0x20000004,0x30000004,0x20010004,0x30010004,
-0x00100000,0x10100000,0x00110000,0x10110000,
-0x00100004,0x10100004,0x00110004,0x10110004,
-0x20100000,0x30100000,0x20110000,0x30110000,
-0x20100004,0x30100004,0x20110004,0x30110004,
-0x00001000,0x10001000,0x00011000,0x10011000,
-0x00001004,0x10001004,0x00011004,0x10011004,
-0x20001000,0x30001000,0x20011000,0x30011000,
-0x20001004,0x30001004,0x20011004,0x30011004,
-0x00101000,0x10101000,0x00111000,0x10111000,
-0x00101004,0x10101004,0x00111004,0x10111004,
-0x20101000,0x30101000,0x20111000,0x30111000,
-0x20101004,0x30101004,0x20111004,0x30111004,
-/* for D bits (numbered as per FIPS 46) 8 9 11 12 13 14 */
-0x00000000,0x08000000,0x00000008,0x08000008,
-0x00000400,0x08000400,0x00000408,0x08000408,
-0x00020000,0x08020000,0x00020008,0x08020008,
-0x00020400,0x08020400,0x00020408,0x08020408,
-0x00000001,0x08000001,0x00000009,0x08000009,
-0x00000401,0x08000401,0x00000409,0x08000409,
-0x00020001,0x08020001,0x00020009,0x08020009,
-0x00020401,0x08020401,0x00020409,0x08020409,
-0x02000000,0x0A000000,0x02000008,0x0A000008,
-0x02000400,0x0A000400,0x02000408,0x0A000408,
-0x02020000,0x0A020000,0x02020008,0x0A020008,
-0x02020400,0x0A020400,0x02020408,0x0A020408,
-0x02000001,0x0A000001,0x02000009,0x0A000009,
-0x02000401,0x0A000401,0x02000409,0x0A000409,
-0x02020001,0x0A020001,0x02020009,0x0A020009,
-0x02020401,0x0A020401,0x02020409,0x0A020409,
-/* for D bits (numbered as per FIPS 46) 16 17 18 19 20 21 */
-0x00000000,0x00000100,0x00080000,0x00080100,
-0x01000000,0x01000100,0x01080000,0x01080100,
-0x00000010,0x00000110,0x00080010,0x00080110,
-0x01000010,0x01000110,0x01080010,0x01080110,
-0x00200000,0x00200100,0x00280000,0x00280100,
-0x01200000,0x01200100,0x01280000,0x01280100,
-0x00200010,0x00200110,0x00280010,0x00280110,
-0x01200010,0x01200110,0x01280010,0x01280110,
-0x00000200,0x00000300,0x00080200,0x00080300,
-0x01000200,0x01000300,0x01080200,0x01080300,
-0x00000210,0x00000310,0x00080210,0x00080310,
-0x01000210,0x01000310,0x01080210,0x01080310,
-0x00200200,0x00200300,0x00280200,0x00280300,
-0x01200200,0x01200300,0x01280200,0x01280300,
-0x00200210,0x00200310,0x00280210,0x00280310,
-0x01200210,0x01200310,0x01280210,0x01280310,
-/* for D bits (numbered as per FIPS 46) 22 23 24 25 27 28 */
-0x00000000,0x04000000,0x00040000,0x04040000,
-0x00000002,0x04000002,0x00040002,0x04040002,
-0x00002000,0x04002000,0x00042000,0x04042000,
-0x00002002,0x04002002,0x00042002,0x04042002,
-0x00000020,0x04000020,0x00040020,0x04040020,
-0x00000022,0x04000022,0x00040022,0x04040022,
-0x00002020,0x04002020,0x00042020,0x04042020,
-0x00002022,0x04002022,0x00042022,0x04042022,
-0x00000800,0x04000800,0x00040800,0x04040800,
-0x00000802,0x04000802,0x00040802,0x04040802,
-0x00002800,0x04002800,0x00042800,0x04042800,
-0x00002802,0x04002802,0x00042802,0x04042802,
-0x00000820,0x04000820,0x00040820,0x04040820,
-0x00000822,0x04000822,0x00040822,0x04040822,
-0x00002820,0x04002820,0x00042820,0x04042820,
-0x00002822,0x04002822,0x00042822,0x04042822,
-};
diff --git a/eBones/des/include/spr.h b/eBones/des/include/spr.h
deleted file mode 100644
index dbe2ae1fb9b0..000000000000
--- a/eBones/des/include/spr.h
+++ /dev/null
@@ -1,151 +0,0 @@
-/* spr.h */
-/* Copyright (C) 1993 Eric Young - see README for more details */
-
-/*-
- * $Id: spr.h,v 1.2 1994/07/19 19:22:23 g89r4222 Exp $
- */
-
-static unsigned long des_SPtrans[8][64]={
-/* nibble 0 */
-0x00820200, 0x00020000, 0x80800000, 0x80820200,
-0x00800000, 0x80020200, 0x80020000, 0x80800000,
-0x80020200, 0x00820200, 0x00820000, 0x80000200,
-0x80800200, 0x00800000, 0x00000000, 0x80020000,
-0x00020000, 0x80000000, 0x00800200, 0x00020200,
-0x80820200, 0x00820000, 0x80000200, 0x00800200,
-0x80000000, 0x00000200, 0x00020200, 0x80820000,
-0x00000200, 0x80800200, 0x80820000, 0x00000000,
-0x00000000, 0x80820200, 0x00800200, 0x80020000,
-0x00820200, 0x00020000, 0x80000200, 0x00800200,
-0x80820000, 0x00000200, 0x00020200, 0x80800000,
-0x80020200, 0x80000000, 0x80800000, 0x00820000,
-0x80820200, 0x00020200, 0x00820000, 0x80800200,
-0x00800000, 0x80000200, 0x80020000, 0x00000000,
-0x00020000, 0x00800000, 0x80800200, 0x00820200,
-0x80000000, 0x80820000, 0x00000200, 0x80020200,
-
-/* nibble 1 */
-0x10042004, 0x00000000, 0x00042000, 0x10040000,
-0x10000004, 0x00002004, 0x10002000, 0x00042000,
-0x00002000, 0x10040004, 0x00000004, 0x10002000,
-0x00040004, 0x10042000, 0x10040000, 0x00000004,
-0x00040000, 0x10002004, 0x10040004, 0x00002000,
-0x00042004, 0x10000000, 0x00000000, 0x00040004,
-0x10002004, 0x00042004, 0x10042000, 0x10000004,
-0x10000000, 0x00040000, 0x00002004, 0x10042004,
-0x00040004, 0x10042000, 0x10002000, 0x00042004,
-0x10042004, 0x00040004, 0x10000004, 0x00000000,
-0x10000000, 0x00002004, 0x00040000, 0x10040004,
-0x00002000, 0x10000000, 0x00042004, 0x10002004,
-0x10042000, 0x00002000, 0x00000000, 0x10000004,
-0x00000004, 0x10042004, 0x00042000, 0x10040000,
-0x10040004, 0x00040000, 0x00002004, 0x10002000,
-0x10002004, 0x00000004, 0x10040000, 0x00042000,
-
-/* nibble 2 */
-0x41000000, 0x01010040, 0x00000040, 0x41000040,
-0x40010000, 0x01000000, 0x41000040, 0x00010040,
-0x01000040, 0x00010000, 0x01010000, 0x40000000,
-0x41010040, 0x40000040, 0x40000000, 0x41010000,
-0x00000000, 0x40010000, 0x01010040, 0x00000040,
-0x40000040, 0x41010040, 0x00010000, 0x41000000,
-0x41010000, 0x01000040, 0x40010040, 0x01010000,
-0x00010040, 0x00000000, 0x01000000, 0x40010040,
-0x01010040, 0x00000040, 0x40000000, 0x00010000,
-0x40000040, 0x40010000, 0x01010000, 0x41000040,
-0x00000000, 0x01010040, 0x00010040, 0x41010000,
-0x40010000, 0x01000000, 0x41010040, 0x40000000,
-0x40010040, 0x41000000, 0x01000000, 0x41010040,
-0x00010000, 0x01000040, 0x41000040, 0x00010040,
-0x01000040, 0x00000000, 0x41010000, 0x40000040,
-0x41000000, 0x40010040, 0x00000040, 0x01010000,
-
-/* nibble 3 */
-0x00100402, 0x04000400, 0x00000002, 0x04100402,
-0x00000000, 0x04100000, 0x04000402, 0x00100002,
-0x04100400, 0x04000002, 0x04000000, 0x00000402,
-0x04000002, 0x00100402, 0x00100000, 0x04000000,
-0x04100002, 0x00100400, 0x00000400, 0x00000002,
-0x00100400, 0x04000402, 0x04100000, 0x00000400,
-0x00000402, 0x00000000, 0x00100002, 0x04100400,
-0x04000400, 0x04100002, 0x04100402, 0x00100000,
-0x04100002, 0x00000402, 0x00100000, 0x04000002,
-0x00100400, 0x04000400, 0x00000002, 0x04100000,
-0x04000402, 0x00000000, 0x00000400, 0x00100002,
-0x00000000, 0x04100002, 0x04100400, 0x00000400,
-0x04000000, 0x04100402, 0x00100402, 0x00100000,
-0x04100402, 0x00000002, 0x04000400, 0x00100402,
-0x00100002, 0x00100400, 0x04100000, 0x04000402,
-0x00000402, 0x04000000, 0x04000002, 0x04100400,
-
-/* nibble 4 */
-0x02000000, 0x00004000, 0x00000100, 0x02004108,
-0x02004008, 0x02000100, 0x00004108, 0x02004000,
-0x00004000, 0x00000008, 0x02000008, 0x00004100,
-0x02000108, 0x02004008, 0x02004100, 0x00000000,
-0x00004100, 0x02000000, 0x00004008, 0x00000108,
-0x02000100, 0x00004108, 0x00000000, 0x02000008,
-0x00000008, 0x02000108, 0x02004108, 0x00004008,
-0x02004000, 0x00000100, 0x00000108, 0x02004100,
-0x02004100, 0x02000108, 0x00004008, 0x02004000,
-0x00004000, 0x00000008, 0x02000008, 0x02000100,
-0x02000000, 0x00004100, 0x02004108, 0x00000000,
-0x00004108, 0x02000000, 0x00000100, 0x00004008,
-0x02000108, 0x00000100, 0x00000000, 0x02004108,
-0x02004008, 0x02004100, 0x00000108, 0x00004000,
-0x00004100, 0x02004008, 0x02000100, 0x00000108,
-0x00000008, 0x00004108, 0x02004000, 0x02000008,
-
-/* nibble 5 */
-0x20000010, 0x00080010, 0x00000000, 0x20080800,
-0x00080010, 0x00000800, 0x20000810, 0x00080000,
-0x00000810, 0x20080810, 0x00080800, 0x20000000,
-0x20000800, 0x20000010, 0x20080000, 0x00080810,
-0x00080000, 0x20000810, 0x20080010, 0x00000000,
-0x00000800, 0x00000010, 0x20080800, 0x20080010,
-0x20080810, 0x20080000, 0x20000000, 0x00000810,
-0x00000010, 0x00080800, 0x00080810, 0x20000800,
-0x00000810, 0x20000000, 0x20000800, 0x00080810,
-0x20080800, 0x00080010, 0x00000000, 0x20000800,
-0x20000000, 0x00000800, 0x20080010, 0x00080000,
-0x00080010, 0x20080810, 0x00080800, 0x00000010,
-0x20080810, 0x00080800, 0x00080000, 0x20000810,
-0x20000010, 0x20080000, 0x00080810, 0x00000000,
-0x00000800, 0x20000010, 0x20000810, 0x20080800,
-0x20080000, 0x00000810, 0x00000010, 0x20080010,
-
-/* nibble 6 */
-0x00001000, 0x00000080, 0x00400080, 0x00400001,
-0x00401081, 0x00001001, 0x00001080, 0x00000000,
-0x00400000, 0x00400081, 0x00000081, 0x00401000,
-0x00000001, 0x00401080, 0x00401000, 0x00000081,
-0x00400081, 0x00001000, 0x00001001, 0x00401081,
-0x00000000, 0x00400080, 0x00400001, 0x00001080,
-0x00401001, 0x00001081, 0x00401080, 0x00000001,
-0x00001081, 0x00401001, 0x00000080, 0x00400000,
-0x00001081, 0x00401000, 0x00401001, 0x00000081,
-0x00001000, 0x00000080, 0x00400000, 0x00401001,
-0x00400081, 0x00001081, 0x00001080, 0x00000000,
-0x00000080, 0x00400001, 0x00000001, 0x00400080,
-0x00000000, 0x00400081, 0x00400080, 0x00001080,
-0x00000081, 0x00001000, 0x00401081, 0x00400000,
-0x00401080, 0x00000001, 0x00001001, 0x00401081,
-0x00400001, 0x00401080, 0x00401000, 0x00001001,
-
-/* nibble 7 */
-0x08200020, 0x08208000, 0x00008020, 0x00000000,
-0x08008000, 0x00200020, 0x08200000, 0x08208020,
-0x00000020, 0x08000000, 0x00208000, 0x00008020,
-0x00208020, 0x08008020, 0x08000020, 0x08200000,
-0x00008000, 0x00208020, 0x00200020, 0x08008000,
-0x08208020, 0x08000020, 0x00000000, 0x00208000,
-0x08000000, 0x00200000, 0x08008020, 0x08200020,
-0x00200000, 0x00008000, 0x08208000, 0x00000020,
-0x00200000, 0x00008000, 0x08000020, 0x08208020,
-0x00008020, 0x08000000, 0x00000000, 0x00208000,
-0x08200020, 0x08008020, 0x08008000, 0x00200020,
-0x08208000, 0x00000020, 0x00200020, 0x08008000,
-0x08208020, 0x00200000, 0x08200000, 0x08000020,
-0x00208000, 0x00008020, 0x08008020, 0x08200000,
-0x00000020, 0x08208000, 0x00208020, 0x00000000,
-0x08000000, 0x08200020, 0x00008000, 0x00208020};
diff --git a/eBones/des/new_rnd_key.c b/eBones/des/new_rnd_key.c
deleted file mode 100644
index 7bc3f5823904..000000000000
--- a/eBones/des/new_rnd_key.c
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Copyright (c) 1995
- * Mark Murray. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Mark Murray
- * and Eric Young
- * 4. Neither the name of the author nor the names of any co-contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY MARK MURRAY AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $Id: new_rnd_key.c,v 1.3 1995/09/16 20:44:27 markm Exp $
- */
-
-#include <unistd.h>
-#include <string.h>
-#include <sys/time.h>
-#include <sys/param.h>
-#include <sys/sysctl.h>
-#include <machine/types.h>
-
-#include "des_locl.h"
-
-/* This counter keeps track of the pseudo-random sequence */
-static union {
- u_int32_t ul0, ul1;
- u_char uc[8];
-} counter;
-
-/* The current encryption schedule */
-static des_key_schedule current_key;
-
-/*
- * des_set_random_generator_seed: starts a new pseudorandom sequence
- * dependant on the supplied key
- */
-void
-des_set_random_generator_seed(new_key)
- des_cblock *new_key;
-{
- des_key_sched(new_key, current_key);
-
- /* reset the counter */
- counter.ul0 = counter.ul1 = 0;
-}
-
-/*
- * des_set_sequence_number: set the counter to a known value
- */
-void
-des_set_sequence_number(new_counter)
- des_cblock new_counter;
-{
- bcopy((void *)new_counter, (char *)counter.uc, sizeof(counter));
-}
-
-/*
- * des_generate_random_block: returns the next 64 bit random number
- */
-
-void des_generate_random_block(random_block)
- des_cblock *random_block;
-{
- /* Encrypt the counter to get pseudo-random numbers */
- des_ecb_encrypt(&counter.uc, random_block, current_key, DES_ENCRYPT);
-
- /* increment the 64-bit counter */
- counter.ul0++;
- if (!counter.ul0) counter.ul1++;
-}
-
-/*
- * des_new_random_key: Invents a new, random strong key with odd parity.
- */
-int
-des_new_random_key(new_key)
- des_cblock *new_key;
-{
- do {
- des_generate_random_block(new_key);
- des_set_odd_parity(new_key);
- } while (des_is_weak_key(new_key));
- return(0);
-}
-
-/*
- * des_init_random_number_generator: intialises the random number generator
- * to a truly nasty sequence using system
- * supplied volatile variables.
- */
-void
-des_init_random_number_generator(key)
- des_cblock *key;
-{
- /* 64-bit structures */
- struct {
- u_int32_t pid;
- u_int32_t hostid;
- } sysblock;
- struct timeval timeblock;
- struct {
- u_int32_t tv_sec;
- u_int32_t tv_usec;
- } time64bit;
- des_cblock new_key;
- int mib[2];
- size_t len;
-
- /* Get host ID using official BSD 4.4 method */
- mib[0] = CTL_KERN;
- mib[1] = KERN_HOSTID;
- len = sizeof(sysblock.hostid);
- sysctl(mib, 2, &sysblock.hostid, &len, NULL, 0);
-
- /* Get Process ID */
- sysblock.pid = getpid();
-
- /* Generate a new key, and use it to seed the random generator */
- des_set_random_generator_seed(key);
- des_set_sequence_number((unsigned char *)&sysblock);
- des_new_random_key(&new_key);
- des_set_random_generator_seed(&new_key);
-
- /* Try to confuse the sequence counter */
- gettimeofday(&timeblock, NULL);
- time64bit.tv_sec = (u_int32_t)timeblock.tv_sec;
- time64bit.tv_usec = (u_int32_t)timeblock.tv_usec;
- des_set_sequence_number((unsigned char *)&time64bit);
-
- /* Do the work */
- des_new_random_key(&new_key);
- des_set_random_generator_seed(&new_key);
-}
diff --git a/eBones/des/ofb_enc.c b/eBones/des/ofb_enc.c
deleted file mode 100644
index 9a94372d8e99..000000000000
--- a/eBones/des/ofb_enc.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/* ofb_enc.c */
-/* Copyright (C) 1993 Eric Young - see README for more details */
-
-/*-
- * $Id: ofb_enc.c,v 1.2 1994/07/19 19:21:59 g89r4222 Exp $
- */
-
-#include "des_locl.h"
-
-/* The input and output are loaded in multiples of 8 bits.
- * What this means is that if you hame numbits=12 and length=2
- * the first 12 bits will be retrieved from the first byte and half
- * the second. The second 12 bits will come from the 3rd and half the 4th
- * byte.
- */
-int des_ofb_encrypt(in,out,numbits,length,schedule,ivec)
-unsigned char *in,*out;
-int numbits;
-long length;
-des_key_schedule schedule;
-des_cblock *ivec;
- {
- register unsigned long d0,d1,v0,v1,n=(numbits+7)/8;
- register unsigned long mask0,mask1;
- register long l=length;
- register int num=numbits;
- unsigned long ti[2];
- unsigned char *iv;
-
- if (num > 64) return(0);
- if (num > 32)
- {
- mask0=0xffffffff;
- if (num >= 64)
- mask1=mask0;
- else
- mask1=(1L<<(num-32))-1;
- }
- else
- {
- if (num == 32)
- mask0=0xffffffff;
- else
- mask0=(1L<<num)-1;
- mask1=0x00000000;
- }
-
- iv=(unsigned char *)ivec;
- c2l(iv,v0);
- c2l(iv,v1);
- ti[0]=v0;
- ti[1]=v1;
- while (l-- > 0)
- {
- des_encrypt((unsigned long *)ti,(unsigned long *)ti,
- schedule,DES_ENCRYPT);
- c2ln(in,d0,d1,n);
- in+=n;
- d0=(d0^ti[0])&mask0;
- d1=(d1^ti[1])&mask1;
- l2cn(d0,d1,out,n);
- out+=n;
- }
- v0=ti[0];
- v1=ti[1];
- iv=(unsigned char *)ivec;
- l2c(v0,iv);
- l2c(v1,iv);
- v0=v1=d0=d1=ti[0]=ti[1]=0;
- return(0);
- }
-
diff --git a/eBones/des/pcbc_enc.c b/eBones/des/pcbc_enc.c
deleted file mode 100644
index 216bdb2eb734..000000000000
--- a/eBones/des/pcbc_enc.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/* pcbc_enc.c */
-/* Copyright (C) 1993 Eric Young - see README for more details */
-
-/*-
- * $Id: pcbc_enc.c,v 1.2 1994/07/19 19:22:01 g89r4222 Exp $
- */
-
-#include "des_locl.h"
-
-int des_pcbc_encrypt(input,output,length,schedule,ivec,encrypt)
-des_cblock *input;
-des_cblock *output;
-register long length;
-des_key_schedule schedule;
-des_cblock *ivec;
-int encrypt;
- {
- register unsigned long sin0,sin1,xor0,xor1,tout0,tout1;
- unsigned long tin[2],tout[2];
- unsigned char *in,*out,*iv;
-
- in=(unsigned char *)input;
- out=(unsigned char *)output;
- iv=(unsigned char *)ivec;
-
- if (encrypt)
- {
- c2l(iv,xor0);
- c2l(iv,xor1);
- for (; length>0; length-=8)
- {
- if (length >= 8)
- {
- c2l(in,sin0);
- c2l(in,sin1);
- }
- else
- c2ln(in,sin0,sin1,length);
- tin[0]=sin0^xor0;
- tin[1]=sin1^xor1;
- des_encrypt((unsigned long *)tin,(unsigned long *)tout,
- schedule,encrypt);
- tout0=tout[0];
- tout1=tout[1];
- xor0=sin0^tout[0];
- xor1=sin1^tout[1];
- l2c(tout0,out);
- l2c(tout1,out);
- }
- }
- else
- {
- c2l(iv,xor0); c2l(iv,xor1);
- for (; length>0; length-=8)
- {
- c2l(in,sin0);
- c2l(in,sin1);
- tin[0]=sin0;
- tin[1]=sin1;
- des_encrypt((unsigned long *)tin,(unsigned long *)tout,
- schedule,encrypt);
- tout0=tout[0]^xor0;
- tout1=tout[1]^xor1;
- if (length >= 8)
- {
- l2c(tout0,out);
- l2c(tout1,out);
- }
- else
- l2cn(tout0,tout1,out,length);
- xor0=tout0^sin0;
- xor1=tout1^sin1;
- }
- }
- tin[0]=tin[1]=tout[0]=tout[1]=0;
- sin0=sin1=xor0=xor1=tout0=tout1=0;
- return(0);
- }
diff --git a/eBones/des/qud_cksm.c b/eBones/des/qud_cksm.c
deleted file mode 100644
index a4e32152eb9b..000000000000
--- a/eBones/des/qud_cksm.c
+++ /dev/null
@@ -1,93 +0,0 @@
-/* qud_cksm.c */
-/* Copyright (C) 1993 Eric Young - see README for more details */
-
-/*-
- * $Id: qud_cksm.c,v 1.1.1.1 1994/09/30 14:49:51 csgr Exp $
- */
-
-/* From "Message Authentication" R.R. Jueneman, S.M. Matyas, C.H. Meyer
- * IEEE Communications Magazine Sept 1985 Vol. 23 No. 9 p 29-40
- * This module in only based on the code in this paper and is
- * almost definitely not the same as the MIT implementation.
- */
-#include "des_locl.h"
-
-/* bug fix for dos - 7/6/91 - Larry hughes@logos.ucs.indiana.edu */
-#define B0(a) (((unsigned long)(a)))
-#define B1(a) (((unsigned long)(a))<<8)
-#define B2(a) (((unsigned long)(a))<<16)
-#define B3(a) (((unsigned long)(a))<<24)
-
-/* used to scramble things a bit */
-/* Got the value MIT uses via brute force :-) 2/10/90 eay */
-#define NOISE ((unsigned long)83653421)
-
-unsigned long des_quad_cksum(input,output,length,out_count,seed)
-des_cblock *input;
-des_cblock *output;
-long length;
-int out_count;
-des_cblock *seed;
- {
- unsigned long z0,z1,t0,t1;
- int i;
- long l=0;
- unsigned char *cp;
- unsigned char *lp;
-
- if (out_count < 1) out_count=1;
- lp=(unsigned char *)output;
-
- z0=B0((*seed)[0])|B1((*seed)[1])|B2((*seed)[2])|B3((*seed)[3]);
- z1=B0((*seed)[4])|B1((*seed)[5])|B2((*seed)[6])|B3((*seed)[7]);
-
- for (i=0; ((i<4)&&(i<out_count)); i++)
- {
- cp=(unsigned char *)input;
- l=length;
- while (l > 0)
- {
- if (l > 1)
- {
- t0= (unsigned long)(*(cp++));
- t0|=(unsigned long)B1(*(cp++));
- l--;
- }
- else
- t0= (unsigned long)(*(cp++));
- l--;
- /* add */
- t0+=z0;
- t0&=0xffffffff;
- t1=z1;
- /* square, well sort of square */
- z0=((((t0*t0)&0xffffffff)+((t1*t1)&0xffffffff))
- &0xffffffff)%0x7fffffff;
- z1=((t0*((t1+NOISE)&0xffffffff))&0xffffffff)%0x7fffffff;
- }
- if (lp != NULL)
- {
- /* I believe I finally have things worked out.
- * The MIT library assumes that the checksum
- * is one huge number and it is returned in a
- * host dependant byte order.
- */
- static unsigned long l=1;
- static unsigned char *c=(unsigned char *)&l;
-
- if (c[0])
- {
- l2c(z0,lp);
- l2c(z1,lp);
- }
- else
- {
- lp=output[out_count-i-1];
- l2n(z1,lp);
- l2n(z0,lp);
- }
- }
- }
- return(z0);
- }
-
diff --git a/eBones/des/rand_key.c b/eBones/des/rand_key.c
deleted file mode 100644
index 30369febd1f8..000000000000
--- a/eBones/des/rand_key.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* rand_key.c */
-/* Copyright (C) 1993 Eric Young - see README for more details */
-
-/*-
- * $Id: rand_key.c,v 1.2 1995/05/09 18:05:15 wollman Exp $
- */
-
-#include <sys/types.h>
-#include <sys/time.h>
-#include <unistd.h>
-#include "des_locl.h"
-
-int des_random_key(ret)
-des_cblock ret;
- {
- des_key_schedule ks;
- static unsigned long c=0;
- static unsigned short pid=0;
- static des_cblock data={0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef};
- des_cblock key;
- unsigned char *p;
- unsigned long t;
-
-#ifdef MSDOS
- pid=1;
-#else
- if (!pid) pid=getpid();
-#endif
- p=key;
- t=(unsigned long)time(NULL);
- l2c(t,p);
- t=(unsigned long)((pid)|((c++)<<16));
- l2c(t,p);
-
- des_set_odd_parity((des_cblock *)data);
- des_set__key((des_cblock *)data,ks);
- des_cbc_cksum((des_cblock *)key,(des_cblock *)key,
- (long)sizeof(key),ks,(des_cblock *)data);
- des_set_odd_parity((des_cblock *)key);
- des_cbc_cksum((des_cblock *)key,(des_cblock *)key,
- (long)sizeof(key),ks,(des_cblock *)data);
- des_set_odd_parity((des_cblock *)key);
-
- bcopy(key,ret,sizeof(key));
- bzero(key,sizeof(key));
- bzero(ks,sizeof(ks));
- t=0;
- return(0);
- }
diff --git a/eBones/des/read_pwd.c b/eBones/des/read_pwd.c
deleted file mode 100644
index 9d7fd43dc640..000000000000
--- a/eBones/des/read_pwd.c
+++ /dev/null
@@ -1,333 +0,0 @@
-/* read_pwd.c */
-/* Copyright (C) 1993 Eric Young - see README for more details */
-/* 06-Apr-92 Luke Brennan Support for VMS */
-
-/*-
- * $Id: read_pwd.c,v 1.2 1995/01/25 02:27:00 ache Exp $
- */
-
-#include "des_locl.h"
-#include <string.h>
-#include <signal.h>
-#include <setjmp.h>
-
-#include <sys/param.h>
-
-#ifdef BSD
-#include <pwd.h>
-extern char * getpass(const char * prompt);
-#endif
-
-#ifndef VMS
-#ifndef MSDOS
-#ifndef _IRIX
-#ifdef CRAY
-#include <termio.h>
-#define sgttyb termio
-#define sg_flags c_lflag
-#else /* !CRAY */
-#include <sgtty.h>
-#endif
-#include <sys/ioctl.h>
-#else /* _IRIX */
-struct sgttyb {
- char sg_ispeed; /* input speed */
- char sg_ospeed; /* output speed */
- char sg_erase; /* erase character */
- char sg_kill; /* kill character */
- short sg_flags; /* mode flags */
- };
-#endif
-#else /* MSDOS */
-#define fgets(a,b,c) noecho_fgets(a,b,c)
-#ifndef NSIG
-#define NSIG 32
-#endif
-#endif
-#else /* VMS */
-#include <ssdef.h>
-#include <iodef.h>
-#include <ttdef.h>
-#include <descrip.h>
-struct IOSB {
- short iosb$w_value;
- short iosb$w_count;
- long iosb$l_info;
- };
-#endif
-
-static void read_till_nl();
-static int read_pw();
-static void recsig();
-static void pushsig();
-static void popsig();
-#ifdef MSDOS
-static int noecho_fgets();
-#endif
-
-static void (*savsig[NSIG])();
-static jmp_buf save;
-
-int des_read_password(key,prompt,verify)
-des_cblock *key;
-char *prompt;
-int verify;
- {
- int ok;
- char buf[BUFSIZ],buff[BUFSIZ];
-
- if ((ok=read_pw(buf,buff,BUFSIZ,prompt,verify)) == 0)
- des_string_to_key(buf,key);
- bzero(buf,BUFSIZ);
- bzero(buff,BUFSIZ);
- return(ok);
- }
-
-int des_read_2passwords(key1,key2,prompt,verify)
-des_cblock *key1;
-des_cblock *key2;
-char *prompt;
-int verify;
- {
- int ok;
- char buf[BUFSIZ],buff[BUFSIZ];
-
- if ((ok=read_pw(buf,buff,BUFSIZ,prompt,verify)) == 0)
- des_string_to_2keys(buf,key1,key2);
- bzero(buf,BUFSIZ);
- bzero(buff,BUFSIZ);
- return(ok);
- }
-
-#if defined(BSD)
-int des_read_pw_string(buf, length, prompt, verify)
- char *buf;
- int length;
- char * prompt;
- int verify;
-{
- int len = MIN(_PASSWORD_LEN, length);
- char * s;
- int ok = 0;
-
- fflush(stdout);
- while (!ok) {
- s = getpass(prompt);
- strncpy(buf, s, len);
- if(verify) {
- printf("Verifying password\n"); fflush(stdout);
- if(strncmp(getpass(prompt), buf, len) != 0) {
- printf("\nVerify failure - try again\n");
- fflush(stdout);
- continue;
- }
- }
- ok = 1;
- buf[len-1] = '\0';
- }
- return (!ok);
-}
-
-#else /* BSD */
-
-int des_read_pw_string(buf,length,prompt,verify)
-char *buf;
-int length;
-char *prompt;
-int verify;
- {
- char buff[BUFSIZ];
- int ret;
-
- ret=read_pw(buf,buff,(length>BUFSIZ)?BUFSIZ:length,prompt,verify);
- bzero(buff,BUFSIZ);
- return(ret);
- }
-#endif
-
-static void read_till_nl(in)
-FILE *in;
- {
-#define SIZE 4
- char buf[SIZE+1];
-
- do {
- fgets(buf,SIZE,in);
- } while (index(buf,'\n') == NULL);
- }
-
-/* return 0 if ok, 1 (or -1) otherwise */
-static int read_pw(buf,buff,size,prompt,verify)
-char *buf,*buff;
-int size;
-char *prompt;
-int verify;
- {
-#ifndef VMS
-#ifndef MSDOS
- struct sgttyb tty_orig,tty_new;
-#endif /* !MSDOS */
-#else
- struct IOSB iosb;
- $DESCRIPTOR(terminal,"TT");
- long tty_orig[3], tty_new[3];
- long status;
- unsigned short channel = 0;
-#endif
- int ok=0;
- char *p;
- int ps=0;
- FILE *tty;
-
-#ifndef MSDOS
- if ((tty=fopen("/dev/tty","r")) == NULL)
- tty=stdin;
-#else /* MSDOS */
- if ((tty=fopen("con","r")) == NULL)
- tty=stdin;
-#endif /* MSDOS */
-#ifndef VMS
-#ifdef TIOCGETP
- if (ioctl(fileno(tty),TIOCGETP,(char *)&tty_orig) == -1)
- return(-1);
- bcopy(&(tty_orig),&(tty_new),sizeof(tty_orig));
-#endif
-#else /* VMS */
- status = SYS$ASSIGN(&terminal,&channel,0,0);
- if (status != SS$_NORMAL)
- return(-1);
- status=SYS$QIOW(0,channel,IO$_SENSEMODE,&iosb,0,0,tty_orig,12,0,0,0,0);
- if ((status != SS$_NORMAL) || (iosb.iosb$w_value != SS$_NORMAL))
- return(-1);
-#endif
-
- if (setjmp(save))
- {
- ok=0;
- goto error;
- }
- pushsig();
- ps=1;
-#ifndef VMS
-#ifndef MSDOS
- tty_new.sg_flags &= ~ECHO;
-#endif /* !MSDOS */
-#ifdef TIOCSETP
- if (ioctl(fileno(tty),TIOCSETP,(char *)&tty_new) == -1)
- return(-1);
-#endif
-#else /* VMS */
- tty_new[0] = tty_orig[0];
- tty_new[1] = tty_orig[1] | TT$M_NOECHO;
- tty_new[2] = tty_orig[2];
- status = SYS$QIOW(0,channel,IO$_SETMODE,&iosb,0,0,tty_new,12,0,0,0,0);
- if ((status != SS$_NORMAL) || (iosb.iosb$w_value != SS$_NORMAL))
- return(-1);
-#endif /* VMS */
- ps=2;
-
- fflush(stdout);
- fflush(stderr);
- while (!ok)
- {
- fputs(prompt,stderr);
- fflush(stderr);
-
- buf[0]='\0';
- fgets(buf,size,tty);
- if (feof(tty)) goto error;
- if ((p=(char *)index(buf,'\n')) != NULL)
- *p='\0';
- else read_till_nl(tty);
- if (verify)
- {
- fprintf(stderr,"\nVerifying password %s",prompt);
- fflush(stderr);
- buff[0]='\0';
- fgets(buff,size,tty);
- if (feof(tty)) goto error;
- if ((p=(char *)index(buff,'\n')) != NULL)
- *p='\0';
- else read_till_nl(tty);
-
- if (strcmp(buf,buff) != 0)
- {
- fprintf(stderr,"\nVerify failure - try again\n");
- fflush(stderr);
- continue;
- }
- }
- ok=1;
- }
-
-error:
- fprintf(stderr,"\n");
- /* What can we do if there is an error? */
-#ifndef VMS
-#ifdef TIOCSETP
- if (ps >= 2) ioctl(fileno(tty),TIOCSETP,(char *)&tty_orig);
-#endif
-#else /* VMS */
- if (ps >= 2)
- status = SYS$QIOW(0,channel,IO$_SETMODE,&iosb,0,0
- ,tty_orig,12,0,0,0,0);
-#endif /* VMS */
-
- if (ps >= 1) popsig();
- if (stdin != tty) fclose(tty);
-#ifdef VMS
- status = SYS$DASSGN(channel);
-#endif
- return(!ok);
- }
-
-static void pushsig()
- {
- int i;
-
- for (i=0; i<NSIG; i++)
- savsig[i]=signal(i,recsig);
- }
-
-static void popsig()
- {
- int i;
-
- for (i=0; i<NSIG; i++)
- signal(i,savsig[i]);
- }
-
-static void recsig()
- {
- longjmp(save,1);
- }
-
-#ifdef MSDOS
-static int noecho_fgets(buf,size,tty)
-char *buf;
-int size;
-FILE *tty;
- {
- int i;
- char *p;
-
- p=buf;
- for (;;)
- {
- if (size == 0)
- {
- *p='\0';
- break;
- }
- size--;
- i=getch();
- if (i == '\r') i='\n';
- *(p++)=i;
- if (i == '\n')
- {
- *p='\0';
- break;
- }
- }
- }
-#endif
diff --git a/eBones/des/set_key.c b/eBones/des/set_key.c
deleted file mode 100644
index 81dd4a30b925..000000000000
--- a/eBones/des/set_key.c
+++ /dev/null
@@ -1,190 +0,0 @@
-/* set_key.c */
-/* Copyright (C) 1993 Eric Young - see README for more details */
-/* set_key.c v 1.4 eay 24/9/91
- * 1.4 Speed up by 400% :-)
- * 1.3 added register declarations.
- * 1.2 unrolled make_key_sched a bit more
- * 1.1 added norm_expand_bits
- * 1.0 First working version
- */
-
-/*-
- * $Id: set_key.c,v 1.1.1.1 1994/09/30 14:49:51 csgr Exp $
- */
-
-#include "des_locl.h"
-#include "podd.h"
-#include "sk.h"
-
-static int check_parity();
-
-int des_check_key=0;
-
-void des_set_odd_parity(key)
-des_cblock *key;
- {
- int i;
-
- for (i=0; i<DES_KEY_SZ; i++)
- (*key)[i]=odd_parity[(*key)[i]];
- }
-
-static int check_parity(key)
-des_cblock *key;
- {
- int i;
-
- for (i=0; i<DES_KEY_SZ; i++)
- {
- if ((*key)[i] != odd_parity[(*key)[i]])
- return(0);
- }
- return(1);
- }
-
-/* Weak and semi week keys as take from
- * %A D.W. Davies
- * %A W.L. Price
- * %T Security for Computer Networks
- * %I John Wiley & Sons
- * %D 1984
- * Many thanks to smb@ulysses.att.com (Steven Bellovin) for the reference
- * (and actual cblock values).
- */
-#define NUM_WEAK_KEY 16
-static des_cblock weak_keys[NUM_WEAK_KEY]={
- /* weak keys */
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
- 0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,
- 0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,
- /* semi-weak keys */
- 0x01,0xFE,0x01,0xFE,0x01,0xFE,0x01,0xFE,
- 0xFE,0x01,0xFE,0x01,0xFE,0x01,0xFE,0x01,
- 0x1F,0xE0,0x1F,0xE0,0x0E,0xF1,0x0E,0xF1,
- 0xE0,0x1F,0xE0,0x1F,0xF1,0x0E,0xF1,0x0E,
- 0x01,0xE0,0x01,0xE0,0x01,0xF1,0x01,0xF1,
- 0xE0,0x01,0xE0,0x01,0xF1,0x01,0xF1,0x01,
- 0x1F,0xFE,0x1F,0xFE,0x0E,0xFE,0x0E,0xFE,
- 0xFE,0x1F,0xFE,0x1F,0xFE,0x0E,0xFE,0x0E,
- 0x01,0x1F,0x01,0x1F,0x01,0x0E,0x01,0x0E,
- 0x1F,0x01,0x1F,0x01,0x0E,0x01,0x0E,0x01,
- 0xE0,0xFE,0xE0,0xFE,0xF1,0xFE,0xF1,0xFE,
- 0xFE,0xE0,0xFE,0xE0,0xFE,0xF1,0xFE,0xF1};
-
-int des_is_weak_key(key)
-des_cblock *key;
- {
- int i;
-
- for (i=0; i<NUM_WEAK_KEY; i++)
- /* Added == 0 to comparision, I obviously don't run
- * this section very often :-(, thanks to
- * engineering@MorningStar.Com for the fix
- * eay 93/06/29 */
- if (memcmp(weak_keys[i],key,sizeof(key)) == 0) return(1);
- return(0);
- }
-
-/* NOW DEFINED IN des_local.h
- * See ecb_encrypt.c for a pseudo description of these macros.
- * #define PERM_OP(a,b,t,n,m) ((t)=((((a)>>(n))^(b))&(m)),\
- * (b)^=(t),\
- * (a)=((a)^((t)<<(n))))
- */
-
-#define HPERM_OP(a,t,n,m) ((t)=((((a)<<(16-(n)))^(a))&(m)),\
- (a)=(a)^(t)^(t>>(16-(n))))
-
-static char shifts2[16]={0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0};
-
-/* return 0 if key parity is odd (correct),
- * return -1 if key parity error,
- * return -2 if illegal weak key.
- */
-int des_set__key(key,schedule)
-des_cblock *key;
-des_key_schedule schedule;
- {
- register unsigned long c,d,t,s;
- register unsigned char *in;
- register unsigned long *k;
- register int i;
-
- if (des_check_key)
- {
- if (!check_parity(key))
- return(-1);
-
- if (des_is_weak_key(key))
- return(-2);
- }
-
- k=(unsigned long *)schedule;
- in=(unsigned char *)key;
-
- c2l(in,c);
- c2l(in,d);
-
- /* do PC1 in 60 simple operations */
-/* PERM_OP(d,c,t,4,0x0f0f0f0f);
- HPERM_OP(c,t,-2, 0xcccc0000);
- HPERM_OP(c,t,-1, 0xaaaa0000);
- HPERM_OP(c,t, 8, 0x00ff0000);
- HPERM_OP(c,t,-1, 0xaaaa0000);
- HPERM_OP(d,t,-8, 0xff000000);
- HPERM_OP(d,t, 8, 0x00ff0000);
- HPERM_OP(d,t, 2, 0x33330000);
- d=((d&0x00aa00aa)<<7)|((d&0x55005500)>>7)|(d&0xaa55aa55);
- d=(d>>8)|((c&0xf0000000)>>4);
- c&=0x0fffffff; */
-
- /* I now do it in 47 simple operations :-)
- * Thanks to John Fletcher (john_fletcher@lccmail.ocf.llnl.gov)
- * for the inspiration. :-) */
- PERM_OP (d,c,t,4,0x0f0f0f0f);
- HPERM_OP(c,t,-2,0xcccc0000);
- HPERM_OP(d,t,-2,0xcccc0000);
- PERM_OP (d,c,t,1,0x55555555);
- PERM_OP (c,d,t,8,0x00ff00ff);
- PERM_OP (d,c,t,1,0x55555555);
- d= (((d&0x000000ff)<<16)| (d&0x0000ff00) |
- ((d&0x00ff0000)>>16)|((c&0xf0000000)>>4));
- c&=0x0fffffff;
-
- for (i=0; i<ITERATIONS; i++)
- {
- if (shifts2[i])
- { c=((c>>2)|(c<<26)); d=((d>>2)|(d<<26)); }
- else
- { c=((c>>1)|(c<<27)); d=((d>>1)|(d<<27)); }
- c&=0x0fffffff;
- d&=0x0fffffff;
- /* could be a few less shifts but I am to lazy at this
- * point in time to investigate */
- s= des_skb[0][ (c )&0x3f ]|
- des_skb[1][((c>> 6)&0x03)|((c>> 7)&0x3c)]|
- des_skb[2][((c>>13)&0x0f)|((c>>14)&0x30)]|
- des_skb[3][((c>>20)&0x01)|((c>>21)&0x06) |
- ((c>>22)&0x38)];
- t= des_skb[4][ (d )&0x3f ]|
- des_skb[5][((d>> 7)&0x03)|((d>> 8)&0x3c)]|
- des_skb[6][ (d>>15)&0x3f ]|
- des_skb[7][((d>>21)&0x0f)|((d>>22)&0x30)];
-
- /* table contained 0213 4657 */
- *(k++)=((t<<16)|(s&0x0000ffff))&0xffffffff;
- s= ((s>>16)|(t&0xffff0000));
-
- s=(s<<4)|(s>>28);
- *(k++)=s&0xffffffff;
- }
- return(0);
- }
-
-int des_key_sched(key,schedule)
-des_cblock *key;
-des_key_schedule schedule;
- {
- return(des_set__key(key,schedule));
- }
diff --git a/eBones/des/str2key.c b/eBones/des/str2key.c
deleted file mode 100644
index baad3c27de55..000000000000
--- a/eBones/des/str2key.c
+++ /dev/null
@@ -1,121 +0,0 @@
-/* str2key.c */
-/* Copyright (C) 1993 Eric Young - see README for more details */
-
-/*-
- * $Id: str2key.c,v 1.2 1994/07/19 19:22:08 g89r4222 Exp $
- */
-
-#include "des_locl.h"
-
-extern int des_check_key;
-
-int des_string_to_key(str,key)
-char *str;
-des_cblock *key;
- {
- des_key_schedule ks;
- int i,length;
- register unsigned char j;
-
- bzero(key,8);
- length=strlen(str);
-#ifdef OLD_STR_TO_KEY
- for (i=0; i<length; i++)
- (*key)[i%8]^=(str[i]<<1);
-#else /* MIT COMPATIBLE */
- for (i=0; i<length; i++)
- {
- j=str[i];
- if ((i%16) < 8)
- (*key)[i%8]^=(j<<1);
- else
- {
- /* Reverse the bit order 05/05/92 eay */
- j=((j<<4)&0xf0)|((j>>4)&0x0f);
- j=((j<<2)&0xcc)|((j>>2)&0x33);
- j=((j<<1)&0xaa)|((j>>1)&0x55);
- (*key)[7-(i%8)]^=j;
- }
- }
-#endif
- des_set_odd_parity((des_cblock *)key);
- i=des_check_key;
- des_check_key=0;
- des_set__key((des_cblock *)key,ks);
- des_check_key=i;
- des_cbc_cksum((des_cblock *)str,(des_cblock *)key,(long)length,ks,
- (des_cblock *)key);
- bzero(ks,sizeof(ks));
- des_set_odd_parity((des_cblock *)key);
- return(0);
- }
-
-int des_string_to_2keys(str,key1,key2)
-char *str;
-des_cblock *key1,*key2;
- {
- des_key_schedule ks;
- int i,length;
- register unsigned char j;
-
- bzero(key1,8);
- bzero(key2,8);
- length=strlen(str);
-#ifdef OLD_STR_TO_KEY
- if (length <= 8)
- {
- for (i=0; i<length; i++)
- {
- (*key2)[i]=(*key1)[i]=(str[i]<<1);
- }
- }
- else
- {
- for (i=0; i<length; i++)
- {
- if ((i/8)&1)
- (*key2)[i%8]^=(str[i]<<1);
- else
- (*key1)[i%8]^=(str[i]<<1);
- }
- }
-#else /* MIT COMPATIBLE */
- for (i=0; i<length; i++)
- {
- j=str[i];
- if ((i%32) < 16)
- {
- if ((i%16) < 8)
- (*key1)[i%8]^=(j<<1);
- else
- (*key2)[i%8]^=(j<<1);
- }
- else
- {
- j=((j<<4)&0xf0)|((j>>4)&0x0f);
- j=((j<<2)&0xcc)|((j>>2)&0x33);
- j=((j<<1)&0xaa)|((j>>1)&0x55);
- if ((i%16) < 8)
- (*key1)[7-(i%8)]^=j;
- else
- (*key2)[7-(i%8)]^=j;
- }
- }
- if (length <= 8) bcopy(key1,key2,8);
-#endif
- des_set_odd_parity((des_cblock *)key1);
- des_set_odd_parity((des_cblock *)key2);
- i=des_check_key;
- des_check_key=0;
- des_set__key((des_cblock *)key1,ks);
- des_cbc_cksum((des_cblock *)str,(des_cblock *)key1,(long)length,ks,
- (des_cblock *)key1);
- des_set__key((des_cblock *)key2,ks);
- des_cbc_cksum((des_cblock *)str,(des_cblock *)key2,(long)length,ks,
- (des_cblock *)key2);
- des_check_key=i;
- bzero(ks,sizeof(ks));
- des_set_odd_parity(key1);
- des_set_odd_parity(key2);
- return(0);
- }
diff --git a/eBones/des/test/Makefile b/eBones/des/test/Makefile
deleted file mode 100644
index e636a3a0d115..000000000000
--- a/eBones/des/test/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-# from: @(#)Makefile 5.4 (Berkeley) 5/11/90
-# $Id: Makefile,v 1.2 1994/07/19 19:22:28 g89r4222 Exp $
-
-PROG= destest
-CFLAGS+= -I${.CURDIR}/../include
-DPADD= ${LIBDES}
-LDADD= -ldes
-
-.include <bsd.prog.mk>
diff --git a/eBones/des/test/destest.c b/eBones/des/test/destest.c
deleted file mode 100644
index c8b5f4baf387..000000000000
--- a/eBones/des/test/destest.c
+++ /dev/null
@@ -1,365 +0,0 @@
-/* destest.c */
-/* Copyright (C) 1993 Eric Young - see README for more details */
-#include <stdio.h>
-#include "des_locl.h" /* for des.h and bcopy macros */
-/* tisk tisk - the test keys don't all have odd parity :-( */
-
-/* test data */
-#define NUM_TESTS 34
-static unsigned char key_data[NUM_TESTS][8]={
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
- 0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
- 0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF,
- 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xFE,0xDC,0xBA,0x98,0x76,0x54,0x32,0x10,
- 0x7C,0xA1,0x10,0x45,0x4A,0x1A,0x6E,0x57,
- 0x01,0x31,0xD9,0x61,0x9D,0xC1,0x37,0x6E,
- 0x07,0xA1,0x13,0x3E,0x4A,0x0B,0x26,0x86,
- 0x38,0x49,0x67,0x4C,0x26,0x02,0x31,0x9E,
- 0x04,0xB9,0x15,0xBA,0x43,0xFE,0xB5,0xB6,
- 0x01,0x13,0xB9,0x70,0xFD,0x34,0xF2,0xCE,
- 0x01,0x70,0xF1,0x75,0x46,0x8F,0xB5,0xE6,
- 0x43,0x29,0x7F,0xAD,0x38,0xE3,0x73,0xFE,
- 0x07,0xA7,0x13,0x70,0x45,0xDA,0x2A,0x16,
- 0x04,0x68,0x91,0x04,0xC2,0xFD,0x3B,0x2F,
- 0x37,0xD0,0x6B,0xB5,0x16,0xCB,0x75,0x46,
- 0x1F,0x08,0x26,0x0D,0x1A,0xC2,0x46,0x5E,
- 0x58,0x40,0x23,0x64,0x1A,0xBA,0x61,0x76,
- 0x02,0x58,0x16,0x16,0x46,0x29,0xB0,0x07,
- 0x49,0x79,0x3E,0xBC,0x79,0xB3,0x25,0x8F,
- 0x4F,0xB0,0x5E,0x15,0x15,0xAB,0x73,0xA7,
- 0x49,0xE9,0x5D,0x6D,0x4C,0xA2,0x29,0xBF,
- 0x01,0x83,0x10,0xDC,0x40,0x9B,0x26,0xD6,
- 0x1C,0x58,0x7F,0x1C,0x13,0x92,0x4F,0xEF,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x1F,0x1F,0x1F,0x1F,0x0E,0x0E,0x0E,0x0E,
- 0xE0,0xFE,0xE0,0xFE,0xF1,0xFE,0xF1,0xFE,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
- 0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF,
- 0xFE,0xDC,0xBA,0x98,0x76,0x54,0x32,0x10};
-
-static unsigned char plain_data[NUM_TESTS][8]={
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
- 0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
- 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
- 0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF,
- 0x01,0xA1,0xD6,0xD0,0x39,0x77,0x67,0x42,
- 0x5C,0xD5,0x4C,0xA8,0x3D,0xEF,0x57,0xDA,
- 0x02,0x48,0xD4,0x38,0x06,0xF6,0x71,0x72,
- 0x51,0x45,0x4B,0x58,0x2D,0xDF,0x44,0x0A,
- 0x42,0xFD,0x44,0x30,0x59,0x57,0x7F,0xA2,
- 0x05,0x9B,0x5E,0x08,0x51,0xCF,0x14,0x3A,
- 0x07,0x56,0xD8,0xE0,0x77,0x47,0x61,0xD2,
- 0x76,0x25,0x14,0xB8,0x29,0xBF,0x48,0x6A,
- 0x3B,0xDD,0x11,0x90,0x49,0x37,0x28,0x02,
- 0x26,0x95,0x5F,0x68,0x35,0xAF,0x60,0x9A,
- 0x16,0x4D,0x5E,0x40,0x4F,0x27,0x52,0x32,
- 0x6B,0x05,0x6E,0x18,0x75,0x9F,0x5C,0xCA,
- 0x00,0x4B,0xD6,0xEF,0x09,0x17,0x60,0x62,
- 0x48,0x0D,0x39,0x00,0x6E,0xE7,0x62,0xF2,
- 0x43,0x75,0x40,0xC8,0x69,0x8F,0x3C,0xFA,
- 0x07,0x2D,0x43,0xA0,0x77,0x07,0x52,0x92,
- 0x02,0xFE,0x55,0x77,0x81,0x17,0xF1,0x2A,
- 0x1D,0x9D,0x5C,0x50,0x18,0xF7,0x28,0xC2,
- 0x30,0x55,0x32,0x28,0x6D,0x6F,0x29,0x5A,
- 0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF,
- 0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF,
- 0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF,
- 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};
-
-static unsigned char cipher_data[NUM_TESTS][8]={
- 0x8C,0xA6,0x4D,0xE9,0xC1,0xB1,0x23,0xA7,
- 0x73,0x59,0xB2,0x16,0x3E,0x4E,0xDC,0x58,
- 0x95,0x8E,0x6E,0x62,0x7A,0x05,0x55,0x7B,
- 0xF4,0x03,0x79,0xAB,0x9E,0x0E,0xC5,0x33,
- 0x17,0x66,0x8D,0xFC,0x72,0x92,0x53,0x2D,
- 0x8A,0x5A,0xE1,0xF8,0x1A,0xB8,0xF2,0xDD,
- 0x8C,0xA6,0x4D,0xE9,0xC1,0xB1,0x23,0xA7,
- 0xED,0x39,0xD9,0x50,0xFA,0x74,0xBC,0xC4,
- 0x69,0x0F,0x5B,0x0D,0x9A,0x26,0x93,0x9B,
- 0x7A,0x38,0x9D,0x10,0x35,0x4B,0xD2,0x71,
- 0x86,0x8E,0xBB,0x51,0xCA,0xB4,0x59,0x9A,
- 0x71,0x78,0x87,0x6E,0x01,0xF1,0x9B,0x2A,
- 0xAF,0x37,0xFB,0x42,0x1F,0x8C,0x40,0x95,
- 0x86,0xA5,0x60,0xF1,0x0E,0xC6,0xD8,0x5B,
- 0x0C,0xD3,0xDA,0x02,0x00,0x21,0xDC,0x09,
- 0xEA,0x67,0x6B,0x2C,0xB7,0xDB,0x2B,0x7A,
- 0xDF,0xD6,0x4A,0x81,0x5C,0xAF,0x1A,0x0F,
- 0x5C,0x51,0x3C,0x9C,0x48,0x86,0xC0,0x88,
- 0x0A,0x2A,0xEE,0xAE,0x3F,0xF4,0xAB,0x77,
- 0xEF,0x1B,0xF0,0x3E,0x5D,0xFA,0x57,0x5A,
- 0x88,0xBF,0x0D,0xB6,0xD7,0x0D,0xEE,0x56,
- 0xA1,0xF9,0x91,0x55,0x41,0x02,0x0B,0x56,
- 0x6F,0xBF,0x1C,0xAF,0xCF,0xFD,0x05,0x56,
- 0x2F,0x22,0xE4,0x9B,0xAB,0x7C,0xA1,0xAC,
- 0x5A,0x6B,0x61,0x2C,0xC2,0x6C,0xCE,0x4A,
- 0x5F,0x4C,0x03,0x8E,0xD1,0x2B,0x2E,0x41,
- 0x63,0xFA,0xC0,0xD0,0x34,0xD9,0xF7,0x93,
- 0x61,0x7B,0x3A,0x0C,0xE8,0xF0,0x71,0x00,
- 0xDB,0x95,0x86,0x05,0xF8,0xC8,0xC6,0x06,
- 0xED,0xBF,0xD1,0xC6,0x6C,0x29,0xCC,0xC7,
- 0x35,0x55,0x50,0xB2,0x15,0x0E,0x24,0x51,
- 0xCA,0xAA,0xAF,0x4D,0xEA,0xF1,0xDB,0xAE,
- 0xD5,0xD4,0x4F,0xF7,0x20,0x68,0x3D,0x0D,
- 0x2A,0x2B,0xB0,0x08,0xDF,0x97,0xC2,0xF2};
-
-static unsigned char cbc_key[8]={0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef};
-static unsigned char cbc_iv[8]={0xfe,0xdc,0xba,0x98,0x76,0x54,0x32,0x10};
-static unsigned char cbc_data[40]="7654321 Now is the time for ";
-
-static unsigned char cbc_ok[32]={
- 0xcc,0xd1,0x73,0xff,0xab,0x20,0x39,0xf4,
- 0xac,0xd8,0xae,0xfd,0xdf,0xd8,0xa1,0xeb,
- 0x46,0x8e,0x91,0x15,0x78,0x88,0xba,0x68,
- 0x1d,0x26,0x93,0x97,0xf7,0xfe,0x62,0xb4};
-
-static unsigned char pcbc_ok[32]={
- 0xcc,0xd1,0x73,0xff,0xab,0x20,0x39,0xf4,
- 0x6d,0xec,0xb4,0x70,0xa0,0xe5,0x6b,0x15,
- 0xae,0xa6,0xbf,0x61,0xed,0x7d,0x9c,0x9f,
- 0xf7,0x17,0x46,0x3b,0x8a,0xb3,0xcc,0x88};
-
-static unsigned char cksum_ok[8]={
- 0x1d,0x26,0x93,0x97,0xf7,0xfe,0x62,0xb4};
-
-static unsigned char cfb_key[8]={0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef};
-static unsigned char cfb_iv[8]={0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef};
-static unsigned char cfb_buf1[24],cfb_buf2[24],cfb_tmp[8];
-static unsigned char cfb_plain[24]=
- {
- 0x4e,0x6f,0x77,0x20,0x69,0x73,
- 0x20,0x74,0x68,0x65,0x20,0x74,
- 0x69,0x6d,0x65,0x20,0x66,0x6f,
- 0x72,0x20,0x61,0x6c,0x6c,0x20
- };
-static unsigned char cfb_cipher[24]=
- {
- 0xf3,0x1f,0xda,0x07,0x01,0x14,
- 0x62,0xee,0x18,0x7f,0x43,0xd8,
- 0x0a,0x7c,0xd9,0xb5,0xb0,0xd2,
- 0x90,0xda,0x6e,0x5b,0x9a,0x87
- };
-
-static unsigned char ofb_key[8]={0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef};
-static unsigned char ofb_iv[8]={0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef};
-static unsigned char ofb_plain[24]=
- {
- 0x4e,0x6f,0x77,0x20,0x69,0x73,
- 0x20,0x74,0x68,0x65,0x20,0x74,
- 0x69,0x6d,0x65,0x20,0x66,0x6f,
- 0x72,0x20,0x61,0x6c,0x6c,0x20
- };
-static unsigned char ofb_buf1[24],ofb_buf2[24],ofb_tmp[8];
-static unsigned char ofb_cipher[24]=
- {
- 0xf3,0x09,0x62,0x49,0xc7,0xf4,0x6e,0x51,
- 0x35,0xf2,0x4a,0x24,0x2e,0xeb,0x3d,0x3f,
- 0x3d,0x6d,0x5b,0xe3,0x25,0x5a,0xf8,0xc3
- };
-
-char *malloc();
-char *pt();
-
-main()
- {
- int i,j;
- des_cblock in,out,outin;
- des_key_schedule ks;
- unsigned char cbc_in[40],cbc_out[40];
- unsigned long cs;
- unsigned char qret[4][4];
- unsigned long lqret[4];
- char *str;
-
- printf("Doing ecb\n");
- for (i=0; i<NUM_TESTS; i++)
- {
- if ((j=key_sched((C_Block *)(key_data[i]),ks)) != 0)
- printf("Key error %2d:%d\n",i+1,j);
- bcopy(plain_data[i],in,8);
- bzero(out,8);
- bzero(outin,8);
- des_ecb_encrypt((C_Block *)in,(C_Block *)out,ks,DES_ENCRYPT);
- des_ecb_encrypt((C_Block *)out,(C_Block *)outin,ks,DES_DECRYPT);
-
- if (bcmp(out,cipher_data[i],8) != 0)
- {
- printf("Encryption error %2d\nk=%s p=%s o=%s act=%s\n",
- i+1,pt(key_data[i]),pt(in),pt(cipher_data[i]),
- pt(out));
- }
- if (bcmp(in,outin,8) != 0)
- {
- printf("Decryption error %2d\nk=%s p=%s o=%s act=%s\n",
- i+1,pt(key_data[i]),pt(out),pt(in),pt(outin));
- }
- }
-
- printf("Doing cbc\n");
- if ((j=key_sched((C_Block *)cbc_key,ks)) != 0)
- printf("Key error %2d:%d\n",i+1,j);
- bzero(cbc_out,40);
- bzero(cbc_in,40);
- des_cbc_encrypt((C_Block *)cbc_data,(C_Block *)cbc_out,
- (long)strlen(cbc_data),ks,(C_Block *)cbc_iv,DES_ENCRYPT);
- if (bcmp(cbc_out,cbc_ok,32) != 0)
- printf("cbc_encrypt encrypt error\n");
- des_cbc_encrypt((C_Block *)cbc_out,(C_Block *)cbc_in,
- (long)strlen(cbc_data),ks,(C_Block *)cbc_iv,DES_DECRYPT);
- if (bcmp(cbc_in,cbc_data,32) != 0)
- printf("cbc_encrypt decrypt error\n");
-
- printf("Doing pcbc\n");
- if ((j=key_sched((C_Block *)cbc_key,ks)) != 0)
- printf("Key error %2d:%d\n",i+1,j);
- bzero(cbc_out,40);
- bzero(cbc_in,40);
- des_pcbc_encrypt((C_Block *)cbc_data,(C_Block *)cbc_out,
- (long)strlen(cbc_data),ks,(C_Block *)cbc_iv,DES_ENCRYPT);
- if (bcmp(cbc_out,pcbc_ok,32) != 0)
- printf("pcbc_encrypt encrypt error\n");
- des_pcbc_encrypt((C_Block *)cbc_out,(C_Block *)cbc_in,
- (long)strlen(cbc_data),ks,(C_Block *)cbc_iv,DES_DECRYPT);
- if (bcmp(cbc_in,cbc_data,32) != 0)
- printf("pcbc_encrypt decrypt error\n");
-
- printf("Doing cfb\n");
- key_sched((C_Block *)cfb_key,ks);
- bcopy(cfb_iv,cfb_tmp,sizeof(cfb_iv));
- des_cfb_encrypt(cfb_plain,cfb_buf1,8,(long)sizeof(cfb_plain),ks,
- (C_Block *)cfb_tmp,DES_ENCRYPT);
- if (bcmp(cfb_cipher,cfb_buf1,sizeof(cfb_buf1)) != 0)
- printf("cfb_encrypt encrypt error\n");
- bcopy(cfb_iv,cfb_tmp,sizeof(cfb_iv));
- des_cfb_encrypt(cfb_buf1,cfb_buf2,8,(long)sizeof(cfb_buf1),ks,
- (C_Block *)cfb_tmp,DES_DECRYPT);
- if (bcmp(cfb_plain,cfb_buf2,sizeof(cfb_buf2)) != 0)
- printf("cfb_encrypt decrypt error\n");
-
- bcopy(cfb_iv,cfb_tmp,sizeof(cfb_iv));
- for (i=0; i<sizeof(cfb_plain); i++)
- des_cfb_encrypt(&(cfb_plain[i]),&(cfb_buf1[i]),
- 8,(long)1,ks,(C_Block *)cfb_tmp,DES_ENCRYPT);
- if (bcmp(cfb_cipher,cfb_buf1,sizeof(cfb_buf1)) != 0)
- printf("cfb_encrypt small encrypt error\n");
-
- bcopy(cfb_iv,cfb_tmp,sizeof(cfb_iv));
- for (i=0; i<sizeof(cfb_plain); i++)
- des_cfb_encrypt(&(cfb_buf1[i]),&(cfb_buf2[i]),
- 8,(long)1,ks,(C_Block *)cfb_tmp,DES_DECRYPT);
- if (bcmp(cfb_plain,cfb_buf2,sizeof(cfb_buf2)) != 0)
- printf("cfb_encrypt small decrypt error\n");
-
- printf("Doing ofb\n");
- key_sched((C_Block *)ofb_key,ks);
- bcopy(ofb_iv,ofb_tmp,sizeof(ofb_iv));
- des_ofb_encrypt(ofb_plain,ofb_buf1,64,(long)sizeof(cfb_plain)/8,ks,
- (C_Block *)ofb_tmp);
- if (bcmp(ofb_cipher,ofb_buf1,sizeof(ofb_buf1)) != 0)
- printf("ofb_encrypt encrypt error\n");
- bcopy(ofb_iv,ofb_tmp,sizeof(ofb_iv));
- des_ofb_encrypt(ofb_buf1,ofb_buf2,64,(long)sizeof(ofb_buf1)/8,ks,
- (C_Block *)ofb_tmp);
- if (bcmp(ofb_plain,ofb_buf2,sizeof(ofb_buf2)) != 0)
- printf("ofb_encrypt decrypt error\n");
-
- printf("Doing cbc_cksum\n");
- des_cbc_cksum((C_Block *)cbc_data,(C_Block *)cbc_out,
- (long)strlen(cbc_data),ks,(C_Block *)cbc_iv);
- if (bcmp(cbc_out,cksum_ok,8) != 0)
- printf("cbc_cksum error\n");
-
- printf("Doing quad_cksum\n");
- cs=quad_cksum((C_Block *)cbc_data,(C_Block *)qret,
- (long)strlen(cbc_data),2,(C_Block *)cbc_iv);
- for (i=0; i<4; i++)
- {
- lqret[i]=0;
- bcopy(&(qret[i][0]),&(lqret[i]),4);
- }
- { /* Big-endian fix */
- static unsigned long l=1;
- static unsigned char *c=(unsigned char *)&l;
- unsigned long ll;
-
- if (!c[0])
- {
- ll=lqret[0]^lqret[3];
- lqret[0]^=ll;
- lqret[3]^=ll;
- ll=lqret[1]^lqret[2];
- lqret[1]^=ll;
- lqret[2]^=ll;
- }
- }
- if (cs != 0x70d7a63a)
- printf("quad_cksum error, ret %08x should be 70d7a63a\n",cs);
- if (lqret[0] != 0x327eba8d)
- printf("quad_cksum error, out[0] %08x is not %08x\n",
- lqret[0],0x327eba8d);
- if (lqret[1] != 0x201a49cc)
- printf("quad_cksum error, out[1] %08x is not %08x\n",
- lqret[1],0x201a49cc);
- if (lqret[2] != 0x70d7a63a)
- printf("quad_cksum error, out[2] %08x is not %08x\n",
- lqret[2],0x70d7a63a);
- if (lqret[3] != 0x501c2c26)
- printf("quad_cksum error, out[3] %08x is not %08x\n",
- lqret[3],0x501c2c26);
-
- printf("input word alignment test");
- for (i=0; i<4; i++)
- {
- printf(" %d",i);
- des_cbc_encrypt((C_Block *)&(cbc_out[i]),(C_Block *)cbc_in,
- (long)strlen(cbc_data),ks,(C_Block *)cbc_iv,
- DES_ENCRYPT);
- }
- printf("\noutput word alignment test");
- for (i=0; i<4; i++)
- {
- printf(" %d",i);
- des_cbc_encrypt((C_Block *)cbc_out,(C_Block *)&(cbc_in[i]),
- (long)strlen(cbc_data),ks,(C_Block *)cbc_iv,
- DES_ENCRYPT);
- }
- printf("\n");
- printf("fast crypt test ");
- str=crypt("testing","ef");
- if (strcmp("efGnQx2725bI2",str) != 0)
- printf("fast crypt error, %x should be efGnQx2725bI2\n",str);
- str=crypt("bca76;23","yA");
- if (strcmp("yA1Rp/1hZXIJk",str) != 0)
- printf("fast crypt error, %x should be yA1Rp/1hZXIJk\n",str);
- printf("\n");
- exit(0);
- }
-
-char *pt(p)
-unsigned char *p;
- {
- char *ret;
- int i;
- static char *f="0123456789ABCDEF";
-
- ret=(char *)malloc(17);
- for (i=0; i<8; i++)
- {
- ret[i*2]=f[(p[i]>>4)&0xf];
- ret[i*2+1]=f[p[i]&0xf];
- }
- ret[16]='\0';
- return(ret);
- }
-
diff --git a/eBones/include/ChangeLog b/eBones/include/ChangeLog
deleted file mode 100644
index 77bc7552a42f..000000000000
--- a/eBones/include/ChangeLog
+++ /dev/null
@@ -1,25 +0,0 @@
-# $Id: ChangeLog,v 1.3 1995/07/18 16:35:58 mark Exp $
-
-Mon Mar 21 15:48:59 MET 1994 Piero Serini
- * 1st port to FreeBSD
-
-Tue Nov 29 11:52:51 1988 John T Kohl (jtkohl at lycus)
-
- * osconf.h: add #ifdef's for SUN processors (bsd/m68k)
-
- * conf-bsdm68k.h: new file for BSD unix/M68000-based unix boxes
-
-Mon Sep 12 14:33:58 1988 Bill Sommerfeld (wesommer at ra)
-
- * des_conf.h: deleted file (superceded by conf.h)
-
- * des.h: remove #include of des_conf.h
-
- * des.h: remove internal details (sbox structure, bit_{32,64}) from
-interface.
- Rename data types.
- Add #defines, turned off if NCOMPAT, for compatibility with old
- versions.
-
-
-
diff --git a/eBones/include/Makefile b/eBones/include/Makefile
deleted file mode 100644
index 0e95002dd3a7..000000000000
--- a/eBones/include/Makefile
+++ /dev/null
@@ -1,19 +0,0 @@
-# from: @(#)Makefile 5.1 (Berkeley) 6/25/90
-# $Id: Makefile,v 1.4 1995/09/13 17:23:44 markm Exp $
-
-FILES= kparse.h krb.h krb_db.h des.h
-
-# mit-copyright.h kadm_err.h krb_err.h
-
-NOOBJ= noobj
-NOMAN= noman
-
-all include clean cleandir depend lint tags:
-
-beforeinstall:
- -cd ${.CURDIR}; for file in ${FILES}; do \
- cmp -s $$file ${DESTDIR}/usr/include/kerberosIV/$$file || \
- install -c -o ${BINOWN} -g ${BINGRP} -m 444 $$file \
- ${DESTDIR}/usr/include/kerberosIV; done
-
-.include <bsd.prog.mk>
diff --git a/eBones/include/addr_comp.h b/eBones/include/addr_comp.h
deleted file mode 100644
index 2421bc683de5..000000000000
--- a/eBones/include/addr_comp.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright 1987, 1988, 1989 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * Include file for address comparison macros.
- *
- * from: addr_comp.h,v 4.0 89/01/23 09:57:44 jtkohl Exp $
- * $Id: addr_comp.h,v 1.3 1995/07/18 16:36:01 mark Exp $
- */
-
-#ifndef ADDR_COMP_DEFS
-#define ADDR_COMP_DEFS
-
-/*
-** Look boys and girls, a big kludge
-** We need to compare the two internet addresses in network byte order, not
-** local byte order. This is a *really really slow way of doing that*
-** But.....
-** .....it works
-** so we run with it
-**
-** long_less_than gets fed two (u_char *)'s....
-*/
-
-#define u_char_comp(x,y) \
- (((x)>(y))?(1):(((x)==(y))?(0):(-1)))
-
-#define long_less_than(x,y) \
- (u_char_comp((x)[0],(y)[0])?u_char_comp((x)[0],(y)[0]): \
- (u_char_comp((x)[1],(y)[1])?u_char_comp((x)[1],(y)[1]): \
- (u_char_comp((x)[2],(y)[2])?u_char_comp((x)[2],(y)[2]): \
- (u_char_comp((x)[3],(y)[3])))))
-
-#endif /* ADDR_COMP_DEFS */
diff --git a/eBones/include/admin_server.h b/eBones/include/admin_server.h
deleted file mode 100644
index ca0977da63b2..000000000000
--- a/eBones/include/admin_server.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 1987, 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * Include file for the Kerberos administration server.
- *
- * from: admin_server.h,v 4.7 89/01/11 11:59:42 steiner Exp $
- * $Id: admin_server.h,v 1.3 1995/07/18 16:36:03 mark Exp $
- */
-
-#ifndef ADMIN_SERVER_DEFS
-#define ADMIN_SERVER_DEFS
-
-#define PW_SRV_VERSION 2 /* version number */
-
-#define INSTALL_NEW_PW (1<<0) /*
- * ver, cmd, name, password,
- * old_pass, crypt_pass, uid
- */
-
-#define ADMIN_NEW_PW (2<<1) /*
- * ver, cmd, name, passwd,
- * old_pass
- * (grot), crypt_pass (grot)
- */
-
-#define ADMIN_SET_KDC_PASSWORD (3<<1) /* ditto */
-#define ADMIN_ADD_NEW_KEY (4<<1) /* ditto */
-#define ADMIN_ADD_NEW_KEY_ATTR (5<<1) /*
- * ver, cmd, name, passwd,
- * inst, attr (grot)
- */
-#define INSTALL_REPLY (1<<1) /* ver, cmd, name, password */
-#define RETRY_LIMIT 1
-#define TIME_OUT 30
-#define USER_TIMEOUT 90
-#define MAX_KPW_LEN 40
-
-#define KADM "changepw" /* service name */
-
-#endif /* ADMIN_SERVER_DEFS */
diff --git a/eBones/include/conf-bsd386i.h b/eBones/include/conf-bsd386i.h
deleted file mode 100644
index a009450d70e0..000000000000
--- a/eBones/include/conf-bsd386i.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * Copyright 1989 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * Machine-type definitions: Sun 386i using SunOS (~BSD)
- *
- * from: conf-bsd386i.h,v 4.0 89/12/19 13:26:55 jtkohl Exp $
- * $Id: conf-bsd386i.h,v 1.3 1995/07/18 16:36:05 mark Exp $
- */
-
-#define BITS32
-#define BIG
-#define LSBFIRST
-#define BSDUNIX
-
diff --git a/eBones/include/conf-bsdapollo.h b/eBones/include/conf-bsdapollo.h
deleted file mode 100644
index 12dc5806c8e5..000000000000
--- a/eBones/include/conf-bsdapollo.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: conf-bsdapollo.h,v 4.1 89/01/24 14:26:22 jtkohl Exp $
- * $Id: conf-bsdapollo.h,v 1.3 1995/07/18 16:36:06 mark Exp $
- */
-
-#define BSDUNIX
-#define BITS32
-#define BIG
-#define MSBFIRST
-#define DES_SHIFT_SHIFT
-/*
- * As of SR10, the C compiler claims to be __STDC__, but doesn't support
- * const. Sigh.
- */
-#define const
-
-
diff --git a/eBones/include/conf-bsdibm032.h b/eBones/include/conf-bsdibm032.h
deleted file mode 100644
index 8331498e55dc..000000000000
--- a/eBones/include/conf-bsdibm032.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * Machine-type definitions: IBM 032 (RT/PC)
- *
- * from: conf-bsdibm032.h,v 4.0 89/01/23 09:58:01 jtkohl Exp $
- * $Id: conf-bsdibm032.h,v 1.3 1995/07/18 16:36:08 mark Exp $
- */
-
-#define BSDUNIX
-#define IBMWS
-#define IBMWSASM
-#define BITS32
-#define BIG
-#define MSBFIRST
-#define MUSTALIGN
diff --git a/eBones/include/conf-bsdm68k.h b/eBones/include/conf-bsdm68k.h
deleted file mode 100644
index 9e60e060e509..000000000000
--- a/eBones/include/conf-bsdm68k.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * Machine-type definitions: 68000 with BSD Unix, e.g. SUN
- *
- * from: conf-bsdm68k.h,v 4.0 88/11/29 11:46:58 jtkohl Exp $
- * $Id: conf-bsdm68k.h,v 1.3 1995/07/18 16:36:10 mark Exp $
- */
-
-#define BITS32
-#define BIG
-#define MSBFIRST
-#define BSDUNIX
-
diff --git a/eBones/include/conf-bsdsparc.h b/eBones/include/conf-bsdsparc.h
deleted file mode 100644
index 7359aec78ec3..000000000000
--- a/eBones/include/conf-bsdsparc.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * Machine-type definitions: SPARC with BSD Unix, e.g. SUN-4
- *
- * from: conf-bsdsparc.h,v 4.0 89/06/02 13:04:06 jtkohl Exp $
- * $Id: conf-bsdsparc.h,v 1.3 1995/07/18 16:36:12 mark Exp $
- */
-
-#define BITS32
-#define BIG
-#define MSBFIRST
-#define BSDUNIX
-#define MUSTALIGN
-
diff --git a/eBones/include/conf-bsdtahoe.h b/eBones/include/conf-bsdtahoe.h
deleted file mode 100644
index fa8c462cf3af..000000000000
--- a/eBones/include/conf-bsdtahoe.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * Copyright 1989 by the Regents of the University of California
- *
- * Machine Description : TAHOE.
- *
- * from: conf-bsdtahoe.h,v 4.0 89/08/30 11:06:53 jtkohl Exp $
- * $Id: conf-bsdtahoe.h,v 1.3 1995/07/18 16:36:14 mark Exp $
- */
-
-#define TAHOE
-#define BSDUNIX
-#define BITS32
-#define BIG
-#define MSBFIRST
-#define MUSTALIGN
-#define NOASM
diff --git a/eBones/include/conf-bsdvax.h b/eBones/include/conf-bsdvax.h
deleted file mode 100644
index ef0c05228fc0..000000000000
--- a/eBones/include/conf-bsdvax.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * Machine-type definitions: VAX
- *
- * from: conf-bsdvax.h,v 4.0 89/01/23 09:58:12 jtkohl Exp $
- * $Id: conf-bsdvax.h,v 1.3 1995/07/18 16:36:15 mark Exp $
- */
-
-#define VAX
-#define BITS32
-#define BIG
-#define LSBFIRST
-#define BSDUNIX
-
-#ifndef __STDC__
-#ifndef NOASM
-#define VAXASM
-#endif /* no assembly */
-#endif /* standard C */
diff --git a/eBones/include/conf-ibm370.h b/eBones/include/conf-ibm370.h
deleted file mode 100644
index 7b8b504ba4de..000000000000
--- a/eBones/include/conf-ibm370.h
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * Machine-type definitions: IBM 370
- *
- * from: conf-ibm370.h,v 4.0 89/01/23 09:58:19 jtkohl Exp $
- * $Id: conf-ibm370.h,v 1.3 1995/07/18 16:36:17 mark Exp $
- */
-
-/* What else? */
-#define BIG
-#define NONASCII
-#define SHORTNAMES
diff --git a/eBones/include/conf-pc.h b/eBones/include/conf-pc.h
deleted file mode 100644
index 4b633ffdba33..000000000000
--- a/eBones/include/conf-pc.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * Machine-type definitions: IBM PC 8086
- *
- * from: conf-pc.h,v 4.0 89/01/23 09:58:26 jtkohl Exp $
- * $Id: conf-pc.h,v 1.3 1995/07/18 16:36:19 mark Exp $
- *
- */
-
-#define IBMPC
-#define BITS16
-#define CROSSMSDOS
-#define LSBFIRST
diff --git a/eBones/include/conf-pyr.h b/eBones/include/conf-pyr.h
deleted file mode 100644
index f47c2155031f..000000000000
--- a/eBones/include/conf-pyr.h
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * Copyright 1989 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * Machine-type definitions: Pyramid
- *
- * from: conf-pyr.h,v 4.0 89/12/19 13:27:16 jtkohl Exp $
- * $Id: conf-pyr.h,v 1.3 1995/07/18 16:36:20 mark Exp $
- */
-
-#define BITS32
-#define BIG
-#define MSBFIRST
-#define BSDUNIX
diff --git a/eBones/include/conf-ultmips2.h b/eBones/include/conf-ultmips2.h
deleted file mode 100644
index 9733090aa2aa..000000000000
--- a/eBones/include/conf-ultmips2.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * Machine-type definitions: DECstation 3100 (MIPS R2000)
- *
- * from: conf-ultmips2.h,v 4.0 89/01/23 09:58:32 jtkohl Exp $
- * $Id: conf-ultmips2.h,v 1.3 1995/07/18 16:36:22 mark Exp $
- */
-
-#define MIPS2
-#define BITS32
-#define BIG
-#define LSBFIRST
-#define BSDUNIX
-#define MUSTALIGN
diff --git a/eBones/include/conf.h b/eBones/include/conf.h
deleted file mode 100644
index 64797e6bdfc4..000000000000
--- a/eBones/include/conf.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * Configuration info for operating system, hardware description,
- * language implementation, C library, etc.
- *
- * This file should be included in (almost) every file in the Kerberos
- * sources, and probably should *not* be needed outside of those
- * sources. (How do we deal with /usr/include/des.h and
- * /usr/include/krb.h?)
- *
- * from: conf.h,v 4.0 89/01/23 09:58:40 jtkohl Exp $
- * $Id: conf.h,v 1.3 1995/07/18 16:36:24 mark Exp $
- */
-
-#ifndef _CONF_H_
-
-#include "osconf.h"
-
-#ifdef SHORTNAMES
-#include "names.h"
-#endif
-
-/*
- * Language implementation-specific definitions
- */
-
-/* special cases */
-#ifdef __HIGHC__
-/* broken implementation of ANSI C */
-#undef __STDC__
-#endif
-
-#ifndef __STDC__
-#define const
-#define volatile
-#define signed
-typedef char *pointer; /* pointer to generic data */
-#define PROTOTYPE(p) ()
-#else
-typedef void *pointer;
-#define PROTOTYPE(p) p
-#endif
-
-/* Does your compiler understand "void"? */
-#ifdef notdef
-#define void int
-#endif
-
-/*
- * A few checks to see that necessary definitions are included.
- */
-
-/* byte order */
-
-#ifndef MSBFIRST
-#ifndef LSBFIRST
-Error: byte order not defined.
-#endif
-#endif
-
-/* machine size */
-#ifndef BITS16
-#ifndef BITS32
-Error: how big is this machine anyways?
-#endif
-#endif
-
-/* end of checks */
-
-#endif /* _CONF_H_ */
diff --git a/eBones/include/des.h b/eBones/include/des.h
deleted file mode 100644
index 7a44374b428b..000000000000
--- a/eBones/include/des.h
+++ /dev/null
@@ -1,181 +0,0 @@
-/* des.h */
-/* Copyright (C) 1995 Eric Young (eay@mincom.oz.au).
- * All rights reserved.
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * See the COPYRIGHT file in the libdes distribution for more details.
- */
-
-#ifndef HEADER_DES_H
-#define HEADER_DES_H
-
-#include <stdio.h>
-
-typedef unsigned char des_cblock[8];
-typedef struct des_ks_struct { des_cblock _; } des_key_schedule[16];
-
-#define DES_KEY_SZ (sizeof(des_cblock))
-#define DES_SCHEDULE_SZ (sizeof(des_key_schedule))
-
-#define DES_ENCRYPT 1
-#define DES_DECRYPT 0
-
-#define DES_CBC_MODE 0
-#define DES_PCBC_MODE 1
-
-#define C_Block des_cblock
-#define Key_schedule des_key_schedule
-#define ENCRYPT DES_ENCRYPT
-#define DECRYPT DES_DECRYPT
-#define KEY_SZ DES_KEY_SZ
-#define string_to_key des_string_to_key
-#define read_pw_string des_read_pw_string
-#define random_key des_random_key
-#define pcbc_encrypt des_pcbc_encrypt
-#define set_key des_set_key
-#define key_sched des_key_sched
-#define ecb_encrypt des_ecb_encrypt
-#define cbc_encrypt des_cbc_encrypt
-#define ncbc_encrypt des_ncbc_encrypt
-#define cbc_cksum des_cbc_cksum
-#define quad_cksum des_quad_cksum
-
-/* For compatibility with the MIT lib - eay 20/05/92 */
-typedef struct des_ks_struct bit_64;
-#define des_fixup_key_parity des_set_odd_parity
-#define des_check_key_parity check_parity
-
-extern int des_check_key; /* defaults to false */
-extern int des_rw_mode; /* defaults to DES_PCBC_MODE */
-
-/* The next line is used to disable full ANSI prototypes, if your
- * compiler has problems with the prototypes, make sure this line always
- * evaluates to true :-) */
-#if defined(MSDOS) && defined(__STDC__)
-#undef PROTO
-#define PROTO
-#endif
-
-/* markm - dirty hack */
-#define PROTO
-
-#ifdef PROTO
-int des_2ecb_encrypt(des_cblock *input,des_cblock *output,
- des_key_schedule ks1,des_key_schedule ks2,int enc);
-int des_3ecb_encrypt(des_cblock *input,des_cblock *output,
- des_key_schedule ks1,des_key_schedule ks2, int enc);
-unsigned long des_cbc_cksum(des_cblock *input,des_cblock *output,
- long length,des_key_schedule schedule,des_cblock *ivec);
-int des_cbc_encrypt(des_cblock *input,des_cblock *output,long length,
- des_key_schedule schedule,des_cblock *ivec,int enc);
-int des_ncbc_encrypt(des_cblock *input,des_cblock *output,long length,
- des_key_schedule schedule,des_cblock *ivec,int enc);
-int des_3cbc_encrypt(des_cblock *input,des_cblock *output,long length,
- des_key_schedule sk1,des_key_schedule sk2,
- des_cblock *ivec1,des_cblock *ivec2,int enc);
-int des_cfb_encrypt(unsigned char *in,unsigned char *out,int numbits,
- long length,des_key_schedule schedule,des_cblock *ivec,int enc);
-int des_ecb_encrypt(des_cblock *input,des_cblock *output,
- des_key_schedule ks,int enc);
-int des_encrypt(unsigned long *input,unsigned long *output,
- des_key_schedule ks, int enc);
-int des_encrypt2(unsigned long *input,unsigned long *output,
- des_key_schedule ks, int enc);
-int des_ede3_cbc_encrypt(des_cblock *input, des_cblock *output,
- long length, des_key_schedule ks1, des_key_schedule ks2,
- des_key_schedule ks3, des_cblock *ivec, int enc);
-int des_ede2_cbc_encrypt(des_cblock *input, des_cblock *output,
- long length, des_key_schedule ks1, des_key_schedule ks2,
- des_cblock *ivec, int enc);
-int des_enc_read(int fd,char *buf,int len,des_key_schedule sched,
- des_cblock *iv);
-int des_enc_write(int fd,char *buf,int len,des_key_schedule sched,
- des_cblock *iv);
-#if 0
-#ifdef PERL5
-char *des_crypt(const char *buf,const char *salt);
-#else
-/* some stupid compilers complain because I have declared char instead
- * of const char */
-#ifdef HEADER_DES_LOCL_H
-char *crypt(const char *buf,const char *salt);
-#else
-char *crypt();
-#endif /* HEADER_DES_LOCL_H */
-#endif /* PERL5 */
-#endif /* 0 */
-
-int des_ofb_encrypt(unsigned char *in,unsigned char *out,
- int numbits,long length,des_key_schedule schedule,des_cblock *ivec);
-int des_pcbc_encrypt(des_cblock *input,des_cblock *output,long length,
- des_key_schedule schedule,des_cblock *ivec,int enc);
-unsigned long des_quad_cksum(des_cblock *input,des_cblock *output,
- long length,int out_count,des_cblock *seed);
-void des_random_seed(des_cblock key);
-int des_random_key(des_cblock ret);
-int des_read_password(des_cblock *key,char *prompt,int verify);
-int des_read_2passwords(des_cblock *key1,des_cblock *key2,
- char *prompt,int verify);
-int des_read_pw_string(char *buf,int length,char *prompt,int verify);
-void des_set_odd_parity(des_cblock *key);
-int des_is_weak_key(des_cblock *key);
-int des_set_key(des_cblock *key,des_key_schedule schedule);
-int des_key_sched(des_cblock *key,des_key_schedule schedule);
-int des_string_to_key(char *str,des_cblock *key);
-int des_string_to_2keys(char *str,des_cblock *key1,des_cblock *key2);
-int des_cfb64_encrypt(unsigned char *in, unsigned char *out, long length,
- des_key_schedule schedule, des_cblock *ivec, int *num, int enc);
-int des_ofb64_encrypt(unsigned char *in, unsigned char *out, long length,
- des_key_schedule schedule, des_cblock *ivec, int *num);
-void des_cblock_print_file(des_cblock *cb, FILE *fp);
-int des_new_random_key(des_cblock *key);
-void des_init_random_number_generator(des_cblock *key);
-void des_set_random_generator_seed(des_cblock *key);
-void des_set_sequence_number(des_cblock new_sequence_number);
-void des_generate_random_block(des_cblock *block);
-
-#else
-
-int des_2ecb_encrypt();
-int des_3ecb_encrypt();
-unsigned long des_cbc_cksum();
-int des_cbc_encrypt();
-int des_ncbc_encrypt();
-int des_3cbc_encrypt();
-int des_cfb_encrypt();
-int des_ecb_encrypt();
-int des_encrypt();
-int des_encrypt2();
-int des_ede3_cbc_encrypt();
-int des_ede2_cbc_encrypt();
-int des_enc_read();
-int des_enc_write();
-#ifdef PERL5
-char *des_crypt();
-#else
-char *crypt();
-#endif
-int des_ofb_encrypt();
-int des_pcbc_encrypt();
-unsigned long des_quad_cksum();
-void des_random_seed();
-int des_random_key();
-int des_read_password();
-int des_read_2passwords();
-int des_read_pw_string();
-void des_set_odd_parity();
-int des_is_weak_key();
-int des_set_key();
-int des_key_sched();
-int des_string_to_key();
-int des_string_to_2keys();
-int des_cfb64_encrypt();
-int des_ofb64_encrypt();
-void des_cblock_print_file();
-int des_new_random_key();
-void des_init_random_number_generator();
-void des_set_random_generator_seed();
-void des_set_sequence_number();
-void des_generate_random_block();
-#endif
-#endif
diff --git a/eBones/include/highc.h b/eBones/include/highc.h
deleted file mode 100644
index 7ff2f7cbd5e0..000000000000
--- a/eBones/include/highc.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * Known breakage in the version of Metaware's High C compiler that
- * we've got available....
- *
- * from: highc.h,v 4.0 89/01/23 09:59:15 jtkohl Exp $
- * $Id: highc.h,v 1.3 1995/07/18 16:36:27 mark Exp $
- */
-
-#define const
-/*#define volatile*/
-
-/*
- * Some builtin functions we can take advantage of for inlining....
- */
-
-#define abs _abs
-/* the _max and _min builtins accept any number of arguments */
-#undef MAX
-#define MAX(x,y) _max(x,y)
-#undef MIN
-#define MIN(x,y) _min(x,y)
-/*
- * I'm not sure if 65535 is a limit for this builtin, but it's
- * reasonable for a string length. Or is it?
- */
-/*#define strlen(s) _find_char(s,65535,0)*/
-#define bzero(ptr,len) _fill_char(ptr,len,'\0')
-#define bcmp(b1,b2,len) _compare(b1,b2,len)
diff --git a/eBones/include/kdc.h b/eBones/include/kdc.h
deleted file mode 100644
index 70756a49afde..000000000000
--- a/eBones/include/kdc.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 1987, 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * Include file for the Kerberos Key Distribution Center.
- *
- * from: kdc.h,v 4.1 89/01/24 17:54:04 jon Exp $
- * $Id: kdc.h,v 1.3 1995/07/18 16:36:29 mark Exp $
- */
-
-#ifndef KDC_DEFS
-#define KDC_DEFS
-
-#define S_AD_SZ sizeof(struct sockaddr_in)
-
-#define max(a,b) (a>b ? a : b)
-#define min(a,b) (a<b ? a : b)
-
-#define TRUE 1
-#define FALSE 0
-
-#define MKEYFILE "/etc/kerberosIV/master_key"
-#define K_LOGFIL "/var/log/kpropd.log"
-#define KS_LOGFIL "/var/log/kerberos_slave.log"
-#define KRB_ACL "/etc/kerberosIV/kerberos.acl"
-#define KRB_PROG "./kerberos"
-
-#define ONE_MINUTE 60
-#define FIVE_MINUTES (5 * ONE_MINUTE)
-#define ONE_HOUR (60 * ONE_MINUTE)
-#define ONE_DAY (24 * ONE_HOUR)
-#define THREE_DAYS (3 * ONE_DAY)
-
-#endif /* KDC_DEFS */
-
diff --git a/eBones/include/klog.h b/eBones/include/klog.h
deleted file mode 100644
index c8ca55778696..000000000000
--- a/eBones/include/klog.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * This file defines the types of log messages logged by klog. Each
- * type of message may be selectively turned on or off.
- *
- * from: klog.h,v 4.7 89/01/24 17:55:07 jon Exp $
- * $Id: klog.h,v 1.3 1995/07/18 16:36:30 mark Exp $
- */
-
-#ifndef KLOG_DEFS
-#define KLOG_DEFS
-
-#define KRBLOG "/var/log/kerberos.log" /* master server */
-#define KRBSLAVELOG "/var/log/kerberos_slave.log" /* master server */
-#define NLOGTYPE 100 /* Maximum number of log msg types */
-
-#define L_NET_ERR 1 /* Error in network code */
-#define L_NET_INFO 2 /* Info on network activity */
-#define L_KRB_PERR 3 /* Kerberos protocol errors */
-#define L_KRB_PINFO 4 /* Kerberos protocol info */
-#define L_INI_REQ 5 /* Request for initial ticket */
-#define L_NTGT_INTK 6 /* Initial request not for TGT */
-#define L_DEATH_REQ 7 /* Request for server death */
-#define L_TKT_REQ 8 /* All ticket requests using a tgt */
-#define L_ERR_SEXP 9 /* Service expired */
-#define L_ERR_MKV 10 /* Master key version incorrect */
-#define L_ERR_NKY 11 /* User's key is null */
-#define L_ERR_NUN 12 /* Principal not unique */
-#define L_ERR_UNK 13 /* Principal Unknown */
-#define L_ALL_REQ 14 /* All requests */
-#define L_APPL_REQ 15 /* Application requests (using tgt) */
-#define L_KRB_PWARN 16 /* Protocol warning messages */
-
-char *klog();
-
-#endif /* KLOG_DEFS */
diff --git a/eBones/include/kparse.h b/eBones/include/kparse.h
deleted file mode 100644
index d506d9dc3b31..000000000000
--- a/eBones/include/kparse.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * Include file for kparse routines.
- *
- * from: kparse.h,v 4.5 89/01/11 12:05:53 steiner Exp $
- * $Id: kparse.h,v 1.4 1995/09/07 20:50:34 mark Exp $
- */
-
-#ifndef KPARSE_DEFS
-#define KPARSE_DEFS
-
-/*
- * values returned by fGetParameterSet()
- */
-
-#define PS_BAD_KEYWORD -2 /* unknown or duplicate keyword */
-#define PS_SYNTAX -1 /* syntax error */
-#define PS_OKAY 0 /* got a complete parameter set */
-#define PS_EOF 1 /* nothing more in the file */
-
-/*
- * values returned by fGetKeywordValue()
- */
-
-#define KV_SYNTAX -2 /* syntax error */
-#define KV_EOF -1 /* nothing more in the file */
-#define KV_OKAY 0 /* got a keyword/value pair */
-#define KV_EOL 1 /* nothing more on this line */
-
-/*
- * values returned by fGetToken()
- */
-
-#define GTOK_BAD_QSTRING -1 /* newline found in quoted string */
-#define GTOK_EOF 0 /* end of file encountered */
-#define GTOK_QSTRING 1 /* quoted string */
-#define GTOK_STRING 2 /* unquoted string */
-#define GTOK_NUMBER 3 /* one or more digits */
-#define GTOK_PUNK 4 /* punks are punctuation, newline,
- * etc. */
-#define GTOK_WHITE 5 /* one or more whitespace chars */
-
-/*
- * extended character classification macros
- */
-
-#define ISOCTAL(CH) ( (CH>='0') && (CH<='7') )
-#define ISQUOTE(CH) ( (CH=='\"') || (CH=='\'') || (CH=='`') )
-#define ISWHITESPACE(C) ( (C==' ') || (C=='\t') )
-#define ISLINEFEED(C) ( (C=='\n') || (C=='\r') || (C=='\f') )
-
-/*
- * tokens consist of any printable charcacter except comma, equal, or
- * whitespace
- */
-
-#define ISTOKENCHAR(C) ((C>040) && (C<0177) && (C != ',') && (C != '='))
-
-/*
- * the parameter table defines the keywords that will be recognized by
- * fGetParameterSet, and their default values if not specified.
- */
-
-typedef struct {
- char *keyword;
- char *defvalue;
- char *value;
-} parmtable;
-
-#define PARMCOUNT(P) (sizeof(P)/sizeof(P[0]))
-
-extern int LineNbr; /* current line # in parameter file */
-
-extern char ErrorMsg[]; /*
- * meaningful only when KV_SYNTAX,
- * PS_SYNTAX, or PS_BAD_KEYWORD is
- * returned by fGetKeywordValue or
- * fGetParameterSet
- */
-
-extern char *strsave(char *p); /* defined in this module */
-extern char *strutol(char *p); /* defined in this module */
-
-int fGetParameterSet(FILE *fp, parmtable parm[], int parmcount);
-int fGetKeywordValue(FILE *fp, char *keyword, int klen, char *value, int vlen);
-int fGetToken(FILE *fp, char *dest, int maxlen);
-
-#endif /* KPARSE_DEFS */
diff --git a/eBones/include/krb.h b/eBones/include/krb.h
deleted file mode 100644
index 0b1ae090a2ab..000000000000
--- a/eBones/include/krb.h
+++ /dev/null
@@ -1,504 +0,0 @@
-/*
- * Copyright 1987, 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * Include file for the Kerberos library.
- *
- * from: krb.h,v 4.26 89/08/08 17:55:25 jtkohl Exp $
- * $Id: krb.h,v 1.7 1995/09/07 20:50:36 mark Exp $
- */
-
-/* Only one time, please */
-#ifndef KRB_DEFS
-#define KRB_DEFS
-
-/* Need some defs from des.h */
-#include <stdio.h>
-#include <kerberosIV/des.h>
-#include <netinet/in.h>
-
-/* Text describing error codes */
-#define MAX_KRB_ERRORS 256
-extern char *krb_err_txt[MAX_KRB_ERRORS];
-
-/* These are not defined for at least SunOS 3.3 and Ultrix 2.2 */
-#if defined(ULTRIX022) || (defined(SunOS) && SunOS < 40)
-#define FD_ZERO(p) ((p)->fds_bits[0] = 0)
-#define FD_SET(n, p) ((p)->fds_bits[0] |= (1 << (n)))
-#define FD_ISSET(n, p) ((p)->fds_bits[0] & (1 << (n)))
-#endif /* ULTRIX022 || SunOS */
-
-/* General definitions */
-#define KSUCCESS 0
-#define KFAILURE 255
-
-#ifdef NO_UIDGID_T
-typedef unsigned short uid_t;
-typedef unsigned short gid_t;
-#endif /* NO_UIDGID_T */
-
-/*
- * Kerberos specific definitions
- *
- * KRBLOG is the log file for the kerberos master server. KRB_CONF is
- * the configuration file where different host machines running master
- * and slave servers can be found. KRB_MASTER is the name of the
- * machine with the master database. The admin_server runs on this
- * machine, and all changes to the db (as opposed to read-only
- * requests, which can go to slaves) must go to it. KRB_HOST is the
- * default machine * when looking for a kerberos slave server. Other
- * possibilities are * in the KRB_CONF file. KRB_REALM is the name of
- * the realm.
- */
-
-#ifdef notdef
-this is server - only, does not belong here;
-#define KRBLOG "/etc/kerberosIV/kerberos.log"
-are these used anyplace '?';
-#define VX_KRB_HSTFILE "/etc/krbhst"
-#define PC_KRB_HSTFILE "\\kerberos\\krbhst"
-#endif
-
-#define KRB_CONF "/etc/kerberosIV/krb.conf"
-#define KRB_RLM_TRANS "/etc/kerberosIV/krb.realms"
-#define KRB_MASTER "kerberos"
-#define KRB_HOST KRB_MASTER
-#define KRB_REALM "ATHENA.MIT.EDU"
-
-/* The maximum sizes for aname, realm, sname, and instance +1 */
-#define ANAME_SZ 40
-#define REALM_SZ 40
-#define SNAME_SZ 40
-#define INST_SZ 40
-/* include space for '.' and '@' */
-#define MAX_K_NAME_SZ (ANAME_SZ + INST_SZ + REALM_SZ + 2)
-#define KKEY_SZ 100
-#define VERSION_SZ 1
-#define MSG_TYPE_SZ 1
-#define DATE_SZ 26 /* RTI date output */
-
-#define MAX_HSTNM 100
-
-#ifndef DEFAULT_TKT_LIFE /* allow compile-time override */
-#define DEFAULT_TKT_LIFE 96 /* default lifetime for krb_mk_req
- & co., 8 hrs */
-#endif
-
-/* Definition of text structure used to pass text around */
-#define MAX_KTXT_LEN 1250
-
-struct ktext {
- int length; /* Length of the text */
- unsigned char dat[MAX_KTXT_LEN]; /* The data itself */
- unsigned long mbz; /* zero to catch runaway strings */
-};
-
-typedef struct ktext *KTEXT;
-typedef struct ktext KTEXT_ST;
-
-
-/* Definitions for send_to_kdc */
-#define CLIENT_KRB_TIMEOUT 4 /* time between retries */
-#define CLIENT_KRB_RETRY 5 /* retry this many times */
-#define CLIENT_KRB_BUFLEN 512 /* max unfragmented packet */
-
-/* Definitions for ticket file utilities */
-#define R_TKT_FIL 0
-#define W_TKT_FIL 1
-
-/* Definitions for cl_get_tgt */
-#ifdef PC
-#define CL_GTGT_INIT_FILE "\\kerberos\\k_in_tkts"
-#else
-#define CL_GTGT_INIT_FILE "/etc/k_in_tkts"
-#endif PC
-
-/* Parameters for rd_ap_req */
-/* Maximum alloable clock skew in seconds */
-#define CLOCK_SKEW 5*60
-/* Filename for readservkey */
-#define KEYFILE "/etc/kerberosIV/srvtab"
-
-/* Structure definition for rd_ap_req */
-
-struct auth_dat {
- unsigned char k_flags; /* Flags from ticket */
- char pname[ANAME_SZ]; /* Principal's name */
- char pinst[INST_SZ]; /* His Instance */
- char prealm[REALM_SZ]; /* His Realm */
- unsigned long checksum; /* Data checksum (opt) */
- C_Block session; /* Session Key */
- int life; /* Life of ticket */
- unsigned long time_sec; /* Time ticket issued */
- unsigned long address; /* Address in ticket */
- KTEXT_ST reply; /* Auth reply (opt) */
-};
-
-typedef struct auth_dat AUTH_DAT;
-
-/* Structure definition for credentials returned by get_cred */
-
-struct credentials {
- char service[ANAME_SZ]; /* Service name */
- char instance[INST_SZ]; /* Instance */
- char realm[REALM_SZ]; /* Auth domain */
- C_Block session; /* Session key */
- int lifetime; /* Lifetime */
- int kvno; /* Key version number */
- KTEXT_ST ticket_st; /* The ticket itself */
- long issue_date; /* The issue time */
- char pname[ANAME_SZ]; /* Principal's name */
- char pinst[INST_SZ]; /* Principal's instance */
-};
-
-typedef struct credentials CREDENTIALS;
-
-/* Structure definition for rd_private_msg and rd_safe_msg */
-
-struct msg_dat {
- unsigned char *app_data; /* pointer to appl data */
- unsigned long app_length; /* length of appl data */
- unsigned long hash; /* hash to lookup replay */
- int swap; /* swap bytes? */
- long time_sec; /* msg timestamp seconds */
- unsigned char time_5ms; /* msg timestamp 5ms units */
-};
-
-typedef struct msg_dat MSG_DAT;
-
-
-/* Location of ticket file for save_cred and get_cred */
-#ifdef PC
-#define TKT_FILE "\\kerberos\\ticket.ses"
-#else
-#define TKT_FILE tkt_string()
-#define TKT_ROOT "/tmp/tkt"
-#endif PC
-
-/* Error codes returned from the KDC */
-#define KDC_OK 0 /* Request OK */
-#define KDC_NAME_EXP 1 /* Principal expired */
-#define KDC_SERVICE_EXP 2 /* Service expired */
-#define KDC_AUTH_EXP 3 /* Auth expired */
-#define KDC_PKT_VER 4 /* Protocol version unknown */
-#define KDC_P_MKEY_VER 5 /* Wrong master key version */
-#define KDC_S_MKEY_VER 6 /* Wrong master key version */
-#define KDC_BYTE_ORDER 7 /* Byte order unknown */
-#define KDC_PR_UNKNOWN 8 /* Principal unknown */
-#define KDC_PR_N_UNIQUE 9 /* Principal not unique */
-#define KDC_NULL_KEY 10 /* Principal has null key */
-#define KDC_GEN_ERR 20 /* Generic error from KDC */
-
-
-/* Values returned by get_credentials */
-#define GC_OK 0 /* Retrieve OK */
-#define RET_OK 0 /* Retrieve OK */
-#define GC_TKFIL 21 /* Can't read ticket file */
-#define RET_TKFIL 21 /* Can't read ticket file */
-#define GC_NOTKT 22 /* Can't find ticket or TGT */
-#define RET_NOTKT 22 /* Can't find ticket or TGT */
-
-
-/* Values returned by mk_ap_req */
-#define MK_AP_OK 0 /* Success */
-#define MK_AP_TGTEXP 26 /* TGT Expired */
-
-/* Values returned by rd_ap_req */
-#define RD_AP_OK 0 /* Request authentic */
-#define RD_AP_UNDEC 31 /* Can't decode authenticator */
-#define RD_AP_EXP 32 /* Ticket expired */
-#define RD_AP_NYV 33 /* Ticket not yet valid */
-#define RD_AP_REPEAT 34 /* Repeated request */
-#define RD_AP_NOT_US 35 /* The ticket isn't for us */
-#define RD_AP_INCON 36 /* Request is inconsistent */
-#define RD_AP_TIME 37 /* delta_t too big */
-#define RD_AP_BADD 38 /* Incorrect net address */
-#define RD_AP_VERSION 39 /* protocol version mismatch */
-#define RD_AP_MSG_TYPE 40 /* invalid msg type */
-#define RD_AP_MODIFIED 41 /* message stream modified */
-#define RD_AP_ORDER 42 /* message out of order */
-#define RD_AP_UNAUTHOR 43 /* unauthorized request */
-
-/* Values returned by get_pw_tkt */
-#define GT_PW_OK 0 /* Got password changing tkt */
-#define GT_PW_NULL 51 /* Current PW is null */
-#define GT_PW_BADPW 52 /* Incorrect current password */
-#define GT_PW_PROT 53 /* Protocol Error */
-#define GT_PW_KDCERR 54 /* Error returned by KDC */
-#define GT_PW_NULLTKT 55 /* Null tkt returned by KDC */
-
-
-/* Values returned by send_to_kdc */
-#define SKDC_OK 0 /* Response received */
-#define SKDC_RETRY 56 /* Retry count exceeded */
-#define SKDC_CANT 57 /* Can't send request */
-
-/*
- * Values returned by get_intkt
- * (can also return SKDC_* and KDC errors)
- */
-
-#define INTK_OK 0 /* Ticket obtained */
-#define INTK_W_NOTALL 61 /* Not ALL tickets returned */
-#define INTK_BADPW 62 /* Incorrect password */
-#define INTK_PROT 63 /* Protocol Error */
-#define INTK_ERR 70 /* Other error */
-
-/* Values returned by get_adtkt */
-#define AD_OK 0 /* Ticket Obtained */
-#define AD_NOTGT 71 /* Don't have tgt */
-
-/* Error codes returned by ticket file utilities */
-#define NO_TKT_FIL 76 /* No ticket file found */
-#define TKT_FIL_ACC 77 /* Couldn't access tkt file */
-#define TKT_FIL_LCK 78 /* Couldn't lock ticket file */
-#define TKT_FIL_FMT 79 /* Bad ticket file format */
-#define TKT_FIL_INI 80 /* tf_init not called first */
-
-/* Error code returned by kparse_name */
-#define KNAME_FMT 81 /* Bad Kerberos name format */
-
-/* Error code returned by krb_mk_safe */
-#define SAFE_PRIV_ERROR -1 /* syscall error */
-
-/*
- * macros for byte swapping; also scratch space
- * u_quad 0-->7, 1-->6, 2-->5, 3-->4, 4-->3, 5-->2, 6-->1, 7-->0
- * u_long 0-->3, 1-->2, 2-->1, 3-->0
- * u_short 0-->1, 1-->0
- */
-
-#define swap_u_16(x) {\
- unsigned long _krb_swap_tmp[4];\
- swab(((char *) x) +0, ((char *) _krb_swap_tmp) +14 ,2); \
- swab(((char *) x) +2, ((char *) _krb_swap_tmp) +12 ,2); \
- swab(((char *) x) +4, ((char *) _krb_swap_tmp) +10 ,2); \
- swab(((char *) x) +6, ((char *) _krb_swap_tmp) +8 ,2); \
- swab(((char *) x) +8, ((char *) _krb_swap_tmp) +6 ,2); \
- swab(((char *) x) +10,((char *) _krb_swap_tmp) +4 ,2); \
- swab(((char *) x) +12,((char *) _krb_swap_tmp) +2 ,2); \
- swab(((char *) x) +14,((char *) _krb_swap_tmp) +0 ,2); \
- bcopy((char *)_krb_swap_tmp,(char *)x,16);\
- }
-
-#define swap_u_12(x) {\
- unsigned long _krb_swap_tmp[4];\
- swab(( char *) x, ((char *) _krb_swap_tmp) +10 ,2); \
- swab(((char *) x) +2, ((char *) _krb_swap_tmp) +8 ,2); \
- swab(((char *) x) +4, ((char *) _krb_swap_tmp) +6 ,2); \
- swab(((char *) x) +6, ((char *) _krb_swap_tmp) +4 ,2); \
- swab(((char *) x) +8, ((char *) _krb_swap_tmp) +2 ,2); \
- swab(((char *) x) +10,((char *) _krb_swap_tmp) +0 ,2); \
- bcopy((char *)_krb_swap_tmp,(char *)x,12);\
- }
-
-#define swap_C_Block(x) {\
- unsigned long _krb_swap_tmp[4];\
- swab(( char *) x, ((char *) _krb_swap_tmp) +6 ,2); \
- swab(((char *) x) +2,((char *) _krb_swap_tmp) +4 ,2); \
- swab(((char *) x) +4,((char *) _krb_swap_tmp) +2 ,2); \
- swab(((char *) x) +6,((char *) _krb_swap_tmp) ,2); \
- bcopy((char *)_krb_swap_tmp,(char *)x,8);\
- }
-#define swap_u_quad(x) {\
- unsigned long _krb_swap_tmp[4];\
- swab(( char *) &x, ((char *) _krb_swap_tmp) +6 ,2); \
- swab(((char *) &x) +2,((char *) _krb_swap_tmp) +4 ,2); \
- swab(((char *) &x) +4,((char *) _krb_swap_tmp) +2 ,2); \
- swab(((char *) &x) +6,((char *) _krb_swap_tmp) ,2); \
- bcopy((char *)_krb_swap_tmp,(char *)&x,8);\
- }
-
-#define swap_u_long(x) {\
- unsigned long _krb_swap_tmp[4];\
- swab((char *) &x, ((char *) _krb_swap_tmp) +2 ,2); \
- swab(((char *) &x) +2,((char *) _krb_swap_tmp),2); \
- x = _krb_swap_tmp[0]; \
- }
-
-#define swap_u_short(x) {\
- unsigned short _krb_swap_sh_tmp; \
- swab((char *) &x, ( &_krb_swap_sh_tmp) ,2); \
- x = (unsigned short) _krb_swap_sh_tmp; \
- }
-
-/* Kerberos ticket flag field bit definitions */
-#define K_FLAG_ORDER 0 /* bit 0 --> lsb */
-#define K_FLAG_1 /* reserved */
-#define K_FLAG_2 /* reserved */
-#define K_FLAG_3 /* reserved */
-#define K_FLAG_4 /* reserved */
-#define K_FLAG_5 /* reserved */
-#define K_FLAG_6 /* reserved */
-#define K_FLAG_7 /* reserved, bit 7 --> msb */
-
-#ifndef PC
-char *tkt_string();
-#endif PC
-
-#ifdef OLDNAMES
-#define krb_mk_req mk_ap_req
-#define krb_rd_req rd_ap_req
-#define krb_kntoln an_to_ln
-#define krb_set_key set_serv_key
-#define krb_get_cred get_credentials
-#define krb_mk_priv mk_private_msg
-#define krb_rd_priv rd_private_msg
-#define krb_mk_safe mk_safe_msg
-#define krb_rd_safe rd_safe_msg
-#define krb_mk_err mk_appl_err_msg
-#define krb_rd_err rd_appl_err_msg
-#define krb_ck_repl check_replay
-#define krb_get_pw_in_tkt get_in_tkt
-#define krb_get_svc_in_tkt get_svc_in_tkt
-#define krb_get_pw_tkt get_pw_tkt
-#define krb_realmofhost krb_getrealm
-#define krb_get_phost get_phost
-#define krb_get_krbhst get_krbhst
-#define krb_get_lrealm get_krbrlm
-#endif OLDNAMES
-
-/* Defines for krb_sendauth and krb_recvauth */
-
-#define KOPT_DONT_MK_REQ 0x00000001 /* don't call krb_mk_req */
-#define KOPT_DO_MUTUAL 0x00000002 /* do mutual auth */
-
-#define KOPT_DONT_CANON 0x00000004 /*
- * don't canonicalize inst as
- * a hostname
- */
-
-#define KRB_SENDAUTH_VLEN 8 /* length for version strings */
-
-#ifdef ATHENA_COMPAT
-#define KOPT_DO_OLDSTYLE 0x00000008 /* use the old-style protocol */
-#endif ATHENA_COMPAT
-
-/* libacl */
-void acl_canonicalize_principal __P((char *principal, char *buf));
-int acl_check __P((char *acl, char *principal));
-int acl_exact_match __P((char *acl, char *principal));
-int acl_add __P((char *acl, char *principal));
-int acl_delete __P((char *acl, char *principal));
-int acl_initialize __P((char *acl_file, int mode));
-
-/* libkrb - krb.3 */
-int krb_mk_req __P((KTEXT authent, char *service, char *instance, char *realm,
- long checksum);
-int krb_rd_req __P((KTEXT authent, char *service, char *instance,
- long from_addr, AUTH_DAT *ad, char *fn));
-int krb_kntoln __P((AUTH_DAT *ad, char *lname));
-int krb_set_key __P((char *key, int cvt));
-int krb_get_cred __P((char *service, char *instance, char *realm,
- CREDENTIALS *c));
-long krb_mk_priv __P((u_char *in, u_char *out, u_long in_length,
- des_key_schedule schedule, des_cblock key, struct sockaddr_in *sender,
- struct sockaddr_in *receiver));
-long krb_rd_priv __P((u_char *in, u_long in_length, Key_schedule schedule,
- des_cblock key, struct sockaddr_in *sender, struct sockaddr_in *receiver,
- MSG_DAT *msg_data));
-long krb_mk_safe __P((u_char *in, u_char *out, u_long in_length,
- des_cblock *key, struct sockaddr_in *sender, struct sockaddr_in *receiver));
-long krb_rd_safe __P((u_char *in, u_long length, des_cblock *key,
- struct sockaddr_in *sender, struct sockaddr_in *receiver,
- MSG_DAT *msg_data));
-long krb_mk_err __P((u_char *out, long code, char *string));
-int krb_rd_err __P((u_char *in, u_long in_length, long *code, MSG_DAT *m_data));
-
-/* libkrb - krb_sendauth.3 */
-int krb_sendauth __P((long options, int fd, KTEXT ticket, char *service,
- char *inst, char *realm, u_long checksum, MSG_DAT *msg_data,
- CREDENTIALS *cred, Key_schedule schedule, struct sockaddr_in *laddr,
- struct sockaddr_in *faddr, char *version));
-int krb_recvauth __P((long options, int fd, KTEXT ticket, char *service,
- char *instance, struct sockaddr_in *faddr, struct sockaddr_in *laddr,
- AUTH_DAT *kdata, char *filename, Key_schedule schedule, char *version));
-int krb_net_write __P((int fd, char *buf, int len));
-int krb_net_read __P((int fd, char *buf, int len));
-
-/* libkrb - krb_realmofhost.3 */
-char *krb_realmofhost __P((char *host));
-char *krb_get_phost __P((char *alias));
-int krb_get_krbhst __P((char *h, char *r, int n));
-int krb_get_admhst __P((char *h, char *r, int n));
-int krb_get_lrealm __P((char *r, int n));
-
-/* libkrb - krb_set_tkt_string.3 */
-void krb_set_tkt_string(char *val);
-
-/* libkrb - kuserok.3 */
-int kuserok __P((AUTH_DAT *authdata, char *localuser));
-
-/* libkrb - tf_util.3 */
-int tf_init __P((char *tf_name, int rw));
-int tf_get_pname __P((char *p));
-int tf_get_pinst __P((char *inst));
-int tf_get_cred __P((CREDENTIALS *c));
-void tf_close __P((void));
-
-/* Internal routines */
-int des_read __P((int fd, char *buf, int len));
-int des_write __P((int fd, char *buf, int len));
-int krb_get_tf_realm __P((char *ticket_file, char *realm));
-int krb_get_in_tkt __P((char *user, char *instance, char *realm, char *service,
- char *sinstance, int life, int (*key_proc)(), int (*decrypt_proc)(),
- char *arg));
-int krb_get_pw_in_tkt __P((char *user, char *instance, char *realm,
- char *service, char *sinstance, int life, char *password));
-int krb_get_svc_in_tkt __P((char *user, char *instance, char *realm,
- char *service, char *sinstance, int life, char *srvtab));
-int krb_get_tf_fullname __P((char *ticket_file, char *name, char *instance,
- char *realm));
-int save_credentials __P((char *service, char *instance, char *realm,
- des_cblock session, int lifetime, int kvno, KTEXT ticket, long issue_date));
-int read_service_key __P((char *service, char *instance, char *realm, int kvno,
- char *file, char *key));
-int get_ad_tkt __P((char *service, char *sinstance, char *realm, int lifetime));
-int send_to_kdc __P((KTEXT pkt, KTEXT rpkt, char *realm));
-int krb_create_ticket __P((KTEXT tkt, unsigned char flags, char *pname,
- char *pinstance, char *prealm, long paddress, char *session, short life,
- long time_sec, char *sname, char *sinstance, C_Block key));
-int decomp_ticket __P((KTEXT tkt, unsigned char *flags, char *pname,
- char *pinstance, char *prealm, unsigned long *paddress, des_cblock session,
- int *life, unsigned long *time_sec, char *sname, char *sinstance,
- des_cblock key, des_key_schedule key_s));
-int create_ciph __P((KTEXT c, C_Block session, char *service, char *instance,
- char *realm, unsigned long life, int kvno, KTEXT tkt,
- unsigned long kdc_time, C_Block key));
-int kname_parse __P((char *np, char *ip, char *rp, char *fullname));
-int tf_save_cred __P((char *service, char *instance, char *realm,
- des_cblock session, int lifetime, int kvno, KTEXT ticket, long issue_date));
-int getst(int fd, char *s, int n));
-int pkt_clen __P((KTEXT pkt));
-int in_tkt __P((char *pname, char *pinst));
-int dest_tkt __P((void));
-char *month_sname __P((int n));
-void log __P(()); /* Actually VARARGS - markm */
-void kset_logfile __P((char *filename));
-void set_logfile __P((char *filename));
-int k_isinst __P((char *s));
-int k_isrealm __P((char *s));
-int k_isname __P((char *s));
-int k_gethostname __P((char *name, int namelen));
-int kerb_init __P((void));
-void kerb_fini __P((void));
-int kerb_db_set_name __P((char *name));
-int kerb_db_set_lockmode __P((int mode));
-int kerb_db_create __P((char *db_name));
-int kerb_db_iterate __P((int (*func)(), char *arg));
-int kerb_db_rename __P((char *from, char *to));
-long kerb_get_db_age __P((void));
-char * stime __P((long *t));
-
-long kdb_get_master_key __P((int prompt, C_Block master_key,
- Key_schedule master_key_sched));
-long kdb_verify_master_key __P((C_Block master_key,
- Key_schedule master_key_sched, FILE *out));
-void kdb_encrypt_key __P((C_Block in, C_Block out, C_Block master_key,
- Key_schedule master_key_sched, int e_d_flag));
-
-extern int krb_ap_req_debug;
-extern int krb_debug;
-
-#endif KRB_DEFS
diff --git a/eBones/include/krb_conf.h b/eBones/include/krb_conf.h
deleted file mode 100644
index ac7c2a83ec70..000000000000
--- a/eBones/include/krb_conf.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * This file contains configuration information for the Kerberos library
- * which is machine specific; currently, this file contains
- * configuration information for the vax, the "ibm032" (RT), and the
- * "PC8086" (IBM PC).
- *
- * Note: cross-compiled targets must appear BEFORE their corresponding
- * cross-compiler host. Otherwise, both will be defined when running
- * the native compiler on the programs that construct cross-compiled
- * sources.
- *
- * from: krb_conf.h,v 4.0 89/01/23 09:59:27 jtkohl Exp $
- * $Id: krb_conf.h,v 1.3 1995/07/18 16:36:36 mark Exp $
- */
-
-#ifndef KRB_CONF_DEFS
-#define KRB_CONF_DEFS
-
-/* Byte ordering */
-extern int krbONE;
-#define HOST_BYTE_ORDER (* (char *) &krbONE)
-#define MSB_FIRST 0 /* 68000, IBM RT/PC */
-#define LSB_FIRST 1 /* Vax, PC8086 */
-
-#endif KRB_CONF_DEFS
diff --git a/eBones/include/krb_db.h b/eBones/include/krb_db.h
deleted file mode 100644
index d6d125a3551f..000000000000
--- a/eBones/include/krb_db.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright 1987, 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * spm Project Athena 8/85
- *
- * This file defines data structures for the kerberos
- * authentication/authorization database.
- *
- * They MUST correspond to those defined in *.rel
- *
- * from: krb_db.h,v 4.9 89/01/24 17:55:39 jon Exp $
- * $Id: krb_db.h,v 1.4 1995/08/25 21:25:12 mark Exp $
- */
-
-#ifndef KRB_DB_DEFS
-#define KRB_DB_DEFS
-
-#define KERB_M_NAME "K" /* Kerberos */
-#define KERB_M_INST "M" /* Master */
-#define KERB_DEFAULT_NAME "default"
-#define KERB_DEFAULT_INST ""
-#define DBM_FILE "/etc/kerberosIV/principal"
-
-/* this also defines the number of queue headers */
-#define KERB_DB_HASH_MODULO 64
-
-
-/* Arguments to kerb_dbl_lock() */
-
-#define KERB_DBL_EXCLUSIVE 1
-#define KERB_DBL_SHARED 0
-
-/* arguments to kerb_db_set_lockmode() */
-
-#define KERB_DBL_BLOCKING 0
-#define KERB_DBL_NONBLOCKING 1
-
-/* Principal defines the structure of a principal's name */
-
-typedef struct {
- char name[ANAME_SZ];
- char instance[INST_SZ];
-
- unsigned long key_low;
- unsigned long key_high;
- unsigned long exp_date;
- char exp_date_txt[DATE_SZ];
- unsigned long mod_date;
- char mod_date_txt[DATE_SZ];
- unsigned short attributes;
- unsigned char max_life;
- unsigned char kdc_key_ver;
- unsigned char key_version;
-
- char mod_name[ANAME_SZ];
- char mod_instance[INST_SZ];
- char *old; /* cast to (Principal *); not in db,
- * ptr to old vals */
-}
- Principal;
-
-typedef struct {
- long cpu;
- long elapsed;
- long dio;
- long pfault;
- long t_stamp;
- long n_retrieve;
- long n_replace;
- long n_append;
- long n_get_stat;
- long n_put_stat;
-}
- DB_stat;
-
-/* Dba defines the structure of a database administrator */
-
-typedef struct {
- char name[ANAME_SZ];
- char instance[INST_SZ];
- unsigned short attributes;
- unsigned long exp_date;
- char exp_date_txt[DATE_SZ];
- char *old; /*
- * cast to (Dba *); not in db, ptr to
- * old vals
- */
-}
- Dba;
-
-extern int kerb_get_principal(char *name, char *inst, Principal *principal,
- unsigned int max, int *more);
-extern int kerb_put_principal(Principal *principal, unsigned int n);
-extern void kerb_db_get_stat(DB_stat *s);
-extern void kerb_db_put_stat(DB_stat *s);
-extern int kerb_get_dba(char *name, char *inst, Dba *dba, unsigned int max,
- int *more);
-extern int kerb_db_get_dba(char *dba_name, char *dba_inst, Dba *dba,
- unsigned int max, int *more);
-
-extern void krb_print_principal(Principal *p);
-extern int kerb_db_get_principal(char *name, char *inst, Principal *principal,
- unsigned int max, int *more);
-extern int kerb_db_put_principal(Principal *principal, unsigned int max);
-extern int kerb_db_init(void);
-extern void kerb_db_fini(void);
-
-#endif /* KRB_DB_DEFS */
diff --git a/eBones/include/lsb_addr_comp.h b/eBones/include/lsb_addr_comp.h
deleted file mode 100644
index 2686ade5481f..000000000000
--- a/eBones/include/lsb_addr_comp.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * Comparison macros to emulate LSBFIRST comparison results of network
- * byte-order quantities
- *
- * from: lsb_addr_comp.h,v 4.0 89/01/23 15:44:46 jtkohl Exp $
- * $Id: lsb_addr_comp.h,v 1.3 1995/07/18 16:36:39 mark Exp $
- */
-
-#ifndef LSB_ADDR_COMP_DEFS
-#define LSB_ADDR_COMP_DEFS
-
-#include "osconf.h"
-
-#ifdef LSBFIRST
-#define lsb_net_ulong_less(x,y) ((x < y) ? -1 : ((x > y) ? 1 : 0))
-#define lsb_net_ushort_less(x,y) ((x < y) ? -1 : ((x > y) ? 1 : 0))
-#else
-/* MSBFIRST */
-#define u_char_comp(x,y) \
- (((x)>(y))?(1):(((x)==(y))?(0):(-1)))
-/* This is gross, but... */
-#define lsb_net_ulong_less(x, y) long_less_than((u_char *)&x, (u_char *)&y)
-#define lsb_net_ushort_less(x, y) short_less_than((u_char *)&x, (u_char *)&y)
-
-#define long_less_than(x,y) \
- (u_char_comp((x)[3],(y)[3])?u_char_comp((x)[3],(y)[3]): \
- (u_char_comp((x)[2],(y)[2])?u_char_comp((x)[2],(y)[2]): \
- (u_char_comp((x)[1],(y)[1])?u_char_comp((x)[1],(y)[1]): \
- (u_char_comp((x)[0],(y)[0])))))
-#define short_less_than(x,y) \
- (u_char_comp((x)[1],(y)[1])?u_char_comp((x)[1],(y)[1]): \
- (u_char_comp((x)[0],(y)[0])))
-
-#endif /* LSBFIRST */
-
-#endif /* LSB_ADDR_COMP_DEFS */
diff --git a/eBones/include/osconf.h b/eBones/include/osconf.h
deleted file mode 100644
index e0af41a9570c..000000000000
--- a/eBones/include/osconf.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * Athena configuration.
- *
- * from: osconf.h,v 4.4 89/12/19 13:26:27 jtkohl Exp $
- * $Id: osconf.h,v 1.3 1995/07/18 16:36:41 mark Exp $
- */
-
-#ifdef tahoe
-#include "conf-bsdtahoe.h"
-#else /* !tahoe */
-#ifdef vax
-#include "conf-bsdvax.h"
-#else /* !vax */
-#if defined(mips) && defined(ultrix)
-#include "conf-ultmips2.h"
-#else /* !Ultrix MIPS-2 */
-#ifdef ibm032
-#include "conf-bsdibm032.h"
-#else /* !ibm032 */
-#ifdef apollo
-#include "conf-bsdapollo.h"
-#else /* !apollo */
-#ifdef sun
-#ifdef sparc
-#include "conf-bsdsparc.h"
-#else /* sun but not sparc */
-#ifdef i386
-#include "conf-bsd386i.h"
-#else /* sun but not (sparc or 386i) */
-#include "conf-bsdm68k.h"
-#endif /* i386 */
-#endif /* sparc */
-#else /* !sun */
-#ifdef pyr
-#include "conf-pyr.h"
-#endif /* pyr */
-#endif /* sun */
-#endif /* apollo */
-#endif /* ibm032 */
-#endif /* mips */
-#endif /* vax */
-#endif /* tahoe */
-
-#if defined(__FreeBSD__) && defined(i386)
-#include "conf-bsd386i.h"
-#endif
-
diff --git a/eBones/include/passwd_server.h b/eBones/include/passwd_server.h
deleted file mode 100644
index 662e65423cd2..000000000000
--- a/eBones/include/passwd_server.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright 1987, 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * Include file for password server
- *
- * from: passwd_server.h,v 4.6 89/01/11 15:12:22 steiner Exp $
- * $Id: passwd_server.h,v 1.3 1995/07/18 16:36:43 mark Exp $
- */
-
-#ifndef PASSWD_SERVER_DEFS
-#define PASSWD_SERVER_DEFS
-
-#define PW_SRV_VERSION 2 /* version number */
-#define RETRY_LIMIT 1
-#define TIME_OUT 30
-#define USER_TIMEOUT 90
-#define MAX_KPW_LEN 40 /* hey, seems like a good number */
-
-#define INSTALL_NEW_PW (1<<0) /*
- * ver, cmd, name, password, old_pass,
- * crypt_pass, uid
- */
-
-#define INSTALL_REPLY (1<<1) /* ver, cmd, name, password */
-
-#endif /* PASSWD_SERVER_DEFS */
diff --git a/eBones/include/principal.h b/eBones/include/principal.h
deleted file mode 100644
index 7fa67bc42976..000000000000
--- a/eBones/include/principal.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * Definitions for principal names.
- *
- * from: principal.h,v 4.5 89/01/11 15:15:01 steiner Exp $
- * $Id: principal.h,v 1.3 1995/07/18 16:36:45 mark Exp $
- */
-
-#ifndef PRINCIPAL_DEFS
-#define PRINCIPAL_DEFS
-
-#define NAME_LEN 39
-#define INSTANCE_LEN 39
-
-#endif /* PRINCIPAL_DEFS */
diff --git a/eBones/include/prot.h b/eBones/include/prot.h
deleted file mode 100644
index ec0ee07dcc9f..000000000000
--- a/eBones/include/prot.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * Include file with authentication protocol information.
- *
- * from: prot.h,v 4.13 89/01/24 14:27:22 jtkohl Exp $
- * $Id: prot.h,v 1.3 1995/07/18 16:36:46 mark Exp $
- */
-
-#include <krb_conf.h>
-
-#ifndef PROT_DEFS
-#define PROT_DEFS
-
-#define KRB_PORT 750 /* PC's don't have
- * /etc/services */
-#define KRB_PROT_VERSION 4
-#define MAX_PKT_LEN 1000
-#define MAX_TXT_LEN 1000
-#define TICKET_GRANTING_TICKET "krbtgt"
-
-/* Macro's to obtain various fields from a packet */
-
-#define pkt_version(packet) (unsigned int) *(packet->dat)
-#define pkt_msg_type(packet) (unsigned int) *(packet->dat+1)
-#define pkt_a_name(packet) (packet->dat+2)
-#define pkt_a_inst(packet) \
- (packet->dat+3+strlen((char *)pkt_a_name(packet)))
-#define pkt_a_realm(packet) \
- (pkt_a_inst(packet)+1+strlen((char *)pkt_a_inst(packet)))
-
-/* Macro to obtain realm from application request */
-#define apreq_realm(auth) (auth->dat + 3)
-
-#define pkt_time_ws(packet) (char *) \
- (packet->dat+5+strlen((char *)pkt_a_name(packet)) + \
- strlen((char *)pkt_a_inst(packet)) + \
- strlen((char *)pkt_a_realm(packet)))
-
-#define pkt_no_req(packet) (unsigned short) \
- *(packet->dat+9+strlen((char *)pkt_a_name(packet)) + \
- strlen((char *)pkt_a_inst(packet)) + \
- strlen((char *)pkt_a_realm(packet)))
-#define pkt_x_date(packet) (char *) \
- (packet->dat+10+strlen((char *)pkt_a_name(packet)) + \
- strlen((char *)pkt_a_inst(packet)) + \
- strlen((char *)pkt_a_realm(packet)))
-#define pkt_err_code(packet) ( (char *) \
- (packet->dat+9+strlen((char *)pkt_a_name(packet)) + \
- strlen((char *)pkt_a_inst(packet)) + \
- strlen((char *)pkt_a_realm(packet))))
-#define pkt_err_text(packet) \
- (packet->dat+13+strlen((char *)pkt_a_name(packet)) + \
- strlen((char *)pkt_a_inst(packet)) + \
- strlen((char *)pkt_a_realm(packet)))
-
-/* Routines to create and read packets may be found in prot.c */
-
-KTEXT create_auth_reply();
-KTEXT create_death_packet();
-KTEXT pkt_cipher();
-
-/* Message types , always leave lsb for byte order */
-
-#define AUTH_MSG_KDC_REQUEST 1<<1
-#define AUTH_MSG_KDC_REPLY 2<<1
-#define AUTH_MSG_APPL_REQUEST 3<<1
-#define AUTH_MSG_APPL_REQUEST_MUTUAL 4<<1
-#define AUTH_MSG_ERR_REPLY 5<<1
-#define AUTH_MSG_PRIVATE 6<<1
-#define AUTH_MSG_SAFE 7<<1
-#define AUTH_MSG_APPL_ERR 8<<1
-#define AUTH_MSG_DIE 63<<1
-
-/* values for kerb error codes */
-
-#define KERB_ERR_OK 0
-#define KERB_ERR_NAME_EXP 1
-#define KERB_ERR_SERVICE_EXP 2
-#define KERB_ERR_AUTH_EXP 3
-#define KERB_ERR_PKT_VER 4
-#define KERB_ERR_NAME_MAST_KEY_VER 5
-#define KERB_ERR_SERV_MAST_KEY_VER 6
-#define KERB_ERR_BYTE_ORDER 7
-#define KERB_ERR_PRINCIPAL_UNKNOWN 8
-#define KERB_ERR_PRINCIPAL_NOT_UNIQUE 9
-#define KERB_ERR_NULL_KEY 10
-
-#endif /* PROT_DEFS */
diff --git a/eBones/include/rkinit.h b/eBones/include/rkinit.h
deleted file mode 100644
index 8be12029cd8e..000000000000
--- a/eBones/include/rkinit.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * $Id: rkinit.h,v 1.2 1993/12/23 16:47:27 dglo Exp $
- * $Source: /usr/sww/share/src/kerberosIV.BSD/include/RCS/rkinit.h,v $
- * $Author: dglo $
- *
- * Main header file for rkinit library users
- */
-
-#ifndef __RKINIT_H__
-#define __RKINIT_H__
-
-#if !defined(lint) && !defined(SABER) && !defined(LOCORE) && defined(RCS_HDRS)
-static char *rcsid_rkinit_h = "$Id: rkinit.h,v 1.2 1993/12/23 16:47:27 dglo Exp $";
-#endif /* lint || SABER || LOCORE || RCS_HDRS */
-
-#include <krb.h>
-#include <sys/param.h>
-
-#ifdef __STDC__
-#define RK_PROTO(x) x
-#else
-#define RK_PROTO(x) ()
-#endif /* __STDC__ */
-
-typedef struct {
- char aname[ANAME_SZ + 1];
- char inst[INST_SZ + 1];
- char realm[REALM_SZ + 1];
- char sname[ANAME_SZ + 1];
- char sinst[INST_SZ + 1];
- char username[9]; /* max local name length + 1 */
- char tktfilename[MAXPATHLEN + 1];
- u_int lifetime;
-} rkinit_info;
-
-#define RKINIT_SUCCESS 0
-
-/* Function declarations */
-extern int rkinit RK_PROTO((char *, char *, rkinit_info *, int));
-extern char *rkinit_errmsg RK_PROTO((char *));
-
-#endif /* __RKINIT_H__ */
diff --git a/eBones/include/rkinit_private.h b/eBones/include/rkinit_private.h
deleted file mode 100644
index 7784b6e51d0a..000000000000
--- a/eBones/include/rkinit_private.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * $Id: rkinit_private.h,v 1.4 1993/12/23 16:47:39 dglo Exp $
- * $Source: /usr/sww/share/src/kerberosIV.BSD/include/RCS/rkinit_private.h,v $
- * $Author: dglo $
- *
- * Header file for rkinit library and server internal use
- */
-
-#ifndef __RKINIT_PRIVATE_H__
-#define __RKINIT_PRIVATE_H__
-
-#if !defined(lint) && !defined(SABER)
-static const char *rcsid_rkinit_private_h = "$Id: rkinit_private.h,v 1.4 1993/12/23 16:47:39 dglo Exp $";
-#endif /* lint || SABER */
-
-#include <sys/types.h>
-#include <netinet/in.h>
-
-#ifdef __STDC__
-#define RK_PROTO(x) x
-#else
-#define RK_PROTO(x) ()
-#define const
-#endif /* __STDC__ */
-
-/* Lowest and highest versions supported */
-#define RKINIT_LVERSION 3
-#define RKINIT_HVERSION 3
-
-/* Service to be used; port number to fall back on if service isn't found */
-#define SERVENT "rkinit"
-#define PORT 2108
-
-/* Key for kerberos authentication */
-#define KEY "rcmd"
-
-/* Packet format information */
-#define PKT_TYPE 0
-#define PKT_LEN 1
-#define PKT_DATA (PKT_LEN + sizeof(u_int32_t))
-
-/* Number of retries during message reads */
-#define RETRIES 15
-
-/*
- * Message types for packets. Make sure that rki_mt_to_string is right in
- * rk_util.c
- */
-#define MT_STATUS 0
-#define MT_CVERSION 1
-#define MT_SVERSION 2
-#define MT_RKINIT_INFO 3
-#define MT_SKDC 4
-#define MT_CKDC 5
-#define MT_AUTH 6
-#define MT_DROP 7
-
-/* Miscellaneous protocol constants */
-#define VERSION_INFO_SIZE 2
-
-/* Useful definitions */
-#define BCLEAR(a) bzero((char *)(a), sizeof(a))
-#define SBCLEAR(a) bzero((char *)&(a), sizeof(a))
-#define min(a,b) (((a) < (b)) ? (a) : (b))
-#define max(a,b) (((a) > (b)) ? (a) : (b))
-
-#ifndef TRUE
-#define TRUE 1
-#endif
-
-#ifndef FALSE
-#define FALSE 0
-#endif
-
-#ifdef _JBLEN
-#define SETJMP_TYPEDEFED
-#endif
-
-/* Function declarations */
-int rki_key_proc RK_PROTO((char *, char *, char *, char *, des_cblock *));
-int rki_get_tickets RK_PROTO((int, char *, char *, rkinit_info *));
-int rki_send_packet RK_PROTO((int, char, u_int32_t, const char *));
-int rki_get_packet RK_PROTO((int, u_char, u_int32_t *, char *));
-int rki_setup_rpc RK_PROTO((char *));
-int rki_rpc_exchange_version_info RK_PROTO((int, int, int *, int *));
-int rki_rpc_send_rkinit_info RK_PROTO((rkinit_info *));
-int rki_rpc_get_status RK_PROTO((void));
-int rki_rpc_get_ktext RK_PROTO((int, KTEXT, u_char));
-int rki_rpc_sendauth RK_PROTO((KTEXT));
-int rki_rpc_get_skdc RK_PROTO((KTEXT));
-int rki_rpc_send_ckdc RK_PROTO((MSG_DAT *));
-int rki_get_csaddr RK_PROTO((struct sockaddr_in *, struct sockaddr_in *));
-void rki_drop_server RK_PROTO((void));
-void rki_cleanup_rpc RK_PROTO((void));
-void rki_dmsg RK_PROTO((char *));
-const char *rki_mt_to_string RK_PROTO((int));
-int rki_choose_version RK_PROTO((int *));
-int rki_send_rkinit_info RK_PROTO((int, rkinit_info *));
-#ifdef SETJMP_TYPEDEFED
-void (*rki_setup_timer RK_PROTO((jmp_buf env))) RK_PROTO((int));
-#endif
-void rki_restore_timer RK_PROTO((void (*old_alrm)(int)));
-void rki_cleanup_rpc RK_PROTO((void));
-
-
-#endif /* __RKINIT_PRIVATE_H__ */
diff --git a/eBones/lib/Makefile b/eBones/lib/Makefile
deleted file mode 100644
index 3ca491893434..000000000000
--- a/eBones/lib/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# From: @(#)Makefile 5.1 (Berkeley) 6/25/90
-# $Id: Makefile,v 1.1 1995/09/13 17:23:48 markm Exp $
-
-SUBDIR= libacl libkadm libkdb libkrb librkinit
-
-.include <bsd.subdir.mk>
diff --git a/eBones/lib/Makefile.inc b/eBones/lib/Makefile.inc
deleted file mode 100644
index b0b4ed25a290..000000000000
--- a/eBones/lib/Makefile.inc
+++ /dev/null
@@ -1,4 +0,0 @@
-SHLIB_MAJOR?= 2
-SHLIB_MINOR?= 0
-
-.include "../Makefile.inc"
diff --git a/eBones/lib/libacl/Makefile b/eBones/lib/libacl/Makefile
deleted file mode 100644
index 7fa05c06a09c..000000000000
--- a/eBones/lib/libacl/Makefile
+++ /dev/null
@@ -1,12 +0,0 @@
-# From: @(#)Makefile 5.1 (Berkeley) 6/25/90
-# $Id: Makefile,v 1.4 1995/09/13 17:23:49 markm Exp $
-
-LIB= acl
-CFLAGS+=-DDEBUG -DKERBEROS
-SRCS= acl_files.c
-MAN3= acl_check.3
-MLINKS= acl_check.3 acl_canonicalize_principal.3 \
- acl_check.3 acl_exact_match.3 acl_check.3 acl_add.3 \
- acl_check.3 acl_delete.3 acl_check.3 acl_initialize.3
-
-.include <bsd.lib.mk>
diff --git a/eBones/lib/libacl/acl_check.3 b/eBones/lib/libacl/acl_check.3
deleted file mode 100644
index 2e5129c47038..000000000000
--- a/eBones/lib/libacl/acl_check.3
+++ /dev/null
@@ -1,183 +0,0 @@
-.\" from: acl_check.3,v 4.1 89/01/23 11:06:54 jtkohl Exp $
-.\" $Id: acl_check.3,v 1.1.1.1 1994/09/30 14:50:05 csgr Exp $
-.\" Copyright 1989 by the Massachusetts Institute of Technology.
-.\"
-.\" For copying and distribution information,
-.\" please see the file <Copyright.MIT>.
-.\"
-.TH ACL_CHECK 3 "Kerberos Version 4.0" "MIT Project Athena"
-.SH NAME
-acl_canonicalize_principal, acl_check, acl_exact_match, acl_add,
-acl_delete, acl_initialize \- Access control list routines
-.SH SYNOPSIS
-.nf
-.nj
-.ft B
-cc <files> \-lacl \-lkrb
-.PP
-.ft B
-#include <kerberosIV/krb.h>
-.PP
-.ft B
-acl_canonicalize_principal(principal, buf)
-char *principal;
-char *buf;
-.PP
-.ft B
-acl_check(acl, principal)
-char *acl;
-char *principal;
-.PP
-.ft B
-acl_exact_match(acl, principal)
-char *acl;
-char *principal;
-.PP
-.ft B
-acl_add(acl, principal)
-char *acl;
-char *principal;
-.PP
-.ft B
-acl_delete(acl, principal)
-char *acl;
-char *principal;
-.PP
-.ft B
-acl_initialize(acl_file, mode)
-char *acl_file;
-int mode;
-.fi
-.ft R
-.SH DESCRIPTION
-.SS Introduction
-.PP
-An access control list (ACL) is a list of principals, where each
-principal is represented by a text string which cannot contain
-whitespace. The library allows application programs to refer to named
-access control lists to test membership and to atomically add and
-delete principals using a natural and intuitive interface. At
-present, the names of access control lists are required to be Unix
-filenames, and refer to human-readable Unix files; in the future, when
-a networked ACL server is implemented, the names may refer to a
-different namespace specific to the ACL service.
-.PP
-.SS Principal Names
-.PP
-Principal names have the form
-.nf
-.in +5n
-<name>[.<instance>][@<realm>]
-.in -5n
-e.g.:
-.in +5n
-asp
-asp.root
-asp@ATHENA.MIT.EDU
-asp.@ATHENA.MIT.EDU
-asp.root@ATHENA.MIT.EDU
-.in -5n
-.fi
-It is possible for principals to be underspecified. If an instance is
-missing, it is assumed to be "". If realm is missing, it is assumed
-to be the local realm as determined by
-.IR krb_get_lrealm (3).
-The canonical form contains all of name, instance,
-and realm; the acl_add and acl_delete routines will always
-leave the file in that form. Note that the canonical form of
-asp@ATHENA.MIT.EDU is actually asp.@ATHENA.MIT.EDU.
-.SS Routines
-.PP
-.I acl_canonicalize_principal
-stores the canonical form of
-.I principal
-in
-.IR buf .
-.I Buf
-must contain enough
-space to store a principal, given the limits on the sizes of name,
-instance, and realm specified as ANAME_SZ, INST_SZ, and REALM_SZ,
-respectively, in
-.IR /usr/include/kerberosIV/krb.h .
-.PP
-.I acl_check
-returns nonzero if
-.I principal
-appears in
-.IR acl .
-Returns 0 if principal
-does not appear in acl, or if an error occurs. Canonicalizes
-principal before checking, and allows the ACL to contain wildcards. The
-only supported wildcards are entries of the form
-name.*@realm, *.*@realm, and *.*@*. An asterisk matches any value for the
-its component field. For example, "jtkohl.*@*" would match principal
-jtkohl, with any instance and any realm.
-.PP
-.I acl_exact_match
-performs like
-.IR acl_check ,
-but does no canonicalization or wildcard matching.
-.PP
-.I acl_add
-atomically adds
-.I principal
-to
-.IR acl .
-Returns 0 if successful, nonzero otherwise. It is considered a failure
-if
-.I principal
-is already in
-.IR acl .
-This routine will canonicalize
-.IR principal ,
-but will treat wildcards literally.
-.PP
-.I acl_delete
-atomically deletes
-.I principal
-from
-.IR acl .
-Returns 0 if successful,
-nonzero otherwise. It is considered a failure if
-.I principal
-is not
-already in
-.IR acl .
-This routine will canonicalize
-.IR principal ,
-but will treat wildcards literally.
-.PP
-.I acl_initialize
-initializes
-.IR acl_file .
-If the file
-.I acl_file
-does not exist,
-.I acl_initialize
-creates it with mode
-.IR mode .
-If the file
-.I acl_file
-exists,
-.I acl_initialize
-removes all members. Returns 0 if successful,
-nonzero otherwise. WARNING: Mode argument is likely to change with
-the eventual introduction of an ACL service.
-.SH NOTES
-In the presence of concurrency, there is a very small chance that
-.I acl_add
-or
-.I acl_delete
-could report success even though it would have
-had no effect. This is a necessary side effect of using lock files
-for concurrency control rather than flock(2), which is not supported
-by NFS.
-.PP
-The current implementation caches ACLs in memory in a hash-table
-format for increased efficiency in checking membership; one effect of
-the caching scheme is that one file descriptor will be kept open for
-each ACL cached, up to a maximum of 8.
-.SH SEE ALSO
-kerberos(3), krb_get_lrealm(3)
-.SH AUTHOR
-James Aspnes (MIT Project Athena)
diff --git a/eBones/lib/libacl/acl_files.c b/eBones/lib/libacl/acl_files.c
deleted file mode 100644
index 7670f2aa22aa..000000000000
--- a/eBones/lib/libacl/acl_files.c
+++ /dev/null
@@ -1,555 +0,0 @@
-/*
- *
- * Copyright 1987,1989 by the Massachusetts Institute of Technology.
- *
- * For copying and distribution information, please see the file
- * <mit-copyright.h>.
- *
- * from: acl_files.c,v 4.4 89/12/19 13:30:53 jtkohl Exp $
- * $Id: acl_files.c,v 1.5 1995/09/07 20:50:26 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: acl_files.c,v 1.5 1995/09/07 20:50:26 mark Exp $";
-#endif lint
-#endif
-
-
-/*** Routines for manipulating access control list files ***/
-
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <strings.h>
-#include <sys/file.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/errno.h>
-#include <ctype.h>
-#include "krb.h"
-
-__BEGIN_DECLS
-static int acl_abort __P((char *, FILE *));
-__END_DECLS
-
-#ifndef KRB_REALM
-#define KRB_REALM "ATHENA.MIT.EDU"
-#endif
-
-/* "aname.inst@realm" */
-#define MAX_PRINCIPAL_SIZE (ANAME_SZ + INST_SZ + REALM_SZ + 3)
-#define INST_SEP '.'
-#define REALM_SEP '@'
-
-#define LINESIZE 2048 /* Maximum line length in an acl file */
-
-#define NEW_FILE "%s.~NEWACL~" /* Format for name of altered acl file */
-#define WAIT_TIME 300 /* Maximum time allowed write acl file */
-
-#define CACHED_ACLS 8 /* How many acls to cache */
- /* Each acl costs 1 open file descriptor */
-#define ACL_LEN 16 /* Twice a reasonable acl length */
-
-#define MAX(a,b) (((a)>(b))?(a):(b))
-#define MIN(a,b) (((a)<(b))?(a):(b))
-
-#define COR(a,b) ((a!=NULL)?(a):(b))
-
-/* Canonicalize a principal name */
-/* If instance is missing, it becomes "" */
-/* If realm is missing, it becomes the local realm */
-/* Canonicalized form is put in canon, which must be big enough to hold
- MAX_PRINCIPAL_SIZE characters */
-void
-acl_canonicalize_principal(principal, canon)
-char *principal;
-char *canon;
-{
- char *dot, *atsign, *end;
- int len;
-
- dot = index(principal, INST_SEP);
- atsign = index(principal, REALM_SEP);
-
- /* Maybe we're done already */
- if(dot != NULL && atsign != NULL) {
- if(dot < atsign) {
- /* It's for real */
- /* Copy into canon */
- strncpy(canon, principal, MAX_PRINCIPAL_SIZE);
- canon[MAX_PRINCIPAL_SIZE-1] = '\0';
- return;
- } else {
- /* Nope, it's part of the realm */
- dot = NULL;
- }
- }
-
- /* No such luck */
- end = principal + strlen(principal);
-
- /* Get the principal name */
- len = MIN(ANAME_SZ, COR(dot, COR(atsign, end)) - principal);
- strncpy(canon, principal, len);
- canon += len;
-
- /* Add INST_SEP */
- *canon++ = INST_SEP;
-
- /* Get the instance, if it exists */
- if(dot != NULL) {
- ++dot;
- len = MIN(INST_SZ, COR(atsign, end) - dot);
- strncpy(canon, dot, len);
- canon += len;
- }
-
- /* Add REALM_SEP */
- *canon++ = REALM_SEP;
-
- /* Get the realm, if it exists */
- /* Otherwise, default to local realm */
- if(atsign != NULL) {
- ++atsign;
- len = MIN(REALM_SZ, end - atsign);
- strncpy(canon, atsign, len);
- canon += len;
- *canon++ = '\0';
- } else if(krb_get_lrealm(canon, 1) != KSUCCESS) {
- strcpy(canon, KRB_REALM);
- }
-}
-
-/* Get a lock to modify acl_file */
-/* Return new FILE pointer */
-/* or NULL if file cannot be modified */
-/* REQUIRES WRITE PERMISSION TO CONTAINING DIRECTORY */
-static FILE *
-acl_lock_file(acl_file)
-char *acl_file;
-{
- struct stat s;
- char new[LINESIZE];
- int nfd;
- FILE *nf;
- int mode;
-
- if(stat(acl_file, &s) < 0) return(NULL);
- mode = s.st_mode;
- sprintf(new, NEW_FILE, acl_file);
- for(;;) {
- /* Open the new file */
- if((nfd = open(new, O_WRONLY|O_CREAT|O_EXCL, mode)) < 0) {
- if(errno == EEXIST) {
- /* Maybe somebody got here already, maybe it's just old */
- if(stat(new, &s) < 0) return(NULL);
- if(time(0) - s.st_ctime > WAIT_TIME) {
- /* File is stale, kill it */
- unlink(new);
- continue;
- } else {
- /* Wait and try again */
- sleep(1);
- continue;
- }
- } else {
- /* Some other error, we lose */
- return(NULL);
- }
- }
-
- /* If we got to here, the lock file is ours and ok */
- /* Reopen it under stdio */
- if((nf = fdopen(nfd, "w")) == NULL) {
- /* Oops, clean up */
- unlink(new);
- }
- return(nf);
- }
-}
-
-/* Commit changes to acl_file written onto FILE *f */
-/* Returns zero if successful */
-/* Returns > 0 if lock was broken */
-/* Returns < 0 if some other error occurs */
-/* Closes f */
-static int
-acl_commit(acl_file, f)
-char *acl_file;
-FILE *f;
-{
- char new[LINESIZE];
- int ret;
- struct stat s;
-
- sprintf(new, NEW_FILE, acl_file);
- if(fflush(f) < 0
- || fstat(fileno(f), &s) < 0
- || s.st_nlink == 0) {
- acl_abort(acl_file, f);
- return(-1);
- }
-
- ret = rename(new, acl_file);
- fclose(f);
- return(ret);
-}
-
-/*
- * Abort changes to acl_file written onto FILE *f
- * Returns 0 if successful, < 0 otherwise
- * Closes f
- */
-static int
-acl_abort(acl_file, f)
-char *acl_file;
-FILE *f;
-{
- char new[LINESIZE];
- int ret;
- struct stat s;
-
- /* make sure we aren't nuking someone else's file */
- if(fstat(fileno(f), &s) < 0 || s.st_nlink == 0) {
- fclose(f);
- return(-1);
- } else {
- sprintf(new, NEW_FILE, acl_file);
- ret = unlink(new);
- fclose(f);
- return(ret);
- }
-}
-
-/* Initialize an acl_file */
-/* Creates the file with permissions perm if it does not exist */
-/* Erases it if it does */
-/* Returns return value of acl_commit */
-int
-acl_initialize(acl_file, perm)
-char *acl_file;
-int perm;
-{
- FILE *new;
- int fd;
-
- /* Check if the file exists already */
- if((new = acl_lock_file(acl_file)) != NULL) {
- return(acl_commit(acl_file, new));
- } else {
- /* File must be readable and writable by owner */
- if((fd = open(acl_file, O_CREAT|O_EXCL, perm|0600)) < 0) {
- return(-1);
- } else {
- close(fd);
- return(0);
- }
- }
-}
-
-/* Eliminate all whitespace character in buf */
-/* Modifies its argument */
-static void
-nuke_whitespace(buf)
-char *buf;
-{
- register char *pin, *pout;
-
- for(pin = pout = buf; *pin != '\0'; pin++)
- if(!isspace(*pin)) *pout++ = *pin;
- *pout = '\0'; /* Terminate the string */
-}
-
-/* Hash table stuff */
-
-struct hashtbl {
- int size; /* Max number of entries */
- int entries; /* Actual number of entries */
- char **tbl; /* Pointer to start of table */
-};
-
-/* Make an empty hash table of size s */
-static struct hashtbl *
-make_hash(size)
-int size;
-{
- struct hashtbl *h;
-
- if(size < 1) size = 1;
- h = (struct hashtbl *) malloc(sizeof(struct hashtbl));
- h->size = size;
- h->entries = 0;
- h->tbl = (char **) calloc(size, sizeof(char *));
- return(h);
-}
-
-/* Destroy a hash table */
-static void
-destroy_hash(h)
-struct hashtbl *h;
-{
- int i;
-
- for(i = 0; i < h->size; i++) {
- if(h->tbl[i] != NULL) free(h->tbl[i]);
- }
- free(h->tbl);
- free(h);
-}
-
-/* Compute hash value for a string */
-static unsigned
-hashval(s)
-register char *s;
-{
- register unsigned hv;
-
- for(hv = 0; *s != '\0'; s++) {
- hv ^= ((hv << 3) ^ *s);
- }
- return(hv);
-}
-
-/* Add an element to a hash table */
-static void
-add_hash(h, el)
-struct hashtbl *h;
-char *el;
-{
- unsigned hv;
- char *s;
- char **old;
- int i;
-
- /* Make space if it isn't there already */
- if(h->entries + 1 > (h->size >> 1)) {
- old = h->tbl;
- h->tbl = (char **) calloc(h->size << 1, sizeof(char *));
- for(i = 0; i < h->size; i++) {
- if(old[i] != NULL) {
- hv = hashval(old[i]) % (h->size << 1);
- while(h->tbl[hv] != NULL) hv = (hv+1) % (h->size << 1);
- h->tbl[hv] = old[i];
- }
- }
- h->size = h->size << 1;
- free(old);
- }
-
- hv = hashval(el) % h->size;
- while(h->tbl[hv] != NULL && strcmp(h->tbl[hv], el)) hv = (hv+1) % h->size;
- s = malloc(strlen(el)+1);
- strcpy(s, el);
- h->tbl[hv] = s;
- h->entries++;
-}
-
-/* Returns nonzero if el is in h */
-static int
-check_hash(h, el)
-struct hashtbl *h;
-char *el;
-{
- unsigned hv;
-
- for(hv = hashval(el) % h->size;
- h->tbl[hv] != NULL;
- hv = (hv + 1) % h->size) {
- if(!strcmp(h->tbl[hv], el)) return(1);
- }
- return(0);
-}
-
-struct acl {
- char filename[LINESIZE]; /* Name of acl file */
- int fd; /* File descriptor for acl file */
- struct stat status; /* File status at last read */
- struct hashtbl *acl; /* Acl entries */
-};
-
-static struct acl acl_cache[CACHED_ACLS];
-
-static int acl_cache_count = 0;
-static int acl_cache_next = 0;
-
-/* Returns < 0 if unsuccessful in loading acl */
-/* Returns index into acl_cache otherwise */
-/* Note that if acl is already loaded, this is just a lookup */
-static int
-acl_load(name)
-char *name;
-{
- int i;
- FILE *f;
- struct stat s;
- char buf[MAX_PRINCIPAL_SIZE];
- char canon[MAX_PRINCIPAL_SIZE];
-
- /* See if it's there already */
- for(i = 0; i < acl_cache_count; i++) {
- if(!strcmp(acl_cache[i].filename, name)
- && acl_cache[i].fd >= 0) goto got_it;
- }
-
- /* It isn't, load it in */
- /* maybe there's still room */
- if(acl_cache_count < CACHED_ACLS) {
- i = acl_cache_count++;
- } else {
- /* No room, clean one out */
- i = acl_cache_next;
- acl_cache_next = (acl_cache_next + 1) % CACHED_ACLS;
- close(acl_cache[i].fd);
- if(acl_cache[i].acl) {
- destroy_hash(acl_cache[i].acl);
- acl_cache[i].acl = (struct hashtbl *) 0;
- }
- }
-
- /* Set up the acl */
- strcpy(acl_cache[i].filename, name);
- if((acl_cache[i].fd = open(name, O_RDONLY, 0)) < 0) return(-1);
- /* Force reload */
- acl_cache[i].acl = (struct hashtbl *) 0;
-
- got_it:
- /*
- * See if the stat matches
- *
- * Use stat(), not fstat(), as the file may have been re-created by
- * acl_add or acl_delete. If this happens, the old inode will have
- * no changes in the mod-time and the following test will fail.
- */
- if(stat(acl_cache[i].filename, &s) < 0) return(-1);
- if(acl_cache[i].acl == (struct hashtbl *) 0
- || s.st_nlink != acl_cache[i].status.st_nlink
- || s.st_mtime != acl_cache[i].status.st_mtime
- || s.st_ctime != acl_cache[i].status.st_ctime) {
- /* Gotta reload */
- if(acl_cache[i].fd >= 0) close(acl_cache[i].fd);
- if((acl_cache[i].fd = open(name, O_RDONLY, 0)) < 0) return(-1);
- if((f = fdopen(acl_cache[i].fd, "r")) == NULL) return(-1);
- if(acl_cache[i].acl) destroy_hash(acl_cache[i].acl);
- acl_cache[i].acl = make_hash(ACL_LEN);
- while(fgets(buf, sizeof(buf), f) != NULL) {
- nuke_whitespace(buf);
- acl_canonicalize_principal(buf, canon);
- add_hash(acl_cache[i].acl, canon);
- }
- fclose(f);
- acl_cache[i].status = s;
- }
- return(i);
-}
-
-/* Returns nonzero if it can be determined that acl contains principal */
-/* Principal is not canonicalized, and no wildcarding is done */
-int
-acl_exact_match(acl, principal)
-char *acl;
-char *principal;
-{
- int idx;
-
- return((idx = acl_load(acl)) >= 0
- && check_hash(acl_cache[idx].acl, principal));
-}
-
-/* Returns nonzero if it can be determined that acl contains principal */
-/* Recognizes wildcards in acl of the form
- name.*@realm, *.*@realm, and *.*@* */
-int
-acl_check(acl, principal)
-char *acl;
-char *principal;
-{
- char buf[MAX_PRINCIPAL_SIZE];
- char canon[MAX_PRINCIPAL_SIZE];
- char *realm;
-
- acl_canonicalize_principal(principal, canon);
-
- /* Is it there? */
- if(acl_exact_match(acl, canon)) return(1);
-
- /* Try the wildcards */
- realm = index(canon, REALM_SEP);
- *index(canon, INST_SEP) = '\0'; /* Chuck the instance */
-
- sprintf(buf, "%s.*%s", canon, realm);
- if(acl_exact_match(acl, buf)) return(1);
-
- sprintf(buf, "*.*%s", realm);
- if(acl_exact_match(acl, buf) || acl_exact_match(acl, "*.*@*")) return(1);
-
- return(0);
-}
-
-/* Adds principal to acl */
-/* Wildcards are interpreted literally */
-int
-acl_add(acl, principal)
-char *acl;
-char *principal;
-{
- int idx;
- int i;
- FILE *new;
- char canon[MAX_PRINCIPAL_SIZE];
-
- acl_canonicalize_principal(principal, canon);
-
- if((new = acl_lock_file(acl)) == NULL) return(-1);
- if((acl_exact_match(acl, canon))
- || (idx = acl_load(acl)) < 0) {
- acl_abort(acl, new);
- return(-1);
- }
- /* It isn't there yet, copy the file and put it in */
- for(i = 0; i < acl_cache[idx].acl->size; i++) {
- if(acl_cache[idx].acl->tbl[i] != NULL) {
- if(fputs(acl_cache[idx].acl->tbl[i], new) == NULL
- || putc('\n', new) != '\n') {
- acl_abort(acl, new);
- return(-1);
- }
- }
- }
- fputs(canon, new);
- putc('\n', new);
- return(acl_commit(acl, new));
-}
-
-/* Removes principal from acl */
-/* Wildcards are interpreted literally */
-int
-acl_delete(acl, principal)
-char *acl;
-char *principal;
-{
- int idx;
- int i;
- FILE *new;
- char canon[MAX_PRINCIPAL_SIZE];
-
- acl_canonicalize_principal(principal, canon);
-
- if((new = acl_lock_file(acl)) == NULL) return(-1);
- if((!acl_exact_match(acl, canon))
- || (idx = acl_load(acl)) < 0) {
- acl_abort(acl, new);
- return(-1);
- }
- /* It isn't there yet, copy the file and put it in */
- for(i = 0; i < acl_cache[idx].acl->size; i++) {
- if(acl_cache[idx].acl->tbl[i] != NULL
- && strcmp(acl_cache[idx].acl->tbl[i], canon)) {
- fputs(acl_cache[idx].acl->tbl[i], new);
- putc('\n', new);
- }
- }
- return(acl_commit(acl, new));
-}
-
diff --git a/eBones/lib/libacl/acl_files.doc b/eBones/lib/libacl/acl_files.doc
deleted file mode 100644
index 4096f9bbb3d3..000000000000
--- a/eBones/lib/libacl/acl_files.doc
+++ /dev/null
@@ -1,107 +0,0 @@
-PROTOTYPE ACL LIBRARY
-
-Introduction
-
-An access control list (ACL) is a list of principals, where each
-principal is is represented by a text string which cannot contain
-whitespace. The library allows application programs to refer to named
-access control lists to test membership and to atomically add and
-delete principals using a natural and intuitive interface. At
-present, the names of access control lists are required to be Unix
-filenames, and refer to human-readable Unix files; in the future, when
-a networked ACL server is implemented, the names may refer to a
-different namespace specific to the ACL service.
-
-
-Usage
-
-cc <files> -lacl -lkrb.
-
-
-
-Principal Names
-
-Principal names have the form
-
-<name>[.<instance>][@<realm>]
-
-e.g.
-
-asp
-asp.root
-asp@ATHENA.MIT.EDU
-asp.@ATHENA.MIT.EDU
-asp.root@ATHENA.MIT.EDU
-
-It is possible for principals to be underspecified. If instance is
-missing, it is assumed to be "". If realm is missing, it is assumed
-to be local_realm. The canonical form contains all of name, instance,
-and realm; the acl_add and acl_delete routines will always
-leave the file in that form. Note that the canonical form of
-asp@ATHENA.MIT.EDU is actually asp.@ATHENA.MIT.EDU.
-
-
-Routines
-
-acl_canonicalize_principal(principal, buf)
-char *principal;
-char *buf; /*RETVAL*/
-
-Store the canonical form of principal in buf. Buf must contain enough
-space to store a principal, given the limits on the sizes of name,
-instance, and realm specified in /usr/include/krb.h.
-
-acl_check(acl, principal)
-char *acl;
-char *principal;
-
-Returns nonzero if principal appears in acl. Returns 0 if principal
-does not appear in acl, or if an error occurs. Canonicalizes
-principal before checking, and allows the ACL to contain wildcards.
-
-acl_exact_match(acl, principal)
-char *acl;
-char *principal;
-
-Like acl_check, but does no canonicalization or wildcarding.
-
-acl_add(acl, principal)
-char *acl;
-char *principal;
-
-Atomically adds principal to acl. Returns 0 if successful, nonzero
-otherwise. It is considered a failure if principal is already in acl.
-This routine will canonicalize principal, but will treat wildcards
-literally.
-
-acl_delete(acl, principal)
-char *acl;
-char *principal;
-
-Atomically deletes principal from acl. Returns 0 if successful,
-nonzero otherwise. It is consider a failure if principal is not
-already in acl. This routine will canonicalize principal, but will
-treat wildcards literally.
-
-acl_initialize(acl, mode)
-char *acl;
-int mode;
-
-Initialize acl. If acl file does not exist, creates it with mode
-mode. If acl exists, removes all members. Returns 0 if successful,
-nonzero otherwise. WARNING: Mode argument is likely to change with
-the eventual introduction of an ACL service.
-
-
-Known problems
-
-In the presence of concurrency, there is a very small chance that
-acl_add or acl_delete could report success even though it would have
-had no effect. This is a necessary side effect of using lock files
-for concurrency control rather than flock(2), which is not supported
-by NFS.
-
-The current implementation caches ACLs in memory in a hash-table
-format for increased efficiency in checking membership; one effect of
-the caching scheme is that one file descriptor will be kept open for
-each ACL cached, up to a maximum of 8.
diff --git a/eBones/lib/libkadm/EXPORTABLE b/eBones/lib/libkadm/EXPORTABLE
deleted file mode 100644
index e47848378330..000000000000
--- a/eBones/lib/libkadm/EXPORTABLE
+++ /dev/null
@@ -1,4 +0,0 @@
-The files in this directory are believed to be exportable.
-
--GAWollman
-
diff --git a/eBones/lib/libkadm/Makefile b/eBones/lib/libkadm/Makefile
deleted file mode 100644
index 955cc2ae40c1..000000000000
--- a/eBones/lib/libkadm/Makefile
+++ /dev/null
@@ -1,23 +0,0 @@
-# From: @(#)Makefile 5.1 (Berkeley) 6/25/90
-# $Id: Makefile,v 1.8 1995/09/15 06:20:23 gibbs Exp $
-
-LIB= kadm
-
-SRCS= kadm_err.c kadm_stream.c kadm_supp.c kadm_cli_wrap.c
-CFLAGS+= -I. -I${.CURDIR} -I${KRBOBJDIR} -DPOSIX
-
-beforeinstall: kadm_err.c
- -cd ${.CURDIR}; cmp -s kadm.h \
- ${DESTDIR}/usr/include/kerberosIV/kadm.h || \
- install -c -o ${BINOWN} -g ${BINGRP} -m 444 kadm.h \
- ${DESTDIR}/usr/include/kerberosIV
- -cd ${.OBJDIR}; cmp -s kadm_err.h \
- ${DESTDIR}/usr/include/kerberosIV/kadm_err.h || \
- install -c -o ${BINOWN} -g ${BINGRP} -m 444 kadm_err.h \
- ${DESTDIR}/usr/include/kerberosIV
-
-.include <bsd.lib.mk>
-
-kadm_err.c: ${KADMOBJDIR}/kadm_err.h
-
-kadm_cli_wrap.o: ${KRBOBJDIR}/krb_err.h
diff --git a/eBones/lib/libkadm/kadm.h b/eBones/lib/libkadm/kadm.h
deleted file mode 100644
index 21a23bb8f8d9..000000000000
--- a/eBones/lib/libkadm/kadm.h
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * $Source: /usr/cvs/src/eBones/libkadm/kadm.h,v $
- * $Author: mark $
- * Header: /afs/athena.mit.edu/astaff/project/kerberos/src/include/RCS/kadm.h,v 4.2 89/09/26 09:15:20 jtkohl Exp
- *
- * Copyright 1988 by the Massachusetts Institute of Technology.
- *
- * For copying and distribution information, please see the file
- * Copyright.MIT.
- *
- * Definitions for Kerberos administration server & client
- */
-
-#ifndef KADM_DEFS
-#define KADM_DEFS
-
-/*
- * kadm.h
- * Header file for the fourth attempt at an admin server
- * Doug Church, December 28, 1989, MIT Project Athena
- */
-
-/* for those broken Unixes without this defined... should be in sys/param.h */
-#ifndef MAXHOSTNAMELEN
-#define MAXHOSTNAMELEN 64
-#endif
-
-#include <stdlib.h>
-#include <sys/types.h>
-#include <netinet/in.h>
-#include <krb.h>
-#include <krb_db.h>
-#include <des.h>
-
-/* The global structures for the client and server */
-typedef struct {
- struct sockaddr_in admin_addr;
- struct sockaddr_in my_addr;
- int my_addr_len;
- int admin_fd; /* file descriptor for link to admin server */
- char sname[ANAME_SZ]; /* the service name */
- char sinst[INST_SZ]; /* the services instance */
- char krbrlm[REALM_SZ];
-} Kadm_Client;
-
-typedef struct { /* status of the server, i.e the parameters */
- int inter; /* Space for command line flags */
- char *sysfile; /* filename of server */
-} admin_params; /* Well... it's the admin's parameters */
-
-/* Largest password length to be supported */
-#define MAX_KPW_LEN 128
-
-/* Largest packet the admin server will ever allow itself to return */
-#define KADM_RET_MAX 2048
-
-/* That's right, versions are 8 byte strings */
-#define KADM_VERSTR "KADM0.0A"
-#define KADM_ULOSE "KYOULOSE" /* sent back when server can't
- decrypt client's msg */
-#define KADM_VERSIZE strlen(KADM_VERSTR)
-
-/* the lookups for the server instances */
-#define PWSERV_NAME "changepw"
-#define KADM_SNAME "kerberos_master"
-#define KADM_SINST "kerberos"
-
-/* Attributes fields constants and macros */
-#define ALLOC 2
-#define RESERVED 3
-#define DEALLOC 4
-#define DEACTIVATED 5
-#define ACTIVE 6
-
-/* Kadm_vals structure for passing db fields into the server routines */
-#define FLDSZ 4
-
-typedef struct {
- u_char fields[FLDSZ]; /* The active fields in this struct */
- char name[ANAME_SZ];
- char instance[INST_SZ];
- unsigned long key_low;
- unsigned long key_high;
- unsigned long exp_date;
- unsigned short attributes;
- unsigned char max_life;
-} Kadm_vals; /* The basic values structure in Kadm */
-
-/* Kadm_vals structure for passing db fields into the server routines */
-#define FLDSZ 4
-
-/* Need to define fields types here */
-#define KADM_NAME 31
-#define KADM_INST 30
-#define KADM_EXPDATE 29
-#define KADM_ATTR 28
-#define KADM_MAXLIFE 27
-#define KADM_DESKEY 26
-
-/* To set a field entry f in a fields structure d */
-#define SET_FIELD(f,d) (d[3-(f/8)]|=(1<<(f%8)))
-
-/* To set a field entry f in a fields structure d */
-#define CLEAR_FIELD(f,d) (d[3-(f/8)]&=(~(1<<(f%8))))
-
-/* Is field f in fields structure d */
-#define IS_FIELD(f,d) (d[3-(f/8)]&(1<<(f%8)))
-
-/* Various return codes */
-#define KADM_SUCCESS 0
-
-#define WILDCARD_STR "*"
-
-enum acl_types {
-ADDACL,
-GETACL,
-MODACL
-};
-
-/* Various opcodes for the admin server's functions */
-#define CHANGE_PW 2
-#define ADD_ENT 3
-#define MOD_ENT 4
-#define GET_ENT 5
-
-/* XXX This doesn't belong here!!! */
-#ifdef POSIX
-typedef void sigtype;
-#else
-typedef int sigtype;
-#endif
-
-int vals_to_stream(Kadm_vals *dt_in, u_char **dt_out);
-int stream_to_vals(u_char *dt_in, Kadm_vals *dt_out, int maxlen);
-
-int build_field_header(u_char *cont, u_char **st);
-int check_field_header(u_char *st, u_char *cont, int maxlen);
-
-int stv_string(u_char *st, char *dat, int loc, int stlen, int maxlen);
-int stv_short(u_char *st, u_short *dat, int loc, int maxlen);
-int stv_long(u_char *st, u_long *dat, int loc, int maxlen);
-int stv_char(u_char *st, u_char *dat, int loc, int maxlen);
-
-int vts_string(char *dat, u_char **st, int loc);
-int vts_short(u_short dat, u_char **st, int loc);
-int vts_long(u_long dat, u_char **st, int loc);
-int vts_char(u_char dat, u_char **st, int loc);
-
-int kadm_cli_conn(void);
-void kadm_cli_disconn(void);
-int kadm_cli_send(u_char *st_dat, int st_siz, u_char **ret_dat, int *ret_siz);
-int kadm_cli_out(u_char *dat, int dat_len, u_char **ret_dat, int *ret_siz);
-int kadm_cli_keyd(des_cblock s_k, des_key_schedule s_s);
-
-int kadm_get(Kadm_vals *vals, u_char fl[4]);
-int kadm_mod(Kadm_vals *vals1, Kadm_vals *vals2);
-int kadm_add(Kadm_vals *vals);
-int kadm_change_pw(des_cblock newkey);
-int kadm_init_link(char n[], char i[], char r[]);
-void prin_vals(Kadm_vals *vals);
-void kadm_vals_to_prin(u_char fields[FLDSZ], Principal *new, Kadm_vals *old);
-void kadm_prin_to_vals(u_char fields[FLDSZ], Kadm_vals *new, Principal *old);
-
-#endif KADM_DEFS
diff --git a/eBones/lib/libkadm/kadm_cli_wrap.c b/eBones/lib/libkadm/kadm_cli_wrap.c
deleted file mode 100644
index e25439dbba2b..000000000000
--- a/eBones/lib/libkadm/kadm_cli_wrap.c
+++ /dev/null
@@ -1,509 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- *
- * For copying and distribution information, please see the file
- * Copyright.MIT.
- *
- * Kerberos administration server client-side routines
- */
-
-#if 0
-#ifndef lint
-static char rcsid_kadm_cli_wrap_c[] =
-"from: Id: kadm_cli_wrap.c,v 4.6 89/12/30 20:09:45 qjb Exp";
-static const char rcsid[] =
- "$Id: kadm_cli_wrap.c,v 1.1 1995/07/18 16:40:23 mark Exp $";
-#endif lint
-#endif
-
-/*
- * kadm_cli_wrap.c the client side wrapping of the calls to the admin server
- */
-
-#include <unistd.h>
-#include <string.h>
-#include <sys/types.h>
-#include <errno.h>
-#include <signal.h>
-#include <netdb.h>
-#include <sys/socket.h>
-#include <kadm.h>
-#include <kadm_err.h>
-#include <krb_err.h>
-
-#ifndef NULL
-#define NULL 0
-#endif
-
-static Kadm_Client client_parm;
-
-/* Macros for use in returning data... used in kadm_cli_send */
-#define RET_N_FREE(r) {clear_secrets(); free((char *)act_st); free((char *)priv_pak); return r;}
-
-/* Keys for use in the transactions */
-static des_cblock sess_key; /* to be filled in by kadm_cli_keyd */
-static Key_schedule sess_sched;
-
-static void
-clear_secrets()
-{
- bzero((char *)sess_key, sizeof(sess_key));
- bzero((char *)sess_sched, sizeof(sess_sched));
-}
-
-/*
- * kadm_init_link
- * receives : name, inst, realm
- *
- * initializes client parm, the Kadm_Client structure which holds the
- * data about the connection between the server and client, the services
- * used, the locations and other fun things
- */
-int
-kadm_init_link(n, i, r)
-char n[];
-char i[];
-char r[];
-{
- struct servent *sep; /* service we will talk to */
- struct hostent *hop; /* host we will talk to */
- char adm_hostname[MAXHOSTNAMELEN];
-
- (void) init_kadm_err_tbl();
- (void) init_krb_err_tbl();
- (void) strcpy(client_parm.sname, n);
- (void) strcpy(client_parm.sinst, i);
- (void) strcpy(client_parm.krbrlm, r);
- client_parm.admin_fd = -1;
-
- /* set up the admin_addr - fetch name of admin host */
- if (krb_get_admhst(adm_hostname, client_parm.krbrlm, 1) != KSUCCESS)
- return KADM_NO_HOST;
- if ((hop = gethostbyname(adm_hostname)) == NULL)
- return KADM_UNK_HOST; /* couldnt find the admin servers
- * address */
- if ((sep = getservbyname(KADM_SNAME, "tcp")) == NULL)
- return KADM_NO_SERV; /* couldnt find the admin service */
- bzero((char *) &client_parm.admin_addr,
- sizeof(client_parm.admin_addr));
- client_parm.admin_addr.sin_family = hop->h_addrtype;
- bcopy((char *) hop->h_addr, (char *) &client_parm.admin_addr.sin_addr,
- hop->h_length);
- client_parm.admin_addr.sin_port = sep->s_port;
-
- return KADM_SUCCESS;
-} /* procedure kadm_init_link */
-
-/*
- * kadm_change_pw
- * recieves : key
- *
- * Replaces the password (i.e. des key) of the caller with that specified in
- * key. Returns no actual data from the master server, since this is called
- * by a user
- */
-int
-kadm_change_pw(newkey)
-des_cblock newkey; /* The DES form of the users key */
-{
- int stsize, retc; /* stream size and return code */
- u_char *send_st; /* send stream */
- u_char *ret_st;
- int ret_sz;
- u_long keytmp;
-
- if ((retc = kadm_cli_conn()) != KADM_SUCCESS)
- return(retc);
- /* possible problem with vts_long on a non-multiple of four boundary */
-
- stsize = 0; /* start of our output packet */
- send_st = (u_char *) malloc(1);/* to make it reallocable */
- send_st[stsize++] = (u_char) CHANGE_PW;
-
- /* change key to stream */
-
- bcopy((char *) (((long *) newkey) + 1), (char *) &keytmp, 4);
- keytmp = htonl(keytmp);
- stsize += vts_long(keytmp, &send_st, stsize);
-
- bcopy((char *) newkey, (char *) &keytmp, 4);
- keytmp = htonl(keytmp);
- stsize += vts_long(keytmp, &send_st, stsize);
-
- retc = kadm_cli_send(send_st, stsize, &ret_st, &ret_sz);
- free((char *)send_st);
- if (retc == KADM_SUCCESS) {
- free((char *)ret_st);
- }
- kadm_cli_disconn();
- return(retc);
-}
-
-/*
- * kadm_add
- * receives : vals
- * returns : vals
- *
- * Adds and entry containing values to the database returns the values of the
- * entry, so if you leave certain fields blank you will be able to determine
- * the default values they are set to
- */
-int
-kadm_add(vals)
-Kadm_vals *vals;
-{
- u_char *st, *st2; /* st will hold the stream of values */
- int st_len; /* st2 the final stream with opcode */
- int retc; /* return code from call */
- u_char *ret_st;
- int ret_sz;
-
- if ((retc = kadm_cli_conn()) != KADM_SUCCESS)
- return(retc);
- st_len = vals_to_stream(vals, &st);
- st2 = (u_char *) malloc((unsigned)(1 + st_len));
- *st2 = (u_char) ADD_ENT; /* here's the opcode */
- bcopy((char *) st, (char *) st2 + 1, st_len); /* append st on */
- retc = kadm_cli_send(st2, st_len + 1, &ret_st, &ret_sz);
- free((char *)st);
- free((char *)st2);
- if (retc == KADM_SUCCESS) {
- /* ret_st has vals */
- if (stream_to_vals(ret_st, vals, ret_sz) < 0)
- retc = KADM_LENGTH_ERROR;
- free((char *)ret_st);
- }
- kadm_cli_disconn();
- return(retc);
-}
-
-/*
- * kadm_mod
- * receives : KTEXT, {values, values}
- * returns : CKSUM, RETCODE, {values}
- * acl : su, sms (as register or dealloc)
- *
- * Modifies all entries corresponding to the first values so they match the
- * second values. returns the values for the changed entries in vals2
- */
-int
-kadm_mod(vals1, vals2)
-Kadm_vals *vals1;
-Kadm_vals *vals2;
-{
- u_char *st, *st2; /* st will hold the stream of values */
- int st_len, nlen; /* st2 the final stream with opcode */
- u_char *ret_st;
- int ret_sz;
-
- /* nlen is the length of second vals */
- int retc; /* return code from call */
-
- if ((retc = kadm_cli_conn()) != KADM_SUCCESS)
- return(retc);
-
- st_len = vals_to_stream(vals1, &st);
- st2 = (u_char *) malloc((unsigned)(1 + st_len));
- *st2 = (u_char) MOD_ENT; /* here's the opcode */
- bcopy((char *) st, (char *) st2 + 1, st_len++); /* append st on */
- free((char *)st);
- nlen = vals_to_stream(vals2, &st);
- st2 = (u_char *) realloc((char *) st2, (unsigned)(st_len + nlen));
- bcopy((char *) st, (char *) st2 + st_len, nlen); /* append st on */
- retc = kadm_cli_send(st2, st_len + nlen, &ret_st, &ret_sz);
- free((char *)st);
- free((char *)st2);
- if (retc == KADM_SUCCESS) {
- /* ret_st has vals */
- if (stream_to_vals(ret_st, vals2, ret_sz) < 0)
- retc = KADM_LENGTH_ERROR;
- free((char *)ret_st);
- }
- kadm_cli_disconn();
- return(retc);
-}
-
-/*
- * kadm_get
- * receives : KTEXT, {values, flags}
- * returns : CKSUM, RETCODE, {count, values, values, values}
- * acl : su
- *
- * gets the fields requested by flags from all entries matching values returns
- * this data for each matching recipient, after a count of how many such
- * matches there were
- */
-int
-kadm_get(vals, fl)
-Kadm_vals *vals;
-u_char fl[4];
-
-{
- int loop; /* for copying the fields data */
- u_char *st, *st2; /* st will hold the stream of values */
- int st_len; /* st2 the final stream with opcode */
- int retc; /* return code from call */
- u_char *ret_st;
- int ret_sz;
-
- if ((retc = kadm_cli_conn()) != KADM_SUCCESS)
- return(retc);
- st_len = vals_to_stream(vals, &st);
- st2 = (u_char *) malloc((unsigned)(1 + st_len + FLDSZ));
- *st2 = (u_char) GET_ENT; /* here's the opcode */
- bcopy((char *) st, (char *) st2 + 1, st_len); /* append st on */
- for (loop = FLDSZ - 1; loop >= 0; loop--)
- *(st2 + st_len + FLDSZ - loop) = fl[loop]; /* append the flags */
- retc = kadm_cli_send(st2, st_len + 1 + FLDSZ, &ret_st, &ret_sz);
- free((char *)st);
- free((char *)st2);
- if (retc == KADM_SUCCESS) {
- /* ret_st has vals */
- if (stream_to_vals(ret_st, vals, ret_sz) < 0)
- retc = KADM_LENGTH_ERROR;
- free((char *)ret_st);
- }
- kadm_cli_disconn();
- return(retc);
-}
-
-/*
- * kadm_cli_send
- * recieves : opcode, packet, packet length, serv_name, serv_inst
- * returns : return code from the packet build, the server, or
- * something else
- *
- * It assembles a packet as follows:
- * 8 bytes : VERSION STRING
- * 4 bytes : LENGTH OF MESSAGE DATA and OPCODE
- * : KTEXT
- * : OPCODE \
- * : DATA > Encrypted (with make priv)
- * : ...... /
- *
- * If it builds the packet and it is small enough, then it attempts to open the
- * connection to the admin server. If the connection is succesfully open
- * then it sends the data and waits for a reply.
- */
-int
-kadm_cli_send(st_dat, st_siz, ret_dat, ret_siz)
-u_char *st_dat; /* the actual data */
-int st_siz; /* length of said data */
-u_char **ret_dat; /* to give return info */
-int *ret_siz; /* length of returned info */
-{
- int act_len, retdat; /* current offset into packet, return
- * data */
- KTEXT_ST authent; /* the authenticator we will build */
- u_char *act_st; /* the pointer to the complete packet */
- u_char *priv_pak; /* private version of the packet */
- int priv_len; /* length of private packet */
- u_long cksum; /* checksum of the packet */
- MSG_DAT mdat;
- u_char *return_dat;
-
- act_st = (u_char *) malloc(KADM_VERSIZE); /* verstr stored first */
- (void) strncpy((char *)act_st, KADM_VERSTR, KADM_VERSIZE);
- act_len = KADM_VERSIZE;
-
- if ((retdat = kadm_cli_keyd(sess_key, sess_sched)) != KADM_SUCCESS) {
- free((char *)act_st);
- return retdat; /* couldnt get key working */
- }
- priv_pak = (u_char *) malloc((unsigned)(st_siz + 200));
- /* 200 bytes for extra info case */
- if ((priv_len = krb_mk_priv(st_dat, priv_pak, (u_long)st_siz,
- sess_sched, sess_key, &client_parm.my_addr,
- &client_parm.admin_addr)) < 0)
- RET_N_FREE(KADM_NO_ENCRYPT); /* whoops... we got a lose
- * here */
- /* here is the length of priv data. receiver calcs
- size of authenticator by subtracting vno size, priv size, and
- sizeof(u_long) (for the size indication) from total size */
-
- act_len += vts_long((u_long) priv_len, &act_st, act_len);
-#ifdef NOENCRYPTION
- cksum = 0;
-#else
- cksum = quad_cksum((des_cblock *)priv_pak, (des_cblock *)0,
- (long)priv_len, 0, (des_cblock *)sess_key);
-#endif
- if ((retdat = krb_mk_req(&authent, client_parm.sname, client_parm.sinst,
- client_parm.krbrlm, (long)cksum))) {
- /* authenticator? */
- RET_N_FREE(retdat + krb_err_base);
- }
-
- act_st = (u_char *) realloc((char *) act_st,
- (unsigned) (act_len + authent.length
- + priv_len));
- if (!act_st) {
- clear_secrets();
- free((char *)priv_pak);
- return(KADM_NOMEM);
- }
- bcopy((char *) authent.dat, (char *) act_st + act_len, authent.length);
- bcopy((char *) priv_pak, (char *) act_st + act_len + authent.length,
- priv_len);
- free((char *)priv_pak);
- if ((retdat = kadm_cli_out(act_st,
- act_len + authent.length + priv_len,
- ret_dat, ret_siz)) != KADM_SUCCESS)
- RET_N_FREE(retdat);
- free((char *)act_st);
-#define RET_N_FREE2(r) {free((char *)*ret_dat); clear_secrets(); return(r);}
-
- /* first see if it's a YOULOUSE */
- if ((*ret_siz >= KADM_VERSIZE) &&
- !strncmp(KADM_ULOSE, (char *)*ret_dat, KADM_VERSIZE)) {
- u_long errcode;
- /* it's a youlose packet */
- if (*ret_siz < KADM_VERSIZE + sizeof(u_long))
- RET_N_FREE2(KADM_BAD_VER);
- bcopy((char *)(*ret_dat) + KADM_VERSIZE, (char *)&errcode,
- sizeof(u_long));
- retdat = (int) ntohl(errcode);
- RET_N_FREE2(retdat);
- }
- /* need to decode the ret_dat */
- if ((retdat = krb_rd_priv(*ret_dat, (u_long)*ret_siz, sess_sched,
- sess_key, &client_parm.admin_addr,
- &client_parm.my_addr, &mdat)))
- RET_N_FREE2(retdat+krb_err_base);
- if (mdat.app_length < KADM_VERSIZE + 4)
- /* too short! */
- RET_N_FREE2(KADM_BAD_VER);
- if (strncmp((char *)mdat.app_data, KADM_VERSTR, KADM_VERSIZE))
- /* bad version */
- RET_N_FREE2(KADM_BAD_VER);
- bcopy((char *)mdat.app_data+KADM_VERSIZE,
- (char *)&retdat, sizeof(u_long));
- retdat = ntohl((u_long)retdat);
- if (!(return_dat = (u_char *)malloc((unsigned)(mdat.app_length -
- KADM_VERSIZE - sizeof(u_long)))))
- RET_N_FREE2(KADM_NOMEM);
- bcopy((char *) mdat.app_data + KADM_VERSIZE + sizeof(u_long),
- (char *)return_dat,
- (int)mdat.app_length - KADM_VERSIZE - sizeof(u_long));
- free((char *)*ret_dat);
- clear_secrets();
- *ret_dat = return_dat;
- *ret_siz = mdat.app_length - KADM_VERSIZE - sizeof(u_long);
- return retdat;
-}
-
-/* takes in the sess_key and key_schedule and sets them appropriately */
-int
-kadm_cli_keyd(s_k, s_s)
-des_cblock s_k; /* session key */
-des_key_schedule s_s; /* session key schedule */
-{
- CREDENTIALS cred; /* to get key data */
- int stat;
-
- /* want .sname and .sinst here.... */
- if ((stat = krb_get_cred(client_parm.sname, client_parm.sinst,
- client_parm.krbrlm, &cred)))
- return stat + krb_err_base;
- bcopy((char *) cred.session, (char *) s_k, sizeof(des_cblock));
- bzero((char *) cred.session, sizeof(des_cblock));
-#ifdef NOENCRYPTION
- bzero(s_s, sizeof(des_key_schedule));
-#else
- if ((stat = key_sched((des_cblock *)s_k,s_s)))
- return(stat+krb_err_base);
-#endif
- return KADM_SUCCESS;
-} /* This code "works" */
-
-static sigtype (*opipe)();
-
-int
-kadm_cli_conn()
-{ /* this connects and sets my_addr */
- int on = 1;
-
- if ((client_parm.admin_fd =
- socket(client_parm.admin_addr.sin_family, SOCK_STREAM,0)) < 0)
- return KADM_NO_SOCK; /* couldnt create the socket */
- if (connect(client_parm.admin_fd,
- (struct sockaddr *) & client_parm.admin_addr,
- sizeof(client_parm.admin_addr))) {
- (void) close(client_parm.admin_fd);
- client_parm.admin_fd = -1;
- return KADM_NO_CONN; /* couldnt get the connect */
- }
- opipe = signal(SIGPIPE, SIG_IGN);
- client_parm.my_addr_len = sizeof(client_parm.my_addr);
- if (getsockname(client_parm.admin_fd,
- (struct sockaddr *) & client_parm.my_addr,
- &client_parm.my_addr_len) < 0) {
- (void) close(client_parm.admin_fd);
- client_parm.admin_fd = -1;
- (void) signal(SIGPIPE, opipe);
- return KADM_NO_HERE; /* couldnt find out who we are */
- }
- if (setsockopt(client_parm.admin_fd, SOL_SOCKET, SO_KEEPALIVE, &on,
- sizeof(on)) < 0) {
- (void) close(client_parm.admin_fd);
- client_parm.admin_fd = -1;
- (void) signal(SIGPIPE, opipe);
- return KADM_NO_CONN; /* XXX */
- }
- return KADM_SUCCESS;
-}
-
-void
-kadm_cli_disconn()
-{
- (void) close(client_parm.admin_fd);
- (void) signal(SIGPIPE, opipe);
-}
-
-int
-kadm_cli_out(dat, dat_len, ret_dat, ret_siz)
-u_char *dat;
-int dat_len;
-u_char **ret_dat;
-int *ret_siz;
-{
- extern int errno;
- u_short dlen;
- int retval;
-
- dlen = (u_short) dat_len;
-
- if (dat_len != (int)dlen)
- return (KADM_NO_ROOM);
-
- dlen = htons(dlen);
- if (krb_net_write(client_parm.admin_fd, (char *) &dlen,
- sizeof(u_short)) < 0)
- return (errno); /* XXX */
-
- if (krb_net_write(client_parm.admin_fd, (char *) dat, dat_len) < 0)
- return (errno); /* XXX */
-
- if ((retval = krb_net_read(client_parm.admin_fd, (char *) &dlen,
- sizeof(u_short)) != sizeof(u_short))) {
- if (retval < 0)
- return(errno); /* XXX */
- else
- return(EPIPE); /* short read ! */
- }
-
- dlen = ntohs(dlen);
- *ret_dat = (u_char *)malloc((unsigned)dlen);
- if (!*ret_dat)
- return(KADM_NOMEM);
-
- if ((retval = krb_net_read(client_parm.admin_fd, (char *) *ret_dat,
- (int) dlen) != dlen)) {
- if (retval < 0)
- return(errno); /* XXX */
- else
- return(EPIPE); /* short read ! */
- }
- *ret_siz = (int) dlen;
- return KADM_SUCCESS;
-}
diff --git a/eBones/lib/libkadm/kadm_err.et b/eBones/lib/libkadm/kadm_err.et
deleted file mode 100644
index e45a9c24cb7f..000000000000
--- a/eBones/lib/libkadm/kadm_err.et
+++ /dev/null
@@ -1,53 +0,0 @@
-# $Source: /usr/cvs/src/eBones/libkadm/kadm_err.et,v $
-# $Author: mark $
-# $Header: /usr/cvs/src/eBones/libkadm/kadm_err.et,v 1.1 1995/07/18 16:40:25 mark Exp $
-# Copyright 1988 by the Massachusetts Institute of Technology.
-#
-# For copying and distribution information, please see the file
-# <mit-copyright.h>.
-#
-# Kerberos administration server error table
-#
- et kadm
-
-# KADM_SUCCESS, as all success codes should be, is zero
-
-ec KADM_RCSID, "$Header: /usr/cvs/src/eBones/libkadm/kadm_err.et,v 1.1 1995/07/18 16:40:25 mark Exp $"
-# /* Building and unbuilding the packet errors */
-ec KADM_NO_REALM, "Cannot fetch local realm"
-ec KADM_NO_CRED, "Unable to fetch credentials"
-ec KADM_BAD_KEY, "Bad key supplied"
-ec KADM_NO_ENCRYPT, "Can't encrypt data"
-ec KADM_NO_AUTH, "Cannot encode/decode authentication info"
-ec KADM_WRONG_REALM, "Principal attemping change is in wrong realm"
-ec KADM_NO_ROOM, "Packet is too large"
-ec KADM_BAD_VER, "Version number is incorrect"
-ec KADM_BAD_CHK, "Checksum does not match"
-ec KADM_NO_READ, "Unsealing private data failed"
-ec KADM_NO_OPCODE, "Unsupported operation"
-ec KADM_NO_HOST, "Could not find administrating host"
-ec KADM_UNK_HOST, "Administrating host name is unknown"
-ec KADM_NO_SERV, "Could not find service name in services database"
-ec KADM_NO_SOCK, "Could not create socket"
-ec KADM_NO_CONN, "Could not connect to server"
-ec KADM_NO_HERE, "Could not fetch local socket address"
-ec KADM_NO_MAST, "Could not fetch master key"
-ec KADM_NO_VERI, "Could not verify master key"
-
-# /* From the server side routines */
-ec KADM_INUSE, "Entry already exists in database"
-ec KADM_UK_SERROR, "Database store error"
-ec KADM_UK_RERROR, "Database read error"
-ec KADM_UNAUTH, "Insufficient access to perform requested operation"
-# KADM_DATA isn't really an error, but...
-ec KADM_DATA, "Data is available for return to client"
-ec KADM_NOENTRY, "No such entry in the database"
-
-ec KADM_NOMEM, "Memory exhausted"
-ec KADM_NO_HOSTNAME, "Could not fetch system hostname"
-ec KADM_NO_BIND, "Could not bind port"
-ec KADM_LENGTH_ERROR, "Length mismatch problem"
-ec KADM_ILL_WILDCARD, "Illegal use of wildcard"
-
-ec KADM_DB_INUSE, "Database is locked or in use--try again later"
-end
diff --git a/eBones/lib/libkadm/kadm_stream.c b/eBones/lib/libkadm/kadm_stream.c
deleted file mode 100644
index 58a625a464b1..000000000000
--- a/eBones/lib/libkadm/kadm_stream.c
+++ /dev/null
@@ -1,286 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- *
- * For copying and distribution information, please see the file
- * Copyright.MIT.
- *
- * Stream conversion functions for Kerberos administration server
- */
-
-#if 0
-#ifndef lint
-static char rcsid_kadm_stream_c[] =
-"Header: /afs/athena.mit.edu/astaff/project/kerberos/src/lib/kadm/RCS/kadm_stream.c,v 4.2 89/09/26 09:20:48 jtkohl Exp ";
-static const char rcsid[] =
- "$Id: kadm_stream.c,v 1.1 1995/07/18 16:40:27 mark Exp $";
-#endif lint
-#endif
-
-/*
- kadm_stream.c
- this holds the stream support routines for the kerberos administration server
-
- vals_to_stream: converts a vals struct to a stream for transmission
- internals build_field_header, vts_[string, char, long, short]
- stream_to_vals: converts a stream to a vals struct
- internals check_field_header, stv_[string, char, long, short]
- error: prints out a kadm error message, returns
- fatal: prints out a kadm fatal error message, exits
-*/
-
-#include <string.h>
-#include <kadm.h>
-
-#define min(a,b) (((a) < (b)) ? (a) : (b))
-
-/*
-vals_to_stream
- recieves : kadm_vals *, u_char *
- returns : a realloced and filled in u_char *
-
-this function creates a byte-stream representation of the kadm_vals structure
-*/
-
-int
-vals_to_stream(dt_in, dt_out)
-Kadm_vals *dt_in;
-u_char **dt_out;
-{
- int vsloop, stsize; /* loop counter, stream size */
-
- stsize = build_field_header(dt_in->fields, dt_out);
- for (vsloop=31; vsloop>=0; vsloop--)
- if (IS_FIELD(vsloop,dt_in->fields)) {
- switch (vsloop) {
- case KADM_NAME:
- stsize+=vts_string(dt_in->name, dt_out, stsize);
- break;
- case KADM_INST:
- stsize+=vts_string(dt_in->instance, dt_out, stsize);
- break;
- case KADM_EXPDATE:
- stsize+=vts_long(dt_in->exp_date, dt_out, stsize);
- break;
- case KADM_ATTR:
- stsize+=vts_short(dt_in->attributes, dt_out, stsize);
- break;
- case KADM_MAXLIFE:
- stsize+=vts_char(dt_in->max_life, dt_out, stsize);
- break;
- case KADM_DESKEY:
- stsize+=vts_long(dt_in->key_high, dt_out, stsize);
- stsize+=vts_long(dt_in->key_low, dt_out, stsize);
- break;
- default:
- break;
- }
-}
- return(stsize);
-}
-
-int
-build_field_header(cont, st)
-u_char *cont; /* container for fields data */
-u_char **st; /* stream */
-{
- *st = (u_char *) malloc (4);
- bcopy((char *) cont, (char *) *st, 4);
- return 4; /* return pointer to current stream location */
-}
-
-int
-vts_string(dat, st, loc)
-char *dat; /* a string to put on the stream */
-u_char **st; /* base pointer to the stream */
-int loc; /* offset into the stream for current data */
-{
- *st = (u_char *) realloc ((char *)*st, (unsigned) (loc + strlen(dat) + 1));
- bcopy(dat, (char *)(*st + loc), strlen(dat)+1);
- return strlen(dat)+1;
-}
-
-int
-vts_short(dat, st, loc)
-u_short dat; /* the attributes field */
-u_char **st; /* a base pointer to the stream */
-int loc; /* offset into the stream for current data */
-{
- u_short temp; /* to hold the net order short */
-
- temp = htons(dat); /* convert to network order */
- *st = (u_char *) realloc ((char *)*st, (unsigned)(loc + sizeof(u_short)));
- bcopy((char *) &temp, (char *)(*st + loc), sizeof(u_short));
- return sizeof(u_short);
-}
-
-int
-vts_long(dat, st, loc)
-u_long dat; /* the attributes field */
-u_char **st; /* a base pointer to the stream */
-int loc; /* offset into the stream for current data */
-{
- u_long temp; /* to hold the net order short */
-
- temp = htonl(dat); /* convert to network order */
- *st = (u_char *) realloc ((char *)*st, (unsigned)(loc + sizeof(u_long)));
- bcopy((char *) &temp, (char *)(*st + loc), sizeof(u_long));
- return sizeof(u_long);
-}
-
-int
-vts_char(dat, st, loc)
-u_char dat; /* the attributes field */
-u_char **st; /* a base pointer to the stream */
-int loc; /* offset into the stream for current data */
-{
- *st = (u_char *) realloc ((char *)*st, (unsigned)(loc + sizeof(u_char)));
- (*st)[loc] = (u_char) dat;
- return 1;
-}
-
-/*
-stream_to_vals
- recieves : u_char *, kadm_vals *
- returns : a kadm_vals filled in according to u_char *
-
-this decodes a byte stream represntation of a vals struct into kadm_vals
-*/
-int
-stream_to_vals(dt_in, dt_out, maxlen)
-u_char *dt_in;
-Kadm_vals *dt_out;
-int maxlen; /* max length to use */
-{
- register int vsloop, stsize; /* loop counter, stream size */
- register int status;
-
- bzero((char *) dt_out, sizeof(*dt_out));
-
- stsize = check_field_header(dt_in, dt_out->fields, maxlen);
- if (stsize < 0)
- return(-1);
- for (vsloop=31; vsloop>=0; vsloop--)
- if (IS_FIELD(vsloop,dt_out->fields))
- switch (vsloop) {
- case KADM_NAME:
- if ((status = stv_string(dt_in, dt_out->name, stsize,
- sizeof(dt_out->name), maxlen)) < 0)
- return(-1);
- stsize += status;
- break;
- case KADM_INST:
- if ((status = stv_string(dt_in, dt_out->instance, stsize,
- sizeof(dt_out->instance), maxlen)) < 0)
- return(-1);
- stsize += status;
- break;
- case KADM_EXPDATE:
- if ((status = stv_long(dt_in, &dt_out->exp_date, stsize,
- maxlen)) < 0)
- return(-1);
- stsize += status;
- break;
- case KADM_ATTR:
- if ((status = stv_short(dt_in, &dt_out->attributes, stsize,
- maxlen)) < 0)
- return(-1);
- stsize += status;
- break;
- case KADM_MAXLIFE:
- if ((status = stv_char(dt_in, &dt_out->max_life, stsize,
- maxlen)) < 0)
- return(-1);
- stsize += status;
- break;
- case KADM_DESKEY:
- if ((status = stv_long(dt_in, &dt_out->key_high, stsize,
- maxlen)) < 0)
- return(-1);
- stsize += status;
- if ((status = stv_long(dt_in, &dt_out->key_low, stsize,
- maxlen)) < 0)
- return(-1);
- stsize += status;
- break;
- default:
- break;
- }
- return stsize;
-}
-
-int
-check_field_header(st, cont, maxlen)
-u_char *st; /* stream */
-u_char *cont; /* container for fields data */
-int maxlen;
-{
- if (4 > maxlen)
- return(-1);
- bcopy((char *) st, (char *) cont, 4);
- return 4; /* return pointer to current stream location */
-}
-
-int
-stv_string(st, dat, loc, stlen, maxlen)
-register u_char *st; /* base pointer to the stream */
-char *dat; /* a string to read from the stream */
-register int loc; /* offset into the stream for current data */
-int stlen; /* max length of string to copy in */
-int maxlen; /* max length of input stream */
-{
- int maxcount; /* max count of chars to copy */
-
- maxcount = min(maxlen - loc, stlen);
-
- (void) strncpy(dat, (char *)st + loc, maxcount);
-
- if (dat[maxcount-1]) /* not null-term --> not enuf room */
- return(-1);
- return strlen(dat)+1;
-}
-
-int
-stv_short(st, dat, loc, maxlen)
-u_char *st; /* a base pointer to the stream */
-u_short *dat; /* the attributes field */
-int loc; /* offset into the stream for current data */
-int maxlen;
-{
- u_short temp; /* to hold the net order short */
-
- if (loc + sizeof(u_short) > maxlen)
- return(-1);
- bcopy((char *)((u_long)st+(u_long)loc), (char *) &temp, sizeof(u_short));
- *dat = ntohs(temp); /* convert to network order */
- return sizeof(u_short);
-}
-
-int
-stv_long(st, dat, loc, maxlen)
-u_char *st; /* a base pointer to the stream */
-u_long *dat; /* the attributes field */
-int loc; /* offset into the stream for current data */
-int maxlen; /* maximum length of st */
-{
- u_long temp; /* to hold the net order short */
-
- if (loc + sizeof(u_long) > maxlen)
- return(-1);
- bcopy((char *)((u_long)st+(u_long)loc), (char *) &temp, sizeof(u_long));
- *dat = ntohl(temp); /* convert to network order */
- return sizeof(u_long);
-}
-
-int
-stv_char(st, dat, loc, maxlen)
-u_char *st; /* a base pointer to the stream */
-u_char *dat; /* the attributes field */
-int loc; /* offset into the stream for current data */
-int maxlen;
-{
- if (loc + 1 > maxlen)
- return(-1);
- *dat = *(st + loc);
- return 1;
-}
-
diff --git a/eBones/lib/libkadm/kadm_supp.c b/eBones/lib/libkadm/kadm_supp.c
deleted file mode 100644
index 353fed0ed9b3..000000000000
--- a/eBones/lib/libkadm/kadm_supp.c
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- *
- * For copying and distribution information, please see the file
- * Copyright.MIT.
- *
- * Support functions for Kerberos administration server & clients
- */
-
-#if 0
-#ifndef lint
-static char rcsid_kadm_supp_c[] =
-"Header: /afs/athena.mit.edu/astaff/project/kerberos/src/lib/kadm/RCS/kadm_supp.c,v 4.1 89/09/26 09:21:07 jtkohl Exp ";
-static const char rcsid[] =
- "$Id: kadm_supp.c,v 1.1 1995/07/18 16:40:28 mark Exp $";
-#endif lint
-#endif
-
-/*
- kadm_supp.c
- this holds the support routines for the kerberos administration server
-
- error: prints out a kadm error message, returns
- fatal: prints out a kadm fatal error message, exits
- prin_vals: prints out data associated with a Principal in the vals
- structure
-*/
-
-#include <string.h>
-#include <time.h>
-#include <kadm.h>
-#include <krb_db.h>
-
-/*
-prin_vals:
- recieves : a vals structure
-*/
-void
-prin_vals(vals)
-Kadm_vals *vals;
-{
- printf("Info in Database for %s.%s:\n", vals->name, vals->instance);
- printf(" Max Life: %d Exp Date: %s\n",vals->max_life,
- asctime(localtime((long *)&vals->exp_date)));
- printf(" Attribs: %.2x key: %lu %lu\n",vals->attributes,
- vals->key_low, vals->key_high);
-}
-
-#ifdef notdef
-nierror(s)
-int s;
-{
- printf("Kerberos admin server loses..... %s\n",error_message(s));
- return(s);
-}
-#endif
-
-/* kadm_prin_to_vals takes a fields arguments, a Kadm_vals and a Principal,
- it copies the fields in Principal specified by fields into Kadm_vals,
- i.e from old to new */
-
-void
-kadm_prin_to_vals(fields, new, old)
-u_char fields[FLDSZ];
-Kadm_vals *new;
-Principal *old;
-{
- bzero((char *)new, sizeof(*new));
- if (IS_FIELD(KADM_NAME,fields)) {
- (void) strncpy(new->name, old->name, ANAME_SZ);
- SET_FIELD(KADM_NAME, new->fields);
- }
- if (IS_FIELD(KADM_INST,fields)) {
- (void) strncpy(new->instance, old->instance, INST_SZ);
- SET_FIELD(KADM_INST, new->fields);
- }
- if (IS_FIELD(KADM_EXPDATE,fields)) {
- new->exp_date = old->exp_date;
- SET_FIELD(KADM_EXPDATE, new->fields);
- }
- if (IS_FIELD(KADM_ATTR,fields)) {
- new->attributes = old->attributes;
- SET_FIELD(KADM_MAXLIFE, new->fields);
- }
- if (IS_FIELD(KADM_MAXLIFE,fields)) {
- new->max_life = old->max_life;
- SET_FIELD(KADM_MAXLIFE, new->fields);
- }
- if (IS_FIELD(KADM_DESKEY,fields)) {
- new->key_low = old->key_low;
- new->key_high = old->key_high;
- SET_FIELD(KADM_DESKEY, new->fields);
- }
-}
-
-void
-kadm_vals_to_prin(fields, new, old)
-u_char fields[FLDSZ];
-Principal *new;
-Kadm_vals *old;
-{
-
- bzero((char *)new, sizeof(*new));
- if (IS_FIELD(KADM_NAME,fields))
- (void) strncpy(new->name, old->name, ANAME_SZ);
- if (IS_FIELD(KADM_INST,fields))
- (void) strncpy(new->instance, old->instance, INST_SZ);
- if (IS_FIELD(KADM_EXPDATE,fields))
- new->exp_date = old->exp_date;
- if (IS_FIELD(KADM_ATTR,fields))
- new->attributes = old->attributes;
- if (IS_FIELD(KADM_MAXLIFE,fields))
- new->max_life = old->max_life;
- if (IS_FIELD(KADM_DESKEY,fields)) {
- new->key_low = old->key_low;
- new->key_high = old->key_high;
- }
-}
diff --git a/eBones/lib/libkdb/Makefile b/eBones/lib/libkdb/Makefile
deleted file mode 100644
index 29beb2401b30..000000000000
--- a/eBones/lib/libkdb/Makefile
+++ /dev/null
@@ -1,8 +0,0 @@
-# From: @(#)Makefile 5.1 (Berkeley) 6/25/90
-# $Id: Makefile,v 1.4 1995/09/13 17:23:53 markm Exp $
-
-LIB= kdb
-CFLAGS+=-DKERBEROS -DDEBUG
-SRCS= krb_cache.c krb_dbm.c krb_kdb_utils.c krb_lib.c print_princ.c
-
-.include <bsd.lib.mk>
diff --git a/eBones/lib/libkdb/krb_cache.c b/eBones/lib/libkdb/krb_cache.c
deleted file mode 100644
index 1c7c9ce3d7f2..000000000000
--- a/eBones/lib/libkdb/krb_cache.c
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * This is where a cache would be implemented, if it were necessary.
- *
- * from: krb_cache.c,v 4.5 89/01/24 18:12:34 jon Exp $
- * $Id: krb_cache.c,v 1.3 1995/07/18 16:37:12 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: krb_cache.c,v 1.3 1995/07/18 16:37:12 mark Exp $";
-#endif lint
-#endif
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <netinet/in.h>
-#include <sys/uio.h>
-#include <sys/time.h>
-#include <sys/resource.h>
-#include <strings.h>
-#include <des.h>
-#include <krb.h>
-#include <krb_db.h>
-
-#ifdef DEBUG
-extern int debug;
-extern long kerb_debug;
-#endif
-static init = 0;
-
-/*
- * initialization routine for cache
- */
-
-int
-kerb_cache_init()
-{
- init = 1;
- return (0);
-}
-
-/*
- * look up a principal in the cache returns number of principals found
- */
-
-int
-kerb_cache_get_principal(serv, inst, principal, max)
- char *serv; /* could have wild card */
- char *inst; /* could have wild card */
- Principal *principal;
- unsigned int max; /* max number of name structs to return */
-
-{
- int found = 0;
-
- if (!init)
- kerb_cache_init();
-#ifdef DEBUG
- if (kerb_debug & 2) {
- fprintf(stderr, "cache_get_principal for %s %s max = %d\n",
- serv, inst, max);
- if (found) {
- fprintf(stderr, "cache get %s %s found %s %s\n",
- serv, inst, principal->name, principal->instance);
- } else {
- fprintf(stderr, "cache %s %s not found\n", serv,
- inst);
- }
- }
-#endif
- return (found);
-}
-
-/*
- * insert/replace a principal in the cache returns number of principals
- * inserted
- */
-
-int
-kerb_cache_put_principal(principal, max)
- Principal *principal;
- unsigned int max; /* max number of principal structs to
- * insert */
-
-{
- u_long i;
- int count = 0;
-
- if (!init)
- kerb_cache_init();
-
-#ifdef DEBUG
- if (kerb_debug & 2) {
- fprintf(stderr, "kerb_cache_put_principal max = %d",
- max);
- }
-#endif
-
- for (i = 0; i < max; i++) {
-#ifdef DEBUG
- if (kerb_debug & 2)
- fprintf(stderr, "\n %s %s",
- principal->name, principal->instance);
-#endif
- /* DO IT */
- count++;
- principal++;
- }
- return count;
-}
-
-/*
- * look up a dba in the cache returns number of dbas found
- */
-
-int
-kerb_cache_get_dba(serv, inst, dba, max)
- char *serv; /* could have wild card */
- char *inst; /* could have wild card */
- Dba *dba;
- unsigned int max; /* max number of name structs to return */
-
-{
- int found = 0;
-
- if (!init)
- kerb_cache_init();
-
-#ifdef DEBUG
- if (kerb_debug & 2) {
- fprintf(stderr, "cache_get_dba for %s %s max = %d\n",
- serv, inst, max);
- if (found) {
- fprintf(stderr, "cache get %s %s found %s %s\n",
- serv, inst, dba->name, dba->instance);
- } else {
- fprintf(stderr, "cache %s %s not found\n", serv, inst);
- }
- }
-#endif
- return (found);
-}
-
-/*
- * insert/replace a dba in the cache returns number of dbas inserted
- */
-
-int
-kerb_cache_put_dba(dba, max)
- Dba *dba;
- unsigned int max; /* max number of dba structs to insert */
-
-{
- u_long i;
- int count = 0;
-
- if (!init)
- kerb_cache_init();
-#ifdef DEBUG
- if (kerb_debug & 2) {
- fprintf(stderr, "kerb_cache_put_dba max = %d", max);
- }
-#endif
- for (i = 0; i < max; i++) {
-#ifdef DEBUG
- if (kerb_debug & 2)
- fprintf(stderr, "\n %s %s",
- dba->name, dba->instance);
-#endif
- /* DO IT */
- count++;
- dba++;
- }
- return count;
-}
-
diff --git a/eBones/lib/libkdb/krb_dbl.c b/eBones/lib/libkdb/krb_dbl.c
deleted file mode 100644
index 7776298457c0..000000000000
--- a/eBones/lib/libkdb/krb_dbl.c
+++ /dev/null
@@ -1 +0,0 @@
-This file is now obsolete.
diff --git a/eBones/lib/libkdb/krb_dbm.c b/eBones/lib/libkdb/krb_dbm.c
deleted file mode 100644
index 760bd6f6bd37..000000000000
--- a/eBones/lib/libkdb/krb_dbm.c
+++ /dev/null
@@ -1,789 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: krb_dbm.c,v 4.9 89/04/18 16:15:13 wesommer Exp $
- * $Id: krb_dbm.c,v 1.4 1995/08/03 17:15:42 mark Exp $
-*/
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: krb_dbm.c,v 1.4 1995/08/03 17:15:42 mark Exp $";
-#endif lint
-#endif
-
-#if defined(__FreeBSD__) || defined(__NetBSD__)
-#define _NDBM_
-#endif
-
-#if defined(__FreeBSD__) || defined(__NetBSD__)
-#define _DBM_
-#endif
-
-#include <unistd.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <netinet/in.h>
-#include <sys/uio.h>
-#include <sys/time.h>
-#include <sys/stat.h>
-#include <sys/resource.h>
-#include <sys/errno.h>
-#include <strings.h>
-#include <des.h>
-#include <sys/file.h>
-#ifdef _NDBM_
-#include <ndbm.h>
-#else /*_NDBM_*/
-#include <dbm.h>
-#endif /*_NDBM_*/
-/* before krb_db.h */
-#include <krb.h>
-#include <krb_db.h>
-
-#ifdef dbm_pagfno
-#define DB
-#endif
-
-#define KERB_DB_MAX_RETRY 5
-
-#ifdef DEBUG
-extern int debug;
-extern long kerb_debug;
-extern char *progname;
-#endif
-
-static init = 0;
-static char default_db_name[] = DBM_FILE;
-static char *current_db_name = default_db_name;
-static void encode_princ_key(datum *key, char *name, char *instance);
-static void decode_princ_key(datum *key, char *name, char *instance);
-static void encode_princ_contents(datum *contents, Principal *principal);
-static void decode_princ_contents(datum *contents, Principal *principal);
-static void kerb_dbl_fini(void);
-static int kerb_dbl_lock(int mode);
-static void kerb_dbl_unlock(void);
-static long kerb_start_update(char *db_name);
-static long kerb_end_update(char *db_name, long age);
-
-static struct timeval timestamp;/* current time of request */
-static int non_blocking = 0;
-
-/*
- * This module contains all of the code which directly interfaces to
- * the underlying representation of the Kerberos database; this
- * implementation uses a DBM or NDBM indexed "file" (actually
- * implemented as two separate files) to store the relations, plus a
- * third file as a semaphore to allow the database to be replaced out
- * from underneath the KDC server.
- */
-
-/*
- * Locking:
- *
- * There are two distinct locking protocols used. One is designed to
- * lock against processes (the admin_server, for one) which make
- * incremental changes to the database; the other is designed to lock
- * against utilities (kdb_util, kpropd) which replace the entire
- * database in one fell swoop.
- *
- * The first locking protocol is implemented using flock() in the
- * krb_dbl_lock() and krb_dbl_unlock routines.
- *
- * The second locking protocol is necessary because DBM "files" are
- * actually implemented as two separate files, and it is impossible to
- * atomically rename two files simultaneously. It assumes that the
- * database is replaced only very infrequently in comparison to the time
- * needed to do a database read operation.
- *
- * A third file is used as a "version" semaphore; the modification
- * time of this file is the "version number" of the database.
- * At the start of a read operation, the reader checks the version
- * number; at the end of the read operation, it checks again. If the
- * version number changed, or if the semaphore was nonexistant at
- * either time, the reader sleeps for a second to let things
- * stabilize, and then tries again; if it does not succeed after
- * KERB_DB_MAX_RETRY attempts, it gives up.
- *
- * On update, the semaphore file is deleted (if it exists) before any
- * update takes place; at the end of the update, it is replaced, with
- * a version number strictly greater than the version number which
- * existed at the start of the update.
- *
- * If the system crashes in the middle of an update, the semaphore
- * file is not automatically created on reboot; this is a feature, not
- * a bug, since the database may be inconsistant. Note that the
- * absence of a semaphore file does not prevent another _update_ from
- * taking place later. Database replacements take place automatically
- * only on slave servers; a crash in the middle of an update will be
- * fixed by the next slave propagation. A crash in the middle of an
- * update on the master would be somewhat more serious, but this would
- * likely be noticed by an administrator, who could fix the problem and
- * retry the operation.
- */
-
-/* Macros to convert ndbm names to dbm names.
- * Note that dbm_nextkey() cannot be simply converted using a macro, since
- * it is invoked giving the database, and nextkey() needs the previous key.
- *
- * Instead, all routines call "dbm_next" instead.
- */
-
-#ifndef _NDBM_
-typedef char DBM;
-
-#define dbm_open(file, flags, mode) ((dbminit(file) == 0)?"":((char *)0))
-#define dbm_fetch(db, key) fetch(key)
-#define dbm_store(db, key, content, flag) store(key, content)
-#define dbm_firstkey(db) firstkey()
-#define dbm_next(db,key) nextkey(key)
-#define dbm_close(db) dbmclose()
-#else
-#define dbm_next(db,key) dbm_nextkey(db)
-#endif
-
-/*
- * Utility routine: generate name of database file.
- */
-
-static char *gen_dbsuffix(db_name, sfx)
- char *db_name;
- char *sfx;
-{
- char *dbsuffix;
-
- if (sfx == NULL)
- sfx = ".ok";
-
- dbsuffix = malloc (strlen(db_name) + strlen(sfx) + 1);
- strcpy(dbsuffix, db_name);
- strcat(dbsuffix, sfx);
- return dbsuffix;
-}
-
-/*
- * initialization for data base routines.
- */
-
-int
-kerb_db_init()
-{
- init = 1;
- return (0);
-}
-
-/*
- * gracefully shut down database--must be called by ANY program that does
- * a kerb_db_init
- */
-
-void
-kerb_db_fini()
-{
-}
-
-/*
- * Set the "name" of the current database to some alternate value.
- *
- * Passing a null pointer as "name" will set back to the default.
- * If the alternate database doesn't exist, nothing is changed.
- */
-
-int
-kerb_db_set_name(name)
- char *name;
-{
- DBM *db;
-
- if (name == NULL)
- name = default_db_name;
- db = dbm_open(name, 0, 0);
- if (db == NULL)
- return errno;
- dbm_close(db);
- kerb_dbl_fini();
- current_db_name = name;
- return 0;
-}
-
-/*
- * Return the last modification time of the database.
- */
-
-long
-kerb_get_db_age()
-{
- struct stat st;
- char *okname;
- long age;
-
- okname = gen_dbsuffix(current_db_name, ".ok");
-
- if (stat (okname, &st) < 0)
- age = 0;
- else
- age = st.st_mtime;
-
- free (okname);
- return age;
-}
-
-/*
- * Remove the semaphore file; indicates that database is currently
- * under renovation.
- *
- * This is only for use when moving the database out from underneath
- * the server (for example, during slave updates).
- */
-
-static long
-kerb_start_update(db_name)
- char *db_name;
-{
- char *okname = gen_dbsuffix(db_name, ".ok");
- long age = kerb_get_db_age();
-
- if (unlink(okname) < 0
- && errno != ENOENT) {
- age = -1;
- }
- free (okname);
- return age;
-}
-
-static long
-kerb_end_update(db_name, age)
- char *db_name;
- long age;
-{
- int fd;
- int retval = 0;
- char *new_okname = gen_dbsuffix(db_name, ".ok#");
- char *okname = gen_dbsuffix(db_name, ".ok");
-
- fd = open (new_okname, O_CREAT|O_RDWR|O_TRUNC, 0600);
- if (fd < 0)
- retval = errno;
- else {
- struct stat st;
- struct timeval tv[2];
- /* make sure that semaphore is "after" previous value. */
- if (fstat (fd, &st) == 0
- && st.st_mtime <= age) {
- tv[0].tv_sec = st.st_atime;
- tv[0].tv_usec = 0;
- tv[1].tv_sec = age;
- tv[1].tv_usec = 0;
- /* set times.. */
- utimes (new_okname, tv);
- fsync(fd);
- }
- close(fd);
- if (rename (new_okname, okname) < 0)
- retval = errno;
- }
-
- free (new_okname);
- free (okname);
-
- return retval;
-}
-
-static long
-kerb_start_read()
-{
- return kerb_get_db_age();
-}
-
-static long
-kerb_end_read(age)
- u_long age;
-{
- if (kerb_get_db_age() != age || age == -1) {
- return -1;
- }
- return 0;
-}
-
-/*
- * Create the database, assuming it's not there.
- */
-
-int
-kerb_db_create(db_name)
- char *db_name;
-{
- char *okname = gen_dbsuffix(db_name, ".ok");
- int fd;
- register int ret = 0;
-#ifdef _NDBM_
- DBM *db;
-
- db = dbm_open(db_name, O_RDWR|O_CREAT|O_EXCL, 0600);
- if (db == NULL)
- ret = errno;
- else
- dbm_close(db);
-#else
- char *dirname = gen_dbsuffix(db_name, ".dir");
- char *pagname = gen_dbsuffix(db_name, ".pag");
-
- fd = open(dirname, O_RDWR|O_CREAT|O_EXCL, 0600);
- if (fd < 0)
- ret = errno;
- else {
- close(fd);
- fd = open (pagname, O_RDWR|O_CREAT|O_EXCL, 0600);
- if (fd < 0)
- ret = errno;
- else
- close(fd);
- }
- if (dbminit(db_name) < 0)
- ret = errno;
-#endif
- if (ret == 0) {
- fd = open (okname, O_CREAT|O_RDWR|O_TRUNC, 0600);
- if (fd < 0)
- ret = errno;
- close(fd);
- }
- return ret;
-}
-
-/*
- * "Atomically" rename the database in a way that locks out read
- * access in the middle of the rename.
- *
- * Not perfect; if we crash in the middle of an update, we don't
- * necessarily know to complete the transaction the rename, but...
- */
-
-int
-kerb_db_rename(from, to)
- char *from;
- char *to;
-{
-#ifdef _DBM_
- char *fromdb = gen_dbsuffix (from, ".db");
- char *todb = gen_dbsuffix (to, ".db");
-#else
- char *fromdir = gen_dbsuffix (from, ".dir");
- char *todir = gen_dbsuffix (to, ".dir");
- char *frompag = gen_dbsuffix (from , ".pag");
- char *topag = gen_dbsuffix (to, ".pag");
-#endif
- char *fromok = gen_dbsuffix(from, ".ok");
- long trans = kerb_start_update(to);
- int ok = 0;
-
-#ifdef _DBM_
- if (rename (fromdb, todb) == 0) {
-#else
- if ((rename (fromdir, todir) == 0)
- && (rename (frompag, topag) == 0)) {
-#endif
- (void) unlink (fromok);
- ok = 1;
- }
-
- free (fromok);
-#ifdef _DBM_
- free (fromdb);
- free (todb);
-#else
- free (fromdir);
- free (todir);
- free (frompag);
- free (topag);
-#endif
- if (ok)
- return kerb_end_update(to, trans);
- else
- return -1;
-}
-
-/*
- * look up a principal in the data base returns number of principals
- * found , and whether there were more than requested.
- */
-
-int
-kerb_db_get_principal(name, inst, principal, max, more)
- char *name; /* could have wild card */
- char *inst; /* could have wild card */
- Principal *principal;
- unsigned int max; /* max number of name structs to return */
- int *more; /* where there more than 'max' tuples? */
-
-{
- int found = 0, code;
- extern int errorproc();
- int wildp, wildi;
- datum key, contents;
- char testname[ANAME_SZ], testinst[INST_SZ];
- u_long trans;
- int try;
- DBM *db;
-
- if (!init)
- kerb_db_init(); /* initialize database routines */
-
- for (try = 0; try < KERB_DB_MAX_RETRY; try++) {
- trans = kerb_start_read();
-
- if ((code = kerb_dbl_lock(KERB_DBL_SHARED)) != 0)
- return -1;
-
- db = dbm_open(current_db_name, O_RDONLY, 0600);
-
- *more = 0;
-
-#ifdef DEBUG
- if (kerb_debug & 2)
- fprintf(stderr,
- "%s: db_get_principal for %s %s max = %d",
- progname, name, inst, max);
-#endif
-
- wildp = !strcmp(name, "*");
- wildi = !strcmp(inst, "*");
-
- if (!wildi && !wildp) { /* nothing's wild */
- encode_princ_key(&key, name, inst);
- contents = dbm_fetch(db, key);
- if (contents.dptr == NULL) {
- found = 0;
- goto done;
- }
- decode_princ_contents(&contents, principal);
-#ifdef DEBUG
- if (kerb_debug & 1) {
- fprintf(stderr, "\t found %s %s p_n length %d t_n length %d\n",
- principal->name, principal->instance,
- strlen(principal->name),
- strlen(principal->instance));
- }
-#endif
- found = 1;
- goto done;
- }
- /* process wild cards by looping through entire database */
-
- for (key = dbm_firstkey(db); key.dptr != NULL;
- key = dbm_next(db, key)) {
- decode_princ_key(&key, testname, testinst);
- if ((wildp || !strcmp(testname, name)) &&
- (wildi || !strcmp(testinst, inst))) { /* have a match */
- if (found >= max) {
- *more = 1;
- goto done;
- } else {
- found++;
- contents = dbm_fetch(db, key);
- decode_princ_contents(&contents, principal);
-#ifdef DEBUG
- if (kerb_debug & 1) {
- fprintf(stderr,
- "\tfound %s %s p_n length %d t_n length %d\n",
- principal->name, principal->instance,
- strlen(principal->name),
- strlen(principal->instance));
- }
-#endif
- principal++; /* point to next */
- }
- }
- }
-
- done:
- kerb_dbl_unlock(); /* unlock read lock */
- dbm_close(db);
- if (kerb_end_read(trans) == 0)
- break;
- found = -1;
- if (!non_blocking)
- sleep(1);
- }
- return (found);
-}
-
-/*
- * Update a name in the data base. Returns number of names
- * successfully updated.
- */
-
-int
-kerb_db_put_principal(principal, max)
- Principal *principal;
- unsigned int max; /* number of principal structs to
- * update */
-
-{
- int found = 0, code;
- u_long i;
- extern int errorproc();
- datum key, contents;
- DBM *db;
-
- gettimeofday(&timestamp, NULL);
-
- if (!init)
- kerb_db_init();
-
- if ((code = kerb_dbl_lock(KERB_DBL_EXCLUSIVE)) != 0)
- return -1;
-
- db = dbm_open(current_db_name, O_RDWR, 0600);
-
-#ifdef DEBUG
- if (kerb_debug & 2)
- fprintf(stderr, "%s: kerb_db_put_principal max = %d",
- progname, max);
-#endif
-
- /* for each one, stuff temps, and do replace/append */
- for (i = 0; i < max; i++) {
- encode_princ_contents(&contents, principal);
- encode_princ_key(&key, principal->name, principal->instance);
- dbm_store(db, key, contents, DBM_REPLACE);
-#ifdef DEBUG
- if (kerb_debug & 1) {
- fprintf(stderr, "\n put %s %s\n",
- principal->name, principal->instance);
- }
-#endif
- found++;
- principal++; /* bump to next struct */
- }
-
- dbm_close(db);
- kerb_dbl_unlock(); /* unlock database */
- return (found);
-}
-
-static void
-encode_princ_key(key, name, instance)
- datum *key;
- char *name, *instance;
-{
- static char keystring[ANAME_SZ + INST_SZ];
-
- bzero(keystring, ANAME_SZ + INST_SZ);
- strncpy(keystring, name, ANAME_SZ);
- strncpy(&keystring[ANAME_SZ], instance, INST_SZ);
- key->dptr = keystring;
- key->dsize = ANAME_SZ + INST_SZ;
-}
-
-static void
-decode_princ_key(key, name, instance)
- datum *key;
- char *name, *instance;
-{
- strncpy(name, key->dptr, ANAME_SZ);
- strncpy(instance, key->dptr + ANAME_SZ, INST_SZ);
- name[ANAME_SZ - 1] = '\0';
- instance[INST_SZ - 1] = '\0';
-}
-
-static void
-encode_princ_contents(contents, principal)
- datum *contents;
- Principal *principal;
-{
- contents->dsize = sizeof(*principal);
- contents->dptr = (char *) principal;
-}
-
-static void
-decode_princ_contents(contents, principal)
- datum *contents;
- Principal *principal;
-{
- bcopy(contents->dptr, (char *) principal, sizeof(*principal));
-}
-
-void
-kerb_db_get_stat(s)
- DB_stat *s;
-{
- gettimeofday(&timestamp, NULL);
-
-
- s->cpu = 0;
- s->elapsed = 0;
- s->dio = 0;
- s->pfault = 0;
- s->t_stamp = timestamp.tv_sec;
- s->n_retrieve = 0;
- s->n_replace = 0;
- s->n_append = 0;
- s->n_get_stat = 0;
- s->n_put_stat = 0;
- /* update local copy too */
-}
-
-void
-kerb_db_put_stat(s)
- DB_stat *s;
-{
-}
-
-void
-delta_stat(a, b, c)
- DB_stat *a, *b, *c;
-{
- /* c = a - b then b = a for the next time */
-
- c->cpu = a->cpu - b->cpu;
- c->elapsed = a->elapsed - b->elapsed;
- c->dio = a->dio - b->dio;
- c->pfault = a->pfault - b->pfault;
- c->t_stamp = a->t_stamp - b->t_stamp;
- c->n_retrieve = a->n_retrieve - b->n_retrieve;
- c->n_replace = a->n_replace - b->n_replace;
- c->n_append = a->n_append - b->n_append;
- c->n_get_stat = a->n_get_stat - b->n_get_stat;
- c->n_put_stat = a->n_put_stat - b->n_put_stat;
-
- bcopy(a, b, sizeof(DB_stat));
-}
-
-/*
- * look up a dba in the data base returns number of dbas found , and
- * whether there were more than requested.
- */
-
-int
-kerb_db_get_dba(dba_name, dba_inst, dba, max, more)
- char *dba_name; /* could have wild card */
- char *dba_inst; /* could have wild card */
- Dba *dba;
- unsigned int max; /* max number of name structs to return */
- int *more; /* where there more than 'max' tuples? */
-
-{
- *more = 0;
- return (0);
-}
-
-int
-kerb_db_iterate (func, arg)
- int (*func)();
- char *arg; /* void *, really */
-{
- datum key, contents;
- Principal *principal;
- int code;
- DBM *db;
-
- kerb_db_init(); /* initialize and open the database */
- if ((code = kerb_dbl_lock(KERB_DBL_SHARED)) != 0)
- return code;
-
- db = dbm_open(current_db_name, O_RDONLY, 0600);
-
- for (key = dbm_firstkey (db); key.dptr != NULL; key = dbm_next(db, key)) {
- contents = dbm_fetch (db, key);
- /* XXX may not be properly aligned */
- principal = (Principal *) contents.dptr;
- if ((code = (*func)(arg, principal)) != 0)
- return code;
- }
- dbm_close(db);
- kerb_dbl_unlock();
- return 0;
-}
-
-static int dblfd = -1;
-static int mylock = 0;
-static int inited = 0;
-
-static void
-kerb_dbl_init()
-{
- if (!inited) {
- char *filename = gen_dbsuffix (current_db_name, ".ok");
- if ((dblfd = open(filename, 0)) < 0) {
- fprintf(stderr, "kerb_dbl_init: couldn't open %s\n", filename);
- fflush(stderr);
- perror("open");
- exit(1);
- }
- free(filename);
- inited++;
- }
-}
-
-static void
-kerb_dbl_fini()
-{
- close(dblfd);
- dblfd = -1;
- inited = 0;
- mylock = 0;
-}
-
-static int
-kerb_dbl_lock(mode)
- int mode;
-{
- int flock_mode;
-
- if (!inited)
- kerb_dbl_init();
- if (mylock) { /* Detect lock call when lock already
- * locked */
- fprintf(stderr, "Kerberos locking error (mylock)\n");
- fflush(stderr);
- exit(1);
- }
- switch (mode) {
- case KERB_DBL_EXCLUSIVE:
- flock_mode = LOCK_EX;
- break;
- case KERB_DBL_SHARED:
- flock_mode = LOCK_SH;
- break;
- default:
- fprintf(stderr, "invalid lock mode %d\n", mode);
- abort();
- }
- if (non_blocking)
- flock_mode |= LOCK_NB;
-
- if (flock(dblfd, flock_mode) < 0)
- return errno;
- mylock++;
- return 0;
-}
-
-static void
-kerb_dbl_unlock()
-{
- if (!mylock) { /* lock already unlocked */
- fprintf(stderr, "Kerberos database lock not locked when unlocking.\n");
- fflush(stderr);
- exit(1);
- }
- if (flock(dblfd, LOCK_UN) < 0) {
- fprintf(stderr, "Kerberos database lock error. (unlocking)\n");
- fflush(stderr);
- perror("flock");
- exit(1);
- }
- mylock = 0;
-}
-
-int
-kerb_db_set_lockmode(mode)
- int mode;
-{
- int old = non_blocking;
- non_blocking = mode;
- return old;
-}
diff --git a/eBones/lib/libkdb/krb_kdb_utils.c b/eBones/lib/libkdb/krb_kdb_utils.c
deleted file mode 100644
index 0256348e2b77..000000000000
--- a/eBones/lib/libkdb/krb_kdb_utils.c
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * Utility routines for Kerberos programs which directly access
- * the database. This code was duplicated in too many places
- * before I gathered it here.
- *
- * Jon Rochlis, MIT Telecom, March 1988
- *
- * from: krb_kdb_utils.c,v 4.1 89/07/26 11:01:12 jtkohl Exp $
- * $Id: krb_kdb_utils.c,v 1.3 1995/07/18 16:37:15 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: krb_kdb_utils.c,v 1.3 1995/07/18 16:37:15 mark Exp $";
-#endif lint
-#endif
-
-#include <des.h>
-#include <krb.h>
-#include <krb_db.h>
-#include <kdc.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <string.h>
-#include <sys/file.h>
-
-long
-kdb_get_master_key(prompt, master_key, master_key_sched)
- int prompt;
- C_Block master_key;
- Key_schedule master_key_sched;
-{
- int kfile;
-
- if (prompt) {
-#ifdef NOENCRYPTION
- placebo_read_password(master_key,
- "\nEnter Kerberos master key: ", 0);
-#else
- des_read_password((des_cblock *)master_key,
- "\nEnter Kerberos master key: ", 0);
-#endif
- printf ("\n");
- }
- else {
- kfile = open(MKEYFILE, O_RDONLY, 0600);
- if (kfile < 0) {
- /* oh, for com_err_ */
- return (-1);
- }
- if (read(kfile, (char *) master_key, 8) != 8) {
- return (-1);
- }
- close(kfile);
- }
-
-#ifndef NOENCRYPTION
- key_sched((des_cblock *)master_key,master_key_sched);
-#endif
- return (0);
-}
-
-/* The caller is reasponsible for cleaning up the master key and sched,
- even if we can't verify the master key */
-
-/* Returns master key version if successful, otherwise -1 */
-
-long
-kdb_verify_master_key (master_key, master_key_sched, out)
- C_Block master_key;
- Key_schedule master_key_sched;
- FILE *out; /* setting this to non-null be do output */
-{
- C_Block key_from_db;
- Principal principal_data[1];
- int n, more = 0;
- long master_key_version;
-
- /* lookup the master key version */
- n = kerb_get_principal(KERB_M_NAME, KERB_M_INST, principal_data,
- 1 /* only one please */, &more);
- if ((n != 1) || more) {
- if (out != (FILE *) NULL)
- fprintf(out,
- "verify_master_key: %s, %d found.\n",
- "Kerberos error on master key version lookup",
- n);
- return (-1);
- }
-
- master_key_version = (long) principal_data[0].key_version;
-
- /* set up the master key */
- if (out != (FILE *) NULL) /* should we punt this? */
- fprintf(out, "Current Kerberos master key version is %d.\n",
- principal_data[0].kdc_key_ver);
-
- /*
- * now use the master key to decrypt the key in the db, had better
- * be the same!
- */
- bcopy(&principal_data[0].key_low, key_from_db, 4);
- bcopy(&principal_data[0].key_high, ((long *) key_from_db) + 1, 4);
- kdb_encrypt_key (key_from_db, key_from_db,
- master_key, master_key_sched, DECRYPT);
-
- /* the decrypted database key had better equal the master key */
- n = bcmp((char *) master_key, (char *) key_from_db,
- sizeof(master_key));
- /* this used to zero the master key here! */
- bzero(key_from_db, sizeof(key_from_db));
- bzero(principal_data, sizeof (principal_data));
-
- if (n && (out != (FILE *) NULL)) {
- fprintf(out, "\n\07\07verify_master_key: Invalid master key; ");
- fprintf(out, "does not match database.\n");
- return (-1);
- }
- if (out != (FILE *) NULL) {
- fprintf(out, "\nMaster key entered. BEWARE!\07\07\n");
- fflush(out);
- }
-
- return (master_key_version);
-}
-
-/* The old algorithm used the key schedule as the initial vector which
- was byte order depedent ... */
-
-void
-kdb_encrypt_key (in, out, master_key, master_key_sched, e_d_flag)
- C_Block in, out, master_key;
- Key_schedule master_key_sched;
- int e_d_flag;
-{
-
-#ifdef NOENCRYPTION
- bcopy(in, out, sizeof(C_Block));
-#else
- pcbc_encrypt((des_cblock*)in,(des_cblock*)out,(long)sizeof(C_Block),
- master_key_sched,(des_cblock*)master_key,e_d_flag);
-#endif
-}
diff --git a/eBones/lib/libkdb/krb_lib.c b/eBones/lib/libkdb/krb_lib.c
deleted file mode 100644
index 2cf4fb8723d6..000000000000
--- a/eBones/lib/libkdb/krb_lib.c
+++ /dev/null
@@ -1,242 +0,0 @@
-/*
- * $Source: /usr/cvs/src/eBones/kdb/krb_lib.c,v $
- * $Author: mark $
- *
- * Copyright 1988 by the Massachusetts Institute of Technology.
- *
- * For copying and distribution information, please see the file
- * <mit-copyright.h>.
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: krb_lib.c,v 1.3 1995/07/18 16:37:17 mark Exp $";
-#endif lint
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <netinet/in.h>
-#include <sys/uio.h>
-#include <sys/time.h>
-#include <sys/resource.h>
-#include <strings.h>
-#include <des.h>
-#include <krb.h>
-#include <krb_db.h>
-
-#ifdef DEBUG
-extern int debug;
-extern char *progname;
-long kerb_debug;
-#endif
-
-static init = 0;
-
-/*
- * initialization routine for data base
- */
-
-int
-kerb_init()
-{
-#ifdef DEBUG
- if (!init) {
- char *dbg = getenv("KERB_DBG");
- if (dbg)
- sscanf(dbg, "%ld", &kerb_debug);
- init = 1;
- }
-#endif
- kerb_db_init();
-
-#ifdef CACHE
- kerb_cache_init();
-#endif
-
- /* successful init, return 0, else errcode */
- return (0);
-}
-
-/*
- * finalization routine for database -- NOTE: MUST be called by any
- * program using kerb_init. ALSO will have to be modified to finalize
- * caches, if they're ever really implemented.
- */
-
-void
-kerb_fini()
-{
- kerb_db_fini();
-}
-
-/*
- * look up a principal in the cache or data base returns number of
- * principals found
- */
-
-int
-kerb_get_principal(name, inst, principal, max, more)
- char *name; /* could have wild card */
- char *inst; /* could have wild card */
- Principal *principal;
- unsigned int max; /* max number of name structs to return */
- int *more; /* more tuples than room for */
-
-{
- int found = 0;
-#ifdef CACHE
- static int wild = 0;
-#endif
- if (!init)
- kerb_init();
-
-#ifdef DEBUG
- if (kerb_debug & 1)
- fprintf(stderr, "\n%s: kerb_get_principal for %s %s max = %d\n",
- progname, name, inst, max);
-#endif
-
- /*
- * if this is a request including a wild card, have to go to db
- * since the cache may not be exhaustive.
- */
-
- /* clear the principal area */
- bzero((char *) principal, max * sizeof(Principal));
-
-#ifdef CACHE
- /*
- * so check to see if the name contains a wildcard "*" or "?", not
- * preceeded by a backslash.
- */
- wild = 0;
- if (index(name, '*') || index(name, '?') ||
- index(inst, '*') || index(inst, '?'))
- wild = 1;
-
- if (!wild) {
- /* try the cache first */
- found = kerb_cache_get_principal(name, inst, principal, max, more);
- if (found)
- return (found);
- }
-#endif
- /* If we didn't try cache, or it wasn't there, try db */
- found = kerb_db_get_principal(name, inst, principal, max, more);
- /* try to insert principal(s) into cache if it was found */
-#ifdef CACHE
- if (found) {
- kerb_cache_put_principal(principal, found);
- }
-#endif
- return (found);
-}
-
-/* principals */
-int
-kerb_put_principal(principal, n)
- Principal *principal;
- unsigned int n; /* number of principal structs to write */
-{
- long time();
- struct tm *tp, *localtime();
-
- /* set mod date */
- principal->mod_date = time((long *)0);
- /* and mod date string */
-
- tp = localtime(&principal->mod_date);
- (void) sprintf(principal->mod_date_txt, "%4d-%2d-%2d",
- tp->tm_year > 1900 ? tp->tm_year : tp->tm_year + 1900,
- tp->tm_mon + 1, tp->tm_mday); /* January is 0, not 1 */
-#ifdef DEBUG
- if (kerb_debug & 1) {
- int i;
- fprintf(stderr, "\nkerb_put_principal...");
- for (i = 0; i < n; i++) {
- krb_print_principal(&principal[i]);
- }
- }
-#endif
- /* write database */
- if (kerb_db_put_principal(principal, n) < 0) {
-#ifdef DEBUG
- if (kerb_debug & 1)
- fprintf(stderr, "\n%s: kerb_db_put_principal err", progname);
- /* watch out for cache */
-#endif
- return -1;
- }
-#ifdef CACHE
- /* write cache */
- if (!kerb_cache_put_principal(principal, n)) {
-#ifdef DEBUG
- if (kerb_debug & 1)
- fprintf(stderr, "\n%s: kerb_cache_put_principal err", progname);
-#endif
- return -1;
- }
-#endif
- return 0;
-}
-
-int
-kerb_get_dba(name, inst, dba, max, more)
- char *name; /* could have wild card */
- char *inst; /* could have wild card */
- Dba *dba;
- unsigned int max; /* max number of name structs to return */
- int *more; /* more tuples than room for */
-
-{
- int found = 0;
-#ifdef CACHE
- static int wild = 0;
-#endif
- if (!init)
- kerb_init();
-
-#ifdef DEBUG
- if (kerb_debug & 1)
- fprintf(stderr, "\n%s: kerb_get_dba for %s %s max = %d\n",
- progname, name, inst, max);
-#endif
- /*
- * if this is a request including a wild card, have to go to db
- * since the cache may not be exhaustive.
- */
-
- /* clear the dba area */
- bzero((char *) dba, max * sizeof(Dba));
-
-#ifdef CACHE
- /*
- * so check to see if the name contains a wildcard "*" or "?", not
- * preceeded by a backslash.
- */
-
- wild = 0;
- if (index(name, '*') || index(name, '?') ||
- index(inst, '*') || index(inst, '?'))
- wild = 1;
-
- if (!wild) {
- /* try the cache first */
- found = kerb_cache_get_dba(name, inst, dba, max, more);
- if (found)
- return (found);
- }
-#endif
- /* If we didn't try cache, or it wasn't there, try db */
- found = kerb_db_get_dba(name, inst, dba, max, more);
-#ifdef CACHE
- /* try to insert dba(s) into cache if it was found */
- if (found) {
- kerb_cache_put_dba(dba, found);
- }
-#endif
- return (found);
-}
diff --git a/eBones/lib/libkdb/print_princ.c b/eBones/lib/libkdb/print_princ.c
deleted file mode 100644
index 64e910660e22..000000000000
--- a/eBones/lib/libkdb/print_princ.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: $Header: /usr/cvs/src/eBones/kdb/print_princ.c,v 1.3 1995/07/18 16:37:19 mark Exp $
- * $Id: print_princ.c,v 1.3 1995/07/18 16:37:19 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: print_princ.c,v 1.3 1995/07/18 16:37:19 mark Exp $";
-#endif lint
-#endif
-
-#include <stdio.h>
-#include <time.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <strings.h>
-#include <krb.h>
-#include <krb_db.h>
-
-extern int debug;
-
-long kerb_debug;
-static struct tm *time_p;
-
-void
-krb_print_principal(a_n)
- Principal *a_n;
-{
- /* run-time database does not contain string versions */
- time_p = localtime(&(a_n->exp_date));
-
- fprintf(stderr,
- "\n%s %s expires %4d-%2d-%2d %2d:%2d, max_life %d*5 = %d min attr 0x%02x",
- a_n->name, a_n->instance,
- time_p->tm_year > 1900 ? time_p->tm_year : time_p->tm_year + 1900,
- time_p->tm_mon + 1, time_p->tm_mday,
- time_p->tm_hour, time_p->tm_min,
- a_n->max_life, 5 * a_n->max_life, a_n->attributes);
-
- fprintf(stderr,
- "\n\tkey_ver %d k_low 0x%08lx k_high 0x%08lx akv %d exists %d\n",
- a_n->key_version, a_n->key_low, a_n->key_high,
- a_n->kdc_key_ver, (int)a_n->old);
-
- fflush(stderr);
-}
diff --git a/eBones/lib/libkrb/Makefile b/eBones/lib/libkrb/Makefile
deleted file mode 100644
index d220efffc779..000000000000
--- a/eBones/lib/libkrb/Makefile
+++ /dev/null
@@ -1,53 +0,0 @@
-# From: @(#)Makefile 5.1 (Berkeley) 6/25/90
-# $Id: Makefile,v 1.9 1995/09/14 04:05:02 gibbs Exp $
-
-LIB= krb
-CFLAGS+=-DKERBEROS -DCRYPT -DDEBUG -DBSD42
-SRCS= krb_err.c create_auth_reply.c create_ciph.c \
- create_death_packet.c create_ticket.c debug_decl.c decomp_ticket.c \
- des_rw.c dest_tkt.c extract_ticket.c fgetst.c get_ad_tkt.c \
- get_admhst.c get_cred.c get_in_tkt.c get_krbhst.c get_krbrlm.c \
- get_phost.c get_pw_tkt.c get_request.c get_svc_in_tkt.c \
- get_tf_fullname.c get_tf_realm.c getrealm.c getst.c in_tkt.c \
- k_gethostname.c klog.c kname_parse.c kntoln.c kparse.c \
- krb_err_txt.c krb_get_in_tkt.c kuserok.c log.c mk_err.c \
- mk_priv.c mk_req.c mk_safe.c month_sname.c \
- netread.c netwrite.c one.c pkt_cipher.c pkt_clen.c rd_err.c \
- rd_priv.c rd_req.c rd_safe.c read_service_key.c recvauth.c \
- save_credentials.c send_to_kdc.c sendauth.c stime.c tf_util.c \
- tkt_string.c util.c
-
-LDADD+= -lcom_err
-
-beforeinstall: krb_err.c
- -cd ${.OBJDIR}; cmp -s krb_err.h \
- ${DESTDIR}/usr/include/kerberosIV/krb_err.h || \
- install -c -o ${BINOWN} -g ${BINGRP} -m 444 krb_err.h \
- ${DESTDIR}/usr/include/kerberosIV
-
-MAN3= krb.3 krb_realmofhost.3 krb_sendauth.3 krb_set_tkt_string.3 \
- kuserok.3 tf_util.3
-
-MLINKS= krb.3 krb_mk_req.3 krb.3 krb_rd_req.3 krb.3 krb_kntoln.3 \
- krb.3 krb_set_key.3 krb.3 krb_get_cred.3 krb.3 krb_mk_priv.3 \
- krb.3 krb_rd_priv.3 krb.3 krb_mk_safe.3 krb.3 krb_rd_safe.3 \
- krb.3 krb_mk_err.3 krb.3 krb_rd_err.3 krb.3 krb_ck_repl.3
-
-MLINKS+=krb_realmofhost.3 krb_get_phost.3 krb_realmofhost.3 krb_get_krbhst.3 \
- krb_realmofhost.3 krb_get_admhst.3 krb_realmofhost.3 krb_get_lrealm.3
-
-MLINKS+=krb_realmofhost.3 realm.3
-
-MLINKS+=krb_sendauth.3 krb_recvauth.3 krb_sendauth.3 krb_net_write.3 \
- krb_sendauth.3 krb_net_read.3
-
-MLINKS+=krb_sendauth.3 ksend.3
-
-MLINKS+=tf_util.3 tf_init.3 tf_util.3 tf_get_pname.3 \
- tf_util.3 tf_get_pinst.3 tf_util.3 tf_get_cred.3 \
- tf_util.3 tf_close.3
-
-.include <bsd.lib.mk>
-
-krb_err.c: ${KRBOBJDIR}/krb_err.h
-
diff --git a/eBones/lib/libkrb/add_ticket.c b/eBones/lib/libkrb/add_ticket.c
deleted file mode 100644
index 14ef47c46a0b..000000000000
--- a/eBones/lib/libkrb/add_ticket.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: add_ticket.c,v 4.7 88/10/07 06:06:26 shanzer Exp $
- * $Id: add_ticket.c,v 1.3 1995/07/18 16:38:04 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: add_ticket.c,v 1.3 1995/07/18 16:38:04 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <krb.h>
-#include <prot.h>
-#include <strings.h>
-
-/*
- * This routine is now obsolete. It used to be possible to request
- * more than one ticket at a time from the authentication server, and
- * it looks like this routine was used by the server to package the
- * tickets to be returned to the client.
- */
-
-/*
- * This routine adds a new ticket to the ciphertext to be returned to
- * the client. The routine takes the ciphertext (which doesn't get
- * encrypted till later), the number of the ticket (i.e. 1st, 2nd,
- * etc) the session key which goes in the ticket and is sent back to
- * the user, the lifetime for the ticket, the service name, the
- * instance, the realm, the key version number, and the ticket itself.
- *
- * This routine returns 0 (KSUCCESS) on success, and 1 (KFAILURE) on
- * failure. On failure, which occurs when there isn't enough room
- * for the ticket, a 0 length ticket is added.
- *
- * Notes: This routine must be called with successive values of n.
- * i.e. the ticket must be added in order. The corresponding routine
- * on the client side is extract ticket.
- */
-
-/* XXX they aren't all used; to avoid incompatible changes we will
- * fool lint for the moment */
-/*ARGSUSED */
-int
-add_ticket(cipher,n,session,lifetime,sname,instance,realm,kvno,ticket)
- KTEXT cipher; /* Ciphertext info for ticket */
- char *sname; /* Service name */
- char *instance; /* Instance */
- int n; /* Relative position of this ticket */
- char *session; /* Session key for this tkt */
- int lifetime; /* Lifetime of this ticket */
- char *realm; /* Realm in which ticket is valid */
- int kvno; /* Key version number of service key */
- KTEXT ticket; /* The ticket itself */
-{
-
- /* Note, the 42 is a temporary hack; it will have to be changed. */
-
- /* Begin check of ticket length */
- if ((cipher->length + ticket->length + 4 + 42 +
- (*(cipher->dat)+1-n)*(11+strlen(realm))) >
- MAX_KTXT_LEN) {
- bcopy(session,(char *)(cipher->dat+cipher->length),8);
- *(cipher->dat+cipher->length+8) = (char) lifetime;
- *(cipher->dat+cipher->length+9) = (char) kvno;
- (void) strcpy((char *)(cipher->dat+cipher->length+10),realm);
- cipher->length += 11 + strlen(realm);
- *(cipher->dat+n) = 0;
- return(KFAILURE);
- }
- /* End check of ticket length */
-
- /* Add the session key, lifetime, kvno, ticket to the ciphertext */
- bcopy(session,(char *)(cipher->dat+cipher->length),8);
- *(cipher->dat+cipher->length+8) = (char) lifetime;
- *(cipher->dat+cipher->length+9) = (char) kvno;
- (void) strcpy((char *)(cipher->dat+cipher->length+10),realm);
- cipher->length += 11 + strlen(realm);
- bcopy((char *)(ticket->dat),(char *)(cipher->dat+cipher->length),
- ticket->length);
- cipher->length += ticket->length;
-
- /* Set the ticket length at beginning of ciphertext */
- *(cipher->dat+n) = ticket->length;
- return(KSUCCESS);
-}
diff --git a/eBones/lib/libkrb/create_auth_reply.c b/eBones/lib/libkrb/create_auth_reply.c
deleted file mode 100644
index e304b173628d..000000000000
--- a/eBones/lib/libkrb/create_auth_reply.c
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: create_auth_reply.c,v 4.10 89/01/13 17:47:38 steiner Exp $
- * $Id: create_auth_reply.c,v 1.3 1995/07/18 16:38:06 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char *rcsid =
-"$Id: create_auth_reply.c,v 1.3 1995/07/18 16:38:06 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <krb.h>
-#include <prot.h>
-#include <strings.h>
-
-/*
- * This routine is called by the Kerberos authentication server
- * to create a reply to an authentication request. The routine
- * takes the user's name, instance, and realm, the client's
- * timestamp, the number of tickets, the user's key version
- * number and the ciphertext containing the tickets themselves.
- * It constructs a packet and returns a pointer to it.
- *
- * Notes: The packet returned by this routine is static. Thus, if you
- * intend to keep the result beyond the next call to this routine, you
- * must copy it elsewhere.
- *
- * The packet is built in the following format:
- *
- * variable
- * type or constant data
- * ---- ----------- ----
- *
- * unsigned char KRB_PROT_VERSION protocol version number
- *
- * unsigned char AUTH_MSG_KDC_REPLY protocol message type
- *
- * [least significant HOST_BYTE_ORDER sender's (server's) byte
- * bit of above field] order
- *
- * string pname principal's name
- *
- * string pinst principal's instance
- *
- * string prealm principal's realm
- *
- * unsigned long time_ws client's timestamp
- *
- * unsigned char n number of tickets
- *
- * unsigned long x_date expiration date
- *
- * unsigned char kvno master key version
- *
- * short w_1 cipher length
- *
- * --- cipher->dat cipher data
- */
-
-KTEXT
-create_auth_reply(pname,pinst,prealm,time_ws,n,x_date,kvno,cipher)
- char *pname; /* Principal's name */
- char *pinst; /* Principal's instance */
- char *prealm; /* Principal's authentication domain */
- long time_ws; /* Workstation time */
- int n; /* Number of tickets */
- unsigned long x_date; /* Principal's expiration date */
- int kvno; /* Principal's key version number */
- KTEXT cipher; /* Cipher text with tickets and
- * session keys */
-{
- static KTEXT_ST pkt_st;
- KTEXT pkt = &pkt_st;
- unsigned char *v = pkt->dat; /* Prot vers number */
- unsigned char *t = (pkt->dat+1); /* Prot message type */
- short w_l; /* Cipher length */
-
- /* Create fixed part of packet */
- *v = (unsigned char) KRB_PROT_VERSION;
- *t = (unsigned char) AUTH_MSG_KDC_REPLY;
- *t |= HOST_BYTE_ORDER;
-
- if (n != 0)
- *v = 3;
-
- /* Add the basic info */
- (void) strcpy((char *) (pkt->dat+2), pname);
- pkt->length = 3 + strlen(pname);
- (void) strcpy((char *) (pkt->dat+pkt->length),pinst);
- pkt->length += 1 + strlen(pinst);
- (void) strcpy((char *) (pkt->dat+pkt->length),prealm);
- pkt->length += 1 + strlen(prealm);
- /* Workstation timestamp */
- bcopy((char *) &time_ws, (char *) (pkt->dat+pkt->length), 4);
- pkt->length += 4;
- *(pkt->dat+(pkt->length)++) = (unsigned char) n;
- /* Expiration date */
- bcopy((char *) &x_date, (char *) (pkt->dat+pkt->length),4);
- pkt->length += 4;
-
- /* Now send the ciphertext and info to help decode it */
- *(pkt->dat+(pkt->length)++) = (unsigned char) kvno;
- w_l = (short) cipher->length;
- bcopy((char *) &w_l,(char *) (pkt->dat+pkt->length),2);
- pkt->length += 2;
- bcopy((char *) (cipher->dat), (char *) (pkt->dat+pkt->length),
- cipher->length);
- pkt->length += cipher->length;
-
- /* And return the packet */
- return pkt;
-}
diff --git a/eBones/lib/libkrb/create_ciph.c b/eBones/lib/libkrb/create_ciph.c
deleted file mode 100644
index 7fb93e337d1c..000000000000
--- a/eBones/lib/libkrb/create_ciph.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: create_ciph.c,v 4.8 89/05/18 21:24:26 jis Exp $
- * $Id: create_ciph.c,v 1.3 1995/07/18 16:38:07 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char *rcsid =
-"$Id: create_ciph.c,v 1.3 1995/07/18 16:38:07 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <krb.h>
-#include <des.h>
-#include <strings.h>
-
-/*
- * This routine is used by the authentication server to create
- * a packet for its client, containing a ticket for the requested
- * service (given in "tkt"), and some information about the ticket,
- *
- * Returns KSUCCESS no matter what.
- *
- * The length of the cipher is stored in c->length; the format of
- * c->dat is as follows:
- *
- * variable
- * type or constant data
- * ---- ----------- ----
- *
- *
- * 8 bytes session session key for client, service
- *
- * string service service name
- *
- * string instance service instance
- *
- * string realm KDC realm
- *
- * unsigned char life ticket lifetime
- *
- * unsigned char kvno service key version number
- *
- * unsigned char tkt->length length of following ticket
- *
- * data tkt->dat ticket for service
- *
- * 4 bytes kdc_time KDC's timestamp
- *
- * <=7 bytes null null pad to 8 byte multiple
- *
- */
-
-int
-create_ciph(c, session, service, instance, realm, life, kvno, tkt,
- kdc_time, key)
- KTEXT c; /* Text block to hold ciphertext */
- C_Block session; /* Session key to send to user */
- char *service; /* Service name on ticket */
- char *instance; /* Instance name on ticket */
- char *realm; /* Realm of this KDC */
- unsigned long life; /* Lifetime of the ticket */
- int kvno; /* Key version number for service */
- KTEXT tkt; /* The ticket for the service */
- unsigned long kdc_time; /* KDC time */
- C_Block key; /* Key to encrypt ciphertext with */
-{
- char *ptr;
- Key_schedule key_s;
-
- ptr = (char *) c->dat;
-
- bcopy((char *) session, ptr, 8);
- ptr += 8;
-
- (void) strcpy(ptr,service);
- ptr += strlen(service) + 1;
-
- (void) strcpy(ptr,instance);
- ptr += strlen(instance) + 1;
-
- (void) strcpy(ptr,realm);
- ptr += strlen(realm) + 1;
-
- *(ptr++) = (unsigned char) life;
- *(ptr++) = (unsigned char) kvno;
- *(ptr++) = (unsigned char) tkt->length;
-
- bcopy((char *)(tkt->dat),ptr,tkt->length);
- ptr += tkt->length;
-
- bcopy((char *) &kdc_time,ptr,4);
- ptr += 4;
-
- /* guarantee null padded encrypted data to multiple of 8 bytes */
- bzero(ptr, 7);
-
- c->length = (((ptr - (char *) c->dat) + 7) / 8) * 8;
-
-#ifndef NOENCRYPTION
- key_sched((C_Block *)key,key_s);
- pcbc_encrypt((C_Block *)c->dat,(C_Block *)c->dat,(long) c->length,key_s,
- (C_Block *)key,ENCRYPT);
-#endif /* NOENCRYPTION */
-
- return(KSUCCESS);
-}
diff --git a/eBones/lib/libkrb/create_death_packet.c b/eBones/lib/libkrb/create_death_packet.c
deleted file mode 100644
index bdc0e347bf15..000000000000
--- a/eBones/lib/libkrb/create_death_packet.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: create_death_packet.c,v 4.9 89/01/17 16:05:59 rfrench Exp $
- * $Id: create_death_packet.c,v 1.3 1995/07/18 16:38:09 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char *rcsid =
-"$Id: create_death_packet.c,v 1.3 1995/07/18 16:38:09 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <krb.h>
-#include <prot.h>
-#include <strings.h>
-
-/*
- * This routine creates a packet to type AUTH_MSG_DIE which is sent to
- * the Kerberos server to make it shut down. It is used only in the
- * development environment.
- *
- * It takes a string "a_name" which is sent in the packet. A pointer
- * to the packet is returned.
- *
- * The format of the killer packet is:
- *
- * type variable data
- * or constant
- * ---- ----------- ----
- *
- * unsigned char KRB_PROT_VERSION protocol version number
- *
- * unsigned char AUTH_MSG_DIE message type
- *
- * [least significant HOST_BYTE_ORDER byte order of sender
- * bit of above field]
- *
- * string a_name presumably, name of
- * principal sending killer
- * packet
- */
-
-#ifdef DEBUG
-KTEXT
-krb_create_death_packet(a_name)
- char *a_name;
-{
- static KTEXT_ST pkt_st;
- KTEXT pkt = &pkt_st;
-
- unsigned char *v = pkt->dat;
- unsigned char *t = (pkt->dat+1);
- *v = (unsigned char) KRB_PROT_VERSION;
- *t = (unsigned char) AUTH_MSG_DIE;
- *t |= HOST_BYTE_ORDER;
- (void) strcpy((char *) (pkt->dat+2),a_name);
- pkt->length = 3 + strlen(a_name);
- return pkt;
-}
-#endif /* DEBUG */
diff --git a/eBones/lib/libkrb/create_ticket.c b/eBones/lib/libkrb/create_ticket.c
deleted file mode 100644
index e1d697419e1b..000000000000
--- a/eBones/lib/libkrb/create_ticket.c
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: create_ticket.c,v 4.11 89/03/22 14:43:23 jtkohl Exp $
- * $Id: create_ticket.c,v 1.3 1995/07/18 16:38:12 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: create_ticket.c,v 1.3 1995/07/18 16:38:12 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <stdio.h>
-#include <des.h>
-#include <krb.h>
-#include <prot.h>
-#include <strings.h>
-
-/*
- * Create ticket takes as arguments information that should be in a
- * ticket, and the KTEXT object in which the ticket should be
- * constructed. It then constructs a ticket and returns, leaving the
- * newly created ticket in tkt.
- * The length of the ticket is a multiple of
- * eight bytes and is in tkt->length.
- *
- * If the ticket is too long, the ticket will contain nulls.
- * The return value of the routine is undefined.
- *
- * The corresponding routine to extract information from a ticket it
- * decomp_ticket. When changes are made to this routine, the
- * corresponding changes should also be made to that file.
- *
- * The packet is built in the following format:
- *
- * variable
- * type or constant data
- * ---- ----------- ----
- *
- * tkt->length length of ticket (multiple of 8 bytes)
- *
- * tkt->dat:
- *
- * unsigned char flags namely, HOST_BYTE_ORDER
- *
- * string pname client's name
- *
- * string pinstance client's instance
- *
- * string prealm client's realm
- *
- * 4 bytes paddress client's address
- *
- * 8 bytes session session key
- *
- * 1 byte life ticket lifetime
- *
- * 4 bytes time_sec KDC timestamp
- *
- * string sname service's name
- *
- * string sinstance service's instance
- *
- * <=7 bytes null null pad to 8 byte multiple
- *
- */
-
-int krb_create_ticket(tkt, flags, pname, pinstance, prealm, paddress,
- session, life, time_sec, sname, sinstance, key)
- KTEXT tkt; /* Gets filled in by the ticket */
- unsigned char flags; /* Various Kerberos flags */
- char *pname; /* Principal's name */
- char *pinstance; /* Principal's instance */
- char *prealm; /* Principal's authentication domain */
- long paddress; /* Net address of requesting entity */
- char *session; /* Session key inserted in ticket */
- short life; /* Lifetime of the ticket */
- long time_sec; /* Issue time and date */
- char *sname; /* Service Name */
- char *sinstance; /* Instance Name */
- C_Block key; /* Service's secret key */
-{
- Key_schedule key_s;
- register char *data; /* running index into ticket */
-
- tkt->length = 0; /* Clear previous data */
- flags |= HOST_BYTE_ORDER; /* ticket byte order */
- bcopy((char *) &flags,(char *) (tkt->dat),sizeof(flags));
- data = ((char *)tkt->dat) + sizeof(flags);
- (void) strcpy(data, pname);
- data += 1 + strlen(pname);
- (void) strcpy(data, pinstance);
- data += 1 + strlen(pinstance);
- (void) strcpy(data, prealm);
- data += 1 + strlen(prealm);
- bcopy((char *) &paddress, data, 4);
- data += 4;
-
- bcopy((char *) session, data, 8);
- data += 8;
- *(data++) = (char) life;
- /* issue time */
- bcopy((char *) &time_sec, data, 4);
- data += 4;
- (void) strcpy(data, sname);
- data += 1 + strlen(sname);
- (void) strcpy(data, sinstance);
- data += 1 + strlen(sinstance);
-
- /* guarantee null padded ticket to multiple of 8 bytes */
- bzero(data, 7);
- tkt->length = ((data - ((char *)tkt->dat) + 7)/8)*8;
-
- /* Check length of ticket */
- if (tkt->length > (sizeof(KTEXT_ST) - 7)) {
- bzero(tkt->dat, tkt->length);
- tkt->length = 0;
- return KFAILURE /* XXX */;
- }
-
-#ifndef NOENCRYPTION
- key_sched((C_Block *)key,key_s);
- pcbc_encrypt((C_Block *)tkt->dat,(C_Block *)tkt->dat,(long)tkt->length,
- key_s,(C_Block *)key,ENCRYPT);
-#endif
- return 0;
-}
diff --git a/eBones/lib/libkrb/debug_decl.c b/eBones/lib/libkrb/debug_decl.c
deleted file mode 100644
index f548e2a0bfa9..000000000000
--- a/eBones/lib/libkrb/debug_decl.c
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: debug_decl.c,v 4.5 88/10/07 06:07:49 shanzer Exp $
- * $Id: debug_decl.c,v 1.3 1995/07/18 16:38:14 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: debug_decl.c,v 1.3 1995/07/18 16:38:14 mark Exp $";
-#endif lint
-#endif
-
-/* Declare global debugging variables. */
-
-int krb_ap_req_debug = 0;
-int krb_debug = 0;
diff --git a/eBones/lib/libkrb/decomp_ticket.c b/eBones/lib/libkrb/decomp_ticket.c
deleted file mode 100644
index 04316ad40577..000000000000
--- a/eBones/lib/libkrb/decomp_ticket.c
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: decomp_ticket.c,v 4.12 89/05/16 18:44:46 jtkohl Exp $
- * $Id: decomp_ticket.c,v 1.3 1995/07/18 16:38:15 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char *rcsid =
-"$Id: decomp_ticket.c,v 1.3 1995/07/18 16:38:15 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <stdio.h>
-#include <des.h>
-#include <krb.h>
-#include <prot.h>
-#include <strings.h>
-
-/*
- * This routine takes a ticket and pointers to the variables that
- * should be filled in based on the information in the ticket. It
- * fills in values for its arguments.
- *
- * Note: if the client realm field in the ticket is the null string,
- * then the "prealm" variable is filled in with the local realm (as
- * defined by KRB_REALM).
- *
- * If the ticket byte order is different than the host's byte order
- * (as indicated by the byte order bit of the "flags" field), then
- * the KDC timestamp "time_sec" is byte-swapped. The other fields
- * potentially affected by byte order, "paddress" and "session" are
- * not byte-swapped.
- *
- * The routine returns KFAILURE if any of the "pname", "pinstance",
- * or "prealm" fields is too big, otherwise it returns KSUCCESS.
- *
- * The corresponding routine to generate tickets is create_ticket.
- * When changes are made to this routine, the corresponding changes
- * should also be made to that file.
- *
- * See create_ticket.c for the format of the ticket packet.
- */
-
-int
-decomp_ticket(tkt, flags, pname, pinstance, prealm, paddress, session,
- life, time_sec, sname, sinstance, key, key_s)
- KTEXT tkt; /* The ticket to be decoded */
- unsigned char *flags; /* Kerberos ticket flags */
- char *pname; /* Authentication name */
- char *pinstance; /* Principal's instance */
- char *prealm; /* Principal's authentication domain */
- unsigned long *paddress; /* Net address of entity
- * requesting ticket */
- C_Block session; /* Session key inserted in ticket */
- int *life; /* Lifetime of the ticket */
- unsigned long *time_sec; /* Issue time and date */
- char *sname; /* Service name */
- char *sinstance; /* Service instance */
- C_Block key; /* Service's secret key
- * (to decrypt the ticket) */
- Key_schedule key_s; /* The precomputed key schedule */
-{
- static int tkt_swap_bytes;
- unsigned char *uptr;
- char *ptr = (char *)tkt->dat;
-
-#ifndef NOENCRYPTION
- pcbc_encrypt((C_Block *)tkt->dat,(C_Block *)tkt->dat,(long)tkt->length,
- key_s,(C_Block *)key,DECRYPT);
-#endif /* ! NOENCRYPTION */
-
- *flags = *ptr; /* get flags byte */
- ptr += sizeof(*flags);
- tkt_swap_bytes = 0;
- if (HOST_BYTE_ORDER != ((*flags >> K_FLAG_ORDER)& 1))
- tkt_swap_bytes++;
-
- if (strlen(ptr) > ANAME_SZ)
- return(KFAILURE);
- (void) strcpy(pname,ptr); /* pname */
- ptr += strlen(pname) + 1;
-
- if (strlen(ptr) > INST_SZ)
- return(KFAILURE);
- (void) strcpy(pinstance,ptr); /* instance */
- ptr += strlen(pinstance) + 1;
-
- if (strlen(ptr) > REALM_SZ)
- return(KFAILURE);
- (void) strcpy(prealm,ptr); /* realm */
- ptr += strlen(prealm) + 1;
- /* temporary hack until realms are dealt with properly */
- if (*prealm == 0)
- (void) strcpy(prealm,KRB_REALM);
-
- bcopy(ptr,(char *)paddress,4); /* net address */
- ptr += 4;
-
- bcopy(ptr,(char *)session,8); /* session key */
- ptr+= 8;
-#ifdef notdef /* DONT SWAP SESSION KEY spm 10/22/86 */
- if (tkt_swap_bytes)
- swap_C_Block(session);
-#endif
-
- /* get lifetime, being certain we don't get negative lifetimes */
- uptr = (unsigned char *) ptr++;
- *life = (int) *uptr;
-
- bcopy(ptr,(char *) time_sec,4); /* issue time */
- ptr += 4;
- if (tkt_swap_bytes)
- swap_u_long(*time_sec);
-
- (void) strcpy(sname,ptr); /* service name */
- ptr += 1 + strlen(sname);
-
- (void) strcpy(sinstance,ptr); /* instance */
- ptr += 1 + strlen(sinstance);
- return(KSUCCESS);
-}
diff --git a/eBones/lib/libkrb/des_rw.c b/eBones/lib/libkrb/des_rw.c
deleted file mode 100644
index 5b339ee3238e..000000000000
--- a/eBones/lib/libkrb/des_rw.c
+++ /dev/null
@@ -1,262 +0,0 @@
-/*
- * Copyright (c) 1994 Geoffrey M. Rehmet, Rhodes University
- * All rights reserved.
- *
- * This code is derived from a specification based on software
- * which forms part of the 4.4BSD-Lite distribution, which was developed
- * by the University of California and its contributors.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the entire comment,
- * including the above copyright notice, this list of conditions
- * and the following disclaimer, verbatim, at the beginning of
- * the source file.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Geoffrey M. Rehmet
- * 4. Neither the name of Geoffrey M. Rehmet nor that of Rhodes University
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL GEOFFREY M. REHMET OR RHODES UNIVERSITY BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $Id: des_rw.c,v 1.6 1995/07/18 16:38:17 mark Exp $
- */
-
-/*
- *
- * NB: THESE ROUTINES WILL FAIL IF NON-BLOCKING I/O IS USED.
- *
- */
-
-/*
- * Routines for reading and writing DES encrypted messages onto sockets.
- * (These routines will fail if non-blocking I/O is used.)
- *
- * When a message is written, its length is first transmitted as an int,
- * in network byte order. The encrypted message is then transmitted,
- * to a multiple of 8 bytes. Messages shorter than 8 bytes are right
- * justified into a buffer of length 8 bytes, and the remainder of the
- * buffer is filled with random garbage (before encryption):
- *
- * DDD -------->--+--------+
- * | |
- * +--+--+--+--+--+--+--+--+
- * |x |x |x |x |x |D |D |D |
- * +--+--+--+--+--+--+--+--+
- * | garbage | data |
- * | |
- * +-----------------------+----> des_pcbc_encrypt() -->
- *
- * (Note that the length field sent before the actual message specifies
- * the number of data bytes, not the length of the entire padded message.
- *
- * When data is read, if the message received is longer than the number
- * of bytes requested, then the remaining bytes are stored until the
- * following call to des_read(). If the number of bytes received is
- * less then the number of bytes received, then only the number of bytes
- * actually received is returned.
- *
- * This interface corresponds with the original des_rw.c, except for the
- * bugs in des_read() in the original 4.4BSD version. (One bug is
- * normally not visible, due to undocumented behaviour of
- * des_pcbc_encrypt() in the original MIT libdes.)
- *
- * XXX Todo:
- * 1) Give better error returns on writes
- * 2) Improve error checking on reads
- * 3) Get rid of need for extern decl. of krb_net_read()
- * 4) Tidy garbage generation a bit
- * 5) Make the above comment more readable
- */
-
-#ifdef CRYPT
-#ifdef KERBEROS
-
-#ifndef BUFFER_LEN
-#define BUFFER_LEN 10240
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include <unistd.h>
-
-#include <sys/param.h>
-#include <sys/types.h>
-
-#include <des.h>
-#include <krb.h>
-
-static des_cblock des_key;
-static des_key_schedule key_schedule;
-
-/*
- * Buffer for storing extra data when more data is received, then was
- * actually requested in des_read().
- */
-static u_char des_buff[BUFFER_LEN];
-static u_char buffer[BUFFER_LEN];
-static unsigned stored = 0;
-static u_char *buff_ptr = buffer;
-
-/*
- * Set the encryption key for des_read() and des_write().
- * inkey is the initial vector for the DES encryption, while insched is
- * the DES key, in unwrapped form.
- */
-
-int
-des_set_key(inkey, insched)
- des_cblock *inkey;
- des_key_schedule insched;
-{
- bcopy(inkey, des_key, sizeof(des_cblock));
- bcopy(insched, &key_schedule, sizeof(des_key_schedule));
- return 0;
-}
-
-/*
- * Clear the key schedule, and initial vector, which were previously
- * stored in static vars by des_set_key().
- */
-void des_clear_key()
-{
- bzero(&des_key, sizeof(des_cblock));
- bzero(&key_schedule, sizeof(des_key_schedule));
-}
-
-int
-des_read(fd, buf, len)
- int fd;
- register char * buf;
- int len;
-{
- int msg_length; /* length of actual message data */
- int pad_length; /* length of padded message */
- int nread; /* number of bytes actually read */
- int nreturned = 0;
-
- if(stored >= len) {
- bcopy(buff_ptr, buf, len);
- stored -= len;
- buff_ptr += len;
- return(len);
- } else {
- if (stored) {
- bcopy(buff_ptr, buf, stored);
- nreturned = stored;
- len -= stored;
- stored = 0;
- buff_ptr = buffer;
- } else {
- nreturned = 0;
- buff_ptr = buffer;
- }
- }
-
- nread = krb_net_read(fd, (char *)&msg_length, sizeof(msg_length));
- if(nread != (int)(sizeof(msg_length)))
- return(0);
-
- msg_length = ntohl(msg_length);
- pad_length = roundup(msg_length, 8);
-
- nread = krb_net_read(fd, des_buff, pad_length);
- if(nread != pad_length)
- return(0);
-
- des_pcbc_encrypt((des_cblock*) des_buff, (des_cblock*) buff_ptr,
- (msg_length < 8 ? 8 : msg_length),
- key_schedule, (des_cblock*) &des_key, DES_DECRYPT);
-
-
- if(msg_length < 8)
- buff_ptr += (8 - msg_length);
- stored = msg_length;
-
- if(stored >= len) {
- bcopy(buff_ptr, buf, len);
- stored -= len;
- buff_ptr += len;
- nreturned += len;
- } else {
- bcopy(buff_ptr, buf, stored);
- nreturned += stored;
- stored = 0;
- }
-
- return(nreturned);
-}
-
-
-/*
- * Write a message onto a file descriptor (generally a socket), using
- * DES to encrypt the message.
- */
-int
-des_write(fd, buf, len)
- int fd;
- char * buf;
- int len;
-{
- static int seeded = 0;
- char garbage[8];
- long rnd;
- int pad_len;
- int write_len;
- int i;
- char *data;
-
- if(len < 8) {
- /*
- * Right justify the message in 8 bytes of random garbage.
- */
- if(!seeded) {
- seeded = 1;
- srandom((unsigned)time(NULL));
- }
-
- for(i = 0 ; i < 8 ; i+= sizeof(long)) {
- rnd = random();
- bcopy(&rnd, garbage+i,
- (i <= (8 - sizeof(long)))?sizeof(long):(8-i));
- }
- bcopy(buf, garbage + 8 - len, len);
- data = garbage;
- pad_len = 8;
- } else {
- data = buf;
- pad_len = roundup(len, 8);
- }
-
- des_pcbc_encrypt((des_cblock*) data, (des_cblock*) des_buff,
- (len < 8)?8:len, key_schedule, (des_cblock*) &des_key, DES_ENCRYPT);
-
-
- write_len = htonl(len);
- if(write(fd, &write_len, sizeof(write_len)) != sizeof(write_len))
- return(-1);
- if(write(fd, des_buff, pad_len) != pad_len)
- return(-1);
-
- return(len);
-}
-
-#endif /* KERBEROS */
-#endif /* CRYPT */
diff --git a/eBones/lib/libkrb/dest_tkt.c b/eBones/lib/libkrb/dest_tkt.c
deleted file mode 100644
index df04be0d08bd..000000000000
--- a/eBones/lib/libkrb/dest_tkt.c
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: dest_tkt.c,v 4.9 89/10/02 16:23:07 jtkohl Exp $
- * $Id: dest_tkt.c,v 1.3 1995/07/18 16:38:19 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char *rcsid =
-"$Id: dest_tkt.c,v 1.3 1995/07/18 16:38:19 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <unistd.h>
-#include <stdio.h>
-#include <string.h>
-#include <krb.h>
-#include <sys/file.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#ifdef TKT_SHMEM
-#include <sys/param.h>
-#endif
-#include <errno.h>
-
-/*
- * dest_tkt() is used to destroy the ticket store upon logout.
- * If the ticket file does not exist, dest_tkt() returns RET_TKFIL.
- * Otherwise the function returns RET_OK on success, KFAILURE on
- * failure.
- *
- * The ticket file (TKT_FILE) is defined in "krb.h".
- */
-
-int
-dest_tkt()
-{
- char *file = TKT_FILE;
- int i,fd;
- extern int errno;
- struct stat statb;
- char buf[BUFSIZ];
-#ifdef TKT_SHMEM
- char shmidname[MAXPATHLEN];
-#endif /* TKT_SHMEM */
-
- errno = 0;
- if (lstat(file,&statb) < 0)
- goto out;
-
- if (!(statb.st_mode & S_IFREG)
-#ifdef notdef
- || statb.st_mode & 077
-#endif
- )
- goto out;
-
- if ((fd = open(file, O_RDWR, 0)) < 0)
- goto out;
-
- bzero(buf, BUFSIZ);
-
- for (i = 0; i < statb.st_size; i += BUFSIZ)
- if (write(fd, buf, BUFSIZ) != BUFSIZ) {
- (void) fsync(fd);
- (void) close(fd);
- goto out;
- }
-
- (void) fsync(fd);
- (void) close(fd);
-
- (void) unlink(file);
-
-out:
- if (errno == ENOENT) return RET_TKFIL;
- else if (errno != 0) return KFAILURE;
-#ifdef TKT_SHMEM
- /*
- * handle the shared memory case
- */
- (void) strcpy(shmidname, file);
- (void) strcat(shmidname, ".shm");
- if ((i = krb_shm_dest(shmidname)) != KSUCCESS)
- return(i);
-#endif /* TKT_SHMEM */
- return(KSUCCESS);
-}
diff --git a/eBones/lib/libkrb/extract_ticket.c b/eBones/lib/libkrb/extract_ticket.c
deleted file mode 100644
index 8ad3097ee929..000000000000
--- a/eBones/lib/libkrb/extract_ticket.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: extract_ticket.c,v 4.6 88/10/07 06:08:15 shanzer Exp $
- * $Id: extract_ticket.c,v 1.3 1995/07/18 16:38:21 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char *rcsid =
-"$Id: extract_ticket.c,v 1.3 1995/07/18 16:38:21 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <krb.h>
-#include <prot.h>
-#include <strings.h>
-
-/*
- * This routine is obsolete.
- *
- * This routine accepts the ciphertext returned by kerberos and
- * extracts the nth ticket. It also fills in the variables passed as
- * session, liftime and kvno.
- */
-
-void
-extract_ticket(cipher,n,session,lifetime,kvno,realm,ticket)
- KTEXT cipher; /* The ciphertext */
- int n; /* Which ticket */
- char *session; /* The session key for this tkt */
- int *lifetime; /* The life of this ticket */
- int *kvno; /* The kvno for the service */
- char *realm; /* Realm in which tkt issued */
- KTEXT ticket; /* The ticket itself */
-{
- char *ptr;
- int i;
-
- /* Start after the ticket lengths */
- ptr = (char *) cipher->dat;
- ptr = ptr + 1 + (int) *(cipher->dat);
-
- /* Step through earlier tickets */
- for (i = 1; i < n; i++)
- ptr = ptr + 11 + strlen(ptr+10) + (int) *(cipher->dat+i);
- bcopy(ptr, (char *) session, 8); /* Save the session key */
- ptr += 8;
- *lifetime = *(ptr++); /* Save the life of the ticket */
- *kvno = *(ptr++); /* Save the kvno */
- (void) strcpy(realm,ptr); /* instance */
- ptr += strlen(realm) + 1;
-
- /* Save the ticket if its length is non zero */
- ticket->length = *(cipher->dat+n);
- if (ticket->length)
- bcopy(ptr, (char *) (ticket->dat), ticket->length);
-}
diff --git a/eBones/lib/libkrb/fgetst.c b/eBones/lib/libkrb/fgetst.c
deleted file mode 100644
index 796caca7ff74..000000000000
--- a/eBones/lib/libkrb/fgetst.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 1987, 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: fgetst.c,v 4.0 89/01/23 10:08:31 jtkohl Exp $
- * $Id: fgetst.c,v 1.3 1995/07/18 16:38:23 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: fgetst.c,v 1.3 1995/07/18 16:38:23 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <stdio.h>
-
-/*
- * fgetst takes a file descriptor, a character pointer, and a count.
- * It reads from the file it has either read "count" characters, or
- * until it reads a null byte. When finished, what has been read exists
- * in "s". If "count" characters were actually read, the last is changed
- * to a null, so the returned string is always null-terminated. fgetst
- * returns the number of characters read, including the null terminator.
- */
-
-int
-fgetst(f, s, n)
- FILE *f;
- register char *s;
- int n;
-{
- register int count = n;
- int ch; /* NOT char; otherwise you don't see EOF */
-
- while ((ch = getc(f)) != EOF && ch && --count) {
- *s++ = ch;
- }
- *s = '\0';
- return (n - count);
-}
diff --git a/eBones/lib/libkrb/get_ad_tkt.c b/eBones/lib/libkrb/get_ad_tkt.c
deleted file mode 100644
index f96644a0a817..000000000000
--- a/eBones/lib/libkrb/get_ad_tkt.c
+++ /dev/null
@@ -1,237 +0,0 @@
-/*
- * Copyright 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: get_ad_tkt.c,v 4.15 89/07/07 15:18:51 jtkohl Exp $
- * $Id: get_ad_tkt.c,v 1.3 1995/07/18 16:38:25 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: get_ad_tkt.c,v 1.3 1995/07/18 16:38:25 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <krb.h>
-#include <des.h>
-#include <prot.h>
-#include <strings.h>
-
-#include <stdio.h>
-#include <errno.h>
-
-/* use the bsd time.h struct defs for PC too! */
-#include <sys/time.h>
-#include <sys/types.h>
-
-extern int krb_debug;
-
-struct timeval tt_local = { 0, 0 };
-
-int swap_bytes;
-unsigned long rep_err_code;
-
-/*
- * get_ad_tkt obtains a new service ticket from Kerberos, using
- * the ticket-granting ticket which must be in the ticket file.
- * It is typically called by krb_mk_req() when the client side
- * of an application is creating authentication information to be
- * sent to the server side.
- *
- * get_ad_tkt takes four arguments: three pointers to strings which
- * contain the name, instance, and realm of the service for which the
- * ticket is to be obtained; and an integer indicating the desired
- * lifetime of the ticket.
- *
- * It returns an error status if the ticket couldn't be obtained,
- * or AD_OK if all went well. The ticket is stored in the ticket
- * cache.
- *
- * The request sent to the Kerberos ticket-granting service looks
- * like this:
- *
- * pkt->dat
- *
- * TEXT original contents of authenticator+ticket
- * pkt->dat built in krb_mk_req call
- *
- * 4 bytes time_ws always 0 (?)
- * char lifetime lifetime argument passed
- * string service service name argument
- * string sinstance service instance arg.
- *
- * See "prot.h" for the reply packet layout and definitions of the
- * extraction macros like pkt_version(), pkt_msg_type(), etc.
- */
-
-int
-get_ad_tkt(service,sinstance,realm,lifetime)
- char *service;
- char *sinstance;
- char *realm;
- int lifetime;
-{
- static KTEXT_ST pkt_st;
- KTEXT pkt = & pkt_st; /* Packet to KDC */
- static KTEXT_ST rpkt_st;
- KTEXT rpkt = &rpkt_st; /* Returned packet */
- static KTEXT_ST cip_st;
- KTEXT cip = &cip_st; /* Returned Ciphertext */
- static KTEXT_ST tkt_st;
- KTEXT tkt = &tkt_st; /* Current ticket */
- C_Block ses; /* Session key for tkt */
- CREDENTIALS cr;
- int kvno; /* Kvno for session key */
- char lrealm[REALM_SZ];
- C_Block key; /* Key for decrypting cipher */
- Key_schedule key_s;
- long time_ws = 0;
-
- char s_name[SNAME_SZ];
- char s_instance[INST_SZ];
- int msg_byte_order;
- int kerror;
- char rlm[REALM_SZ];
- char *ptr;
-
- unsigned long kdc_time; /* KDC time */
-
- if ((kerror = krb_get_tf_realm(TKT_FILE, lrealm)) != KSUCCESS)
- return(kerror);
-
- /* Create skeleton of packet to be sent */
- (void) gettimeofday(&tt_local,(struct timezone *) 0);
-
- pkt->length = 0;
-
- /*
- * Look for the session key (and other stuff we don't need)
- * in the ticket file for krbtgt.realm@lrealm where "realm"
- * is the service's realm (passed in "realm" argument) and
- * lrealm is the realm of our initial ticket. If we don't
- * have this, we will try to get it.
- */
-
- if ((kerror = krb_get_cred("krbtgt",realm,lrealm,&cr)) != KSUCCESS) {
- /*
- * If realm == lrealm, we have no hope, so let's not even try.
- */
- if ((strncmp(realm, lrealm, REALM_SZ)) == 0)
- return(AD_NOTGT);
- else{
- if ((kerror =
- get_ad_tkt("krbtgt",realm,lrealm,lifetime)) != KSUCCESS)
- return(kerror);
- if ((kerror = krb_get_cred("krbtgt",realm,lrealm,&cr)) != KSUCCESS)
- return(kerror);
- }
- }
-
- /*
- * Make up a request packet to the "krbtgt.realm@lrealm".
- * Start by calling krb_mk_req() which puts ticket+authenticator
- * into "pkt". Then tack other stuff on the end.
- */
-
- kerror = krb_mk_req(pkt,"krbtgt",realm,lrealm,0L);
-
- if (kerror)
- return(AD_NOTGT);
-
- /* timestamp */
- bcopy((char *) &time_ws,(char *) (pkt->dat+pkt->length),4);
- pkt->length += 4;
- *(pkt->dat+(pkt->length)++) = (char) lifetime;
- (void) strcpy((char *) (pkt->dat+pkt->length),service);
- pkt->length += 1 + strlen(service);
- (void) strcpy((char *)(pkt->dat+pkt->length),sinstance);
- pkt->length += 1 + strlen(sinstance);
-
- rpkt->length = 0;
-
- /* Send the request to the local ticket-granting server */
- if ((kerror = send_to_kdc(pkt, rpkt, realm))) return(kerror);
-
- /* check packet version of the returned packet */
- if (pkt_version(rpkt) != KRB_PROT_VERSION )
- return(INTK_PROT);
-
- /* Check byte order */
- msg_byte_order = pkt_msg_type(rpkt) & 1;
- swap_bytes = 0;
- if (msg_byte_order != HOST_BYTE_ORDER)
- swap_bytes++;
-
- switch (pkt_msg_type(rpkt) & ~1) {
- case AUTH_MSG_KDC_REPLY:
- break;
- case AUTH_MSG_ERR_REPLY:
- bcopy(pkt_err_code(rpkt), (char *) &rep_err_code, 4);
- if (swap_bytes)
- swap_u_long(rep_err_code);
- return(rep_err_code);
-
- default:
- return(INTK_PROT);
- }
-
- /* Extract the ciphertext */
- cip->length = pkt_clen(rpkt); /* let clen do the swap */
-
- bcopy((char *) pkt_cipher(rpkt),(char *) (cip->dat),cip->length);
-
-#ifndef NOENCRYPTION
- key_sched((C_Block *)cr.session,key_s);
- pcbc_encrypt((C_Block *)cip->dat,(C_Block *)cip->dat,(long)cip->length,
- key_s,(C_Block *)cr.session,DECRYPT);
-#endif
- /* Get rid of all traces of key */
- bzero((char *) cr.session, sizeof(key));
- bzero((char *) key_s, sizeof(key_s));
-
- ptr = (char *) cip->dat;
-
- bcopy(ptr,(char *)ses,8);
- ptr += 8;
-
- (void) strcpy(s_name,ptr);
- ptr += strlen(s_name) + 1;
-
- (void) strcpy(s_instance,ptr);
- ptr += strlen(s_instance) + 1;
-
- (void) strcpy(rlm,ptr);
- ptr += strlen(rlm) + 1;
-
- lifetime = (unsigned long) ptr[0];
- kvno = (unsigned long) ptr[1];
- tkt->length = (int) ptr[2];
- ptr += 3;
- bcopy(ptr,(char *)(tkt->dat),tkt->length);
- ptr += tkt->length;
-
- if (strcmp(s_name, service) || strcmp(s_instance, sinstance) ||
- strcmp(rlm, realm)) /* not what we asked for */
- return(INTK_ERR); /* we need a better code here XXX */
-
- /* check KDC time stamp */
- bcopy(ptr,(char *)&kdc_time,4); /* Time (coarse) */
- if (swap_bytes) swap_u_long(kdc_time);
-
- ptr += 4;
-
- (void) gettimeofday(&tt_local,(struct timezone *) 0);
- if (abs((int)(tt_local.tv_sec - kdc_time)) > CLOCK_SKEW) {
- return(RD_AP_TIME); /* XXX should probably be better
- code */
- }
-
- if ((kerror = save_credentials(s_name,s_instance,rlm,ses,lifetime,
- kvno,tkt,tt_local.tv_sec)))
- return(kerror);
-
- return(AD_OK);
-}
diff --git a/eBones/lib/libkrb/get_admhst.c b/eBones/lib/libkrb/get_admhst.c
deleted file mode 100644
index a01a40ff3ea5..000000000000
--- a/eBones/lib/libkrb/get_admhst.c
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: get_admhst.c,v 4.0 89/01/23 10:08:55 jtkohl Exp $
- * $Id: get_admhst.c,v 1.3 1995/07/18 16:38:27 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char *rcsid =
-"$Id: get_admhst.c,v 1.3 1995/07/18 16:38:27 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <stdio.h>
-#include <krb.h>
-#include <string.h>
-
-/*
- * Given a Kerberos realm, find a host on which the Kerberos database
- * administration server can be found.
- *
- * krb_get_admhst takes a pointer to be filled in, a pointer to the name
- * of the realm for which a server is desired, and an integer n, and
- * returns (in h) the nth administrative host entry from the configuration
- * file (KRB_CONF, defined in "krb.h") associated with the specified realm.
- *
- * On error, get_admhst returns KFAILURE. If all goes well, the routine
- * returns KSUCCESS.
- *
- * For the format of the KRB_CONF file, see comments describing the routine
- * krb_get_krbhst().
- *
- * This is a temporary hack to allow us to find the nearest system running
- * a Kerberos admin server. In the long run, this functionality will be
- * provided by a nameserver.
- */
-
-int
-krb_get_admhst(h, r, n)
- char *h;
- char *r;
- int n;
-{
- FILE *cnffile;
- char tr[REALM_SZ];
- char linebuf[BUFSIZ];
- char scratch[64];
- register int i;
-
- if ((cnffile = fopen(KRB_CONF,"r")) == NULL) {
- return(KFAILURE);
- }
- if (fgets(linebuf, BUFSIZ, cnffile) == NULL) {
- /* error reading */
- (void) fclose(cnffile);
- return(KFAILURE);
- }
- if (!index(linebuf, '\n')) {
- /* didn't all fit into buffer, punt */
- (void) fclose(cnffile);
- return(KFAILURE);
- }
- for (i = 0; i < n; ) {
- /* run through the file, looking for admin host */
- if (fgets(linebuf, BUFSIZ, cnffile) == NULL) {
- (void) fclose(cnffile);
- return(KFAILURE);
- }
- /* need to scan for a token after 'admin' to make sure that
- admin matched correctly */
- if (sscanf(linebuf, "%s %s admin %s", tr, h, scratch) != 3)
- continue;
- if (!strcmp(tr,r))
- i++;
- }
- (void) fclose(cnffile);
- return(KSUCCESS);
-}
diff --git a/eBones/lib/libkrb/get_cred.c b/eBones/lib/libkrb/get_cred.c
deleted file mode 100644
index 60233867ebd5..000000000000
--- a/eBones/lib/libkrb/get_cred.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: get_cred.c,v 4.10 89/05/31 17:46:22 jtkohl Exp $
- * $Id: get_cred.c,v 1.3 1995/07/18 16:38:28 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char *rcsid =
-"$Id: get_cred.c,v 1.3 1995/07/18 16:38:28 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <stdio.h>
-#include <krb.h>
-
-/*
- * krb_get_cred takes a service name, instance, and realm, and a
- * structure of type CREDENTIALS to be filled in with ticket
- * information. It then searches the ticket file for the appropriate
- * ticket and fills in the structure with the corresponding
- * information from the file. If successful, it returns KSUCCESS.
- * On failure it returns a Kerberos error code.
- */
-
-int
-krb_get_cred(service,instance,realm,c)
- char *service; /* Service name */
- char *instance; /* Instance */
- char *realm; /* Auth domain */
- CREDENTIALS *c; /* Credentials struct */
-{
- int tf_status; /* return value of tf function calls */
-
- /* Open ticket file and lock it for shared reading */
- if ((tf_status = tf_init(TKT_FILE, R_TKT_FIL)) != KSUCCESS)
- return(tf_status);
-
- /* Copy principal's name and instance into the CREDENTIALS struc c */
-
- if ( (tf_status = tf_get_pname(c->pname)) != KSUCCESS ||
- (tf_status = tf_get_pinst(c->pinst)) != KSUCCESS )
- return (tf_status);
-
- /* Search for requested service credentials and copy into c */
-
- while ((tf_status = tf_get_cred(c)) == KSUCCESS) {
- /* Is this the right ticket? */
- if ((strcmp(c->service,service) == 0) &&
- (strcmp(c->instance,instance) == 0) &&
- (strcmp(c->realm,realm) == 0))
- break;
- }
- (void) tf_close();
-
- if (tf_status == EOF)
- return (GC_NOTKT);
- return(tf_status);
-}
diff --git a/eBones/lib/libkrb/get_in_tkt.c b/eBones/lib/libkrb/get_in_tkt.c
deleted file mode 100644
index b95f07328048..000000000000
--- a/eBones/lib/libkrb/get_in_tkt.c
+++ /dev/null
@@ -1,286 +0,0 @@
-/*
- * Copyright 1987, 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: get_in_tkt.c,v 4.12 89/07/18 16:32:56 jtkohl Exp $
- * $Id: get_in_tkt.c,v 1.3 1995/07/18 16:38:30 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: get_in_tkt.c,v 1.3 1995/07/18 16:38:30 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <krb.h>
-#include <prot.h>
-
-#ifndef NULL
-#define NULL 0
-#endif
-
-/*
- * This file contains two routines: passwd_to_key() converts
- * a password into a DES key (prompting for the password if
- * not supplied), and krb_get_pw_in_tkt() gets an initial ticket for
- * a user.
- */
-
-/*
- * passwd_to_key(): given a password, return a DES key.
- * There are extra arguments here which (used to be?)
- * used by srvtab_to_key().
- *
- * If the "passwd" argument is not null, generate a DES
- * key from it, using string_to_key().
- *
- * If the "passwd" argument is null, call des_read_password()
- * to prompt for a password and then convert it into a DES key.
- *
- * In either case, the resulting key is put in the "key" argument,
- * and 0 is returned.
- */
-
-/*ARGSUSED */
-static int passwd_to_key(user,instance,realm,passwd,key)
- char *user, *instance, *realm, *passwd;
- C_Block *key;
-{
-#ifdef NOENCRYPTION
- if (!passwd)
- placebo_read_password(key, "Password: ", 0);
-#else
- if (passwd)
- string_to_key(passwd,key);
- else
- des_read_password(key,"Password: ",0);
-#endif
- return (0);
-}
-
-/*
- * krb_get_pw_in_tkt() takes the name of the server for which the initial
- * ticket is to be obtained, the name of the principal the ticket is
- * for, the desired lifetime of the ticket, and the user's password.
- * It passes its arguments on to krb_get_in_tkt(), which contacts
- * Kerberos to get the ticket, decrypts it using the password provided,
- * and stores it away for future use.
- *
- * krb_get_pw_in_tkt() passes two additional arguments to krb_get_in_tkt():
- * the name of a routine (passwd_to_key()) to be used to get the
- * password in case the "password" argument is null and NULL for the
- * decryption procedure indicating that krb_get_in_tkt should use the
- * default method of decrypting the response from the KDC.
- *
- * The result of the call to krb_get_in_tkt() is returned.
- */
-
-int
-krb_get_pw_in_tkt(user,instance,realm,service,sinstance,life,password)
- char *user, *instance, *realm, *service, *sinstance;
- int life;
- char *password;
-{
- return(krb_get_in_tkt(user,instance,realm,service,sinstance,life,
- passwd_to_key, NULL, password));
-}
-
-#ifdef NOENCRYPTION
-/*
- * $Source: /usr/cvs/src/eBones/krb/get_in_tkt.c,v $
- * $Author: mark $
- *
- * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- *
- * For copying and distribution information, please see the file
- * <mit-copyright.h>.
- *
- * This routine prints the supplied string to standard
- * output as a prompt, and reads a password string without
- * echoing.
- */
-
-#include <des.h>
-#include "conf.h"
-
-#include <stdio.h>
-#ifdef BSDUNIX
-#include <strings.h>
-#include <sys/ioctl.h>
-#include <signal.h>
-#include <setjmp.h>
-#else
-/* char *strcpy();
-int strcmp(); */
-#endif
-
-#ifdef BSDUNIX
-static jmp_buf env;
-#endif
-
-#ifdef BSDUNIX
-static void sig_restore();
-static push_signals(), pop_signals();
-int placebo_read_pw_string();
-#endif
-
-/*** Routines ****************************************************** */
-int
-placebo_read_password(k,prompt,verify)
- des_cblock *k;
- char *prompt;
- int verify;
-{
- int ok;
- char key_string[BUFSIZ];
-
-#ifdef BSDUNIX
- if (setjmp(env)) {
- ok = -1;
- goto lose;
- }
-#endif
-
- ok = placebo_read_pw_string(key_string, BUFSIZ, prompt, verify);
- if (ok == 0)
- bzero(k, sizeof(C_Block));
-
-lose:
- bzero(key_string, sizeof (key_string));
- return ok;
-}
-
-/*
- * This version just returns the string, doesn't map to key.
- *
- * Returns 0 on success, non-zero on failure.
- */
-
-int
-placebo_read_pw_string(s,max,prompt,verify)
- char *s;
- int max;
- char *prompt;
- int verify;
-{
- int ok = 0;
- char *ptr;
-
-#ifdef BSDUNIX
- jmp_buf old_env;
- struct sgttyb tty_state;
-#endif
- char key_string[BUFSIZ];
-
- if (max > BUFSIZ) {
- return -1;
- }
-
-#ifdef BSDUNIX
- bcopy(old_env, env, sizeof(env));
- if (setjmp(env))
- goto lose;
-
- /* save terminal state*/
- if (ioctl(0,TIOCGETP,&tty_state) == -1)
- return -1;
-
- push_signals();
- /* Turn off echo */
- tty_state.sg_flags &= ~ECHO;
- if (ioctl(0,TIOCSETP,&tty_state) == -1)
- return -1;
-#endif
- while (!ok) {
- printf(prompt);
- fflush(stdout);
-#ifdef CROSSMSDOS
- h19line(s,sizeof(s),0);
- if (!strlen(s))
- continue;
-#else
- if (!fgets(s, max, stdin)) {
- clearerr(stdin);
- continue;
- }
- if ((ptr = index(s, '\n')))
- *ptr = '\0';
-#endif
- if (verify) {
- printf("\nVerifying, please re-enter %s",prompt);
- fflush(stdout);
-#ifdef CROSSMSDOS
- h19line(key_string,sizeof(key_string),0);
- if (!strlen(key_string))
- continue;
-#else
- if (!fgets(key_string, sizeof(key_string), stdin)) {
- clearerr(stdin);
- continue;
- }
- if ((ptr = index(key_string, '\n')))
- *ptr = '\0';
-#endif
- if (strcmp(s,key_string)) {
- printf("\n\07\07Mismatch - try again\n");
- fflush(stdout);
- continue;
- }
- }
- ok = 1;
- }
-
-#ifdef BSDUNIX
-lose:
- if (!ok)
- bzero(s, max);
- printf("\n");
- /* turn echo back on */
- tty_state.sg_flags |= ECHO;
- if (ioctl(0,TIOCSETP,&tty_state))
- ok = 0;
- pop_signals();
- bcopy(env, old_env, sizeof(env));
-#endif
- if (verify)
- bzero(key_string, sizeof (key_string));
- s[max-1] = 0; /* force termination */
- return !ok; /* return nonzero if not okay */
-}
-
-#ifdef BSDUNIX
-/*
- * this can be static since we should never have more than
- * one set saved....
- */
-#ifdef POSIX
-static void (*old_sigfunc[NSIG])();
-#else
-static int (*old_sigfunc[NSIG])();
-#endif POSIX
-
-static push_signals()
-{
- register i;
- for (i = 0; i < NSIG; i++)
- old_sigfunc[i] = signal(i,sig_restore);
-}
-
-static pop_signals()
-{
- register i;
- for (i = 0; i < NSIG; i++)
- signal(i,old_sigfunc[i]);
-}
-
-static void sig_restore(sig,code,scp)
- int sig,code;
- struct sigcontext *scp;
-{
- longjmp(env,1);
-}
-#endif
-#endif /* NOENCRYPTION */
diff --git a/eBones/lib/libkrb/get_krbhst.c b/eBones/lib/libkrb/get_krbhst.c
deleted file mode 100644
index cfc6e1cb7072..000000000000
--- a/eBones/lib/libkrb/get_krbhst.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: get_krbhst.c,v 4.8 89/01/22 20:00:29 rfrench Exp $
- * $Id: get_krbhst.c,v 1.3 1995/07/18 16:38:32 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char *rcsid =
-"$Id: get_krbhst.c,v 1.3 1995/07/18 16:38:32 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <stdio.h>
-#include <krb.h>
-#include <strings.h>
-
-/*
- * Given a Kerberos realm, find a host on which the Kerberos authenti-
- * cation server can be found.
- *
- * krb_get_krbhst takes a pointer to be filled in, a pointer to the name
- * of the realm for which a server is desired, and an integer, n, and
- * returns (in h) the nth entry from the configuration file (KRB_CONF,
- * defined in "krb.h") associated with the specified realm.
- *
- * On end-of-file, krb_get_krbhst returns KFAILURE. If n=1 and the
- * configuration file does not exist, krb_get_krbhst will return KRB_HOST
- * (also defined in "krb.h"). If all goes well, the routine returnes
- * KSUCCESS.
- *
- * The KRB_CONF file contains the name of the local realm in the first
- * line (not used by this routine), followed by lines indicating realm/host
- * entries. The words "admin server" following the hostname indicate that
- * the host provides an administrative database server.
- *
- * For example:
- *
- * ATHENA.MIT.EDU
- * ATHENA.MIT.EDU kerberos-1.mit.edu admin server
- * ATHENA.MIT.EDU kerberos-2.mit.edu
- * LCS.MIT.EDU kerberos.lcs.mit.edu admin server
- *
- * This is a temporary hack to allow us to find the nearest system running
- * kerberos. In the long run, this functionality will be provided by a
- * nameserver.
- */
-
-int
-krb_get_krbhst(h,r,n)
- char *h;
- char *r;
- int n;
-{
- FILE *cnffile;
- char tr[REALM_SZ];
- char linebuf[BUFSIZ];
- register int i;
-
- if ((cnffile = fopen(KRB_CONF,"r")) == NULL) {
- if (n==1) {
- (void) strcpy(h,KRB_HOST);
- return(KSUCCESS);
- }
- else
- return(KFAILURE);
- }
- if (fscanf(cnffile,"%s",tr) == EOF)
- return(KFAILURE);
- /* run through the file, looking for the nth server for this realm */
- for (i = 1; i <= n;) {
- if (fgets(linebuf, BUFSIZ, cnffile) == NULL) {
- (void) fclose(cnffile);
- return(KFAILURE);
- }
- if (sscanf(linebuf, "%s %s", tr, h) != 2)
- continue;
- if (!strcmp(tr,r))
- i++;
- }
- (void) fclose(cnffile);
- return(KSUCCESS);
-}
diff --git a/eBones/lib/libkrb/get_krbrlm.c b/eBones/lib/libkrb/get_krbrlm.c
deleted file mode 100644
index a4803e5a2017..000000000000
--- a/eBones/lib/libkrb/get_krbrlm.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: get_krbrlm.c,v 4.8 89/01/22 20:02:54 rfrench Exp $
- * $Id: get_krbrlm.c,v 1.3 1995/07/18 16:38:34 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char *rcsid =
-"$Id: get_krbrlm.c,v 1.3 1995/07/18 16:38:34 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <stdio.h>
-#include <krb.h>
-#include <strings.h>
-
-/*
- * krb_get_lrealm takes a pointer to a string, and a number, n. It fills
- * in the string, r, with the name of the nth realm specified on the
- * first line of the kerberos config file (KRB_CONF, defined in "krb.h").
- * It returns 0 (KSUCCESS) on success, and KFAILURE on failure. If the
- * config file does not exist, and if n=1, a successful return will occur
- * with r = KRB_REALM (also defined in "krb.h").
- *
- * NOTE: for archaic & compatibility reasons, this routine will only return
- * valid results when n = 1.
- *
- * For the format of the KRB_CONF file, see comments describing the routine
- * krb_get_krbhst().
- */
-
-int
-krb_get_lrealm(r,n)
- char *r;
- int n;
-{
- FILE *cnffile, *fopen();
-
- if (n > 1)
- return(KFAILURE); /* Temporary restriction */
-
- if ((cnffile = fopen(KRB_CONF, "r")) == NULL) {
- if (n == 1) {
- (void) strcpy(r, KRB_REALM);
- return(KSUCCESS);
- }
- else
- return(KFAILURE);
- }
-
- if (fscanf(cnffile,"%s",r) != 1) {
- (void) fclose(cnffile);
- return(KFAILURE);
- }
- (void) fclose(cnffile);
- return(KSUCCESS);
-}
diff --git a/eBones/lib/libkrb/get_phost.c b/eBones/lib/libkrb/get_phost.c
deleted file mode 100644
index cd83b2d2a120..000000000000
--- a/eBones/lib/libkrb/get_phost.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: get_phost.c,v 4.6 89/01/23 09:25:40 jtkohl Exp $
- * $Id: get_phost.c,v 1.3 1995/07/18 16:38:35 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: get_phost.c,v 1.3 1995/07/18 16:38:35 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <stdio.h>
-#include <ctype.h>
-#include <netdb.h>
-
-char *index();
-
-/*
- * This routine takes an alias for a host name and returns the first
- * field, lower case, of its domain name. For example, if "menel" is
- * an alias for host officially named "menelaus" (in /etc/hosts), for
- * the host whose official name is "MENELAUS.MIT.EDU", the name "menelaus"
- * is returned.
- *
- * This is done for historical Athena reasons: the Kerberos name of
- * rcmd servers (rlogin, rsh, rcp) is of the form "rcmd.host@realm"
- * where "host"is the lowercase for of the host name ("menelaus").
- * This should go away: the instance should be the domain name
- * (MENELAUS.MIT.EDU). But for now we need this routine...
- *
- * A pointer to the name is returned, if found, otherwise a pointer
- * to the original "alias" argument is returned.
- */
-
-char * krb_get_phost(alias)
- char *alias;
-{
- struct hostent *h;
- char *phost = alias;
- if ((h=gethostbyname(alias)) != (struct hostent *)NULL ) {
- char *p = index( h->h_name, '.' );
- if (p)
- *p = NULL;
- p = phost = h->h_name;
- do {
- if (isupper(*p)) *p=tolower(*p);
- } while (*p++);
- }
- return(phost);
-}
diff --git a/eBones/lib/libkrb/get_pw_tkt.c b/eBones/lib/libkrb/get_pw_tkt.c
deleted file mode 100644
index 48b6126432f7..000000000000
--- a/eBones/lib/libkrb/get_pw_tkt.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: get_pw_tkt.c,v 4.6 89/01/13 18:19:11 steiner Exp $
- * $Id: get_pw_tkt.c,v 1.3 1995/07/18 16:38:37 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char *rcsid =
-"$Id: get_pw_tkt.c,v 1.3 1995/07/18 16:38:37 mark Exp $";
-#endif /* lint */
-#endif
-
-
-#include <krb.h>
-
-/*
- * Get a ticket for the password-changing server ("changepw.KRB_MASTER").
- *
- * Given the name, instance, realm, and current password of the
- * principal for which the user wants a password-changing-ticket,
- * return either:
- *
- * GT_PW_BADPW if current password was wrong,
- * GT_PW_NULL if principal had a NULL password,
- * or the result of the krb_get_pw_in_tkt() call.
- *
- * First, try to get a ticket for "user.instance@realm" to use the
- * "changepw.KRB_MASTER" server (KRB_MASTER is defined in "krb.h").
- * The requested lifetime for the ticket is "1", and the current
- * password is the "cpw" argument given.
- *
- * If the password was bad, give up.
- *
- * If the principal had a NULL password in the Kerberos database
- * (indicating that the principal is known to Kerberos, but hasn't
- * got a password yet), try instead to get a ticket for the principal
- * "default.changepw@realm" to use the "changepw.KRB_MASTER" server.
- * Use the password "changepwkrb" instead of "cpw". Return GT_PW_NULL
- * if all goes well, otherwise the error.
- *
- * If this routine succeeds, a ticket and session key for either the
- * principal "user.instance@realm" or "default.changepw@realm" to use
- * the password-changing server will be in the user's ticket file.
- */
-
-int
-get_pw_tkt(user,instance,realm,cpw)
- char *user;
- char *instance;
- char *realm;
- char *cpw;
-{
- int kerror;
-
- kerror = krb_get_pw_in_tkt(user, instance, realm, "changepw",
- KRB_MASTER, 1, cpw);
-
- if (kerror == INTK_BADPW)
- return(GT_PW_BADPW);
-
- if (kerror == KDC_NULL_KEY) {
- kerror = krb_get_pw_in_tkt("default","changepw",realm,"changepw",
- KRB_MASTER,1,"changepwkrb");
- if (kerror)
- return(kerror);
- return(GT_PW_NULL);
- }
-
- return(kerror);
-}
diff --git a/eBones/lib/libkrb/get_request.c b/eBones/lib/libkrb/get_request.c
deleted file mode 100644
index c4982bf3283c..000000000000
--- a/eBones/lib/libkrb/get_request.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: get_request.c,v 4.7 88/12/01 14:00:11 jtkohl Exp $
- * $Id: get_request.c,v 1.3 1995/07/18 16:38:39 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char *rcsid =
-"$Id: get_request.c,v 1.3 1995/07/18 16:38:39 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <krb.h>
-#include <prot.h>
-
-/*
- * This procedure is obsolete. It is used in the kerberos_slave
- * code for Version 3 tickets.
- *
- * This procedure sets s_name, and instance to point to
- * the corresponding fields from tne nth request in the packet.
- * it returns the lifetime requested. Garbage will be returned
- * if there are less than n requests in the packet.
- */
-
-int
-get_request(pkt, n, s_name, instance)
- KTEXT pkt; /* The packet itself */
- int n; /* Which request do we want */
- char **s_name; /* Service name to be filled in */
- char **instance; /* Instance name to be filled in */
-{
- /* Go to the beginning of the request list */
- char *ptr = (char *) pkt_a_realm(pkt) + 6 +
- strlen((char *)pkt_a_realm(pkt));
-
- /* Read requests until we hit the right one */
- while (n-- > 1) {
- ptr++;
- ptr += 1 + strlen(ptr);
- ptr += 1 + strlen(ptr);
- }
-
- /* Set the arguments to point to the right place */
- *s_name = 1 + ptr;
- *instance = 2 + ptr + strlen(*s_name);
-
- /* Return the requested lifetime */
- return((int) *ptr);
-}
diff --git a/eBones/lib/libkrb/get_svc_in_tkt.c b/eBones/lib/libkrb/get_svc_in_tkt.c
deleted file mode 100644
index f5680db91d8b..000000000000
--- a/eBones/lib/libkrb/get_svc_in_tkt.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright 1987, 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: get_svc_in_tkt.c,v 4.9 89/07/18 16:33:34 jtkohl Exp $
- * $Id: get_svc_in_tkt.c,v 1.3 1995/07/18 16:38:41 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: get_svc_in_tkt.c,v 1.3 1995/07/18 16:38:41 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <krb.h>
-#include <prot.h>
-
-#ifndef NULL
-#define NULL 0
-#endif
-
-/*
- * This file contains two routines: srvtab_to_key(), which gets
- * a server's key from a srvtab file, and krb_get_svc_in_tkt() which
- * gets an initial ticket for a server.
- */
-
-/*
- * srvtab_to_key(): given a "srvtab" file (where the keys for the
- * service on a host are stored), return the private key of the
- * given service (user.instance@realm).
- *
- * srvtab_to_key() passes its arguments on to read_service_key(),
- * plus one additional argument, the key version number.
- * (Currently, the key version number is always 0; this value
- * is treated as a wildcard by read_service_key().)
- *
- * If the "srvtab" argument is null, KEYFILE (defined in "krb.h")
- * is passed in its place.
- *
- * It returns the return value of the read_service_key() call.
- * The service key is placed in "key".
- */
-
-static int
-srvtab_to_key(user, instance, realm, srvtab, key)
- char *user, *instance, *realm, *srvtab;
- C_Block key;
-{
- if (!srvtab)
- srvtab = KEYFILE;
-
- return(read_service_key(user, instance, realm, 0, srvtab,
- (char *)key));
-}
-
-/*
- * krb_get_svc_in_tkt() passes its arguments on to krb_get_in_tkt(),
- * plus two additional arguments: a pointer to the srvtab_to_key()
- * function to be used to get the key from the key file and a NULL
- * for the decryption procedure indicating that krb_get_in_tkt should
- * use the default method of decrypting the response from the KDC.
- *
- * It returns the return value of the krb_get_in_tkt() call.
- */
-
-int
-krb_get_svc_in_tkt(user, instance, realm, service, sinstance, life, srvtab)
- char *user, *instance, *realm, *service, *sinstance;
- int life;
- char *srvtab;
-{
- return(krb_get_in_tkt(user, instance, realm, service, sinstance,
- life, srvtab_to_key, NULL, srvtab));
-}
diff --git a/eBones/lib/libkrb/get_tf_fullname.c b/eBones/lib/libkrb/get_tf_fullname.c
deleted file mode 100644
index 8d7639992e89..000000000000
--- a/eBones/lib/libkrb/get_tf_fullname.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright 1987, 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: get_tf_fullname.c,v 4.3 90/03/10 22:40:20 jon Exp $
- * $Id: get_tf_fullname.c,v 1.3 1995/07/18 16:38:42 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: get_tf_fullname.c,v 1.3 1995/07/18 16:38:42 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <krb.h>
-#include <strings.h>
-#include <stdio.h>
-
-/*
- * This file contains a routine to extract the fullname of a user
- * from the ticket file.
- */
-
-/*
- * krb_get_tf_fullname() takes four arguments: the name of the
- * ticket file, and variables for name, instance, and realm to be
- * returned in. Since the realm of a ticket file is not really fully
- * supported, the realm used will be that of the the first ticket in
- * the file as this is the one that was obtained with a password by
- * krb_get_in_tkt().
- */
-
-int
-krb_get_tf_fullname(ticket_file, name, instance, realm)
- char *ticket_file;
- char *name;
- char *instance;
- char *realm;
-{
- int tf_status;
- CREDENTIALS c;
-
- if ((tf_status = tf_init(ticket_file, R_TKT_FIL)) != KSUCCESS)
- return(tf_status);
-
- if (((tf_status = tf_get_pname(c.pname)) != KSUCCESS) ||
- ((tf_status = tf_get_pinst(c.pinst)) != KSUCCESS))
- return (tf_status);
-
- if (name)
- strcpy(name, c.pname);
- if (instance)
- strcpy(instance, c.pinst);
- if ((tf_status = tf_get_cred(&c)) == KSUCCESS) {
- if (realm)
- strcpy(realm, c.realm);
- }
- else {
- if (tf_status == EOF)
- return(KFAILURE);
- else
- return(tf_status);
- }
- (void) tf_close();
-
- return(tf_status);
-}
diff --git a/eBones/lib/libkrb/get_tf_realm.c b/eBones/lib/libkrb/get_tf_realm.c
deleted file mode 100644
index 8d75a9df8295..000000000000
--- a/eBones/lib/libkrb/get_tf_realm.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 1987, 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: get_tf_realm.c,v 4.2 90/01/02 13:40:19 jtkohl Exp $
- * $Id: get_tf_realm.c,v 1.3 1995/07/18 16:38:44 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: get_tf_realm.c,v 1.3 1995/07/18 16:38:44 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <krb.h>
-#include <strings.h>
-
-/*
- * This file contains a routine to extract the realm of a kerberos
- * ticket file.
- */
-
-/*
- * krb_get_tf_realm() takes two arguments: the name of a ticket
- * and a variable to store the name of the realm in.
- *
- */
-
-int
-krb_get_tf_realm(ticket_file, realm)
- char *ticket_file;
- char *realm;
-{
- return(krb_get_tf_fullname(ticket_file, 0, 0, realm));
-}
diff --git a/eBones/lib/libkrb/getrealm.c b/eBones/lib/libkrb/getrealm.c
deleted file mode 100644
index dcd4d28a9199..000000000000
--- a/eBones/lib/libkrb/getrealm.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * routine to convert hostname into realm name.
- *
- * from: getrealm.c,v 4.6 90/01/02 13:35:56 jtkohl Exp $
- * $Id: getrealm.c,v 1.3 1995/07/18 16:38:46 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: getrealm.c,v 1.3 1995/07/18 16:38:46 mark Exp $";
-#endif lint
-#endif
-
-#include <strings.h>
-#include <stdio.h>
-#include <ctype.h>
-#include <krb.h>
-#include <sys/param.h>
-
-/* for Ultrix and friends ... */
-#ifndef MAXHOSTNAMELEN
-#define MAXHOSTNAMELEN 64
-#endif
-
-/*
- * krb_realmofhost.
- * Given a fully-qualified domain-style primary host name,
- * return the name of the Kerberos realm for the host.
- * If the hostname contains no discernable domain, or an error occurs,
- * return the local realm name, as supplied by get_krbrlm().
- * If the hostname contains a domain, but no translation is found,
- * the hostname's domain is converted to upper-case and returned.
- *
- * The format of each line of the translation file is:
- * domain_name kerberos_realm
- * -or-
- * host_name kerberos_realm
- *
- * domain_name should be of the form .XXX.YYY (e.g. .LCS.MIT.EDU)
- * host names should be in the usual form (e.g. FOO.BAR.BAZ)
- */
-
-static char ret_realm[REALM_SZ+1];
-
-char *
-krb_realmofhost(host)
-char *host;
-{
- char *domain;
- FILE *trans_file;
- char trans_host[MAXHOSTNAMELEN+1];
- char trans_realm[REALM_SZ+1];
- int retval;
-
- domain = index(host, '.');
-
- /* prepare default */
- if (domain) {
- char *cp;
-
- strncpy(ret_realm, &domain[1], REALM_SZ);
- ret_realm[REALM_SZ] = '\0';
- /* Upper-case realm */
- for (cp = ret_realm; *cp; cp++)
- if (islower(*cp))
- *cp = toupper(*cp);
- } else {
- krb_get_lrealm(ret_realm, 1);
- }
-
- if ((trans_file = fopen(KRB_RLM_TRANS, "r")) == (FILE *) 0) {
- /* krb_errno = KRB_NO_TRANS */
- return(ret_realm);
- }
- while (1) {
- if ((retval = fscanf(trans_file, "%s %s",
- trans_host, trans_realm)) != 2) {
- if (retval == EOF) {
- fclose(trans_file);
- return(ret_realm);
- }
- continue; /* ignore broken lines */
- }
- trans_host[MAXHOSTNAMELEN] = '\0';
- trans_realm[REALM_SZ] = '\0';
- if (!strcasecmp(trans_host, host)) {
- /* exact match of hostname, so return the realm */
- (void) strcpy(ret_realm, trans_realm);
- fclose(trans_file);
- return(ret_realm);
- }
- if ((trans_host[0] == '.') && domain) {
- /* this is a domain match */
- if (!strcasecmp(trans_host, domain)) {
- /* domain match, save for later */
- (void) strcpy(ret_realm, trans_realm);
- continue;
- }
- }
- }
-}
diff --git a/eBones/lib/libkrb/getst.c b/eBones/lib/libkrb/getst.c
deleted file mode 100644
index e50e4bb51e19..000000000000
--- a/eBones/lib/libkrb/getst.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright 1987, 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * form: getst.c,v 4.5 88/11/15 16:31:39 jtkohl Exp $
- * $Id: getst.c,v 1.3 1995/07/18 16:38:47 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: getst.c,v 1.3 1995/07/18 16:38:47 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <unistd.h>
-
-/*
- * getst() takes a file descriptor, a string and a count. It reads
- * from the file until either it has read "count" characters, or until
- * it reads a null byte. When finished, what has been read exists in
- * the given string "s". If "count" characters were actually read, the
- * last is changed to a null, so the returned string is always null-
- * terminated. getst() returns the number of characters read, including
- * the null terminator.
- */
-
-int
-getst(fd, s, n)
- int fd;
- register char *s;
- int n;
-{
- register count = n;
- while (read(fd, s, 1) > 0 && --count)
- if (*s++ == '\0')
- return (n - count);
- *s = '\0';
- return (n - count);
-}
diff --git a/eBones/lib/libkrb/in_tkt.c b/eBones/lib/libkrb/in_tkt.c
deleted file mode 100644
index 1f6ee8aa6078..000000000000
--- a/eBones/lib/libkrb/in_tkt.c
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: kt.c,v 4.9 89/10/25 19:03:35 qjb Exp $
- * $Id: in_tkt.c,v 1.6 1995/07/18 16:38:49 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: in_tkt.c,v 1.6 1995/07/18 16:38:49 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <unistd.h>
-#include <string.h>
-#include <stdio.h>
-#include <krb.h>
-#include <sys/file.h>
-#include <sys/fcntl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#ifdef TKT_SHMEM
-#include <sys/param.h>
-#endif
-
-extern int krb_debug;
-
-/*
- * in_tkt() is used to initialize the ticket store. It creates the
- * file to contain the tickets and writes the given user's name "pname"
- * and instance "pinst" in the file. in_tkt() returns KSUCCESS on
- * success, or KFAILURE if something goes wrong.
- */
-
-int
-in_tkt(pname,pinst)
- char *pname;
- char *pinst;
-{
- int tktfile;
- uid_t me, metoo;
- struct stat buf;
- int count;
- char *file = TKT_FILE;
- int fd;
- register int i;
- char charbuf[BUFSIZ];
-#ifdef TKT_SHMEM
- char shmidname[MAXPATHLEN];
-#endif /* TKT_SHMEM */
-
- me = getuid ();
- metoo = geteuid();
- if (lstat(file,&buf) == 0) {
- if (buf.st_uid != me && me == 0) {
- unlink(file);
- } else {
- if (buf.st_uid != me || !(buf.st_mode & S_IFREG) ||
- buf.st_mode & 077) {
- if (krb_debug)
- fprintf(stderr,"Error initializing %s",file);
- return(KFAILURE);
- }
- /* file already exists, and permissions appear ok, so nuke it */
- if ((fd = open(file, O_RDWR, 0)) < 0)
- goto out; /* can't zero it, but we can still try truncating it */
-
- bzero(charbuf, sizeof(charbuf));
-
- for (i = 0; i < buf.st_size; i += sizeof(charbuf))
- if (write(fd, charbuf, sizeof(charbuf)) != sizeof(charbuf)) {
- (void) fsync(fd);
- (void) close(fd);
- goto out;
- }
-
- (void) fsync(fd);
- (void) close(fd);
- }
- }
- out:
- /* arrange so the file is owned by the ruid
- (swap real & effective uid if necessary).
- This isn't a security problem, since the ticket file, if it already
- exists, has the right uid (== ruid) and mode. */
- if (me != metoo) {
- if (setreuid(metoo, me) < 0) {
- /* can't switch??? barf! */
- if (krb_debug)
- perror("in_tkt: setreuid");
- return(KFAILURE);
- } else
- if (krb_debug)
- printf("swapped UID's %ld and %ld\n",metoo,me);
- }
- if ((tktfile = open(file,O_CREAT | O_TRUNC | O_WRONLY,0600)) < 0) {
- if (krb_debug)
- fprintf(stderr,"Error initializing %s",TKT_FILE);
- return(KFAILURE);
- }
- if (me != metoo) {
- if (setreuid(me, metoo) < 0) {
- /* can't switch??? barf! */
- if (krb_debug)
- perror("in_tkt: setreuid2");
- return(KFAILURE);
- } else
- if (krb_debug)
- printf("swapped UID's %ld and %ld\n",me,metoo);
- }
- if (lstat(file,&buf) < 0) {
- if (krb_debug)
- fprintf(stderr,"Error initializing %s",TKT_FILE);
- return(KFAILURE);
- }
-
- if (buf.st_uid != me || !(buf.st_mode & S_IFREG) ||
- buf.st_mode & 077) {
- if (krb_debug)
- fprintf(stderr,"Error initializing %s",TKT_FILE);
- return(KFAILURE);
- }
-
- count = strlen(pname)+1;
- if (write(tktfile,pname,count) != count) {
- (void) close(tktfile);
- return(KFAILURE);
- }
- count = strlen(pinst)+1;
- if (write(tktfile,pinst,count) != count) {
- (void) close(tktfile);
- return(KFAILURE);
- }
- (void) close(tktfile);
-#ifdef TKT_SHMEM
- (void) strcpy(shmidname, file);
- (void) strcat(shmidname, ".shm");
- return(krb_shm_create(shmidname));
-#else /* !TKT_SHMEM */
- return(KSUCCESS);
-#endif /* TKT_SHMEM */
-}
diff --git a/eBones/lib/libkrb/k_gethostname.c b/eBones/lib/libkrb/k_gethostname.c
deleted file mode 100644
index cfb4f922a6df..000000000000
--- a/eBones/lib/libkrb/k_gethostname.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright 1987, 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: k_gethostname.c,v 4.1 88/12/01 14:04:42 jtkohl Exp $
- * $Id: k_gethostname.c,v 1.3 1995/07/18 16:38:51 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: k_gethostname.c,v 1.3 1995/07/18 16:38:51 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <unistd.h>
-
-#ifndef PC
-#ifndef BSD42
-/* teach me how to k_gethostname for your system here */
-#endif
-#endif
-
-#ifdef PC
-#include <stdio.h>
-typedef long in_name;
-#include "custom.h" /* where is this file? */
-extern get_custom();
-#define LEN 64 /* just a guess */
-#endif /* PC */
-
-/*
- * Return the local host's name in "name", up to "namelen" characters.
- * "name" will be null-terminated if "namelen" is big enough.
- * The return code is 0 on success, -1 on failure. (The calling
- * interface is identical to gethostname(2).)
- *
- * Currently defined for BSD 4.2 and PC. The BSD version just calls
- * gethostname(); the PC code was taken from "kinit.c", and may or may
- * not work.
- */
-
-int
-k_gethostname(name, namelen)
- char *name;
- int namelen;
-{
-#ifdef BSD42
- return gethostname(name, namelen);
-#endif
-
-#ifdef PC
- char buf[LEN];
- char b1, b2, b3, b4;
- register char *ptr;
-
- get_custom(); /* should check for errors,
- * return -1 on failure */
- ptr = (char *) &(custom.c_me);
- b1 = *ptr++;
- b2 = *ptr++;
- b3 = *ptr++;
- b4 = *ptr;
- (void) sprintf(buf,"PC address %d.%d.%d.%d",b1,b2,b3,b4);
- if (strlen(buf) > namelen)
- fprintf(stderr, "gethostname: namelen too small; truncating");
- strnpcy(name, buf, namelen);
- return 0;
-#endif
-}
diff --git a/eBones/lib/libkrb/klog.c b/eBones/lib/libkrb/klog.c
deleted file mode 100644
index 7fdc774af3d5..000000000000
--- a/eBones/lib/libkrb/klog.c
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: klog.c,v 4.6 88/12/01 14:06:05 jtkohl Exp $
- * $Id: klog.c,v 1.3 1995/07/18 16:38:52 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char *rcsid =
-"$Id: klog.c,v 1.3 1995/07/18 16:38:52 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <sys/time.h>
-#include <stdio.h>
-
-#include <krb.h>
-#include <klog.h>
-
-static char *log_name = KRBLOG;
-static int is_open;
-static char logtxt[1000];
-
-/*
- * This file contains two logging routines: kset_logfile()
- * to determine the file to which log entries should be written;
- * and klog() to write log entries to the file.
- */
-
-/*
- * klog() is used to add entries to the logfile (see kset_logfile()
- * below). Note that it is probably not portable since it makes
- * assumptions about what the compiler will do when it is called
- * with less than the correct number of arguments which is the
- * way it is usually called.
- *
- * The log entry consists of a timestamp and the given arguments
- * printed according to the given "format" string.
- *
- * The log file is opened and closed for each log entry.
- *
- * If the given log type "type" is unknown, or if the log file
- * cannot be opened, no entry is made to the log file.
- *
- * The return value is always a pointer to the formatted log
- * text string "logtxt".
- */
-
-char * klog(type,format,a1,a2,a3,a4,a5,a6,a7,a8,a9,a0)
- int type;
- char *format;
- int a1,a2,a3,a4,a5,a6,a7,a8,a9,a0;
-{
- FILE *logfile;
- long now;
- struct tm *tm;
- static int logtype_array[NLOGTYPE] = {0,0};
- static int array_initialized;
-
- if (!(array_initialized++)) {
- logtype_array[L_NET_ERR] = 1;
- logtype_array[L_KRB_PERR] = 1;
- logtype_array[L_KRB_PWARN] = 1;
- logtype_array[L_APPL_REQ] = 1;
- logtype_array[L_INI_REQ] = 1;
- logtype_array[L_DEATH_REQ] = 1;
- logtype_array[L_NTGT_INTK] = 1;
- logtype_array[L_ERR_SEXP] = 1;
- logtype_array[L_ERR_MKV] = 1;
- logtype_array[L_ERR_NKY] = 1;
- logtype_array[L_ERR_NUN] = 1;
- logtype_array[L_ERR_UNK] = 1;
- }
-
- (void) sprintf(logtxt,format,a1,a2,a3,a4,a5,a6,a7,a8,a9,a0);
-
- if (!logtype_array[type])
- return(logtxt);
-
- if ((logfile = fopen(log_name,"a")) == NULL)
- return(logtxt);
-
- (void) time(&now);
- tm = localtime(&now);
-
- fprintf(logfile,"%2d-%s-%02d %02d:%02d:%02d ",tm->tm_mday,
- month_sname(tm->tm_mon + 1),tm->tm_year,
- tm->tm_hour, tm->tm_min, tm->tm_sec);
- fprintf(logfile,"%s\n",logtxt);
- (void) fclose(logfile);
- return(logtxt);
-}
-
-/*
- * kset_logfile() changes the name of the file to which
- * messages are logged. If kset_logfile() is not called,
- * the logfile defaults to KRBLOG, defined in "krb.h".
- */
-
-void
-kset_logfile(filename)
- char *filename;
-{
- log_name = filename;
- is_open = 0;
-}
diff --git a/eBones/lib/libkrb/kname_parse.c b/eBones/lib/libkrb/kname_parse.c
deleted file mode 100644
index da7ec9393c6b..000000000000
--- a/eBones/lib/libkrb/kname_parse.c
+++ /dev/null
@@ -1,239 +0,0 @@
-/*
- * Copyright 1987, 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: kname_parse.c,v 4.4 88/12/01 14:07:29 jtkohl Exp $
- * $Id: kname_parse.c,v 1.3 1995/07/18 16:38:54 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: kname_parse.c,v 1.3 1995/07/18 16:38:54 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <stdio.h>
-#include <krb.h>
-#include <strings.h>
-
-/* max size of full name */
-#define FULL_SZ (ANAME_SZ + INST_SZ + REALM_SZ)
-
-#define NAME 0 /* which field are we in? */
-#define INST 1
-#define REALM 2
-
-extern char *krb_err_txt[];
-
-/*
- * This file contains four routines for handling Kerberos names.
- *
- * kname_parse() breaks a Kerberos name into its name, instance,
- * and realm components.
- *
- * k_isname(), k_isinst(), and k_isrealm() check a given string to see if
- * it's a syntactically legitimate respective part of a Kerberos name,
- * returning 1 if it is, 0 if it isn't.
- *
- * Definition of "syntactically legitimate" names is according to
- * the Project Athena Technical Plan Section E.2.1, page 7 "Specifying
- * names", version dated 21 Dec 1987.
- */
-
-/*
- * kname_parse() takes a Kerberos name "fullname" of the form:
- *
- * username[.instance][@realm]
- *
- * and returns the three components ("name", "instance", and "realm"
- * in the example above) in the given arguments "np", "ip", and "rp".
- *
- * If successful, it returns KSUCCESS. If there was an error,
- * KNAME_FMT is returned.
- */
-
-int
-kname_parse(np, ip, rp, fullname)
- char *np, *ip, *rp, *fullname;
-{
- static char buf[FULL_SZ];
- char *rnext, *wnext; /* next char to read, write */
- register char c;
- int backslash;
- int field;
-
- backslash = 0;
- rnext = buf;
- wnext = np;
- field = NAME;
-
- if (strlen(fullname) > FULL_SZ)
- return KNAME_FMT;
- (void) strcpy(buf, fullname);
-
- while ((c = *rnext++)) {
- if (backslash) {
- *wnext++ = c;
- backslash = 0;
- continue;
- }
- switch (c) {
- case '\\':
- backslash++;
- break;
- case '.':
- switch (field) {
- case NAME:
- if (wnext == np)
- return KNAME_FMT;
- *wnext = '\0';
- field = INST;
- wnext = ip;
- break;
- case INST:
- return KNAME_FMT;
- /* break; */
- case REALM:
- *wnext++ = c;
- break;
- default:
- fprintf(stderr, "unknown field value\n");
- exit(1);
- }
- break;
- case '@':
- switch (field) {
- case NAME:
- if (wnext == np)
- return KNAME_FMT;
- *ip = '\0';
- /* fall through */
- case INST:
- *wnext = '\0';
- field = REALM;
- wnext = rp;
- break;
- case REALM:
- return KNAME_FMT;
- default:
- fprintf(stderr, "unknown field value\n");
- exit(1);
- }
- break;
- default:
- *wnext++ = c;
- }
- }
- *wnext = '\0';
- if ((strlen(np) > ANAME_SZ - 1) ||
- (strlen(ip) > INST_SZ - 1) ||
- (strlen(rp) > REALM_SZ - 1))
- return KNAME_FMT;
- return KSUCCESS;
-}
-
-/*
- * k_isname() returns 1 if the given name is a syntactically legitimate
- * Kerberos name; returns 0 if it's not.
- */
-
-int
-k_isname(s)
- char *s;
-{
- register char c;
- int backslash = 0;
-
- if (!*s)
- return 0;
- if (strlen(s) > ANAME_SZ - 1)
- return 0;
- while((c = *s++)) {
- if (backslash) {
- backslash = 0;
- continue;
- }
- switch(c) {
- case '\\':
- backslash = 1;
- break;
- case '.':
- return 0;
- /* break; */
- case '@':
- return 0;
- /* break; */
- }
- }
- return 1;
-}
-
-
-/*
- * k_isinst() returns 1 if the given name is a syntactically legitimate
- * Kerberos instance; returns 0 if it's not.
- */
-
-int
-k_isinst(s)
- char *s;
-{
- register char c;
- int backslash = 0;
-
- if (strlen(s) > INST_SZ - 1)
- return 0;
- while((c = *s++)) {
- if (backslash) {
- backslash = 0;
- continue;
- }
- switch(c) {
- case '\\':
- backslash = 1;
- break;
- case '.':
- return 0;
- /* break; */
- case '@':
- return 0;
- /* break; */
- }
- }
- return 1;
-}
-
-/*
- * k_isrealm() returns 1 if the given name is a syntactically legitimate
- * Kerberos realm; returns 0 if it's not.
- */
-
-int
-k_isrealm(s)
- char *s;
-{
- register char c;
- int backslash = 0;
-
- if (!*s)
- return 0;
- if (strlen(s) > REALM_SZ - 1)
- return 0;
- while((c = *s++)) {
- if (backslash) {
- backslash = 0;
- continue;
- }
- switch(c) {
- case '\\':
- backslash = 1;
- break;
- case '@':
- return 0;
- /* break; */
- }
- }
- return 1;
-}
diff --git a/eBones/lib/libkrb/kntoln.c b/eBones/lib/libkrb/kntoln.c
deleted file mode 100644
index 388704c09ff3..000000000000
--- a/eBones/lib/libkrb/kntoln.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: kntoln.c,v 4.7 89/01/23 09:25:15 jtkohl Exp $
- * $Id: kntoln.c,v 1.3 1995/07/18 16:38:56 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char *rcsid =
-"$Id: kntoln.c,v 1.3 1995/07/18 16:38:56 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <krb.h>
-#include <strings.h>
-
-/*
- * krb_kntoln converts an auth name into a local name by looking up
- * the auth name in the /etc/aname file. The format of the aname
- * file is:
- *
- * +-----+-----+-----+-----+------+----------+-------+-------+
- * | anl | inl | rll | lnl | name | instance | realm | lname |
- * +-----+-----+-----+-----+------+----------+-------+-------+
- * | 1by | 1by | 1by | 1by | name | instance | realm | lname |
- * +-----+-----+-----+-----+------+----------+-------+-------+
- *
- * If the /etc/aname file can not be opened it will set the
- * local name to the auth name. Thus, in this case it performs as
- * the identity function.
- *
- * The name instance and realm are passed to krb_kntoln through
- * the AUTH_DAT structure (ad).
- *
- * Now here's what it *really* does:
- *
- * Given a Kerberos name in an AUTH_DAT structure, check that the
- * instance is null, and that the realm is the same as the local
- * realm, and return the principal's name in "lname". Return
- * KSUCCESS if all goes well, otherwise KFAILURE.
- */
-
-int
-krb_kntoln(ad,lname)
- AUTH_DAT *ad;
- char *lname;
-{
- static char lrealm[REALM_SZ] = "";
-
- if (!(*lrealm) && (krb_get_lrealm(lrealm,1) == KFAILURE))
- return(KFAILURE);
-
- if (strcmp(ad->pinst,""))
- return(KFAILURE);
- if (strcmp(ad->prealm,lrealm))
- return(KFAILURE);
- (void) strcpy(lname,ad->pname);
- return(KSUCCESS);
-}
diff --git a/eBones/lib/libkrb/kparse.c b/eBones/lib/libkrb/kparse.c
deleted file mode 100644
index 5b25ac726436..000000000000
--- a/eBones/lib/libkrb/kparse.c
+++ /dev/null
@@ -1,776 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * Purpose:
- * This module was developed to parse the "~/.klogin" files for
- * Kerberos-authenticated rlogin/rcp/rsh services. However, it is
- * general purpose and can be used to parse any such parameter file.
- *
- * The parameter file should consist of one or more entries, with each
- * entry on a separate line and consisting of zero or more
- * "keyword=value" combinations. The keyword is case insensitive, but
- * the value is not. Any string may be enclosed in quotes, and
- * c-style "\" literals are supported. A comma may be used to
- * separate the k/v combinations, and multiple commas are ignored.
- * Whitespace (blank or tab) may be used freely and is ignored.
- *
- * Full error processing is available. When PS_BAD_KEYWORD or
- * PS_SYNTAX is returned from fGetParameterSet(), the string ErrorMsg
- * contains a meaningful error message.
- *
- * Keywords and their default values are programmed by an external
- * table.
- *
- * Routines:
- * fGetParameterSet() parse one line of the parameter file
- * fGetKeywordValue() parse one "keyword=value" combo
- * fGetToken() parse one token
- *
- *
- * from: kparse.c,v 4.5 89/01/21 17:20:39 jtkohl Exp $
- * $Id: kparse.c,v 1.3 1995/07/18 16:38:58 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: kparse.c,v 1.3 1995/07/18 16:38:58 mark Exp $";
-#endif lint
-#endif
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <ctype.h>
-#include <kparse.h>
-
-#ifndef FALSE
-#define FALSE 0
-#define TRUE 1
-#endif
-
-#define MAXKEY 80
-#define MAXVALUE 80
-
-int fUngetChar(int ch, FILE *fp);
-int fGetChar(FILE *fp);
-int fGetLiteral(FILE *fp);
-
-int LineNbr=1; /* current line nbr in parameter file */
-char ErrorMsg[80]; /* meaningful only when KV_SYNTAX, PS_SYNTAX,
- * or PS_BAD_KEYWORD is returned by
- * fGetKeywordValue or fGetParameterSet */
-
-int
-fGetParameterSet( fp,parm,parmcount )
- FILE *fp;
- parmtable parm[];
- int parmcount;
-{
- int rc,i;
- char keyword[MAXKEY];
- char value[MAXVALUE];
-
- while (TRUE) {
- rc=fGetKeywordValue(fp,keyword,MAXKEY,value,MAXVALUE);
-
- switch (rc) {
-
- case KV_EOF:
- return(PS_EOF);
-
- case KV_EOL:
- return(PS_OKAY);
-
- case KV_SYNTAX:
- return(PS_SYNTAX);
-
- case KV_OKAY:
- /*
- * got a reasonable keyword/value pair. Search the
- * parameter table to see if we recognize the keyword; if
- * not, return an error. If we DO recognize it, make sure
- * it has not already been given. If not already given,
- * save the value.
- */
- for (i=0; i<parmcount; i++) {
- if (strcmp(strutol(keyword),parm[i].keyword)==0) {
- if (parm[i].value) {
- sprintf(ErrorMsg,"duplicate keyword \"%s\" found",
- keyword);
- return(PS_BAD_KEYWORD);
- }
- parm[i].value = strsave( value );
- break;
- }
- }
- if (i >= parmcount) {
- sprintf(ErrorMsg, "unrecognized keyword \"%s\" found",
- keyword);
- return(PS_BAD_KEYWORD);
- }
- break;
-
- default:
- sprintf(ErrorMsg,
- "panic: bad return (%d) from fGetToken()",rc);
- break;
- }
- }
-}
-
-/*
- * Routine: ParmCompare
- *
- * Purpose:
- * ParmCompare checks a specified value for a particular keyword.
- * fails if keyword not found or keyword found but the value was
- * different. Like strcmp, ParmCompare returns 0 for a match found, -1
- * otherwise
- */
-int
-ParmCompare( parm, parmcount, keyword, value )
- parmtable parm[];
- int parmcount;
- char *keyword;
- char *value;
-{
- int i;
-
- for (i=0; i<parmcount; i++) {
- if (strcmp(parm[i].keyword,keyword)==0) {
- if (parm[i].value) {
- return(strcmp(parm[i].value,value));
- } else {
- return(strcmp(parm[i].defvalue,value));
- }
- }
- }
- return(-1);
-}
-
-void
-FreeParameterSet(parm,parmcount)
- parmtable parm[];
- int parmcount;
-{
- int i;
-
- for (i=0; i<parmcount; i++) {
- if (parm[i].value) {
- free(parm[i].value);
- parm[i].value = (char *)NULL;
- }
- }
-}
-
-int
-fGetKeywordValue( fp, keyword, klen, value, vlen )
- FILE *fp;
- char *keyword;
- int klen;
- char *value;
- int vlen;
-{
- int rc;
- int gotit;
-
- *keyword = *value = '\0'; /* preset strings to NULL */
-
- /*
- * Looking for a keyword.
- * return an exception for EOF or BAD_QSTRING
- * ignore leading WHITEspace
- * ignore any number of leading commas
- * newline means we have all the parms for this
- * statement; give an indication that there is
- * nothing more on this line.
- * stop looking if we find QSTRING, STRING, or NUMBER
- * return syntax error for any other PUNKtuation
- */
- gotit = FALSE;
- do {
- rc = fGetToken(fp,keyword,klen);
-
- switch (rc) {
-
- case GTOK_WHITE:
- break;
-
- case GTOK_EOF:
- return(KV_EOF);
-
- case GTOK_BAD_QSTRING:
- sprintf(ErrorMsg,"unterminated string \"%s found",keyword);
- return(KV_SYNTAX);
-
- case GTOK_PUNK:
- if (strcmp("\n",keyword)==0) {
- return(KV_EOL);
- } else if (strcmp(",",keyword)!=0) {
- sprintf(ErrorMsg,"expecting rvalue, found \'%s\'",keyword);
- }
- break;
-
- case GTOK_STRING:
- case GTOK_QSTRING:
- case GTOK_NUMBER:
- gotit = TRUE;
- break;
-
- default:
- sprintf(ErrorMsg,"panic: bad return (%d) from fGetToken()",rc);
- return(KV_SYNTAX);
- }
-
- } while (!gotit);
-
- /*
- * now we expect an equal sign.
- * skip any whitespace
- * stop looking if we find an equal sign
- * anything else causes a syntax error
- */
- gotit = FALSE;
- do {
- rc = fGetToken(fp,value,vlen);
-
- switch (rc) {
-
- case GTOK_WHITE:
- break;
-
- case GTOK_BAD_QSTRING:
- sprintf(ErrorMsg,
- "expecting \'=\', found unterminated string \"%s",
- value);
- return(KV_SYNTAX);
-
- case GTOK_PUNK:
- if (strcmp("=",value)==0) {
- gotit = TRUE;
- } else {
- if (strcmp("\n",value)==0) {
- sprintf(ErrorMsg,"expecting \"=\", found newline");
- fUngetChar('\n',fp);
- } else {
- sprintf(ErrorMsg,
- "expecting rvalue, found \'%s\'",keyword);
- }
- return(KV_SYNTAX);
- }
- break;
-
- case GTOK_STRING:
- case GTOK_QSTRING:
- case GTOK_NUMBER:
- sprintf(ErrorMsg,"expecting \'=\', found \"%s\"",value);
- return(KV_SYNTAX);
-
- case GTOK_EOF:
- sprintf(ErrorMsg,"expecting \'=\', found EOF");
- return(KV_SYNTAX);
-
- default:
- sprintf(ErrorMsg,
- "panic: bad return (%d) from fGetToken()",rc);
- return(KV_SYNTAX);
- }
-
- } while ( !gotit );
-
- /*
- * got the keyword and equal sign, now get a value.
- * ignore any whitespace
- * any punctuation is a syntax error
- */
- gotit = FALSE;
- do {
- rc = fGetToken(fp,value,vlen);
-
- switch (rc) {
-
- case GTOK_WHITE:
- break;
-
- case GTOK_EOF:
- sprintf(ErrorMsg,"expecting rvalue, found EOF");
- return(KV_SYNTAX);
-
- case GTOK_BAD_QSTRING:
- sprintf(ErrorMsg,"unterminated quoted string \"%s",value);
- return(KV_SYNTAX);
-
- case GTOK_PUNK:
- if (strcmp("\n",value)==0) {
- sprintf(ErrorMsg,"expecting rvalue, found newline");
- fUngetChar('\n',fp);
- } else {
- sprintf(ErrorMsg,
- "expecting rvalue, found \'%s\'",value);
- }
- return(KV_SYNTAX);
- break;
-
- case GTOK_STRING:
- case GTOK_QSTRING:
- case GTOK_NUMBER:
- gotit = TRUE;
- return(KV_OKAY);
-
- default:
- sprintf(ErrorMsg,
- "panic: bad return (%d) from fGetToken()",rc);
- return(KV_SYNTAX);
- }
-
- } while ( !gotit );
- /*NOTREACHED*/
- return(0); /*just to shut up -Wall MRVM*/
-}
-
-/*
- * Routine Name: fGetToken
- *
- * Function: read the next token from the specified file.
- * A token is defined as a group of characters
- * terminated by a white space char (SPACE, CR,
- * LF, FF, TAB). The token returned is stripped of
- * both leading and trailing white space, and is
- * terminated by a NULL terminator. An alternate
- * definition of a token is a string enclosed in
- * single or double quotes.
- *
- * Explicit Parameters:
- * fp pointer to the input FILE
- * dest pointer to destination buffer
- * maxlen length of the destination buffer. The buffer
- * length INCLUDES the NULL terminator.
- *
- * Implicit Parameters: stderr where the "token too long" message goes
- *
- * External Procedures: fgetc
- *
- * Side Effects: None
- *
- * Return Value: A token classification value, as
- * defined in kparse.h. Note that the
- * classification for end of file is
- * always zero.
- */
-int
-fGetToken(fp, dest, maxlen)
- FILE *fp;
- char *dest;
- int maxlen;
-{
- int ch='\0';
- int len=0;
- char *p = dest;
- int digits;
-
- ch=fGetChar(fp);
-
- /*
- * check for a quoted string. If found, take all characters
- * that fit until a closing quote is found. Note that this
- * algorithm will not behave well for a string which is too long.
- */
- if (ISQUOTE(ch)) {
- int done = FALSE;
- do {
- ch = fGetChar(fp);
- done = ((maxlen<++len)||ISLINEFEED(ch)||(ch==EOF)
- ||ISQUOTE(ch));
- if (ch=='\\')
- ch = fGetLiteral(fp);
- if (!done)
- *p++ = ch;
- else if ((ch!=EOF) && !ISQUOTE(ch))
- fUngetChar(ch,fp);
- } while (!done);
- *p = '\0';
- if (ISLINEFEED(ch)) return(GTOK_BAD_QSTRING);
- return(GTOK_QSTRING);
- }
-
- /*
- * Not a quoted string. If its a token character (rules are
- * defined via the ISTOKENCHAR macro, in kparse.h) take it and all
- * token chars following it until we run out of space.
- */
- digits=TRUE;
- if (ISTOKENCHAR(ch)) {
- while ( (ISTOKENCHAR(ch)) && len<maxlen-1 ) {
- if (!isdigit(ch)) digits=FALSE;
- *p++ = ch;
- len++;
- ch = fGetChar(fp);
- };
- *p = '\0';
-
- if (ch!=EOF) {
- fUngetChar(ch,fp);
- }
- if (digits) {
- return(GTOK_NUMBER);
- } else {
- return(GTOK_STRING);
- }
- }
-
- /*
- * Neither a quoted string nor a token character. Return a string
- * with just that one character in it.
- */
- if (ch==EOF) {
- return(GTOK_EOF);
- }
- if (!ISWHITESPACE(ch)) {
- *p++ = ch;
- *p='\0';
- } else {
- *p++ = ' '; /* white space is always the
- * blank character */
- *p='\0';
- /*
- * The character is a white space. Flush all additional white
- * space.
- */
- while (ISWHITESPACE(ch) && ((ch=fGetChar(fp)) != EOF))
- ;
- if (ch!=EOF) {
- fUngetChar(ch,fp);
- }
- return(GTOK_WHITE);
- }
- return(GTOK_PUNK);
-}
-
-/*
- * fGetLiteral is called after we find a '\' in the input stream. A
- * string of numbers following the backslash are converted to the
- * appropriate value; hex (0xn), octal (0n), and decimal (otherwise)
- * are all supported. If the char after the \ is not a number, we
- * special case certain values (\n, \f, \r, \b) or return a literal
- * otherwise (useful for \", for example).
- */
-int
-fGetLiteral(fp)
- FILE *fp;
-{
- int ch;
- int n=0;
- int base;
-
- ch = fGetChar(fp);
-
- if (!isdigit(ch)) {
- switch (ch) {
- case 'n': return('\n');
- case 'f': return('\f');
- case 'r': return('\r');
- case 'b': return('\b');
- default: return(ch);
- }
- }
-
- /*
- * got a number. might be decimal (no prefix), octal (prefix 0),
- * or hexadecimal (prefix 0x). Set the base appropriately.
- */
- if (ch!='0') {
- base=10; /* its a decimal number */
- } else {
- /*
- * found a zero, its either hex or octal
- */
- ch = fGetChar(fp);
- if ((ch!='x') && (ch!='X')) {
- base=010;
- } else {
- ch = fGetChar(fp);
- base=0x10;
- }
- }
-
- switch (base) {
-
- case 010: /* octal */
- while (ISOCTAL(ch)) {
- n = (n*base) + ch - '0';
- ch = fGetChar(fp);
- }
- break;
-
- case 10: /* decimal */
- while (isdigit(ch)) {
- n = (n*base) + ch - '0';
- ch = fGetChar(fp);
- }
- break;
- case 0x10: /* hexadecimal */
- while (isxdigit(ch)) {
- if (isdigit(ch)) {
- n = (n*base) + ch - '0';
- } else {
- n = (n*base) + toupper(ch) - 'A' + 0xA ;
- }
- ch = fGetChar(fp);
- }
- break;
- default:
- fprintf(stderr,"fGetLiteral() died real bad. Fix gettoken.c.");
- exit(1);
- break;
- }
- fUngetChar(ch,fp);
- return(n);
-}
-
-/*
- * exactly the same as ungetc(3) except that the line number of the
- * input file is maintained.
- */
-int
-fUngetChar(ch,fp)
- int ch;
- FILE *fp;
-{
- if (ch=='\n') LineNbr--;
- return(ungetc(ch,fp));
-}
-
-
-/*
- * exactly the same as fgetc(3) except that the line number of the
- * input file is maintained.
- */
-int
-fGetChar(fp)
- FILE *fp;
-{
- int ch = fgetc(fp);
- if (ch=='\n') LineNbr++;
- return(ch);
-}
-
-
-/*
- * Routine Name: strsave
- *
- * Function: return a pointer to a saved copy of the
- * input string. the copy will be allocated
- * as large as necessary.
- *
- * Explicit Parameters: pointer to string to save
- *
- * Implicit Parameters: None
- *
- * External Procedures: malloc,strcpy,strlen
- *
- * Side Effects: None
- *
- * Return Value: pointer to copied string
- *
- */
-char *
-strsave(p)
- char *p;
-{
- return(strcpy(malloc(strlen(p)+1),p));
-}
-
-
-/*
- * strutol changes all characters in a string to lower case, in place.
- * the pointer to the beginning of the string is returned.
- */
-
-char *
-strutol( start )
- char *start;
-{
- char *q;
- for (q=start; *q; q++)
- if (isupper(*q))
- *q=tolower(*q);
- return(start);
-}
-
-#ifdef GTOK_TEST /* mainline test routine for fGetToken() */
-
-#define MAXTOKEN 100
-
-char *pgm = "gettoken";
-
-main(argc,argv)
- int argc;
- char **argv;
-{
- char *p;
- int type;
- FILE *fp;
-
- if (--argc) {
- fp = fopen(*++argv,"ra");
- if (fp == (FILE *)NULL) {
- fprintf(stderr,"can\'t open \"%s\"\n",*argv);
- }
- } else
- fp = stdin;
-
- p = malloc(MAXTOKEN);
- while (type = fGetToken(fp,p,MAXTOKEN)) {
- switch(type) {
- case GTOK_BAD_QSTRING:
- printf("BAD QSTRING!\t");
- break;
- case GTOK_EOF:
- printf("EOF!\t");
- break;
- case GTOK_QSTRING:
- printf("QSTRING\t");
- break;
- case GTOK_STRING:
- printf("STRING\t");
- break;
- case GTOK_NUMBER:
- printf("NUMBER\t");
- break;
- case GTOK_PUNK:
- printf("PUNK\t");
- break;
- case GTOK_WHITE:
- printf("WHITE\t");
- break;
- default:
- printf("HUH?\t");
- break;
- }
- if (*p=='\n')
- printf("\\n\n");
- else
- printf("%s\n",p);
- }
- exit(0);
-}
-#endif
-
-#ifdef KVTEST
-
-main(argc,argv)
- int argc;
- char **argv;
-{
- int rc,ch;
- FILE *fp;
- char key[MAXKEY],valu[MAXVALUE];
- char *filename;
-
- if (argc != 2) {
- fprintf(stderr,"usage: test <filename>\n");
- exit(1);
- }
-
- if (!(fp=fopen(*++argv,"r"))) {
- fprintf(stderr,"can\'t open input file \"%s\"\n",filename);
- exit(1);
- }
- filename = *argv;
-
- while ((rc=fGetKeywordValue(fp,key,MAXKEY,valu,MAXVALUE))!=KV_EOF){
-
- switch (rc) {
-
- case KV_EOL:
- printf("%s, line %d: nada mas.\n",filename,LineNbr-1);
- break;
-
- case KV_SYNTAX:
- printf("%s, line %d: syntax error: %s\n",
- filename,LineNbr,ErrorMsg);
- while ( ((ch=fGetChar(fp))!=EOF) && (ch!='\n') );
- break;
-
- case KV_OKAY:
- printf("%s, line %d: okay, %s=\"%s\"\n",
- filename,LineNbr,key,valu);
- break;
-
- default:
- printf("panic: bad return (%d) from fGetKeywordValue\n",rc);
- break;
- }
- }
- printf("EOF");
- fclose(fp);
- exit(0);
-}
-#endif
-
-#ifdef PSTEST
-
-parmtable kparm[] = {
- /* keyword, default, found value */
- { "user", "", (char *)NULL },
- { "realm", "Athena", (char *)NULL },
- { "instance", "", (char *)NULL }
-};
-
-main(argc,argv)
- int argc;
- char **argv;
-{
- int rc,i,ch;
- FILE *fp;
- char *filename;
-
- if (argc != 2) {
- fprintf(stderr,"usage: test <filename>\n");
- exit(1);
- }
-
- if (!(fp=fopen(*++argv,"r"))) {
- fprintf(stderr,"can\'t open input file \"%s\"\n",filename);
- exit(1);
- }
- filename = *argv;
-
- while ((rc=fGetParameterSet(fp,kparm,PARMCOUNT(kparm))) != PS_EOF) {
-
- switch (rc) {
-
- case PS_BAD_KEYWORD:
- printf("%s, line %d: %s\n",filename,LineNbr,ErrorMsg);
- while ( ((ch=fGetChar(fp))!=EOF) && (ch!='\n') );
- break;
-
- case PS_SYNTAX:
- printf("%s, line %d: syntax error: %s\n",
- filename,LineNbr,ErrorMsg);
- while ( ((ch=fGetChar(fp))!=EOF) && (ch!='\n') );
- break;
-
- case PS_OKAY:
- printf("%s, line %d: valid parameter set found:\n",
- filename,LineNbr-1);
- for (i=0; i<PARMCOUNT(kparm); i++) {
- printf("\t%s = \"%s\"\n",kparm[i].keyword,
- (kparm[i].value ? kparm[i].value
- : kparm[i].defvalue));
- }
- break;
-
- default:
- printf("panic: bad return (%d) from fGetParameterSet\n",rc);
- break;
- }
- FreeParameterSet(kparm,PARMCOUNT(kparm));
- }
- printf("EOF");
- fclose(fp);
- exit(0);
-}
-#endif
diff --git a/eBones/lib/libkrb/krb.3 b/eBones/lib/libkrb/krb.3
deleted file mode 100644
index 10e20e948077..000000000000
--- a/eBones/lib/libkrb/krb.3
+++ /dev/null
@@ -1,462 +0,0 @@
-.\" $Source: /usr/cvs/src/eBones/krb/krb.3,v $
-.\" $Author: mark $
-.\" $Header: /usr/cvs/src/eBones/krb/krb.3,v 1.2 1995/07/18 16:40:57 mark Exp $
-.\" Copyright 1989 by the Massachusetts Institute of Technology.
-.\"
-.\" For copying and distribution information,
-.\" please see the file <mit-copyright.h>.
-.\"
-.TH KERBEROS 3 "Kerberos Version 4.0" "MIT Project Athena"
-.SH NAME
-krb_mk_req, krb_rd_req, krb_kntoln, krb_set_key, krb_get_cred,
-krb_mk_priv, krb_rd_priv, krb_mk_safe, krb_rd_safe, krb_mk_err,
-krb_rd_err, krb_ck_repl \- Kerberos authentication library
-.SH SYNOPSIS
-.nf
-.nj
-.ft B
-#include <des.h>
-#include <kerberosIV/krb.h>
-.PP
-.ft B
-extern char *krb_err_txt[];
-.PP
-.ft B
-int krb_mk_req(authent,service,instance,realm,checksum)
-KTEXT authent;
-char *service;
-char *instance;
-char *realm;
-u_long checksum;
-.PP
-.ft B
-int krb_rd_req(authent,service,instance,from_addr,ad,fn)
-KTEXT authent;
-char *service;
-char *instance;
-u_long from_addr;
-AUTH_DAT *ad;
-char *fn;
-.PP
-.ft B
-int krb_kntoln(ad,lname)
-AUTH_DAT *ad;
-char *lname;
-.PP
-.ft B
-int krb_set_key(key,cvt)
-char *key;
-int cvt;
-.PP
-.ft B
-int krb_get_cred(service,instance,realm,c)
-char *service;
-char *instance;
-char *realm;
-CREDENTIALS *c;
-.PP
-.ft B
-long krb_mk_priv(in,out,in_length,schedule,key,sender,receiver)
-u_char *in;
-u_char *out;
-u_long in_length;
-des_cblock key;
-des_key_schedule schedule;
-struct sockaddr_in *sender;
-struct sockaddr_in *receiver;
-.PP
-.ft B
-long krb_rd_priv(in,in_length,schedule,key,sender,receiver,msg_data)
-u_char *in;
-u_long in_length;
-Key_schedule schedule;
-des_cblock key;
-struct sockaddr_in *sender;
-struct sockaddr_in *receiver;
-MSG_DAT *msg_data;
-.PP
-.ft B
-long krb_mk_safe(in,out,in_length,key,sender,receiver)
-u_char *in;
-u_char *out;
-u_long in_length;
-des_cblock key;
-struct sockaddr_in *sender;
-struct sockaddr_in *receiver;
-.PP
-.ft B
-long krb_rd_safe(in,length,key,sender,receiver,msg_data)
-u_char *in;
-u_long length;
-des_cblock key;
-struct sockaddr_in *sender;
-struct sockaddr_in *receiver;
-MSG_DAT *msg_data;
-.PP
-.ft B
-long krb_mk_err(out,code,string)
-u_char *out;
-long code;
-char *string;
-.PP
-.ft B
-long krb_rd_err(in,length,code,msg_data)
-u_char *in;
-u_long length;
-long code;
-MSG_DAT *msg_data;
-.fi
-.ft R
-.SH DESCRIPTION
-This library supports network authentication and various related
-operations. The library contains many routines beyond those described
-in this man page, but they are not intended to be used directly.
-Instead, they are called by the routines that are described, the
-authentication server and the login program.
-.PP
-.I krb_err_txt[]
-contains text string descriptions of various Kerberos error codes returned
-by some of the routines below.
-.PP
-.I krb_mk_req
-takes a pointer to a text structure in which an authenticator is to be
-built. It also takes the name, instance, and realm of the service to be
-used and an optional checksum. It is up to the application to decide
-how to generate the checksum.
-.I krb_mk_req
-then retrieves a ticket for the desired service and creates an
-authenticator. The authenticator is built in
-.I authent
-and is accessible
-to the calling procedure.
-.PP
-It is up to the application to get the authenticator to the service
-where it will be read by
-.I krb_rd_req.
-Unless an attacker posesses the session key contained in the ticket, it
-will be unable to modify the authenticator. Thus, the checksum can be
-used to verify the authenticity of the other data that will pass through
-a connection.
-.PP
-.I krb_rd_req
-takes an authenticator of type
-.B KTEXT,
-a service name, an instance, the address of the
-host originating the request, and a pointer to a structure of type
-.B AUTH_DAT
-which is filled in with information obtained from the authenticator.
-It also optionally takes the name of the file in which it will find the
-secret key(s) for the service.
-If the supplied
-.I instance
-contains "*", then the first service key with the same service name
-found in the service key file will be used, and the
-.I instance
-argument will be filled in with the chosen instance. This means that
-the caller must provide space for such an instance name.
-.PP
-It is used to find out information about the principal when a request
-has been made to a service. It is up to the application protocol to get
-the authenticator from the client to the service. The authenticator is
-then passed to
-.I krb_rd_req
-to extract the desired information.
-.PP
-.I krb_rd_req
-returns zero (RD_AP_OK) upon successful authentication. If a packet was
-forged, modified, or replayed, authentication will fail. If the
-authentication fails, a non-zero value is returned indicating the
-particular problem encountered. See
-.I krb.h
-for the list of error codes.
-.PP
-If the last argument is the null string (""), krb_rd_req will use the
-file /etc/kerberosIV/srvtab to find its keys. If the last argument is
-NULL, it will assume that the key has been set by
-.I krb_set_key
-and will not bother looking further.
-.PP
-.I krb_kntoln
-converts a Kerberos name to a local name. It takes a structure
-of type AUTH_DAT and uses the name and instance to look in the database
-/etc/kerberosIV/aname to find the corresponding local name. The local name is
-returned and can be used by an application to change uids, directories,
-or other parameters. It is not an integral part of Kerberos, but is
-instead provided to support the use of Kerberos in existing utilities.
-.PP
-.I krb_set_key
-takes as an argument a des key. It then creates
-a key schedule from it and saves the original key to be used as an
-initialization vector.
-It is used to set the server's key which
-must be used to decrypt tickets.
-.PP
-If called with a non-zero second argument,
-.I krb_set_key
-will first convert the input from a string of arbitrary length to a DES
-key by encrypting it with a one-way function.
-.PP
-In most cases it should not be necessary to call
-.I krb_set_key.
-The necessary keys will usually be obtained and set inside
-.I krb_rd_req. krb_set_key
-is provided for those applications that do not wish to place the
-application keys on disk.
-.PP
-.I krb_get_cred
-searches the caller's ticket file for a ticket for the given service, instance,
-and realm; and, if a ticket is found, fills in the given CREDENTIALS structure
-with the ticket information.
-.PP
-If the ticket was found,
-.I krb_get_cred
-returns GC_OK.
-If the ticket file can't be found, can't be read, doesn't belong to
-the user (other than root), isn't a regular file, or is in the wrong
-mode, the error GC_TKFIL is returned.
-.PP
-.I krb_mk_priv
-creates an encrypted, authenticated
-message from any arbitrary application data, pointed to by
-.I in
-and
-.I in_length
-bytes long.
-The private session key, pointed to by
-.I key
-and the key schedule,
-.I schedule,
-are used to encrypt the data and some header information using
-.I pcbc_encrypt.
-.I sender
-and
-.I receiver
-point to the Internet address of the two parties.
-In addition to providing privacy, this protocol message protects
-against modifications, insertions or replays. The encapsulated message and
-header are placed in the area pointed to by
-.I out
-and the routine returns the length of the output, or -1 indicating
-an error.
-.PP
-.I krb_rd_priv
-decrypts and authenticates a received
-.I krb_mk_priv
-message.
-.I in
-points to the beginning of the received message, whose length
-is specified in
-.I in_length.
-The private session key, pointed to by
-.I key,
-and the key schedule,
-.I schedule,
-are used to decrypt and verify the received message.
-.I msg_data
-is a pointer to a
-.I MSG_DAT
-struct, defined in
-.I krb.h.
-The routine fills in the
-.I app_data
-field with a pointer to the decrypted application data,
-.I app_length
-with the length of the
-.I app_data
-field,
-.I time_sec
-and
-.I time_5ms
-with the timestamps in the message, and
-.I swap
-with a 1 if the byte order of the receiver is different than that of
-the sender. (The application must still determine if it is appropriate
-to byte-swap application data; the Kerberos protocol fields are already taken
-care of). The
-.I hash
-field returns a value useful as input to the
-.I krb_ck_repl
-routine.
-
-The routine returns zero if ok, or a Kerberos error code. Modified messages
-and old messages cause errors, but it is up to the caller to
-check the time sequence of messages, and to check against recently replayed
-messages using
-.I krb_ck_repl
-if so desired.
-.PP
-.I krb_mk_safe
-creates an authenticated, but unencrypted message from any arbitrary
-application data,
-pointed to by
-.I in
-and
-.I in_length
-bytes long.
-The private session key, pointed to by
-.I key,
-is used to seed the
-.I quad_cksum()
-checksum algorithm used as part of the authentication.
-.I sender
-and
-.I receiver
-point to the Internet address of the two parties.
-This message does not provide privacy, but does protect (via detection)
-against modifications, insertions or replays. The encapsulated message and
-header are placed in the area pointed to by
-.I out
-and the routine returns the length of the output, or -1 indicating
-an error.
-The authentication provided by this routine is not as strong as that
-provided by
-.I krb_mk_priv
-or by computing the checksum using
-.I cbc_cksum
-instead, both of which authenticate via DES.
-.PP
-
-.I krb_rd_safe
-authenticates a received
-.I krb_mk_safe
-message.
-.I in
-points to the beginning of the received message, whose length
-is specified in
-.I in_length.
-The private session key, pointed to by
-.I key,
-is used to seed the quad_cksum() routine as part of the authentication.
-.I msg_data
-is a pointer to a
-.I MSG_DAT
-struct, defined in
-.I krb.h .
-The routine fills in these
-.I MSG_DAT
-fields:
-the
-.I app_data
-field with a pointer to the application data,
-.I app_length
-with the length of the
-.I app_data
-field,
-.I time_sec
-and
-.I time_5ms
-with the timestamps in the message, and
-.I swap
-with a 1 if the byte order of the receiver is different than that of
-the sender.
-(The application must still determine if it is appropriate
-to byte-swap application data; the Kerberos protocol fields are already taken
-care of). The
-.I hash
-field returns a value useful as input to the
-.I krb_ck_repl
-routine.
-
-The routine returns zero if ok, or a Kerberos error code. Modified messages
-and old messages cause errors, but it is up to the caller to
-check the time sequence of messages, and to check against recently replayed
-messages using
-.I krb_ck_repl
-if so desired.
-.PP
-.I krb_mk_err
-constructs an application level error message that may be used along
-with
-.I krb_mk_priv
-or
-.I krb_mk_safe.
-.I out
-is a pointer to the output buffer,
-.I code
-is an application specific error code, and
-.I string
-is an application specific error string.
-
-.PP
-.I krb_rd_err
-unpacks a received
-.I krb_mk_err
-message.
-.I in
-points to the beginning of the received message, whose length
-is specified in
-.I in_length.
-.I code
-is a pointer to a value to be filled in with the error
-value provided by the application.
-.I msg_data
-is a pointer to a
-.I MSG_DAT
-struct, defined in
-.I krb.h .
-The routine fills in these
-.I MSG_DAT
-fields: the
-.I app_data
-field with a pointer to the application error text,
-.I app_length
-with the length of the
-.I app_data
-field, and
-.I swap
-with a 1 if the byte order of the receiver is different than that of
-the sender. (The application must still determine if it is appropriate
-to byte-swap application data; the Kerberos protocol fields are already taken
-care of).
-
-The routine returns zero if the error message has been successfully received,
-or a Kerberos error code.
-.PP
-The
-.I KTEXT
-structure is used to pass around text of varying lengths. It consists
-of a buffer for the data, and a length. krb_rd_req takes an argument of this
-type containing the authenticator, and krb_mk_req returns the
-authenticator in a structure of this type. KTEXT itself is really a
-pointer to the structure. The actual structure is of type KTEXT_ST.
-.PP
-The
-.I AUTH_DAT
-structure is filled in by krb_rd_req. It must be allocated before
-calling krb_rd_req, and a pointer to it is passed. The structure is
-filled in with data obtained from Kerberos.
-.I MSG_DAT
-structure is filled in by either krb_rd_priv, krb_rd_safe, or
-krb_rd_err. It must be allocated before the call and a pointer to it
-is passed. The structure is
-filled in with data obtained from Kerberos.
-.PP
-.SH FILES
-/usr/include/kerberosIV/krb.h
-.br
-/usr/lib/libkrb.a
-.br
-/usr/include/des.h
-.br
-/usr/lib/libdes.a
-.br
-/etc/kerberosIV/aname
-.br
-/etc/kerberosIV/srvtab
-.br
-/tmp/tkt[uid]
-.SH "SEE ALSO"
-kerberos(1), des_crypt(3)
-.SH DIAGNOSTICS
-.SH BUGS
-The caller of
-.I krb_rd_req, krb_rd_priv, and krb_rd_safe
-must check time order and for replay attempts.
-.I krb_ck_repl
-is not implemented yet.
-.SH AUTHORS
-Clifford Neuman, MIT Project Athena
-.br
-Steve Miller, MIT Project Athena/Digital Equipment Corporation
-.SH RESTRICTIONS
-COPYRIGHT 1985,1986,1989 Massachusetts Institute of Technology
diff --git a/eBones/lib/libkrb/krb_err.et b/eBones/lib/libkrb/krb_err.et
deleted file mode 100644
index 7d2baef47345..000000000000
--- a/eBones/lib/libkrb/krb_err.et
+++ /dev/null
@@ -1,257 +0,0 @@
-# Copyright 1987,1988 Massachusetts Institute of Technology
-# For copying and distribution information, see the file
-# "Copyright.MIT".
-#
-# from: krb_err.et,v 4.1 89/09/26 09:24:20 jtkohl Exp $
-# $Id: krb_err.et,v 1.3 1995/07/18 16:39:00 mark Exp $
-#
- error_table krb
-
- ec KRBET_KSUCCESS,
- "Kerberos successful"
-
- ec KRBET_KDC_NAME_EXP,
- "Kerberos principal expired"
-
- ec KRBET_KDC_SERVICE_EXP,
- "Kerberos service expired"
-
- ec KRBET_KDC_AUTH_EXP,
- "Kerberos auth expired"
-
- ec KRBET_KDC_PKT_VER,
- "Incorrect kerberos master key version"
-
- ec KRBET_KDC_P_MKEY_VER,
- "Incorrect kerberos master key version"
-
- ec KRBET_KDC_S_MKEY_VER,
- "Incorrect kerberos master key version"
-
- ec KRBET_KDC_BYTE_ORDER,
- "Kerberos error: byte order unknown"
-
- ec KRBET_KDC_PR_UNKNOWN,
- "Kerberos principal unknown"
-
- ec KRBET_KDC_PR_N_UNIQUE,
- "Kerberos principal not unique"
-
- ec KRBET_KDC_NULL_KEY,
- "Kerberos principal has null key"
-
- ec KRBET_KRB_RES11,
- "Reserved 11"
-
- ec KRBET_KRB_RES12,
- "Reserved 12"
-
- ec KRBET_KRB_RES13,
- "Reserved 13"
-
- ec KRBET_KRB_RES14,
- "Reserved 14"
-
- ec KRBET_KRB_RES15,
- "Reserved 15"
-
- ec KRBET_KRB_RES16,
- "Reserved 16"
-
- ec KRBET_KRB_RES17,
- "Reserved 17"
-
- ec KRBET_KRB_RES18,
- "Reserved 18"
-
- ec KRBET_KRB_RES19,
- "Reserved 19"
-
- ec KRBET_KDC_GEN_ERR,
- "Generic error from Kerberos KDC"
-
- ec KRBET_GC_TKFIL,
- "Can't read Kerberos ticket file"
-
- ec KRBET_GC_NOTKT,
- "Can't find Kerberos ticket or TGT"
-
- ec KRBET_KRB_RES23,
- "Reserved 23"
-
- ec KRBET_KRB_RES24,
- "Reserved 24"
-
- ec KRBET_KRB_RES25,
- "Reserved 25"
-
- ec KRBET_MK_AP_TGTEXP,
- "Kerberos TGT Expired"
-
- ec KRBET_KRB_RES27,
- "Reserved 27"
-
- ec KRBET_KRB_RES28,
- "Reserved 28"
-
- ec KRBET_KRB_RES29,
- "Reserved 29"
-
- ec KRBET_KRB_RES30,
- "Reserved 30"
-
- ec KRBET_RD_AP_UNDEC,
- "Kerberos error: Can't decode authenticator"
-
- ec KRBET_RD_AP_EXP,
- "Kerberos ticket expired"
-
- ec KRBET_RD_AP_NYV,
- "Kerberos ticket not yet valid"
-
- ec KRBET_RD_AP_REPEAT,
- "Kerberos error: Repeated request"
-
- ec KRBET_RD_AP_NOT_US,
- "The kerberos ticket isn't for us"
-
- ec KRBET_RD_AP_INCON,
- "Kerberos request inconsistent"
-
- ec KRBET_RD_AP_TIME,
- "Kerberos error: delta_t too big"
-
- ec KRBET_RD_AP_BADD,
- "Kerberos error: incorrect net address"
-
- ec KRBET_RD_AP_VERSION,
- "Kerberos protocol version mismatch"
-
- ec KRBET_RD_AP_MSG_TYPE,
- "Kerberos error: invalid msg type"
-
- ec KRBET_RD_AP_MODIFIED,
- "Kerberos error: message stream modified"
-
- ec KRBET_RD_AP_ORDER,
- "Kerberos error: message out of order"
-
- ec KRBET_RD_AP_UNAUTHOR,
- "Kerberos error: unauthorized request"
-
- ec KRBET_KRB_RES44,
- "Reserved 44"
-
- ec KRBET_KRB_RES45,
- "Reserved 45"
-
- ec KRBET_KRB_RES46,
- "Reserved 46"
-
- ec KRBET_KRB_RES47,
- "Reserved 47"
-
- ec KRBET_KRB_RES48,
- "Reserved 48"
-
- ec KRBET_KRB_RES49,
- "Reserved 49"
-
- ec KRBET_KRB_RES50,
- "Reserved 50"
-
- ec KRBET_GT_PW_NULL,
- "Kerberos error: current PW is null"
-
- ec KRBET_GT_PW_BADPW,
- "Kerberos error: Incorrect current password"
-
- ec KRBET_GT_PW_PROT,
- "Kerberos protocol error"
-
- ec KRBET_GT_PW_KDCERR,
- "Error returned by Kerberos KDC"
-
- ec KRBET_GT_PW_NULLTKT,
- "Null Kerberos ticket returned by KDC"
-
- ec KRBET_SKDC_RETRY,
- "Kerberos error: Retry count exceeded"
-
- ec KRBET_SKDC_CANT,
- "Kerberos error: Can't send request"
-
- ec KRBET_KRB_RES58,
- "Reserved 58"
-
- ec KRBET_KRB_RES59,
- "Reserved 59"
-
- ec KRBET_KRB_RES60,
- "Reserved 60"
-
- ec KRBET_INTK_W_NOTALL,
- "Kerberos error: not all tickets returned"
-
- ec KRBET_INTK_BADPW,
- "Kerberos error: incorrect password"
-
- ec KRBET_INTK_PROT,
- "Kerberos error: Protocol Error"
-
- ec KRBET_KRB_RES64,
- "Reserved 64"
-
- ec KRBET_KRB_RES65,
- "Reserved 65"
-
- ec KRBET_KRB_RES66,
- "Reserved 66"
-
- ec KRBET_KRB_RES67,
- "Reserved 67"
-
- ec KRBET_KRB_RES68,
- "Reserved 68"
-
- ec KRBET_KRB_RES69,
- "Reserved 69"
-
- ec KRBET_INTK_ERR,
- "Other error"
-
- ec KRBET_AD_NOTGT,
- "Don't have Kerberos ticket-granting ticket"
-
- ec KRBET_KRB_RES72,
- "Reserved 72"
-
- ec KRBET_KRB_RES73,
- "Reserved 73"
-
- ec KRBET_KRB_RES74,
- "Reserved 74"
-
- ec KRBET_KRB_RES75,
- "Reserved 75"
-
- ec KRBET_NO_TKT_FIL,
- "No ticket file found"
-
- ec KRBET_TKT_FIL_ACC,
- "Couldn't access ticket file"
-
- ec KRBET_TKT_FIL_LCK,
- "Couldn't lock ticket file"
-
- ec KRBET_TKT_FIL_FMT,
- "Bad ticket file format"
-
- ec KRBET_TKT_FIL_INI,
- "tf_init not called first"
-
- ec KRBET_KNAME_FMT,
- "Bad Kerberos name format"
-
- end
-
diff --git a/eBones/lib/libkrb/krb_err_txt.c b/eBones/lib/libkrb/krb_err_txt.c
deleted file mode 100644
index 2c8c0cacbe20..000000000000
--- a/eBones/lib/libkrb/krb_err_txt.c
+++ /dev/null
@@ -1,280 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: krb_err_txt.c,v 4.7 88/12/01 14:10:14 jtkohl Exp $
- * $Id: krb_err_txt.c,v 1.3 1995/07/18 16:39:02 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: krb_err_txt.c,v 1.3 1995/07/18 16:39:02 mark Exp $";
-#endif lint
-#endif
-
-/*
- * This file contains an array of error text strings.
- * The associated error codes (which are defined in "krb.h")
- * follow the string in the comments at the end of each line.
- */
-
-char *krb_err_txt[256] = {
- "OK", /* 000 */
- "Principal expired (kerberos)", /* 001 */
- "Service expired (kerberos)", /* 002 */
- "Authentication expired (kerberos)", /* 003 */
- "Unknown protocol version number (kerberos)", /* 004 */
- "Principal: Incorrect master key version (kerberos)", /* 005 */
- "Service: Incorrect master key version (kerberos)", /* 006 */
- "Bad byte order (kerberos)", /* 007 */
- "Principal unknown (kerberos)", /* 008 */
- "Principal not unique (kerberos)", /* 009 */
- "Principal has null key (kerberos)", /* 010 */
- "Reserved error message 11 (kerberos)", /* 011 */
- "Reserved error message 12 (kerberos)", /* 012 */
- "Reserved error message 13 (kerberos)", /* 013 */
- "Reserved error message 14 (kerberos)", /* 014 */
- "Reserved error message 15 (kerberos)", /* 015 */
- "Reserved error message 16 (kerberos)", /* 016 */
- "Reserved error message 17 (kerberos)", /* 017 */
- "Reserved error message 18 (kerberos)", /* 018 */
- "Reserved error message 19 (kerberos)", /* 019 */
- "Permission Denied (kerberos)", /* 020 */
- "Can't read ticket file (krb_get_cred)", /* 021 */
- "Can't find ticket (krb_get_cred)", /* 022 */
- "Reserved error message 23 (krb_get_cred)", /* 023 */
- "Reserved error message 24 (krb_get_cred)", /* 024 */
- "Reserved error message 25 (krb_get_cred)", /* 025 */
- "Ticket granting ticket expired (krb_mk_req)", /* 026 */
- "Reserved error message 27 (krb_mk_req)", /* 027 */
- "Reserved error message 28 (krb_mk_req)", /* 028 */
- "Reserved error message 29 (krb_mk_req)", /* 029 */
- "Reserved error message 30 (krb_mk_req)", /* 030 */
- "Can't decode authenticator (krb_rd_req)", /* 031 */
- "Ticket expired (krb_rd_req)", /* 032 */
- "Ticket issue date too far in the future (krb_rd_req)",/* 033 */
- "Repeat request (krb_rd_req)", /* 034 */
- "Ticket for wrong server (krb_rd_req)", /* 035 */
- "Request inconsistent (krb_rd_req)", /* 036 */
- "Time is out of bounds (krb_rd_req)", /* 037 */
- "Incorrect network address (krb_rd_req)", /* 038 */
- "Protocol version mismatch (krb_rd_req)", /* 039 */
- "Illegal message type (krb_rd_req)", /* 040 */
- "Message integrity error (krb_rd_req)", /* 041 */
- "Message duplicate or out of order (krb_rd_req)", /* 042 */
- "Unauthorized request (krb_rd_req)", /* 043 */
- "Reserved error message 44 (krb_rd_req)", /* 044 */
- "Reserved error message 45 (krb_rd_req)", /* 045 */
- "Reserved error message 46 (krb_rd_req)", /* 046 */
- "Reserved error message 47 (krb_rd_req)", /* 047 */
- "Reserved error message 48 (krb_rd_req)", /* 048 */
- "Reserved error message 49 (krb_rd_req)", /* 049 */
- "Reserved error message 50 (krb_rd_req)", /* 050 */
- "Current password is NULL (get_pw_tkt)", /* 051 */
- "Current password incorrect (get_pw_tkt)", /* 052 */
- "Protocol error (gt_pw_tkt)", /* 053 */
- "Error returned by KDC (gt_pw_tkt)", /* 054 */
- "Null ticket returned by KDC (gt_pw_tkt)", /* 055 */
- "Retry count exceeded (send_to_kdc)", /* 056 */
- "Can't send request (send_to_kdc)", /* 057 */
- "Reserved error message 58 (send_to_kdc)", /* 058 */
- "Reserved error message 59 (send_to_kdc)", /* 059 */
- "Reserved error message 60 (send_to_kdc)", /* 060 */
- "Warning: Not ALL tickets returned", /* 061 */
- "Password incorrect", /* 062 */
- "Protocol error (get_intkt)", /* 063 */
- "Reserved error message 64 (get_in_tkt)", /* 064 */
- "Reserved error message 65 (get_in_tkt)", /* 065 */
- "Reserved error message 66 (get_in_tkt)", /* 066 */
- "Reserved error message 67 (get_in_tkt)", /* 067 */
- "Reserved error message 68 (get_in_tkt)", /* 068 */
- "Reserved error message 69 (get_in_tkt)", /* 069 */
- "Generic error (get_intkt)", /* 070 */
- "Don't have ticket granting ticket (get_ad_tkt)", /* 071 */
- "Reserved error message 72 (get_ad_tkt)", /* 072 */
- "Reserved error message 73 (get_ad_tkt)", /* 073 */
- "Reserved error message 74 (get_ad_tkt)", /* 074 */
- "Reserved error message 75 (get_ad_tkt)", /* 075 */
- "No ticket file (tf_util)", /* 076 */
- "Can't access ticket file (tf_util)", /* 077 */
- "Can't lock ticket file; try later (tf_util)", /* 078 */
- "Bad ticket file format (tf_util)", /* 079 */
- "Read ticket file before tf_init (tf_util)", /* 080 */
- "Bad Kerberos name format (kname_parse)", /* 081 */
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "(reserved)",
- "Generic kerberos error (kfailure)", /* 255 */
-};
diff --git a/eBones/lib/libkrb/krb_get_in_tkt.c b/eBones/lib/libkrb/krb_get_in_tkt.c
deleted file mode 100644
index b6ff308a77c0..000000000000
--- a/eBones/lib/libkrb/krb_get_in_tkt.c
+++ /dev/null
@@ -1,301 +0,0 @@
-/*
- * Copyright 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: der: krb_get_in_tkt.c,v 4.19 89/07/18 16:31:31 jtkohl Exp $
- * $Id: krb_get_in_tkt.c,v 1.3 1995/07/18 16:39:04 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char *rcsid =
-"$Id: krb_get_in_tkt.c,v 1.3 1995/07/18 16:39:04 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <krb.h>
-#include <des.h>
-#include <prot.h>
-
-#include <stdio.h>
-#include <strings.h>
-#include <errno.h>
-
-/* use the bsd time.h struct defs for PC too! */
-#include <sys/time.h>
-#include <sys/types.h>
-
-int swap_bytes;
-
-/*
- * decrypt_tkt(): Given user, instance, realm, passwd, key_proc
- * and the cipher text sent from the KDC, decrypt the cipher text
- * using the key returned by key_proc.
- */
-
-static int
-decrypt_tkt(user, instance, realm, arg, key_proc, cipp)
- char *user;
- char *instance;
- char *realm;
- char *arg;
- int (*key_proc)();
- KTEXT *cipp;
-{
- KTEXT cip = *cipp;
- C_Block key; /* Key for decrypting cipher */
- Key_schedule key_s;
-
-#ifndef NOENCRYPTION
- /* Attempt to decrypt it */
-#endif
-
- /* generate a key */
-
- {
- register int rc;
- rc = (*key_proc)(user,instance,realm,arg,key);
- if (rc)
- return(rc);
- }
-
-#ifndef NOENCRYPTION
- key_sched(&key,key_s);
- pcbc_encrypt((C_Block *)cip->dat,(C_Block *)cip->dat,
- (long) cip->length,key_s,(C_Block *)key,DES_DECRYPT);
-#endif /* !NOENCRYPTION */
- /* Get rid of all traces of key */
- bzero((char *)key,sizeof(key));
- bzero((char *)key_s,sizeof(key_s));
-
- return(0);
-}
-
-/*
- * krb_get_in_tkt() gets a ticket for a given principal to use a given
- * service and stores the returned ticket and session key for future
- * use.
- *
- * The "user", "instance", and "realm" arguments give the identity of
- * the client who will use the ticket. The "service" and "sinstance"
- * arguments give the identity of the server that the client wishes
- * to use. (The realm of the server is the same as the Kerberos server
- * to whom the request is sent.) The "life" argument indicates the
- * desired lifetime of the ticket; the "key_proc" argument is a pointer
- * to the routine used for getting the client's private key to decrypt
- * the reply from Kerberos. The "decrypt_proc" argument is a pointer
- * to the routine used to decrypt the reply from Kerberos; and "arg"
- * is an argument to be passed on to the "key_proc" routine.
- *
- * If all goes well, krb_get_in_tkt() returns INTK_OK, otherwise it
- * returns an error code: If an AUTH_MSG_ERR_REPLY packet is returned
- * by Kerberos, then the error code it contains is returned. Other
- * error codes returned by this routine include INTK_PROT to indicate
- * wrong protocol version, INTK_BADPW to indicate bad password (if
- * decrypted ticket didn't make sense), INTK_ERR if the ticket was for
- * the wrong server or the ticket store couldn't be initialized.
- *
- * The format of the message sent to Kerberos is as follows:
- *
- * Size Variable Field
- * ---- -------- -----
- *
- * 1 byte KRB_PROT_VERSION protocol version number
- * 1 byte AUTH_MSG_KDC_REQUEST | message type
- * HOST_BYTE_ORDER local byte order in lsb
- * string user client's name
- * string instance client's instance
- * string realm client's realm
- * 4 bytes tlocal.tv_sec timestamp in seconds
- * 1 byte life desired lifetime
- * string service service's name
- * string sinstance service's instance
- */
-
-int
-krb_get_in_tkt(user, instance, realm, service, sinstance, life,
- key_proc, decrypt_proc, arg)
- char *user;
- char *instance;
- char *realm;
- char *service;
- char *sinstance;
- int life;
- int (*key_proc)();
- int (*decrypt_proc)();
- char *arg;
-{
- KTEXT_ST pkt_st;
- KTEXT pkt = &pkt_st; /* Packet to KDC */
- KTEXT_ST rpkt_st;
- KTEXT rpkt = &rpkt_st; /* Returned packet */
- KTEXT_ST cip_st;
- KTEXT cip = &cip_st; /* Returned Ciphertext */
- KTEXT_ST tkt_st;
- KTEXT tkt = &tkt_st; /* Current ticket */
- C_Block ses; /* Session key for tkt */
- int kvno; /* Kvno for session key */
- unsigned char *v = pkt->dat; /* Prot vers no */
- unsigned char *t = (pkt->dat+1); /* Prot msg type */
-
- char s_name[SNAME_SZ];
- char s_instance[INST_SZ];
- char rlm[REALM_SZ];
- int lifetime;
- int msg_byte_order;
- int kerror;
- unsigned long exp_date;
- char *ptr;
-
- struct timeval t_local;
-
- unsigned long rep_err_code;
-
- unsigned long kdc_time; /* KDC time */
-
- /* BUILD REQUEST PACKET */
-
- /* Set up the fixed part of the packet */
- *v = (unsigned char) KRB_PROT_VERSION;
- *t = (unsigned char) AUTH_MSG_KDC_REQUEST;
- *t |= HOST_BYTE_ORDER;
-
- /* Now for the variable info */
- (void) strcpy((char *)(pkt->dat+2),user); /* aname */
- pkt->length = 3 + strlen(user);
- (void) strcpy((char *)(pkt->dat+pkt->length),
- instance); /* instance */
- pkt->length += 1 + strlen(instance);
- (void) strcpy((char *)(pkt->dat+pkt->length),realm); /* realm */
- pkt->length += 1 + strlen(realm);
-
- (void) gettimeofday(&t_local,(struct timezone *) 0);
- /* timestamp */
- bcopy((char *)&(t_local.tv_sec),(char *)(pkt->dat+pkt->length), 4);
- pkt->length += 4;
-
- *(pkt->dat+(pkt->length)++) = (char) life;
- (void) strcpy((char *)(pkt->dat+pkt->length),service);
- pkt->length += 1 + strlen(service);
- (void) strcpy((char *)(pkt->dat+pkt->length),sinstance);
- pkt->length += 1 + strlen(sinstance);
-
- rpkt->length = 0;
-
- /* SEND THE REQUEST AND RECEIVE THE RETURN PACKET */
-
- if ((kerror = send_to_kdc(pkt, rpkt, realm))) return(kerror);
-
- /* check packet version of the returned packet */
- if (pkt_version(rpkt) != KRB_PROT_VERSION)
- return(INTK_PROT);
-
- /* Check byte order */
- msg_byte_order = pkt_msg_type(rpkt) & 1;
- swap_bytes = 0;
- if (msg_byte_order != HOST_BYTE_ORDER) {
- swap_bytes++;
- }
-
- switch (pkt_msg_type(rpkt) & ~1) {
- case AUTH_MSG_KDC_REPLY:
- break;
- case AUTH_MSG_ERR_REPLY:
- bcopy(pkt_err_code(rpkt),(char *) &rep_err_code,4);
- if (swap_bytes) swap_u_long(rep_err_code);
- return((int)rep_err_code);
- default:
- return(INTK_PROT);
- }
-
- /* EXTRACT INFORMATION FROM RETURN PACKET */
-
- /* get the principal's expiration date */
- bcopy(pkt_x_date(rpkt),(char *) &exp_date,sizeof(exp_date));
- if (swap_bytes) swap_u_long(exp_date);
-
- /* Extract the ciphertext */
- cip->length = pkt_clen(rpkt); /* let clen do the swap */
-
- if ((cip->length < 0) || (cip->length > sizeof(cip->dat)))
- return(INTK_ERR); /* no appropriate error code
- currently defined for INTK_ */
- /* copy information from return packet into "cip" */
- bcopy((char *) pkt_cipher(rpkt),(char *)(cip->dat),cip->length);
-
- /* Attempt to decrypt the reply. */
- if (decrypt_proc == NULL)
- decrypt_proc = decrypt_tkt;
- (*decrypt_proc)(user, instance, realm, arg, key_proc, &cip);
-
- ptr = (char *) cip->dat;
-
- /* extract session key */
- bcopy(ptr,(char *)ses,8);
- ptr += 8;
-
- if ((strlen(ptr) + (ptr - (char *) cip->dat)) > cip->length)
- return(INTK_BADPW);
-
- /* extract server's name */
- (void) strcpy(s_name,ptr);
- ptr += strlen(s_name) + 1;
-
- if ((strlen(ptr) + (ptr - (char *) cip->dat)) > cip->length)
- return(INTK_BADPW);
-
- /* extract server's instance */
- (void) strcpy(s_instance,ptr);
- ptr += strlen(s_instance) + 1;
-
- if ((strlen(ptr) + (ptr - (char *) cip->dat)) > cip->length)
- return(INTK_BADPW);
-
- /* extract server's realm */
- (void) strcpy(rlm,ptr);
- ptr += strlen(rlm) + 1;
-
- /* extract ticket lifetime, server key version, ticket length */
- /* be sure to avoid sign extension on lifetime! */
- lifetime = (unsigned char) ptr[0];
- kvno = (unsigned char) ptr[1];
- tkt->length = (unsigned char) ptr[2];
- ptr += 3;
-
- if ((tkt->length < 0) ||
- ((tkt->length + (ptr - (char *) cip->dat)) > cip->length))
- return(INTK_BADPW);
-
- /* extract ticket itself */
- bcopy(ptr,(char *)(tkt->dat),tkt->length);
- ptr += tkt->length;
-
- if (strcmp(s_name, service) || strcmp(s_instance, sinstance) ||
- strcmp(rlm, realm)) /* not what we asked for */
- return(INTK_ERR); /* we need a better code here XXX */
-
- /* check KDC time stamp */
- bcopy(ptr,(char *)&kdc_time,4); /* Time (coarse) */
- if (swap_bytes) swap_u_long(kdc_time);
-
- ptr += 4;
-
- (void) gettimeofday(&t_local,(struct timezone *) 0);
- if (abs((int)(t_local.tv_sec - kdc_time)) > CLOCK_SKEW) {
- return(RD_AP_TIME); /* XXX should probably be better
- code */
- }
-
- /* initialize ticket cache */
- if (in_tkt(user,instance) != KSUCCESS)
- return(INTK_ERR);
-
- /* stash ticket, session key, etc. for future use */
- if ((kerror = save_credentials(s_name, s_instance, rlm, ses,
- lifetime, kvno, tkt, t_local.tv_sec)))
- return(kerror);
-
- return(INTK_OK);
-}
diff --git a/eBones/lib/libkrb/krb_realmofhost.3 b/eBones/lib/libkrb/krb_realmofhost.3
deleted file mode 100644
index c3b14cc45788..000000000000
--- a/eBones/lib/libkrb/krb_realmofhost.3
+++ /dev/null
@@ -1,161 +0,0 @@
-.\" from: krb_realmofhost.3,v 4.1 89/01/23 11:10:47 jtkohl Exp $
-.\" $Id: krb_realmofhost.3,v 1.3 1995/07/18 16:41:02 mark Exp $
-.\" Copyright 1989 by the Massachusetts Institute of Technology.
-.\"
-.\" For copying and distribution information,
-.\" please see the file <Copyright.MIT>.
-.\"
-.TH KRB_REALMOFHOST 3 "Kerberos Version 4.0" "MIT Project Athena"
-.SH NAME
-krb_realmofhost, krb_get_phost, krb_get_krbhst, krb_get_admhst,
-krb_get_lrealm \- additional Kerberos utility routines
-.SH SYNOPSIS
-.nf
-.nj
-.ft B
-#include <kerberosIV/krb.h>
-#include <des.h>
-#include <netinet/in.h>
-.PP
-.ft B
-char *krb_realmofhost(host)
-char *host;
-.PP
-.ft B
-char *krb_get_phost(alias)
-char *alias;
-.PP
-.ft B
-krb_get_krbhst(host,realm,n)
-char *host;
-char *realm;
-int n;
-.PP
-.ft B
-krb_get_admhst(host,realm,n)
-char *host;
-char *realm;
-int n;
-.PP
-.ft B
-krb_get_lrealm(realm,n)
-char *realm;
-int n;
-.fi
-.ft R
-.SH DESCRIPTION
-.I krb_realmofhost
-returns the Kerberos realm of the host
-.IR host ,
-as determined by the translation table
-.IR /etc/kerberosIV/krb.realms .
-.I host
-should be the fully-qualified domain-style primary host name of the host
-in question. In order to prevent certain security attacks, this routine
-must either have
-.I a priori
-knowledge of a host's realm, or obtain such information securely.
-.PP
-The format of the translation file is described by
-.IR krb.realms (5).
-If
-.I host
-exactly matches a host_name line, the corresponding realm
-is returned.
-Otherwise, if the domain portion of
-.I host
-matches a domain_name line, the corresponding realm
-is returned.
-If
-.I host
-contains a domain, but no translation is found,
-.IR host 's
-domain is converted to upper-case and returned.
-If
-.I host
-contains no discernable domain, or an error occurs,
-the local realm name, as supplied by
-.IR krb_get_lrealm (3),
-is returned.
-.PP
-.I krb_get_phost
-converts the hostname
-.I alias
-(which can be either an official name or an alias) into the instance
-name to be used in obtaining Kerberos tickets for most services,
-including the Berkeley rcmd suite (rlogin, rcp, rsh).
-.br
-The current convention is to return the first segment of the official
-domain-style name after conversion to lower case.
-.PP
-.I krb_get_krbhst
-fills in
-.I host
-with the hostname of the
-.IR n th
-host running a Kerberos key distribution center (KDC)
-for realm
-.IR realm ,
-as specified in the configuration file (\fI/etc/kerberosIV/krb.conf\fR).
-The configuration file is described by
-.IR krb.conf (5).
-If the host is successfully filled in, the routine
-returns KSUCCESS.
-If the file cannot be opened, and
-.I n
-equals 1, then the value of KRB_HOST as defined in
-.I <krb.h>
-is filled in, and KSUCCESS is returned. If there are fewer than
-.I n
-hosts running a Kerberos KDC for the requested realm, or the
-configuration file is malformed, the routine
-returns KFAILURE.
-.PP
-.I krb_get_admhst
-fills in
-.I host
-with the hostname of the
-.IR n th
-host running a Kerberos KDC database administration server
-for realm
-.IR realm ,
-as specified in the configuration file (\fI/etc/kerberosIV/krb.conf\fR).
-If the file cannot be opened or is malformed, or there are fewer than
-.I n
-hosts running a Kerberos KDC database administration server,
-the routine returns KFAILURE.
-.PP
-The character arrays used as return values for
-.IR krb_get_krbhst ,
-.IR krb_get_admhst ,
-should be large enough to
-hold any hostname (MAXHOSTNAMELEN from <sys/param.h>).
-.PP
-.I krb_get_lrealm
-fills in
-.I realm
-with the
-.IR n th
-realm of the local host, as specified in the configuration file.
-.I realm
-should be at least REALM_SZ (from
-.IR <krb.h>) characters long.
-.PP
-.SH SEE ALSO
-kerberos(3), krb.conf(5), krb.realms(5)
-.SH FILES
-.TP 20n
-/etc/kerberosIV/krb.realms
-translation file for host-to-realm mapping.
-.TP
-/etc/kerberosIV/krb.conf
-local realm-name and realm/server configuration file.
-.SH BUGS
-The current convention for instance names is too limited; the full
-domain name should be used.
-.PP
-.I krb_get_lrealm
-currently only supports
-.I n
-= 1. It should really consult the user's ticket cache to determine the
-user's current realm, rather than consulting a file on the host.
diff --git a/eBones/lib/libkrb/krb_sendauth.3 b/eBones/lib/libkrb/krb_sendauth.3
deleted file mode 100644
index 5608255009d9..000000000000
--- a/eBones/lib/libkrb/krb_sendauth.3
+++ /dev/null
@@ -1,348 +0,0 @@
-.\" from: krb_sendauth.3,v 4.1 89/01/23 11:10:58 jtkohl Exp $
-.\" $Id: krb_sendauth.3,v 1.3 1995/07/18 16:41:03 mark Exp $
-.\" Copyright 1988 by the Massachusetts Institute of Technology.
-.\"
-.\" For copying and distribution information,
-.\" please see the file <Copyright.MIT>.
-.\"
-.TH KRB_SENDAUTH 3 "Kerberos Version 4.0" "MIT Project Athena"
-.SH NAME
-krb_sendauth, krb_recvauth, krb_net_write, krb_net_read \-
-Kerberos routines for sending authentication via network stream sockets
-.SH SYNOPSIS
-.nf
-.nj
-.ft B
-#include <kerberosIV/krb.h>
-#include <des.h>
-#include <netinet/in.h>
-.PP
-.fi
-.HP 1i
-.ft B
-int krb_sendauth(options, fd, ktext, service, inst, realm, checksum,
-msg_data, cred, schedule, laddr, faddr, version)
-.nf
-.RS 0
-.ft B
-long options;
-int fd;
-KTEXT ktext;
-char *service, *inst, *realm;
-u_long checksum;
-MSG_DAT *msg_data;
-CREDENTIALS *cred;
-Key_schedule schedule;
-struct sockaddr_in *laddr, *faddr;
-char *version;
-.PP
-.fi
-.HP 1i
-.ft B
-int krb_recvauth(options, fd, ktext, service, inst, faddr, laddr,
-auth_data, filename, schedule, version)
-.nf
-.RS 0
-.ft B
-long options;
-int fd;
-KTEXT ktext;
-char *service, *inst;
-struct sockaddr_in *faddr, *laddr;
-AUTH_DAT *auth_data;
-char *filename;
-Key_schedule schedule;
-char *version;
-.PP
-.ft B
-int krb_net_write(fd, buf, len)
-int fd;
-char *buf;
-int len;
-.PP
-.ft B
-int krb_net_read(fd, buf, len)
-int fd;
-char *buf;
-int len;
-.fi
-.SH DESCRIPTION
-.PP
-These functions,
-which are built on top of the core Kerberos library,
-provide a convenient means for client and server
-programs to send authentication messages
-to one another through network connections.
-The
-.I krb_sendauth
-function sends an authenticated ticket from the client program to
-the server program by writing the ticket to a network socket.
-The
-.I krb_recvauth
-function receives the ticket from the client by
-reading from a network socket.
-
-.SH KRB_SENDAUTH
-.PP
-This function writes the ticket to
-the network socket specified by the
-file descriptor
-.IR fd,
-returning KSUCCESS if the write proceeds successfully,
-and an error code if it does not.
-
-The
-.I ktext
-argument should point to an allocated KTEXT_ST structure.
-The
-.IR service,
-.IR inst,
-and
-.IR realm
-arguments specify the server program's Kerberos principal name,
-instance, and realm.
-If you are writing a client that uses the local realm exclusively,
-you can set the
-.I realm
-argument to NULL.
-
-The
-.I version
-argument allows the client program to pass an application-specific
-version string that the server program can then match against
-its own version string.
-The
-.I version
-string can be up to KSEND_VNO_LEN (see
-.IR <krb.h> )
-characters in length.
-
-The
-.I checksum
-argument can be used to pass checksum information to the
-server program.
-The client program is responsible for specifying this information.
-This checksum information is difficult to corrupt because
-.I krb_sendauth
-passes it over the network in encrypted form.
-The
-.I checksum
-argument is passed as the checksum argument to
-.IR krb_mk_req .
-
-You can set
-.IR krb_sendauth's
-other arguments to NULL unless you want the
-client and server programs to mutually authenticate
-themselves.
-In the case of mutual authentication,
-the client authenticates itself to the server program,
-and demands that the server in turn authenticate itself to
-the client.
-
-.SH KRB_SENDAUTH AND MUTUAL AUTHENTICATION
-.PP
-If you want mutual authentication,
-make sure that you read all pending data from the local socket
-before calling
-.IR krb_sendauth.
-Set
-.IR krb_sendauth's
-.I options
-argument to
-.BR KOPT_DO_MUTUAL
-(this macro is defined in the
-.IR krb.h
-file);
-make sure that the
-.I laddr
-argument points to
-the address of the local socket,
-and that
-.I faddr
-points to the foreign socket's network address.
-
-.I Krb_sendauth
-fills in the other arguments--
-.IR msg_data ,
-.IR cred ,
-and
-.IR schedule --before
-sending the ticket to the server program.
-You must, however, allocate space for these arguments
-before calling the function.
-
-.I Krb_sendauth
-supports two other options:
-.BR KOPT_DONT_MK_REQ,
-and
-.BR KOPT_DONT_CANON.
-If called with
-.I options
-set as KOPT_DONT_MK_REQ,
-.I krb_sendauth
-will not use the
-.I krb_mk_req
-function to retrieve the ticket from the Kerberos server.
-The
-.I ktext
-argument must point to an existing ticket and authenticator (such as
-would be created by
-.IR krb_mk_req ),
-and the
-.IR service,
-.IR inst,
-and
-.IR realm
-arguments can be set to NULL.
-
-If called with
-.I options
-set as KOPT_DONT_CANON,
-.I krb_sendauth
-will not convert the service's instance to canonical form using
-.IR krb_get_phost (3).
-
-If you want to call
-.I krb_sendauth
-with a multiple
-.I options
-specification,
-construct
-.I options
-as a bitwise-OR of the options you want to specify.
-
-.SH KRB_RECVAUTH
-.PP
-The
-.I krb_recvauth
-function
-reads a ticket/authenticator pair from the socket pointed to by the
-.I fd
-argument.
-Set the
-.I options
-argument
-as a bitwise-OR of the options desired.
-Currently only KOPT_DO_MUTUAL is useful to the receiver.
-
-The
-.I ktext
-argument
-should point to an allocated KTEXT_ST structure.
-.I Krb_recvauth
-fills
-.I ktext
-with the
-ticket/authenticator pair read from
-.IR fd ,
-then passes it to
-.IR krb_rd_req .
-
-The
-.I service
-and
-.I inst
-arguments
-specify the expected service and instance for which the ticket was
-generated. They are also passed to
-.IR krb_rd_req.
-The
-.I inst
-argument may be set to "*" if the caller wishes
-.I krb_mk_req
-to fill in the instance used (note that there must be space in the
-.I inst
-argument to hold a full instance name, see
-.IR krb_mk_req (3)).
-
-The
-.I faddr
-argument
-should point to the address of the peer which is presenting the ticket.
-It is also passed to
-.IR krb_rd_req .
-
-If the client and server plan to mutually authenticate
-one another,
-the
-.I laddr
-argument
-should point to the local address of the file descriptor.
-Otherwise you can set this argument to NULL.
-
-The
-.I auth_data
-argument
-should point to an allocated AUTH_DAT area.
-It is passed to and filled in by
-.IR krb_rd_req .
-The checksum passed to the corresponding
-.I krb_sendauth
-is available as part of the filled-in AUTH_DAT area.
-
-The
-.I filename
-argument
-specifies the filename
-which the service program should use to obtain its service key.
-.I Krb_recvauth
-passes
-.I filename
-to the
-.I krb_rd_req
-function.
-If you set this argument to "",
-.I krb_rd_req
-looks for the service key in the file
-.IR /etc/kerberosIV/srvtab.
-
-If the client and server are performing mutual authenication,
-the
-.I schedule
-argument
-should point to an allocated Key_schedule.
-Otherwise it is ignored and may be NULL.
-
-The
-.I version
-argument should point to a character array of at least KSEND_VNO_LEN
-characters. It is filled in with the version string passed by the client to
-.IR krb_sendauth.
-.PP
-.SH KRB_NET_WRITE AND KRB_NET_READ
-.PP
-The
-.I krb_net_write
-function
-emulates the write(2) system call, but guarantees that all data
-specified is written to
-.I fd
-before returning, unless an error condition occurs.
-.PP
-The
-.I krb_net_read
-function
-emulates the read(2) system call, but guarantees that the requested
-amount of data is read from
-.I fd
-before returning, unless an error condition occurs.
-.PP
-.SH BUGS
-.IR krb_sendauth,
-.IR krb_recvauth,
-.IR krb_net_write,
-and
-.IR krb_net_read
-will not work properly on sockets set to non-blocking I/O mode.
-
-.SH SEE ALSO
-
-krb_mk_req(3), krb_rd_req(3), krb_get_phost(3)
-
-.SH AUTHOR
-John T. Kohl, MIT Project Athena
-.SH RESTRICTIONS
-Copyright 1988, Massachusetts Instititute of Technology.
-For copying and distribution information,
-please see the file <Copyright.h>.
diff --git a/eBones/lib/libkrb/krb_set_tkt_string.3 b/eBones/lib/libkrb/krb_set_tkt_string.3
deleted file mode 100644
index 73b5e5d8d97e..000000000000
--- a/eBones/lib/libkrb/krb_set_tkt_string.3
+++ /dev/null
@@ -1,43 +0,0 @@
-.\" from: krb_set_tkt_string.3,v 4.1 89/01/23 11:11:09 jtkohl Exp $
-.\" $Id: krb_set_tkt_string.3,v 1.1.1.1 1994/09/30 14:50:07 csgr Exp $
-.\" Copyright 1989 by the Massachusetts Institute of Technology.
-.\"
-.\" For copying and distribution information,
-.\" please see the file <Copyright.MIT>.
-.\"
-.TH KRB_SET_TKT_STRING 3 "Kerberos Version 4.0" "MIT Project Athena"
-.SH NAME
-krb_set_tkt_string \- set Kerberos ticket cache file name
-.SH SYNOPSIS
-.nf
-.nj
-.ft B
-#include <kerberosIV/krb.h>
-.PP
-.ft B
-void krb_set_tkt_string(filename)
-char *filename;
-.fi
-.ft R
-.SH DESCRIPTION
-.I krb_set_tkt_string
-sets the name of the file that holds the user's
-cache of Kerberos server tickets and associated session keys.
-.PP
-The string
-.I filename
-passed in is copied into local storage.
-Only MAXPATHLEN-1 (see <sys/param.h>) characters of the filename are
-copied in for use as the cache file name.
-.PP
-This routine should be called during initialization, before other
-Kerberos routines are called; otherwise the routines which fetch the
-ticket cache file name may be called and return an undesired ticket file
-name until this routine is called.
-.SH FILES
-.TP 20n
-/tmp/tkt[uid]
-default ticket file name, unless the environment variable KRBTKFILE is set.
-[uid] denotes the user's uid, in decimal.
-.SH SEE ALSO
-kerberos(3), setenv(3)
diff --git a/eBones/lib/libkrb/krbglue.c b/eBones/lib/libkrb/krbglue.c
deleted file mode 100644
index f82cf70399f3..000000000000
--- a/eBones/lib/libkrb/krbglue.c
+++ /dev/null
@@ -1,258 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: krbglue.c,v 4.1 89/01/23 15:51:50 wesommer Exp $
- * $Id: krbglue.c,v 1.3 1995/07/18 16:39:05 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-$Id: krbglue.c,v 1.3 1995/07/18 16:39:05 mark Exp $";
-#endif lint
-#endif
-
-#ifndef NCOMPAT
-/*
- * glue together new libraries and old clients
- */
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <netinet/in.h>
-#include <des.h>
-#include "krb.h"
-
-/* These definitions should be in krb.h, no? */
-/*
-#if defined(__HIGHC__)
-#undef __STDC__
-#endif
-#ifdef __STDC__
-extern int krb_mk_req (KTEXT, char *, char *, char *, long);
-extern int krb_rd_req (KTEXT, char *, char *, long, AUTH_DAT *, char *);
-extern int krb_kntoln (AUTH_DAT *, char *);
-extern int krb_set_key (char *, int);
-extern int krb_get_cred (char *, char *, char *, CREDENTIALS *);
-extern long krb_mk_priv (u_char *, u_char *, u_long, Key_schedule,
- C_Block, struct sockaddr_in *,
- struct sockaddr_in *);
-extern long krb_rd_priv (u_char *, u_long, Key_schedule,
- C_Block, struct sockaddr_in *,
- struct sockaddr_in *, MSG_DAT *);
-extern long krb_mk_safe (u_char *, u_char *, u_long, C_Block *,
- struct sockaddr_in *, struct sockaddr_in *);
-extern long krb_rd_safe (u_char *, u_long, C_Block *,
- struct sockaddr_in *, struct sockaddr_in *,
- MSG_DAT *);
-extern long krb_mk_err (u_char *, long, char *);
-extern int krb_rd_err (u_char *, u_long, long *, MSG_DAT *);
-extern int krb_get_pw_in_tkt (char *, char *, char *, char *, char *, int,
- char *);
-extern int krb_get_svc_in_tkt (char *, char *, char *, char *, char *, int,
- char *);
-extern int krb_get_pw_tkt (char *, char *, char *, char *);
-extern int krb_get_lrealm (char *, char *);
-extern int krb_realmofhost (char *);
-extern char *krb_get_phost (char *);
-extern int krb_get_krbhst (char *, char *, int);
-#ifdef DEBUG
-extern KTEXT krb_create_death_packet (char *);
-#endif
-#else
-extern int krb_mk_req ();
-extern int krb_rd_req ();
-extern int krb_kntoln ();
-extern int krb_set_key ();
-extern int krb_get_cred ();
-extern long krb_mk_priv ();
-extern long krb_rd_priv ();
-extern long krb_mk_safe ();
-extern long krb_rd_safe ();
-extern long krb_mk_err ();
-extern int krb_rd_err ();
-extern int krb_get_pw_in_tkt ();
-extern int krb_get_svc_in_tkt ();
-extern int krb_get_pw_tkt ();
-extern int krb_get_lrealm ();
-extern int krb_realmofhost ();
-extern char *krb_get_phost ();
-extern int krb_get_krbhst ();
-#ifdef DEBUG
-extern KTEXT krb_create_death_packet ();
-#endif
-#endif
-*/
-
-
-int mk_ap_req(authent, service, instance, realm, checksum)
- KTEXT authent;
- char *service, *instance, *realm;
- u_long checksum;
-{
- return krb_mk_req(authent,service,instance,realm,checksum);
-}
-
-int rd_ap_req(authent, service, instance, from_addr, ad, fn)
- KTEXT authent;
- char *service, *instance;
- u_long from_addr;
- AUTH_DAT *ad;
- char *fn;
-{
- return krb_rd_req(authent,service,instance,from_addr,ad,fn);
-}
-
-int an_to_ln(ad, lname)
- AUTH_DAT *ad;
- char *lname;
-{
- return krb_kntoln (ad,lname);
-}
-
-int set_serv_key (key, cvt)
- char *key;
- int cvt;
-{
- return krb_set_key(key,cvt);
-}
-
-int get_credentials (svc,inst,rlm,cred)
- char *svc, *inst, *rlm;
- CREDENTIALS *cred;
-{
- return krb_get_cred (svc, inst, rlm, cred);
-}
-
-long mk_private_msg (in,out,in_length,schedule,key,sender,receiver)
- u_char *in, *out;
- u_long in_length;
- Key_schedule schedule;
- C_Block key;
- struct sockaddr_in *sender, *receiver;
-{
- return krb_mk_priv (in,out,in_length,schedule,key,sender,receiver);
-}
-
-long rd_private_msg (in,in_length,schedule,key,sender,receiver,msg_data)
- u_char *in;
- u_long in_length;
- Key_schedule schedule;
- C_Block key;
- struct sockaddr_in *sender, *receiver;
- MSG_DAT *msg_data;
-{
- return krb_rd_priv (in,in_length,schedule,key,sender,receiver,msg_data);
-}
-
-long mk_safe_msg (in,out,in_length,key,sender,receiver)
- u_char *in, *out;
- u_long in_length;
- C_Block *key;
- struct sockaddr_in *sender, *receiver;
-{
- return krb_mk_safe (in,out,in_length,key,sender,receiver);
-}
-
-long rd_safe_msg (in,length,key,sender,receiver,msg_data)
- u_char *in;
- u_long length;
- C_Block *key;
- struct sockaddr_in *sender, *receiver;
- MSG_DAT *msg_data;
-{
- return krb_rd_safe (in,length,key,sender,receiver,msg_data);
-}
-
-long mk_appl_err_msg (out,code,string)
- u_char *out;
- long code;
- char *string;
-{
- return krb_mk_err (out,code,string);
-}
-
-long rd_appl_err_msg (in,length,code,msg_data)
- u_char *in;
- u_long length;
- long *code;
- MSG_DAT *msg_data;
-{
- return krb_rd_err (in,length,code,msg_data);
-}
-
-int get_in_tkt(user,instance,realm,service,sinstance,life,password)
- char *user, *instance, *realm, *service, *sinstance;
- int life;
- char *password;
-{
- return krb_get_pw_in_tkt(user,instance,realm,service,sinstance,
- life,password);
-}
-
-int get_svc_in_tkt(user, instance, realm, service, sinstance, life, srvtab)
- char *user, *instance, *realm, *service, *sinstance;
- int life;
- char *srvtab;
-{
- return krb_get_svc_in_tkt(user, instance, realm, service, sinstance,
- life, srvtab);
-}
-
-int get_pw_tkt(user,instance,realm,cpw)
- char *user;
- char *instance;
- char *realm;
- char *cpw;
-{
- return krb_get_pw_tkt(user,instance,realm,cpw);
-}
-
-int
-get_krbrlm (r, n)
-char *r;
-int n;
-{
- return krb_get_lream(r,n);
-}
-
-int
-krb_getrealm (host)
-{
- return krb_realmofhost(host);
-}
-
-char *
-get_phost (host)
-char *host
-{
- return krb_get_phost(host);
-}
-
-int
-get_krbhst (h, r, n)
-char *h;
-char *r;
-int n;
-{
- return krb_get_krbhst(h,r,n);
-}
-#ifdef DEBUG
-struct ktext *create_death_packet(a_name)
- char *a_name;
-{
- return krb_create_death_packet(a_name);
-}
-#endif /* DEBUG */
-
-#if 0
-extern int krb_ck_repl ();
-
-int check_replay ()
-{
- return krb_ck_repl ();
-}
-#endif
-#endif /* NCOMPAT */
diff --git a/eBones/lib/libkrb/kuserok.3 b/eBones/lib/libkrb/kuserok.3
deleted file mode 100644
index c7581a6c6f77..000000000000
--- a/eBones/lib/libkrb/kuserok.3
+++ /dev/null
@@ -1,63 +0,0 @@
-.\" from: kuserok.3,v 4.1 89/01/23 11:11:49 jtkohl Exp $
-.\" $Id: kuserok.3,v 1.1.1.1 1994/09/30 14:50:07 csgr Exp $
-.\" Copyright 1989 by the Massachusetts Institute of Technology.
-.\"
-.\" For copying and distribution information,
-.\" please see the file <Copyright.MIT>.
-.\"
-.TH KUSEROK 3 "Kerberos Version 4.0" "MIT Project Athena"
-.SH NAME
-kuserok \- Kerberos version of ruserok
-.SH SYNOPSIS
-.nf
-.nj
-.ft B
-#include <kerberosIV/krb.h>
-.PP
-.ft B
-kuserok(kdata, localuser)
-AUTH_DAT *auth_data;
-char *localuser;
-.fi
-.ft R
-.SH DESCRIPTION
-.I kuserok
-determines whether a Kerberos principal described by the structure
-.I auth_data
-is authorized to login as user
-.I localuser
-according to the authorization file
-("~\fIlocaluser\fR/.klogin" by default). It returns 0 (zero) if authorized,
-1 (one) if not authorized.
-.PP
-If there is no account for
-.I localuser
-on the local machine, authorization is not granted.
-If there is no authorization file, and the Kerberos principal described
-by
-.I auth_data
-translates to
-.I localuser
-(using
-.IR krb_kntoln (3)),
-authorization is granted.
-If the authorization file
-can't be accessed, or the file is not owned by
-.IR localuser,
-authorization is denied. Otherwise, the file is searched for
-a matching principal name, instance, and realm. If a match is found,
-authorization is granted, else authorization is denied.
-.PP
-The file entries are in the format:
-.nf
-.in +5n
- name.instance@realm
-.in -5n
-.fi
-with one entry per line.
-.SH SEE ALSO
-kerberos(3), ruserok(3), krb_kntoln(3)
-.SH FILES
-.TP 20n
-~\fIlocaluser\fR/.klogin
-authorization list
diff --git a/eBones/lib/libkrb/kuserok.c b/eBones/lib/libkrb/kuserok.c
deleted file mode 100644
index 8e5d18ab1e31..000000000000
--- a/eBones/lib/libkrb/kuserok.c
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Copyright 1987, 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * kuserok: check if a kerberos principal has
- * access to a local account
- *
- * from: kuserok.c,v 4.5 89/01/23 09:25:21 jtkohl Exp $
- * $Id: kuserok.c,v 1.3 1995/07/18 16:39:07 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: kuserok.c,v 1.3 1995/07/18 16:39:07 mark Exp $";
-#endif lint
-#endif
-
-#include <krb.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <pwd.h>
-#include <sys/param.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
-#include <sys/file.h>
-#include <strings.h>
-
-#define OK 0
-#define NOTOK 1
-#define MAX_USERNAME 10
-
-/*
- * Given a Kerberos principal "kdata", and a local username "luser",
- * determine whether user is authorized to login according to the
- * authorization file ("~luser/.klogin" by default). Returns OK
- * if authorized, NOTOK if not authorized.
- *
- * If there is no account for "luser" on the local machine, returns
- * NOTOK. If there is no authorization file, and the given Kerberos
- * name "kdata" translates to the same name as "luser" (using
- * krb_kntoln()), returns OK. Otherwise, if the authorization file
- * can't be accessed, returns NOTOK. Otherwise, the file is read for
- * a matching principal name, instance, and realm. If one is found,
- * returns OK, if none is found, returns NOTOK.
- *
- * The file entries are in the format:
- *
- * name.instance@realm
- *
- * one entry per line.
- *
- * The ATHENA_COMPAT code supports old-style Athena ~luser/.klogin
- * file entries. See the file "kparse.c".
- */
-
-#ifdef ATHENA_COMPAT
-
-#include <kparse.h>
-
-/*
- * The parmtable defines the keywords we will recognize with their
- * default values, and keeps a pointer to the found value. The found
- * value should be filled in with strsave(), since FreeParameterSet()
- * will release memory for all non-NULL found strings.
- *
-*** NOTE WELL! ***
- *
- * The table below is very nice, but we cannot hard-code a default for the
- * realm: we have to get the realm via krb_get_lrealm(). Even though the
- * default shows as "from krb_get_lrealm, below", it gets changed in
- * kuserok to whatever krb_get_lrealm() tells us. That code assumes that
- * the realm will be the entry number in the table below, so if you
- * change the order of the entries below, you have to change the
- * #definition of REALM_SCRIPT to reflect it.
- */
-#define REALM_SUBSCRIPT 1
-parmtable kparm[] = {
-
-/* keyword default found value */
-{"user", "", (char *) NULL},
-{"realm", "see krb_get_lrealm, below", (char *) NULL},
-{"instance", "", (char *) NULL},
-};
-#define KPARMS kparm,PARMCOUNT(kparm)
-#endif ATHENA_COMPAT
-
-int
-kuserok(kdata, luser)
- AUTH_DAT *kdata;
- char *luser;
-{
- struct stat sbuf;
- struct passwd *pwd;
- char pbuf[MAXPATHLEN];
- int isok = NOTOK, rc;
- FILE *fp;
- char kuser[MAX_USERNAME];
- char principal[ANAME_SZ], inst[INST_SZ], realm[REALM_SZ];
- char linebuf[BUFSIZ];
- char *newline;
- int gobble;
-#ifdef ATHENA_COMPAT
- char local_realm[REALM_SZ];
-#endif ATHENA_COMPAT
-
- /* no account => no access */
- if ((pwd = getpwnam(luser)) == NULL) {
- return(NOTOK);
- }
- (void) strcpy(pbuf, pwd->pw_dir);
- (void) strcat(pbuf, "/.klogin");
-
- if (access(pbuf, F_OK)) { /* not accessible */
- /*
- * if he's trying to log in as himself, and there is no .klogin file,
- * let him. To find out, call
- * krb_kntoln to convert the triple in kdata to a name which we can
- * string compare.
- */
- if (!krb_kntoln(kdata, kuser) && (strcmp(kuser, luser) == 0)) {
- return(OK);
- }
- }
- /* open ~/.klogin */
- if ((fp = fopen(pbuf, "r")) == NULL) {
- return(NOTOK);
- }
- /*
- * security: if the user does not own his own .klogin file,
- * do not grant access
- */
- if (fstat(fileno(fp), &sbuf)) {
- fclose(fp);
- return(NOTOK);
- }
- if (sbuf.st_uid != pwd->pw_uid) {
- fclose(fp);
- return(NOTOK);
- }
-
-#ifdef ATHENA_COMPAT
- /* Accept old-style .klogin files */
-
- /*
- * change the default realm from the hard-coded value to the
- * accepted realm that Kerberos specifies.
- */
- rc = krb_get_lrealm(local_realm, 1);
- if (rc == KSUCCESS)
- kparm[REALM_SUBSCRIPT].defvalue = local_realm;
- else
- return (rc);
-
- /* check each line */
- while ((isok != OK) && (rc = fGetParameterSet(fp, KPARMS)) != PS_EOF) {
- switch (rc) {
- case PS_BAD_KEYWORD:
- case PS_SYNTAX:
- while (((gobble = fGetChar(fp)) != EOF) && (gobble != '\n'));
- break;
-
- case PS_OKAY:
- isok = (ParmCompare(KPARMS, "user", kdata->pname) ||
- ParmCompare(KPARMS, "instance", kdata->pinst) ||
- ParmCompare(KPARMS, "realm", kdata->prealm));
- break;
-
- default:
- break;
- }
- FreeParameterSet(kparm, PARMCOUNT(kparm));
- }
- /* reset the stream for parsing new-style names, if necessary */
- rewind(fp);
-#endif ATHENA_COMPAT
-
- /* check each line */
- while ((isok != OK) && (fgets(linebuf, BUFSIZ, fp) != NULL)) {
- /* null-terminate the input string */
- linebuf[BUFSIZ-1] = '\0';
- newline = NULL;
- /* nuke the newline if it exists */
- if ((newline = index(linebuf, '\n')))
- *newline = '\0';
- rc = kname_parse(principal, inst, realm, linebuf);
- if (rc == KSUCCESS) {
- isok = (strncmp(kdata->pname, principal, ANAME_SZ) ||
- strncmp(kdata->pinst, inst, INST_SZ) ||
- strncmp(kdata->prealm, realm, REALM_SZ));
- }
- /* clean up the rest of the line if necessary */
- if (!newline)
- while (((gobble = getc(fp)) != EOF) && gobble != '\n');
- }
- fclose(fp);
- return(isok);
-}
diff --git a/eBones/lib/libkrb/log.c b/eBones/lib/libkrb/log.c
deleted file mode 100644
index e33477f5cf54..000000000000
--- a/eBones/lib/libkrb/log.c
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: log.c,v 4.7 88/12/01 14:15:14 jtkohl Exp $
- * $Id: log.c,v 1.3 1995/07/18 16:39:09 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char *rcsid =
-"$Id: log.c,v 1.3 1995/07/18 16:39:09 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <sys/time.h>
-#include <stdio.h>
-#include <krb.h>
-#include <klog.h>
-
-static char *log_name = KRBLOG;
-static is_open;
-
-/*
- * This file contains three logging routines: set_logfile()
- * to determine the file that log entries should be written to;
- * and log() and new_log() to write log entries to the file.
- */
-
-/*
- * log() is used to add entries to the logfile (see set_logfile()
- * below). Note that it is probably not portable since it makes
- * assumptions about what the compiler will do when it is called
- * with less than the correct number of arguments which is the
- * way it is usually called.
- *
- * The log entry consists of a timestamp and the given arguments
- * printed according to the given "format".
- *
- * The log file is opened and closed for each log entry.
- *
- * The return value is undefined.
- */
-
-__BEGIN_DECLS
-char *month_sname __P((int));
-__END_DECLS
-
-
-/*VARARGS1 */
-void log(format,a1,a2,a3,a4,a5,a6,a7,a8,a9,a0)
- char *format;
- int a1,a2,a3,a4,a5,a6,a7,a8,a9,a0;
-{
- FILE *logfile, *fopen();
- long time(),now;
- struct tm *tm;
-
- if ((logfile = fopen(log_name,"a")) == NULL)
- return;
-
- (void) time(&now);
- tm = localtime(&now);
-
- fprintf(logfile,"%2d-%s-%02d %02d:%02d:%02d ",tm->tm_mday,
- month_sname(tm->tm_mon + 1),tm->tm_year,
- tm->tm_hour, tm->tm_min, tm->tm_sec);
- fprintf(logfile,format,a1,a2,a3,a4,a5,a6,a7,a8,a9,a0);
- fprintf(logfile,"\n");
- (void) fclose(logfile);
- return;
-}
-
-/*
- * set_logfile() changes the name of the file to which
- * messages are logged. If set_logfile() is not called,
- * the logfile defaults to KRBLOG, defined in "krb.h".
- */
-
-void
-set_logfile(filename)
- char *filename;
-{
- log_name = filename;
- is_open = 0;
-}
-
-/*
- * new_log() appends a log entry containing the give time "t" and the
- * string "string" to the logfile (see set_logfile() above). The file
- * is opened once and left open. The routine returns 1 on failure, 0
- * on success.
- */
-
-int
-new_log(t,string)
- long t;
- char *string;
-{
- static FILE *logfile;
-
- long time();
- struct tm *tm;
-
- if (!is_open) {
- if ((logfile = fopen(log_name,"a")) == NULL) return(1);
- is_open = 1;
- }
-
- if (t) {
- tm = localtime(&t);
-
- fprintf(logfile,"\n%2d-%s-%02d %02d:%02d:%02d %s",tm->tm_mday,
- month_sname(tm->tm_mon + 1),tm->tm_year,
- tm->tm_hour, tm->tm_min, tm->tm_sec, string);
- }
- else {
- fprintf(logfile,"\n%20s%s","",string);
- }
-
- (void) fflush(logfile);
- return(0);
-}
diff --git a/eBones/lib/libkrb/mk_err.c b/eBones/lib/libkrb/mk_err.c
deleted file mode 100644
index 86002403bccf..000000000000
--- a/eBones/lib/libkrb/mk_err.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: mk_err.c,v 4.4 88/11/15 16:33:36 jtkohl Exp $
- * $Id: mk_err.c,v 1.3 1995/07/18 16:39:11 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char *rcsid =
-"$Id: mk_err.c,v 1.3 1995/07/18 16:39:11 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <sys/types.h>
-#include <krb.h>
-#include <prot.h>
-#include <strings.h>
-
-/*
- * This routine creates a general purpose error reply message. It
- * doesn't use KTEXT because application protocol may have long
- * messages, and may want this part of buffer contiguous to other
- * stuff.
- *
- * The error reply is built in "p", using the error code "e" and
- * error text "e_string" given. The length of the error reply is
- * returned.
- *
- * The error reply is in the following format:
- *
- * unsigned char KRB_PROT_VERSION protocol version no.
- * unsigned char AUTH_MSG_APPL_ERR message type
- * (least significant
- * bit of above) HOST_BYTE_ORDER local byte order
- * 4 bytes e given error code
- * string e_string given error text
- */
-
-long krb_mk_err(p,e,e_string)
- u_char *p; /* Where to build error packet */
- long e; /* Error code */
- char *e_string; /* Text of error */
-{
- u_char *start;
-
- start = p;
-
- /* Create fixed part of packet */
- *p++ = (unsigned char) KRB_PROT_VERSION;
- *p = (unsigned char) AUTH_MSG_APPL_ERR;
- *p++ |= HOST_BYTE_ORDER;
-
- /* Add the basic info */
- bcopy((char *)&e,(char *)p,4); /* err code */
- p += sizeof(e);
- (void) strcpy((char *)p,e_string); /* err text */
- p += strlen(e_string);
-
- /* And return the length */
- return p-start;
-}
diff --git a/eBones/lib/libkrb/mk_priv.c b/eBones/lib/libkrb/mk_priv.c
deleted file mode 100644
index d45d734c6f17..000000000000
--- a/eBones/lib/libkrb/mk_priv.c
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * Copyright 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * This routine constructs a Kerberos 'private msg', i.e.
- * cryptographically sealed with a private session key.
- *
- * Note-- bcopy is used to avoid alignment problems on IBM RT.
- *
- * Note-- It's too bad that it did a long int compare on the RT before.
- *
- * Returns either < 0 ===> error, or resulting size of message
- *
- * Steve Miller Project Athena MIT/DEC
- *
- * from: mk_priv.c,v 4.13 89/03/22 14:48:59 jtkohl Exp $
- * $Id: mk_priv.c,v 1.3 1995/07/18 16:39:13 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: mk_priv.c,v 1.3 1995/07/18 16:39:13 mark Exp $";
-#endif /* lint */
-#endif
-
-/* system include files */
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <netinet/in.h>
-#include <sys/time.h>
-
-/* application include files */
-#include <des.h>
-#include <krb.h>
-#include <prot.h>
-#include "lsb_addr_comp.h"
-
-extern char *errmsg();
-extern int errno;
-extern int krb_debug;
-
-/* static storage */
-
-
-static u_long c_length;
-static struct timeval msg_time;
-static u_char msg_time_5ms;
-static long msg_time_sec;
-
-/*
- * krb_mk_priv() constructs an AUTH_MSG_PRIVATE message. It takes
- * some user data "in" of "length" bytes and creates a packet in "out"
- * consisting of the user data, a timestamp, and the sender's network
- * address.
-#ifndef NOENCRYTION
- * The packet is encrypted by pcbc_encrypt(), using the given
- * "key" and "schedule".
-#endif
- * The length of the resulting packet "out" is
- * returned.
- *
- * It is similar to krb_mk_safe() except for the additional key
- * schedule argument "schedule" and the fact that the data is encrypted
- * rather than appended with a checksum. Also, the protocol version
- * number is "private_msg_ver", defined in krb_rd_priv.c, rather than
- * KRB_PROT_VERSION, defined in "krb.h".
- *
- * The "out" packet consists of:
- *
- * Size Variable Field
- * ---- -------- -----
- *
- * 1 byte private_msg_ver protocol version number
- * 1 byte AUTH_MSG_PRIVATE | message type plus local
- * HOST_BYTE_ORDER byte order in low bit
- *
- * 4 bytes c_length length of data
-#ifndef NOENCRYPT
- * we encrypt from here with pcbc_encrypt
-#endif
- *
- * 4 bytes length length of user data
- * length in user data
- * 1 byte msg_time_5ms timestamp milliseconds
- * 4 bytes sender->sin.addr.s_addr sender's IP address
- *
- * 4 bytes msg_time_sec or timestamp seconds with
- * -msg_time_sec direction in sign bit
- *
- * 0<=n<=7 bytes pad to 8 byte multiple zeroes
- */
-
-long krb_mk_priv(in,out,length,schedule,key,sender,receiver)
- u_char *in; /* application data */
- u_char *out; /* put msg here, leave room for
- * header! breaks if in and out
- * (header stuff) overlap */
- u_long length; /* of in data */
- Key_schedule schedule; /* precomputed key schedule */
- C_Block key; /* encryption key for seed and ivec */
- struct sockaddr_in *sender; /* sender address */
- struct sockaddr_in *receiver; /* receiver address */
-{
- register u_char *p,*q;
- static u_char *c_length_ptr;
- extern int private_msg_ver; /* in krb_rd_priv.c */
-
- /*
- * get the current time to use instead of a sequence #, since
- * process lifetime may be shorter than the lifetime of a session
- * key.
- */
- if (gettimeofday(&msg_time,(struct timezone *)0)) {
- return -1;
- }
- msg_time_sec = (long) msg_time.tv_sec;
- msg_time_5ms = msg_time.tv_usec/5000; /* 5ms quanta */
-
- p = out;
-
- *p++ = private_msg_ver;
- *p++ = AUTH_MSG_PRIVATE | HOST_BYTE_ORDER;
-
- /* calculate cipher length */
- c_length_ptr = p;
- p += sizeof(c_length);
-
- q = p;
-
- /* stuff input length */
- bcopy((char *)&length,(char *)p,sizeof(length));
- p += sizeof(length);
-
-#ifdef NOENCRYPTION
- /* make all the stuff contiguous for checksum */
-#else
- /* make all the stuff contiguous for checksum and encryption */
-#endif
- bcopy((char *)in,(char *)p,(int) length);
- p += length;
-
- /* stuff time 5ms */
- bcopy((char *)&msg_time_5ms,(char *)p,sizeof(msg_time_5ms));
- p += sizeof(msg_time_5ms);
-
- /* stuff source address */
- bcopy((char *)&sender->sin_addr.s_addr,(char *)p,
- sizeof(sender->sin_addr.s_addr));
- p += sizeof(sender->sin_addr.s_addr);
-
- /*
- * direction bit is the sign bit of the timestamp. Ok
- * until 2038??
- */
- /* For compatibility with broken old code, compares are done in VAX
- byte order (LSBFIRST) */
- if (lsb_net_ulong_less(sender->sin_addr.s_addr, /* src < recv */
- receiver->sin_addr.s_addr)==-1)
- msg_time_sec = -msg_time_sec;
- else if (lsb_net_ulong_less(sender->sin_addr.s_addr,
- receiver->sin_addr.s_addr)==0)
- if (lsb_net_ushort_less(sender->sin_port,receiver->sin_port) == -1)
- msg_time_sec = -msg_time_sec;
- /* stuff time sec */
- bcopy((char *)&msg_time_sec,(char *)p,sizeof(msg_time_sec));
- p += sizeof(msg_time_sec);
-
- /*
- * All that for one tiny bit! Heaven help those that talk to
- * themselves.
- */
-
-#ifdef notdef
- /*
- * calculate the checksum of the length, address, sequence, and
- * inp data
- */
- cksum = quad_cksum(q,NULL,p-q,0,key);
- if (krb_debug)
- printf("\ncksum = %u",cksum);
- /* stuff checksum */
- bcopy((char *) &cksum,(char *) p,sizeof(cksum));
- p += sizeof(cksum);
-#endif
-
- /*
- * All the data have been assembled, compute length
- */
-
- c_length = p - q;
- c_length = ((c_length + sizeof(C_Block) -1)/sizeof(C_Block)) *
- sizeof(C_Block);
- /* stuff the length */
- bcopy((char *) &c_length,(char *)c_length_ptr,sizeof(c_length));
-
-#ifndef NOENCRYPTION
- pcbc_encrypt((C_Block *)q,(C_Block *)q,(long)(p-q),schedule,(C_Block *)key,
- ENCRYPT);
-#endif /* NOENCRYPTION */
-
- return (q - out + c_length); /* resulting size */
-}
diff --git a/eBones/lib/libkrb/mk_req.c b/eBones/lib/libkrb/mk_req.c
deleted file mode 100644
index a27c1c0d556b..000000000000
--- a/eBones/lib/libkrb/mk_req.c
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: der: mk_req.c,v 4.17 89/07/07 15:20:35 jtkohl Exp $
- * $Id: mk_req.c,v 1.3 1995/07/18 16:39:15 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char *rcsid =
-"$Id: mk_req.c,v 1.3 1995/07/18 16:39:15 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <krb.h>
-#include <prot.h>
-#include <des.h>
-#include <sys/time.h>
-#include <strings.h>
-
-extern int krb_ap_req_debug;
-static struct timeval tv_local = { 0, 0 };
-static int lifetime = DEFAULT_TKT_LIFE;
-
-/*
- * krb_mk_req takes a text structure in which an authenticator is to
- * be built, the name of a service, an instance, a realm,
- * and a checksum. It then retrieves a ticket for
- * the desired service and creates an authenticator in the text
- * structure passed as the first argument. krb_mk_req returns
- * KSUCCESS on success and a Kerberos error code on failure.
- *
- * The peer procedure on the other end is krb_rd_req. When making
- * any changes to this routine it is important to make corresponding
- * changes to krb_rd_req.
- *
- * The authenticator consists of the following:
- *
- * authent->dat
- *
- * unsigned char KRB_PROT_VERSION protocol version no.
- * unsigned char AUTH_MSG_APPL_REQUEST message type
- * (least significant
- * bit of above) HOST_BYTE_ORDER local byte ordering
- * unsigned char kvno from ticket server's key version
- * string realm server's realm
- * unsigned char tl ticket length
- * unsigned char idl request id length
- * text ticket->dat ticket for server
- * text req_id->dat request id
- *
- * The ticket information is retrieved from the ticket cache or
- * fetched from Kerberos. The request id (called the "authenticator"
- * in the papers on Kerberos) contains the following:
- *
- * req_id->dat
- *
- * string cr.pname {name, instance, and
- * string cr.pinst realm of principal
- * string myrealm making this request}
- * 4 bytes checksum checksum argument given
- * unsigned char tv_local.tf_usec time (milliseconds)
- * 4 bytes tv_local.tv_sec time (seconds)
- *
- * req_id->length = 3 strings + 3 terminating nulls + 5 bytes for time,
- * all rounded up to multiple of 8.
- */
-
-int
-krb_mk_req(authent,service,instance,realm,checksum)
- register KTEXT authent; /* Place to build the authenticator */
- char *service; /* Name of the service */
- char *instance; /* Service instance */
- char *realm; /* Authentication domain of service */
- long checksum; /* Checksum of data (optional) */
-{
- static KTEXT_ST req_st; /* Temp storage for req id */
- register KTEXT req_id = &req_st;
- unsigned char *v = authent->dat; /* Prot version number */
- unsigned char *t = (authent->dat+1); /* Message type */
- unsigned char *kv = (authent->dat+2); /* Key version no */
- unsigned char *tl = (authent->dat+4+strlen(realm)); /* Tkt len */
- unsigned char *idl = (authent->dat+5+strlen(realm)); /* Reqid len */
- CREDENTIALS cr; /* Credentials used by retr */
- register KTEXT ticket = &(cr.ticket_st); /* Pointer to tkt_st */
- int retval; /* Returned by krb_get_cred */
- static Key_schedule key_s;
- char myrealm[REALM_SZ];
-
- /* The fixed parts of the authenticator */
- *v = (unsigned char) KRB_PROT_VERSION;
- *t = (unsigned char) AUTH_MSG_APPL_REQUEST;
- *t |= HOST_BYTE_ORDER;
-
- /* Get the ticket and move it into the authenticator */
- if (krb_ap_req_debug)
- printf("Realm: %s\n",realm);
- /*
- * Determine realm of these tickets. We will send this to the
- * KDC from which we are requesting tickets so it knows what to
- * with our session key.
- */
- if ((retval = krb_get_tf_realm(TKT_FILE, myrealm)) != KSUCCESS)
- return(retval);
-
- retval = krb_get_cred(service,instance,realm,&cr);
-
- if (retval == RET_NOTKT) {
- if ((retval = get_ad_tkt(service,instance,realm,lifetime)))
- return(retval);
- if ((retval = krb_get_cred(service,instance,realm,&cr)))
- return(retval);
- }
-
- if (retval != KSUCCESS) return (retval);
-
- if (krb_ap_req_debug)
- printf("%s %s %s %s %s\n", service, instance, realm,
- cr.pname, cr.pinst);
- *kv = (unsigned char) cr.kvno;
- (void) strcpy((char *)(authent->dat+3),realm);
- *tl = (unsigned char) ticket->length;
- bcopy((char *)(ticket->dat),(char *)(authent->dat+6+strlen(realm)),
- ticket->length);
- authent->length = 6 + strlen(realm) + ticket->length;
- if (krb_ap_req_debug)
- printf("Ticket->length = %d\n",ticket->length);
- if (krb_ap_req_debug)
- printf("Issue date: %ld\n",cr.issue_date);
-
- /* Build request id */
- (void) strcpy((char *)(req_id->dat),cr.pname); /* Auth name */
- req_id->length = strlen(cr.pname)+1;
- /* Principal's instance */
- (void) strcpy((char *)(req_id->dat+req_id->length),cr.pinst);
- req_id->length += strlen(cr.pinst)+1;
- /* Authentication domain */
- (void) strcpy((char *)(req_id->dat+req_id->length),myrealm);
- req_id->length += strlen(myrealm)+1;
- /* Checksum */
- bcopy((char *)&checksum,(char *)(req_id->dat+req_id->length),4);
- req_id->length += 4;
-
- /* Fill in the times on the request id */
- (void) gettimeofday(&tv_local,(struct timezone *) 0);
- *(req_id->dat+(req_id->length)++) =
- (unsigned char) tv_local.tv_usec;
- /* Time (coarse) */
- bcopy((char *)&(tv_local.tv_sec),
- (char *)(req_id->dat+req_id->length), 4);
- req_id->length += 4;
-
- /* Fill to a multiple of 8 bytes for DES */
- req_id->length = ((req_id->length+7)/8)*8;
-
-#ifndef NOENCRYPTION
- key_sched((C_Block *)cr.session,key_s);
- pcbc_encrypt((C_Block *)req_id->dat,(C_Block *)req_id->dat,
- (long)req_id->length,key_s,(C_Block *)cr.session,ENCRYPT);
- bzero((char *) key_s, sizeof(key_s));
-#endif /* NOENCRYPTION */
-
- /* Copy it into the authenticator */
- bcopy((char *)(req_id->dat),(char *)(authent->dat+authent->length),
- req_id->length);
- authent->length += req_id->length;
- /* And set the id length */
- *idl = (unsigned char) req_id->length;
- /* clean up */
- bzero((char *)req_id, sizeof(*req_id));
-
- if (krb_ap_req_debug)
- printf("Authent->length = %d\n",authent->length);
- if (krb_ap_req_debug)
- printf("idl = %d, tl = %d\n",(int) *idl, (int) *tl);
-
- return(KSUCCESS);
-}
-
-/*
- * krb_set_lifetime sets the default lifetime for additional tickets
- * obtained via krb_mk_req().
- *
- * It returns the previous value of the default lifetime.
- */
-
-int
-krb_set_lifetime(newval)
-int newval;
-{
- int olife = lifetime;
-
- lifetime = newval;
- return(olife);
-}
diff --git a/eBones/lib/libkrb/mk_safe.c b/eBones/lib/libkrb/mk_safe.c
deleted file mode 100644
index e5490bcd2e9b..000000000000
--- a/eBones/lib/libkrb/mk_safe.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * Copyright 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * This routine constructs a Kerberos 'safe msg', i.e. authenticated
- * using a private session key to seed a checksum. Msg is NOT
- * encrypted.
- *
- * Note-- bcopy is used to avoid alignment problems on IBM RT
- *
- * Returns either <0 ===> error, or resulting size of message
- *
- * Steve Miller Project Athena MIT/DEC
- *
- * from: mk_safe.c,v 4.12 89/03/22 14:50:49 jtkohl Exp $
- * $Id: mk_safe.c,v 1.3 1995/07/18 16:39:17 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: mk_safe.c,v 1.3 1995/07/18 16:39:17 mark Exp $";
-#endif /* lint */
-#endif
-
-/* system include files */
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <netinet/in.h>
-#include <sys/time.h>
-
-/* application include files */
-#include <des.h>
-#include <krb.h>
-#include <prot.h>
-#include "lsb_addr_comp.h"
-
-extern char *errmsg();
-extern int errno;
-extern int krb_debug;
-
-/* static storage */
-
-static u_long cksum;
-static C_Block big_cksum[2];
-static struct timeval msg_time;
-static u_char msg_time_5ms;
-static long msg_time_sec;
-
-/*
- * krb_mk_safe() constructs an AUTH_MSG_SAFE message. It takes some
- * user data "in" of "length" bytes and creates a packet in "out"
- * consisting of the user data, a timestamp, and the sender's network
- * address, followed by a checksum computed on the above, using the
- * given "key". The length of the resulting packet is returned.
- *
- * The "out" packet consists of:
- *
- * Size Variable Field
- * ---- -------- -----
- *
- * 1 byte KRB_PROT_VERSION protocol version number
- * 1 byte AUTH_MSG_SAFE | message type plus local
- * HOST_BYTE_ORDER byte order in low bit
- *
- * ===================== begin checksum ================================
- *
- * 4 bytes length length of user data
- * length in user data
- * 1 byte msg_time_5ms timestamp milliseconds
- * 4 bytes sender->sin.addr.s_addr sender's IP address
- *
- * 4 bytes msg_time_sec or timestamp seconds with
- * -msg_time_sec direction in sign bit
- *
- * ======================= end checksum ================================
- *
- * 16 bytes big_cksum quadratic checksum of
- * above using "key"
- */
-
-long krb_mk_safe(in,out,length,key,sender,receiver)
- u_char *in; /* application data */
- u_char *out; /*
- * put msg here, leave room for header!
- * breaks if in and out (header stuff)
- * overlap
- */
- u_long length; /* of in data */
- C_Block *key; /* encryption key for seed and ivec */
- struct sockaddr_in *sender; /* sender address */
- struct sockaddr_in *receiver; /* receiver address */
-{
- register u_char *p,*q;
-
- /*
- * get the current time to use instead of a sequence #, since
- * process lifetime may be shorter than the lifetime of a session
- * key.
- */
- if (gettimeofday(&msg_time,(struct timezone *)0)) {
- return -1;
- }
- msg_time_sec = (long) msg_time.tv_sec;
- msg_time_5ms = msg_time.tv_usec/5000; /* 5ms quanta */
-
- p = out;
-
- *p++ = KRB_PROT_VERSION;
- *p++ = AUTH_MSG_SAFE | HOST_BYTE_ORDER;
-
- q = p; /* start for checksum stuff */
- /* stuff input length */
- bcopy((char *)&length,(char *)p,sizeof(length));
- p += sizeof(length);
-
- /* make all the stuff contiguous for checksum */
- bcopy((char *)in,(char *)p,(int) length);
- p += length;
-
- /* stuff time 5ms */
- bcopy((char *)&msg_time_5ms,(char *)p,sizeof(msg_time_5ms));
- p += sizeof(msg_time_5ms);
-
- /* stuff source address */
- bcopy((char *) &sender->sin_addr.s_addr,(char *)p,
- sizeof(sender->sin_addr.s_addr));
- p += sizeof(sender->sin_addr.s_addr);
-
- /*
- * direction bit is the sign bit of the timestamp. Ok until
- * 2038??
- */
- /* For compatibility with broken old code, compares are done in VAX
- byte order (LSBFIRST) */
- if (lsb_net_ulong_less(sender->sin_addr.s_addr, /* src < recv */
- receiver->sin_addr.s_addr)==-1)
- msg_time_sec = -msg_time_sec;
- else if (lsb_net_ulong_less(sender->sin_addr.s_addr,
- receiver->sin_addr.s_addr)==0)
- if (lsb_net_ushort_less(sender->sin_port,receiver->sin_port) == -1)
- msg_time_sec = -msg_time_sec;
- /*
- * all that for one tiny bit! Heaven help those that talk to
- * themselves.
- */
-
- /* stuff time sec */
- bcopy((char *)&msg_time_sec,(char *)p,sizeof(msg_time_sec));
- p += sizeof(msg_time_sec);
-
-#ifdef NOENCRYPTION
- cksum = 0;
- bzero(big_cksum, sizeof(big_cksum));
-#else
- cksum=quad_cksum((C_Block *)q,big_cksum,p-q,2,key);
-#endif
- if (krb_debug)
- printf("\ncksum = %lu",cksum);
-
- /* stuff checksum */
- bcopy((char *)big_cksum,(char *)p,sizeof(big_cksum));
- p += sizeof(big_cksum);
-
- return ((long)(p - out)); /* resulting size */
-
-}
diff --git a/eBones/lib/libkrb/month_sname.c b/eBones/lib/libkrb/month_sname.c
deleted file mode 100644
index f4ef33994bc9..000000000000
--- a/eBones/lib/libkrb/month_sname.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: month_sname.c,v 4.4 88/11/15 16:39:32 jtkohl Exp $
- * $Id: month_sname.c,v 1.3 1995/07/18 16:39:19 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char *rcsid =
-"$Id: month_sname.c,v 1.3 1995/07/18 16:39:19 mark Exp $";
-#endif /* lint */
-#endif
-
-
-/*
- * Given an integer 1-12, month_sname() returns a string
- * containing the first three letters of the corresponding
- * month. Returns 0 if the argument is out of range.
- */
-
-char *month_sname(n)
- int n;
-{
- static char *name[] = {
- "Jan","Feb","Mar","Apr","May","Jun",
- "Jul","Aug","Sep","Oct","Nov","Dec"
- };
- return((n < 1 || n > 12) ? 0 : name [n-1]);
-}
diff --git a/eBones/lib/libkrb/netread.c b/eBones/lib/libkrb/netread.c
deleted file mode 100644
index 628004e25185..000000000000
--- a/eBones/lib/libkrb/netread.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright 1987, 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: netread.c,v 4.1 88/11/15 16:47:21 jtkohl Exp $
- * $Id: netread.c,v 1.3 1995/07/18 16:39:20 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: netread.c,v 1.3 1995/07/18 16:39:20 mark Exp $";
-#endif lint
-#endif
-
-#include <unistd.h>
-
-/*
- * krb_net_read() reads from the file descriptor "fd" to the buffer
- * "buf", until either 1) "len" bytes have been read or 2) cannot
- * read anymore from "fd". It returns the number of bytes read
- * or a read() error. (The calling interface is identical to
- * read(2).)
- *
- * XXX must not use non-blocking I/O
- */
-
-int
-krb_net_read(fd, buf, len)
-int fd;
-register char *buf;
-register int len;
-{
- int cc, len2 = 0;
-
- do {
- cc = read(fd, buf, len);
- if (cc < 0)
- return(cc); /* errno is already set */
- else if (cc == 0) {
- return(len2);
- } else {
- buf += cc;
- len2 += cc;
- len -= cc;
- }
- } while (len > 0);
- return(len2);
-}
diff --git a/eBones/lib/libkrb/netwrite.c b/eBones/lib/libkrb/netwrite.c
deleted file mode 100644
index f85f7ba5efd7..000000000000
--- a/eBones/lib/libkrb/netwrite.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright 1987, 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: netwrite.c,v 4.1 88/11/15 16:48:58 jtkohl Exp $";
- * $Id: netwrite.c,v 1.3 1995/07/18 16:39:22 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: netwrite.c,v 1.3 1995/07/18 16:39:22 mark Exp $";
-#endif lint
-#endif
-
-#include <unistd.h>
-
-/*
- * krb_net_write() writes "len" bytes from "buf" to the file
- * descriptor "fd". It returns the number of bytes written or
- * a write() error. (The calling interface is identical to
- * write(2).)
- *
- * XXX must not use non-blocking I/O
- */
-
-int
-krb_net_write(fd, buf, len)
-int fd;
-register char *buf;
-int len;
-{
- int cc;
- register int wrlen = len;
- do {
- cc = write(fd, buf, wrlen);
- if (cc < 0)
- return(cc);
- else {
- buf += cc;
- wrlen -= cc;
- }
- } while (wrlen > 0);
- return(len);
-}
diff --git a/eBones/lib/libkrb/one.c b/eBones/lib/libkrb/one.c
deleted file mode 100644
index ef02ae1c878a..000000000000
--- a/eBones/lib/libkrb/one.c
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * form: one.c,v 4.1 88/11/15 16:51:41 jtkohl Exp $
- * $Id: one.c,v 1.3 1995/07/18 16:39:24 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: one.c,v 1.3 1995/07/18 16:39:24 mark Exp $";
-#endif lint
-#endif
-
-/*
- * definition of variable set to 1.
- * used in krb_conf.h to determine host byte order.
- */
-
-int krbONE = 1;
diff --git a/eBones/lib/libkrb/pkt_cipher.c b/eBones/lib/libkrb/pkt_cipher.c
deleted file mode 100644
index 9c32b72b0fe9..000000000000
--- a/eBones/lib/libkrb/pkt_cipher.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: pkt_cipher.c,v 4.8 89/01/13 17:46:14 steiner Exp $
- * $Id: pkt_cipher.c,v 1.3 1995/07/18 16:39:25 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char *rcsid =
-"$Id: pkt_cipher.c,v 1.3 1995/07/18 16:39:25 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <krb.h>
-#include <prot.h>
-
-
-/*
- * This routine takes a reply packet from the Kerberos ticket-granting
- * service and returns a pointer to the beginning of the ciphertext in it.
- *
- * See "prot.h" for packet format.
- */
-
-KTEXT
-pkt_cipher(packet)
- KTEXT packet;
-{
- unsigned char *ptr = pkt_a_realm(packet) + 6
- + strlen((char *)pkt_a_realm(packet));
- /* Skip a few more fields */
- ptr += 3 + 4; /* add 4 for exp_date */
-
- /* And return the pointer */
- return((KTEXT) ptr);
-}
diff --git a/eBones/lib/libkrb/pkt_clen.c b/eBones/lib/libkrb/pkt_clen.c
deleted file mode 100644
index f8dacae34faa..000000000000
--- a/eBones/lib/libkrb/pkt_clen.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: pkt_clen.c,v 4.7 88/11/15 16:56:36 jtkohl Exp $
- * $Id: pkt_clen.c,v 1.3 1995/07/18 16:39:27 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char *rcsid =
-"$Id: pkt_clen.c,v 1.3 1995/07/18 16:39:27 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <string.h>
-
-#include <krb.h>
-#include <prot.h>
-
-extern int krb_debug;
-extern int swap_bytes;
-
-/*
- * Given a pointer to an AUTH_MSG_KDC_REPLY packet, return the length of
- * its ciphertext portion. The external variable "swap_bytes" is assumed
- * to have been set to indicate whether or not the packet is in local
- * byte order. pkt_clen() takes this into account when reading the
- * ciphertext length out of the packet.
- */
-
-int
-pkt_clen(pkt)
- KTEXT pkt;
-{
- static unsigned short temp,temp2;
- int clen = 0;
-
- /* Start of ticket list */
- unsigned char *ptr = pkt_a_realm(pkt) + 10
- + strlen((char *)pkt_a_realm(pkt));
-
- /* Finally the length */
- bcopy((char *)(++ptr),(char *)&temp,2); /* alignment */
- if (swap_bytes) {
- /* assume a short is 2 bytes?? */
- swab((char *)&temp,(char *)&temp2,2);
- temp = temp2;
- }
-
- clen = (int) temp;
-
- if (krb_debug)
- printf("Clen is %d\n",clen);
- return(clen);
-}
diff --git a/eBones/lib/libkrb/rd_err.c b/eBones/lib/libkrb/rd_err.c
deleted file mode 100644
index e46dc6678f0d..000000000000
--- a/eBones/lib/libkrb/rd_err.c
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * This routine dissects a a Kerberos 'safe msg',
- * checking its integrity, and returning a pointer to the application
- * data contained and its length.
- *
- * Returns 0 (RD_AP_OK) for success or an error code (RD_AP_...)
- *
- * Steve Miller Project Athena MIT/DEC
- *
- * from: rd_err.c,v 4.5 89/01/13 17:26:38 steiner Exp $
- * $Id: rd_err.c,v 1.3 1995/07/18 16:39:29 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: rd_err.c,v 1.3 1995/07/18 16:39:29 mark Exp $";
-#endif /* lint */
-#endif
-
-/* system include files */
-#include <string.h>
-#include <stdio.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <netinet/in.h>
-#include <sys/time.h>
-
-/* application include files */
-#include <krb.h>
-#include <prot.h>
-
-/*
- * Given an AUTH_MSG_APPL_ERR message, "in" and its length "in_length",
- * return the error code from the message in "code" and the text in
- * "m_data" as follows:
- *
- * m_data->app_data points to the error text
- * m_data->app_length points to the length of the error text
- *
- * If all goes well, return RD_AP_OK. If the version number
- * is wrong, return RD_AP_VERSION, and if it's not an AUTH_MSG_APPL_ERR
- * type message, return RD_AP_MSG_TYPE.
- *
- * The AUTH_MSG_APPL_ERR message format can be found in mk_err.c
- */
-
-int
-krb_rd_err(in,in_length,code,m_data)
- u_char *in; /* pointer to the msg received */
- u_long in_length; /* of in msg */
- long *code; /* received error code */
- MSG_DAT *m_data;
-{
- register u_char *p;
- int swap_bytes = 0;
- p = in; /* beginning of message */
-
- if (*p++ != KRB_PROT_VERSION)
- return(RD_AP_VERSION);
- if (((*p) & ~1) != AUTH_MSG_APPL_ERR)
- return(RD_AP_MSG_TYPE);
- if ((*p++ & 1) != HOST_BYTE_ORDER)
- swap_bytes++;
-
- /* safely get code */
- bcopy((char *)p,(char *)code,sizeof(*code));
- if (swap_bytes)
- swap_u_long(*code);
- p += sizeof(*code); /* skip over */
-
- m_data->app_data = p; /* we're now at the error text
- * message */
- m_data->app_length = in_length;
-
- return(RD_AP_OK); /* OK == 0 */
-}
diff --git a/eBones/lib/libkrb/rd_priv.c b/eBones/lib/libkrb/rd_priv.c
deleted file mode 100644
index 0c21a1d463b1..000000000000
--- a/eBones/lib/libkrb/rd_priv.c
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * Copyright 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * This routine dissects a a Kerberos 'private msg', decrypting it,
- * checking its integrity, and returning a pointer to the application
- * data contained and its length.
- *
- * Returns 0 (RD_AP_OK) for success or an error code (RD_AP_...). If
- * the return value is RD_AP_TIME, then either the times are too far
- * out of synch, OR the packet was modified.
- *
- * Steve Miller Project Athena MIT/DEC
- *
- * from: rd_priv.c,v 4.14 89/04/28 11:59:42 jtkohl Exp $
- * $Id: rd_priv.c,v 1.3 1995/07/18 16:39:31 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[]=
-"$Id: rd_priv.c,v 1.3 1995/07/18 16:39:31 mark Exp $";
-#endif /* lint */
-#endif
-
-/* system include files */
-#include <string.h>
-#include <stdio.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <netinet/in.h>
-#include <sys/time.h>
-
-/* application include files */
-#include <des.h>
-#include <krb.h>
-#include <prot.h>
-#include "lsb_addr_comp.h"
-
-extern int krb_debug;
-
-/* static storage */
-
-static u_long c_length;
-static int swap_bytes;
-static struct timeval local_time;
-static long delta_t;
-int private_msg_ver = KRB_PROT_VERSION;
-
-/*
-#ifdef NOENCRPYTION
- * krb_rd_priv() checks the integrity of an
-#else
- * krb_rd_priv() decrypts and checks the integrity of an
-#endif
- * AUTH_MSG_PRIVATE message. Given the message received, "in",
- * the length of that message, "in_length", the key "schedule"
- * and "key", and the network addresses of the
- * "sender" and "receiver" of the message, krb_rd_safe() returns
- * RD_AP_OK if the message is okay, otherwise some error code.
- *
- * The message data retrieved from "in" are returned in the structure
- * "m_data". The pointer to the application data
- * (m_data->app_data) refers back to the appropriate place in "in".
- *
- * See the file "mk_priv.c" for the format of the AUTH_MSG_PRIVATE
- * message. The structure containing the extracted message
- * information, MSG_DAT, is defined in "krb.h".
- */
-
-long
-krb_rd_priv(in,in_length,schedule,key,sender,receiver,m_data)
- u_char *in; /* pointer to the msg received */
- u_long in_length; /* length of "in" msg */
- Key_schedule schedule; /* precomputed key schedule */
- C_Block key; /* encryption key for seed and ivec */
- struct sockaddr_in *sender;
- struct sockaddr_in *receiver;
- MSG_DAT *m_data; /*various input/output data from msg */
-{
- register u_char *p,*q;
- static u_long src_addr; /* Can't send structs since no
- * guarantees on size */
-
- if (gettimeofday(&local_time,(struct timezone *)0))
- return -1;
-
- p = in; /* beginning of message */
- swap_bytes = 0;
-
- if (*p++ != KRB_PROT_VERSION && *(p-1) != 3)
- return RD_AP_VERSION;
- private_msg_ver = *(p-1);
- if (((*p) & ~1) != AUTH_MSG_PRIVATE)
- return RD_AP_MSG_TYPE;
- if ((*p++ & 1) != HOST_BYTE_ORDER)
- swap_bytes++;
-
- /* get cipher length */
- bcopy((char *)p,(char *)&c_length,sizeof(c_length));
- if (swap_bytes)
- swap_u_long(c_length);
- p += sizeof(c_length);
- /* check for rational length so we don't go comatose */
- if (VERSION_SZ + MSG_TYPE_SZ + c_length > in_length)
- return RD_AP_MODIFIED;
-
-
- q = p; /* mark start of encrypted stuff */
-
-#ifndef NOENCRYPTION
- pcbc_encrypt((C_Block *)q,(C_Block *)q,(long)c_length,schedule,
- (C_Block *)key,DECRYPT);
-#endif
-
- /* safely get application data length */
- bcopy((char *) p,(char *)&(m_data->app_length),
- sizeof(m_data->app_length));
- if (swap_bytes)
- swap_u_long(m_data->app_length);
- p += sizeof(m_data->app_length); /* skip over */
-
- if (m_data->app_length + sizeof(c_length) + sizeof(in_length) +
- sizeof(m_data->time_sec) + sizeof(m_data->time_5ms) +
- sizeof(src_addr) + VERSION_SZ + MSG_TYPE_SZ
- > in_length)
- return RD_AP_MODIFIED;
-
-#ifndef NOENCRYPTION
- /* we're now at the decrypted application data */
-#endif
- m_data->app_data = p;
-
- p += m_data->app_length;
-
- /* safely get time_5ms */
- bcopy((char *) p, (char *)&(m_data->time_5ms),
- sizeof(m_data->time_5ms));
- /* don't need to swap-- one byte for now */
- p += sizeof(m_data->time_5ms);
-
- /* safely get src address */
- bcopy((char *) p,(char *)&src_addr,sizeof(src_addr));
- /* don't swap, net order always */
- p += sizeof(src_addr);
-
- if (src_addr != (u_long) sender->sin_addr.s_addr)
- return RD_AP_MODIFIED;
-
- /* safely get time_sec */
- bcopy((char *) p, (char *)&(m_data->time_sec),
- sizeof(m_data->time_sec));
- if (swap_bytes) swap_u_long(m_data->time_sec);
-
- p += sizeof(m_data->time_sec);
-
- /* check direction bit is the sign bit */
- /* For compatibility with broken old code, compares are done in VAX
- byte order (LSBFIRST) */
- if (lsb_net_ulong_less(sender->sin_addr.s_addr,
- receiver->sin_addr.s_addr)==-1)
- /* src < recv */
- m_data->time_sec = - m_data->time_sec;
- else if (lsb_net_ulong_less(sender->sin_addr.s_addr,
- receiver->sin_addr.s_addr)==0)
- if (lsb_net_ushort_less(sender->sin_port,receiver->sin_port)==-1)
- /* src < recv */
- m_data->time_sec = - m_data->time_sec;
- /*
- * all that for one tiny bit!
- * Heaven help those that talk to themselves.
- */
-
- /* check the time integrity of the msg */
- delta_t = abs((int)((long) local_time.tv_sec
- - m_data->time_sec));
- if (delta_t > CLOCK_SKEW)
- return RD_AP_TIME;
- if (krb_debug)
- printf("\ndelta_t = %ld",delta_t);
-
- /*
- * caller must check timestamps for proper order and
- * replays, since server might have multiple clients
- * each with its own timestamps and we don't assume
- * tightly synchronized clocks.
- */
-
-#ifdef notdef
- bcopy((char *) p,(char *)&cksum,sizeof(cksum));
- if (swap_bytes) swap_u_long(cksum)
- /*
- * calculate the checksum of the length, sequence,
- * and input data, on the sending byte order!!
- */
- calc_cksum = quad_cksum(q,NULL,p-q,0,key);
-
- if (krb_debug)
- printf("\ncalc_cksum = %u, received cksum = %u",
- calc_cksum, cksum);
- if (cksum != calc_cksum)
- return RD_AP_MODIFIED;
-#endif
- return RD_AP_OK; /* OK == 0 */
-}
diff --git a/eBones/lib/libkrb/rd_req.c b/eBones/lib/libkrb/rd_req.c
deleted file mode 100644
index 60ee9483d30c..000000000000
--- a/eBones/lib/libkrb/rd_req.c
+++ /dev/null
@@ -1,331 +0,0 @@
-/*
- * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: der: rd_req.c,v 4.16 89/03/22 14:52:06 jtkohl Exp $
- * $Id: rd_req.c,v 1.3 1995/07/18 16:39:33 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char *rcsid =
-"$Id: rd_req.c,v 1.3 1995/07/18 16:39:33 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <des.h>
-#include <krb.h>
-#include <prot.h>
-#include <sys/time.h>
-#include <strings.h>
-
-extern int krb_ap_req_debug;
-
-static struct timeval t_local = { 0, 0 };
-
-/*
- * Keep the following information around for subsequent calls
- * to this routine by the same server using the same key.
- */
-
-static Key_schedule serv_key; /* Key sched to decrypt ticket */
-static C_Block ky; /* Initialization vector */
-static int st_kvno; /* version number for this key */
-static char st_rlm[REALM_SZ]; /* server's realm */
-static char st_nam[ANAME_SZ]; /* service name */
-static char st_inst[INST_SZ]; /* server's instance */
-
-/*
- * This file contains two functions. krb_set_key() takes a DES
- * key or password string and returns a DES key (either the original
- * key, or the password converted into a DES key) and a key schedule
- * for it.
- *
- * krb_rd_req() reads an authentication request and returns information
- * about the identity of the requestor, or an indication that the
- * identity information was not authentic.
- */
-
-/*
- * krb_set_key() takes as its first argument either a DES key or a
- * password string. The "cvt" argument indicates how the first
- * argument "key" is to be interpreted: if "cvt" is null, "key" is
- * taken to be a DES key; if "cvt" is non-null, "key" is taken to
- * be a password string, and is converted into a DES key using
- * string_to_key(). In either case, the resulting key is returned
- * in the external static variable "ky". A key schedule is
- * generated for "ky" and returned in the external static variable
- * "serv_key".
- *
- * This routine returns the return value of des_key_sched.
- *
- * krb_set_key() needs to be in the same .o file as krb_rd_req() so that
- * the key set by krb_set_key() is available in private storage for
- * krb_rd_req().
- */
-
-int
-krb_set_key(key,cvt)
- char *key;
- int cvt;
-{
-#ifdef NOENCRYPTION
- bzero(ky, sizeof(ky));
- return KSUCCESS;
-#else
- if (cvt)
- string_to_key(key,(C_Block *)ky);
- else
- bcopy(key,(char *)ky,8);
- return(des_key_sched((C_Block *)ky,serv_key));
-#endif
-}
-
-
-/*
- * krb_rd_req() takes an AUTH_MSG_APPL_REQUEST or
- * AUTH_MSG_APPL_REQUEST_MUTUAL message created by krb_mk_req(),
- * checks its integrity and returns a judgement as to the requestor's
- * identity.
- *
- * The "authent" argument is a pointer to the received message.
- * The "service" and "instance" arguments name the receiving server,
- * and are used to get the service's ticket to decrypt the ticket
- * in the message, and to compare against the server name inside the
- * ticket. "from_addr" is the network address of the host from which
- * the message was received; this is checked against the network
- * address in the ticket. If "from_addr" is zero, the check is not
- * performed. "ad" is an AUTH_DAT structure which is
- * filled in with information about the sender's identity according
- * to the authenticator and ticket sent in the message. Finally,
- * "fn" contains the name of the file containing the server's key.
- * (If "fn" is NULL, the server's key is assumed to have been set
- * by krb_set_key(). If "fn" is the null string ("") the default
- * file KEYFILE, defined in "krb.h", is used.)
- *
- * krb_rd_req() returns RD_AP_OK if the authentication information
- * was genuine, or one of the following error codes (defined in
- * "krb.h"):
- *
- * RD_AP_VERSION - wrong protocol version number
- * RD_AP_MSG_TYPE - wrong message type
- * RD_AP_UNDEC - couldn't decipher the message
- * RD_AP_INCON - inconsistencies found
- * RD_AP_BADD - wrong network address
- * RD_AP_TIME - client time (in authenticator)
- * too far off server time
- * RD_AP_NYV - Kerberos time (in ticket) too
- * far off server time
- * RD_AP_EXP - ticket expired
- *
- * For the message format, see krb_mk_req().
- *
- * Mutual authentication is not implemented.
- */
-
-int
-krb_rd_req(authent,service,instance,from_addr,ad,fn)
- register KTEXT authent; /* The received message */
- char *service; /* Service name */
- char *instance; /* Service instance */
- long from_addr; /* Net address of originating host */
- AUTH_DAT *ad; /* Structure to be filled in */
- char *fn; /* Filename to get keys from */
-{
- static KTEXT_ST ticket; /* Temp storage for ticket */
- static KTEXT tkt = &ticket;
- static KTEXT_ST req_id_st; /* Temp storage for authenticator */
- register KTEXT req_id = &req_id_st;
-
- char realm[REALM_SZ]; /* Realm of issuing kerberos */
- static Key_schedule seskey_sched; /* Key sched for session key */
- unsigned char skey[KKEY_SZ]; /* Session key from ticket */
- char sname[SNAME_SZ]; /* Service name from ticket */
- char iname[INST_SZ]; /* Instance name from ticket */
- char r_aname[ANAME_SZ]; /* Client name from authenticator */
- char r_inst[INST_SZ]; /* Client instance from authenticator */
- char r_realm[REALM_SZ]; /* Client realm from authenticator */
- unsigned int r_time_ms; /* Fine time from authenticator */
- unsigned long r_time_sec; /* Coarse time from authenticator */
- register char *ptr; /* For stepping through */
- unsigned long delta_t; /* Time in authenticator - local time */
- long tkt_age; /* Age of ticket */
- static int swap_bytes; /* Need to swap bytes? */
- static int mutual; /* Mutual authentication requested? */
- static unsigned char s_kvno;/* Version number of the server's key
- * Kerberos used to encrypt ticket */
- int status;
-
- if (authent->length <= 0)
- return(RD_AP_MODIFIED);
-
- ptr = (char *) authent->dat;
-
- /* get msg version, type and byte order, and server key version */
-
- /* check version */
- if (KRB_PROT_VERSION != (unsigned int) *ptr++)
- return(RD_AP_VERSION);
-
- /* byte order */
- swap_bytes = 0;
- if ((*ptr & 1) != HOST_BYTE_ORDER)
- swap_bytes++;
-
- /* check msg type */
- mutual = 0;
- switch (*ptr++ & ~1) {
- case AUTH_MSG_APPL_REQUEST:
- break;
- case AUTH_MSG_APPL_REQUEST_MUTUAL:
- mutual++;
- break;
- default:
- return(RD_AP_MSG_TYPE);
- }
-
-#ifdef lint
- /* XXX mutual is set but not used; why??? */
- /* this is a crock to get lint to shut up */
- if (mutual)
- mutual = 0;
-#endif /* lint */
- s_kvno = *ptr++; /* get server key version */
- (void) strcpy(realm,ptr); /* And the realm of the issuing KDC */
- ptr += strlen(ptr) + 1; /* skip the realm "hint" */
-
- /*
- * If "fn" is NULL, key info should already be set; don't
- * bother with ticket file. Otherwise, check to see if we
- * already have key info for the given server and key version
- * (saved in the static st_* variables). If not, go get it
- * from the ticket file. If "fn" is the null string, use the
- * default ticket file.
- */
- if (fn && (strcmp(st_nam,service) || strcmp(st_inst,instance) ||
- strcmp(st_rlm,realm) || (st_kvno != s_kvno))) {
- if (*fn == 0) fn = KEYFILE;
- st_kvno = s_kvno;
-#ifndef NOENCRYPTION
- if (read_service_key(service,instance,realm,s_kvno,fn,(char *)skey))
- return(RD_AP_UNDEC);
- if ((status=krb_set_key((char *)skey,0))) return(status);
-#endif
- (void) strcpy(st_rlm,realm);
- (void) strcpy(st_nam,service);
- (void) strcpy(st_inst,instance);
- }
-
- /* Get ticket from authenticator */
- tkt->length = (int) *ptr++;
- if ((tkt->length + (ptr+1 - (char *) authent->dat)) > authent->length)
- return(RD_AP_MODIFIED);
- bcopy(ptr+1,(char *)(tkt->dat),tkt->length);
-
- if (krb_ap_req_debug)
- log("ticket->length: %d",tkt->length);
-
-#ifndef NOENCRYPTION
- /* Decrypt and take apart ticket */
-#endif
-
- if (decomp_ticket(tkt,&ad->k_flags,ad->pname,ad->pinst,ad->prealm,
- &(ad->address),ad->session, &(ad->life),
- &(ad->time_sec),sname,iname,ky,serv_key))
- return(RD_AP_UNDEC);
-
- if (krb_ap_req_debug) {
- log("Ticket Contents.");
- log(" Aname: %s.%s",ad->pname,
- ((int)*(ad->prealm) ? ad->prealm : "Athena"));
- log(" Service: %s%s%s",sname,((int)*iname ? "." : ""),iname);
- }
-
- /* Extract the authenticator */
- req_id->length = (int) *(ptr++);
- if ((req_id->length + (ptr + tkt->length - (char *) authent->dat)) >
- authent->length)
- return(RD_AP_MODIFIED);
- bcopy(ptr + tkt->length, (char *)(req_id->dat),req_id->length);
-
-#ifndef NOENCRYPTION
- key_sched((C_Block *)ad->session,seskey_sched);
- pcbc_encrypt((C_Block *)req_id->dat,(C_Block *)req_id->dat,
- (long)req_id->length,seskey_sched,(C_Block *)ad->session,DES_DECRYPT);
-#endif /* NOENCRYPTION */
-
-#define check_ptr() if ((ptr - (char *) req_id->dat) > req_id->length) return(RD_AP_MODIFIED);
-
- ptr = (char *) req_id->dat;
- (void) strcpy(r_aname,ptr); /* Authentication name */
- ptr += strlen(r_aname)+1;
- check_ptr();
- (void) strcpy(r_inst,ptr); /* Authentication instance */
- ptr += strlen(r_inst)+1;
- check_ptr();
- (void) strcpy(r_realm,ptr); /* Authentication name */
- ptr += strlen(r_realm)+1;
- check_ptr();
- bcopy(ptr,(char *)&ad->checksum,4); /* Checksum */
- ptr += 4;
- check_ptr();
- if (swap_bytes) swap_u_long(ad->checksum);
- r_time_ms = *(ptr++); /* Time (fine) */
-#ifdef lint
- /* XXX r_time_ms is set but not used. why??? */
- /* this is a crock to get lint to shut up */
- if (r_time_ms)
- r_time_ms = 0;
-#endif /* lint */
- check_ptr();
- /* assume sizeof(r_time_sec) == 4 ?? */
- bcopy(ptr,(char *)&r_time_sec,4); /* Time (coarse) */
- if (swap_bytes) swap_u_long(r_time_sec);
-
- /* Check for authenticity of the request */
- if (krb_ap_req_debug)
- log("Pname: %s %s",ad->pname,r_aname);
- if (strcmp(ad->pname,r_aname) != 0)
- return(RD_AP_INCON);
- if (strcmp(ad->pinst,r_inst) != 0)
- return(RD_AP_INCON);
- if (krb_ap_req_debug)
- log("Realm: %s %s",ad->prealm,r_realm);
- if ((strcmp(ad->prealm,r_realm) != 0))
- return(RD_AP_INCON);
-
- if (krb_ap_req_debug)
- log("Address: %d %d",ad->address,from_addr);
- if (from_addr && (ad->address != from_addr))
- return(RD_AP_BADD);
-
- (void) gettimeofday(&t_local,(struct timezone *) 0);
- delta_t = abs((int)(t_local.tv_sec - r_time_sec));
- if (delta_t > CLOCK_SKEW) {
- if (krb_ap_req_debug)
- log("Time out of range: %d - %d = %d",
- t_local.tv_sec,r_time_sec,delta_t);
- return(RD_AP_TIME);
- }
-
- /* Now check for expiration of ticket */
-
- tkt_age = t_local.tv_sec - ad->time_sec;
- if (krb_ap_req_debug)
- log("Time: %d Issue Date: %d Diff: %d Life %x",
- t_local.tv_sec,ad->time_sec,tkt_age,ad->life);
-
- if (t_local.tv_sec < ad->time_sec) {
- if ((ad->time_sec - t_local.tv_sec) > CLOCK_SKEW)
- return(RD_AP_NYV);
- }
- else if ((t_local.tv_sec - ad->time_sec) > 5 * 60 * ad->life)
- return(RD_AP_EXP);
-
- /* All seems OK */
- ad->reply.length = 0;
-
- return(RD_AP_OK);
-}
diff --git a/eBones/lib/libkrb/rd_safe.c b/eBones/lib/libkrb/rd_safe.c
deleted file mode 100644
index 4d3e8d6735ae..000000000000
--- a/eBones/lib/libkrb/rd_safe.c
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * Copyright 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * This routine dissects a a Kerberos 'safe msg', checking its
- * integrity, and returning a pointer to the application data
- * contained and its length.
- *
- * Returns 0 (RD_AP_OK) for success or an error code (RD_AP_...)
- *
- * Steve Miller Project Athena MIT/DEC
- *
- * from: rd_safe.c,v 4.12 89/01/23 15:16:16 steiner Exp $
- * $Id: rd_safe.c,v 1.3 1995/07/18 16:39:34 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: rd_safe.c,v 1.3 1995/07/18 16:39:34 mark Exp $";
-#endif /* lint */
-#endif
-
-/* system include files */
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <netinet/in.h>
-#include <sys/time.h>
-
-/* application include files */
-#include <des.h>
-#include <krb.h>
-#include <prot.h>
-#include "lsb_addr_comp.h"
-
-extern char *errmsg();
-extern int errno;
-extern int krb_debug;
-
-/* static storage */
-
-static C_Block calc_cksum[2];
-static C_Block big_cksum[2];
-static int swap_bytes;
-static struct timeval local_time;
-static u_long delta_t;
-
-/*
- * krb_rd_safe() checks the integrity of an AUTH_MSG_SAFE message.
- * Given the message received, "in", the length of that message,
- * "in_length", the "key" to compute the checksum with, and the
- * network addresses of the "sender" and "receiver" of the message,
- * krb_rd_safe() returns RD_AP_OK if message is okay, otherwise
- * some error code.
- *
- * The message data retrieved from "in" is returned in the structure
- * "m_data". The pointer to the application data (m_data->app_data)
- * refers back to the appropriate place in "in".
- *
- * See the file "mk_safe.c" for the format of the AUTH_MSG_SAFE
- * message. The structure containing the extracted message
- * information, MSG_DAT, is defined in "krb.h".
- */
-
-long krb_rd_safe(in,in_length,key,sender,receiver,m_data)
- u_char *in; /* pointer to the msg received */
- u_long in_length; /* length of "in" msg */
- C_Block *key; /* encryption key for seed and ivec */
- struct sockaddr_in *sender; /* sender's address */
- struct sockaddr_in *receiver; /* receiver's address -- me */
- MSG_DAT *m_data; /* where to put message information */
-{
- register u_char *p,*q;
- static u_long src_addr; /* Can't send structs since no
- * guarantees on size */
- /* Be very conservative */
- if (sizeof(u_long) != sizeof(struct in_addr)) {
- fprintf(stderr,"\n\
-krb_rd_safe protocol err sizeof(u_long) != sizeof(struct in_addr)");
- exit(-1);
- }
-
- if (gettimeofday(&local_time,(struct timezone *)0))
- return -1;
-
- p = in; /* beginning of message */
- swap_bytes = 0;
-
- if (*p++ != KRB_PROT_VERSION) return RD_AP_VERSION;
- if (((*p) & ~1) != AUTH_MSG_SAFE) return RD_AP_MSG_TYPE;
- if ((*p++ & 1) != HOST_BYTE_ORDER) swap_bytes++;
-
- q = p; /* mark start of cksum stuff */
-
- /* safely get length */
- bcopy((char *)p,(char *)&(m_data->app_length),
- sizeof(m_data->app_length));
- if (swap_bytes) swap_u_long(m_data->app_length);
- p += sizeof(m_data->app_length); /* skip over */
-
- if (m_data->app_length + sizeof(in_length)
- + sizeof(m_data->time_sec) + sizeof(m_data->time_5ms)
- + sizeof(big_cksum) + sizeof(src_addr)
- + VERSION_SZ + MSG_TYPE_SZ > in_length)
- return(RD_AP_MODIFIED);
-
- m_data->app_data = p; /* we're now at the application data */
-
- /* skip app data */
- p += m_data->app_length;
-
- /* safely get time_5ms */
- bcopy((char *)p, (char *)&(m_data->time_5ms),
- sizeof(m_data->time_5ms));
-
- /* don't need to swap-- one byte for now */
- p += sizeof(m_data->time_5ms);
-
- /* safely get src address */
- bcopy((char *)p,(char *)&src_addr,sizeof(src_addr));
-
- /* don't swap, net order always */
- p += sizeof(src_addr);
-
- if (src_addr != (u_long) sender->sin_addr.s_addr)
- return RD_AP_MODIFIED;
-
- /* safely get time_sec */
- bcopy((char *)p, (char *)&(m_data->time_sec),
- sizeof(m_data->time_sec));
- if (swap_bytes)
- swap_u_long(m_data->time_sec);
- p += sizeof(m_data->time_sec);
-
- /* check direction bit is the sign bit */
- /* For compatibility with broken old code, compares are done in VAX
- byte order (LSBFIRST) */
- if (lsb_net_ulong_less(sender->sin_addr.s_addr,
- receiver->sin_addr.s_addr)==-1)
- /* src < recv */
- m_data->time_sec = - m_data->time_sec;
- else if (lsb_net_ulong_less(sender->sin_addr.s_addr,
- receiver->sin_addr.s_addr)==0)
- if (lsb_net_ushort_less(sender->sin_port,receiver->sin_port)==-1)
- /* src < recv */
- m_data->time_sec = - m_data->time_sec;
-
- /*
- * All that for one tiny bit! Heaven help those that talk to
- * themselves.
- */
-
- /* check the time integrity of the msg */
- delta_t = abs((int)((long) local_time.tv_sec - m_data->time_sec));
- if (delta_t > CLOCK_SKEW) return RD_AP_TIME;
-
- /*
- * caller must check timestamps for proper order and replays, since
- * server might have multiple clients each with its own timestamps
- * and we don't assume tightly synchronized clocks.
- */
-
- bcopy((char *)p,(char *)big_cksum,sizeof(big_cksum));
- if (swap_bytes) swap_u_16(big_cksum);
-
-#ifdef NOENCRYPTION
- bzero(calc_cksum, sizeof(calc_cksum));
-#else
- quad_cksum((C_Block *)q,calc_cksum,p-q,2,key);
-#endif
-
- if (krb_debug)
- printf("\ncalc_cksum = %lu, received cksum = %lu",
- (long) calc_cksum[0], (long) big_cksum[0]);
- if (bcmp((char *)big_cksum,(char *)calc_cksum,sizeof(big_cksum)))
- return(RD_AP_MODIFIED);
-
- return(RD_AP_OK); /* OK == 0 */
-}
diff --git a/eBones/lib/libkrb/read_service_key.c b/eBones/lib/libkrb/read_service_key.c
deleted file mode 100644
index 6064292d96cf..000000000000
--- a/eBones/lib/libkrb/read_service_key.c
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: _service_key.c,v 4.10 90/03/10 19:06:56 jon Exp $
- * $Id: read_service_key.c,v 1.3 1995/07/18 16:39:36 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char *rcsid =
-"$Id: read_service_key.c,v 1.3 1995/07/18 16:39:36 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <krb.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <strings.h>
-
-/*
- * The private keys for servers on a given host are stored in a
- * "srvtab" file (typically "/etc/srvtab"). This routine extracts
- * a given server's key from the file.
- *
- * read_service_key() takes the server's name ("service"), "instance",
- * and "realm" and a key version number "kvno", and looks in the given
- * "file" for the corresponding entry, and if found, returns the entry's
- * key field in "key".
- *
- * If "instance" contains the string "*", then it will match
- * any instance, and the chosen instance will be copied to that
- * string. For this reason it is important that the there is enough
- * space beyond the "*" to receive the entry.
- *
- * If "kvno" is 0, it is treated as a wild card and the first
- * matching entry regardless of the "vno" field is returned.
- *
- * This routine returns KSUCCESS on success, otherwise KFAILURE.
- *
- * The format of each "srvtab" entry is as follows:
- *
- * Size Variable Field in file
- * ---- -------- -------------
- * string serv server name
- * string inst server instance
- * string realm server realm
- * 1 byte vno server key version #
- * 8 bytes key server's key
- * ... ... ...
- */
-
-
-/*ARGSUSED */
-int
-read_service_key(service,instance,realm,kvno,file,key)
- char *service; /* Service Name */
- char *instance; /* Instance name or "*" */
- char *realm; /* Realm */
- int kvno; /* Key version number */
- char *file; /* Filename */
- char *key; /* Pointer to key to be filled in */
-{
- char serv[SNAME_SZ];
- char inst[INST_SZ];
- char rlm[REALM_SZ];
- unsigned char vno; /* Key version number */
- int wcard;
-
- int stab, open();
-
- if ((stab = open(file, 0, 0)) < NULL)
- return(KFAILURE);
-
- wcard = (instance[0] == '*') && (instance[1] == '\0');
-
- while(getst(stab,serv,SNAME_SZ) > 0) { /* Read sname */
- (void) getst(stab,inst,INST_SZ); /* Instance */
- (void) getst(stab,rlm,REALM_SZ); /* Realm */
- /* Vers number */
- if (read(stab,(char *)&vno,1) != 1) {
- close(stab);
- return(KFAILURE);
- }
- /* Key */
- if (read(stab,key,8) != 8) {
- close(stab);
- return(KFAILURE);
- }
- /* Is this the right service */
- if (strcmp(serv,service))
- continue;
- /* How about instance */
- if (!wcard && strcmp(inst,instance))
- continue;
- if (wcard)
- (void) strncpy(instance,inst,INST_SZ);
- /* Is this the right realm */
-#ifdef ATHENA_COMPAT
- /* XXX For backward compatibility: if keyfile says "Athena"
- and caller wants "ATHENA.MIT.EDU", call it a match */
- if (strcmp(rlm,realm) &&
- (strcmp(rlm,"Athena") ||
- strcmp(realm,"ATHENA.MIT.EDU")))
- continue;
-#else /* ! ATHENA_COMPAT */
- if (strcmp(rlm,realm))
- continue;
-#endif /* ATHENA_COMPAT */
-
- /* How about the key version number */
- if (kvno && kvno != (int) vno)
- continue;
-
- (void) close(stab);
- return(KSUCCESS);
- }
-
- /* Can't find the requested service */
- (void) close(stab);
- return(KFAILURE);
-}
diff --git a/eBones/lib/libkrb/recvauth.c b/eBones/lib/libkrb/recvauth.c
deleted file mode 100644
index 45d68ee75079..000000000000
--- a/eBones/lib/libkrb/recvauth.c
+++ /dev/null
@@ -1,290 +0,0 @@
-/*
- * Copyright 1987, 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: recvauth.c,v 4.4 90/03/10 19:03:08 jon Exp $";
- * $Id: recvauth.c,v 1.3 1995/07/18 16:39:38 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: recvauth.c,v 1.3 1995/07/18 16:39:38 mark Exp $";
-#endif lint
-#endif
-
-#include <krb.h>
-#include <sys/types.h>
-#include <netinet/in.h>
-#include <syslog.h>
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <strings.h>
-
-
-#define KRB_SENDAUTH_VERS "AUTHV0.1" /* MUST be KRB_SENDAUTH_VLEN
- chars */
-
-/*
- * If the protocol changes, you will need to change the version string
- * and make appropriate changes in krb_sendauth.c
- * be sure to support old versions of krb_sendauth!
- */
-
-extern int errno;
-
-/*
- * krb_recvauth() reads (and optionally responds to) a message sent
- * using krb_sendauth(). The "options" argument is a bit-field of
- * selected options (see "sendauth.c" for options description).
- * The only option relevant to krb_recvauth() is KOPT_DO_MUTUAL
- * (mutual authentication requested). The "fd" argument supplies
- * a file descriptor to read from (and write to, if mutual authenti-
- * cation is requested).
- *
- * Part of the received message will be a Kerberos ticket sent by the
- * client; this is read into the "ticket" argument. The "service" and
- * "instance" arguments supply the server's Kerberos name. If the
- * "instance" argument is the string "*", it is treated as a wild card
- * and filled in during the krb_rd_req() call (see read_service_key()).
- *
- * The "faddr" and "laddr" give the sending (client) and receiving
- * (local server) network addresses. ("laddr" may be left NULL unless
- * mutual authentication is requested, in which case it must be set.)
- *
- * The authentication information extracted from the message is returned
- * in "kdata". The "filename" argument indicates the file where the
- * server's key can be found. (It is passed on to krb_rd_req().) If
- * left null, the default "/etc/srvtab" will be used.
- *
- * If mutual authentication is requested, the session key schedule must
- * be computed in order to reply; this schedule is returned in the
- * "schedule" argument. A string containing the application version
- * number from the received message is returned in "version", which
- * should be large enough to hold a KRB_SENDAUTH_VLEN-character string.
- *
- * See krb_sendauth() for the format of the received client message.
- *
- * This routine supports another client format, for backward
- * compatibility, consisting of:
- *
- * Size Variable Field
- * ---- -------- -----
- *
- * string tmp_buf, tkt_len length of ticket, in
- * ascii
- *
- * char ' ' (space char) separator
- *
- * tkt_len ticket->dat the ticket
- *
- * This old-style version does not support mutual authentication.
- *
- * krb_recvauth() first reads the protocol version string from the
- * given file descriptor. If it doesn't match the current protocol
- * version (KRB_SENDAUTH_VERS), the old-style format is assumed. In
- * that case, the string of characters up to the first space is read
- * and interpreted as the ticket length, then the ticket is read.
- *
- * If the first string did match KRB_SENDAUTH_VERS, krb_recvauth()
- * next reads the application protocol version string. Then the
- * ticket length and ticket itself are read.
- *
- * The ticket is decrypted and checked by the call to krb_rd_req().
- * If no mutual authentication is required, the result of the
- * krb_rd_req() call is retured by this routine. If mutual authenti-
- * cation is required, a message in the following format is returned
- * on "fd":
- *
- * Size Variable Field
- * ---- -------- -----
- *
- * 4 bytes tkt_len length of ticket or -1
- * if error occurred
- *
- * priv_len tmp_buf "private" message created
- * by krb_mk_priv() which
- * contains the incremented
- * checksum sent by the client
- * encrypted in the session
- * key. (This field is not
- * present in case of error.)
- *
- * If all goes well, KSUCCESS is returned; otherwise KFAILURE or some
- * other error code is returned.
- */
-
-#ifndef max
-#define max(a,b) (((a) > (b)) ? (a) : (b))
-#endif /* max */
-
-int
-krb_recvauth(options, fd, ticket, service, instance, faddr, laddr, kdata,
- filename, schedule, version)
-long options; /* bit-pattern of options */
-int fd; /* file descr. to read from */
-KTEXT ticket; /* storage for client's ticket */
-char *service; /* service expected */
-char *instance; /* inst expected (may be filled in) */
-struct sockaddr_in *faddr; /* address of foreign host on fd */
-struct sockaddr_in *laddr; /* local address */
-AUTH_DAT *kdata; /* kerberos data (returned) */
-char *filename; /* name of file with service keys */
-Key_schedule schedule; /* key schedule (return) */
-char *version; /* version string (filled in) */
-{
-
- int i, cc, old_vers = 0;
- char krb_vers[KRB_SENDAUTH_VLEN + 1]; /* + 1 for the null terminator */
- char *cp;
- int rem;
- long tkt_len, priv_len;
- u_long cksum;
- u_char tmp_buf[MAX_KTXT_LEN+max(KRB_SENDAUTH_VLEN+1,21)];
-
- /* read the protocol version number */
- if (krb_net_read(fd, krb_vers, KRB_SENDAUTH_VLEN) !=
- KRB_SENDAUTH_VLEN)
- return(errno);
- krb_vers[KRB_SENDAUTH_VLEN] = '\0';
-
- /* check version string */
- if (strcmp(krb_vers,KRB_SENDAUTH_VERS)) {
- /* Assume the old version of sendkerberosdata: send ascii
- length, ' ', and ticket. */
- if (options & KOPT_DO_MUTUAL)
- return(KFAILURE); /* XXX can't do old style with mutual auth */
- old_vers = 1;
-
- /* copy what we have read into tmp_buf */
- (void) bcopy(krb_vers, (char *) tmp_buf, KRB_SENDAUTH_VLEN);
-
- /* search for space, and make it a null */
- for (i = 0; i < KRB_SENDAUTH_VLEN; i++)
- if (tmp_buf[i]== ' ') {
- tmp_buf[i] = '\0';
- /* point cp to the beginning of the real ticket */
- cp = (char *) &tmp_buf[i+1];
- break;
- }
-
- if (i == KRB_SENDAUTH_VLEN)
- /* didn't find the space, keep reading to find it */
- for (; i<20; i++) {
- if (read(fd, (char *)&tmp_buf[i], 1) != 1) {
- return(KFAILURE);
- }
- if (tmp_buf[i] == ' ') {
- tmp_buf[i] = '\0';
- /* point cp to the beginning of the real ticket */
- cp = (char *) &tmp_buf[i+1];
- break;
- }
- }
-
- tkt_len = (long) atoi((char *) tmp_buf);
-
- /* sanity check the length */
- if ((i==20)||(tkt_len<=0)||(tkt_len>MAX_KTXT_LEN))
- return(KFAILURE);
-
- if (i < KRB_SENDAUTH_VLEN) {
- /* since we already got the space, and part of the ticket,
- we read fewer bytes to get the rest of the ticket */
- if (krb_net_read(fd, (char *)(tmp_buf+KRB_SENDAUTH_VLEN),
- (int) (tkt_len - KRB_SENDAUTH_VLEN + 1 + i))
- != (int)(tkt_len - KRB_SENDAUTH_VLEN + 1 + i))
- return(errno);
- } else {
- if (krb_net_read(fd, (char *)(tmp_buf+i), (int)tkt_len) !=
- (int) tkt_len)
- return(errno);
- }
- ticket->length = tkt_len;
- /* copy the ticket into the struct */
- (void) bcopy(cp, (char *) ticket->dat, ticket->length);
-
- } else {
- /* read the application version string */
- if (krb_net_read(fd, version, KRB_SENDAUTH_VLEN) !=
- KRB_SENDAUTH_VLEN)
- return(errno);
- version[KRB_SENDAUTH_VLEN] = '\0';
-
- /* get the length of the ticket */
- if (krb_net_read(fd, (char *)&tkt_len, sizeof(tkt_len)) !=
- sizeof(tkt_len))
- return(errno);
-
- /* sanity check */
- ticket->length = ntohl((unsigned long)tkt_len);
- if ((ticket->length <= 0) || (ticket->length > MAX_KTXT_LEN)) {
- if (options & KOPT_DO_MUTUAL) {
- rem = KFAILURE;
- goto mutual_fail;
- } else
- return(KFAILURE); /* XXX there may still be junk on the fd? */
- }
-
- /* read the ticket */
- if (krb_net_read(fd, (char *) ticket->dat, ticket->length)
- != ticket->length)
- return(errno);
- }
- /*
- * now have the ticket. decrypt it to get the authenticated
- * data.
- */
- rem = krb_rd_req(ticket,service,instance,faddr->sin_addr.s_addr,
- kdata,filename);
-
- if (old_vers) return(rem); /* XXX can't do mutual with old client */
-
- /* if we are doing mutual auth, compose a response */
- if (options & KOPT_DO_MUTUAL) {
- if (rem != KSUCCESS)
- /* the krb_rd_req failed */
- goto mutual_fail;
-
- /* add one to the (formerly) sealed checksum, and re-seal it
- for return to the client */
- cksum = kdata->checksum + 1;
- cksum = htonl(cksum);
-#ifndef NOENCRYPTION
- key_sched((C_Block *)kdata->session,schedule);
-#endif
- priv_len = krb_mk_priv((unsigned char *)&cksum,
- tmp_buf,
- (unsigned long) sizeof(cksum),
- schedule,
- kdata->session,
- laddr,
- faddr);
- if (priv_len < 0) {
- /* re-sealing failed; notify the client */
- rem = KFAILURE; /* XXX */
-mutual_fail:
- priv_len = -1;
- tkt_len = htonl((unsigned long) priv_len);
- /* a length of -1 is interpreted as an authentication
- failure by the client */
- if ((cc = krb_net_write(fd, (char *)&tkt_len, sizeof(tkt_len)))
- != sizeof(tkt_len))
- return(cc);
- return(rem);
- } else {
- /* re-sealing succeeded, send the private message */
- tkt_len = htonl((unsigned long)priv_len);
- if ((cc = krb_net_write(fd, (char *)&tkt_len, sizeof(tkt_len)))
- != sizeof(tkt_len))
- return(cc);
- if ((cc = krb_net_write(fd, (char *)tmp_buf, (int) priv_len))
- != (int) priv_len)
- return(cc);
- }
- }
- return(rem);
-}
diff --git a/eBones/lib/libkrb/save_credentials.c b/eBones/lib/libkrb/save_credentials.c
deleted file mode 100644
index 268bb77a1c4d..000000000000
--- a/eBones/lib/libkrb/save_credentials.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: save_credentials.c,v 4.9 89/05/31 17:45:43 jtkohl Exp $
- * $Id: save_credentials.c,v 1.3 1995/07/18 16:39:40 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char *rcsid =
-"$Id: save_credentials.c,v 1.3 1995/07/18 16:39:40 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <stdio.h>
-#include <krb.h>
-
-/*
- * This routine takes a ticket and associated info and calls
- * tf_save_cred() to store them in the ticket cache. The peer
- * routine for extracting a ticket and associated info from the
- * ticket cache is krb_get_cred(). When changes are made to
- * this routine, the corresponding changes should be made
- * in krb_get_cred() as well.
- *
- * Returns KSUCCESS if all goes well, otherwise an error returned
- * by the tf_init() or tf_save_cred() routines.
- */
-
-int
-save_credentials(service, instance, realm, session, lifetime, kvno,
- ticket, issue_date)
- char *service; /* Service name */
- char *instance; /* Instance */
- char *realm; /* Auth domain */
- C_Block session; /* Session key */
- int lifetime; /* Lifetime */
- int kvno; /* Key version number */
- KTEXT ticket; /* The ticket itself */
- long issue_date; /* The issue time */
-{
- int tf_status; /* return values of the tf_util calls */
-
- /* Open and lock the ticket file for writing */
- if ((tf_status = tf_init(TKT_FILE, W_TKT_FIL)) != KSUCCESS)
- return(tf_status);
-
- /* Save credentials by appending to the ticket file */
- tf_status = tf_save_cred(service, instance, realm, session,
- lifetime, kvno, ticket, issue_date);
- (void) tf_close();
- return (tf_status);
-}
diff --git a/eBones/lib/libkrb/send_to_kdc.c b/eBones/lib/libkrb/send_to_kdc.c
deleted file mode 100644
index 521ba9a19cfd..000000000000
--- a/eBones/lib/libkrb/send_to_kdc.c
+++ /dev/null
@@ -1,391 +0,0 @@
-/*
- * Copyright 1987, 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: send_to_kdc.c,v 4.20 90/01/02 13:40:37 jtkohl Exp $
- * $Id: send_to_kdc.c,v 1.8 1995/09/14 20:58:35 gibbs Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid_send_to_kdc_c[] =
-"$Id: send_to_kdc.c,v 1.1 1994/03/21 17:35:39 piero Exp ";
-#endif /* lint */
-#endif
-
-#include <krb.h>
-#include <prot.h>
-
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <errno.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#ifdef lint
-#include <sys/uio.h> /* struct iovec to make lint happy */
-#endif /* lint */
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#include <strings.h>
-
-#define S_AD_SZ sizeof(struct sockaddr_in)
-
-extern int errno;
-extern int krb_debug;
-
-extern char *malloc(), *calloc(), *realloc();
-
-int krb_udp_port = 0;
-
-/* CLIENT_KRB_TIMEOUT indicates the time to wait before
- * retrying a server. It's defined in "krb.h".
- */
-static struct timeval timeout = { CLIENT_KRB_TIMEOUT, 0};
-static char *prog = "send_to_kdc";
-static send_recv();
-
-/*
- * This file contains two routines, send_to_kdc() and send_recv().
- * send_recv() is a static routine used by send_to_kdc().
- */
-
-/*
- * send_to_kdc() sends a message to the Kerberos authentication
- * server(s) in the given realm and returns the reply message.
- * The "pkt" argument points to the message to be sent to Kerberos;
- * the "rpkt" argument will be filled in with Kerberos' reply.
- * The "realm" argument indicates the realm of the Kerberos server(s)
- * to transact with. If the realm is null, the local realm is used.
- *
- * If more than one Kerberos server is known for a given realm,
- * different servers will be queried until one of them replies.
- * Several attempts (retries) are made for each server before
- * giving up entirely.
- *
- * If an answer was received from a Kerberos host, KSUCCESS is
- * returned. The following errors can be returned:
- *
- * SKDC_CANT - can't get local realm
- * - can't find "kerberos" in /etc/services database
- * - can't open socket
- * - can't bind socket
- * - all ports in use
- * - couldn't find any Kerberos host
- *
- * SKDC_RETRY - couldn't get an answer from any Kerberos server,
- * after several retries
- */
-
-int
-send_to_kdc(pkt,rpkt,realm)
- KTEXT pkt;
- KTEXT rpkt;
- char *realm;
-{
- int i, f;
- int no_host; /* was a kerberos host found? */
- int retry;
- int n_hosts;
- int retval;
- int addr_count;
- struct sockaddr_in to;
- struct hostent *host, *hostlist;
- char krbhst[MAX_HSTNM];
- char lrealm[REALM_SZ];
-
- /*
- * If "realm" is non-null, use that, otherwise get the
- * local realm.
- */
- if (realm)
- (void) strcpy(lrealm, realm);
- else
- if (krb_get_lrealm(lrealm,1)) {
- if (krb_debug)
- fprintf(stderr, "%s: can't get local realm\n", prog);
- return(SKDC_CANT);
- }
- if (krb_debug)
- printf("lrealm is %s\n", lrealm);
- if (krb_udp_port == 0) {
- register struct servent *sp;
- if ((sp = getservbyname("kerberos","udp")) == 0) {
- if (krb_debug)
- fprintf(stderr, "%s: Can't get kerberos/udp service\n",
- prog);
- return(SKDC_CANT);
- }
- krb_udp_port = sp->s_port;
- if (krb_debug)
- printf("krb_udp_port is %d\n", krb_udp_port);
- }
- bzero((char *)&to, S_AD_SZ);
- hostlist = (struct hostent *) malloc(sizeof(struct hostent));
- if (!hostlist)
- return (/*errno */SKDC_CANT);
- if ((f = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
- if (krb_debug)
- fprintf(stderr,"%s: Can't open socket\n", prog);
- return(SKDC_CANT);
- }
- /* from now on, exit through rtn label for cleanup */
-
- no_host = 1;
- /* get an initial allocation */
- n_hosts = 0;
- for (i = 1; krb_get_krbhst(krbhst, lrealm, i) == KSUCCESS; ++i) {
- if (krb_debug) {
- printf("Getting host entry for %s...",krbhst);
- (void) fflush(stdout);
- }
- host = gethostbyname(krbhst);
- if (krb_debug) {
- printf("%s.\n",
- host ? "Got it" : "Didn't get it");
- (void) fflush(stdout);
- }
- if (!host)
- continue;
- no_host = 0; /* found at least one */
- n_hosts++;
- /*
- * Preserve host network addresses to check against later
- */
- hostlist = (struct hostent *)
- realloc((char *)hostlist,
- (unsigned)
- sizeof(struct hostent)*(n_hosts+1));
- if (!hostlist) {
- fprintf(stderr, "Could not grow hostlist\n");
- return /*errno */SKDC_CANT;
- }
- bcopy((char *)host, (char *)&hostlist[n_hosts-1],
- sizeof(struct hostent));
- host = &hostlist[n_hosts-1];
-/* At least Sun OS version 3.2 (or worse) and Ultrix version 2.2
- (or worse) only return one address ... */
-#if (defined(ULTRIX022) || (defined(SunOS) && SunOS < 40))
- {
- char *cp = malloc((unsigned)host->h_length);
- if (!cp) {
- retval = /*errno */SKDC_CANT;
- goto rtn;
- }
- bcopy((char *)host->h_addr, cp, host->h_length);
- host->h_addr = cp;
- }
-#else /* !(ULTRIX022 || (SunOS < 40)) */
- /*
- * Make a copy of the entire h_addr_list.
- */
- {
- char *addr;
- char **old_addr_list;
- addr_count = 0;
- old_addr_list = host->h_addr_list;
- while(old_addr_list[addr_count++])
- ;
- host->h_addr_list = (char **)malloc(addr_count+1 * sizeof(char *));
- if (host->h_addr_list == NULL) {
- fprintf(stderr, "Could not allocate host->h_addr_list\n");
- retval = SKDC_CANT;
- goto rtn;
- }
- if (krb_debug) {
- printf("h_length = %d\n", host->h_length);
- printf("Number of addresses = %d\n", addr_count);
- }
- for (addr_count = 0; old_addr_list[addr_count]; addr_count++) {
- if (krb_debug)
- printf ("addr[%d] = %s\n", addr_count,
- inet_ntoa(*(struct in_addr *)old_addr_list[addr_count]));
- addr = (char *)malloc(host->h_length);
- if (addr == NULL) {
- fprintf(stderr, "Could not allocate address\n");
- retval = SKDC_CANT;
- goto rtn;
- }
- bcopy(old_addr_list[addr_count], addr, host->h_length);
- host->h_addr_list[addr_count] = addr;
- }
- host->h_addr_list[addr_count] = NULL;
- }
-#endif /* !(ULTRIX022 || (SunOS < 40)) */
-
- bzero((char *)&hostlist[n_hosts],
- sizeof(struct hostent));
- to.sin_family = host->h_addrtype;
- bcopy(host->h_addr, (char *)&to.sin_addr,
- host->h_length);
- to.sin_port = krb_udp_port;
- if (send_recv(pkt, rpkt, f, &to, hostlist)) {
- retval = KSUCCESS;
- goto rtn;
- }
- if (krb_debug) {
- printf("Timeout, error, or wrong descriptor\n");
- (void) fflush(stdout);
- }
- }
- if (no_host) {
- if (krb_debug)
- fprintf(stderr, "%s: can't find any Kerberos host.\n", prog);
- retval = SKDC_CANT;
- goto rtn;
- }
- /*
- * retry each host in sequence. Some addresses may be unreachable
- * from where we are, so loop through them as well.
- */
- for (retry = 0; retry < CLIENT_KRB_RETRY; ++retry) {
- for (host = hostlist; host->h_name != (char *)NULL; host++) {
-#if (defined(ULTRIX022) || (defined(SunOS) && SunOS < 40))
- to.sin_family = host->h_addrtype;
- bcopy(host->h_addr_list[addr_count], (char *)&to.sin_addr,
- host->h_length);
- if (send_recv(pkt, rpkt, f, &to, hostlist)) {
- retval = KSUCCESS;
- goto rtn;
- }
-#else /* !(ULTRIX022 || (SunOS < 40)) */
- for (addr_count = 0; host->h_addr_list[addr_count]; addr_count++) {
- to.sin_family = host->h_addrtype;
- bcopy(host->h_addr_list[addr_count], (char *)&to.sin_addr,
- host->h_length);
- if (send_recv(pkt, rpkt, f, &to, hostlist)) {
- retval = KSUCCESS;
- goto rtn;
- }
- }
-#endif /* !(ULTRIX022 || (SunOS < 40)) */
- }
- }
- retval = SKDC_RETRY;
-rtn:
- (void) close(f);
- if (hostlist) {
- if(!no_host) {
- register struct hostent *hp;
- for (hp = hostlist; hp->h_name; hp++)
-#if !(defined(ULTRIX022) || (defined(SunOS) && SunOS < 40))
- if (hp->h_addr_list) {
-#endif /* ULTRIX022 || SunOS */
- if (hp->h_addr)
- free(hp->h_addr);
-#if !(defined(ULTRIX022) || (defined(SunOS) && SunOS < 40))
- free((char *)hp->h_addr_list);
- }
-#endif /* ULTRIX022 || SunOS */
- }
- free((char *)hostlist);
- }
- return(retval);
-}
-
-/*
- * try to send out and receive message.
- * return 1 on success, 0 on failure
- */
-
-static int
-send_recv(pkt,rpkt,f,_to,addrs)
- KTEXT pkt;
- KTEXT rpkt;
- int f;
- struct sockaddr_in *_to;
- struct hostent *addrs;
-{
- fd_set readfds;
- register struct hostent *hp;
- struct sockaddr_in from;
- int sin_size;
- int numsent;
- int addr_count;
-
- if (krb_debug) {
- if (_to->sin_family == AF_INET)
- printf("Sending message to %s...",
- inet_ntoa(_to->sin_addr));
- else
- printf("Sending message...");
- (void) fflush(stdout);
- }
- if ((numsent = sendto(f,(char *)(pkt->dat), pkt->length, 0,
- (struct sockaddr *)_to,
- S_AD_SZ)) != pkt->length) {
- if (krb_debug)
- printf("sent only %d/%d\n",numsent, pkt->length);
- return 0;
- }
- if (krb_debug) {
- printf("Sent\nWaiting for reply...");
- (void) fflush(stdout);
- }
- FD_ZERO(&readfds);
- FD_SET(f, &readfds);
- errno = 0;
- /* select - either recv is ready, or timeout */
- /* see if timeout or error or wrong descriptor */
- if (select(f + 1, &readfds, (fd_set *)0, (fd_set *)0, &timeout) < 1
- || !FD_ISSET(f, &readfds)) {
- if (krb_debug) {
- fprintf(stderr, "select failed: readfds=%x",
- readfds);
- perror("");
- }
- return 0;
- }
- sin_size = sizeof(from);
- if (recvfrom(f, (char *)(rpkt->dat), sizeof(rpkt->dat), 0,
- (struct sockaddr *)&from, &sin_size)
- < 0) {
- if (krb_debug)
- perror("recvfrom");
- return 0;
- }
- if (krb_debug) {
- printf("received packet from %s\n", inet_ntoa(from.sin_addr));
- fflush(stdout);
- }
-/* At least Sun OS version 3.2 (or worse) and Ultrix version 2.2
- (or worse) only return one address ... */
-#if (defined(ULTRIX022) || (defined(SunOS) && SunOS < 40))
- for (hp = addrs; hp->h_name != (char *)NULL; hp++) {
- if (!bcmp(hp->h_addr, (char *)&from.sin_addr.s_addr,
- hp->h_length)) {
- if (krb_debug) {
- printf("Received it\n");
- (void) fflush(stdout);
- }
- return 1;
- }
- if (krb_debug)
- fprintf(stderr, "packet not from %s\n",
- inet_ntoa(*(struct in_addr *)hp->h_addr));
- }
-#else /* !(ULTRIX022 || (SunOS < 40)) */
- for (hp = addrs; hp->h_name != (char *)NULL; hp++) {
- for (addr_count = 0; hp->h_addr_list[addr_count]; addr_count++) {
- if (!bcmp(hp->h_addr_list[addr_count],
- (char *)&from.sin_addr.s_addr, hp->h_length)) {
- if (krb_debug) {
- printf("Received it\n");
- (void) fflush(stdout);
- }
- return 1;
- }
- if (krb_debug)
- fprintf(stderr, "packet not from %s\n",
- inet_ntoa(*(struct in_addr *)hp->h_addr_list[addr_count]));
- }
- }
-#endif /* !(ULTRIX022 || (SunOS < 40)) */
- if (krb_debug)
- fprintf(stderr, "%s: received packet from wrong host! (%s)\n",
- "send_to_kdc(send_rcv)", inet_ntoa(from.sin_addr));
- return 0;
-}
diff --git a/eBones/lib/libkrb/sendauth.c b/eBones/lib/libkrb/sendauth.c
deleted file mode 100644
index a1d79e772bc0..000000000000
--- a/eBones/lib/libkrb/sendauth.c
+++ /dev/null
@@ -1,259 +0,0 @@
-/*
- * Copyright 1987, 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: sendauth.c,v 4.6 90/03/10 23:18:28 jon Exp $
- * $Id: sendauth.c,v 1.3 1995/07/18 16:39:44 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: sendauth.c,v 1.3 1995/07/18 16:39:44 mark Exp $";
-#endif lint
-#endif
-
-#include <krb.h>
-#include <sys/types.h>
-#include <netinet/in.h>
-#include <syslog.h>
-#include <errno.h>
-#include <stdio.h>
-#include <strings.h>
-
-#define KRB_SENDAUTH_VERS "AUTHV0.1" /* MUST be KRB_SENDAUTH_VLEN chars */
-/*
- * If the protocol changes, you will need to change the version string
- * and make appropriate changes in krb_recvauth.c
- */
-
-extern int errno;
-
-extern char *krb_get_phost();
-
-/*
- * This file contains two routines: krb_sendauth() and krb_sendsrv().
- *
- * krb_sendauth() transmits a ticket over a file descriptor for a
- * desired service, instance, and realm, doing mutual authentication
- * with the server if desired.
- *
- * krb_sendsvc() sends a service name to a remote knetd server.
- */
-
-/*
- * The first argument to krb_sendauth() contains a bitfield of
- * options (the options are defined in "krb.h"):
- *
- * KOPT_DONT_CANON Don't canonicalize instance as a hostname.
- * (If this option is not chosen, krb_get_phost()
- * is called to canonicalize it.)
- *
- * KOPT_DONT_MK_REQ Don't request server ticket from Kerberos.
- * A ticket must be supplied in the "ticket"
- * argument.
- * (If this option is not chosen, and there
- * is no ticket for the given server in the
- * ticket cache, one will be fetched using
- * krb_mk_req() and returned in "ticket".)
- *
- * KOPT_DO_MUTUAL Do mutual authentication, requiring that the
- * receiving server return the checksum+1 encrypted
- * in the session key. The mutual authentication
- * is done using krb_mk_priv() on the other side
- * (see "recvauth.c") and krb_rd_priv() on this
- * side.
- *
- * The "fd" argument is a file descriptor to write to the remote
- * server on. The "ticket" argument is used to store the new ticket
- * from the krb_mk_req() call. If the KOPT_DONT_MK_REQ options is
- * chosen, the ticket must be supplied in the "ticket" argument.
- * The "service", "inst", and "realm" arguments identify the ticket.
- * If "realm" is null, the local realm is used.
- *
- * The following arguments are only needed if the KOPT_DO_MUTUAL option
- * is chosen:
- *
- * The "checksum" argument is a number that the server will add 1 to
- * to authenticate itself back to the client; the "msg_data" argument
- * holds the returned mutual-authentication message from the server
- * (i.e., the checksum+1); the "cred" structure is used to hold the
- * session key of the server, extracted from the ticket file, for use
- * in decrypting the mutual authentication message from the server;
- * and "schedule" holds the key schedule for that decryption. The
- * the local and server addresses are given in "laddr" and "faddr".
- *
- * The application protocol version number (of up to KRB_SENDAUTH_VLEN
- * characters) is passed in "version".
- *
- * If all goes well, KSUCCESS is returned, otherwise some error code.
- *
- * The format of the message sent to the server is:
- *
- * Size Variable Field
- * ---- -------- -----
- *
- * KRB_SENDAUTH_VLEN KRB_SENDAUTH_VER sendauth protocol
- * bytes version number
- *
- * KRB_SENDAUTH_VLEN version application protocol
- * bytes version number
- *
- * 4 bytes ticket->length length of ticket
- *
- * ticket->length ticket->dat ticket itself
- */
-
-/*
- * XXX: Note that krb_rd_priv() is coded in such a way that
- * "msg_data->app_data" will be pointing into "priv_buf", which
- * will disappear when krb_sendauth() returns.
- */
-
-int
-krb_sendauth(options, fd, ticket, service, inst, realm, checksum,
- msg_data, cred, schedule, laddr, faddr, version)
-long options; /* bit-pattern of options */
-int fd; /* file descriptor to write onto */
-KTEXT ticket; /* where to put ticket (return); or
- * supplied in case of KOPT_DONT_MK_REQ */
-char *service, *inst, *realm; /* service name, instance, realm */
-u_long checksum; /* checksum to include in request */
-MSG_DAT *msg_data; /* mutual auth MSG_DAT (return) */
-CREDENTIALS *cred; /* credentials (return) */
-Key_schedule schedule; /* key schedule (return) */
-struct sockaddr_in *laddr; /* local address */
-struct sockaddr_in *faddr; /* address of foreign host on fd */
-char *version; /* version string */
-{
- int rem, i, cc;
- char srv_inst[INST_SZ];
- char krb_realm[REALM_SZ];
- char buf[BUFSIZ];
- long tkt_len;
- u_char priv_buf[1024];
- u_long cksum;
-
- rem=KSUCCESS;
-
- /* get current realm if not passed in */
- if (!realm) {
- rem = krb_get_lrealm(krb_realm,1);
- if (rem != KSUCCESS)
- return(rem);
- realm = krb_realm;
- }
-
- /* copy instance into local storage, canonicalizing if desired */
- if (options & KOPT_DONT_CANON)
- (void) strncpy(srv_inst, inst, INST_SZ);
- else
- (void) strncpy(srv_inst, krb_get_phost(inst), INST_SZ);
-
- /* get the ticket if desired */
- if (!(options & KOPT_DONT_MK_REQ)) {
- rem = krb_mk_req(ticket, service, srv_inst, realm, checksum);
- if (rem != KSUCCESS)
- return(rem);
- }
-
-#ifdef ATHENA_COMPAT
- /* this is only for compatibility with old servers */
- if (options & KOPT_DO_OLDSTYLE) {
- (void) sprintf(buf,"%d ",ticket->length);
- (void) write(fd, buf, strlen(buf));
- (void) write(fd, (char *) ticket->dat, ticket->length);
- return(rem);
- }
-#endif ATHENA_COMPAT
- /* if mutual auth, get credentials so we have service session
- keys for decryption below */
- if (options & KOPT_DO_MUTUAL)
- if ((cc = krb_get_cred(service, srv_inst, realm, cred)))
- return(cc);
-
- /* zero the buffer */
- (void) bzero(buf, BUFSIZ);
-
- /* insert version strings */
- (void) strncpy(buf, KRB_SENDAUTH_VERS, KRB_SENDAUTH_VLEN);
- (void) strncpy(buf+KRB_SENDAUTH_VLEN, version, KRB_SENDAUTH_VLEN);
-
- /* increment past vers strings */
- i = 2*KRB_SENDAUTH_VLEN;
-
- /* put ticket length into buffer */
- tkt_len = htonl((unsigned long) ticket->length);
- (void) bcopy((char *) &tkt_len, buf+i, sizeof(tkt_len));
- i += sizeof(tkt_len);
-
- /* put ticket into buffer */
- (void) bcopy((char *) ticket->dat, buf+i, ticket->length);
- i += ticket->length;
-
- /* write the request to the server */
- if ((cc = krb_net_write(fd, buf, i)) != i)
- return(cc);
-
- /* mutual authentication, if desired */
- if (options & KOPT_DO_MUTUAL) {
- /* get the length of the reply */
- if (krb_net_read(fd, (char *) &tkt_len, sizeof(tkt_len)) !=
- sizeof(tkt_len))
- return(errno);
- tkt_len = ntohl((unsigned long)tkt_len);
-
- /* if the length is negative, the server failed to recognize us. */
- if ((tkt_len < 0) || (tkt_len > sizeof(priv_buf)))
- return(KFAILURE); /* XXX */
- /* read the reply... */
- if (krb_net_read(fd, (char *)priv_buf, (int) tkt_len) != (int) tkt_len)
- return(errno);
-
- /* ...and decrypt it */
-#ifndef NOENCRYPTION
- key_sched((C_Block *)cred->session,schedule);
-#endif
- if ((cc = krb_rd_priv(priv_buf,(unsigned long) tkt_len, schedule,
- cred->session, faddr, laddr, msg_data)))
- return(cc);
-
- /* fetch the (modified) checksum */
- (void) bcopy((char *)msg_data->app_data, (char *)&cksum,
- sizeof(cksum));
- cksum = ntohl(cksum);
-
- /* if it doesn't match, fail */
- if (cksum != checksum + 1)
- return(KFAILURE); /* XXX */
- }
- return(KSUCCESS);
-}
-
-#ifdef ATHENA_COMPAT
-/*
- * krb_sendsvc
- */
-
-int
-krb_sendsvc(fd, service)
-int fd;
-char *service;
-{
- /* write the service name length and then the service name to
- the fd */
- long serv_length;
- int cc;
-
- serv_length = htonl((unsigned long)strlen(service));
- if ((cc = krb_net_write(fd, (char *) &serv_length,
- sizeof(serv_length)))
- != sizeof(serv_length))
- return(cc);
- if ((cc = krb_net_write(fd, service, strlen(service)))
- != strlen(service))
- return(cc);
- return(KSUCCESS);
-}
-#endif ATHENA_COMPAT
diff --git a/eBones/lib/libkrb/stime.c b/eBones/lib/libkrb/stime.c
deleted file mode 100644
index 2da246319eb7..000000000000
--- a/eBones/lib/libkrb/stime.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: stime.c,v 4.5 88/11/15 16:58:05 jtkohl Exp $
- * $Id: stime.c,v 1.3 1995/07/18 16:39:46 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char *rcsid =
-"$Id: stime.c,v 1.3 1995/07/18 16:39:46 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <sys/time.h>
-#include <stdio.h> /* for sprintf() */
-
-/*
- * Given a pointer to a long containing the number of seconds
- * since the beginning of time (midnight 1 Jan 1970 GMT), return
- * a string containing the local time in the form:
- *
- * "25-Jan-88 10:17:56"
- */
-
-char *
-stime(t)
- long *t;
-{
- static char st_data[40];
- static char *st = st_data;
- struct tm *tm;
- char *month_sname();
-
- tm = localtime(t);
- (void) sprintf(st,"%2d-%s-%02d %02d:%02d:%02d",tm->tm_mday,
- month_sname(tm->tm_mon + 1),tm->tm_year,
- tm->tm_hour, tm->tm_min, tm->tm_sec);
- return st;
-}
diff --git a/eBones/lib/libkrb/tf_shm.c b/eBones/lib/libkrb/tf_shm.c
deleted file mode 100644
index 31894cb83983..000000000000
--- a/eBones/lib/libkrb/tf_shm.c
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * Shared memory segment functions for session keys. Derived from code
- * contributed by Dan Kolkowitz (kolk@jessica.stanford.edu).
- *
- * from: tf_shm.c,v 4.2 89/10/25 23:26:46 qjb Exp $
- * $Id: tf_shm.c,v 1.3 1995/07/18 16:39:48 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: tf_shm.c,v 1.3 1995/07/18 16:39:48 mark Exp $";
-#endif lint
-#endif
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/ipc.h>
-#include <sys/shm.h>
-#include <krb.h>
-#include <des.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-
-#define MAX_BUFF sizeof(des_cblock)*1000 /* room for 1k keys */
-
-extern int errno;
-extern int krb_debug;
-
-/*
- * krb_create_shmtkt:
- *
- * create a shared memory segment for session keys, leaving its id
- * in the specified filename.
- */
-
-int
-krb_shm_create(file_name)
-char *file_name;
-{
- int retval;
- int shmid;
- struct shmid_ds shm_buf;
- FILE *sfile;
- uid_t me, metoo, getuid(), geteuid();
-
- (void) krb_shm_dest(file_name); /* nuke it if it exists...
- this cleans up to make sure we
- don't slowly lose memory. */
-
- shmid = shmget((long)IPC_PRIVATE,MAX_BUFF, IPC_CREAT);
- if (shmid == -1) {
- if (krb_debug)
- perror("krb_shm_create shmget");
- return(KFAILURE); /* XXX */
- }
- me = getuid();
- metoo = geteuid();
- /*
- * now set up the buffer so that we can modify it
- */
- shm_buf.shm_perm.uid = me;
- shm_buf.shm_perm.gid = getgid();
- shm_buf.shm_perm.mode = 0600;
- if (shmctl(shmid,IPC_SET,&shm_buf) < 0) { /*can now map it */
- if (krb_debug)
- perror("krb_shm_create shmctl");
- (void) shmctl(shmid, IPC_RMID, 0);
- return(KFAILURE); /* XXX */
- }
- (void) shmctl(shmid, SHM_LOCK, 0); /* attempt to lock-in-core */
- /* arrange so the file is owned by the ruid
- (swap real & effective uid if necessary). */
- if (me != metoo) {
- if (setreuid(metoo, me) < 0) {
- /* can't switch??? barf! */
- if (krb_debug)
- perror("krb_shm_create: setreuid");
- (void) shmctl(shmid, IPC_RMID, 0);
- return(KFAILURE);
- } else
- if (krb_debug)
- printf("swapped UID's %d and %d\n",metoo,me);
- }
- if ((sfile = fopen(file_name,"w")) == 0) {
- if (krb_debug)
- perror("krb_shm_create file");
- (void) shmctl(shmid, IPC_RMID, 0);
- return(KFAILURE); /* XXX */
- }
- if (fchmod(fileno(sfile),0600) < 0) {
- if (krb_debug)
- perror("krb_shm_create fchmod");
- (void) shmctl(shmid, IPC_RMID, 0);
- return(KFAILURE); /* XXX */
- }
- if (me != metoo) {
- if (setreuid(me, metoo) < 0) {
- /* can't switch??? barf! */
- if (krb_debug)
- perror("krb_shm_create: setreuid2");
- (void) shmctl(shmid, IPC_RMID, 0);
- return(KFAILURE);
- } else
- if (krb_debug)
- printf("swapped UID's %d and %d\n",me,metoo);
- }
-
- (void) fprintf(sfile,"%d",shmid);
- (void) fflush(sfile);
- (void) fclose(sfile);
- return(KSUCCESS);
-}
-
-
-/*
- * krb_is_diskless:
- *
- * check / to see if file .diskless exists. If so it is diskless.
- * Do it this way now to avoid dependencies on a particular routine.
- * Choose root file system since that will be private to the client.
- */
-
-int krb_is_diskless()
-{
- struct stat buf;
- if (stat("/.diskless",&buf) < 0)
- return(0);
- else return(1);
-}
-
-/*
- * krb_shm_dest: destroy shared memory segment with session keys, and remove
- * file pointing to it.
- */
-
-int krb_shm_dest(file)
-char *file;
-{
- int shmid;
- FILE *sfile;
- struct stat st_buf;
-
- if (stat(file,&st_buf) == 0) {
- /* successful stat */
- if ((sfile = fopen(file,"r")) == 0) {
- if (krb_debug)
- perror("cannot open shared memory file");
- return(KFAILURE); /* XXX */
- }
- if (fscanf(sfile,"%d",&shmid) == 1) {
- if (shmctl(shmid,IPC_RMID,0) != 0) {
- if (krb_debug)
- perror("krb_shm_dest: cannot delete shm segment");
- (void) fclose(sfile);
- return(KFAILURE); /* XXX */
- }
- } else {
- if (krb_debug)
- fprintf(stderr, "bad format in shmid file\n");
- (void) fclose(sfile);
- return(KFAILURE); /* XXX */
- }
- (void) fclose(sfile);
- (void) unlink(file);
- return(KSUCCESS);
- } else
- return(RET_TKFIL); /* XXX */
-}
-
-
-
diff --git a/eBones/lib/libkrb/tf_util.3 b/eBones/lib/libkrb/tf_util.3
deleted file mode 100644
index ee6e43689329..000000000000
--- a/eBones/lib/libkrb/tf_util.3
+++ /dev/null
@@ -1,151 +0,0 @@
-.\" from: tf_util.3,v 4.2 89/04/25 17:17:11 jtkohl Exp $
-.\" $Id: tf_util.3,v 1.1.1.1 1994/09/30 14:50:08 csgr Exp $
-.\" Copyright 1989 by the Massachusetts Institute of Technology.
-.\"
-.\" For copying and distribution information,
-.\" please see the file <Copyright.MIT>.
-.\"
-.TH TF_UTIL 3 "Kerberos Version 4.0" "MIT Project Athena"
-.SH NAME
-tf_init, tf_get_pname, tf_get_pinst, tf_get_cred, tf_close \
-\- Routines for manipulating a Kerberos ticket file
-.SH SYNOPSIS
-.nf
-.nj
-.ft B
-#include <kerberosIV/krb.h>
-.PP
-.ft B
-extern char *krb_err_txt[];
-.PP
-.ft B
-tf_init(tf_name, rw)
-char *tf_name;
-int rw;
-.PP
-.ft B
-tf_get_pname(pname)
-char *pname;
-.PP
-.ft B
-tf_get_pinst(pinst)
-char *pinst;
-.PP
-.ft B
-tf_get_cred(c)
-CREDENTIALS *c;
-.PP
-.ft B
-tf_close()
-.PP
-.fi
-.SH DESCRIPTION
-This group of routines are provided to manipulate the Kerberos tickets
-file. A ticket file has the following format:
-.nf
-.in +4
-.sp
-principal's name (null-terminated string)
-principal's instance (null-terminated string)
-CREDENTIAL_1
-CREDENTIAL_2
- ...
-CREDENTIAL_n
-EOF
-.sp
-.in -4
-.LP
-Where "CREDENTIAL_x" consists of the following fixed-length
-fields from the CREDENTIALS structure (defined in <krb.h>):
-.nf
-.sp
-.in +4
- char service[ANAME_SZ]
- char instance[INST_SZ]
- char realm[REALM_SZ]
- des_cblock session
- int lifetime
- int kvno
- KTEXT_ST ticket_st
- long issue_date
-.in -4
-.sp
-.fi
-.PP
-.I tf_init
-must be called before the other ticket file
-routines.
-It takes the name of the ticket file to use,
-and a read/write flag as arguments.
-It tries to open the ticket file, checks the mode and if
-everything is okay, locks the file. If it's opened for
-reading, the lock is shared. If it's opened for writing,
-the lock is exclusive.
-KSUCCESS is returned if all went well, otherwise one of the
-following:
-.nf
-.sp
-NO_TKT_FIL - file wasn't there
-TKT_FIL_ACC - file was in wrong mode, etc.
-TKT_FIL_LCK - couldn't lock the file, even after a retry
-.sp
-.fi
-.PP
-The
-.I tf_get_pname
-reads the principal's name from a ticket file.
-It should only be called after tf_init has been called. The
-principal's name is filled into the
-.I pname
-parameter. If all goes
-well, KSUCCESS is returned.
-If tf_init wasn't called, TKT_FIL_INI
-is returned.
-If the principal's name was null, or EOF was encountered, or the
-name was longer than ANAME_SZ, TKT_FIL_FMT is returned.
-.PP
-The
-.I tf_get_pinst
-reads the principal's instance from a ticket file.
-It should only be called after tf_init and tf_get_pname
-have been called.
-The principal's instance is filled into the
-.I pinst
-parameter.
-If all goes
-well, KSUCCESS is returned.
-If tf_init wasn't called, TKT_FIL_INI
-is returned.
-If EOF was encountered, or the
-name was longer than INST_SZ, TKT_FIL_FMT is returned.
-Note that, unlike the principal name, the instance name may be null.
-.PP
-The
-.I tf_get_cred
-routine reads a CREDENTIALS record from a ticket file and
-fills in the given structure.
-It should only be called after
-tf_init, tf_get_pname, and tf_get_pinst have been called.
-If all goes well, KSUCCESS is returned. Possible error codes
-are:
-.nf
-.sp
-TKT_FIL_INI - tf_init wasn't called first
-TKT_FIL_FMT - bad format
-EOF - end of file encountered
-.sp
-.fi
-.PP
-.I tf_close
-closes the ticket file and releases the lock on it.
-.SH "SEE ALSO"
-krb(3)
-.SH DIAGNOSTICS
-.SH BUGS
-The ticket file routines have to be called in a certain order.
-.SH AUTHORS
-Jennifer Steiner, MIT Project Athena
-.br
-Bill Bryant, MIT Project Athena
-.SH RESTRICTIONS
-Copyright 1987 Massachusetts Institute of Technology
diff --git a/eBones/lib/libkrb/tf_util.c b/eBones/lib/libkrb/tf_util.c
deleted file mode 100644
index e939c38e9da8..000000000000
--- a/eBones/lib/libkrb/tf_util.c
+++ /dev/null
@@ -1,581 +0,0 @@
-/*
- * Copyright 1987, 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: tf_util.c,v 4.9 90/03/10 19:19:45 jon Exp $
- * $Id: tf_util.c,v 1.3 1995/07/18 16:39:50 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: tf_util.c,v 1.3 1995/07/18 16:39:50 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <unistd.h>
-#include <string.h>
-#include <stdio.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/file.h>
-#include <krb.h>
-
-#ifdef TKT_SHMEM
-#include <sys/param.h>
-#include <sys/ipc.h>
-#include <sys/shm.h>
-#endif /* TKT_SHMEM */
-
-#define TOO_BIG -1
-#define TF_LCK_RETRY ((unsigned)2) /* seconds to sleep before
- * retry if ticket file is
- * locked */
-extern int krb_debug;
-
-#ifdef TKT_SHMEM
-char *krb_shm_addr = 0;
-static char *tmp_shm_addr = 0;
-static char krb_dummy_skey[8] = {0,0,0,0,0,0,0,0};
-
-#endif /* TKT_SHMEM */
-
-/*
- * fd must be initialized to something that won't ever occur as a real
- * file descriptor. Since open(2) returns only non-negative numbers as
- * valid file descriptors, and tf_init always stuffs the return value
- * from open in here even if it is an error flag, we must
- * a. Initialize fd to a negative number, to indicate that it is
- * not initially valid.
- * b. When checking for a valid fd, assume that negative values
- * are invalid (ie. when deciding whether tf_init has been
- * called.)
- * c. In tf_close, be sure it gets reinitialized to a negative
- * number.
- */
-static fd = -1;
-static curpos; /* Position in tfbfr */
-static lastpos; /* End of tfbfr */
-static char tfbfr[BUFSIZ]; /* Buffer for ticket data */
-
-static int tf_read(char *s, int n);
-static int tf_gets(char *s, int n);
-
-/*
- * This file contains routines for manipulating the ticket cache file.
- *
- * The ticket file is in the following format:
- *
- * principal's name (null-terminated string)
- * principal's instance (null-terminated string)
- * CREDENTIAL_1
- * CREDENTIAL_2
- * ...
- * CREDENTIAL_n
- * EOF
- *
- * Where "CREDENTIAL_x" consists of the following fixed-length
- * fields from the CREDENTIALS structure (see "krb.h"):
- *
- * char service[ANAME_SZ]
- * char instance[INST_SZ]
- * char realm[REALM_SZ]
- * C_Block session
- * int lifetime
- * int kvno
- * KTEXT_ST ticket_st
- * long issue_date
- *
- * Short description of routines:
- *
- * tf_init() opens the ticket file and locks it.
- *
- * tf_get_pname() returns the principal's name.
- *
- * tf_get_pinst() returns the principal's instance (may be null).
- *
- * tf_get_cred() returns the next CREDENTIALS record.
- *
- * tf_save_cred() appends a new CREDENTIAL record to the ticket file.
- *
- * tf_close() closes the ticket file and releases the lock.
- *
- * tf_gets() returns the next null-terminated string. It's an internal
- * routine used by tf_get_pname(), tf_get_pinst(), and tf_get_cred().
- *
- * tf_read() reads a given number of bytes. It's an internal routine
- * used by tf_get_cred().
- */
-
-/*
- * tf_init() should be called before the other ticket file routines.
- * It takes the name of the ticket file to use, "tf_name", and a
- * read/write flag "rw" as arguments.
- *
- * It tries to open the ticket file, checks the mode, and if everything
- * is okay, locks the file. If it's opened for reading, the lock is
- * shared. If it's opened for writing, the lock is exclusive.
- *
- * Returns KSUCCESS if all went well, otherwise one of the following:
- *
- * NO_TKT_FIL - file wasn't there
- * TKT_FIL_ACC - file was in wrong mode, etc.
- * TKT_FIL_LCK - couldn't lock the file, even after a retry
- */
-
-int
-tf_init(tf_name, rw)
- char *tf_name;
- int rw;
-{
- int wflag;
- uid_t me, getuid();
- struct stat stat_buf;
-#ifdef TKT_SHMEM
- char shmidname[MAXPATHLEN];
- FILE *sfp;
- int shmid;
-#endif
-
- switch (rw) {
- case R_TKT_FIL:
- wflag = 0;
- break;
- case W_TKT_FIL:
- wflag = 1;
- break;
- default:
- if (krb_debug) fprintf(stderr, "tf_init: illegal parameter\n");
- return TKT_FIL_ACC;
- }
- if (lstat(tf_name, &stat_buf) < 0)
- switch (errno) {
- case ENOENT:
- return NO_TKT_FIL;
- default:
- return TKT_FIL_ACC;
- }
- me = getuid();
- if ((stat_buf.st_uid != me && me != 0) ||
- ((stat_buf.st_mode & S_IFMT) != S_IFREG))
- return TKT_FIL_ACC;
-#ifdef TKT_SHMEM
- (void) strcpy(shmidname, tf_name);
- (void) strcat(shmidname, ".shm");
- if (stat(shmidname,&stat_buf) < 0)
- return(TKT_FIL_ACC);
- if ((stat_buf.st_uid != me && me != 0) ||
- ((stat_buf.st_mode & S_IFMT) != S_IFREG))
- return TKT_FIL_ACC;
-#endif /* TKT_SHMEM */
-
- /*
- * If "wflag" is set, open the ticket file in append-writeonly mode
- * and lock the ticket file in exclusive mode. If unable to lock
- * the file, sleep and try again. If we fail again, return with the
- * proper error message.
- */
-
- curpos = sizeof(tfbfr);
-
-#ifdef TKT_SHMEM
- sfp = fopen(shmidname, "r"); /* only need read/write on the
- actual tickets */
- if (sfp == 0)
- return TKT_FIL_ACC;
- shmid = -1;
- {
- char buf[BUFSIZ];
- int val; /* useful for debugging fscanf */
- /* We provide our own buffer here since some STDIO libraries
- barf on unbuffered input with fscanf() */
-
- setbuf(sfp, buf);
- if ((val = fscanf(sfp,"%d",&shmid)) != 1) {
- (void) fclose(sfp);
- return TKT_FIL_ACC;
- }
- if (shmid < 0) {
- (void) fclose(sfp);
- return TKT_FIL_ACC;
- }
- (void) fclose(sfp);
- }
- /*
- * global krb_shm_addr is initialized to 0. Ultrix bombs when you try and
- * attach the same segment twice so we need this check.
- */
- if (!krb_shm_addr) {
- if ((krb_shm_addr = shmat(shmid,0,0)) == -1){
- if (krb_debug)
- fprintf(stderr,
- "cannot attach shared memory for segment %d\n",
- shmid);
- krb_shm_addr = 0; /* reset so we catch further errors */
- return TKT_FIL_ACC;
- }
- }
- tmp_shm_addr = krb_shm_addr;
-#endif /* TKT_SHMEM */
-
- if (wflag) {
- fd = open(tf_name, O_RDWR, 0600);
- if (fd < 0) {
- return TKT_FIL_ACC;
- }
- if (flock(fd, LOCK_EX | LOCK_NB) < 0) {
- sleep(TF_LCK_RETRY);
- if (flock(fd, LOCK_EX | LOCK_NB) < 0) {
- (void) close(fd);
- fd = -1;
- return TKT_FIL_LCK;
- }
- }
- return KSUCCESS;
- }
- /*
- * Otherwise "wflag" is not set and the ticket file should be opened
- * for read-only operations and locked for shared access.
- */
-
- fd = open(tf_name, O_RDONLY, 0600);
- if (fd < 0) {
- return TKT_FIL_ACC;
- }
- if (flock(fd, LOCK_SH | LOCK_NB) < 0) {
- sleep(TF_LCK_RETRY);
- if (flock(fd, LOCK_SH | LOCK_NB) < 0) {
- (void) close(fd);
- fd = -1;
- return TKT_FIL_LCK;
- }
- }
- return KSUCCESS;
-}
-
-/*
- * tf_get_pname() reads the principal's name from the ticket file. It
- * should only be called after tf_init() has been called. The
- * principal's name is filled into the "p" parameter. If all goes well,
- * KSUCCESS is returned. If tf_init() wasn't called, TKT_FIL_INI is
- * returned. If the name was null, or EOF was encountered, or the name
- * was longer than ANAME_SZ, TKT_FIL_FMT is returned.
- */
-
-int
-tf_get_pname(p)
- char *p;
-{
- if (fd < 0) {
- if (krb_debug)
- fprintf(stderr, "tf_get_pname called before tf_init.\n");
- return TKT_FIL_INI;
- }
- if (tf_gets(p, ANAME_SZ) < 2) /* can't be just a null */
- return TKT_FIL_FMT;
- return KSUCCESS;
-}
-
-/*
- * tf_get_pinst() reads the principal's instance from a ticket file.
- * It should only be called after tf_init() and tf_get_pname() have been
- * called. The instance is filled into the "inst" parameter. If all
- * goes well, KSUCCESS is returned. If tf_init() wasn't called,
- * TKT_FIL_INI is returned. If EOF was encountered, or the instance
- * was longer than ANAME_SZ, TKT_FIL_FMT is returned. Note that the
- * instance may be null.
- */
-
-int
-tf_get_pinst(inst)
- char *inst;
-{
- if (fd < 0) {
- if (krb_debug)
- fprintf(stderr, "tf_get_pinst called before tf_init.\n");
- return TKT_FIL_INI;
- }
- if (tf_gets(inst, INST_SZ) < 1)
- return TKT_FIL_FMT;
- return KSUCCESS;
-}
-
-/*
- * tf_get_cred() reads a CREDENTIALS record from a ticket file and fills
- * in the given structure "c". It should only be called after tf_init(),
- * tf_get_pname(), and tf_get_pinst() have been called. If all goes well,
- * KSUCCESS is returned. Possible error codes are:
- *
- * TKT_FIL_INI - tf_init wasn't called first
- * TKT_FIL_FMT - bad format
- * EOF - end of file encountered
- */
-
-int
-tf_get_cred(c)
- CREDENTIALS *c;
-{
- KTEXT ticket = &c->ticket_st; /* pointer to ticket */
- int k_errno;
-
- if (fd < 0) {
- if (krb_debug)
- fprintf(stderr, "tf_get_cred called before tf_init.\n");
- return TKT_FIL_INI;
- }
- if ((k_errno = tf_gets(c->service, SNAME_SZ)) < 2)
- switch (k_errno) {
- case TOO_BIG:
- case 1: /* can't be just a null */
- tf_close();
- return TKT_FIL_FMT;
- case 0:
- return EOF;
- }
- if ((k_errno = tf_gets(c->instance, INST_SZ)) < 1)
- switch (k_errno) {
- case TOO_BIG:
- return TKT_FIL_FMT;
- case 0:
- return EOF;
- }
- if ((k_errno = tf_gets(c->realm, REALM_SZ)) < 2)
- switch (k_errno) {
- case TOO_BIG:
- case 1: /* can't be just a null */
- tf_close();
- return TKT_FIL_FMT;
- case 0:
- return EOF;
- }
- if (
- tf_read((char *) (c->session), KEY_SZ) < 1 ||
- tf_read((char *) &(c->lifetime), sizeof(c->lifetime)) < 1 ||
- tf_read((char *) &(c->kvno), sizeof(c->kvno)) < 1 ||
- tf_read((char *) &(ticket->length), sizeof(ticket->length))
- < 1 ||
- /* don't try to read a silly amount into ticket->dat */
- ticket->length > MAX_KTXT_LEN ||
- tf_read((char *) (ticket->dat), ticket->length) < 1 ||
- tf_read((char *) &(c->issue_date), sizeof(c->issue_date)) < 1
- ) {
- tf_close();
- return TKT_FIL_FMT;
- }
-#ifdef TKT_SHMEM
- bcopy(tmp_shm_addr,c->session,KEY_SZ);
- tmp_shm_addr += KEY_SZ;
-#endif /* TKT_SHMEM */
- return KSUCCESS;
-}
-
-/*
- * tf_close() closes the ticket file and sets "fd" to -1. If "fd" is
- * not a valid file descriptor, it just returns. It also clears the
- * buffer used to read tickets.
- *
- * The return value is not defined.
- */
-
-void
-tf_close()
-{
- if (!(fd < 0)) {
-#ifdef TKT_SHMEM
- if (shmdt(krb_shm_addr)) {
- /* what kind of error? */
- if (krb_debug)
- fprintf(stderr, "shmdt 0x%x: errno %d",krb_shm_addr, errno);
- } else {
- krb_shm_addr = 0;
- }
-#endif TKT_SHMEM
- (void) flock(fd, LOCK_UN);
- (void) close(fd);
- fd = -1; /* see declaration of fd above */
- }
- bzero(tfbfr, sizeof(tfbfr));
-}
-
-/*
- * tf_gets() is an internal routine. It takes a string "s" and a count
- * "n", and reads from the file until either it has read "n" characters,
- * or until it reads a null byte. When finished, what has been read exists
- * in "s". If it encounters EOF or an error, it closes the ticket file.
- *
- * Possible return values are:
- *
- * n the number of bytes read (including null terminator)
- * when all goes well
- *
- * 0 end of file or read error
- *
- * TOO_BIG if "count" characters are read and no null is
- * encountered. This is an indication that the ticket
- * file is seriously ill.
- */
-
-static int
-tf_gets(s, n)
- register char *s;
- int n;
-{
- register count;
-
- if (fd < 0) {
- if (krb_debug)
- fprintf(stderr, "tf_gets called before tf_init.\n");
- return TKT_FIL_INI;
- }
- for (count = n - 1; count > 0; --count) {
- if (curpos >= sizeof(tfbfr)) {
- lastpos = read(fd, tfbfr, sizeof(tfbfr));
- curpos = 0;
- }
- if (curpos == lastpos) {
- tf_close();
- return 0;
- }
- *s = tfbfr[curpos++];
- if (*s++ == '\0')
- return (n - count);
- }
- tf_close();
- return TOO_BIG;
-}
-
-/*
- * tf_read() is an internal routine. It takes a string "s" and a count
- * "n", and reads from the file until "n" bytes have been read. When
- * finished, what has been read exists in "s". If it encounters EOF or
- * an error, it closes the ticket file.
- *
- * Possible return values are:
- *
- * n the number of bytes read when all goes well
- *
- * 0 on end of file or read error
- */
-
-static int
-tf_read(s, n)
- register char *s;
- register int n;
-{
- register count;
-
- for (count = n; count > 0; --count) {
- if (curpos >= sizeof(tfbfr)) {
- lastpos = read(fd, tfbfr, sizeof(tfbfr));
- curpos = 0;
- }
- if (curpos == lastpos) {
- tf_close();
- return 0;
- }
- *s++ = tfbfr[curpos++];
- }
- return n;
-}
-
-/*
- * tf_save_cred() appends an incoming ticket to the end of the ticket
- * file. You must call tf_init() before calling tf_save_cred().
- *
- * The "service", "instance", and "realm" arguments specify the
- * server's name; "session" contains the session key to be used with
- * the ticket; "kvno" is the server key version number in which the
- * ticket is encrypted, "ticket" contains the actual ticket, and
- * "issue_date" is the time the ticket was requested (local host's time).
- *
- * Returns KSUCCESS if all goes well, TKT_FIL_INI if tf_init() wasn't
- * called previously, and KFAILURE for anything else that went wrong.
- */
-
-int
-tf_save_cred(service, instance, realm, session, lifetime, kvno,
- ticket, issue_date)
- char *service; /* Service name */
- char *instance; /* Instance */
- char *realm; /* Auth domain */
- C_Block session; /* Session key */
- int lifetime; /* Lifetime */
- int kvno; /* Key version number */
- KTEXT ticket; /* The ticket itself */
- long issue_date; /* The issue time */
-{
-
- off_t lseek();
- int count; /* count for write */
-#ifdef TKT_SHMEM
- int *skey_check;
-#endif /* TKT_SHMEM */
-
- if (fd < 0) { /* fd is ticket file as set by tf_init */
- if (krb_debug)
- fprintf(stderr, "tf_save_cred called before tf_init.\n");
- return TKT_FIL_INI;
- }
- /* Find the end of the ticket file */
- (void) lseek(fd, 0L, 2);
-#ifdef TKT_SHMEM
- /* scan to end of existing keys: pick first 'empty' slot.
- we assume that no real keys will be completely zero (it's a weak
- key under DES) */
-
- skey_check = (int *) krb_shm_addr;
-
- while (*skey_check && *(skey_check+1))
- skey_check += 2;
- tmp_shm_addr = (char *)skey_check;
-#endif /* TKT_SHMEM */
-
- /* Write the ticket and associated data */
- /* Service */
- count = strlen(service) + 1;
- if (write(fd, service, count) != count)
- goto bad;
- /* Instance */
- count = strlen(instance) + 1;
- if (write(fd, instance, count) != count)
- goto bad;
- /* Realm */
- count = strlen(realm) + 1;
- if (write(fd, realm, count) != count)
- goto bad;
- /* Session key */
-#ifdef TKT_SHMEM
- bcopy(session,tmp_shm_addr,8);
- tmp_shm_addr+=8;
- if (write(fd,krb_dummy_skey,8) != 8)
- goto bad;
-#else /* ! TKT_SHMEM */
- if (write(fd, (char *) session, 8) != 8)
- goto bad;
-#endif /* TKT_SHMEM */
- /* Lifetime */
- if (write(fd, (char *) &lifetime, sizeof(int)) != sizeof(int))
- goto bad;
- /* Key vno */
- if (write(fd, (char *) &kvno, sizeof(int)) != sizeof(int))
- goto bad;
- /* Tkt length */
- if (write(fd, (char *) &(ticket->length), sizeof(int)) !=
- sizeof(int))
- goto bad;
- /* Ticket */
- count = ticket->length;
- if (write(fd, (char *) (ticket->dat), count) != count)
- goto bad;
- /* Issue date */
- if (write(fd, (char *) &issue_date, sizeof(long))
- != sizeof(long))
- goto bad;
-
- /* Actually, we should check each write for success */
- return (KSUCCESS);
-bad:
- return (KFAILURE);
-}
diff --git a/eBones/lib/libkrb/tkt_string.c b/eBones/lib/libkrb/tkt_string.c
deleted file mode 100644
index d944833a33aa..000000000000
--- a/eBones/lib/libkrb/tkt_string.c
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: tkt_string.c,v 4.6 89/01/05 12:31:51 raeburn Exp $
- * $Id: tkt_string.c,v 1.3 1995/07/18 16:39:52 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char *rcsid =
-"$Id: tkt_string.c,v 1.3 1995/07/18 16:39:52 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <krb.h>
-#include <string.h>
-#include <sys/param.h>
-
-/*
- * This routine is used to generate the name of the file that holds
- * the user's cache of server tickets and associated session keys.
- *
- * If it is set, krb_ticket_string contains the ticket file name.
- * Otherwise, the filename is constructed as follows:
- *
- * If it is set, the environment variable "KRBTKFILE" will be used as
- * the ticket file name. Otherwise TKT_ROOT (defined in "krb.h") and
- * the user's uid are concatenated to produce the ticket file name
- * (e.g., "/tmp/tkt123"). A pointer to the string containing the ticket
- * file name is returned.
- */
-
-static char krb_ticket_string[MAXPATHLEN] = "";
-
-char *tkt_string()
-{
- char *env;
- uid_t getuid();
-
- if (!*krb_ticket_string) {
- if ((env = getenv("KRBTKFILE"))) {
- (void) strncpy(krb_ticket_string, env,
- sizeof(krb_ticket_string)-1);
- krb_ticket_string[sizeof(krb_ticket_string)-1] = '\0';
- } else {
- /* 32 bits of signed integer will always fit in 11 characters
- (including the sign), so no need to worry about overflow */
- (void) sprintf(krb_ticket_string, "%s%ld",TKT_ROOT,getuid());
- }
- }
- return krb_ticket_string;
-}
-
-/*
- * This routine is used to set the name of the file that holds the user's
- * cache of server tickets and associated session keys.
- *
- * The value passed in is copied into local storage.
- *
- * NOTE: This routine should be called during initialization, before other
- * Kerberos routines are called; otherwise tkt_string() above may be called
- * and return an undesired ticket file name until this routine is called.
- */
-
-void
-krb_set_tkt_string(val)
-char *val;
-{
-
- (void) strncpy(krb_ticket_string, val, sizeof(krb_ticket_string)-1);
- krb_ticket_string[sizeof(krb_ticket_string)-1] = '\0';
-
- return;
-}
diff --git a/eBones/lib/libkrb/util.c b/eBones/lib/libkrb/util.c
deleted file mode 100644
index 68c0dbc1eb4b..000000000000
--- a/eBones/lib/libkrb/util.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <mit-copyright.h>.
- *
- * Miscellaneous debug printing utilities
- *
- * from: util.c,v 4.8 89/01/17 22:02:08 wesommer Exp $
- * $Id: util.c,v 1.3 1995/07/18 16:39:54 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: util.c,v 1.3 1995/07/18 16:39:54 mark Exp $";
-#endif lint
-#endif
-
-#include <krb.h>
-#include <des.h>
-#include <sys/types.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <stdio.h>
-
-/*
- * Print some of the contents of the given authenticator structure
- * (AUTH_DAT defined in "krb.h"). Fields printed are:
- *
- * pname, pinst, prealm, netaddr, flags, cksum, timestamp, session
- */
-
-void
-ad_print(x)
-AUTH_DAT *x;
-{
- struct in_addr in;
-
- /* Print the contents of an auth_dat struct. */
- in.s_addr = x->address;
- printf("\n%s %s %s %s flags %u cksum 0x%lX\n\ttkt_tm 0x%lX sess_key",
- x->pname, x->pinst, x->prealm, inet_ntoa(in), x->k_flags,
- x->checksum, x->time_sec);
-
- printf("[8] =");
-#ifdef NOENCRYPTION
- placebo_cblock_print(x->session);
-#else
- des_cblock_print_file((C_Block *)x->session,stdout);
-#endif
- /* skip reply for now */
-}
-
-/*
- * Print in hex the 8 bytes of the given session key.
- *
- * Printed format is: " 0x { x, x, x, x, x, x, x, x }"
- */
-
-#ifdef NOENCRYPTION
-placebo_cblock_print(x)
- des_cblock x;
-{
- unsigned char *y = (unsigned char *) x;
- register int i = 0;
-
- printf(" 0x { ");
-
- while (i++ <8) {
- printf("%x",*y++);
- if (i<8) printf(", ");
- }
- printf(" }");
-}
-#endif
diff --git a/eBones/lib/librkinit/Makefile b/eBones/lib/librkinit/Makefile
deleted file mode 100644
index 29ee4401b597..000000000000
--- a/eBones/lib/librkinit/Makefile
+++ /dev/null
@@ -1,19 +0,0 @@
-# @(#)Makefile 8.1 (Berkeley) 6/4/93
-
-LIB= rkinit
-CFLAGS+=-DKERBEROS -DCRYPT -DDEBUG -I${RKINITOBJDIR}
-SRCS= rkinit_err.c rk_lib.c rk_rpc.c rk_util.c rk_krb.c
-
-LDADD+= -lcom_err
-
-beforeinstall:
- -cd ${.OBJDIR}; cmp -s rkinit_err.h \
- ${DESTDIR}/usr/include/kerberosIV/rkinit_err.h || \
- install -c -o ${BINOWN} -g ${BINGRP} -m 444 rkinit_err.h \
- ${DESTDIR}/usr/include/kerberosIV
-
-MAN3= rkinit.3
-
-.include <bsd.lib.mk>
-
-rkinit_err.c: ${RKINITOBJDIR}/rkinit_err.h
diff --git a/eBones/lib/librkinit/rk_krb.c b/eBones/lib/librkinit/rk_krb.c
deleted file mode 100644
index ad8a6537b2d4..000000000000
--- a/eBones/lib/librkinit/rk_krb.c
+++ /dev/null
@@ -1,316 +0,0 @@
-/*
- * $Id: rk_krb.c,v 1.1 1993/12/10 19:36:09 dglo Exp gibbs $
- * $Source: /usr/src/eBones/librkinit/RCS/rk_krb.c,v $
- * $Author: dglo $
- *
- * This file contains the kerberos parts of the rkinit library.
- * See the comment at the top of rk_lib.c for a description of the naming
- * conventions used within the rkinit library.
- */
-
-#if !defined(lint) && !defined(SABER) && !defined(LOCORE) && defined(RCS_HDRS)
-static char *rcsid = "$Id: rk_krb.c,v 1.1 1993/12/10 19:36:09 dglo Exp gibbs $";
-#endif /* lint || SABER || LOCORE || RCS_HDRS */
-
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/uio.h>
-#include <unistd.h>
-#include <sys/ioctl.h>
-#include <netinet/in.h>
-#include <krb.h>
-#include <des.h>
-
-#include <signal.h>
-#include <setjmp.h>
-
-#ifdef POSIX
-#include <termios.h>
-#else
-#include <sgtty.h>
-#endif
-
-#include <rkinit.h>
-#include <rkinit_err.h>
-#include <rkinit_private.h>
-
-static jmp_buf env;
-static void sig_restore();
-static void push_signals();
-static void pop_signals();
-
-/* Information to be passed around within client get_in_tkt */
-typedef struct {
- KTEXT scip; /* Server KDC packet */
- char *username;
- char *host;
-} rkinit_intkt_info;
-
-static char errbuf[BUFSIZ];
-
-/* The compiler complains if this is declared static. */
-#ifdef __STDC__
-int rki_key_proc(char *user, char *instance, char *realm, char *arg,
- des_cblock *key)
-#else
-int rki_key_proc(user, instance, realm, arg, key)
- char *user;
- char *instance;
- char *realm;
- char *arg;
- des_cblock *key;
-#endif /* __STDC__ */
-
-{
- rkinit_intkt_info *rii = (rkinit_intkt_info *)arg;
- char password[BUFSIZ];
- int ok = 0;
-#ifdef POSIX
- struct termios ttyb;
-#else
- struct sgttyb ttyb; /* For turning off echo */
-#endif
-
- SBCLEAR(ttyb);
- BCLEAR(password);
-
- /*
- * If the username does not match the aname in the ticket,
- * we will print that too. Otherwise, we won't.
- */
-
- printf("Kerberos initialization (%s)", rii->host);
- if (strcmp(rii->username, user))
- printf(": tickets will be owned by %s", rii->username);
-
- printf("\nPassword for %s%s%s@%s: ", user,
- (instance[0]) ? "." : "", instance, realm);
-
- fflush(stdout);
-
- push_signals();
- if (setjmp(env)) {
- ok = -1;
- goto lose;
- }
-
-#ifndef POSIX
- ioctl(0, TIOCGETP, &ttyb);
- ttyb.sg_flags &= ~ECHO;
- ioctl(0, TIOCSETP, &ttyb);
-#else
- (void) tcgetattr(0, &ttyb);
- ttyb.c_lflag &= ~ECHO;
- (void) tcsetattr(0, TCSAFLUSH, &ttyb);
-#endif
-
- bzero(password, sizeof(password));
- if (read(0, password, sizeof(password)) == -1) {
- perror("read");
- ok = -1;
- goto lose;
- }
-
- if (password[strlen(password)-1] == '\n')
- password[strlen(password)-1] = 0;
-
- /* Generate the key from the password and destroy the password */
-
- des_string_to_key(password, key);
-
-lose:
- BCLEAR(password);
-
-#ifndef POSIX
- ttyb.sg_flags |= ECHO;
- ioctl(0, TIOCSETP, &ttyb);
-#else
- ttyb.c_lflag |= ECHO;
- (void) tcsetattr(0, TCSAFLUSH, &ttyb);
-#endif
-
- pop_signals();
- printf("\n");
-
- return(ok);
-}
-
-#ifdef __STDC__
-static int rki_decrypt_tkt(char *user, char *instance, char *realm,
- char *arg, int (*key_proc)(), KTEXT *cipp)
-#else
-static int rki_decrypt_tkt(user, instance, realm, arg, key_proc, cipp)
- char *user;
- char *instance;
- char *realm;
- char *arg;
- int (*key_proc)();
- KTEXT *cipp;
-#endif /* __STDC__ */
-{
- KTEXT cip = *cipp;
- C_Block key; /* Key for decrypting cipher */
- Key_schedule key_s;
- KTEXT scip = 0; /* cipher from rkinit server */
-
- rkinit_intkt_info *rii = (rkinit_intkt_info *)arg;
-
- /* generate a key */
- {
- register int rc;
- rc = (*key_proc)(user, instance, realm, arg, key);
- if (rc)
- return(rc);
- }
-
- des_key_sched(&key, key_s);
-
- /* Decrypt information from KDC */
- des_pcbc_encrypt((C_Block *)cip->dat,(C_Block *)cip->dat,
- (long) cip->length, key_s, &key, 0);
-
- /* DescrYPT rkinit server's information from KDC */
- scip = rii->scip;
- des_pcbc_encrypt((C_Block *)scip->dat,(C_Block *)scip->dat,
- (long) scip->length, key_s, &key, 0);
-
- /* Get rid of all traces of key */
- bzero((char *)key, sizeof(key));
- bzero((char *)key_s, sizeof(key_s));
-
- return(0);
-}
-
-#ifdef __STDC__
-int rki_get_tickets(int version, char *host, char *r_krealm, rkinit_info *info)
-#else
-int rki_get_tickets(version, host, r_krealm, info)
- int version;
- char *host;
- char *r_krealm;
- rkinit_info *info;
-#endif /* __STDC__ */
-{
- int status = RKINIT_SUCCESS;
- KTEXT_ST auth;
- char phost[MAXHOSTNAMELEN];
- KTEXT_ST scip; /* server's KDC packet */
- des_cblock key;
- des_key_schedule sched;
- struct sockaddr_in caddr;
- struct sockaddr_in saddr;
- CREDENTIALS cred;
- MSG_DAT msg_data;
- u_char enc_data[MAX_KTXT_LEN];
-
- rkinit_intkt_info rii;
-
- SBCLEAR(auth);
- BCLEAR(phost);
- SBCLEAR(rii);
- SBCLEAR(scip);
- SBCLEAR(caddr);
- SBCLEAR(saddr);
- SBCLEAR(cred);
- SBCLEAR(msg_data);
- BCLEAR(enc_data);
-
- if ((status = rki_send_rkinit_info(version, info)) != RKINIT_SUCCESS)
- return(status);
-
- if ((status = rki_rpc_get_skdc(&scip)) != RKINIT_SUCCESS)
- return(status);
-
- rii.scip = &scip;
- rii.host = host;
- rii.username = info->username;
-
- if ((status = krb_get_in_tkt(info->aname, info->inst, info->realm,
- "krbtgt", info->realm, 1,
- rki_key_proc, rki_decrypt_tkt, (char *)&rii))) {
- strcpy(errbuf, krb_err_txt[status]);
- rkinit_errmsg(errbuf);
- return(RKINIT_KERBEROS);
- }
-
- /* Create an authenticator */
- strcpy(phost, krb_get_phost(host));
- if ((status = krb_mk_req(&auth, KEY, phost, r_krealm, 0))) {
- sprintf(errbuf, "krb_mk_req: %s", krb_err_txt[status]);
- rkinit_errmsg(errbuf);
- return(RKINIT_KERBEROS);
- }
-
- /* Re-encrypt server KDC packet in session key */
- /* Get credentials from ticket file */
- if ((status = krb_get_cred(KEY, phost, r_krealm, &cred))) {
- sprintf(errbuf, "krb_get_cred: %s", krb_err_txt[status]);
- rkinit_errmsg(errbuf);
- return(RKINIT_KERBEROS);
- }
-
- /* Exctract the session key and make the schedule */
- bcopy(cred.session, key, sizeof(key));
- if ((status = des_key_sched(&key, sched))) {
- sprintf(errbuf, "des_key_sched: %s", krb_err_txt[status]);
- rkinit_errmsg(errbuf);
- return(RKINIT_DES);
- }
-
- /* Get client and server addresses */
- if ((status = rki_get_csaddr(&caddr, &saddr)) != RKINIT_SUCCESS)
- return(status);
-
- /*
- * scip was passed to krb_get_in_tkt, where it was decrypted.
- * Now re-encrypt in the session key.
- */
-
- msg_data.app_data = enc_data;
- if ((msg_data.app_length =
- krb_mk_priv(scip.dat, msg_data.app_data, scip.length, sched, key,
- &caddr, &saddr)) == -1) {
- sprintf(errbuf, "krb_mk_priv failed.");
- rkinit_errmsg(errbuf);
- return(RKINIT_KERBEROS);
- }
-
- /* Destroy tickets, which we no longer need */
- dest_tkt();
-
- if ((status = rki_rpc_send_ckdc(&msg_data)) != RKINIT_SUCCESS)
- return(status);
-
- if ((status = rki_rpc_sendauth(&auth)) != RKINIT_SUCCESS)
- return(status);
-
- if ((status = rki_rpc_get_status()))
- return(status);
-
- return(RKINIT_SUCCESS);
-}
-
-
-static void (*old_sigfunc[NSIG])(int);
-
-static void push_signals()
-{
- register i;
- for (i = 0; i < NSIG; i++)
- old_sigfunc[i] = signal(i,sig_restore);
-}
-
-static void pop_signals()
-{
- register i;
- for (i = 0; i < NSIG; i++)
- signal(i,old_sigfunc[i]);
-}
-
-static void sig_restore(sig,code,scp)
- int sig,code;
- struct sigcontext *scp;
-{
- longjmp(env,1);
-}
diff --git a/eBones/lib/librkinit/rk_lib.c b/eBones/lib/librkinit/rk_lib.c
deleted file mode 100644
index 06b8f392e0d6..000000000000
--- a/eBones/lib/librkinit/rk_lib.c
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * $Id: rk_lib.c,v 1.1 1993/12/10 19:32:01 dglo Exp gibbs $
- * $Source: /usr/src/eBones/librkinit/RCS/rk_lib.c,v $
- * $Author: dglo $
- *
- * This file contains the non-rpc top-level rkinit library routines.
- * The routines in the rkinit library that should be called from clients
- * are exactly those defined in this file.
- *
- * The naming convetions used within the rkinit library are as follows:
- * Functions intended for general client use start with rkinit_
- * Functions intended for use only inside the library or server start with
- * rki_
- * Functions that do network communcation start with rki_rpc_
- * Static functions can be named in any fashion.
- */
-
-#if !defined(lint) && !defined(SABER) && !defined(LOCORE) && defined(RCS_HDRS)
-static char *rcsid = "$Id: rk_lib.c,v 1.1 1993/12/10 19:32:01 dglo Exp gibbs $";
-#endif /* lint || SABER || LOCORE || RCS_HDRS */
-
-#include <stdio.h>
-#include <unistd.h>
-#include <string.h>
-#include <setjmp.h>
-#include <krb.h>
-
-#include <rkinit.h>
-#include <rkinit_private.h>
-#include <rkinit_err.h>
-
-#ifdef __STDC__
-char *rkinit_errmsg(char *string)
-#else
-char *rkinit_errmsg(string)
- char *string;
-#endif /* __STDC__ */
-{
- static char errmsg[BUFSIZ];
-
- if (string) {
- BCLEAR(errmsg);
- strncpy(errmsg, string, sizeof(errmsg) - 1);
- }
-
- return(errmsg);
-}
-
-#ifdef __STDC__
-int rkinit(char *host, char *r_krealm, rkinit_info *info, int timeout)
-#else
-int rkinit(host, r_krealm, info, timeout)
- char *host;
- char *r_krealm;
- rkinit_info *info;
- int timeout;
-#endif /* __STDC__ */
-{
- int status = RKINIT_SUCCESS;
- int version = 0;
- char phost[MAXHOSTNAMELEN];
- jmp_buf timeout_env;
- void (*old_alrm)(int) = NULL;
- char origtktfilename[MAXPATHLEN]; /* original ticket file name */
- char tktfilename[MAXPATHLEN]; /* temporary client ticket file */
-
- BCLEAR(phost);
- BCLEAR(origtktfilename);
- BCLEAR(tktfilename);
- BCLEAR(timeout_env);
-
- init_rkin_err_tbl();
-
- if ((status = rki_setup_rpc(host)))
- return(status);
-
- if (timeout)
- old_alrm = rki_setup_timer(timeout_env);
-
- /* The alarm handler longjmps us to here. */
- if ((status = setjmp(timeout_env)) == 0) {
-
- strcpy(origtktfilename, tkt_string());
- sprintf(tktfilename, "/tmp/tkt_rkinit.%ld", getpid());
- krb_set_tkt_string(tktfilename);
-
- if ((status = rki_choose_version(&version)) == RKINIT_SUCCESS)
- status = rki_get_tickets(version, host, r_krealm, info);
- }
-
- if (timeout)
- rki_restore_timer(old_alrm);
-
- dest_tkt();
- krb_set_tkt_string(origtktfilename);
-
- rki_cleanup_rpc();
-
- return(status);
-}
diff --git a/eBones/lib/librkinit/rk_rpc.c b/eBones/lib/librkinit/rk_rpc.c
deleted file mode 100644
index dd6132779461..000000000000
--- a/eBones/lib/librkinit/rk_rpc.c
+++ /dev/null
@@ -1,387 +0,0 @@
-/*
- * $Id: rk_rpc.c,v 1.1 1993/12/10 19:36:09 dglo Exp gibbs $
- * $Source: /usr/src/eBones/librkinit/RCS/rk_rpc.c,v $
- * $Author: dglo $
- *
- * This file contains functions that are used for network communication.
- * See the comment at the top of rk_lib.c for a description of the naming
- * conventions used within the rkinit library.
- */
-
-#if !defined(lint) && !defined(SABER) && !defined(LOCORE) && defined(RCS_HDRS)
-static char *rcsid = "$Id: rk_rpc.c,v 1.1 1993/12/10 19:36:09 dglo Exp gibbs $";
-#endif /* lint || SABER || LOCORE || RCS_HDRS */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/uio.h>
-#include <unistd.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netdb.h>
-#include <errno.h>
-
-#include <rkinit.h>
-#include <rkinit_err.h>
-#include <rkinit_private.h>
-
-extern int errno;
-
-static int sock;
-struct sockaddr_in saddr;
-
-static char errbuf[BUFSIZ];
-
-char *calloc();
-
-#ifdef __STDC__
-int rki_send_packet(int sock, char type, u_int32_t length, const char *data)
-#else
-int rki_send_packet(sock, type, length, data)
- int sock;
- char type;
- u_int32_t length;
- const char *data;
-#endif /* __STDC__ */
-{
- int len;
- u_char *packet;
- u_int32_t pkt_len;
- u_int32_t net_pkt_len;
-
- pkt_len = length + PKT_DATA;
-
- if ((packet = (u_char *)calloc(pkt_len, sizeof(u_char))) == NULL) {
- sprintf(errbuf, "rki_send_packet: failure allocating %d bytes",
- pkt_len * sizeof(u_char));
- rkinit_errmsg(errbuf);
- return(RKINIT_MEMORY);
- }
-
- net_pkt_len = htonl(pkt_len);
-
- packet[PKT_TYPE] = type;
- bcopy((char *)&net_pkt_len, packet + PKT_LEN, sizeof(u_int32_t));
- bcopy(data, packet + PKT_DATA, length);
-
- if ((len = write(sock, packet, pkt_len)) != pkt_len) {
- if (len == -1)
- sprintf(errbuf, "write: %s", sys_errlist[errno]);
- else
- sprintf(errbuf, "write: %d bytes written; %d bytes actually sent",
- pkt_len, len);
- rkinit_errmsg(errbuf);
- free(packet);
- return(RKINIT_WRITE);
- }
-
- free(packet);
- return(RKINIT_SUCCESS);
-}
-
-#ifdef __STDC__
-int rki_get_packet(int sock, u_char type, u_int32_t *length, char *data)
-#else
-int rki_get_packet(sock, type, length, data)
- int sock;
- u_char type;
- u_int32_t *length;
- char *data;
-#endif /* __STDC__ */
-{
- int len;
- int len_sofar = 0;
- u_int32_t expected_length = 0;
- int got_full_packet = FALSE;
- int tries = 0;
- u_char *packet;
-
- u_int32_t max_pkt_len;
-
- max_pkt_len = *length + PKT_DATA;
-
- if ((packet = (u_char *)calloc(max_pkt_len, sizeof(u_char))) == NULL) {
- sprintf(errbuf, "rki_get_packet: failure allocating %d bytes",
- max_pkt_len * sizeof(u_char));
- rkinit_errmsg(errbuf);
- return(RKINIT_MEMORY);
- }
-
- /* Read the packet type and length */
- while ((len_sofar < PKT_DATA) && (tries < RETRIES)) {
- if ((len = read(sock, packet + len_sofar, PKT_DATA - len_sofar)) < 0) {
- sprintf(errbuf, "read: %s", sys_errlist[errno]);
- rkinit_errmsg(errbuf);
- return(RKINIT_READ);
- }
- len_sofar += len;
- tries++;
- }
- if (len_sofar < PKT_DATA) {
- sprintf(errbuf,
- "read: expected to receive at least %d bytes; received %d",
- PKT_DATA, len_sofar);
- rkinit_errmsg(errbuf);
- return(RKINIT_PACKET);
- }
- bcopy(packet + PKT_LEN, (char *)&expected_length, sizeof(u_int32_t));
- expected_length = ntohl(expected_length);
- if (expected_length > max_pkt_len) {
- sprintf(errbuf, "%s %d %s %d",
- "rki_get_packet: incoming message of size",
- expected_length,
- "is larger than message buffer of size",
- max_pkt_len);
- rkinit_errmsg(errbuf);
- return(RKINIT_PACKET);
- }
- tries = 0;
- while (!got_full_packet && (tries < RETRIES)) {
- if ((len = read(sock, packet + len_sofar,
- expected_length - len_sofar)) < 0) {
- sprintf(errbuf, "read: %s", sys_errlist[errno]);
- rkinit_errmsg(errbuf);
- return(RKINIT_READ);
- }
- len_sofar += len;
- if (expected_length == len_sofar)
- got_full_packet = TRUE;
- }
- if (len_sofar < expected_length) {
- sprintf(errbuf,
- "read: expected to receive at least %d bytes; received %d",
- expected_length, len_sofar);
- rkinit_errmsg(errbuf);
- return(RKINIT_PACKET);
- }
- if (packet[PKT_TYPE] == MT_DROP) {
- BCLEAR(errbuf);
- rkinit_errmsg(errbuf);
- return(RKINIT_DROPPED);
- }
-
- if (packet[PKT_TYPE] != type) {
- sprintf(errbuf, "Expected packet type of %s; got %s",
- rki_mt_to_string(type),
- rki_mt_to_string(packet[PKT_TYPE]));
- rkinit_errmsg(errbuf);
- return(RKINIT_PACKET);
- }
-
- *length = len_sofar - PKT_DATA;
- bcopy(packet + PKT_DATA, data, *length);
-
- free(packet);
-
- return(RKINIT_SUCCESS);
-}
-
-#ifdef __STDC__
-int rki_setup_rpc(char *host)
-#else
-int rki_setup_rpc(host)
- char *host;
-#endif /* __STDC__ */
-{
- struct hostent *hp;
- struct servent *sp;
- int port;
-
- SBCLEAR(saddr);
- SBCLEAR(hp);
- SBCLEAR(sp);
-
- if ((hp = gethostbyname(host)) == NULL) {
- sprintf(errbuf, "%s: unknown host.", host);
- rkinit_errmsg(errbuf);
- return(RKINIT_HOST);
- }
-
- if ((sp = getservbyname(SERVENT, "tcp")))
- port = sp->s_port;
- else
- /* Fall back on known port number */
- port = htons(PORT);
-
- saddr.sin_family = hp->h_addrtype;
- bcopy(hp->h_addr, (char *)&saddr.sin_addr, hp->h_length);
- saddr.sin_port = port;
-
- if ((sock = socket(hp->h_addrtype, SOCK_STREAM, IPPROTO_IP)) < 0) {
- sprintf(errbuf, "socket: %s", sys_errlist[errno]);
- rkinit_errmsg(errbuf);
- return(RKINIT_SOCKET);
- }
-
- if (connect(sock, (struct sockaddr *)&saddr, sizeof (saddr)) < 0) {
- sprintf(errbuf, "connect: %s", sys_errlist[errno]);
- rkinit_errmsg(errbuf);
- close(sock);
- return(RKINIT_CONNECT);
- }
-
- return(RKINIT_SUCCESS);
-}
-
-#ifdef __STDC__
-int rki_rpc_exchange_version_info(int c_lversion, int c_hversion,
- int *s_lversion, int *s_hversion)
-#else
-int rki_rpc_exchange_version_info(c_lversion, c_hversion,
- s_lversion, s_hversion)
- int c_lversion;
- int c_hversion;
- int *s_lversion;
- int *s_hversion;
-#endif /* __STDC__ */
-{
- int status = RKINIT_SUCCESS;
- u_char version_info[VERSION_INFO_SIZE];
- u_int32_t length = sizeof(version_info);
-
- version_info[0] = (u_char) c_lversion;
- version_info[1] = (u_char) c_hversion;
-
- if ((status = rki_send_packet(sock, MT_CVERSION, length,
- (char *)version_info)) != RKINIT_SUCCESS)
- return(status);
-
- if ((status = rki_get_packet(sock, MT_SVERSION, &length,
- (char *)version_info)) != RKINIT_SUCCESS)
- return(status);
-
- *s_lversion = (int) version_info[0];
- *s_hversion = (int) version_info[1];
-
- return(RKINIT_SUCCESS);
-}
-
-#ifdef __STDC__
-int rki_rpc_send_rkinit_info(rkinit_info *info)
-#else
-int rki_rpc_send_rkinit_info(info)
- rkinit_info *info;
-#endif /* __STDC__ */
-{
- rkinit_info info_copy;
-
- bcopy(info, &info_copy, sizeof(rkinit_info));
- info_copy.lifetime = htonl(info_copy.lifetime);
- return(rki_send_packet(sock, MT_RKINIT_INFO, sizeof(rkinit_info),
- (char *)&info_copy));
-}
-
-#ifdef __STDC__
-int rki_rpc_get_status(void)
-#else
-int rki_rpc_get_status()
-#endif /* __STDC__ */
-{
- char msg[BUFSIZ];
- int status = RKINIT_SUCCESS;
- u_int32_t length = sizeof(msg);
-
- if ((status = rki_get_packet(sock, MT_STATUS, &length, msg)))
- return(status);
-
- if (length == 0)
- return(RKINIT_SUCCESS);
- else {
- rkinit_errmsg(msg);
- return(RKINIT_DAEMON);
- }
-}
-
-#ifdef __STDC__
-int rki_rpc_get_ktext(int sock, KTEXT auth, u_char type)
-#else
-int rki_rpc_get_ktext(sock, auth, type)
- int sock;
- KTEXT auth;
- u_char type;
-#endif /* __STDC__ */
-{
- int status = RKINIT_SUCCESS;
- u_int32_t length = MAX_KTXT_LEN;
-
- if ((status = rki_get_packet(sock, type, &length, (char *)auth->dat)))
- return(status);
-
- auth->length = length;
-
- return(RKINIT_SUCCESS);
-}
-
-#ifdef __STDC__
-int rki_rpc_sendauth(KTEXT auth)
-#else
-int rki_rpc_sendauth(auth)
- KTEXT auth;
-#endif /* __STDC__ */
-{
- return(rki_send_packet(sock, MT_AUTH, auth->length, (char *)auth->dat));
-}
-
-
-#ifdef __STDC__
-int rki_rpc_get_skdc(KTEXT scip)
-#else
-int rki_rpc_get_skdc(scip)
- KTEXT scip;
-#endif /* __STDC__ */
-{
- return(rki_rpc_get_ktext(sock, scip, MT_SKDC));
-}
-
-#ifdef __STDC__
-int rki_rpc_send_ckdc(MSG_DAT *scip)
-#else
-int rki_rpc_send_ckdc(scip)
- MSG_DAT *scip;
-#endif /* __STDC__ */
-{
- return(rki_send_packet(sock, MT_CKDC, scip->app_length,
- (char *)scip->app_data));
-}
-
-#ifdef __STDC__
-int rki_get_csaddr(struct sockaddr_in *caddrp, struct sockaddr_in *saddrp)
-#else
-int rki_get_csaddr(caddrp, saddrp)
- struct sockaddr_in *caddrp;
- struct sockaddr_in *saddrp;
-#endif /* __STDC__ */
-{
- int addrlen = sizeof(struct sockaddr_in);
-
- bcopy((char *)&saddr, (char *)saddrp, addrlen);
-
- if (getsockname(sock, (struct sockaddr *)caddrp, &addrlen) < 0) {
- sprintf(errbuf, "getsockname: %s", sys_errlist[errno]);
- rkinit_errmsg(errbuf);
- return(RKINIT_GETSOCK);
- }
-
- return(RKINIT_SUCCESS);
-}
-
-#ifdef __STDC__
-void rki_drop_server(void)
-#else
-void rki_drop_server()
-#endif /* __STDC__ */
-{
- (void) rki_send_packet(sock, MT_DROP, 0, "");
-}
-
-#ifdef __STDC__
-void rki_cleanup_rpc(void)
-#else
-void rki_cleanup_rpc()
-#endif /* __STDC__ */
-{
- rki_drop_server();
- (void) close(sock);
-}
diff --git a/eBones/lib/librkinit/rk_util.c b/eBones/lib/librkinit/rk_util.c
deleted file mode 100644
index 4333d38d306f..000000000000
--- a/eBones/lib/librkinit/rk_util.c
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * $Id: rk_util.c,v 1.1 1993/12/10 19:36:09 dglo Exp gibbs $
- * $Source: /usr/src/eBones/librkinit/RCS/rk_util.c,v $
- * $Author: dglo $
- *
- * This file contains internal routines for general use by the rkinit
- * library and server.
- *
- * See the comment at the top of rk_lib.c for a description of the naming
- * conventions used within the rkinit library.
- */
-
-#if !defined(lint) && !defined(SABER) && !defined(LOCORE) && defined(RCS_HDRS)
-static char *rcsid = "$Id: rk_util.c,v 1.1 1993/12/10 19:36:09 dglo Exp gibbs $";
-#endif /* lint || SABER || LOCORE || RCS_HDRS */
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <string.h>
-#include <setjmp.h>
-#include <signal.h>
-#include <sys/time.h>
-
-#ifdef DEBUG
-#include <syslog.h>
-#endif /* DEBUG */
-
-#include <rkinit.h>
-#include <rkinit_private.h>
-#include <rkinit_err.h>
-
-#define RKINIT_TIMEOUTVAL 60
-
-static char errbuf[BUFSIZ];
-static jmp_buf timeout_env;
-
-#ifdef DEBUG
-static int _rkinit_server_ = FALSE;
-
-#ifdef __STDC__
-void rki_dmsg(char *string)
-#else
-void rki_dmsg(string)
- char *string;
-#endif /* __STDC__ */
-{
- if (_rkinit_server_)
- syslog(LOG_NOTICE, string);
- else
- printf("%s\n", string);
-}
-
-#ifdef __STDC__
-void rki_i_am_server(void)
-#else
-void rki_i_am_server()
-#endif /* __STDC__ */
-{
- _rkinit_server_ = TRUE;
-}
-#else /* DEBUG */
-#ifdef __STDC__
-void rki_dmsg(char *string)
-#else
-void rki_dmsg(string)
- char *string;
-#endif /* __STDC__ */
-{
- return;
-}
-
-#endif /* DEBUG */
-
-#ifdef __STDC__
-const char *rki_mt_to_string(int mt)
-#else
-const char *rki_mt_to_string(mt)
- int mt;
-#endif /* __STDC__ */
-{
- char *string = 0;
-
- switch(mt) {
- case MT_STATUS:
- string = "Status message";
- break;
- case MT_CVERSION:
- string = "Client version";
- break;
- case MT_SVERSION:
- string = "Server version";
- break;
- case MT_RKINIT_INFO:
- string = "Rkinit information";
- break;
- case MT_SKDC:
- string = "Server kdc packet";
- break;
- case MT_CKDC:
- string = "Client kdc packet";
- break;
- case MT_AUTH:
- string = "Authenticator";
- break;
- case MT_DROP:
- string = "Drop server";
- break;
- default:
- string = "Unknown message type";
- break;
- }
-
- return(string);
-}
-
-#ifdef __STDC__
-int rki_choose_version(int *version)
-#else
-int rki_choose_version(version)
- int *version;
-#endif /* __STDC__ */
-{
- int s_lversion; /* lowest version number server supports */
- int s_hversion; /* highest version number server supports */
- int status = RKINIT_SUCCESS;
-
- if ((status =
- rki_rpc_exchange_version_info(RKINIT_LVERSION, RKINIT_HVERSION,
- &s_lversion,
- &s_hversion)) != RKINIT_SUCCESS)
- return(status);
-
- *version = min(RKINIT_HVERSION, s_hversion);
- if (*version < max(RKINIT_LVERSION, s_lversion)) {
- sprintf(errbuf,
- "Can't run version %d client against version %d server.",
- RKINIT_HVERSION, s_hversion);
- rkinit_errmsg(errbuf);
- status = RKINIT_VERSION;
- }
-
- return(status);
-}
-
-#ifdef __STDC__
-int rki_send_rkinit_info(int version, rkinit_info *info)
-#else
-int rki_send_rkinit_info(version, info)
- int version;
- rkinit_info *info;
-#endif /* __STDC__ */
-{
- int status = 0;
-
- if ((status = rki_rpc_send_rkinit_info(info)) != RKINIT_SUCCESS)
- return(status);
-
- return(rki_rpc_get_status());
-}
-
-#ifdef __STDC__
-static void rki_timeout(int signal)
-#else
-static void rki_timeout(signal)
- int signal;
-#endif /* __STDC__ */
-{
- sprintf(errbuf, "%d seconds exceeded.", RKINIT_TIMEOUTVAL);
- rkinit_errmsg(errbuf);
- longjmp(timeout_env, RKINIT_TIMEOUT);
- return;
-}
-
-#ifdef __STDC__
-static void set_timer(int secs)
-#else
-static void set_timer(secs)
- int secs;
-#endif /* __STDC__ */
-{
- struct itimerval timer; /* Time structure for timeout */
-
- /* Set up an itimer structure to send an alarm signal after TIMEOUT
- seconds. */
- timer.it_interval.tv_sec = secs;
- timer.it_interval.tv_usec = 0;
- timer.it_value = timer.it_interval;
-
- (void) setitimer (ITIMER_REAL, &timer, (struct itimerval *)0);
-}
-
-
-#ifdef __STDC__
-void (*rki_setup_timer(jmp_buf env))(int)
-#else
-void (*rki_setup_timer(env))(int)
- jmp_buf env;
-#endif /* __STDC__ */
-{
- bcopy((char *)env, (char *)timeout_env, sizeof(jmp_buf));
- set_timer(RKINIT_TIMEOUTVAL);
- return(signal(SIGALRM, rki_timeout));
-}
-
-#ifdef __STDC__
-void rki_restore_timer(void (*old_alrm)(int))
-#else
-void rki_restore_timer(old_alrm)
- void (*old_alrm)(int);
-#endif /* __STDC__ */
-{
- set_timer(0);
- (void) signal(SIGALRM, old_alrm);
-}
diff --git a/eBones/lib/librkinit/rkinit.3 b/eBones/lib/librkinit/rkinit.3
deleted file mode 100644
index fe6bdf7a1fb6..000000000000
--- a/eBones/lib/librkinit/rkinit.3
+++ /dev/null
@@ -1,167 +0,0 @@
-.\"
-.\" $Header: /local/cvsfiles/kerberos/src/appl/rkinit/man/rkinit.3,v 1.1 1991/12/03 23:21:29 eichin Exp $
-.\" $Source: /local/cvsfiles/kerberos/src/appl/rkinit/man/rkinit.3,v $
-.\" $Author: eichin $
-.\"
-.\"
-.TH RKINIT 3 "November 12, 1989"
-.SH NAME
-rkinit, rkinit_errmsg
-.SH SYNOPSIS
-.nf
-.nj
-.ft B
-#include <rkinit.h>
-#include <rkinit_err.h>
-.PP
-.ft B
-int rkinit(host, r_krealm, info, timeout)
- char *host;
- char *r_krealm;
- rkinit_info *info;
- int timeout;
-.PP
-.ft B
-char *rkinit_errmsg(string)
- char *string;
-.fi
-.ft R
-.SH DESCRIPTION
-This library contains the calls necessary to interface with the
-.I rkinit
-system of remote ticket establishment. See
-.IR rkinit (1)
-for more information on
-.I rkinit
-.PP
-.I rkinit.h
-is the header file that contains information that all clients
-will need to use.
-.PP
-.I rkinit_err.h
-is the
-.I com_err
-error table header file. See
-.IR com_err (3)
-for more information about
-.I com_err.
-.PP
-.IR rkinit ()
-takes as arguments the name of the host on which you wish to
-establish tickets, the kerberos realm of the remote host, a
-fully initialized rkinit_info structure, and a boolean value
-telling
-whether or not
-.IR rkinit ()
-should time out if the transaction
-fails to complete after a certain about of time.
-This call does not know about about default values, so
-something must be filled in for everything except for the ticket
-filename in the rkinit_info structure described below.
-
-.nf
-.nj
-.ft B
-This is the rkinit_info type:
-
-typedef struct {
- char aname[ANAME_SZ + 1];
- char inst[INST_SZ + 1];
- char realm[REALM_SZ + 1];
- char sname[ANAME_SZ + 1];
- char sinst[INST_SZ + 1];
- char username[9]; /* max local name length + 1 */
- char tktfilename[MAXPATHLEN + 1];
- long lifetime;
-} rkinit_info;
-.fi
-.ft R
-
-.I aname
-is the name part of the kerberos principal for which tickets are
-being requested.
-
-.I inst
-is the instance part.
-
-.I realm
-is the realm part.
-
-.I sname
-is the service name of the key that will appear in the remote
-initial ticket (for example, "krbtgt").
-
-.I sname
-is the service instance.
-
-.I username
-is the name of the local user on the remote host who will own
-the ticket file.
-
-.I tktfilename
-is the name of the file on the remote host in which the
-tickets will be stored. This is the only field in the structure
-for which a blank value is filled in. If this value is left
-blank, the server will figure out what to call the ticket file
-by using the kerberos library default as determined by
-.I TKT_FILE
-as defined in
-.IR krb.h .
-
-.I lifetime
-is the lifetime of the tickets in the usual five minute
-intervals. It is possible with this routine, as with
-.IR krb_get_in_tkt (3)
-to request tickets with zero lifetime.
-
-.IR rkinit (),
-while it is running, opens a socket, changes the name
-of the default kerberos ticket file, and changes the signal
-handler for the ALRM signal (if timeout != 0). rkinit()
-restores all these values when it exits whether it exits with
-an error or not, so clients using the rkinit library need not
-worry about this information.
-
-.IR rkinit_errmsg ()
-takes a string as its only argument. Passing
-other than NULL to this routine should be done
-by only the rkinit library and server.
-Doing this sets the current rkinit
-error message. Calling
-.IR rkinit_errmsg ()
-with NULL as the argument returns the current rkinit error
-message.
-Although the rkinit library uses
-.IR com_err (3)
-for error handling, the error messages returned by
-.IR com_err ()
-may not be specific enough. A client could report the error
-message returned by rkinit as follows:
-
-
-.nf
-.nj
-.ft B
-if (status = rkinit(host, r_krealm, &info, timeout)) {
- com_err(argv[0], status, "while obtaining remote tickets:");
- fprintf(stderr, "%s\\n", rkinit_errmsg(0));
- exit(1);
-}
-.fi
-.ft R
-
-.SH SEE ALSO
-kerberos(1), kerberos(3), rkinit(1), rkinitd(8)
-
-.SH DIAGNOSTICS
-.IR rkinit ()
-is usually good about reporting error messages to the client.
-It will probably not handle uninitialized variables well,
-however. Make sure that things like the realm of the remote
-host and the lifetime of the tickets have been properly
-initialized before calling
-.IR rkinit ().
-
-
-.SH AUTHOR
-Emanuel Jay Berkenbilt (MIT-Project Athena)
diff --git a/eBones/lib/librkinit/rkinit_err.et b/eBones/lib/librkinit/rkinit_err.et
deleted file mode 100644
index d0ade5ba11cb..000000000000
--- a/eBones/lib/librkinit/rkinit_err.et
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-# $Header: /local/cvsfiles/kerberos/src/appl/rkinit/lib/rkinit_err.et,v 1.1 1991/12/03 23:20:58 eichin Exp $
-# $Source: /local/cvsfiles/kerberos/src/appl/rkinit/lib/rkinit_err.et,v $
-# $Author: eichin $
-#
-# These error messages will probably not be printed by com_err.
-# Instead, a better error message (with specific information)
-# will be obtained by a call to rkinit_errmsg().
-#
-
-et rkin
-
-ec RKINIT_RCSID, "$Header: /local/cvsfiles/kerberos/src/appl/rkinit/lib/rkinit_err.et,v 1.1 1991/12/03 23:20:58 eichin Exp $"
-ec RKINIT_VERSION, "Version mismatch"
-ec RKINIT_HOST, "Failure getting host information"
-ec RKINIT_SERV, "Failure getting service information (/etc/services)"
-ec RKINIT_SOCKET, "Failure setting up socket"
-ec RKINIT_CONNECT, "Failure connecting"
-ec RKINIT_PACKET, "Bad packet type"
-ec RKINIT_WRITE, "Failure writing"
-ec RKINIT_READ, "Failure reading"
-ec RKINIT_DAEMON, "Error reported by rkinitd"
-ec RKINIT_KERBEROS, "Kerberos error"
-ec RKINIT_DES, "Des error"
-ec RKINIT_GETPEER, "Failure in getpeername"
-ec RKINIT_GETSOCK, "Failure in getsockname"
-ec RKINIT_MEMORY, "Out of memory"
-ec RKINIT_TIMEOUT, "Timed out"
-ec RKINIT_DROPPED, "Connection dropped"
-
-ec RKINIT_LAST, "Last error message"
-end
diff --git a/eBones/libexec/Makefile b/eBones/libexec/Makefile
deleted file mode 100644
index b7193e672228..000000000000
--- a/eBones/libexec/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# From: @(#)Makefile 5.1 (Berkeley) 6/25/90
-# $Id: Makefile,v 1.1 1995/09/13 17:23:59 markm Exp $
-
-SUBDIR= kpropd registerd rkinitd
-
-.include <bsd.subdir.mk>
diff --git a/eBones/libexec/Makefile.inc b/eBones/libexec/Makefile.inc
deleted file mode 100644
index d694f9b03653..000000000000
--- a/eBones/libexec/Makefile.inc
+++ /dev/null
@@ -1,5 +0,0 @@
-# @(#)Makefile.inc 8.1 (Berkeley) 6/4/93
-
-BINDIR?= /usr/libexec
-
-.include "../Makefile.inc"
diff --git a/eBones/libexec/kpropd/Makefile b/eBones/libexec/kpropd/Makefile
deleted file mode 100644
index 0f1f420eda8b..000000000000
--- a/eBones/libexec/kpropd/Makefile
+++ /dev/null
@@ -1,10 +0,0 @@
-# From: @(#)Makefile 5.1 (Berkeley) 6/25/90
-# $Id: Makefile,v 1.4 1995/09/13 17:24:02 markm Exp $
-
-PROG= kpropd
-CFLAGS+=-I${.CURDIR}/../../usr.sbin/kprop
-DPADD+= ${LIBKRB} ${LIBDES}
-LDADD= -lkrb -ldes
-NOMAN= noman
-
-.include <bsd.prog.mk>
diff --git a/eBones/libexec/kpropd/kpropd.c b/eBones/libexec/kpropd/kpropd.c
deleted file mode 100644
index 1b232dfc0ded..000000000000
--- a/eBones/libexec/kpropd/kpropd.c
+++ /dev/null
@@ -1,453 +0,0 @@
-/*
- * Copyright 1987 by the Massachusetts Institute of Technology.
- *
- * For copying and distribution information, please see the file
- * MIT.Copyright.
- *
- * kprop/kpropd have been abandonded by Project Athena (for good reason)
- * however they still form the basis for one of the better ways for
- * distributing kerberos databases. This version of kpropd has been
- * adapted from the MIT distribution to work properly in a 4.4BSD
- * environment.
- *
- * $Revision: 1.1.1.1 $ $Date: 1995/08/03 07:37:19 $ $State: Exp $
- * $Source: /usr/cvs/src/eBones/kpropd/kpropd.c,v $
- *
- * Log: kpropd.c,v
- * Revision 4.5 92/10/23 15:45:46 tytso Make it possible
- * to specify the location of the kdb_util program.
- *
- * Revision 4.4 91/06/15 03:20:51 probe Fixed <sys/types.h> inclusion
- *
- * Revision 4.3 89/05/16 15:06:04 wesommer Fix operator precedence stuff.
- * Programmer: John Kohl.
- *
- * Revision 4.2 89/03/23 10:24:00 jtkohl NOENCRYPTION changes
- *
- * Revision 4.1 89/01/24 20:33:48 root name change
- *
- * Revision 4.0 89/01/24 18:45:06 wesommer Original version; programmer:
- * wesommer auditor: jon
- *
- * Revision 4.5 88/01/08 18:07:46 jon formatting and rcs header changes */
-
-/*
- * This program is run on slave servers, to catch updates "pushed" from the
- * master kerberos server in a realm.
- */
-
-#if 0
-#ifndef lint
-static char rcsid_kpropd_c[] =
-"$Header: /usr/cvs/src/eBones/kpropd/kpropd.c,v 1.1.1.1 1995/08/03 07:37:19 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <errno.h>
-#include <unistd.h>
-#include <ctype.h>
-#include <sys/types.h>
-#include <sys/file.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#include <syslog.h>
-#include <krb.h>
-#include <krb_db.h>
-
-#include "kprop.h"
-
-static char kprop_version[KPROP_PROT_VERSION_LEN] = KPROP_PROT_VERSION;
-
-int debug = 0;
-
-int pause_int = 300; /* 5 minutes in seconds */
-unsigned long get_data_checksum(int fd, Key_schedule key_sched);
-void recv_auth(int in, int out, int private,
- struct sockaddr_in *remote, struct sockaddr_in *local,
- AUTH_DAT *ad);
-static void SlowDeath(void);
-void recv_clear(int in, int out);
- /* leave room for private msg overhead */
-static char buf[KPROP_BUFSIZ + 64];
-
-static void
-usage()
-{
- fprintf(stderr, "\nUsage: kpropd [-r realm] [-s srvtab] [-P kdb_util] fname\n");
- exit(2);
-}
-
-void
-main(argc, argv)
- int argc;
- char **argv;
-{
- struct sockaddr_in from;
- struct sockaddr_in sin;
- int s2, fd, n, fdlock;
- int from_len;
- char local_file[256];
- char local_temp[256];
- struct hostent *hp;
- char hostname[256];
- char from_str[128];
- long kerror;
- AUTH_DAT auth_dat;
- KTEXT_ST ticket;
- char my_instance[INST_SZ];
- char my_realm[REALM_SZ];
- char cmd[1024];
- short net_transfer_mode, transfer_mode;
- Key_schedule session_sched;
- char version[9];
- int c;
- extern char *optarg;
- extern int optind;
- int rflag = 0;
- char *srvtab = "";
- char *local_db = DBM_FILE;
- char *kdb_util = KPROP_KDB_UTIL;
-
- if (argv[argc - 1][0] == 'k' && isdigit(argv[argc - 1][1])) {
- argc--; /* ttys file hack */
- }
- while ((c = getopt(argc, argv, "r:s:d:P:")) != EOF) {
- switch (c) {
- case 'r':
- rflag++;
- strcpy(my_realm, optarg);
- break;
- case 's':
- srvtab = optarg;
- break;
- case 'd':
- local_db = optarg;
- break;
- case 'P':
- kdb_util = optarg;
- break;
- default:
- usage();
- break;
- }
- }
- if (optind != argc - 1)
- usage();
-
- openlog("kpropd", LOG_PID, LOG_AUTH);
-
- strcpy(local_file, argv[optind]);
- strcat(strcpy(local_temp, argv[optind]), ".tmp");
-
-#ifdef STANDALONE
-
- if ((sp = getservbyname("krb_prop", "tcp")) == NULL) {
- syslog(LOG_ERR, "tcp/krb_prop: unknown service.");
- SlowDeath();
- }
- bzero(&sin, sizeof sin);
- sin.sin_port = sp->s_port;
- sin.sin_family = AF_INET;
-
- if ((s = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
- syslog(LOG_ERR, "socket: %m");
- SlowDeath();
- }
- if (bind(s, (struct sockaddr *)&sin, sizeof sin) < 0) {
- syslog(LOG_ERR, "bind: %m");
- SlowDeath();
- }
-
-#endif /* STANDALONE */
-
- if (!rflag) {
- kerror = krb_get_lrealm(my_realm, 1);
- if (kerror != KSUCCESS) {
- syslog(LOG_ERR, "can't get local realm. %s",
- krb_err_txt[kerror]);
- SlowDeath();
- }
- }
- if (gethostname(my_instance, sizeof(my_instance)) != 0) {
- syslog(LOG_ERR, "gethostname: %m");
- SlowDeath();
- }
-
-#ifdef STANDALONE
- listen(s, 5);
- for (;;) {
- from_len = sizeof from;
- if ((s2 = accept(s, (struct sockaddr *)&from, &from_len)) < 0) {
- syslog(LOG_ERR, "accept: %m");
- continue;
- }
-#else /* !STANDALONE */
-
- s2 = 0;
- from_len = sizeof from;
- if (getpeername(0, (struct sockaddr *)&from, &from_len) < 0) {
- syslog(LOG_ERR, "getpeername: %m");
- SlowDeath();
- }
-
-#endif /* !STANDALONE */
-
- strcpy(from_str, inet_ntoa(from.sin_addr));
-
- if ((hp = gethostbyaddr((char *) &(from.sin_addr.s_addr),
- from_len, AF_INET)) == NULL) {
- strcpy(hostname, "UNKNOWN");
- } else {
- strcpy(hostname, hp->h_name);
- }
-
- syslog(LOG_INFO, "connection from %s, %s", hostname, from_str);
-
- /* for krb_rd_{priv, safe} */
- n = sizeof sin;
- if (getsockname(s2, (struct sockaddr *)&sin, &n) != 0) {
- syslog(LOG_ERR, "can't get socketname: %m");
- SlowDeath();
- }
- if (n != sizeof(sin)) {
- syslog(LOG_ERR, "can't get socketname (length)");
- SlowDeath();
- }
- if ((fdlock = open(local_temp, O_WRONLY | O_CREAT, 0600)) < 0) {
- syslog(LOG_ERR, "open: %m");
- SlowDeath();
- }
- if (flock(fdlock, LOCK_EX | LOCK_NB)) {
- syslog(LOG_ERR, "flock: %m");
- SlowDeath();
- }
- if ((fd = creat(local_temp, 0600)) < 0) {
- syslog(LOG_ERR, "creat: %m");
- SlowDeath();
- }
- if ((n = read(s2, buf, sizeof(kprop_version)))
- != sizeof(kprop_version)) {
- syslog(LOG_ERR,
- "can't read protocol version (%d bytes)", n);
- SlowDeath();
- }
- if (strncmp(buf, kprop_version, sizeof(kprop_version)) != 0) {
- syslog(LOG_ERR, "unsupported version %s", buf);
- SlowDeath();
- }
- if ((n = read(s2, &net_transfer_mode,
- sizeof(net_transfer_mode)))
- != sizeof(net_transfer_mode)) {
- syslog(LOG_ERR, "can't read transfer mode");
- SlowDeath();
- }
- transfer_mode = ntohs(net_transfer_mode);
- kerror = krb_recvauth(KOPT_DO_MUTUAL, s2, &ticket,
- KPROP_SERVICE_NAME,
- my_instance,
- &from,
- &sin,
- &auth_dat,
- srvtab,
- session_sched,
- version);
- if (kerror != KSUCCESS) {
- syslog(LOG_ERR, "%s calling getkdata",
- krb_err_txt[kerror]);
- SlowDeath();
- }
- syslog(LOG_INFO, "connection from %s.%s@%s",
- auth_dat.pname, auth_dat.pinst, auth_dat.prealm);
-
- /*
- * AUTHORIZATION is done here. We might want to expand this
- * to read an acl file at some point, but allowing for now
- * KPROP_SERVICE_NAME.KRB_MASTER@local-realm is fine ...
- */
-
- if ((strcmp(KPROP_SERVICE_NAME, auth_dat.pname) != 0) ||
- (strcmp(KRB_MASTER, auth_dat.pinst) != 0) ||
- (strcmp(my_realm, auth_dat.prealm) != 0)) {
- syslog(LOG_NOTICE, "authorization denied");
- SlowDeath();
- }
- switch (transfer_mode) {
- case KPROP_TRANSFER_PRIVATE:
- recv_auth(s2, fd, 1 /* private */ , &from, &sin, &auth_dat);
- break;
- case KPROP_TRANSFER_SAFE:
- recv_auth(s2, fd, 0 /* safe */ , &from, &sin, &auth_dat);
- break;
- case KPROP_TRANSFER_CLEAR:
- recv_clear(s2, fd);
- break;
- default:
- syslog(LOG_ERR, "bad transfer mode %d", transfer_mode);
- SlowDeath();
- }
-
- if (transfer_mode != KPROP_TRANSFER_PRIVATE) {
- syslog(LOG_ERR, "non-private transfers not supported\n");
- SlowDeath();
-#ifdef doesnt_work_yet
- lseek(fd, (long) 0, L_SET);
- if (auth_dat.checksum != get_data_checksum(fd, session_sched)) {
- syslog(LOG_ERR, "checksum doesn't match");
- SlowDeath();
- }
-#endif
- } else {
- struct stat st;
- fstat(fd, &st);
- if (st.st_size != auth_dat.checksum) {
- syslog(LOG_ERR, "length doesn't match");
- SlowDeath();
- }
- }
- close(fd);
- close(s2);
-
- if (rename(local_temp, local_file) < 0) {
- syslog(LOG_ERR, "rename: %m");
- SlowDeath();
- }
-
- if (flock(fdlock, LOCK_UN)) {
- syslog(LOG_ERR, "flock (unlock): %m");
- SlowDeath();
- }
- close(fdlock);
- sprintf(cmd, "%s load %s %s\n", kdb_util, local_file, local_db);
- if (system(cmd) != 0) {
- syslog(LOG_ERR, "couldn't load database");
- SlowDeath();
- }
-
-#ifdef STANDALONE
- }
-#endif
-
-}
-
-void
-recv_auth(in, out, private, remote, local, ad)
- int in, out;
- int private;
- struct sockaddr_in *remote, *local;
- AUTH_DAT *ad;
-{
- u_long length;
- long kerror;
- int n;
- MSG_DAT msg_data;
- Key_schedule session_sched;
-
- if (private)
-#ifdef NOENCRYPTION
- bzero((char *) session_sched, sizeof(session_sched));
-#else
- if (key_sched((C_Block *)ad->session, session_sched)) {
- syslog(LOG_ERR, "can't make key schedule");
- SlowDeath();
- }
-#endif
-
- while (1) {
- n = krb_net_read(in, (char *)&length, sizeof length);
- if (n == 0)
- break;
- if (n < 0) {
- syslog(LOG_ERR, "read: %m");
- SlowDeath();
- }
- length = ntohl(length);
- if (length > sizeof buf) {
- syslog(LOG_ERR, "read length %d, bigger than buf %d",
- length, sizeof buf);
- SlowDeath();
- }
- n = krb_net_read(in, buf, length);
- if (n < 0) {
- syslog(LOG_ERR, "kpropd: read: %m");
- SlowDeath();
- }
- if (private)
- kerror = krb_rd_priv(buf, n, session_sched, ad->session,
- remote, local, &msg_data);
- else
- kerror = krb_rd_safe(buf, n, (C_Block *)ad->session,
- remote, local, &msg_data);
- if (kerror != KSUCCESS) {
- syslog(LOG_ERR, "%s: %s",
- private ? "krb_rd_priv" : "krb_rd_safe",
- krb_err_txt[kerror]);
- SlowDeath();
- }
- if (write(out, msg_data.app_data, msg_data.app_length) !=
- msg_data.app_length) {
- syslog(LOG_ERR, "write: %m");
- SlowDeath();
- }
- }
-}
-
-void
-recv_clear(in, out)
- int in, out;
-{
- int n;
-
- while (1) {
- n = read(in, buf, sizeof buf);
- if (n == 0)
- break;
- if (n < 0) {
- syslog(LOG_ERR, "read: %m");
- SlowDeath();
- }
- if (write(out, buf, n) != n) {
- syslog(LOG_ERR, "write: %m");
- SlowDeath();
- }
- }
-}
-
-static void
-SlowDeath()
-{
-#ifdef STANDALONE
- sleep(pause_int);
-#endif
- exit(1);
-}
-
-#ifdef doesnt_work_yet
-unsigned long
-get_data_checksum(fd, key_sched)
- int fd;
- Key_schedule key_sched;
-{
- unsigned long cksum = 0;
- unsigned long cbc_cksum();
- int n;
- char buf[BUFSIZ];
- char obuf[8];
-
- while (n = read(fd, buf, sizeof buf)) {
- if (n < 0) {
- syslog(LOG_ERR, "read (in checksum test): %m");
- SlowDeath();
- }
-#ifndef NOENCRYPTION
- cksum += cbc_cksum(buf, obuf, n, key_sched, key_sched);
-#endif
- }
- return cksum;
-}
-#endif
diff --git a/eBones/libexec/registerd/Makefile b/eBones/libexec/registerd/Makefile
deleted file mode 100644
index af9e2cab5ef7..000000000000
--- a/eBones/libexec/registerd/Makefile
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Copyright (c) 1990 The Regents of the University of California.
-# All rights reserved.
-#
-# %sccs.include.redist.sh
-#
-# @(#)Makefile 8.1 (Berkeley) 6/1/93
-#
-# $Id: Makefile,v 1.4 1995/09/13 17:24:03 markm Exp $
-
-PROG= registerd
-SRCS= registerd.c
-CFLAGS+=-DCRYPT -DKERBEROS -I${.CURDIR}/../../usr.bin/register
-DPADD+= ${LIBKDB} ${LIBKRB} ${LIBDES}
-LDADD= -lkdb -lkrb -ldes
-MAN8= registerd.8
-
-.include <bsd.prog.mk>
diff --git a/eBones/libexec/registerd/registerd.8 b/eBones/libexec/registerd/registerd.8
deleted file mode 100644
index 7ceff7511f90..000000000000
--- a/eBones/libexec/registerd/registerd.8
+++ /dev/null
@@ -1,69 +0,0 @@
-.\" Copyright (c) 1990, 1991, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\" must display the following acknowledgement:
-.\" This product includes software developed by the University of
-.\" California, Berkeley and its contributors.
-.\" 4. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)registerd.8 8.2 (Berkeley) 12/11/93
-.\"
-.Dd December 11, 1993
-.Dt REGISTERD 8
-.Os
-.Sh NAME
-.Nm registerd
-.Nd Kerberos registration daemon
-.Sh SYNOPSIS
-.Nm registerd
-.Sh DESCRIPTION
-Act as a registration agent for a Kerberos domain.
-.Sh FILES
-.Bl -tag -width /etc/kerberosIV/register_keys -compact
-.It Pa /.update.keyxx.xx.xx.xx
-shared
-.Tn DES
-key with server
-.It Pa /etc/kerberosIV/principal*
-Kerberos database
-.It Pa /etc/kerberosIV/register_keys
-directory containing keys for trusted hosts
-.El
-.Sh SEE ALSO
-.Xr registerd 8 ,
-.Xr kerberos 1
-.Sh DIAGNOSTICS
-.Dq Already exists ,
-if the user already exists in the Kerberos database.
-.Pp
-.Dq Permission Denied ,
-if the host on which register is being run is untrusted.
-.Sh HISTORY
-The
-.Nm registerd
-utility
-first appeared in 4.4BSD.
-
diff --git a/eBones/libexec/registerd/registerd.c b/eBones/libexec/registerd/registerd.c
deleted file mode 100644
index 36c7a742ac46..000000000000
--- a/eBones/libexec/registerd/registerd.c
+++ /dev/null
@@ -1,355 +0,0 @@
-/*-
- * Copyright (c) 1990, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#if 0
-#ifndef lint
-static char copyright[] =
-"@(#) Copyright (c) 1990, 1993\n\
- The Regents of the University of California. All rights reserved.\n";
-static char sccsid[] = "@(#)registerd.c 8.1 (Berkeley) 6/1/93";
-#endif /* not lint */
-#endif
-
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/signal.h>
-#include <sys/resource.h>
-#include <sys/param.h>
-#include <sys/file.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <syslog.h>
-#include <des.h>
-#include <krb.h>
-#include <krb_db.h>
-#include <string.h>
-#include <stdio.h>
-#include <unistd.h>
-#include "register_proto.h"
-#include "pathnames.h"
-
-#define KBUFSIZ (sizeof(struct keyfile_data))
-#define RCRYPT 0x00
-#define CLEAR 0x01
-
-char *progname, msgbuf[BUFSIZ];
-
-void cleanup(void);
-void die(int);
-void send_packet(char *msg, int flag);
-int net_get_principal(char *pname, char *iname, C_Block *keyp);
-int do_append(struct sockaddr_in *sinp);
-
-void
-main(argc, argv)
- int argc;
- char **argv;
-{
- static Key_schedule schedule;
- static struct rlimit rl = { 0, 0 };
- struct keyfile_data *kfile;
- u_char code;
- int kf, retval, sval;
- struct sockaddr_in sin;
- char keyfile[MAXPATHLEN], keybuf[KBUFSIZ];
-
- progname = argv[0]; /* for the library routines */
-
- openlog("registerd", LOG_PID, LOG_AUTH);
-
- signal(SIGHUP, SIG_IGN);
- signal(SIGINT, SIG_IGN);
- signal(SIGTSTP, SIG_IGN);
- signal(SIGPIPE, die);
-
- if (setrlimit(RLIMIT_CORE, &rl) < 0) {
- syslog(LOG_ERR, "setrlimit: %m");
- exit(1);
- }
-
-
- /* figure out who we are talking to */
-
- sval = sizeof(sin);
- if (getpeername(0, (struct sockaddr *) &sin, &sval) < 0) {
- syslog(LOG_ERR, "getpeername: %m");
- exit(1);
- }
-
- /* get encryption key */
-
- (void) sprintf(keyfile, "%s/%s%s",
- SERVER_KEYDIR,
- KEYFILE_BASE,
- inet_ntoa(sin.sin_addr));
-
- if ((kf = open(keyfile, O_RDONLY)) < 0) {
- syslog(LOG_ERR,
- "error opening Kerberos update keyfile (%s): %m", keyfile);
- sprintf(msgbuf,
- "couldn't open session keyfile for your host");
- send_packet(msgbuf, CLEAR);
- exit(1);
- }
-
- if (read(kf, keybuf, KBUFSIZ) != KBUFSIZ) {
- syslog(LOG_ERR, "wrong read size of Kerberos update keyfile");
- sprintf(msgbuf,
- "couldn't read session key from your host's keyfile");
- send_packet(msgbuf, CLEAR);
- exit(1);
- }
- sprintf(msgbuf, GOTKEY_MSG);
- send_packet(msgbuf, CLEAR);
- kfile = (struct keyfile_data *) keybuf;
- key_sched((C_Block *)kfile->kf_key, schedule);
- des_set_key((des_cblock *)kfile->kf_key, schedule);
-
- /* read the command code byte */
-
- if (des_read(0, &code, 1) == 1) {
-
- switch(code) {
- case APPEND_DB:
- retval = do_append(&sin);
- break;
- case ABORT:
- cleanup();
- close(0);
- exit(0);
- default:
- retval = KFAILURE;
- syslog(LOG_NOTICE,
- "invalid command code on db update (0x%x)",
- code);
- }
-
- } else {
- retval = KFAILURE;
- syslog(LOG_ERR,
- "couldn't read command code on Kerberos update");
- }
-
- code = (u_char) retval;
- if (code != KSUCCESS) {
- sprintf(msgbuf, "%s", krb_err_txt[code]);
- send_packet(msgbuf, RCRYPT);
- } else {
- sprintf(msgbuf, "Update complete.");
- send_packet(msgbuf, RCRYPT);
- }
- cleanup();
- close(0);
- exit(0);
-}
-
-#define MAX_PRINCIPAL 10
-static Principal principal_data[MAX_PRINCIPAL];
-static C_Block key, master_key;
-static Key_schedule master_key_schedule;
-
-int
-do_append(sinp)
- struct sockaddr_in *sinp;
-{
- Principal default_princ;
- char input_name[ANAME_SZ];
- char input_instance[INST_SZ];
- int j,n, more;
- long mkeyversion;
-
-
-
- /* get master key from MKEYFILE */
- if (kdb_get_master_key(0, master_key, master_key_schedule) != 0) {
- syslog(LOG_ERR, "couldn't get master key");
- return(KFAILURE);
- }
-
- mkeyversion = kdb_verify_master_key(master_key, master_key_schedule, NULL);
- if (mkeyversion < 0) {
- syslog(LOG_ERR, "couldn't validate master key");
- return(KFAILURE);
- }
-
- n = kerb_get_principal(KERB_DEFAULT_NAME, KERB_DEFAULT_INST,
- &default_princ, 1, &more);
-
- if (n != 1) {
- syslog(LOG_ERR, "couldn't get default principal");
- return(KFAILURE);
- }
-
- /*
- * get principal name, instance, and password from network.
- * convert password to key and store it
- */
-
- if (net_get_principal(input_name, input_instance, (C_Block *)key) != 0) {
- return(KFAILURE);
- }
-
-
- j = kerb_get_principal(
- input_name,
- input_instance,
- principal_data,
- MAX_PRINCIPAL,
- &more
- );
-
- if (j != 0) {
- /* already in database, no update */
- syslog(LOG_NOTICE,
- "attempt to add duplicate entry for principal %s.%s",
- input_name, input_instance);
- return(KDC_PR_N_UNIQUE);
- }
-
- /*
- * set up principal's name, instance
- */
-
- strcpy(principal_data[0].name, input_name);
- strcpy(principal_data[0].instance, input_instance);
- principal_data[0].old = NULL;
-
-
- /* and the expiration date and version #s */
-
- principal_data[0].exp_date = default_princ.exp_date;
- strcpy(principal_data[0].exp_date_txt, default_princ.exp_date_txt);
- principal_data[0].max_life = default_princ.max_life;
- principal_data[0].attributes = default_princ.attributes;
- principal_data[0].kdc_key_ver = default_princ.kdc_key_ver;
-
-
- /* and the key */
-
- kdb_encrypt_key(key, key, master_key, master_key_schedule,
- ENCRYPT);
- bcopy(key, &principal_data[0].key_low, 4);
- bcopy(((long *) key) + 1, &principal_data[0].key_high,4);
- bzero(key, sizeof(key));
-
- principal_data[0].key_version = 1; /* 1st entry */
-
- /* and write it to the database */
-
- if (kerb_put_principal(&principal_data[0], 1)) {
- syslog(LOG_INFO, "Kerberos update failure: put_principal failed");
- return(KFAILURE);
- }
-
- syslog(LOG_NOTICE, "Kerberos update: wrote new record for %s.%s from %s",
- principal_data[0].name,
- principal_data[0].instance,
- inet_ntoa(sinp->sin_addr)
- );
-
- return(KSUCCESS);
-
-}
-
-void
-send_packet(msg,flag)
- char *msg;
- int flag;
-{
- int len = strlen(msg);
- msg[len++] = '\n';
- msg[len] = '\0';
- if (len > sizeof(msgbuf)) {
- syslog(LOG_ERR, "send_packet: invalid msg size");
- return;
- }
- if (flag == RCRYPT) {
- if (des_write(0, msg, len) != len)
- syslog(LOG_ERR, "couldn't write reply message");
- } else if (flag == CLEAR) {
- if (write(0, msg, len) != len)
- syslog(LOG_ERR, "couldn't write reply message");
- } else
- syslog(LOG_ERR, "send_packet: invalid flag (%d)", flag);
-
-}
-
-int
-net_get_principal(pname, iname, keyp)
- char *pname, *iname;
- C_Block *keyp;
-{
- int cc;
- static char password[255];
-
- cc = des_read(0, pname, ANAME_SZ);
- if (cc != ANAME_SZ) {
- syslog(LOG_ERR, "couldn't get principal name");
- return(-1);
- }
-
- cc = des_read(0, iname, INST_SZ);
- if (cc != INST_SZ) {
- syslog(LOG_ERR, "couldn't get instance name");
- return(-1);
- }
-
- cc = des_read(0, password, 255);
- if (cc != 255) {
- syslog(LOG_ERR, "couldn't get password");
- bzero(password, 255);
- return(-1);
- }
-
- string_to_key(password, (des_cblock *)*keyp);
- bzero(password, 255);
- return(0);
-}
-
-void
-cleanup()
-{
- bzero(master_key, sizeof(master_key));
- bzero(key, sizeof(key));
- bzero(master_key_schedule, sizeof(master_key_schedule));
-}
-
-void
-die(sig)
- int sig;
-{
- syslog(LOG_ERR, "remote end died (SIGPIPE)");
- cleanup();
- exit(1);
-}
diff --git a/eBones/libexec/rkinitd/Makefile b/eBones/libexec/rkinitd/Makefile
deleted file mode 100644
index 387264416389..000000000000
--- a/eBones/libexec/rkinitd/Makefile
+++ /dev/null
@@ -1,12 +0,0 @@
-# @(#)Makefile 8.1 (Berkeley) 6/4/93
-
-PROG= rkinitd
-SRCS= ${RKINITOBJDIR}/rkinit_err.h rkinitd.c util.c rpc.c krb.c
-CFLAGS+=-I${KRBOBJDIR} -I${RKINITOBJDIR}
-DPADD= ${LIBKRB} ${LIBDES}
-LDADD= -L${RKINITOBJDIR} -lrkinit -L${KRBOBJDIR} -lkrb \
- -L${DESOBJDIR} -ldes
-
-MAN8= rkinitd.8
-
-.include <bsd.prog.mk>
diff --git a/eBones/libexec/rkinitd/krb.c b/eBones/libexec/rkinitd/krb.c
deleted file mode 100644
index 23734db4307d..000000000000
--- a/eBones/libexec/rkinitd/krb.c
+++ /dev/null
@@ -1,388 +0,0 @@
-/*
- * $Id: krb.c,v 1.1 1993/07/29 22:45:19 dglo Exp gibbs $
- * $Source: /usr/src/eBones/rkinitd/RCS/krb.c,v $
- * $Author: dglo $
- *
- * This file contains all of the kerberos part of rkinitd.
- */
-
-#if !defined(lint) && !defined(SABER) && !defined(LOCORE) && defined(RCS_HDRS)
-static char *rcsid = "$Id: krb.c,v 1.1 1993/07/29 22:45:19 dglo Exp gibbs $";
-#endif /* lint || SABER || LOCORE || RCS_HDRS */
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <errno.h>
-#include <syslog.h>
-#include <netinet/in.h>
-#include <setjmp.h>
-#include <string.h>
-#include <unistd.h>
-#include <pwd.h>
-#include <krb.h>
-#include <des.h>
-
-#include <rkinit.h>
-#include <rkinit_private.h>
-#include <rkinit_err.h>
-
-#include "rkinitd.h"
-
-#define FAILURE (!RKINIT_SUCCESS)
-
-extern int errno;
-
-static char errbuf[BUFSIZ];
-
-typedef struct {
- jmp_buf env;
-} rkinitd_intkt_info;
-
-
-#if defined(_AIX) && defined(_IBMR2)
-
-#include <sys/id.h>
-
-/*
- * The RIOS has bizzarre ideas about changing uids around. They are
- * such that the seteuid and setruid calls here fail. For this reason
- * we are replacing the seteuid and setruid calls.
- *
- * The bizzarre ideas are as follows:
- *
- * The effective ID may be changed only to the current real or
- * saved IDs.
- *
- * The saved uid may be set only if the real and effective
- * uids are being set to the same value.
- *
- * The real uid may be set only if the effective
- * uid is being set to the same value.
- */
-
-#ifdef __STDC__
-static int setruid(uid_t ruid)
-#else
-static int setruid(ruid)
- uid_t ruid;
-#endif /* __STDC__ */
-{
- uid_t euid;
-
- euid = geteuid();
-
- if (setuidx(ID_REAL | ID_EFFECTIVE, ruid) == -1)
- return (-1);
-
- return (setuidx(ID_EFFECTIVE, euid));
-}
-
-
-#ifdef __STDC__
-static int seteuid(uid_t euid)
-#else
-static int seteuid(euid)
- uid_t euid;
-#endif /* __STDC__ */
-{
- uid_t ruid;
-
- ruid = getuid();
-
- if (setuidx(ID_SAVED | ID_REAL | ID_EFFECTIVE, euid) == -1)
- return (-1);
-
- return (setruid(ruid));
-}
-
-
-#ifdef __STDC__
-static int setreuid(uid_t ruid, uid_t euid)
-#else
-static int setreuid(ruid, euid)
- uid_t ruid;
- uid_t euid;
-#endif /* __STDC__ */
-{
- if (seteuid(euid) == -1)
- return (-1);
-
- return (setruid(ruid));
-}
-
-
-#ifdef __STDC__
-static int setuid(uid_t uid)
-#else
-static int setuid(uid)
- uid_t uid;
-#endif /* __STDC__ */
-{
- return (setreuid(uid, uid));
-}
-
-#endif /* RIOS */
-
-
-#ifdef __STDC__
-static void this_phost(char *host, int hostlen)
-#else
-static void this_phost(host, hostlen)
- char *host;
- int hostlen;
-#endif /* __STDC__ */
-{
- char this_host[MAXHOSTNAMELEN + 1];
-
- BCLEAR(this_host);
-
- if (gethostname(this_host, sizeof(this_host)) < 0) {
- sprintf(errbuf, "gethostname: %s", sys_errlist[errno]);
- rkinit_errmsg(errbuf);
- error();
- exit(1);
- }
-
- strncpy(host, krb_get_phost(this_host), hostlen - 1);
-}
-
-#ifdef __STDC__
-static int decrypt_tkt(char *user, char *instance, char *realm, char *arg,
- int (*key_proc)(), KTEXT *cipp)
-#else
-static int decrypt_tkt(user, instance, realm, arg, key_proc, cipp)
- char *user;
- char *instance;
- char *realm;
- char *arg;
- int (*key_proc)();
- KTEXT *cipp;
-#endif /* __STDC__ */
-{
- MSG_DAT msg_data; /* Message data containing decrypted data */
- KTEXT_ST auth; /* Authenticator */
- AUTH_DAT auth_dat; /* Authentication data */
- KTEXT cip = *cipp;
- MSG_DAT scip;
- int status = 0;
- des_cblock key;
- des_key_schedule sched;
- char phost[MAXHOSTNAMELEN + 1];
- struct sockaddr_in caddr; /* client internet address */
- struct sockaddr_in saddr; /* server internet address */
-
- rkinitd_intkt_info *rii = (rkinitd_intkt_info *)arg;
-
- u_char enc_data[MAX_KTXT_LEN];
-
- SBCLEAR(auth);
- SBCLEAR(auth_dat);
- SBCLEAR(scip);
- BCLEAR(enc_data);
-
- scip.app_data = enc_data;
-
- /*
- * Exchange with the client our response from the KDC (ticket encrypted
- * in user's private key) for the same ticket encrypted in our
- * (not yet known) session key.
- */
-
- rpc_exchange_tkt(cip, &scip);
-
- /*
- * Get the authenticator
- */
-
- SBCLEAR(auth);
-
- rpc_getauth(&auth, &caddr, &saddr);
-
- /*
- * Decode authenticator and extract session key. The first zero
- * means we don't care what host this comes from. This needs to
- * be done with euid of root so that /etc/srvtab can be read.
- */
-
- BCLEAR(phost);
- this_phost(phost, sizeof(phost));
-
- /*
- * This function has to use longjmp to return to the caller
- * because the kerberos library routine that calls it doesn't
- * pay attention to the return value it gives. That means that
- * if any of these routines failed, the error returned to the client
- * would be "password incorrect".
- */
-
- if ((status = krb_rd_req(&auth, KEY, phost, caddr.sin_addr.s_addr,
- &auth_dat, KEYFILE))) {
- sprintf(errbuf, "krb_rd_req: %s", krb_err_txt[status]);
- rkinit_errmsg(errbuf);
- longjmp(rii->env, status);
- }
-
- bcopy(auth_dat.session, key, sizeof(key));
- if (des_key_sched(&key, sched)) {
- sprintf(errbuf, "Error in des_key_sched");
- rkinit_errmsg(errbuf);
- longjmp(rii->env, RKINIT_DES);
- }
-
- /* Decrypt the data. */
- if ((status =
- krb_rd_priv((u_char *)scip.app_data, scip.app_length,
- sched, key, &caddr, &saddr, &msg_data)) == KSUCCESS) {
- cip->length = msg_data.app_length;
- bcopy(msg_data.app_data, cip->dat, msg_data.app_length);
- cip->dat[cip->length] = 0;
- }
- else {
- sprintf(errbuf, "krb_rd_priv: %s", krb_err_txt[status]);
- rkinit_errmsg(errbuf);
- longjmp(rii->env, status);
- }
-
- return(status);
-}
-
-#ifdef __STDC__
-static int validate_user(char *aname, char *inst, char *realm,
- char *username, char *errmsg)
-#else
-static int validate_user(aname, inst, realm, username, errmsg)
- char *aname;
- char *inst;
- char *realm;
- char *username;
- char *errmsg;
-#endif /* __STDC__ */
-{
- struct passwd *pwnam; /* For access_check and uid */
- AUTH_DAT auth_dat;
- int kstatus = KSUCCESS;
-
- SBCLEAR(auth_dat);
-
- if ((pwnam = getpwnam(username)) == NULL) {
- sprintf(errmsg, "%s does not exist on the remote host.", username);
- return(FAILURE);
- }
-
- strcpy(auth_dat.pname, aname);
- strcpy(auth_dat.pinst, inst);
- strcpy(auth_dat.prealm, realm);
-
- if (seteuid(pwnam->pw_uid) < 0) {
- sprintf(errmsg, "Failure setting euid to %d: %s\n", pwnam->pw_uid,
- sys_errlist[errno]);
- strcpy(errbuf, errmsg);
- error();
- return(FAILURE);
- }
- kstatus = kuserok(&auth_dat, username);
- if (seteuid(0) < 0) {
- sprintf(errmsg, "Failure setting euid to 0: %s\n",
- sys_errlist[errno]);
- strcpy(errbuf, errmsg);
- error();
- return(FAILURE);
- }
-
- if (kstatus != KSUCCESS) {
- sprintf(errmsg, "%s has not allowed you to log in with", username);
- if (strlen(auth_dat.pinst))
- sprintf(errmsg, "%s %s.%s", errmsg, auth_dat.pname,
- auth_dat.pinst);
- else
- sprintf(errmsg, "%s %s", errmsg, auth_dat.pname);
- sprintf(errmsg, "%s@%s tickets.", errmsg, auth_dat.prealm);
- return(FAILURE);
- }
-
- /*
- * Set real uid to owner of ticket file. The library takes care
- * of making the appropriate change.
- */
- if (setruid(pwnam->pw_uid) < 0) {
- sprintf(errmsg, "Failure setting ruid to %d: %s\n", pwnam->pw_uid,
- sys_errlist[errno]);
- strcpy(errbuf, errmsg);
- error();
- return(FAILURE);
- }
-
- return(RKINIT_SUCCESS);
-}
-
-#ifdef __STDC__
-int get_tickets(int version)
-#else
-int get_tickets(version)
- int version;
-#endif /* __STDC__ */
-{
- rkinit_info info;
- AUTH_DAT auth_dat;
-
- int status;
- char errmsg[BUFSIZ]; /* error message for client */
-
- rkinitd_intkt_info rii;
-
- SBCLEAR(info);
- SBCLEAR(auth_dat);
- BCLEAR(errmsg);
- SBCLEAR(rii);
-
- rpc_get_rkinit_info(&info);
-
- /*
- * The validate_user routine makes sure that the principal in question
- * is allowed to log in as username, and if so, does a setuid(localuid).
- * If there is an access violation or an error in setting the uid,
- * an error is returned and the string errmsg is initialized with
- * an error message that will be sent back to the client.
- */
- if ((status = validate_user(info.aname, info.inst, info.realm,
- info.username, errmsg)) != RKINIT_SUCCESS) {
- rpc_send_error(errmsg);
- exit(0);
- }
- else
- rpc_send_success();
-
- /*
- * If the name of a ticket file was specified, set it; otherwise,
- * just use the default.
- */
- if (strlen(info.tktfilename))
- krb_set_tkt_string(info.tktfilename);
-
- /*
- * Call internal kerberos library routine so that we can supply
- * our own ticket decryption routine.
- */
-
- /*
- * We need a setjmp here because krb_get_in_tkt ignores the
- * return value of decrypt_tkt. Thus if we want any of its
- * return values to reach the client, we have to jump out of
- * the routine.
- */
-
- if (setjmp(rii.env) == 0) {
- if ((status = krb_get_in_tkt(info.aname, info.inst, info.realm,
- info.sname, info.sinst, info.lifetime,
- NULL, decrypt_tkt, (char *)&rii))) {
- strcpy(errmsg, krb_err_txt[status]);
- rpc_send_error(errmsg);
- }
- else
- rpc_send_success();
- }
- else
- rpc_send_error(errbuf);
-
- return(RKINIT_SUCCESS);
-}
diff --git a/eBones/libexec/rkinitd/rkinitd.8 b/eBones/libexec/rkinitd/rkinitd.8
deleted file mode 100644
index c90f92e5a17d..000000000000
--- a/eBones/libexec/rkinitd/rkinitd.8
+++ /dev/null
@@ -1,42 +0,0 @@
-.\"
-.\" $Header: /home/ncvs/src/eBones/libexec/rkinitd/rkinitd.8,v 1.2 1995/09/17 07:58:21 markm Exp $
-.\" $Source: /home/ncvs/src/eBones/libexec/rkinitd/rkinitd.8,v $
-.\" $Author: markm $
-.\"
-.\"
-.TH RKINITD 8 "November 12, 1989"
-.UC 4
-.SH NAME
-rkinitd \- server for
-.I rkinit,
-a remote kerberos ticket establishment utility
-.SH SYNOPSIS
-.B rkinitd
-.SH DESCRIPTION
-.I rkinitd
-is the server for
-.I rkinit.
-See
-.IR rkinit (1)
-for information about
-.I rkinit.
-.I rkinitd
-is started from inetd and must be run as root or be installed
-setuid(root) as it needs to be able to read /etc/kerberosIV/srvtab and
-change its uid to create tickets.
-
-.I rkinitd
-times out in 60 seconds if the transaction is not completed.
-
-.I rkinitd
-must be running on a machine that is registered for rlogin
-service; that is, the host must have a srvtab containing an rcmd.<host>
-key where <host> is the value returned by the
-.IR krb_get_phost (3)
-kerberos library call.
-
-.SH SEE ALSO
-rkinit(1), inetd(8), kerberos(1), kerberos(3)
-
-.SH AUTHOR
-Emanuel Jay Berkenbilt (MIT-Project Athena)
diff --git a/eBones/libexec/rkinitd/rkinitd.c b/eBones/libexec/rkinitd/rkinitd.c
deleted file mode 100644
index 724414977c24..000000000000
--- a/eBones/libexec/rkinitd/rkinitd.c
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * $Id: rkinitd.c,v 1.1 1993/12/10 18:54:19 dglo Exp gibbs $
- * $Source: /usr/src/eBones/rkinitd/RCS/rkinitd.c,v $
- * $Author: dglo $
- *
- * This is the main source file for rkinit
- */
-
-#if !defined(lint) && !defined(SABER) && !defined(LOCORE) && defined(RCS_HDRS)
-static char *rcsid = "$Id: rkinitd.c,v 1.1 1993/12/10 18:54:19 dglo Exp gibbs $";
-#endif /* lint || SABER || LOCORE || RCS_HDRS */
-
-#include <stdio.h>
-#include <ctype.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/file.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netdb.h>
-#include <strings.h>
-#include <signal.h>
-#include <sys/time.h>
-#include <pwd.h>
-#include <unistd.h>
-#include <krb.h>
-#include <des.h>
-#include <syslog.h>
-
-#include <rkinit.h>
-#include <rkinit_err.h>
-#include <rkinit_private.h>
-
-#include "rkinitd.h"
-
-extern int errno;
-
-static int inetd = TRUE; /* True if we were started by inetd */
-
-#ifdef __STDC__
-static void usage(void)
-#else
-static void usage()
-#endif /* __STDC__ */
-{
- syslog(LOG_ERR, "rkinitd usage: rkinitd [-notimeout]\n");
- exit(1);
-}
-
-#ifdef __STDC__
-void error(void)
-#else
-void error()
-#endif /* __STDC__ */
-{
- char errbuf[BUFSIZ];
-
- strcpy(errbuf, rkinit_errmsg(0));
- if (strlen(errbuf)) {
- if (inetd)
- syslog(LOG_ERR, "rkinitd: %s", errbuf);
- else
- fprintf(stderr, "rkinitd: %s\n", errbuf);
- }
-}
-
-int
-#ifdef __STDC__
-main(int argc, char *argv[])
-#else
-main(argc, argv)
- int argc;
- char *argv[];
-#endif /* __STDC__ */
-{
- int version; /* Version of the transaction */
-
- int notimeout = FALSE; /* Should we not timeout? */
-
- static char *envinit[1]; /* Empty environment */
- extern char **environ; /* This process's environment */
-
- int status = 0; /* General error code */
-
- /*
- * Clear the environment so that this process does not inherit
- * kerberos ticket variable information from the person who started
- * the process (if a person started it...).
- */
- environ = envinit;
-
- /* Initialize com_err error table */
- init_rkin_err_tbl();
-
-#ifdef DEBUG
- /* This only works if the library was compiled with DEBUG defined */
- rki_i_am_server();
-#endif /* DEBUG */
-
- /*
- * Make sure that we are running as root or can arrange to be
- * running as root. We need both to be able to read /etc/srvtab
- * and to be able to change uid to create tickets.
- */
-
- (void) setuid(0);
- if (getuid() != 0) {
- syslog(LOG_ERR, "rkinitd: not running as root.\n");
- exit(1);
- }
-
- /* Determine whether to time out */
- if (argc == 2) {
- if (strcmp(argv[1], "-notimeout"))
- usage();
- else
- notimeout = TRUE;
- }
- else if (argc != 1)
- usage();
-
- inetd = setup_rpc(notimeout);
-
- if ((status = choose_version(&version) != RKINIT_SUCCESS)) {
- error();
- exit(1);
- }
-
- if ((status = get_tickets(version) != RKINIT_SUCCESS)) {
- error();
- exit(1);
- }
-
- exit(0);
-}
-
-
diff --git a/eBones/libexec/rkinitd/rkinitd.h b/eBones/libexec/rkinitd/rkinitd.h
deleted file mode 100644
index 1a65cba24ae3..000000000000
--- a/eBones/libexec/rkinitd/rkinitd.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * $Id: rkinitd.h,v 1.1 1993/12/10 19:02:10 dglo Exp gibbs $
- * $Source: /usr/src/eBones/rkinitd/RCS/rkinitd.h,v $
- * $Author: dglo $
- *
- * This header file contains function declarations for use for rkinitd
- */
-
-#ifndef __RKINITD_H__
-#define __RKINITD_H__
-
-#if !defined(lint) && !defined(SABER) && !defined(LOCORE) && defined(RCS_HDRS)
-static char *rcsid_rkinitd_h = "$Id: rkinitd.h,v 1.1 1993/12/10 19:02:10 dglo Exp gibbs $";
-#endif /* lint || SABER || LOCORE || RCS_HDRS */
-
-#ifdef __STDC__
-#define RK_PROTO(x) x
-#else
-#define RK_PROTO(x) ()
-#endif /* __STDC__ */
-
-int get_tickets RK_PROTO((int));
-void error RK_PROTO((void));
-int setup_rpc RK_PROTO((int)) ;
-void rpc_exchange_version_info RK_PROTO((int *, int *, int, int));
-void rpc_get_rkinit_info RK_PROTO((rkinit_info *));
-void rpc_send_error RK_PROTO((char *));
-void rpc_send_success RK_PROTO((void));
-void rpc_exchange_tkt RK_PROTO((KTEXT, MSG_DAT *));
-void rpc_getauth RK_PROTO((KTEXT, struct sockaddr_in *, struct sockaddr_in *));
-int choose_version RK_PROTO((int *));
-
-
-#endif /* __RKINITD_H__ */
diff --git a/eBones/libexec/rkinitd/rpc.c b/eBones/libexec/rkinitd/rpc.c
deleted file mode 100644
index 97d4f9f85c4e..000000000000
--- a/eBones/libexec/rkinitd/rpc.c
+++ /dev/null
@@ -1,222 +0,0 @@
-/*
- * $Id: rpc.c,v 1.1 1993/12/10 18:59:29 dglo Exp gibbs $
- * $Source: /usr/src/eBones/rkinitd/RCS/rpc.c,v $
- * $Author: dglo $
- *
- * This file contains the network parts of the rkinit server.
- */
-
-#if !defined(lint) && !defined(SABER) && !defined(LOCORE) && defined(RCS_HDRS)
-static char *rcsid = "$Id: rpc.c,v 1.1 1993/12/10 18:59:29 dglo Exp gibbs $";
-#endif /* lint || SABER || LOCORE || RCS_HDRS */
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <netinet/in.h>
-#include <sys/time.h>
-#include <sys/socket.h>
-#include <syslog.h>
-#include <signal.h>
-#include <errno.h>
-#include <string.h>
-
-#include <rkinit.h>
-#include <rkinit_err.h>
-#include <rkinit_private.h>
-
-#include "rkinitd.h"
-
-#define RKINITD_TIMEOUT 60
-
-extern int errno;
-
-static int in; /* sockets */
-static int out;
-
-static char errbuf[BUFSIZ];
-
-void error();
-
-#ifdef __STDC__
-static void timeout(int signal)
-#else
-static void timeout(signal)
- int signal;
-#endif /* __STDC__ */
-{
- syslog(LOG_WARNING, "rkinitd timed out.\n");
- exit(1);
-
- return;
-}
-
-/*
- * This function does all the network setup for rkinitd.
- * It returns true if we were started from inetd, or false if
- * we were started from the commandline.
- * It causes the program to exit if there is an error.
- */
-#ifdef __STDC__
-int setup_rpc(int notimeout)
-#else
-int setup_rpc(notimeout)
- int notimeout; /* True if we should not timeout */
-#endif /* __STDC__ */
-{
- struct itimerval timer; /* Time structure for timeout */
-
- /* For now, support only inetd. */
- in = 0;
- out = 1;
-
- if (! notimeout) {
- SBCLEAR(timer);
-
- /* Set up an itimer structure to send an alarm signal after timeout
- seconds. */
- timer.it_interval.tv_sec = RKINITD_TIMEOUT;
- timer.it_interval.tv_usec = 0;
- timer.it_value = timer.it_interval;
-
- /* Start the timer. */
- if (setitimer (ITIMER_REAL, &timer, (struct itimerval *)0) < 0) {
- sprintf(errbuf, "setitimer: %s", sys_errlist[errno]);
- rkinit_errmsg(errbuf);
- error();
- exit(1);
- }
-
- signal(SIGALRM, timeout);
- }
-
- return(TRUE);
-}
-
-#ifdef __STDC__
-void rpc_exchange_version_info(int *c_lversion, int *c_hversion,
- int s_lversion, int s_hversion)
-#else
-void rpc_exchange_version_info(c_lversion, c_hversion, s_lversion, s_hversion)
- int *c_lversion;
- int *c_hversion;
- int s_lversion;
- int s_hversion;
-#endif /* __STDC__ */
-{
- u_char version_info[VERSION_INFO_SIZE];
- u_int32_t length = sizeof(version_info);
-
- if (rki_get_packet(in, MT_CVERSION, &length, (char *)version_info) !=
- RKINIT_SUCCESS) {
- error();
- exit(1);
- }
-
- *c_lversion = version_info[0];
- *c_hversion = version_info[1];
-
- version_info[0] = s_lversion;
- version_info[1] = s_hversion;
-
- if (rki_send_packet(out, MT_SVERSION, length, (char *)version_info) !=
- RKINIT_SUCCESS) {
- error();
- exit(1);
- }
-}
-
-#ifdef __STDC__
-void rpc_get_rkinit_info(rkinit_info *info)
-#else
-void rpc_get_rkinit_info(info)
- rkinit_info *info;
-#endif /* __STDC__ */
-{
- u_int32_t length = sizeof(rkinit_info);
-
- if (rki_get_packet(in, MT_RKINIT_INFO, &length, (char *)info)) {
- error();
- exit(1);
- }
-
- info->lifetime = ntohl(info->lifetime);
-}
-
-#ifdef __STDC__
-void rpc_send_error(char *errmsg)
-#else
-void rpc_send_error(errmsg)
- char *errmsg;
-#endif /* __STDC__ */
-{
- if (rki_send_packet(out, MT_STATUS, strlen(errmsg), errmsg)) {
- error();
- exit(1);
- }
-}
-
-#ifdef __STDC__
-void rpc_send_success(void)
-#else
-void rpc_send_success()
-#endif /* __STDC__ */
-{
- if (rki_send_packet(out, MT_STATUS, 0, "")) {
- error();
- exit(1);
- }
-}
-
-#ifdef __STDC__
-void rpc_exchange_tkt(KTEXT cip, MSG_DAT *scip)
-#else
-void rpc_exchange_tkt(cip, scip)
- KTEXT cip;
- MSG_DAT *scip;
-#endif /* __STDC__ */
-{
- u_int32_t length = MAX_KTXT_LEN;
-
- if (rki_send_packet(out, MT_SKDC, cip->length, (char *)cip->dat)) {
- error();
- exit(1);
- }
-
- if (rki_get_packet(in, MT_CKDC, &length, (char *)scip->app_data)) {
- error();
- exit(1);
- }
- scip->app_length = length;
-}
-
-#ifdef __STDC__
-void rpc_getauth(KTEXT auth, struct sockaddr_in *caddr,
- struct sockaddr_in *saddr)
-#else
-void rpc_getauth(auth, caddr, saddr)
- KTEXT auth;
- struct sockaddr_in *caddr;
- struct sockaddr_in *saddr;
-#endif /* __STDC__ */
-{
- int addrlen = sizeof(struct sockaddr_in);
-
- if (rki_rpc_get_ktext(in, auth, MT_AUTH)) {
- error();
- exit(1);
- }
-
- if (getpeername(in, (struct sockaddr *)caddr, &addrlen) < 0) {
- sprintf(errbuf, "getpeername: %s", sys_errlist[errno]);
- rkinit_errmsg(errbuf);
- error();
- exit(1);
- }
-
- if (getsockname(out, (struct sockaddr *)saddr, &addrlen) < 0) {
- sprintf(errbuf, "getsockname: %s", sys_errlist[errno]);
- rkinit_errmsg(errbuf);
- error();
- exit(1);
- }
-}
diff --git a/eBones/libexec/rkinitd/util.c b/eBones/libexec/rkinitd/util.c
deleted file mode 100644
index 20812051dc48..000000000000
--- a/eBones/libexec/rkinitd/util.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * $Id: util.c,v 1.1 1993/12/10 18:59:29 dglo Exp gibbs $
- * $Source: /usr/src/eBones/rkinitd/RCS/util.c,v $
- * $Author: dglo $
- *
- * This file contains general rkinit server utilities.
- */
-
-#if !defined(lint) && !defined(SABER) && !defined(LOCORE) && defined(RCS_HDRS)
-static char *rcsid = "$Id: util.c,v 1.1 1993/12/10 18:59:29 dglo Exp gibbs $";
-#endif /* lint || SABER || LOCORE || RCS_HDRS */
-
-#include <stdio.h>
-#include <rkinit.h>
-#include <rkinit_err.h>
-#include <rkinit_private.h>
-
-#include "rkinitd.h"
-
-static char errbuf[BUFSIZ];
-
-void rpc_exchange_version_info();
-void error();
-
-#ifdef __STDC__
-int choose_version(int *version)
-#else
-int choose_version(version)
- int *version;
-#endif /* __STDC__ */
-{
- int c_lversion; /* lowest version number client supports */
- int c_hversion; /* highest version number client supports */
- int status = RKINIT_SUCCESS;
-
- rpc_exchange_version_info(&c_lversion, &c_hversion,
- RKINIT_LVERSION, RKINIT_HVERSION);
-
- *version = min(RKINIT_HVERSION, c_hversion);
- if (*version < max(RKINIT_LVERSION, c_lversion)) {
- sprintf(errbuf,
- "Can't run version %d client against version %d server.",
- c_hversion, RKINIT_HVERSION);
- rkinit_errmsg(errbuf);
- return(RKINIT_VERSION);
- }
-
- return(status);
-}
diff --git a/eBones/man/Makefile b/eBones/man/Makefile
deleted file mode 100644
index 526ca8ef76de..000000000000
--- a/eBones/man/Makefile
+++ /dev/null
@@ -1,10 +0,0 @@
-# from: @(#)Makefile 5.4 (Berkeley) 7/25/90
-# $Id: Makefile,v 1.3 1995/07/18 16:40:32 mark Exp $
-
-MAN1= kerberos.1
-MAN3= des_crypt.3
-MAN5= krb.conf.5 krb.realms.5
-
-MLINKS+=des_crypt.3 des.3
-
-.include <bsd.prog.mk>
diff --git a/eBones/man/des_crypt.3 b/eBones/man/des_crypt.3
deleted file mode 100644
index 2d91b6df005a..000000000000
--- a/eBones/man/des_crypt.3
+++ /dev/null
@@ -1,380 +0,0 @@
-.\" from: des_crypt.3,v 4.3 89/01/23 17:08:59 steiner Exp $
-.\" $Id: des_crypt.3,v 1.1.1.1 1994/09/30 14:50:05 csgr Exp $
-.\" Copyright 1989 by the Massachusetts Institute of Technology.
-.\"
-.\" For copying and distribution information,
-.\" please see the file <Copyright.MIT>.
-.\"
-.TH DES_CRYPT 3 "Kerberos Version 4.0" "MIT Project Athena"
-.SH NAME
-des_read_password, des_string_to_key, des_random_key, des_set_key,
-des_ecb_encrypt, des_cbc_encrypt, des_pcbc_encrypt, des_cbc_cksum,
-des_quad_cksum, \- (new) DES encryption
-.SH SYNOPSIS
-.nf
-.nj
-.ft B
-#include <kerberosIV/des.h>
-.PP
-.ft B
-.B int des_read_password(key,prompt,verify)
-des_cblock *key;
-char *prompt;
-int verify;
-.PP
-.ft B
-int des_string_to_key(str,key)
-char *str;
-des_cblock key;
-.PP
-.ft B
-int des_random_key(key)
-des_cblock *key;
-.PP
-.ft B
-int des_set_key(key,schedule)
-des_cblock *key;
-des_key_schedule schedule;
-.PP
-.ft B
-int des_ecb_encrypt(input,output,schedule,encrypt)
-des_cblock *input;
-des_cblock *output;
-des_key_schedule schedule;
-int encrypt;
-.PP
-.ft B
-int des_cbc_encrypt(input,output,length,schedule,ivec,encrypt)
-des_cblock *input;
-des_cblock *output;
-long length;
-des_key_schedule schedule;
-des_cblock *ivec;
-int encrypt;
-.PP
-.ft B
-int des_pcbc_encrypt(input,output,length,schedule,ivec,encrypt)
-des_cblock *input;
-des_cblock *output;
-long length;
-des_key_schedule schedule;
-des_cblock *ivec;
-int encrypt;
-.PP
-.ft B
-unsigned long des_cbc_cksum(input,output,length,schedule,ivec)
-des_cblock *input;
-des_cblock *output;
-long length;
-des_key_schedule schedule;
-des_cblock *ivec;
-.PP
-.ft B
-unsigned long quad_cksum(input,output,length,out_count,seed)
-des_cblock *input;
-des_cblock *output;
-long length;
-int out_count;
-des_cblock *seed;
-.PP
-.fi
-.SH DESCRIPTION
-This library supports various DES encryption related operations. It differs
-from the
-.I crypt, setkey, and encrypt
-library routines in that it provides
-a true DES encryption, without modifying the algorithm,
-and executes much faster.
-.PP
-For each key that may be simultaneously active, create a
-.B des_key_schedule
-struct,
-defined in "des.h". Next, create key schedules (from the 8-byte keys) as
-needed, via
-.I des_set_key,
-prior to using the encryption or checksum routines. Then
-setup the input and output areas. Make sure to note the restrictions
-on lengths being multiples of eight bytes. Finally, invoke the
-encryption/decryption routines,
-.I des_ecb_encrypt
-or
-.I des_cbc_encrypt
-or
-.I des_pcbc_encrypt,
-or, to generate a cryptographic checksum, use
-.I quad_cksum
-(fast) or
-.I des_cbc_cksum
-(slow).
-.PP
-A
-.I des_cblock
-struct is an 8 byte block used as the fundamental unit for DES data and
-keys, and is defined as:
-.PP
-.B typedef unsigned char des_cblock[8];
-.PP
-and a
-.I des_key_schedule,
-is defined as:
-.PP
-.B typedef struct des_ks_struct {des_cblock _;} des_key_schedule[16];
-.PP
-.I des_read_password
-writes the string specified by
-.I prompt
-to the standard
-output, turns off echo (if possible)
-and reads an input string from standard input until terminated with a newline.
-If
-.I verify
-is non-zero, it prompts and reads input again, for use
-in applications such as changing a password; both
-versions are compared, and the input is requested repeatedly until they
-match. Then
-.I des_read_password
-converts the input string into a valid DES key, internally
-using the
-.I des_string_to_key
-routine. The newly created key is copied to the
-area pointed to by the
-.I key
-argument.
-.I des_read_password
-returns a zero if no errors occurred, or a -1
-indicating that an error
-occurred trying to manipulate the terminal echo.
-.PP
-.PP
-.I des_string_to_key
-converts an arbitrary length null-terminated string
-to an 8 byte DES key, with odd byte parity, per FIPS specification.
-A one-way function is used to convert the string to a key, making it
-very difficult to reconstruct the string from the key.
-The
-.I str
-argument is a pointer to the string, and
-.I key
-should
-point to a
-.I des_cblock
-supplied by the caller to receive the generated key.
-No meaningful value is returned. Void is not used for compatibility with
-other compilers.
-.PP
-.PP
-.I des_random_key
-generates a random DES encryption key (eight bytes), set to odd parity per
-FIPS
-specifications.
-This routine uses the current time, process id, and a counter
-as a seed for the random number generator.
-The caller must supply space for the output key, pointed to
-by argument
-.I key,
-then after calling
-.I des_random_key
-should
-call the
-.I des_set_key
-routine when needed.
-No meaningful value is returned. Void is not used for compatibility
-with other compilers.
-.PP
-.PP
-.I des_set_key
-calculates a key schedule from all eight bytes of the input key, pointed
-to by the
-.I key
-argument, and outputs the schedule into the
-.I des_key_schedule
-indicated by the
-.I schedule
-argument. Make sure to pass a valid eight byte
-key; no padding is done. The key schedule may then be used in subsequent
-encryption/decryption/checksum operations. Many key schedules may be
-cached for later use. The user is responsible to clear keys and schedules
-as soon as no longer needed, to prevent their disclosure.
-The routine also checks the key
-parity, and returns a zero if the key parity is correct (odd), a -1
-indicating a key parity error, or a -2 indicating use of an illegal
-weak key. If an error is returned, the key schedule was not created.
-.PP
-.PP
-.I des_ecb_encrypt
-is the basic DES encryption routine that encrypts or decrypts a single 8-byte
-block in
-.B electronic code book
-mode. It always transforms the input data, pointed to by
-.I input,
-into the output data, pointed to by the
-.I output
-argument.
-.PP
-If the
-.I encrypt
-argument is non-zero, the
-.I input
-(cleartext) is encrypted into the
-.I output
-(ciphertext) using the key_schedule specified by the
-.I schedule
-argument, previously set via
-.I des_set_key
-.PP
-If encrypt is zero, the
-.I input
-(now ciphertext) is decrypted into the
-.I output
-(now cleartext).
-.PP
-Input and output may overlap.
-.PP
-No meaningful value is returned. Void is not used for compatibility
-with other compilers.
-.PP
-.PP
-.I des_cbc_encrypt
-encrypts/decrypts using the
-.B cipher-block-chaining mode of DES.
-If the
-.I encrypt
-argument is non-zero, the routine cipher-block-chain encrypts
-the cleartext data pointed to by the
-.I input
-argument into the ciphertext pointed to by the
-.I output
-argument, using the key schedule provided by the
-.I schedule
-argument, and initialization vector provided by the
-.I ivec
-argument.
-If the
-.I length
-argument is not an integral
-multiple of eight bytes, the last block is copied to a temp and zero
-filled (highest addresses). The output is ALWAYS an integral multiple
-of eight bytes.
-.PP
-If
-.I encrypt
-is zero, the routine cipher-block chain decrypts the (now) ciphertext
-data pointed to by the
-.I input
-argument into (now) cleartext pointed to by the
-.I output
-argument using the key schedule provided by the
-.I schedule
-argument, and initialization vector provided by the
-.I ivec
-argument. Decryption ALWAYS operates on integral
-multiples of 8 bytes, so it will round the
-.I length
-provided up to the
-appropriate multiple. Consequently, it will always produce the rounded-up
-number of bytes of output cleartext. The application must determine if
-the output cleartext was zero-padded due to original cleartext lengths that
-were not integral multiples of 8.
-.PP
-No errors or meaningful values are returned. Void is not used for
-compatibility with other compilers.
-.PP
-A characteristic of cbc mode is that changing a single bit of the
-cleartext, then encrypting using cbc mode,
-affects ALL the subsequent ciphertext. This makes cryptanalysis
-much more difficult. However, modifying a single bit of the ciphertext,
-then decrypting, only affects the resulting cleartext from
-the modified block and the succeeding block. Therefore,
-.I des_pcbc_encrypt
-is STRONGLY recommended for applications where
-indefinite propagation of errors is required in order to detect modifications.
-.PP
-.PP
-.I des_pcbc_encrypt
-encrypts/decrypts using a modified block chaining mode. Its calling
-sequence is identical to
-.I des_cbc_encrypt.
-It differs in its error propagation characteristics.
-.PP
-.I des_pcbc_encrypt
-is highly recommended for most encryption purposes, in that
-modification of a single bit of the ciphertext will affect ALL the
-subsequent (decrypted) cleartext. Similarly, modifying a single bit of
-the cleartext will affect ALL the subsequent (encrypted) ciphertext.
-"PCBC" mode, on encryption, "xors" both the
-cleartext of block N and the ciphertext resulting from block N with the
-cleartext for block N+1 prior to encrypting block N+1.
-.PP
-.I des_cbc_cksum
-produces an 8 byte cryptographic checksum by cipher-block-chain
-encrypting the cleartext data pointed to by the
-.I input
-argument. All of the ciphertext output is discarded, except the
-last 8-byte ciphertext block, which is written into the area pointed to by
-the
-.I output
-argument.
-It uses the key schedule,
-provided by the
-.I schedule
-argument and initialization vector provided by the
-.I ivec
-argument.
-If the
-.I length
-argument is not an integral
-multiple of eight bytes, the last cleartext block is copied to a temp and zero
-filled (highest addresses). The output is ALWAYS eight bytes.
-.PP
-The routine also returns an unsigned long, which is the last (highest address)
-half of the 8 byte checksum computed.
-.PP
-.PP
-.I quad_cksum
-produces a checksum by chaining quadratic operations on the cleartext data
-pointed to by the
-.I input
-argument. The
-.I length
-argument specifies the length of the
-input -- only exactly that many bytes are included for the checksum,
-without any padding.
-.PP
-The algorithm may be iterated over the same input data, if the
-.I out_count
-argument is 2, 3 or 4, and the optional
-.I output
-argument is a non-null pointer .
-The default is one iteration, and it will not run
-more than 4 times. Multiple iterations run slower, but provide
-a longer checksum if desired. The
-.I seed
-argument provides an 8-byte seed for the first iteration. If multiple iterations are
-requested, the results of one iteration are automatically used as
-the seed for the next iteration.
-.PP
-It returns both an unsigned long checksum value, and
-if the
-.I output
-argument is not a null pointer, up to 16 bytes of
-the computed checksum are written into the output.
-.PP
-.PP
-.SH FILES
-/usr/include/kerberosIV/des.h
-.br
-/usr/lib/libdes.a
-.SH "SEE ALSO"
-.SH DIAGNOSTICS
-.SH BUGS
-This software has not yet been compiled or tested on machines other than the
-VAX and the IBM PC.
-.SH AUTHORS
-Steve Miller, MIT Project Athena/Digital Equipment Corporation
-.SH RESTRICTIONS
-COPYRIGHT 1985,1986 Massachusetts Institute of Technology
-.PP
-This software may not be exported outside of the US without a special
-license from the US Dept of Commerce. It may be replaced by any secret
-key block cipher with block length and key length of 8 bytes, as long
-as the interface is the same as described here.
diff --git a/eBones/man/kerberos.1 b/eBones/man/kerberos.1
deleted file mode 100644
index c489b880c23c..000000000000
--- a/eBones/man/kerberos.1
+++ /dev/null
@@ -1,259 +0,0 @@
-.\" from: kerberos.1,v 4.7 89/01/23 11:39:33 jtkohl Exp $
-.\" $Id: kerberos.1,v 1.2 1994/07/19 19:27:33 g89r4222 Exp $
-.\" Copyright 1989 by the Massachusetts Institute of Technology.
-.\"
-.\" For copying and distribution information,
-.\" please see the file <Copyright.MIT>.
-.\"
-.TH KERBEROS 1 "Kerberos Version 4.0" "MIT Project Athena"
-.SH NAME
-kerberos \- introduction to the Kerberos system
-
-.SH DESCRIPTION
-The
-Kerberos
-system authenticates
-individual users in a network environment.
-After authenticating yourself to
-Kerberos,
-you can use network utilities such as
-.IR rlogin ,
-.IR rcp ,
-and
-.IR rsh
-without
-having to present passwords to remote hosts and without having to bother
-with
-.I \.rhosts
-files.
-Note that these utilities will work without passwords only if
-the remote machines you deal with
-support the
-Kerberos
-system.
-All Athena timesharing machines and public workstations support
-Kerberos.
-.PP
-Before you can use
-Kerberos,
-you must register as an Athena user,
-and you must make sure you have been added to
-the
-Kerberos
-database.
-You can use the
-.I kinit
-command to find out.
-This command
-tries to log you into the
-Kerberos
-system.
-.I kinit
-will prompt you for a username and password.
-Enter your username and password.
-If the utility lets you login without giving you a message,
-you have already been registered.
-.PP
-If you enter your username and
-.I kinit
-responds with this message:
-.nf
-
-Principal unknown (kerberos)
-
-.fi
-you haven't been registered as a
-Kerberos
-user.
-See your system administrator.
-.PP
-A Kerberos name contains three parts.
-The first is the
-.I principal name,
-which is usually a user's or service's name.
-The second is the
-.I instance,
-which in the case of a user is usually null.
-Some users may have privileged instances, however,
-such as ``root'' or ``admin''.
-In the case of a service, the instance is the
-name of the machine on which it runs; i.e. there
-can be an
-.I rlogin
-service running on the machine ABC, which
-is different from the rlogin service running on
-the machine XYZ.
-The third part of a Kerberos name
-is the
-.I realm.
-The realm corresponds to the Kerberos service providing
-authentication for the principal.
-For example, at MIT there is a Kerberos running at the
-Laboratory for Computer Science and one running at
-Project Athena.
-.PP
-When writing a Kerberos name, the principal name is
-separated from the instance (if not null) by a period,
-and the realm (if not the local realm) follows, preceded by
-an ``@'' sign.
-The following are examples of valid Kerberos names:
-.sp
-.nf
-.in +8
-billb
-jis.admin
-srz@lcs.mit.edu
-treese.root@athena.mit.edu
-.in -8
-.fi
-.PP
-When you authenticate yourself with
-Kerberos,
-through either the workstation
-.I toehold
-system or the
-.I kinit
-command,
-Kerberos
-gives you an initial
-Kerberos
-.IR ticket .
-(A
-Kerberos
-ticket
-is an encrypted protocol message that provides authentication.)
-Kerberos
-uses this ticket for network utilities
-such as
-.I rlogin
-and
-.IR rcp .
-The ticket transactions are done transparently,
-so you don't have to worry about their management.
-.PP
-Note, however, that tickets expire.
-Privileged tickets, such as root instance tickets,
-expire in a few minutes, while tickets that carry more ordinary
-privileges may be good for several hours or a day, depending on the
-installation's policy.
-If your login session extends beyond the time limit,
-you will have to re-authenticate yourself to
-Kerberos
-to get new tickets.
-Use the
-.IR kinit
-command to re-authenticate yourself.
-.PP
-If you use the
-.I kinit
-command to get your tickets,
-make sure you use the
-.I kdestroy
-command
-to destroy your tickets before you end your login session.
-You should probably put the
-.I kdestroy
-command in your
-.I \.logout
-file so that your tickets will be destroyed automatically when you logout.
-For more information about the
-.I kinit
-and
-.I kdestroy
-commands,
-see the
-.I kinit(1)
-and
-.I kdestroy(1)
-manual pages.
-.PP
-Currently,
-Kerberos
-supports the following network services:
-.IR rlogin ,
-.IR rsh ,
-and
-.IR rcp .
-Other services are being worked on,
-such as the
-.IR pop
-mail system and NFS (network file system),
-but are not yet available.
-
-.SH "SEE ALSO"
-kdestroy(1), kinit(1), klist(1), kpasswd(1), des_crypt(3), kerberos(3),
-kadmin(8)
-.SH BUGS
-Kerberos
-will not do authentication forwarding.
-In other words,
-if you use
-.I rlogin
-to login to a remote host,
-you cannot use
-Kerberos
-services from that host
-until you authenticate yourself explicitly on that host.
-Although you may need to authenticate yourself on the remote
-host,
-be aware that when you do so,
-.I rlogin
-sends your password across the network in clear text.
-
-.SH AUTHORS
-Steve Miller, MIT Project Athena/Digital Equipment Corporation
-.br
-Clifford Neuman, MIT Project Athena
-
-The following people helped out on various aspects of the system:
-
-Jeff Schiller designed and wrote the administration server and its
-user interface, kadmin.
-He also wrote the dbm version of the database management system.
-
-Mark Colan developed the
-Kerberos
-versions of
-.IR rlogin ,
-.IR rsh ,
-and
-.IR rcp ,
-as well as contributing work on the servers.
-
-John Ostlund developed the
-Kerberos
-versions of
-.I passwd
-and
-.IR userreg .
-
-Stan Zanarotti pioneered Kerberos in a foreign realm (LCS),
-and made many contributions based on that experience.
-
-Many people contributed code and/or useful ideas, including
-Jim Aspnes,
-Bob Baldwin,
-John Barba,
-Richard Basch,
-Jim Bloom,
-Bill Bryant,
-Rob French,
-Dan Geer,
-David Jedlinsky,
-John Kohl,
-John Kubiatowicz,
-Bob McKie,
-Brian Murphy,
-Ken Raeburn,
-Chris Reed,
-Jon Rochlis,
-Mike Shanzer,
-Bill Sommerfeld,
-Jennifer Steiner,
-Ted Ts'o,
-and
-Win Treese.
-
-.SH RESTRICTIONS
-
-COPYRIGHT 1985,1986 Massachusetts Institute of Technology
diff --git a/eBones/man/krb.conf.5 b/eBones/man/krb.conf.5
deleted file mode 100644
index 4a87007f8da3..000000000000
--- a/eBones/man/krb.conf.5
+++ /dev/null
@@ -1,32 +0,0 @@
-.\" from: krb.conf.5,v 4.1 89/01/23 11:10:34 jtkohl Exp $
-.\" $Id: krb.conf.5,v 1.1.1.1 1994/09/30 14:50:07 csgr Exp $
-.\" Copyright 1989 by the Massachusetts Institute of Technology.
-.\"
-.\" For copying and distribution information,
-.\" please see the file <Copyright.MIT>.
-.\"
-.TH KRB.CONF 5 "Kerberos Version 4.0" "MIT Project Athena"
-.SH NAME
-/etc/kerberosIV/krb.conf \- Kerberos configuration file
-.SH DESCRIPTION
-.I krb.conf
-contains configuration information describing the Kerberos realm and the
-Kerberos key distribution center (KDC) servers for known realms.
-.PP
-.I krb.conf
-contains the name of the local realm in the first
-line, followed by lines indicating realm/host
-entries. The first token is a realm name, and the second is the hostname
-of a host running a KDC for that realm.
-The words "admin server" following the hostname indicate that
-the host also provides an administrative database server.
-For example:
-.nf
-.in +1i
-ATHENA.MIT.EDU
-ATHENA.MIT.EDU kerberos-1.mit.edu admin server
-ATHENA.MIT.EDU kerberos-2.mit.edu
-LCS.MIT.EDU kerberos.lcs.mit.edu admin server
-.in -1i
-.SH SEE ALSO
-krb.realms(5), krb_get_krbhst(3), krb_get_lrealm(3)
diff --git a/eBones/man/krb.realms.5 b/eBones/man/krb.realms.5
deleted file mode 100644
index 877477f1c6ae..000000000000
--- a/eBones/man/krb.realms.5
+++ /dev/null
@@ -1,39 +0,0 @@
-.\" from: krb.realms.5,v 4.1 89/01/23 11:10:41 jtkohl Exp $
-.\" $Id: krb.realms.5,v 1.1.1.1 1994/09/30 14:50:07 csgr Exp $
-.\" Copyright 1989 by the Massachusetts Institute of Technology.
-.\"
-.\" For copying and distribution information,
-.\" please see the file <Copyright.MIT>.
-.\"
-.TH KRB.REALMS 5 "Kerberos Version 4.0" "MIT Project Athena"
-.SH NAME
-/etc/kerberosIV/krb.realms \- host to Kerberos realm translation file
-.SH DESCRIPTION
-.I krb.realms
-provides a translation from a hostname to the Kerberos realm name for
-the services provided by that host.
-.PP
-Each line of the translation file is in one of the following forms
-(domain_name should be of the form .XXX.YYY, e.g. .LCS.MIT.EDU):
-.nf
-.in +5n
-host_name kerberos_realm
-domain_name kerberos_realm
-.in -5n
-.fi
-If a hostname exactly matches the
-.I host_name
-field in a line of the first
-form, the corresponding realm is the realm of the host.
-If a hostname does not match any
-.I host_name
-in the file, but its
-domain exactly matches the
-.I domain_name
-field in a line of the second
-form, the corresponding realm is the realm of the host.
-.PP
-If no translation entry applies, the host's realm is considered to be
-the hostname's domain portion converted to upper case.
-.SH SEE ALSO
-krb_realmofhost(3)
diff --git a/eBones/patchlevel.h b/eBones/patchlevel.h
deleted file mode 100644
index 87e5061c8a8b..000000000000
--- a/eBones/patchlevel.h
+++ /dev/null
@@ -1,6 +0,0 @@
-/*-
- * $Id: patchlevel.h,v 1.3 1995/07/18 16:34:26 mark Exp $
- */
-
-#define PATCHLEVEL 9
-#define FreeBSD_PL 0.1
diff --git a/eBones/usr.bin/Makefile b/eBones/usr.bin/Makefile
deleted file mode 100644
index fa796caeb8f5..000000000000
--- a/eBones/usr.bin/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# From: @(#)Makefile 5.1 (Berkeley) 6/25/90
-# $Id: Makefile,v 1.1 1995/09/13 17:24:05 markm Exp $
-
-SUBDIR= kadmin kdestroy kinit klist ksrvtgt register rkinit
-
-.include <bsd.subdir.mk>
diff --git a/eBones/usr.bin/Makefile.inc b/eBones/usr.bin/Makefile.inc
deleted file mode 100644
index 5506596ac57e..000000000000
--- a/eBones/usr.bin/Makefile.inc
+++ /dev/null
@@ -1,5 +0,0 @@
-# @(#)Makefile.inc 8.1 (Berkeley) 6/6/93
-
-BINDIR?= /usr/bin
-
-.include "../Makefile.inc"
diff --git a/eBones/usr.bin/kadmin/Makefile b/eBones/usr.bin/kadmin/Makefile
deleted file mode 100644
index 4c4434f63bc9..000000000000
--- a/eBones/usr.bin/kadmin/Makefile
+++ /dev/null
@@ -1,16 +0,0 @@
-# $Id: Makefile,v 1.7 1995/09/14 18:16:18 gibbs Exp $
-
-PROG= kadmin
-SRCS= ${KRBOBJDIR}/krb_err.h kadmin.c kadmin_cmds.c
-CLEANFILES+= kadmin_cmds.c krb_err.c
-CFLAGS+= -DPOSIX -I${.CURDIR}/../../lib/libkadm
-DPADD= ${LIBKRB} ${LIBDES}
-LDADD+= -L${KADMOBJDIR} -lkadm -L${KRBOBJDIR} -lkrb -L${DESOBJDIR} -ldes
-LDADD+= -lss -lcom_err
-MAN8= kadmin.8
-
-kadmin_cmds.c: kadmin_cmds.ct
- test -e kadmin_cmds.ct || ln -s ${.CURDIR}/kadmin_cmds.ct .
- mk_cmds kadmin_cmds.ct
-
-.include <bsd.prog.mk>
diff --git a/eBones/usr.bin/kadmin/kadmin.8 b/eBones/usr.bin/kadmin/kadmin.8
deleted file mode 100644
index 6e1501571326..000000000000
--- a/eBones/usr.bin/kadmin/kadmin.8
+++ /dev/null
@@ -1,158 +0,0 @@
-.\" from: kadmin.8,v 4.2 89/07/25 17:20:02 jtkohl Exp $
-.\" $Id: kadmin.8,v 1.2 1994/07/19 19:27:22 g89r4222 Exp $
-.\" Copyright 1989 by the Massachusetts Institute of Technology.
-.\"
-.\" For copying and distribution information,
-.\" please see the file <Copyright.MIT>.
-.\"
-.TH KADMIN 8 "Kerberos Version 4.0" "MIT Project Athena"
-.SH NAME
-kadmin \- network utility for Kerberos database administration
-.SH SYNOPSIS
-.B kadmin [-u user] [-r default_realm] [-m]
-.SH DESCRIPTION
-This utility provides a unified administration interface to
-the
-Kerberos
-master database.
-Kerberos
-administrators
-use
-.I kadmin
-to register new users and services to the master database,
-and to change information about existing database entries.
-For instance, an administrator can use
-.I kadmin
-to change a user's
-Kerberos
-password.
-A Kerberos administrator is a user with an ``admin'' instance
-whose name appears on one of the Kerberos administration access control
-lists. If the \-u option is used,
-.I user
-will be used as the administrator instead of the local user.
-If the \-r option is used,
-.I default_realm
-will be used as the default realm for transactions. Otherwise,
-the local realm will be used by default.
-If the \-m option is used, multiple requests will be permitted
-on only one entry of the admin password. Some sites won't
-support this option.
-
-The
-.I kadmin
-program communicates over the network with the
-.I kadmind
-program, which runs on the machine housing the Kerberos master
-database.
-The
-.I kadmind
-creates new entries and makes modifications to the database.
-
-When you enter the
-.I kadmin
-command,
-the program displays a message that welcomes you and explains
-how to ask for help.
-Then
-.I kadmin
-waits for you to enter commands (which are described below).
-It then asks you for your
-.I admin
-password before accessing the database.
-
-Use the
-.I add_new_key
-(or
-.I ank
-for short)
-command to register a new principal
-with the master database.
-The command requires one argument,
-the principal's name. The name
-given can be fully qualified using
-the standard
-.I name.instance@realm
-convention.
-You are asked to enter your
-.I admin
-password,
-then prompted twice to enter the principal's
-new password. If no realm is specified,
-the local realm is used unless another was
-given on the commandline with the \-r flag.
-If no instance is
-specified, a null instance is used. If
-a realm other than the default realm is specified,
-you will need to supply your admin password for
-the other realm.
-
-Use the
-.I change_password (cpw)
-to change a principal's
-Kerberos
-password.
-The command requires one argument,
-the principal's
-name.
-You are asked to enter your
-.I admin
-password,
-then prompted twice to enter the principal's new password.
-The name
-given can be fully qualified using
-the standard
-.I name.instance@realm
-convention.
-
-Use the
-.I change_admin_password (cap)
-to change your
-.I admin
-instance password.
-This command requires no arguments.
-It prompts you for your old
-.I admin
-password, then prompts you twice to enter the new
-.I admin
-password. If this is your first command,
-the default realm is used. Otherwise, the realm
-used in the last command is used.
-
-Use the
-.I destroy_tickets (dest)
-command to destroy your admin tickets explicitly.
-
-Use the
-.I list_requests (lr)
-command to get a list of possible commands.
-
-Use the
-.I help
-command to display
-.IR kadmin's
-various help messages.
-If entered without an argument,
-.I help
-displays a general help message.
-You can get detailed information on specific
-.I kadmin
-commands
-by entering
-.I help
-.IR command_name .
-
-To quit the program, type
-.IR quit .
-
-.SH BUGS
-The user interface is primitive, and the command names could be better.
-
-.SH "SEE ALSO"
-kerberos(1), kadmind(8), kpasswd(1), ksrvutil(8)
-.br
-``A Subsystem Utilities Package for UNIX'' by Ken Raeburn
-.SH AUTHORS
-Jeffrey I. Schiller, MIT Project Athena
-.br
-Emanuel Jay Berkenbilt, MIT Project Athena
diff --git a/eBones/usr.bin/kadmin/kadmin.c b/eBones/usr.bin/kadmin/kadmin.c
deleted file mode 100644
index 67e0e1fb2b41..000000000000
--- a/eBones/usr.bin/kadmin/kadmin.c
+++ /dev/null
@@ -1,636 +0,0 @@
-/*
- * $Source: /usr/cvs/src/eBones/kadmin/kadmin.c,v $
- * $Author: mark $
- *
- * Copyright 1988 by the Massachusetts Institute of Technology.
- *
- * For copying and distribution information, please see the file
- * Copyright.MIT.
- *
- * Kerberos database administrator's tool.
- *
- * The default behavior of kadmin is if the -m option is given
- * on the commandline, multiple requests are allowed to be given
- * with one entry of the admin password (until the tickets expire).
- * If you do not want this to be an available option, compile with
- * NO_MULTIPLE defined.
- */
-
-#if 0
-#ifndef lint
-static char rcsid_kadmin_c[] =
-"BonesHeader: /afs/athena.mit.edu/astaff/project/kerberos/src/kadmin/RCS/kadmin.c,v 4.5 89/09/26 14:17:54 qjb Exp ";
-#endif lint
-#endif
-
-#include <unistd.h>
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <sys/param.h>
-#include <pwd.h>
-#include <ss/ss.h>
-#include <com_err.h>
-#include <kerberosIV/krb_err.h>
-#include <kadm.h>
-
-#define BAD_PW 1
-#define GOOD_PW 0
-#define FUDGE_VALUE 15 /* for ticket expiration time */
-#define PE_NO 0
-#define PE_YES 1
-#define PE_UNSURE 2
-
-/* for get_password, whether it should do the swapping...necessary for
- using vals structure, unnecessary for change_pw requests */
-#define DONTSWAP 0
-#define SWAP 1
-
-static void do_init(int argc, char *argv[]);
-void clean_up(void);
-int get_password(unsigned long *low, unsigned long *high, char *prompt,
- int byteswap);
-int get_admin_password(void);
-int princ_exists(char *name, char *instance, char *realm);
-
-extern ss_request_table admin_cmds;
-
-static char myname[ANAME_SZ];
-static char default_realm[REALM_SZ]; /* default kerberos realm */
-static char krbrlm[REALM_SZ]; /* current realm being administered */
-#ifndef NO_MULTIPLE
-static int multiple = 0; /* Allow multiple requests per ticket */
-#endif
-
-int
-main(argc, argv)
- int argc;
- char *argv[];
-{
- int sci_idx;
- int code;
- char tktstring[MAXPATHLEN];
-
- void quit();
-
- sci_idx = ss_create_invocation("admin", "2.0", (char *) NULL,
- &admin_cmds, &code);
- if (code) {
- ss_perror(sci_idx, code, "creating invocation");
- exit(1);
- }
- (void) sprintf(tktstring, "/tmp/tkt_adm_%d",getpid());
- krb_set_tkt_string(tktstring);
-
- do_init(argc, argv);
-
- printf("Welcome to the Kerberos Administration Program, version 2\n");
- printf("Type \"help\" if you need it.\n");
- ss_listen(sci_idx, &code);
- printf("\n");
- quit();
- exit(0);
-}
-
-int
-setvals(vals, string)
- Kadm_vals *vals;
- char *string;
-{
- char realm[REALM_SZ];
- int status = KADM_SUCCESS;
-
- bzero(vals, sizeof(*vals));
- bzero(realm, sizeof(realm));
-
- SET_FIELD(KADM_NAME,vals->fields);
- SET_FIELD(KADM_INST,vals->fields);
- if ((status = kname_parse(vals->name, vals->instance, realm, string))) {
- printf("kerberos error: %s\n", krb_err_txt[status]);
- return status;
- }
- if (!realm[0])
- strcpy(realm, default_realm);
- if (strcmp(realm, krbrlm)) {
- strcpy(krbrlm, realm);
- if ((status = kadm_init_link(PWSERV_NAME, KRB_MASTER, krbrlm))
- != KADM_SUCCESS)
- printf("kadm error for realm %s: %s\n",
- krbrlm, error_message(status));
- }
- if (status)
- return 1;
- else
- return KADM_SUCCESS;
-}
-
-void
-change_password(argc, argv)
- int argc;
- char *argv[];
-{
- Kadm_vals old, new;
- int status;
- char pw_prompt[BUFSIZ];
-
- if (argc != 2) {
- printf("Usage: change_password loginname\n");
- return;
- }
-
- if (setvals(&old, argv[1]) != KADM_SUCCESS)
- return;
-
- new = old;
-
- SET_FIELD(KADM_DESKEY,new.fields);
-
- if (princ_exists(old.name, old.instance, krbrlm) != PE_NO) {
- /* get the admin's password */
- if (get_admin_password() != GOOD_PW)
- return;
-
- /* get the new password */
- (void) sprintf(pw_prompt, "New password for %s:", argv[1]);
-
- if (get_password(&new.key_low, &new.key_high,
- pw_prompt, SWAP) == GOOD_PW) {
- status = kadm_mod(&old, &new);
- if (status == KADM_SUCCESS) {
- printf("Password changed for %s.\n", argv[1]);
- } else {
- printf("kadmin: %s\nwhile changing password for %s",
- error_message(status), argv[1]);
- }
- } else
- printf("Error reading password; password unchanged\n");
- bzero((char *)&new, sizeof(new));
-#ifndef NO_MULTIPLE
- if (!multiple)
- clean_up();
-#endif
- }
- else
- printf("kadmin: Principal does not exist.\n");
- return;
-}
-
-/*ARGSUSED*/
-void
-change_admin_password(argc, argv)
- int argc;
- char *argv[];
-{
- des_cblock newkey;
- unsigned long low, high;
- int status;
- char prompt_pw[BUFSIZ];
-
- if (argc != 1) {
- printf("Usage: change_admin_password\n");
- return;
- }
- /* get the admin's password */
- if (get_admin_password() != GOOD_PW)
- return;
-
- (void) sprintf(prompt_pw, "New password for %s.admin:",myname);
- if (get_password(&low, &high, prompt_pw, DONTSWAP) == GOOD_PW) {
- bcopy((char *)&low,(char *) newkey,4);
- bcopy((char *)&high, (char *)(((long *) newkey) + 1),4);
- low = high = 0L;
- if ((status = kadm_change_pw(newkey)) == KADM_SUCCESS)
- printf("Admin password changed\n");
- else
- printf("kadm error: %s\n",error_message(status));
- bzero((char *)newkey, sizeof(newkey));
- } else
- printf("Error reading password; password unchanged\n");
-#ifndef NO_MULTIPLE
- if (!multiple)
- clean_up();
-#endif
- return;
-}
-
-void
-add_new_key(argc, argv)
- int argc;
- char *argv[];
-{
- Kadm_vals new;
- char pw_prompt[BUFSIZ];
- int status;
-
- if (argc != 2) {
- printf("Usage: add_new_key user_name.\n");
- return;
- }
- if (setvals(&new, argv[1]) != KADM_SUCCESS)
- return;
-
- SET_FIELD(KADM_DESKEY,new.fields);
-
- if (princ_exists(new.name, new.instance, krbrlm) != PE_YES) {
- /* get the admin's password */
- if (get_admin_password() != GOOD_PW)
- return;
-
- /* get the new password */
- (void) sprintf(pw_prompt, "Password for %s:", argv[1]);
-
- if (get_password(&new.key_low, &new.key_high,
- pw_prompt, SWAP) == GOOD_PW) {
- status = kadm_add(&new);
- if (status == KADM_SUCCESS) {
- printf("%s added to database.\n", argv[1]);
- } else {
- printf("kadm error: %s\n",error_message(status));
- }
- } else
- printf("Error reading password; %s not added\n",argv[1]);
- bzero((char *)&new, sizeof(new));
-#ifndef NO_MULTIPLE
- if (!multiple)
- clean_up();
-#endif
- }
- else
- printf("kadmin: Principal already exists.\n");
- return;
-}
-
-void
-get_entry(argc, argv)
- int argc;
- char *argv[];
-{
- int status;
- u_char fields[4];
- Kadm_vals vals;
-
- if (argc != 2) {
- printf("Usage: get_entry username\n");
- return;
- }
-
- bzero(fields, sizeof(fields));
-
- SET_FIELD(KADM_NAME,fields);
- SET_FIELD(KADM_INST,fields);
- SET_FIELD(KADM_EXPDATE,fields);
- SET_FIELD(KADM_ATTR,fields);
- SET_FIELD(KADM_MAXLIFE,fields);
-
- if (setvals(&vals, argv[1]) != KADM_SUCCESS)
- return;
-
-
- if (princ_exists(vals.name, vals.instance, krbrlm) != PE_NO) {
- /* get the admin's password */
- if (get_admin_password() != GOOD_PW)
- return;
-
- if ((status = kadm_get(&vals, fields)) == KADM_SUCCESS)
- prin_vals(&vals);
- else
- printf("kadm error: %s\n",error_message(status));
-
-#ifndef NO_MULTIPLE
- if (!multiple)
- clean_up();
-#endif
- }
- else
- printf("kadmin: Principal does not exist.\n");
- return;
-}
-
-
-void
-help(argc, argv)
- int argc;
- char *argv[];
-{
- if (argc == 1) {
- printf("Welcome to the Kerberos administration program.");
- printf("Type \"?\" to get\n");
- printf("a list of requests that are available. You can");
- printf(" get help on each of\n");
- printf("the commands by typing \"help command_name\".");
- printf(" Some functions of this\n");
- printf("program will require an \"admin\" password");
- printf(" from you. This is a password\n");
- printf("private to you, that is used to authenticate");
- printf(" requests from this\n");
- printf("program. You can change this password with");
- printf(" the \"change_admin_password\"\n");
- printf("(or short form \"cap\") command. Good Luck! \n");
- } else if (!strcmp(argv[1], "change_password") ||
- !strcmp(argv[1], "cpw")) {
- printf("Usage: change_password user_name.\n");
- printf("\n");
- printf("user_name is the name of the user whose password");
- printf(" you wish to change. \n");
- printf("His/her password is changed in the kerberos database\n");
- printf("When this command is issued, first the \"Admin\"");
- printf(" password will be prompted\n");
- printf("for and if correct the user's new password will");
- printf(" be prompted for (twice with\n");
- printf("appropriate comparison). Note: No minimum password");
- printf(" length restrictions apply, but\n");
- printf("longer passwords are more secure.\n");
- } else if (!strcmp(argv[1], "change_admin_password") ||
- !strcmp(argv[1], "cap")) {
- printf("Usage: change_admin_password.\n");
- printf("\n");
- printf("This command takes no arguments and is used");
- printf(" to change your private\n");
- printf("\"Admin\" password. It will first prompt for");
- printf(" the (current) \"Admin\"\n");
- printf("password and then ask for the new password");
- printf(" by prompting:\n");
- printf("\n");
- printf("New password for <Your User Name>.admin:\n");
- printf("\n");
- printf("Enter the new admin password that you desire");
- printf(" (it will be asked for\n");
- printf("twice to avoid errors).\n");
- } else if (!strcmp(argv[1], "add_new_key") ||
- !strcmp(argv[1], "ank")) {
- printf("Usage: add_new_key user_name.\n");
- printf("\n");
- printf("user_name is the name of a new user to put");
- printf(" in the kerberos database. Your\n");
- printf("\"Admin\" password and the user's password");
- printf(" are prompted for. The user's\n");
- printf("password will be asked for");
- printf(" twice to avoid errors.\n");
- } else if (!strcmp(argv[1], "get_entry") ||
- !strcmp(argv[1], "get")) {
- printf("Usage: get_entry user_name.\n");
- printf("\n");
- printf("user_name is the name of a user whose");
- printf(" entry you wish to review. Your\n");
- printf("\"Admin\" password is prompted for. ");
- printf(" The key field is not filled in, for\n");
- printf("security reasons.\n");
- } else if (!strcmp(argv[1], "destroy_tickets") ||
- !strcmp(argv[1], "dest")) {
- printf("Usage: destroy_tickets\n");
- printf("\n");
- printf("Destroy your admin tickets. This will");
- printf(" cause you to be prompted for your\n");
- printf("admin password on your next request.\n");
- } else if (!strcmp(argv[1], "list_requests") ||
- !strcmp(argv[1], "lr") ||
- !strcmp(argv[1], "?")) {
- printf("Usage: list_requests\n");
- printf("\n");
- printf("This command lists what other commands are");
- printf(" currently available.\n");
- } else if (!strcmp(argv[1], "exit") ||
- !strcmp(argv[1], "quit") ||
- !strcmp(argv[1], "q")) {
- printf("Usage: quit\n");
- printf("\n");
- printf("This command exits this program.\n");
- } else {
- printf("Sorry there is no such command as %s.", argv[1]);
- printf(" Type \"help\" for more information. \n");
- }
- return;
-}
-
-void
-go_home(str,x)
-char *str;
-int x;
-{
- fprintf(stderr, "%s: %s\n", str, error_message(x));
- clean_up();
- exit(1);
-}
-
-static int inited = 0;
-
-void
-usage()
-{
- fprintf(stderr, "Usage: kadmin [-u admin_name] [-r default_realm]");
-#ifndef NO_MULTIPLE
- fprintf(stderr, " [-m]");
-#endif
- fprintf(stderr, "\n");
-#ifndef NO_MULTIPLE
- fprintf(stderr, " -m allows multiple admin requests to be ");
- fprintf(stderr, "serviced with one entry of admin\n");
- fprintf(stderr, " password.\n");
-#endif
- exit(1);
-}
-
-static void
-do_init(argc, argv)
- int argc;
- char *argv[];
-{
- struct passwd *pw;
- extern char *optarg;
- extern int optind;
- int c;
-#ifndef NO_MULTIPLE
-#define OPTION_STRING "u:r:m"
-#else
-#define OPTION_STRING "u:r:"
-#endif
-
- bzero(myname, sizeof(myname));
-
- if (!inited) {
- /*
- * This is only as a default/initial realm; we don't care
- * about failure.
- */
- if (krb_get_lrealm(default_realm, 1) != KSUCCESS)
- strcpy(default_realm, KRB_REALM);
-
- /*
- * If we can reach the local realm, initialize to it. Otherwise,
- * don't initialize.
- */
- if (kadm_init_link(PWSERV_NAME, KRB_MASTER, krbrlm) != KADM_SUCCESS)
- bzero(krbrlm, sizeof(krbrlm));
- else
- strcpy(krbrlm, default_realm);
-
- while ((c = getopt(argc, argv, OPTION_STRING)) != EOF)
- switch (c) {
- case 'u':
- strncpy(myname, optarg, sizeof(myname) - 1);
- break;
- case 'r':
- bzero(default_realm, sizeof(default_realm));
- strncpy(default_realm, optarg, sizeof(default_realm) - 1);
- break;
-#ifndef NO_MULTIPLE
- case 'm':
- multiple++;
- break;
-#endif
- default:
- usage();
- break;
- }
- if (optind < argc)
- usage();
- if (!myname[0]) {
- pw = getpwuid((int) getuid());
- if (!pw) {
- fprintf(stderr,
- "You aren't in the password file. Who are you?\n");
- exit(1);
- }
- (void) strcpy(myname, pw->pw_name);
- }
- inited = 1;
- }
-}
-
-#ifdef NOENCRYPTION
-#define read_long_pw_string placebo_read_pw_string
-#else
-#define read_long_pw_string des_read_pw_string
-#endif
-extern int read_long_pw_string();
-
-int
-get_admin_password()
-{
- int status;
- char admin_passwd[MAX_KPW_LEN]; /* Admin's password */
- int ticket_life = 1; /* minimum ticket lifetime */
-#ifndef NO_MULTIPLE
- CREDENTIALS c;
-
- if (multiple) {
- /* If admin tickets exist and are valid, just exit. */
- bzero(&c, sizeof(c));
- if (krb_get_cred(PWSERV_NAME, KADM_SINST, krbrlm, &c) == KSUCCESS)
- /*
- * If time is less than lifetime - FUDGE_VALUE after issue date,
- * tickets will probably last long enough for the next
- * transaction.
- */
- if (time(0) < (c.issue_date + (5 * 60 * c.lifetime) - FUDGE_VALUE))
- return(KADM_SUCCESS);
- ticket_life = DEFAULT_TKT_LIFE;
- }
-#endif
-
- if (princ_exists(myname, "admin", krbrlm) != PE_NO) {
- if (read_long_pw_string(admin_passwd, sizeof(admin_passwd)-1,
- "Admin password:", 0)) {
- fprintf(stderr, "Error reading admin password.\n");
- goto bad;
- }
- status = krb_get_pw_in_tkt(myname, "admin", krbrlm, PWSERV_NAME,
- KADM_SINST, ticket_life, admin_passwd);
- bzero(admin_passwd, sizeof(admin_passwd));
- }
- else
- status = KDC_PR_UNKNOWN;
-
- switch(status) {
- case GT_PW_OK:
- return(GOOD_PW);
- case KDC_PR_UNKNOWN:
- printf("Principal %s.admin@%s does not exist.\n", myname, krbrlm);
- goto bad;
- case GT_PW_BADPW:
- printf("Incorrect admin password.\n");
- goto bad;
- default:
- com_err("kadmin", status+krb_err_base,
- "while getting password tickets");
- goto bad;
- }
-
- bad:
- bzero(admin_passwd, sizeof(admin_passwd));
- (void) dest_tkt();
- return(BAD_PW);
-}
-
-void
-clean_up()
-{
- (void) dest_tkt();
- return;
-}
-
-void
-quit()
-{
- printf("Cleaning up and exiting.\n");
- clean_up();
- exit(0);
-}
-
-int
-princ_exists(name, instance, realm)
- char *name;
- char *instance;
- char *realm;
-{
- int status;
-
- status = krb_get_pw_in_tkt(name, instance, realm, "krbtgt", realm, 1, "");
-
- if ((status == KSUCCESS) || (status == INTK_BADPW))
- return(PE_YES);
- else if (status == KDC_PR_UNKNOWN)
- return(PE_NO);
- else
- return(PE_UNSURE);
-}
-
-int
-get_password(low, high, prompt, byteswap)
-unsigned long *low, *high;
-char *prompt;
-int byteswap;
-{
- char new_passwd[MAX_KPW_LEN]; /* new password */
- des_cblock newkey;
-
- do {
- if (read_long_pw_string(new_passwd, sizeof(new_passwd)-1, prompt, 1))
- return(BAD_PW);
- if (strlen(new_passwd) == 0)
- printf("Null passwords are not allowed; try again.\n");
- } while (strlen(new_passwd) == 0);
-
-#ifdef NOENCRYPTION
- bzero((char *) newkey, sizeof(newkey));
-#else
- des_string_to_key(new_passwd, &newkey);
-#endif
- bzero(new_passwd, sizeof(new_passwd));
-
- bcopy((char *) newkey,(char *)low,4);
- bcopy((char *)(((long *) newkey) + 1), (char *)high,4);
-
- bzero((char *) newkey, sizeof(newkey));
-
-#ifdef NOENCRYPTION
- *low = 1;
-#endif
-
- if (byteswap != DONTSWAP) {
- *low = htonl(*low);
- *high = htonl(*high);
- }
- return(GOOD_PW);
-}
diff --git a/eBones/usr.bin/kadmin/kadmin_cmds.ct b/eBones/usr.bin/kadmin/kadmin_cmds.ct
deleted file mode 100644
index 141ac154e1f1..000000000000
--- a/eBones/usr.bin/kadmin/kadmin_cmds.ct
+++ /dev/null
@@ -1,41 +0,0 @@
-# $Source: /usr/cvs/src/eBones/kadmin/kadmin_cmds.ct,v $
-# $Author: mark $
-# $Header: /usr/cvs/src/eBones/kadmin/kadmin_cmds.ct,v 1.1 1995/07/18 16:36:56 mark Exp $
-#
-# Copyright 1988 by the Massachusetts Institute of Technology.
-#
-# For copying and distribution information, please see the file
-# <mit-copyright.h>.
-#
-# Command table for Kerberos administration tool
-#
- command_table admin_cmds;
-
- request change_password,
- "Change a user's password",
- change_password, cpw;
-
- request change_admin_password, "Change your admin password",
- change_admin_password, cap;
-
- request add_new_key, "Add new user to kerberos database",
- add_new_key, ank;
-
- request get_entry, "Get entry from kerberos database",
- get_entry, get;
-
- request clean_up, "Destroy admin tickets",
- destroy_tickets, dest;
-
- request help,"Request help with this program",
- help;
-
-# list_requests is generic -- unrelated to Kerberos
-
- request ss_list_requests, "List available requests.",
- list_requests, lr, "?";
-
- request quit, "Exit program.",
- quit, exit, q;
-
- end;
diff --git a/eBones/usr.bin/kdestroy/Makefile b/eBones/usr.bin/kdestroy/Makefile
deleted file mode 100644
index d61e691c84f5..000000000000
--- a/eBones/usr.bin/kdestroy/Makefile
+++ /dev/null
@@ -1,10 +0,0 @@
-# From: @(#)Makefile 5.1 (Berkeley) 6/25/90
-# $Id: Makefile,v 1.5 1995/09/14 04:06:04 gibbs Exp $
-
-PROG= kdestroy
-CFLAGS+=-DKERBEROS -DDEBUG -DBSD42
-DPADD= ${LIBKRB} ${LIBDES}
-LDADD= -L${KRBOBJDIR} -lkrb -L${DESOBJDIR} -ldes
-MAN1= kdestroy.1
-
-.include <bsd.prog.mk>
diff --git a/eBones/usr.bin/kdestroy/kdestroy.1 b/eBones/usr.bin/kdestroy/kdestroy.1
deleted file mode 100644
index 709935366e73..000000000000
--- a/eBones/usr.bin/kdestroy/kdestroy.1
+++ /dev/null
@@ -1,81 +0,0 @@
-.\" from: kdestroy.1,v 4.9 89/01/23 11:39:50 jtkohl Exp $
-.\" $Id: kdestroy.1,v 1.2 1994/07/19 19:27:32 g89r4222 Exp $
-.\" Copyright 1989 by the Massachusetts Institute of Technology.
-.\"
-.\" For copying and distribution information,
-.\" please see the file <Copyright.MIT>.
-.\"
-.TH KDESTROY 1 "Kerberos Version 4.0" "MIT Project Athena"
-.SH NAME
-kdestroy \- destroy Kerberos tickets
-.SH SYNOPSIS
-.B kdestroy
-[
-.B \-f
-]
-[
-.B \-q
-]
-.SH DESCRIPTION
-The
-.I kdestroy
-utility destroys the user's active
-Kerberos
-authorization tickets by writing zeros to the file that contains them.
-If the ticket file does not exist,
-.I kdestroy
-displays a message to that effect.
-.PP
-After overwriting the file,
-.I kdestroy
-removes the file from the system.
-The utility
-displays a message indicating the success or failure of the
-operation.
-If
-.I kdestroy
-is unable to destroy the ticket file,
-the utility will warn you by making your terminal beep.
-.PP
-In the Athena workstation environment,
-the
-.I toehold
-service automatically destroys your tickets when you
-end a workstation session.
-If your site does not provide a similar ticket-destroying mechanism,
-you can place the
-.I kdestroy
-command in your
-.I .logout
-file so that your tickets are destroyed automatically
-when you logout.
-.PP
-The options to
-.I kdestroy
-are as follows:
-.TP 7
-.B \-f
-.I kdestroy
-runs without displaying the status message.
-.TP
-.B \-q
-.I kdestroy
-will not make your terminal beep if it fails to destroy the tickets.
-.SH FILES
-KRBTKFILE environment variable if set, otherwise
-.br
-/tmp/tkt[uid]
-.SH SEE ALSO
-kerberos(1), kinit(1), klist(1)
-.SH BUGS
-.PP
-Only the tickets in the user's current ticket file are destroyed.
-Separate ticket files are used to hold root instance and password
-changing tickets. These files should probably be destroyed too, or
-all of a user's tickets kept in a single ticket file.
-.SH AUTHORS
-Steve Miller, MIT Project Athena/Digital Equipment Corporation
-.br
-Clifford Neuman, MIT Project Athena
-.br
-Bill Sommerfeld, MIT Project Athena
diff --git a/eBones/usr.bin/kdestroy/kdestroy.c b/eBones/usr.bin/kdestroy/kdestroy.c
deleted file mode 100644
index 926eea52da95..000000000000
--- a/eBones/usr.bin/kdestroy/kdestroy.c
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright 1987, 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * This program causes Kerberos tickets to be destroyed.
- * Options are:
- *
- * -q[uiet] - no bell even if tickets not destroyed
- * -f[orce] - no message printed at all
- *
- * from: kdestroy.c,v 4.5 88/03/18 15:16:02 steiner Exp $
- * $Id: kdestroy.c,v 1.3 1995/07/18 16:37:44 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: kdestroy.c,v 1.3 1995/07/18 16:37:44 mark Exp $";
-#endif lint
-#endif
-
-#include <stdio.h>
-#include <krb.h>
-#ifdef BSD42
-#include <strings.h>
-#endif BSD42
-
-
-static char *pname;
-
-static void
-usage()
-{
- fprintf(stderr, "Usage: %s [-f] [-q]\n", pname);
- exit(1);
-}
-
-int
-main(argc, argv)
- int argc;
- char *argv[];
-{
- int fflag=0, qflag=0, k_errno;
- register char *cp;
-
- cp = rindex (argv[0], '/');
- if (cp == NULL)
- pname = argv[0];
- else
- pname = cp+1;
-
- if (argc > 2)
- usage();
- else if (argc == 2) {
- if (!strcmp(argv[1], "-f"))
- ++fflag;
- else if (!strcmp(argv[1], "-q"))
- ++qflag;
- else usage();
- }
-
- k_errno = dest_tkt();
-
- if (fflag) {
- if (k_errno != 0 && k_errno != RET_TKFIL)
- exit(1);
- else
- exit(0);
- } else {
- if (k_errno == 0)
- printf("Tickets destroyed.\n");
- else if (k_errno == RET_TKFIL)
- fprintf(stderr, "No tickets to destroy.\n");
- else {
- fprintf(stderr, "Tickets NOT destroyed.\n");
- if (!qflag)
- fprintf(stderr, "\007");
- exit(1);
- }
- }
- exit(0);
-}
diff --git a/eBones/usr.bin/kinit/Makefile b/eBones/usr.bin/kinit/Makefile
deleted file mode 100644
index 94549dceb4ec..000000000000
--- a/eBones/usr.bin/kinit/Makefile
+++ /dev/null
@@ -1,10 +0,0 @@
-# From: @(#)Makefile 5.1 (Berkeley) 6/25/90
-# $Id: Makefile,v 1.5 1995/09/14 04:06:11 gibbs Exp $
-
-PROG= kinit
-CFLAGS+=-DKERBEROS -DDEBUG -DBSD42
-DPADD= ${LIBKRB} ${LIBDES}
-LDADD= -L${KRBOBJDIR} -lkrb -L${DESOBJDIR} -ldes
-MAN1= kinit.1
-
-.include <bsd.prog.mk>
diff --git a/eBones/usr.bin/kinit/kinit.1 b/eBones/usr.bin/kinit/kinit.1
deleted file mode 100644
index f9a97a738201..000000000000
--- a/eBones/usr.bin/kinit/kinit.1
+++ /dev/null
@@ -1,133 +0,0 @@
-.\" from: kinit.1,v 4.6 89/01/23 11:39:11 jtkohl Exp $
-.\" $Id: kinit.1,v 1.2 1994/07/19 19:27:36 g89r4222 Exp $
-.\" Copyright 1989 by the Massachusetts Institute of Technology.
-.\"
-.\" For copying and distribution information,
-.\" please see the file <Copyright.MIT>.
-.\"
-.TH KINIT 1 "Kerberos Version 4.0" "MIT Project Athena"
-.SH NAME
-kinit \- Kerberos login utility
-.SH SYNOPSIS
-.B kinit
-[
-.B \-irvl
-]
-.SH DESCRIPTION
-The
-.I kinit
-command is used to login to the
-Kerberos
-authentication and authorization system.
-Note that only registered
-Kerberos
-users can use the
-Kerberos
-system.
-For information about registering as a
-Kerberos
-user,
-see the
-.I kerberos(1)
-manual page.
-.PP
-If you are logged in to a workstation that is running the
-.I toehold
-service,
-you do not have to use
-.I kinit.
-The
-.I toehold
-login procedure will log you into
-Kerberos
-automatically.
-You will need to use
-.I kinit
-only in those situations in which
-your original tickets have expired.
-(Tickets expire in about a day.)
-Note as well that
-.I toehold
-will automatically destroy your tickets when you logout from the workstation.
-.PP
-When you use
-.I kinit
-without options,
-the utility
-prompts for your username and Kerberos password,
-and tries to authenticate your login with the local
-Kerberos
-server.
-.PP
-If
-Kerberos
-authenticates the login attempt,
-.I kinit
-retrieves your initial ticket and puts it in the ticket file specified by
-your KRBTKFILE environment variable.
-If this variable is undefined,
-your ticket will be stored in the
-.IR /tmp
-directory,
-in the file
-.I tktuid ,
-where
-.I uid
-specifies your user identification number.
-.PP
-If you have logged in to
-Kerberos
-without the benefit of the workstation
-.I toehold
-system,
-make sure you use the
-.I kdestroy
-command to destroy any active tickets before you end your login session.
-You may want to put the
-.I kdestroy
-command in your
-.I \.logout
-file so that your tickets will be destroyed automatically when you logout.
-.PP
-The options to
-.I kinit
-are as follows:
-.TP 7
-.B \-i
-.I kinit
-prompts you for a
-Kerberos
-instance.
-.TP
-.B \-r
-.I kinit
-prompts you for a
-Kerberos
-realm.
-This option lets you authenticate yourself with a remote
-Kerberos
-server.
-.TP
-.B \-v
-Verbose mode.
-.I kinit
-prints the name of the ticket file used, and
-a status message indicating the success or failure of
-your login attempt.
-.TP
-.B \-l
-.I kinit
-prompts you for a ticket lifetime in minutes. Due to protocol
-restrictions in Kerberos Version 4, this value must be between 5 and
-1275 minutes.
-.SH SEE ALSO
-.PP
-kerberos(1), kdestroy(1), klist(1), toehold(1)
-.SH BUGS
-The
-.B \-r
-option has not been fully implemented.
-.SH AUTHORS
-Steve Miller, MIT Project Athena/Digital Equipment Corporation
-.br
-Clifford Neuman, MIT Project Athena
diff --git a/eBones/usr.bin/kinit/kinit.c b/eBones/usr.bin/kinit/kinit.c
deleted file mode 100644
index 3b47c7cfb6bb..000000000000
--- a/eBones/usr.bin/kinit/kinit.c
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
- * Copyright 1987, 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * Routine to initialize user to Kerberos. Prompts optionally for
- * user, instance and realm. Authenticates user and gets a ticket
- * for the Kerberos ticket-granting service for future use.
- *
- * Options are:
- *
- * -i[instance]
- * -r[realm]
- * -v[erbose]
- * -l[ifetime]
- *
- * from: kinit.c,v 4.12 90/03/20 16:11:15 jon Exp $
- * $Id: kinit.c,v 1.4 1995/08/03 17:16:00 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: kinit.c,v 1.4 1995/08/03 17:16:00 mark Exp $";
-#endif lint
-#endif
-
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <pwd.h>
-#include <krb.h>
-
-#ifndef ORGANIZATION
-#define ORGANIZATION "MIT Project Athena"
-#endif /*ORGANIZATION*/
-
-#ifdef PC
-#define LEN 64 /* just guessing */
-#endif PC
-
-#if defined(BSD42) || defined(__FreeBSD__) || defined(__NetBSD__)
-#include <strings.h>
-#include <sys/param.h>
-#if defined(ultrix) || defined(sun)
-#define LEN 64
-#else
-#define LEN MAXHOSTNAMELEN
-#endif /* defined(ultrix) || defined(sun) */
-#endif /* BSD42 */
-
-#define LIFE 96 /* lifetime of ticket in 5-minute units */
-
-char *progname;
-
-void usage(void);
-
-void
-get_input(s, size, stream)
-char *s;
-int size;
-FILE *stream;
-{
- char *p;
-
- if (fgets(s, size, stream) == NULL)
- exit(1);
- if ((p = index(s, '\n')) != NULL)
- *p = '\0';
-}
-
-int
-main(argc, argv)
- int argc;
- char *argv[];
-{
- char aname[ANAME_SZ];
- char inst[INST_SZ];
- char realm[REALM_SZ];
- char buf[LEN];
- char *username = NULL;
- int iflag, rflag, vflag, lflag, lifetime, k_errno;
- register char *cp;
- register i;
-
- *inst = *realm = '\0';
- iflag = rflag = vflag = lflag = 0;
- lifetime = LIFE;
- progname = (cp = rindex(*argv, '/')) ? cp + 1 : *argv;
-
- while (--argc) {
- if ((*++argv)[0] != '-') {
- if (username)
- usage();
- username = *argv;
- continue;
- }
- for (i = 1; (*argv)[i] != '\0'; i++)
- switch ((*argv)[i]) {
- case 'i': /* Instance */
- ++iflag;
- continue;
- case 'r': /* Realm */
- ++rflag;
- continue;
- case 'v': /* Verbose */
- ++vflag;
- continue;
- case 'l':
- ++lflag;
- continue;
- default:
- usage();
- exit(1);
- }
- }
- if (username &&
- (k_errno = kname_parse(aname, inst, realm, username))
- != KSUCCESS) {
- fprintf(stderr, "%s: %s\n", progname, krb_err_txt[k_errno]);
- iflag = rflag = 1;
- username = NULL;
- }
- if (k_gethostname(buf, LEN)) {
- fprintf(stderr, "%s: k_gethostname failed\n", progname);
- exit(1);
- }
- printf("%s (%s)\n", ORGANIZATION, buf);
- if (username) {
- printf("Kerberos Initialization for \"%s", aname);
- if (*inst)
- printf(".%s", inst);
- if (*realm)
- printf("@%s", realm);
- printf("\"\n");
- } else {
- if (iflag) {
- printf("Kerberos Initialization\n");
- printf("Kerberos name: ");
- get_input(aname, sizeof(aname), stdin);
- } else {
- int uid = getuid();
- char *getenv();
- struct passwd *pwd;
-
- /* default to current user name unless running as root */
- if (uid == 0 && (username = getenv("USER")) &&
- strcmp(username, "root") != 0) {
- strncpy(aname, username, sizeof(aname));
- strncpy(inst, "root", sizeof(inst));
- } else {
- pwd = getpwuid(uid);
-
- if (pwd == (struct passwd *) NULL) {
- fprintf(stderr, "Unknown name for your uid\n");
- printf("Kerberos name: ");
- gets(aname);
- } else
- strncpy(aname, pwd->pw_name, sizeof(aname));
- }
- }
-
- if (!*aname)
- exit(0);
- if (!k_isname(aname)) {
- fprintf(stderr, "%s: bad Kerberos name format\n",
- progname);
- exit(1);
- }
- }
- /* optional instance */
- if (iflag) {
- printf("Kerberos instance: ");
- get_input(inst, sizeof(inst), stdin);
- if (!k_isinst(inst)) {
- fprintf(stderr, "%s: bad Kerberos instance format\n",
- progname);
- exit(1);
- }
- }
- if (rflag) {
- printf("Kerberos realm: ");
- get_input(realm, sizeof(realm), stdin);
- if (!k_isrealm(realm)) {
- fprintf(stderr, "%s: bad Kerberos realm format\n",
- progname);
- exit(1);
- }
- }
- if (lflag) {
- printf("Kerberos ticket lifetime (minutes): ");
- get_input(buf, sizeof(buf), stdin);
- lifetime = atoi(buf);
- if (lifetime < 5)
- lifetime = 1;
- else
- lifetime /= 5;
- /* This should be changed if the maximum ticket lifetime */
- /* changes */
- if (lifetime > 255)
- lifetime = 255;
- }
- if (!*realm && krb_get_lrealm(realm, 1)) {
- fprintf(stderr, "%s: krb_get_lrealm failed\n", progname);
- exit(1);
- }
- k_errno = krb_get_pw_in_tkt(aname, inst, realm, "krbtgt", realm,
- lifetime, 0);
- if (vflag) {
- printf("Kerberos realm %s:\n", realm);
- printf("%s\n", krb_err_txt[k_errno]);
- } else if (k_errno) {
- fprintf(stderr, "%s: %s\n", progname, krb_err_txt[k_errno]);
- exit(1);
- }
- return 0;
-}
-
-void
-usage()
-{
- fprintf(stderr, "Usage: %s [-irvl] [name]\n", progname);
- exit(1);
-}
diff --git a/eBones/usr.bin/klist/Makefile b/eBones/usr.bin/klist/Makefile
deleted file mode 100644
index ef144105a673..000000000000
--- a/eBones/usr.bin/klist/Makefile
+++ /dev/null
@@ -1,10 +0,0 @@
-# From: @(#)Makefile 5.1 (Berkeley) 6/25/90
-# $Id: Makefile,v 1.5 1995/09/14 04:06:15 gibbs Exp $
-
-PROG= klist
-CFLAGS+=-DKERBEROS -DDEBUG
-DPADD= ${LIBKRB} ${LIBDES}
-LDADD= -L${KRBOBJDIR} -lkrb -L${DESOBJDIR} -ldes
-MAN1= klist.1
-
-.include <bsd.prog.mk>
diff --git a/eBones/usr.bin/klist/klist.1 b/eBones/usr.bin/klist/klist.1
deleted file mode 100644
index af7e31ad2048..000000000000
--- a/eBones/usr.bin/klist/klist.1
+++ /dev/null
@@ -1,84 +0,0 @@
-.\" from: klist.1,v 4.8 89/01/24 14:35:09 jtkohl Exp $
-.\" $Id: klist.1,v 1.1.1.1 1994/09/30 14:50:06 csgr Exp $
-.\" Copyright 1989 by the Massachusetts Institute of Technology.
-.\"
-.\" For copying and distribution information,
-.\" please see the file <Copyright.MIT>.
-.\"
-.TH KLIST 1 "Kerberos Version 4.0" "MIT Project Athena"
-.SH NAME
-klist \- list currently held Kerberos tickets
-.SH SYNOPSIS
-.B klist
-[
-\fB\-s \fR|\fB \-t\fR
-] [
-.B \-file
-name ] [
-.B \-srvtab
-]
-.br
-.SH DESCRIPTION
-.I klist
-prints the name of the tickets file and the
-identity of the principal the tickets are for (as listed in the
-tickets file), and
-lists the principal names of all Kerberos tickets currently held by
-the user, along with the issue and expire time for each authenticator.
-Principal names are listed in the form
-.I name.instance@realm,
-with the '.' omitted if the instance is null,
-and the '@' omitted if the realm is null.
-
-If given the
-.B \-s
-option,
-.I klist
-does not print the issue and expire times, the name of the tickets file,
-or the identity of the principal.
-
-If given the
-.B \-t
-option,
-.B klist
-checks for the existence of a non-expired ticket-granting-ticket in the
-ticket file. If one is present, it exits with status 0, else it exits
-with status 1. No output is generated when this option is specified.
-
-If given the
-.B \-file
-option, the following argument is used as the ticket file.
-Otherwise, if the
-.B KRBTKFILE
-environment variable is set, it is used.
-If this environment variable
-is not set, the file
-.B /tmp/tkt[uid]
-is used, where
-.B uid
-is the current user-id of the user.
-
-If given the
-.B \-srvtab
-option, the file is treated as a service key file, and the names of the
-keys contained therein are printed. If no file is
-specified with a
-.B \-file
-option, the default is
-.IR /etc/kerberosIV/srvtab .
-.SH FILES
-.TP 2i
-/etc/kerberosIV/krb.conf
-to get the name of the local realm
-.TP
-/tmp/tkt[uid]
-as the default ticket file ([uid] is the decimal UID of the user).
-.TP
-/etc/kerberosIV/srvtab
-as the default service key file
-.SH SEE ALSO
-.PP
-kerberos(1), kinit(1), kdestroy(1)
-.SH BUGS
-When reading a file as a service key file, very little sanity or error
-checking is performed.
diff --git a/eBones/usr.bin/klist/klist.c b/eBones/usr.bin/klist/klist.c
deleted file mode 100644
index 0927dcb7f58f..000000000000
--- a/eBones/usr.bin/klist/klist.c
+++ /dev/null
@@ -1,288 +0,0 @@
-/*
- * Copyright 1987, 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * Lists your current Kerberos tickets.
- * Written by Bill Sommerfeld, MIT Project Athena.
- *
- * from: klist.c,v 4.15 89/08/30 11:19:16 jtkohl Exp $
- * $Id: klist.c,v 1.3 1995/07/18 16:37:59 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: klist.c,v 1.3 1995/07/18 16:37:59 mark Exp $";
-#endif lint
-#endif
-
-#include <unistd.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <strings.h>
-#include <sys/file.h>
-#include <krb.h>
-#include <prot.h>
-#include <time.h>
-
-int ok_getst(int fd, char *s, int n);
-void display_srvtab(char *file);
-char *short_date(long *dp);
-void usage(void);
-void display_tktfile(char *file, int tgt_test, int long_form);
-
-char *whoami; /* What was I invoked as?? */
-
-extern char *krb_err_txt[];
-
-/* ARGSUSED */
-int
-main(argc, argv)
- int argc;
- char **argv;
-{
- int long_form = 1;
- int tgt_test = 0;
- int do_srvtab = 0;
- char *tkt_file = NULL;
- char *cp;
-
- whoami = (cp = rindex(*argv, '/')) ? cp + 1 : *argv;
-
- while (*(++argv)) {
- if (!strcmp(*argv, "-s")) {
- long_form = 0;
- continue;
- }
- if (!strcmp(*argv, "-t")) {
- tgt_test = 1;
- long_form = 0;
- continue;
- }
- if (!strcmp(*argv, "-l")) { /* now default */
- continue;
- }
- if (!strcmp(*argv, "-file")) {
- if (*(++argv)) {
- tkt_file = *argv;
- continue;
- } else
- usage();
- }
- if (!strcmp(*argv, "-srvtab")) {
- if (tkt_file == NULL) /* if no other file spec'ed,
- set file to default srvtab */
- tkt_file = KEYFILE;
- do_srvtab = 1;
- continue;
- }
- usage();
- }
-
- if (do_srvtab)
- display_srvtab(tkt_file);
- else
- display_tktfile(tkt_file, tgt_test, long_form);
- exit(0);
-}
-
-void
-display_tktfile(file, tgt_test, long_form)
-char *file;
-int tgt_test, long_form;
-{
- char pname[ANAME_SZ];
- char pinst[INST_SZ];
- char prealm[REALM_SZ];
- char buf1[20], buf2[20];
- int k_errno;
- CREDENTIALS c;
- int header = 1;
-
- if ((file == NULL) && ((file = getenv("KRBTKFILE")) == NULL))
- file = TKT_FILE;
-
- if (long_form)
- printf("Ticket file: %s\n", file);
-
- /*
- * Since krb_get_tf_realm will return a ticket_file error,
- * we will call tf_init and tf_close first to filter out
- * things like no ticket file. Otherwise, the error that
- * the user would see would be
- * klist: can't find realm of ticket file: No ticket file (tf_util)
- * instead of
- * klist: No ticket file (tf_util)
- */
-
- /* Open ticket file */
- if ((k_errno = tf_init(file, R_TKT_FIL))) {
- if (!tgt_test)
- fprintf(stderr, "%s: %s\n", whoami, krb_err_txt[k_errno]);
- exit(1);
- }
- /* Close ticket file */
- (void) tf_close();
-
- /*
- * We must find the realm of the ticket file here before calling
- * tf_init because since the realm of the ticket file is not
- * really stored in the principal section of the file, the
- * routine we use must itself call tf_init and tf_close.
- */
- if ((k_errno = krb_get_tf_realm(file, prealm)) != KSUCCESS) {
- if (!tgt_test)
- fprintf(stderr, "%s: can't find realm of ticket file: %s\n",
- whoami, krb_err_txt[k_errno]);
- exit(1);
- }
-
- /* Open ticket file */
- if ((k_errno = tf_init(file, R_TKT_FIL))) {
- if (!tgt_test)
- fprintf(stderr, "%s: %s\n", whoami, krb_err_txt[k_errno]);
- exit(1);
- }
- /* Get principal name and instance */
- if ((k_errno = tf_get_pname(pname)) ||
- (k_errno = tf_get_pinst(pinst))) {
- if (!tgt_test)
- fprintf(stderr, "%s: %s\n", whoami, krb_err_txt[k_errno]);
- exit(1);
- }
-
- /*
- * You may think that this is the obvious place to get the
- * realm of the ticket file, but it can't be done here as the
- * routine to do this must open the ticket file. This is why
- * it was done before tf_init.
- */
-
- if (!tgt_test && long_form)
- printf("Principal:\t%s%s%s%s%s\n\n", pname,
- (pinst[0] ? "." : ""), pinst,
- (prealm[0] ? "@" : ""), prealm);
- while ((k_errno = tf_get_cred(&c)) == KSUCCESS) {
- if (!tgt_test && long_form && header) {
- printf("%-15s %-15s %s\n",
- " Issued", " Expires", " Principal");
- header = 0;
- }
- if (tgt_test) {
- c.issue_date += ((unsigned char) c.lifetime) * 5 * 60;
- if (!strcmp(c.service, TICKET_GRANTING_TICKET) &&
- !strcmp(c.instance, prealm)) {
- if (time(0) < c.issue_date)
- exit(0); /* tgt hasn't expired */
- else
- exit(1); /* has expired */
- }
- continue; /* not a tgt */
- }
- if (long_form) {
- (void) strcpy(buf1, short_date(&c.issue_date));
- c.issue_date += ((unsigned char) c.lifetime) * 5 * 60;
- (void) strcpy(buf2, short_date(&c.issue_date));
- printf("%s %s ", buf1, buf2);
- }
- printf("%s%s%s%s%s\n",
- c.service, (c.instance[0] ? "." : ""), c.instance,
- (c.realm[0] ? "@" : ""), c.realm);
- }
- if (tgt_test)
- exit(1); /* no tgt found */
- if (header && long_form && k_errno == EOF) {
- printf("No tickets in file.\n");
- }
-}
-
-char *
-short_date(dp)
- long *dp;
-{
- register char *cp;
- extern char *ctime();
- cp = ctime(dp) + 4;
- cp[15] = '\0';
- return (cp);
-}
-
-void
-usage()
-{
- fprintf(stderr,
- "Usage: %s [ -s | -t ] [ -file filename ] [ -srvtab ]\n", whoami);
- exit(1);
-}
-
-void
-display_srvtab(file)
-char *file;
-{
- int stab;
- char serv[SNAME_SZ];
- char inst[INST_SZ];
- char rlm[REALM_SZ];
- unsigned char key[8];
- unsigned char vno;
- int count;
-
- printf("Server key file: %s\n", file);
-
- if ((stab = open(file, O_RDONLY, 0400)) < 0) {
- perror(file);
- exit(1);
- }
- printf("%-15s %-15s %-10s %s\n","Service","Instance","Realm",
- "Key Version");
- printf("------------------------------------------------------\n");
-
- /* argh. getst doesn't return error codes, it silently fails */
- while (((count = ok_getst(stab, serv, SNAME_SZ)) > 0)
- && ((count = ok_getst(stab, inst, INST_SZ)) > 0)
- && ((count = ok_getst(stab, rlm, REALM_SZ)) > 0)) {
- if (((count = read(stab,(char *) &vno,1)) != 1) ||
- ((count = read(stab,(char *) key,8)) != 8)) {
- if (count < 0)
- perror("reading from key file");
- else
- fprintf(stderr, "key file truncated\n");
- exit(1);
- }
- printf("%-15s %-15s %-15s %d\n",serv,inst,rlm,vno);
- }
- if (count < 0)
- perror(file);
- (void) close(stab);
-}
-
-/* adapted from getst() in librkb */
-/*
- * ok_getst() takes a file descriptor, a string and a count. It reads
- * from the file until either it has read "count" characters, or until
- * it reads a null byte. When finished, what has been read exists in
- * the given string "s". If "count" characters were actually read, the
- * last is changed to a null, so the returned string is always null-
- * terminated. ok_getst() returns the number of characters read, including
- * the null terminator.
- *
- * If there is a read error, it returns -1 (like the read(2) system call)
- */
-
-int
-ok_getst(fd, s, n)
- int fd;
- register char *s;
- int n;
-{
- register count = n;
- int err;
- while ((err = read(fd, s, 1)) > 0 && --count)
- if (*s++ == '\0')
- return (n - count);
- if (err < 0)
- return(-1);
- *s = '\0';
- return (n - count);
-}
diff --git a/eBones/usr.bin/ksrvtgt/Makefile b/eBones/usr.bin/ksrvtgt/Makefile
deleted file mode 100644
index a00940d1384a..000000000000
--- a/eBones/usr.bin/ksrvtgt/Makefile
+++ /dev/null
@@ -1,10 +0,0 @@
-# From: @(#)Makefile 5.1 (Berkeley) 6/25/90
-# $Id: Makefile,v 1.5 1995/09/14 04:06:18 gibbs Exp $
-
-PROG= ksrvtgt
-CFLAGS+=-DKERBEROS -DDEBUG
-DPADD= ${LIBKRB} ${LIBDES}
-LDADD= -L${KRBOBJDIR} -lkrb -L${DESOBJDIR} -ldes
-MAN1= ksrvtgt.1
-
-.include <bsd.prog.mk>
diff --git a/eBones/usr.bin/ksrvtgt/ksrvtgt.1 b/eBones/usr.bin/ksrvtgt/ksrvtgt.1
deleted file mode 100644
index 129c7457215c..000000000000
--- a/eBones/usr.bin/ksrvtgt/ksrvtgt.1
+++ /dev/null
@@ -1,51 +0,0 @@
-.\" from: ksrvtgt.1,v 4.1 89/01/24 14:36:28 jtkohl Exp $
-.\" $Id: ksrvtgt.1,v 1.1.1.1 1994/09/30 14:50:07 csgr Exp $
-.\" Copyright 1989 by the Massachusetts Institute of Technology.
-.\"
-.\" For copying and distribution information,
-.\" please see the file <Copyright.MIT>.
-.\"
-.TH KSRVTGT 1 "Kerberos Version 4.0" "MIT Project Athena"
-.SH NAME
-ksrvtgt \- fetch and store Kerberos ticket-granting-ticket using a
-service key
-.SH SYNOPSIS
-.B ksrvtgt
-name instance [[realm] srvtab]
-.SH DESCRIPTION
-.I ksrvtgt
-retrieves a ticket-granting ticket with a lifetime of five (5) minutes
-for the principal
-.I name.instance@realm
-(or
-.I name.instance@localrealm
-if
-.I realm
-is not supplied on the command line), decrypts the response using
-the service key found in
-.I srvtab
-(or in
-.B /etc/kerberosIV/srvtab
-if
-.I srvtab
-is not specified on the command line), and stores the ticket in the
-standard ticket cache.
-.PP
-This command is intended primarily for use in shell scripts and other
-batch-type facilities.
-.SH DIAGNOSTICS
-"Generic kerberos failure (kfailure)" can indicate a whole range of
-problems, the most common of which is the inability to read the service
-key file.
-.SH FILES
-.TP 2i
-/etc/kerberosIV/krb.conf
-to get the name of the local realm.
-.TP
-/tmp/tkt[uid]
-The default ticket file.
-.TP
-/etc/kerberosIV/srvtab
-The default service key file.
-.SH SEE ALSO
-kerberos(1), kinit(1), kdestroy(1)
diff --git a/eBones/usr.bin/ksrvtgt/ksrvtgt.c b/eBones/usr.bin/ksrvtgt/ksrvtgt.c
deleted file mode 100644
index 0f92394b6bbd..000000000000
--- a/eBones/usr.bin/ksrvtgt/ksrvtgt.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * Get a ticket-granting-ticket given a service key file (srvtab)
- * The lifetime is the shortest allowed [1 five-minute interval]
- *
- * from: ksrvtgt.c,v 4.3 89/07/28 10:17:28 jtkohl Exp $
- * $Id: ksrvtgt.c,v 1.3 1995/07/18 16:40:07 mark Exp $
- */
-
-#ifndef lint
-const char rcsid[] =
-"$Id: ksrvtgt.c,v 1.3 1995/07/18 16:40:07 mark Exp $";
-#endif /* lint */
-
-#include <stdio.h>
-#include <string.h>
-#include <sys/param.h>
-#include <krb.h>
-#include <conf.h>
-
-int
-main(argc,argv)
- int argc;
- char **argv;
-{
- char realm[REALM_SZ + 1];
- register int code;
- char srvtab[MAXPATHLEN + 1];
-
- bzero(realm, sizeof(realm));
- bzero(srvtab, sizeof(srvtab));
-
- if (argc < 3 || argc > 5) {
- fprintf(stderr, "Usage: %s name instance [[realm] srvtab]\n",
- argv[0]);
- exit(1);
- }
-
- if (argc == 4)
- (void) strncpy(srvtab, argv[3], sizeof(srvtab) -1);
-
- if (argc == 5) {
- (void) strncpy(realm, argv[3], sizeof(realm) - 1);
- (void) strncpy(srvtab, argv[4], sizeof(srvtab) -1);
- }
-
- if (srvtab[0] == 0)
- (void) strcpy(srvtab, KEYFILE);
-
- if (realm[0] == 0)
- if (krb_get_lrealm(realm, 1) != KSUCCESS)
- (void) strcpy(realm, KRB_REALM);
-
- code = krb_get_svc_in_tkt(argv[1], argv[2], realm,
- "krbtgt", realm, 1, srvtab);
- if (code)
- fprintf(stderr, "%s\n", krb_err_txt[code]);
- exit(code);
-}
diff --git a/eBones/usr.bin/passwd/kpasswd.c b/eBones/usr.bin/passwd/kpasswd.c
deleted file mode 100644
index 56e76a3d762f..000000000000
--- a/eBones/usr.bin/passwd/kpasswd.c
+++ /dev/null
@@ -1,223 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- *
- * For copying and distribution information, please see the file
- * Copyright.MIT.
- *
- * change your password with kerberos
- */
-
-#ifndef lint
-#if 0
-static char rcsid_kpasswd_c[] =
- "BonesHeader: /afs/athena.mit.edu/astaff/project/kerberos/src/kadmin/RCS/kpasswd.c,v 4.3 89/09/26 09:33:02 jtkohl Exp ";
-#endif
-static const char rcsid[] =
- "$Id: kpasswd.c,v 1.1 1995/07/18 16:41:20 mark Exp $";
-#endif lint
-
-/*
- * kpasswd
- * change your password with kerberos
- */
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/param.h>
-#include <pwd.h>
-#include "kadm.h"
-
-#include "extern.h"
-
-extern void krb_set_tkt_string();
-static void go_home(char *, int);
-
-
-int krb_passwd(char *uname, char *iflag, char *rflag, char *uflag)
-{
- char name[ANAME_SZ]; /* name of user */
- char inst[INST_SZ]; /* instance of user */
- char realm[REALM_SZ]; /* realm of user */
- char default_name[ANAME_SZ];
- char default_inst[INST_SZ];
- char default_realm[REALM_SZ];
- int realm_given = 0; /* True if realm was give on cmdline */
- int use_default = 1; /* True if we should use default name */
- struct passwd *pw;
- int status; /* return code */
- des_cblock new_key;
- int c;
- extern char *optarg;
- extern int optind;
- char tktstring[MAXPATHLEN];
-
- void get_pw_new_key();
-
-#ifdef NOENCRYPTION
-#define read_long_pw_string placebo_read_pw_string
-#else
-#define read_long_pw_string des_read_pw_string
-#endif
- int read_long_pw_string();
-
- bzero(name, sizeof(name));
- bzero(inst, sizeof(inst));
- bzero(realm, sizeof(realm));
-
- if (krb_get_tf_fullname(TKT_FILE, default_name, default_inst,
- default_realm) != KSUCCESS) {
- pw = getpwuid((int) getuid());
- if (pw) {
- strcpy(default_name, pw->pw_name);
- } else {
- /* seems like a null name is kinda silly */
- strcpy(default_name, "");
- }
- strcpy(default_inst, "");
- if (krb_get_lrealm(default_realm, 1) != KSUCCESS)
- strcpy(default_realm, KRB_REALM);
- }
-
- if(uflag) {
- if (status = kname_parse(name, inst, realm, uflag)) {
- errx(2, "Kerberos error: %s", krb_err_txt[status]);
- }
- if (realm[0])
- realm_given++;
- else
- if (krb_get_lrealm(realm, 1) != KSUCCESS)
- strcpy(realm, KRB_REALM);
- }
-
- if(uname) {
- if (k_isname(uname)) {
- strncpy(name, uname, sizeof(name) - 1);
- } else {
- errx(1, "bad name: %s", uname);
- }
- }
-
- if(iflag) {
- if (k_isinst(iflag)) {
- strncpy(inst, iflag, sizeof(inst) - 1);
- } else {
- errx(1, "bad instance: %s", iflag);
- }
- }
-
- if(rflag) {
- if (k_isrealm(rflag)) {
- strncpy(realm, rflag, sizeof(realm) - 1);
- realm_given++;
- } else {
- errx(1, "bad realm: %s", rflag);
- }
- }
-
- if(uname || iflag || rflag || uflag) use_default = 0;
-
- if (use_default) {
- strcpy(name, default_name);
- strcpy(inst, default_inst);
- strcpy(realm, default_realm);
- } else {
- if (!name[0])
- strcpy(name, default_name);
- if (!realm[0])
- strcpy(realm, default_realm);
- }
-
- (void) sprintf(tktstring, "/tmp/tkt_cpw_%d",getpid());
- krb_set_tkt_string(tktstring);
-
- get_pw_new_key(new_key, name, inst, realm, realm_given);
-
- if ((status = kadm_init_link("changepw", KRB_MASTER, realm))
- != KADM_SUCCESS)
- com_err("kpasswd", status, "while initializing");
- else if ((status = kadm_change_pw(new_key)) != KADM_SUCCESS)
- com_err("kpasswd", status, " attempting to change password.");
-
- if (status != KADM_SUCCESS)
- fprintf(stderr,"Password NOT changed.\n");
- else
- printf("Password changed.\n");
-
- (void) dest_tkt();
- if (status)
- exit(2);
- else
- exit(0);
-}
-
-void get_pw_new_key(new_key, name, inst, realm, print_realm)
- des_cblock new_key;
- char *name;
- char *inst;
- char *realm;
- int print_realm; /* True if realm was give on cmdline */
-{
- char ppromp[40+ANAME_SZ+INST_SZ+REALM_SZ]; /* for the password prompt */
- char pword[MAX_KPW_LEN]; /* storage for the password */
- char npromp[40+ANAME_SZ+INST_SZ+REALM_SZ]; /* for the password prompt */
-
- char local_realm[REALM_SZ];
- int status;
-
- /*
- * We don't care about failure; this is to determine whether or
- * not to print the realm in the prompt for a new password.
- */
- (void) krb_get_lrealm(local_realm, 1);
-
- if (strcmp(local_realm, realm))
- print_realm++;
-
- (void) sprintf(ppromp,"Old password for %s%s%s%s%s:",
- name, *inst ? "." : "", inst,
- print_realm ? "@" : "", print_realm ? realm : "");
- if (read_long_pw_string(pword, sizeof(pword)-1, ppromp, 0)) {
- fprintf(stderr, "Error reading old password.\n");
- exit(1);
- }
-
- if ((status = krb_get_pw_in_tkt(name, inst, realm, PWSERV_NAME,
- KADM_SINST, 1, pword)) != KSUCCESS) {
- if (status == INTK_BADPW) {
- printf("Incorrect old password.\n");
- exit(0);
- }
- else {
- fprintf(stderr, "Kerberos error: %s\n", krb_err_txt[status]);
- exit(1);
- }
- }
- bzero(pword, sizeof(pword));
- do {
- (void) sprintf(npromp,"New Password for %s%s%s%s%s:",
- name, *inst ? "." : "", inst,
- print_realm ? "@" : "", print_realm ? realm : "");
- if (read_long_pw_string(pword, sizeof(pword)-1, npromp, 1))
- go_home("Error reading new password, password unchanged.\n",0);
- if (strlen(pword) == 0)
- printf("Null passwords are not allowed; try again.\n");
- } while (strlen(pword) == 0);
-
-#ifdef NOENCRYPTION
- bzero((char *) new_key, sizeof(des_cblock));
- new_key[0] = (unsigned char) 1;
-#else
- (void) des_string_to_key(pword, new_key);
-#endif
- bzero(pword, sizeof(pword));
-}
-
-static void
-go_home(str,x)
- char *str;
- int x;
-{
- fprintf(stderr, str, x);
- (void) dest_tkt();
- exit(1);
-}
diff --git a/eBones/usr.bin/register/Makefile b/eBones/usr.bin/register/Makefile
deleted file mode 100644
index 9e4b170386f6..000000000000
--- a/eBones/usr.bin/register/Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-# @(#)Makefile 8.1 (Berkeley) 6/1/93
-# $Id: Makefile,v 1.5 1995/09/14 04:08:57 gibbs Exp $
-
-PROG= register
-CFLAGS+=-DCRYPT -DDEBUG -DKERBEROS
-DPADD= ${LIBKRB} ${LIBDES} ${LIBCRYPT}
-LDADD= -L${KRBOBJDIR} -lkrb -L${DESOBJDIR} -ldes -lcrypt
-BINOWN= root
-BINMODE=4555
-
-.include <bsd.prog.mk>
diff --git a/eBones/usr.bin/register/register.1 b/eBones/usr.bin/register/register.1
deleted file mode 100644
index d8bf10442e61..000000000000
--- a/eBones/usr.bin/register/register.1
+++ /dev/null
@@ -1,63 +0,0 @@
-.\" Copyright (c) 1991, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\" must display the following acknowledgement:
-.\" This product includes software developed by the University of
-.\" California, Berkeley and its contributors.
-.\" 4. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)register.1 8.1 (Berkeley) 6/1/93
-.\"
-.TH REGISTER 1 "June 1, 1993"
-.UC 7
-.SH NAME
-register \- register with Kerberos
-.SH SYNOPSIS
-.B register
-.SH DESCRIPTION
-The
-.I register
-command
-is used to register a new user with Kerberos.
-The Kerberos server keeps record of certain trusted hosts
-from which it will accept new registrations.
-If the host on which
-.I register
-is run is trusted by Kerberos, the user
-is asked for his current password, and then
-a new password to be used with Kerberos.
-A user may only register with Kerberos one time.
-.SH FILES
-.br
-/.update.keyxx.xx.xx.xx shared DES key with server
-.SH "SEE ALSO"
-registerd(8), kerberos(1)
-.SH DIAGNOSTICS
-\*(lqPrincipal not unique\*(rq
-if the user already exists in the Kerberos database.
-.br
-\*(lqPermission Denied,\*(rq
-if the host on which register is being run is untrusted.
diff --git a/eBones/usr.bin/register/register.c b/eBones/usr.bin/register/register.c
deleted file mode 100644
index 7050cca1284b..000000000000
--- a/eBones/usr.bin/register/register.c
+++ /dev/null
@@ -1,316 +0,0 @@
-/*-
- * Copyright (c) 1989, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#if 0
-#ifndef lint
-static char copyright[] =
-"@(#) Copyright (c) 1989, 1993\n\
- The Regents of the University of California. All rights reserved.\n";
-static char sccsid[] = "@(#)register.c 8.1 (Berkeley) 6/1/93";
-#endif /* not lint */
-#endif
-
-#include <string.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/time.h>
-#include <sys/resource.h>
-#include <sys/socket.h>
-#include <sys/file.h>
-#include <sys/signal.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <pwd.h>
-#include <stdio.h>
-#include <netdb.h>
-#include <des.h>
-#include <krb.h>
-#include "pathnames.h"
-#include "register_proto.h"
-
-#define SERVICE "krbupdate" /* service to add to KDC's database */
-#define PROTOCOL "tcp"
-
-void die(int);
-void type_info(void);
-void setup_key(struct sockaddr_in local);
-void cleanup(void);
-int get_user_info(void);
-
-char realm[REALM_SZ];
-char krbhst[MAX_HSTNM];
-
-static char pname[ANAME_SZ];
-static char iname[INST_SZ];
-static char password[_PASSWORD_LEN];
-
-void
-main(argc, argv)
- int argc;
- char **argv;
-{
- struct servent *se;
- struct hostent *host;
- struct sockaddr_in sin, local;
- int rval;
- int sock, llen;
- u_char code;
- static struct rlimit rl = { 0, 0 };
-
- signal(SIGPIPE, die);
-
- if (setrlimit(RLIMIT_CORE, &rl) < 0) {
- perror("rlimit");
- exit(1);
- }
-
- if ((se = getservbyname(SERVICE, PROTOCOL)) == NULL) {
- fprintf(stderr, "couldn't find entry for service %s\n",
- SERVICE);
- exit(1);
- }
- if ((rval = krb_get_lrealm(realm,0)) != KSUCCESS) {
- fprintf(stderr, "couldn't get local Kerberos realm: %s\n",
- krb_err_txt[rval]);
- exit(1);
- }
-
- if ((rval = krb_get_krbhst(krbhst, realm, 1)) != KSUCCESS) {
- fprintf(stderr, "couldn't get Kerberos host: %s\n",
- krb_err_txt[rval]);
- exit(1);
- }
-
- if ((host = gethostbyname(krbhst)) == NULL) {
- fprintf(stderr, "couldn't get host entry for host %s\n",
- krbhst);
- exit(1);
- }
-
- sin.sin_family = host->h_addrtype;
- (void)bcopy(host->h_addr, (char *) &sin.sin_addr, host->h_length);
- sin.sin_port = se->s_port;
-
- if ((sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) {
- perror("socket");
- exit(1);
- }
-
- if (connect(sock, (struct sockaddr *) &sin, sizeof(sin)) < 0) {
- perror("connect");
- (void)close(sock);
- exit(1);
- }
-
- llen = sizeof(local);
- if (getsockname(sock, (struct sockaddr *) &local, &llen) < 0) {
- perror("getsockname");
- (void)close(sock);
- exit(1);
- }
-
- setup_key(local);
-
- type_info();
-
- if (!get_user_info()) {
- code = ABORT;
- (void)des_write(sock, &code, 1);
- cleanup();
- exit(1);
- }
-
- code = APPEND_DB;
- if (des_write(sock, &code, 1) != 1) {
- perror("write 1");
- cleanup();
- exit(1);
- }
-
- if (des_write(sock, pname, ANAME_SZ) != ANAME_SZ) {
- perror("write principal name");
- cleanup();
- exit(1);
- }
-
- if (des_write(sock, iname, INST_SZ) != INST_SZ) {
- perror("write instance name");
- cleanup();
- exit(1);
- }
-
- if (des_write(sock, password, 255) != 255) {
- perror("write password");
- cleanup();
- exit(1);
- }
-
- /* get return message */
-
- {
- int cc;
- char msgbuf[BUFSIZ];
-
- cc = read(sock, msgbuf, BUFSIZ);
- if (cc <= 0) {
- fprintf(stderr, "protocol error during key verification\n");
- cleanup();
- exit(1);
- }
- if (strncmp(msgbuf, GOTKEY_MSG, 6) != 0) {
- fprintf(stderr, "%s: %s", krbhst, msgbuf);
- cleanup();
- exit(1);
- }
-
- cc = des_read(sock, msgbuf, BUFSIZ);
- if (cc <= 0) {
- fprintf(stderr, "protocol error during read\n");
- cleanup();
- exit(1);
- } else {
- printf("%s: %s", krbhst, msgbuf);
- }
- }
-
- cleanup();
- close(sock);
-}
-
-void
-cleanup()
-{
- bzero(password, 255);
-}
-
-extern char *crypt();
-extern char *getpass();
-
-int
-get_user_info()
-{
- int uid = getuid();
- int valid = 0, i;
- struct passwd *pw;
- char *pas, *namep;
-
- /* NB: we must run setuid-root to get at the real pw file */
-
- if ((pw = getpwuid(uid)) == NULL) {
- fprintf(stderr, "Who are you?\n");
- return(0);
- }
- (void)seteuid(uid);
- (void)strcpy(pname, pw->pw_name); /* principal name */
-
- for (i = 1; i < 3; i++) {
- pas = getpass("login password:");
- namep = crypt(pas, pw->pw_passwd);
- if (strcmp(namep, pw->pw_passwd)) {
- fprintf(stderr, "Password incorrect\n");
- continue;
- } else {
- valid = 1;
- break;
- }
- }
- if (!valid)
- return(0);
- pas = getpass("Kerberos password (may be the same):");
- while (*pas == NULL) {
- printf("<NULL> password not allowed\n");
- pas = getpass("Kerberos password (may be the same):");
- }
- (void)strcpy(password, pas); /* password */
- pas = getpass("Retype Kerberos password:");
- if (strcmp(password, pas)) {
- fprintf(stderr, "Password mismatch -- aborted\n");
- return(0);
- }
-
- iname[0] = NULL; /* null instance name */
- return(1);
-}
-
-void
-setup_key(local)
- struct sockaddr_in local;
-{
- static struct keyfile_data kdata;
- static Key_schedule schedule;
- int fd;
- char namebuf[MAXPATHLEN];
-
- (void) sprintf(namebuf, "%s%s",
- CLIENT_KEYFILE,
- inet_ntoa(local.sin_addr));
-
- fd = open(namebuf, O_RDONLY);
- if (fd < 0) {
- fprintf(stderr, "couldn't open key file %s for local host: ",
- namebuf);
- perror("");
- exit(1);
- }
-
- if (read(fd, (char *)&kdata, sizeof(kdata)) != sizeof(kdata)) {
- fprintf(stderr,"size error reading key file for local host %s\n",
- inet_ntoa(local.sin_addr));
- exit(1);
- }
- key_sched((des_cblock *)kdata.kf_key, schedule);
- des_set_key((des_cblock *)kdata.kf_key, schedule);
- return;
-}
-
-void
-type_info()
-{
- printf("Kerberos user registration (realm %s)\n\n", realm);
- printf("Please enter your login password followed by your new Kerberos password.\n");
- printf("The Kerberos password you enter now will be used in the future\n");
- printf("as your Kerberos password for all machines in the %s realm.\n", realm);
- printf("You will only be allowed to perform this operation once, although you may run\n");
- printf("the %s program from now on to change your Kerberos password.\n\n", _PATH_KPASSWD);
-}
-
-void
-die(sig)
- int sig;
-{
- fprintf(stderr, "\nServer no longer listening\n");
- fflush(stderr);
- cleanup();
- exit(1);
-}
diff --git a/eBones/usr.bin/rkinit/Makefile b/eBones/usr.bin/rkinit/Makefile
deleted file mode 100644
index b910742fe1b0..000000000000
--- a/eBones/usr.bin/rkinit/Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-# Makefile,v 1.2 1995/01/20 22:08:14 wollman Exp
-
-PROG= rkinit
-SRCS= ${RKINITOBJDIR}/rkinit_err.h rkinit.c
-CFLAGS+= -I${KRBOBJDIR} -I${RKINITOBJDIR}
-LDADD+= -L${RKINITOBJDIR} -lrkinit -L${KRBOBJDIR} -lkrb -L${DESOBJDIR} -ldes
-LDADD+= -lss -lcom_err
-
-MAN1= rkinit.1
-
-.include <bsd.prog.mk>
diff --git a/eBones/usr.bin/rkinit/rkinit.1 b/eBones/usr.bin/rkinit/rkinit.1
deleted file mode 100644
index 5634d2b7483c..000000000000
--- a/eBones/usr.bin/rkinit/rkinit.1
+++ /dev/null
@@ -1,206 +0,0 @@
-.\"
-.\" $Header: /local/cvsfiles/kerberos/src/appl/rkinit/man/rkinit.1,v 1.1 1991/12/03 23:21:25 eichin Exp $
-.\" $Source: /local/cvsfiles/kerberos/src/appl/rkinit/man/rkinit.1,v $
-.\" $Author: eichin $
-.\"
-.\"
-.TH RKINIT 1 "November 12, 1989"
-.UC 4
-.SH NAME
-rkinit \- establish kerberos tickets safely on a remote host
-.SH SYNOPSIS
-.B rkinit [ host ]
-[ -p
-.B principal
-] [ -l
-.B username
-] [ -k
-.B kerberos_realm
-] [ -f
-.B ticket_file
-] [ -h
-.B remote_host
-] [ -t
-.B ticket_lifetime
-] [
-.B \-notimeout
-]
-
-A host name must be specified either as the first command line
-argument or following a \-h flag. If redundant command line
-arguments are given, the last one to appear takes precedence.
-
-.SH DESCRIPTION
-.I rkinit
-is a program that allows a user to establish kerberos tickets on
-a remote host registered for
-rlogin service. This can be done without the user's kerberos
-password ever leaving the client machine.
-
-In order to establish tickets remotely
-without the use of something like
-.I rkinit,
-one would have to log in to the
-remote host and run
-.IR kinit (1).
-.I rkinit
-followed by
-.I rlogin
-can be thought of as a safe substitute for
-.I rlogin
-followed
-.I kinit.
-
-.I rkinit
-uses the same access checking mechanism as
-.I rlogin.
-That means that
-.I rkinit
-can be used to create any tickets for user
-.I A
-on remote host
-.I B
-if and only if
-.IR A 's
-tickets would entitle a login to
-.I B.
-This means that one can create remote tickets for himself or for
-another user if he is in that user's .klogin file.
-
-.I rkinit
-understands the following command line options:
-
-.TP 4
-.B \-p \fIprincipal\fR
-If
-.I principal,
-in the format
-.I name[.inst][@realm]
-is specified, the tickets created on the remote host will be the
-tickets indicated by the
-.I principal
-field. If this option is not given, the following defaults are
-used: If the user running
-.I rkinit
-does not have tickets on the client machine,
-.I rkinit
-will prompt for a password and behave effectively as if the user
-had invoked
-.I kinit
-on the specified
-remote host; i.e.,
-the tickets established will be owned on the remote host
-by the user who invoked
-.I rkinit
-and will be for the local realm of the
-remote host.
-If the user running
-.I rkinit
-already has tickets,
-.I rkinit
-will prompt for a password and create tickets whose principal
-matches that of the
-tickets that the user already has.
-
-
-.TP
-.B \-l \fIusername\fR
-If
-.I username
-is specified, the ticket file on the remote host will be owned by the
-user
-.I username.
-If it is not specified, the tickets will be owned by
-the remote user whose login name matches that of the user invoking
-.I rkinit.
-
-.TP
-.B \-r \fIrealm\fR
-.I realm
-is used to tell
-.I rkinit
-what realm the remote host is in. This
-option should not usually have to be used since
-.I rkinit
-uses
-.IR krb_realmofhost (3)
-to determine the remote host's kerberos realm. Note that this
-is distinct from realm as specified in
-.I principal,
-which refers to the realm of the remote tickets.
-
-.TP
-.B \-f \fIticket_file\fR
-This option is used to specify the name of the ticket file that
-should be used on the remote host. Note that if you
-specify a location for the ticket file that is other
-than the default, you will have to set the environment variable
-KRBTKFILE to that filename once you get to the remote host in
-order for you to use the tickets.
-If a ticket file is not specified, the tickets will
-be placed in the
-default location as specified by
-.IR tkt_file (3).
-On a UNIX host, this is /tmp/tkt<uid>, where
-<uid> is the user id of the person who owns the remote ticket file.
-
-.TP
-.B \-h \fIremote_host\fR
-.I remote host
-is the host on which remote tickets are being obtained. This
-option can be used in place of specifying the host as the first
-command line argument.
-
-.TP
-.B \-t \fIticket_lifetime\fR
-.I ticket lifetime
-is the lifetime in minutes of the remote tickets. If it is not
-specified, the default ticket life time (as defined in krb.h) is
-used.
-
-.TP
-.B \-notimeout
-prevents the client from timing out. This is mainly useful only
-for debugging since the rkinit server also times out.
-
-.SH EXAMPLES
-
-In the following examples,
-.B tabetha
-and
-.B soup
-are machines in the
-.B ATHENA.MIT.EDU
-kerberos realm and
-.B local
-is a user who can log in
-to
-.B soup
-and has
-.B qjb.root@ATHENA.MIT.EDU
-in his .klogin file.
-
-
-% rkinit tabetha
-.br
-Kerberos initialization (tabetha)
-.br
-Password for qjb@ATHENA.MIT.EDU:
-.br
-%
-.br
-
-.br
-% rkinit soup -p qjb.root -l local
-.br
-Kerberos initialization (soup): tickets will be owned by local
-.br
-Password for qjb.root@ATHENA.MIT.EDU:
-.br
-%
-
-.SH SEE ALSO
-rkinitd(8), kerberos(1), kerberos(3), kinit(1)
-
-.SH AUTHOR
-Emanuel Jay Berkenbilt (MIT-Project Athena)
diff --git a/eBones/usr.bin/rkinit/rkinit.c b/eBones/usr.bin/rkinit/rkinit.c
deleted file mode 100644
index 35a0eebfaa10..000000000000
--- a/eBones/usr.bin/rkinit/rkinit.c
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
- * $Id: rkinit.c,v 1.1 1993/12/10 18:41:00 dglo Exp gibbs $
- * $Source: /usr/src/eBones/rkinit/RCS/rkinit.c,v $
- * $Author: dglo $
- *
- * This is an rkinit client
- */
-
-#if !defined(lint) && !defined(SABER) && !defined(LOCORE) && defined(RCS_HDRS)
-static char *rcsid = "$Id: rkinit.c,v 1.1 1993/12/10 18:41:00 dglo Exp gibbs $";
-#endif /* lint || SABER || LOCORE || RCS_HDRS */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <netdb.h>
-#include <pwd.h>
-#include <krb.h>
-#include <des.h>
-#include <com_err.h>
-
-#include <rkinit.h>
-#include <rkinit_err.h>
-
-#ifndef TRUE
-#define TRUE 1
-#endif
-
-#ifndef FALSE
-#define FALSE 0
-#endif
-
-#ifdef __STDC__
-static void usage(void)
-#else
-static void usage()
-#endif /* __STDC__ */
-{
- fprintf(stderr,"Usage: rkinit [host] options\n");
- fprintf(stderr,
- "Options: [-l username] [-k krb_realm] [-p principal] [-f tktfile]\n");
- fprintf(stderr, " [-t lifetime] [-h host] [-notimeout]\n");
- fprintf(stderr, "A host must be specified either with the -h option ");
- fprintf(stderr, "or as the first argument.\n");
-
- exit(1);
-}
-
-int
-#ifdef __STDC__
-main(int argc, char *argv[])
-#else
-main(argc, argv)
- int argc;
- char *argv[];
-#endif /* __STDC__ */
-{
- char *whoami; /* Name of this program */
-
- char principal[MAX_K_NAME_SZ]; /* Principal for which to get tickets */
- char *host = NULL; /* Remote host */
- char *username = 0; /* Username of owner of ticket */
- char r_krealm[REALM_SZ]; /* Kerberos realm of remote host */
- char aname[ANAME_SZ]; /* Aname of remote ticket file */
- char inst[INST_SZ]; /* Instance of remote ticket file */
- char realm[REALM_SZ]; /* Realm of remote ticket file */
- char *tktfilename = NULL; /* Name of ticket file on remote host */
- u_long lifetime = DEFAULT_TKT_LIFE; /* Lifetime of remote tickets */
- int timeout = TRUE; /* Should we time out? */
- rkinit_info info; /* Information needed by rkinit */
-
- struct passwd *localid; /* To determine local id */
-
- int status = 0; /* general error number */
-
- int i;
-
- bzero(r_krealm, sizeof(r_krealm));
- bzero(principal, sizeof(principal));
- bzero(aname, sizeof(aname));
- bzero(inst, sizeof(inst));
- bzero(realm, sizeof(realm));
-
- /* Parse commandline arguements. */
- if ((whoami = rindex(argv[0], '/')) == 0)
- whoami = argv[0];
- else
- whoami++;
-
- if (argc < 2) usage();
-
- if (argv[1][0] != '-') {
- host = argv[1];
- i = 2;
- }
- else
- i = 1;
-
- for (/* i initialized above */; i < argc; i++) {
- if (strcmp(argv[i], "-h") == NULL) {
- if (++i >= argc)
- usage();
- else
- host = argv[i];
- }
- else if (strcmp(argv[i], "-l") == NULL) {
- if (++i >= argc)
- usage();
- else
- username = argv[i];
- }
- else if (strcmp(argv[i], "-k") == NULL) {
- if (++i >= argc)
- usage();
- else
- strncpy(r_krealm, argv[i], sizeof(r_krealm) - 1);
- }
- else if (strcmp(argv[i], "-p") == NULL) {
- if (++i >= argc)
- usage();
- else
- strncpy(principal, argv[i], sizeof(principal) - 1);
- }
- else if (strcmp(argv[i], "-f") == NULL) {
- if (++i >= argc)
- usage();
- else
- tktfilename = argv[i];
- }
- else if (strcmp(argv[i], "-t") == NULL) {
- if (++i >= argc)
- usage();
- else {
- lifetime = atoi(argv[i])/5;
- if (lifetime == 0)
- lifetime = 1;
- else if (lifetime > 255)
- lifetime = 255;
- }
- }
- else if (strcmp(argv[i], "-notimeout") == NULL)
- timeout = FALSE;
- else
- usage();
- }
-
- if (host == NULL)
- usage();
-
- /* Initialize the realm of the remote host if necessary */
- if (r_krealm[0] == 0) {
- /*
- * Try to figure out the realm of the remote host. If the
- * remote host is unknown, don't worry about it; the library
- * will handle the error better and print a good error message.
- */
- struct hostent *hp;
- if ((hp = gethostbyname(host)))
- strcpy(r_krealm, krb_realmofhost(hp->h_name));
- }
-
- /* If no username was specified, use local id on client host */
- if (username == 0) {
- if ((localid = getpwuid(getuid())) == 0) {
- fprintf(stderr, "You can not be found in the password file.\n");
- exit(1);
- }
- username = localid->pw_name;
- }
-
- /* Find out who will go in the ticket file */
- if (! principal[0]) {
- if ((status = krb_get_tf_fullname(TKT_FILE, aname, inst, realm))
- != KSUCCESS) {
- /*
- * If user has no ticket file and principal was not specified,
- * we will try to get tickets for username@remote_realm
- */
- strcpy(aname, username);
- strcpy(realm, r_krealm);
- }
- }
- else {
- if ((status = kname_parse(aname, inst, realm, principal))
- != KSUCCESS) {
- fprintf(stderr, "%s\n", krb_err_txt[status]);
- exit(1);
- }
- if (strlen(realm) == 0) {
- if (krb_get_lrealm(realm, 1) != KSUCCESS)
- strcpy(realm, KRB_REALM);
- }
- }
-
- bzero((char *)&info, sizeof(info));
-
- strcpy(info.aname, aname);
- strcpy(info.inst, inst);
- strcpy(info.realm, realm);
- strcpy(info.sname, "krbtgt");
- strcpy(info.sinst, realm);
- strncpy(info.username, username, sizeof(info.username) - 1);
- if (tktfilename)
- strncpy(info.tktfilename, tktfilename, sizeof(info.tktfilename) - 1);
- info.lifetime = lifetime;
-
- if ((status = rkinit(host, r_krealm, &info, timeout))) {
- com_err(whoami, status, "while obtaining remote tickets:");
- fprintf(stderr, "%s\n", rkinit_errmsg(0));
- exit(1);
- }
-
- exit(0);
-}
diff --git a/eBones/usr.sbin/Makefile b/eBones/usr.sbin/Makefile
deleted file mode 100644
index 4d583fc0282f..000000000000
--- a/eBones/usr.sbin/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-# From: @(#)Makefile 5.1 (Berkeley) 6/25/90
-# $Id$
-
-SUBDIR= ext_srvtab kadmind kdb_destroy kdb_edit kdb_init kdb_util \
- kerberos kprop ksrvutil kstash make_keypair
-
-.include <bsd.subdir.mk>
diff --git a/eBones/usr.sbin/Makefile.inc b/eBones/usr.sbin/Makefile.inc
deleted file mode 100644
index a3ace6192593..000000000000
--- a/eBones/usr.sbin/Makefile.inc
+++ /dev/null
@@ -1,5 +0,0 @@
-# @(#)Makefile.inc 8.1 (Berkeley) 6/6/93
-
-BINDIR?= /usr/sbin
-
-.include "../Makefile.inc"
diff --git a/eBones/usr.sbin/ext_srvtab/Makefile b/eBones/usr.sbin/ext_srvtab/Makefile
deleted file mode 100644
index 0808f85a73d9..000000000000
--- a/eBones/usr.sbin/ext_srvtab/Makefile
+++ /dev/null
@@ -1,10 +0,0 @@
-# From: @(#)Makefile 5.1 (Berkeley) 6/25/90
-# $Id: Makefile,v 1.5 1995/09/14 04:09:34 gibbs Exp $
-
-PROG= ext_srvtab
-CFLAGS+=-DKERBEROS
-DPADD= ${LIBKDB} ${LIBKRB} ${LIBDES}
-LDADD+= -L${KDBOBJDIR} -lkdb -L${KRBOBJDIR} -lkrb -L${DESOBJDIR} -ldes
-MAN8= ext_srvtab.8
-
-.include <bsd.prog.mk>
diff --git a/eBones/usr.sbin/ext_srvtab/ext_srvtab.8 b/eBones/usr.sbin/ext_srvtab/ext_srvtab.8
deleted file mode 100644
index 565c3a37f4b8..000000000000
--- a/eBones/usr.sbin/ext_srvtab/ext_srvtab.8
+++ /dev/null
@@ -1,62 +0,0 @@
-.\" from: ext_srvtab.8,v 4.2 89/07/18 16:53:18 jtkohl Exp $
-.\" $Id: ext_srvtab.8,v 1.1.1.1 1994/09/30 14:50:05 csgr Exp $
-.\" Copyright 1989 by the Massachusetts Institute of Technology.
-.\"
-.\" For copying and distribution information,
-.\" please see the file <Copyright.MIT>.
-.\"
-.TH EXT_SRVTAB 8 "Kerberos Version 4.0" "MIT Project Athena"
-.SH NAME
-ext_srvtab \- extract service key files from Kerberos key distribution center database
-.SH SYNOPSIS
-ext_srvtab [
-.B \-n
-] [
-.B \-r realm
-] [
-.B hostname ...
-]
-.SH DESCRIPTION
-.I ext_srvtab
-extracts service key files from the Kerberos key distribution center
-(KDC) database.
-.PP
-Upon execution, it prompts the user to enter the master key string for
-the database. If the
-.B \-n
-option is specified, the master key is instead fetched from the master
-key cache file.
-.PP
-For each
-.I hostname
-specified on the command line,
-.I ext_srvtab
-creates the service key file
-.IR hostname -new-srvtab,
-containing all the entries in the database with an instance field of
-.I hostname.
-This new file contains all the keys registered for Kerberos-mediated
-service providing programs which use the
-.IR krb_get_phost (3)
-principal and instance conventions to run on the host
-.IR hostname .
-If the
-.B \-r
-option is specified, the realm fields in the extracted file will
-match the given realm rather than the local realm.
-.SH DIAGNOSTICS
-.TP 20n
-"verify_master_key: Invalid master key, does not match database."
-The master key string entered was incorrect.
-.SH FILES
-.TP 20n
-/etc/kerberosIV/principal.db
-DBM file containing database
-.TP
-/etc/kerberosIV/principal.ok
-Semaphore indicating that the DBM database is not being modified.
-.TP
-/etc/kerberosIV/master_key
-Master key cache file.
-.SH SEE ALSO
-read_service_key(3), krb_get_phost(3)
diff --git a/eBones/usr.sbin/ext_srvtab/ext_srvtab.c b/eBones/usr.sbin/ext_srvtab/ext_srvtab.c
deleted file mode 100644
index 6f250138cf94..000000000000
--- a/eBones/usr.sbin/ext_srvtab/ext_srvtab.c
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * Copyright 1987, 1988 by the Massachusetts Institute of Technology.
- *
- * from: ext_srvtab.c,v 4.1 89/07/18 16:49:30 jtkohl Exp $
- * $Id: ext_srvtab.c,v 1.3 1995/07/18 16:35:55 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: ext_srvtab.c,v 1.3 1995/07/18 16:35:55 mark Exp $";
-#endif lint
-#endif
-
-#include <stdio.h>
-#include <string.h>
-#include <sys/file.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/stat.h>
-#include <sys/wait.h>
-#include <signal.h>
-#include <des.h>
-#include <krb.h>
-#include <krb_db.h>
-
-#define TRUE 1
-#define FALSE 0
-
-static C_Block master_key;
-static C_Block session_key;
-static Key_schedule master_key_schedule;
-char progname[] = "ext_srvtab";
-char realm[REALM_SZ];
-
-void FWrite(char *p, int size, int n, FILE *f);
-void StampOutSecrets(void);
-void usage(void);
-
-int
-main(argc, argv)
- int argc;
- char *argv[];
-{
- FILE *fout;
- char fname[1024];
- int fopen_errs = 0;
- int arg;
- Principal princs[40];
- int more;
- int prompt = TRUE;
- register int n, i;
-
- bzero(realm, sizeof(realm));
-
- /* Parse commandline arguments */
- if (argc < 2)
- usage();
- else {
- for (i = 1; i < argc; i++) {
- if (strcmp(argv[i], "-n") == 0)
- prompt = FALSE;
- else if (strcmp(argv[i], "-r") == 0) {
- if (++i >= argc)
- usage();
- else {
- strcpy(realm, argv[i]);
- /*
- * This is to humor the broken way commandline
- * argument parsing is done. Later, this
- * program ignores everything that starts with -.
- */
- argv[i][0] = '-';
- }
- }
- else if (argv[i][0] == '-')
- usage();
- else
- if (!k_isinst(argv[i])) {
- fprintf(stderr, "%s: bad instance name: %s\n",
- progname, argv[i]);
- usage();
- }
- }
- }
-
- if (kdb_get_master_key (prompt, master_key, master_key_schedule) != 0) {
- fprintf (stderr, "Couldn't read master key.\n");
- fflush (stderr);
- exit(1);
- }
-
- if (kdb_verify_master_key (master_key, master_key_schedule, stderr) < 0) {
- exit(1);
- }
-
- /* For each arg, search for instances of arg, and produce */
- /* srvtab file */
- if (!realm[0])
- if (krb_get_lrealm(realm, 1) != KSUCCESS) {
- fprintf(stderr, "%s: couldn't get local realm\n", progname);
- exit(1);
- }
- (void) umask(077);
-
- for (arg = 1; arg < argc; arg++) {
- if (argv[arg][0] == '-')
- continue;
- sprintf(fname, "%s-new-srvtab", argv[arg]);
- if ((fout = fopen(fname, "w")) == NULL) {
- fprintf(stderr, "Couldn't create file '%s'.\n", fname);
- fopen_errs++;
- continue;
- }
- printf("Generating '%s'....\n", fname);
- n = kerb_get_principal("*", argv[arg], &princs[0], 40, &more);
- if (more)
- fprintf(stderr, "More than 40 found...\n");
- for (i = 0; i < n; i++) {
- FWrite(princs[i].name, strlen(princs[i].name) + 1, 1, fout);
- FWrite(princs[i].instance, strlen(princs[i].instance) + 1,
- 1, fout);
- FWrite(realm, strlen(realm) + 1, 1, fout);
- FWrite(&princs[i].key_version,
- sizeof(princs[i].key_version), 1, fout);
- bcopy(&princs[i].key_low, session_key, sizeof(long));
- bcopy(&princs[i].key_high, session_key + sizeof(long),
- sizeof(long));
- kdb_encrypt_key (session_key, session_key,
- master_key, master_key_schedule, DES_DECRYPT);
- FWrite(session_key, sizeof session_key, 1, fout);
- }
- fclose(fout);
- }
-
- StampOutSecrets();
-
- exit(fopen_errs); /* 0 errors if successful */
-
-}
-
-void
-Die()
-{
- StampOutSecrets();
- exit(1);
-}
-
-void
-FWrite(p, size, n, f)
- char *p;
- int size;
- int n;
- FILE *f;
-{
- if (fwrite(p, size, n, f) != n) {
- printf("Error writing output file. Terminating.\n");
- Die();
- }
-}
-
-void
-StampOutSecrets()
-{
- bzero(master_key, sizeof master_key);
- bzero(session_key, sizeof session_key);
- bzero(master_key_schedule, sizeof master_key_schedule);
-}
-
-void
-usage()
-{
- fprintf(stderr,
- "Usage: %s [-n] [-r realm] instance [instance ...]\n", progname);
- exit(1);
-}
diff --git a/eBones/usr.sbin/kadmind/Makefile b/eBones/usr.sbin/kadmind/Makefile
deleted file mode 100644
index 6245776982bb..000000000000
--- a/eBones/usr.sbin/kadmind/Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-# $Id: Makefile,v 1.5 1995/09/14 04:09:38 gibbs Exp $
-
-PROG= kadmind
-SRCS= admin_server.c kadm_funcs.c kadm_ser_wrap.c kadm_server.c
-CFLAGS+=-DPOSIX -I${.CURDIR}/../../lib/libkadm
-DPADD= ${LIBKDB} ${LIBKRB} ${LIBDES}
-LDADD+= -L${KADMOBJDIR} -lkadm -L${KDBOBJDIR} -lkdb -L${KRBOBJDIR} -lkrb \
- -L${DESOBJDIR} -ldes -L${ACLOBJDIR} -lacl -lcom_err
-MAN8= kadmind.8
-
-.include <bsd.prog.mk>
diff --git a/eBones/usr.sbin/kadmind/admin_server.c b/eBones/usr.sbin/kadmind/admin_server.c
deleted file mode 100644
index 6f8c7f78b267..000000000000
--- a/eBones/usr.sbin/kadmind/admin_server.c
+++ /dev/null
@@ -1,474 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- *
- * For copying and distribution information, please see the file
- * Copyright.MIT.
- *
- * Top-level loop of the kerberos Administration server
- */
-
-#if 0
-#ifndef lint
-static char rcsid_admin_server_c[] =
-"Id: admin_server.c,v 4.8 90/01/02 13:50:38 jtkohl Exp ";
-static const char rcsid[] =
- "$Id";
-#endif lint
-#endif
-
-/*
- admin_server.c
- this holds the main loop and initialization and cleanup code for the server
-*/
-
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <signal.h>
-#ifndef sigmask
-#define sigmask(m) (1 <<((m)-1))
-#endif
-#include <sys/wait.h>
-#include <errno.h>
-#include <sys/socket.h>
-#include <syslog.h>
-#include <com_err.h>
-#include <kadm.h>
-#include <kerberosIV/kadm_err.h>
-#include <krb_db.h>
-#include "kadm_server.h"
-
-/* Almost all procs and such need this, so it is global */
-admin_params prm; /* The command line parameters struct */
-
-char prog[32]; /* WHY IS THIS NEEDED??????? */
-char *progname = prog;
-char *acldir = DEFAULT_ACL_DIR;
-char krbrlm[REALM_SZ];
-extern Kadm_Server server_parm;
-
-void cleanexit(int val);
-void process_client(int fd, struct sockaddr_in *who);
-void kill_children(void);
-static void clear_secrets(void);
-void byebye(void);
-void close_syslog(void);
-int kadm_listen(void);
-
-/*
-** Main does the logical thing, it sets up the database and RPC interface,
-** as well as handling the creation and maintenance of the syslog file...
-*/
-void
-main(argc, argv) /* admin_server main routine */
-int argc;
-char *argv[];
-{
- int errval;
- int c;
- extern char *optarg;
-
- prog[sizeof(prog)-1]='\0'; /* Terminate... */
- (void) strncpy(prog, argv[0], sizeof(prog)-1);
-
- /* initialize the admin_params structure */
- prm.sysfile = KADM_SYSLOG; /* default file name */
- prm.inter = 1;
-
- bzero(krbrlm, sizeof(krbrlm));
-
- while ((c = getopt(argc, argv, "f:hnd:a:r:")) != EOF)
- switch(c) {
- case 'f': /* Syslog file name change */
- prm.sysfile = optarg;
- break;
- case 'n':
- prm.inter = 0;
- break;
- case 'a': /* new acl directory */
- acldir = optarg;
- break;
- case 'd':
- /* put code to deal with alt database place */
- if ((errval = kerb_db_set_name(optarg))) {
- fprintf(stderr, "opening database %s: %s",
- optarg, error_message(errval));
- exit(1);
- }
- break;
- case 'r':
- (void) strncpy(krbrlm, optarg, sizeof(krbrlm) - 1);
- break;
- case 'h': /* get help on using admin_server */
- default:
- printf("Usage: admin_server [-h] [-n] [-r realm] [-d dbname] [-f filename] [-a acldir]\n");
- exit(-1); /* failure */
- }
-
- if (krbrlm[0] == 0)
- if (krb_get_lrealm(krbrlm, 0) != KSUCCESS) {
- fprintf(stderr,
- "Unable to get local realm. Fix krb.conf or use -r.\n");
- exit(1);
- }
-
- printf("KADM Server %s initializing\n",KADM_VERSTR);
- printf("Please do not use 'kill -9' to kill this job, use a\n");
- printf("regular kill instead\n\n");
-
- set_logfile(prm.sysfile);
- log("Admin server starting");
-
- (void) kerb_db_set_lockmode(KERB_DBL_NONBLOCKING);
- errval = kerb_init(); /* Open the Kerberos database */
- if (errval) {
- fprintf(stderr, "error: kerb_init() failed");
- close_syslog();
- byebye();
- }
- /* set up the server_parm struct */
- if ((errval = kadm_ser_init(prm.inter, krbrlm))==KADM_SUCCESS) {
- kerb_fini(); /* Close the Kerberos database--
- will re-open later */
- errval = kadm_listen(); /* listen for calls to server from
- clients */
- }
- if (errval != KADM_SUCCESS) {
- fprintf(stderr,"error: %s\n",error_message(errval));
- kerb_fini(); /* Close if error */
- }
- close_syslog(); /* Close syslog file, print
- closing note */
- byebye(); /* Say bye bye on the terminal
- in use */
-} /* procedure main */
-
-
-/* close the system log file */
-void
-close_syslog()
-{
- log("Shutting down admin server");
-}
-
-void
-byebye() /* say goodnight gracie */
-{
- printf("Admin Server (kadm server) has completed operation.\n");
-}
-
-static void
-clear_secrets()
-{
- bzero((char *)server_parm.master_key, sizeof(server_parm.master_key));
- bzero((char *)server_parm.master_key_schedule,
- sizeof(server_parm.master_key_schedule));
- server_parm.master_key_version = 0L;
-}
-
-static exit_now = 0;
-
-sigtype
-doexit()
-{
- exit_now = 1;
-#ifdef POSIX
- return;
-#else /* !POSIX */
- return(0);
-#endif /* POSIX */
-}
-
-unsigned pidarraysize = 0;
-int *pidarray = (int *)0;
-
-/*
-kadm_listen
-listen on the admin servers port for a request
-*/
-int
-kadm_listen()
-{
- extern int errno;
- int found;
- int admin_fd;
- int peer_fd;
- fd_set mask, readfds;
- struct sockaddr_in peer;
- int addrlen;
- int pid;
- sigtype do_child();
-
- (void) signal(SIGINT, doexit);
- (void) signal(SIGTERM, doexit);
- (void) signal(SIGHUP, doexit);
- (void) signal(SIGQUIT, doexit);
- (void) signal(SIGPIPE, SIG_IGN); /* get errors on write() */
- (void) signal(SIGALRM, doexit);
- (void) signal(SIGCHLD, do_child);
-
- if ((admin_fd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
- return KADM_NO_SOCK;
- if (bind(admin_fd, (struct sockaddr *)&server_parm.admin_addr,
- sizeof(struct sockaddr_in)) < 0)
- return KADM_NO_BIND;
- (void) listen(admin_fd, 1);
- FD_ZERO(&mask);
- FD_SET(admin_fd, &mask);
-
- for (;;) { /* loop nearly forever */
- if (exit_now) {
- clear_secrets();
- kill_children();
- return(0);
- }
- readfds = mask;
- if ((found = select(admin_fd+1,&readfds,(fd_set *)0,
- (fd_set *)0, (struct timeval *)0)) == 0)
- continue; /* no things read */
- if (found < 0) {
- if (errno != EINTR)
- log("select: %s",error_message(errno));
- continue;
- }
- if (FD_ISSET(admin_fd, &readfds)) {
- /* accept the conn */
- addrlen = sizeof(peer);
- if ((peer_fd = accept(admin_fd, (struct sockaddr *)&peer,
- &addrlen)) < 0) {
- log("accept: %s",error_message(errno));
- continue;
- }
- addrlen = sizeof(server_parm.admin_addr);
- if (getsockname(peer_fd, (struct sockaddr *)&server_parm.admin_addr,
- &addrlen)) {
- log("getsockname: %s",error_message(errno));
- continue;
- }
-#ifdef DEBUG
- printf("Connection recieved on %s\n",
- inet_ntoa(server_parm.admin_addr.sin_addr));
-#endif /* DEBUG */
-#ifndef DEBUG
- /* if you want a sep daemon for each server */
- if ((pid = fork())) {
- /* parent */
- if (pid < 0) {
- log("fork: %s",error_message(errno));
- (void) close(peer_fd);
- continue;
- }
- /* fork succeded: keep tabs on child */
- (void) close(peer_fd);
- if (pidarray) {
- pidarray = (int *)realloc((char *)pidarray, ++pidarraysize);
- pidarray[pidarraysize-1] = pid;
- } else {
- pidarray = (int *)malloc(pidarraysize = 1);
- pidarray[0] = pid;
- }
- } else {
- /* child */
- (void) close(admin_fd);
-#endif /* DEBUG */
- /* do stuff */
- process_client (peer_fd, &peer);
-#ifndef DEBUG
- }
-#endif
- } else {
- log("something else woke me up!");
- return(0);
- }
- }
- /*NOTREACHED*/
- return(0); /* Shut -Wall up - markm */
-}
-
-#ifdef DEBUG
-#define cleanexit(code) {kerb_fini(); return;}
-#endif
-
-void
-process_client(fd, who)
-int fd;
-struct sockaddr_in *who;
-{
- u_char *dat;
- int dat_len;
- u_short dlen;
- int retval;
- int on = 1;
- Principal service;
- des_cblock skey;
- int more;
- int status;
-
- if (setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &on, sizeof(on)) < 0)
- log("setsockopt keepalive: %d",errno);
-
- server_parm.recv_addr = *who;
-
- if (kerb_init()) { /* Open as client */
- log("can't open krb db");
- cleanexit(1);
- }
- /* need to set service key to changepw.KRB_MASTER */
-
- status = kerb_get_principal(server_parm.sname, server_parm.sinst, &service,
- 1, &more);
- if (status == -1) {
- /* db locked */
- u_long retcode = KADM_DB_INUSE;
- char *pdat;
-
- dat_len = KADM_VERSIZE + sizeof(u_long);
- dat = (u_char *) malloc((unsigned)dat_len);
- pdat = (char *) dat;
- retcode = htonl((u_long) KADM_DB_INUSE);
- (void) strncpy(pdat, KADM_ULOSE, KADM_VERSIZE);
- bcopy((char *)&retcode, &pdat[KADM_VERSIZE], sizeof(u_long));
- goto out;
- } else if (!status) {
- log("no service %s.%s",server_parm.sname, server_parm.sinst);
- cleanexit(2);
- }
-
- bcopy((char *)&service.key_low, (char *)skey, 4);
- bcopy((char *)&service.key_high, (char *)(((long *) skey) + 1), 4);
- bzero((char *)&service, sizeof(service));
- kdb_encrypt_key (skey, skey, server_parm.master_key,
- server_parm.master_key_schedule, DECRYPT);
- (void) krb_set_key((char *)skey, 0); /* if error, will show up when
- rd_req fails */
- bzero((char *)skey, sizeof(skey));
-
- while (1) {
- if ((retval = krb_net_read(fd, (char *)&dlen, sizeof(u_short))) !=
- sizeof(u_short)) {
- if (retval < 0)
- log("dlen read: %s",error_message(errno));
- else if (retval)
- log("short dlen read: %d",retval);
- (void) close(fd);
- cleanexit(retval ? 3 : 0);
- }
- if (exit_now) {
- cleanexit(0);
- }
- dat_len = (int) ntohs(dlen);
- dat = (u_char *) malloc((unsigned)dat_len);
- if (!dat) {
- log("malloc: No memory");
- (void) close(fd);
- cleanexit(4);
- }
- if ((retval = krb_net_read(fd, (char *)dat, dat_len)) != dat_len) {
- if (retval < 0)
- log("data read: %s",error_message(errno));
- else
- log("short read: %d vs. %d", dat_len, retval);
- (void) close(fd);
- cleanexit(5);
- }
- if (exit_now) {
- cleanexit(0);
- }
- if ((retval = kadm_ser_in(&dat,&dat_len)) != KADM_SUCCESS)
- log("processing request: %s", error_message(retval));
-
- /* kadm_ser_in did the processing and returned stuff in
- dat & dat_len , return the appropriate data */
-
- out:
- dlen = (u_short) dat_len;
-
- if (dat_len != (int)dlen) {
- clear_secrets();
- abort(); /* XXX */
- }
- dlen = htons(dlen);
-
- if (krb_net_write(fd, (char *)&dlen, sizeof(u_short)) < 0) {
- log("writing dlen to client: %s",error_message(errno));
- (void) close(fd);
- cleanexit(6);
- }
-
- if (krb_net_write(fd, (char *)dat, dat_len) < 0) {
- log(LOG_ERR, "writing to client: %s",error_message(errno));
- (void) close(fd);
- cleanexit(7);
- }
- free((char *)dat);
- }
- /*NOTREACHED*/
-}
-
-sigtype
-do_child()
-{
- /* SIGCHLD brings us here */
- int pid;
- register int i, j;
-
-#ifdef POSIX
- int status;
-#else
- union wait status;
-#endif
-
- pid = wait(&status);
-
- for (i = 0; i < pidarraysize; i++)
- if (pidarray[i] == pid) {
- /* found it */
- for (j = i; j < pidarraysize-1; j++)
- /* copy others down */
- pidarray[j] = pidarray[j+1];
- pidarraysize--;
- if (WEXITSTATUS(status) || WCOREDUMP(status) || WIFSIGNALED(status))
- log("child %d: termsig %d, coredump %d, retcode %d", pid,
- WTERMSIG(status), WCOREDUMP(status), WEXITSTATUS(status));
-#ifdef POSIX
- return;
-#else /* !POSIX */
- return(0);
-#endif /* POSIX */
- }
- log("child %d not in list: termsig %d, coredump %d, retcode %d", pid,
- WTERMSIG(status), WCOREDUMP(status), WEXITSTATUS(status));
-#ifdef POSIX
- return;
-#else /* !POSIX */
- return(0);
-#endif /* POSIX */
-}
-
-#ifndef DEBUG
-void
-cleanexit(val)
- int val;
-{
- kerb_fini();
- clear_secrets();
- exit(val);
-}
-#endif
-
-void
-kill_children()
-{
- register int i;
- int osigmask;
-
- osigmask = sigblock(sigmask(SIGCHLD));
-
- for (i = 0; i < pidarraysize; i++) {
- kill(pidarray[i], SIGINT);
- log("killing child %d", pidarray[i]);
- }
- sigsetmask(osigmask);
- return;
-}
diff --git a/eBones/usr.sbin/kadmind/kadm_funcs.c b/eBones/usr.sbin/kadmind/kadm_funcs.c
deleted file mode 100644
index b20a5666ac6b..000000000000
--- a/eBones/usr.sbin/kadmind/kadm_funcs.c
+++ /dev/null
@@ -1,381 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- *
- * For copying and distribution information, please see the file
- * Copyright.MIT
- *
- * Kerberos administration server-side database manipulation routines
- */
-
-#if 0
-#ifndef lint
-static char rcsid_kadm_funcs_c[] =
-"Id: kadm_funcs.c,v 4.3 90/03/20 01:39:51 jon Exp ";
-static const char rcsid[] =
- "$Id: kadm_funcs.c,v 1.2 1995/09/07 20:50:48 mark Exp $";
-#endif lint
-#endif
-
-/*
-kadm_funcs.c
-the actual database manipulation code
-*/
-
-#include <stdio.h>
-#include <string.h>
-#include <com_err.h>
-#include <sys/param.h>
-#include <kadm.h>
-#include <kerberosIV/kadm_err.h>
-#include <krb_db.h>
-#include "kadm_server.h"
-
-extern Kadm_Server server_parm;
-
-int
-check_access(pname, pinst, prealm, acltype)
-char *pname;
-char *pinst;
-char *prealm;
-enum acl_types acltype;
-{
- char checkname[MAX_K_NAME_SZ];
- char filename[MAXPATHLEN];
- extern char *acldir;
-
- sprintf(checkname, "%s.%s@%s", pname, pinst, prealm);
-
- switch (acltype) {
- case ADDACL:
- sprintf(filename, "%s%s", acldir, ADD_ACL_FILE);
- break;
- case GETACL:
- sprintf(filename, "%s%s", acldir, GET_ACL_FILE);
- break;
- case MODACL:
- sprintf(filename, "%s%s", acldir, MOD_ACL_FILE);
- break;
- }
- return(acl_check(filename, checkname));
-}
-
-int
-wildcard(str)
-char *str;
-{
- if (!strcmp(str, WILDCARD_STR))
- return(1);
- return(0);
-}
-
-#define failadd(code) { (void) log("FAILED addding '%s.%s' (%s)", valsin->name, valsin->instance, error_message(code)); return code; }
-
-int
-kadm_add_entry (rname, rinstance, rrealm, valsin, valsout)
-char *rname; /* requestors name */
-char *rinstance; /* requestors instance */
-char *rrealm; /* requestors realm */
-Kadm_vals *valsin;
-Kadm_vals *valsout;
-{
- long numfound; /* check how many we get written */
- int more; /* pointer to more grabbed records */
- Principal data_i, data_o; /* temporary principal */
- u_char flags[4];
- des_cblock newpw;
- Principal default_princ;
-
- if (!check_access(rname, rinstance, rrealm, ADDACL)) {
- (void) log("WARNING: '%s.%s@%s' tried to add an entry for '%s.%s'",
- rname, rinstance, rrealm, valsin->name, valsin->instance);
- return KADM_UNAUTH;
- }
-
- /* Need to check here for "legal" name and instance */
- if (wildcard(valsin->name) || wildcard(valsin->instance)) {
- failadd(KADM_ILL_WILDCARD);
- }
-
- (void) log("request to add an entry for '%s.%s' from '%s.%s@%s'",
- valsin->name, valsin->instance, rname, rinstance, rrealm);
-
- numfound = kerb_get_principal(KERB_DEFAULT_NAME, KERB_DEFAULT_INST,
- &default_princ, 1, &more);
- if (numfound == -1) {
- failadd(KADM_DB_INUSE);
- } else if (numfound != 1) {
- failadd(KADM_UK_RERROR);
- }
-
- kadm_vals_to_prin(valsin->fields, &data_i, valsin);
- (void) strncpy(data_i.name, valsin->name, ANAME_SZ);
- (void) strncpy(data_i.instance, valsin->instance, INST_SZ);
-
- if (!IS_FIELD(KADM_EXPDATE,valsin->fields))
- data_i.exp_date = default_princ.exp_date;
- if (!IS_FIELD(KADM_ATTR,valsin->fields))
- data_i.attributes = default_princ.attributes;
- if (!IS_FIELD(KADM_MAXLIFE,valsin->fields))
- data_i.max_life = default_princ.max_life;
-
- bzero((char *)&default_princ, sizeof(default_princ));
-
- /* convert to host order */
- data_i.key_low = ntohl(data_i.key_low);
- data_i.key_high = ntohl(data_i.key_high);
-
-
- bcopy(&data_i.key_low,newpw,4);
- bcopy(&data_i.key_high,(char *)(((long *) newpw) + 1),4);
-
- /* encrypt new key in master key */
- kdb_encrypt_key (newpw, newpw, server_parm.master_key,
- server_parm.master_key_schedule, ENCRYPT);
- bcopy(newpw,&data_i.key_low,4);
- bcopy((char *)(((long *) newpw) + 1), &data_i.key_high,4);
- bzero((char *)newpw, sizeof(newpw));
-
- data_o = data_i;
- numfound = kerb_get_principal(valsin->name, valsin->instance,
- &data_o, 1, &more);
- if (numfound == -1) {
- failadd(KADM_DB_INUSE);
- } else if (numfound) {
- failadd(KADM_INUSE);
- } else {
- data_i.key_version++;
- data_i.kdc_key_ver = server_parm.master_key_version;
- (void) strncpy(data_i.mod_name, rname, sizeof(data_i.mod_name)-1);
- (void) strncpy(data_i.mod_instance, rinstance,
- sizeof(data_i.mod_instance)-1);
-
- numfound = kerb_put_principal(&data_i, 1);
- if (numfound == -1) {
- failadd(KADM_DB_INUSE);
- } else if (numfound) {
- failadd(KADM_UK_SERROR);
- } else {
- numfound = kerb_get_principal(valsin->name, valsin->instance,
- &data_o, 1, &more);
- if ((numfound!=1) || (more!=0)) {
- failadd(KADM_UK_RERROR);
- }
- bzero((char *)flags, sizeof(flags));
- SET_FIELD(KADM_NAME,flags);
- SET_FIELD(KADM_INST,flags);
- SET_FIELD(KADM_EXPDATE,flags);
- SET_FIELD(KADM_ATTR,flags);
- SET_FIELD(KADM_MAXLIFE,flags);
- kadm_prin_to_vals(flags, valsout, &data_o);
- (void) log("'%s.%s' added.", valsin->name, valsin->instance);
- return KADM_DATA; /* Set all the appropriate fields */
- }
- }
-}
-#undef failadd
-
-#define failget(code) { (void) log("FAILED retrieving '%s.%s' (%s)", valsin->name, valsin->instance, error_message(code)); return code; }
-
-int
-kadm_get_entry (rname, rinstance, rrealm, valsin, flags, valsout)
-char *rname; /* requestors name */
-char *rinstance; /* requestors instance */
-char *rrealm; /* requestors realm */
-Kadm_vals *valsin; /* what they wannt to get */
-u_char *flags; /* which fields we want */
-Kadm_vals *valsout; /* what data is there */
-{
- long numfound; /* check how many were returned */
- int more; /* To point to more name.instances */
- Principal data_o; /* Data object to hold Principal */
-
-
- if (!check_access(rname, rinstance, rrealm, GETACL)) {
- (void) log("WARNING: '%s.%s@%s' tried to get '%s.%s's entry",
- rname, rinstance, rrealm, valsin->name, valsin->instance);
- return KADM_UNAUTH;
- }
-
- if (wildcard(valsin->name) || wildcard(valsin->instance)) {
- failget(KADM_ILL_WILDCARD);
- }
-
- (void) log("retrieve '%s.%s's entry for '%s.%s@%s'",
- valsin->name, valsin->instance, rname, rinstance, rrealm);
-
- /* Look up the record in the database */
- numfound = kerb_get_principal(valsin->name, valsin->instance,
- &data_o, 1, &more);
- if (numfound == -1) {
- failget(KADM_DB_INUSE);
- } else if (numfound) { /* We got the record, let's return it */
- kadm_prin_to_vals(flags, valsout, &data_o);
- (void) log("'%s.%s' retrieved.", valsin->name, valsin->instance);
- return KADM_DATA; /* Set all the appropriate fields */
- } else {
- failget(KADM_NOENTRY); /* Else whimper and moan */
- }
-}
-#undef failget
-
-#define failmod(code) { (void) log("FAILED modifying '%s.%s' (%s)", valsin1->name, valsin1->instance, error_message(code)); return code; }
-
-int
-kadm_mod_entry (rname, rinstance, rrealm, valsin1, valsin2, valsout)
-char *rname; /* requestors name */
-char *rinstance; /* requestors instance */
-char *rrealm; /* requestors realm */
-Kadm_vals *valsin1, *valsin2; /* holds the parameters being
- passed in */
-Kadm_vals *valsout; /* the actual record which is returned */
-{
- long numfound;
- int more;
- Principal data_o, temp_key;
- u_char fields[4];
- des_cblock newpw;
-
- if (wildcard(valsin1->name) || wildcard(valsin1->instance)) {
- failmod(KADM_ILL_WILDCARD);
- }
-
- if (!check_access(rname, rinstance, rrealm, MODACL)) {
- (void) log("WARNING: '%s.%s@%s' tried to change '%s.%s's entry",
- rname, rinstance, rrealm, valsin1->name, valsin1->instance);
- return KADM_UNAUTH;
- }
-
- (void) log("request to modify '%s.%s's entry from '%s.%s@%s' ",
- valsin1->name, valsin1->instance, rname, rinstance, rrealm);
-
- numfound = kerb_get_principal(valsin1->name, valsin1->instance,
- &data_o, 1, &more);
- if (numfound == -1) {
- failmod(KADM_DB_INUSE);
- } else if (numfound) {
- kadm_vals_to_prin(valsin2->fields, &temp_key, valsin2);
- (void) strncpy(data_o.name, valsin1->name, ANAME_SZ);
- (void) strncpy(data_o.instance, valsin1->instance, INST_SZ);
- if (IS_FIELD(KADM_EXPDATE,valsin2->fields))
- data_o.exp_date = temp_key.exp_date;
- if (IS_FIELD(KADM_ATTR,valsin2->fields))
- data_o.attributes = temp_key.attributes;
- if (IS_FIELD(KADM_MAXLIFE,valsin2->fields))
- data_o.max_life = temp_key.max_life;
- if (IS_FIELD(KADM_DESKEY,valsin2->fields)) {
- data_o.key_version++;
- data_o.kdc_key_ver = server_parm.master_key_version;
-
-
- /* convert to host order */
- temp_key.key_low = ntohl(temp_key.key_low);
- temp_key.key_high = ntohl(temp_key.key_high);
-
-
- bcopy(&temp_key.key_low,newpw,4);
- bcopy(&temp_key.key_high,(char *)(((long *) newpw) + 1),4);
-
- /* encrypt new key in master key */
- kdb_encrypt_key (newpw, newpw, server_parm.master_key,
- server_parm.master_key_schedule, ENCRYPT);
- bcopy(newpw,&data_o.key_low,4);
- bcopy((char *)(((long *) newpw) + 1), &data_o.key_high,4);
- bzero((char *)newpw, sizeof(newpw));
- }
- bzero((char *)&temp_key, sizeof(temp_key));
-
- (void) strncpy(data_o.mod_name, rname, sizeof(data_o.mod_name)-1);
- (void) strncpy(data_o.mod_instance, rinstance,
- sizeof(data_o.mod_instance)-1);
- more = kerb_put_principal(&data_o, 1);
-
- bzero((char *)&data_o, sizeof(data_o));
-
- if (more == -1) {
- failmod(KADM_DB_INUSE);
- } else if (more) {
- failmod(KADM_UK_SERROR);
- } else {
- numfound = kerb_get_principal(valsin1->name, valsin1->instance,
- &data_o, 1, &more);
- if ((more!=0)||(numfound!=1)) {
- failmod(KADM_UK_RERROR);
- }
- bzero((char *) fields, sizeof(fields));
- SET_FIELD(KADM_NAME,fields);
- SET_FIELD(KADM_INST,fields);
- SET_FIELD(KADM_EXPDATE,fields);
- SET_FIELD(KADM_ATTR,fields);
- SET_FIELD(KADM_MAXLIFE,fields);
- kadm_prin_to_vals(fields, valsout, &data_o);
- (void) log("'%s.%s' modified.", valsin1->name, valsin1->instance);
- return KADM_DATA; /* Set all the appropriate fields */
- }
- }
- else {
- failmod(KADM_NOENTRY);
- }
-}
-#undef failmod
-
-#define failchange(code) { (void) log("FAILED changing key for '%s.%s@%s' (%s)", rname, rinstance, rrealm, error_message(code)); return code; }
-
-int
-kadm_change (rname, rinstance, rrealm, newpw)
-char *rname;
-char *rinstance;
-char *rrealm;
-des_cblock newpw;
-{
- long numfound;
- int more;
- Principal data_o;
- des_cblock local_pw;
-
- if (strcmp(server_parm.krbrlm, rrealm)) {
- (void) log("change key request from wrong realm, '%s.%s@%s'!\n",
- rname, rinstance, rrealm);
- return(KADM_WRONG_REALM);
- }
-
- if (wildcard(rname) || wildcard(rinstance)) {
- failchange(KADM_ILL_WILDCARD);
- }
- (void) log("'%s.%s@%s' wants to change its password",
- rname, rinstance, rrealm);
-
- bcopy(newpw, local_pw, sizeof(local_pw));
-
- /* encrypt new key in master key */
- kdb_encrypt_key (local_pw, local_pw, server_parm.master_key,
- server_parm.master_key_schedule, ENCRYPT);
-
- numfound = kerb_get_principal(rname, rinstance,
- &data_o, 1, &more);
- if (numfound == -1) {
- failchange(KADM_DB_INUSE);
- } else if (numfound) {
- bcopy(local_pw,&data_o.key_low,4);
- bcopy((char *)(((long *) local_pw) + 1), &data_o.key_high,4);
- data_o.key_version++;
- data_o.kdc_key_ver = server_parm.master_key_version;
- (void) strncpy(data_o.mod_name, rname, sizeof(data_o.mod_name)-1);
- (void) strncpy(data_o.mod_instance, rinstance,
- sizeof(data_o.mod_instance)-1);
- more = kerb_put_principal(&data_o, 1);
- bzero((char *) local_pw, sizeof(local_pw));
- bzero((char *) &data_o, sizeof(data_o));
- if (more == -1) {
- failchange(KADM_DB_INUSE);
- } else if (more) {
- failchange(KADM_UK_SERROR);
- } else {
- (void) log("'%s.%s@%s' password changed.", rname, rinstance, rrealm);
- return KADM_SUCCESS;
- }
- }
- else {
- failchange(KADM_NOENTRY);
- }
-}
-#undef failchange
diff --git a/eBones/usr.sbin/kadmind/kadm_ser_wrap.c b/eBones/usr.sbin/kadmind/kadm_ser_wrap.c
deleted file mode 100644
index b6f47827b53e..000000000000
--- a/eBones/usr.sbin/kadmind/kadm_ser_wrap.c
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- *
- * For copying and distribution information, please see the file
- * Copyright.MIT.
- *
- * Kerberos administration server-side support functions
- */
-
-#if 0
-#ifndef lint
-static char rcsid_module_c[] =
-"BonesHeader: /afs/athena.mit.edu/astaff/project/kerberos/src/kadmin/RCS/kadm_ser_wrap.c,v 4.4 89/09/26 09:29:36 jtkohl Exp ";
-#endif lint
-#endif
-
-/*
-kadm_ser_wrap.c
-unwraps wrapped packets and calls the appropriate server subroutine
-*/
-
-#include <unistd.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <netdb.h>
-#include <sys/socket.h>
-#include <kadm.h>
-#include <kerberosIV/kadm_err.h>
-#include <kerberosIV/krb_err.h>
-#include "kadm_server.h"
-
-Kadm_Server server_parm;
-
-/*
-kadm_ser_init
-set up the server_parm structure
-*/
-int
-kadm_ser_init(inter, realm)
-int inter; /* interactive or from file */
-char realm[];
-{
- struct servent *sep;
- struct hostent *hp;
- char hostname[MAXHOSTNAMELEN];
-
- init_kadm_err_tbl();
- init_krb_err_tbl();
- if (gethostname(hostname, sizeof(hostname)))
- return KADM_NO_HOSTNAME;
-
- strcpy(server_parm.sname, PWSERV_NAME);
- strcpy(server_parm.sinst, KRB_MASTER);
- strcpy(server_parm.krbrlm, realm);
-
- server_parm.admin_fd = -1;
- /* setting up the addrs */
- if ((sep = getservbyname(KADM_SNAME, "tcp")) == NULL)
- return KADM_NO_SERV;
- bzero((char *)&server_parm.admin_addr,sizeof(server_parm.admin_addr));
- server_parm.admin_addr.sin_family = AF_INET;
- if ((hp = gethostbyname(hostname)) == NULL)
- return KADM_NO_HOSTNAME;
- server_parm.admin_addr.sin_addr.s_addr = INADDR_ANY;
- server_parm.admin_addr.sin_port = sep->s_port;
- /* setting up the database */
- if (kdb_get_master_key((inter==1),server_parm.master_key,
- server_parm.master_key_schedule) != 0)
- return KADM_NO_MAST;
- if ((server_parm.master_key_version =
- kdb_verify_master_key(server_parm.master_key,
- server_parm.master_key_schedule,stderr))<0)
- return KADM_NO_VERI;
- return KADM_SUCCESS;
-}
-
-static void
-errpkt(dat, dat_len, code)
-u_char **dat;
-int *dat_len;
-int code;
-{
- u_long retcode;
- char *pdat;
-
- free((char *)*dat); /* free up req */
- *dat_len = KADM_VERSIZE + sizeof(u_long);
- *dat = (u_char *) malloc((unsigned)*dat_len);
- pdat = (char *) *dat;
- retcode = htonl((u_long) code);
- (void) strncpy(pdat, KADM_ULOSE, KADM_VERSIZE);
- bcopy((char *)&retcode, &pdat[KADM_VERSIZE], sizeof(u_long));
- return;
-}
-
-/*
-kadm_ser_in
-unwrap the data stored in dat, process, and return it.
-*/
-int
-kadm_ser_in(dat,dat_len)
-u_char **dat;
-int *dat_len;
-{
- u_char *in_st; /* pointer into the sent packet */
- int in_len,retc; /* where in packet we are, for
- returns */
- u_long r_len; /* length of the actual packet */
- KTEXT_ST authent; /* the authenticator */
- AUTH_DAT ad; /* who is this, klink */
- u_long ncksum; /* checksum of encrypted data */
- des_key_schedule sess_sched; /* our schedule */
- MSG_DAT msg_st;
- u_char *retdat, *tmpdat;
- int retval, retlen;
-
- if (strncmp(KADM_VERSTR, (char *)*dat, KADM_VERSIZE)) {
- errpkt(dat, dat_len, KADM_BAD_VER);
- return KADM_BAD_VER;
- }
- in_len = KADM_VERSIZE;
- /* get the length */
- if ((retc = stv_long(*dat, &r_len, in_len, *dat_len)) < 0)
- return KADM_LENGTH_ERROR;
- in_len += retc;
- authent.length = *dat_len - r_len - KADM_VERSIZE - sizeof(u_long);
- bcopy((char *)(*dat) + in_len, (char *)authent.dat, authent.length);
- authent.mbz = 0;
- /* service key should be set before here */
- if ((retc = krb_rd_req(&authent, server_parm.sname, server_parm.sinst,
- server_parm.recv_addr.sin_addr.s_addr, &ad, (char *)0)))
- {
- errpkt(dat, dat_len,retc + krb_err_base);
- return retc + krb_err_base;
- }
-
-#define clr_cli_secrets() {bzero((char *)sess_sched, sizeof(sess_sched)); bzero((char *)ad.session, sizeof(ad.session));}
-
- in_st = *dat + *dat_len - r_len;
-#ifdef NOENCRYPTION
- ncksum = 0;
-#else
- ncksum = quad_cksum((des_cblock *)in_st, (des_cblock *)0, (long) r_len,
- 0, (des_cblock *)ad.session);
-#endif
- if (ncksum!=ad.checksum) { /* yow, are we correct yet */
- clr_cli_secrets();
- errpkt(dat, dat_len,KADM_BAD_CHK);
- return KADM_BAD_CHK;
- }
-#ifdef NOENCRYPTION
- bzero(sess_sched, sizeof(sess_sched));
-#else
- des_key_sched((des_cblock *)ad.session, sess_sched);
-#endif
- if ((retc = (int) krb_rd_priv(in_st, r_len, sess_sched, ad.session,
- &server_parm.recv_addr,
- &server_parm.admin_addr, &msg_st))) {
- clr_cli_secrets();
- errpkt(dat, dat_len,retc + krb_err_base);
- return retc + krb_err_base;
- }
- switch (msg_st.app_data[0]) {
- case CHANGE_PW:
- retval = kadm_ser_cpw(msg_st.app_data+1,(int) msg_st.app_length,&ad,
- &retdat, &retlen);
- break;
- case ADD_ENT:
- retval = kadm_ser_add(msg_st.app_data+1,(int) msg_st.app_length,&ad,
- &retdat, &retlen);
- break;
- case GET_ENT:
- retval = kadm_ser_get(msg_st.app_data+1,(int) msg_st.app_length,&ad,
- &retdat, &retlen);
- break;
- case MOD_ENT:
- retval = kadm_ser_mod(msg_st.app_data+1,(int) msg_st.app_length,&ad,
- &retdat, &retlen);
- break;
- default:
- clr_cli_secrets();
- errpkt(dat, dat_len, KADM_NO_OPCODE);
- return KADM_NO_OPCODE;
- }
- /* Now seal the response back into a priv msg */
- free((char *)*dat);
- tmpdat = (u_char *) malloc((unsigned)(retlen + KADM_VERSIZE +
- sizeof(u_long)));
- (void) strncpy((char *)tmpdat, KADM_VERSTR, KADM_VERSIZE);
- retval = htonl((u_long)retval);
- bcopy((char *)&retval, (char *)tmpdat + KADM_VERSIZE, sizeof(u_long));
- if (retlen) {
- bcopy((char *)retdat, (char *)tmpdat + KADM_VERSIZE + sizeof(u_long),
- retlen);
- free((char *)retdat);
- }
- /* slop for mk_priv stuff */
- *dat = (u_char *) malloc((unsigned) (retlen + KADM_VERSIZE +
- sizeof(u_long) + 200));
- if ((*dat_len = krb_mk_priv(tmpdat, *dat,
- (u_long) (retlen + KADM_VERSIZE +
- sizeof(u_long)),
- sess_sched,
- ad.session, &server_parm.admin_addr,
- &server_parm.recv_addr)) < 0) {
- clr_cli_secrets();
- errpkt(dat, dat_len, KADM_NO_ENCRYPT);
- return KADM_NO_ENCRYPT;
- }
- clr_cli_secrets();
- return KADM_SUCCESS;
-}
diff --git a/eBones/usr.sbin/kadmind/kadm_server.c b/eBones/usr.sbin/kadmind/kadm_server.c
deleted file mode 100644
index c53af7b88336..000000000000
--- a/eBones/usr.sbin/kadmind/kadm_server.c
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- *
- * For copying and distribution information, please see the file
- * Copyright.MIT.
- *
- * Kerberos administration server-side subroutines
- */
-
-#if 0
-#ifndef lint
-static char rcsid_kadm_server_c[] =
-"Header: /afs/athena.mit.edu/astaff/project/kerberos/src/kadmin/RCS/kadm_server.c,v 4.2 89/09/26 09:30:23 jtkohl Exp ";
-#endif lint
-#endif
-
-#include <string.h>
-#include <kadm.h>
-#include <kerberosIV/kadm_err.h>
-#include "kadm_server.h"
-
-/*
-kadm_ser_cpw - the server side of the change_password routine
- recieves : KTEXT, {key}
- returns : CKSUM, RETCODE
- acl : caller can change only own password
-
-Replaces the password (i.e. des key) of the caller with that specified in key.
-Returns no actual data from the master server, since this is called by a user
-*/
-int
-kadm_ser_cpw(dat, len, ad, datout, outlen)
-u_char *dat;
-int len;
-AUTH_DAT *ad;
-u_char **datout;
-int *outlen;
-{
- unsigned long keylow, keyhigh;
- des_cblock newkey;
- int stvlen;
-
- /* take key off the stream, and change the database */
-
- if ((stvlen = stv_long(dat, &keyhigh, 0, len)) < 0)
- return(KADM_LENGTH_ERROR);
- if (stv_long(dat, &keylow, stvlen, len) < 0)
- return(KADM_LENGTH_ERROR);
-
- keylow = ntohl(keylow);
- keyhigh = ntohl(keyhigh);
- bcopy((char *)&keyhigh, (char *)(((long *)newkey) + 1), 4);
- bcopy((char *)&keylow, (char *)newkey, 4);
- *datout = 0;
- *outlen = 0;
-
- return(kadm_change(ad->pname, ad->pinst, ad->prealm, newkey));
-}
-
-/*
-kadm_ser_add - the server side of the add_entry routine
- recieves : KTEXT, {values}
- returns : CKSUM, RETCODE, {values}
- acl : su, sms (as alloc)
-
-Adds and entry containing values to the database
-returns the values of the entry, so if you leave certain fields blank you will
- be able to determine the default values they are set to
-*/
-int
-kadm_ser_add(dat,len,ad, datout, outlen)
-u_char *dat;
-int len;
-AUTH_DAT *ad;
-u_char **datout;
-int *outlen;
-{
- Kadm_vals values, retvals;
- int status;
-
- if ((status = stream_to_vals(dat, &values, len)) < 0)
- return(KADM_LENGTH_ERROR);
- if ((status = kadm_add_entry(ad->pname, ad->pinst, ad->prealm,
- &values, &retvals)) == KADM_DATA) {
- *outlen = vals_to_stream(&retvals,datout);
- return KADM_SUCCESS;
- } else {
- *outlen = 0;
- return status;
- }
-}
-
-/*
-kadm_ser_mod - the server side of the mod_entry routine
- recieves : KTEXT, {values, values}
- returns : CKSUM, RETCODE, {values}
- acl : su, sms (as register or dealloc)
-
-Modifies all entries corresponding to the first values so they match the
- second values.
-returns the values for the changed entries
-*/
-int
-kadm_ser_mod(dat,len,ad, datout, outlen)
-u_char *dat;
-int len;
-AUTH_DAT *ad;
-u_char **datout;
-int *outlen;
-{
- Kadm_vals vals1, vals2, retvals;
- int wh;
- int status;
-
- if ((wh = stream_to_vals(dat, &vals1, len)) < 0)
- return KADM_LENGTH_ERROR;
- if ((status = stream_to_vals(dat+wh,&vals2, len-wh)) < 0)
- return KADM_LENGTH_ERROR;
- if ((status = kadm_mod_entry(ad->pname, ad->pinst, ad->prealm, &vals1,
- &vals2, &retvals)) == KADM_DATA) {
- *outlen = vals_to_stream(&retvals,datout);
- return KADM_SUCCESS;
- } else {
- *outlen = 0;
- return status;
- }
-}
-
-/*
-kadm_ser_get
- recieves : KTEXT, {values, flags}
- returns : CKSUM, RETCODE, {count, values, values, values}
- acl : su
-
-gets the fields requested by flags from all entries matching values
-returns this data for each matching recipient, after a count of how many such
- matches there were
-*/
-int
-kadm_ser_get(dat,len,ad, datout, outlen)
-u_char *dat;
-int len;
-AUTH_DAT *ad;
-u_char **datout;
-int *outlen;
-{
- Kadm_vals values, retvals;
- u_char fl[FLDSZ];
- int loop,wh;
- int status;
-
- if ((wh = stream_to_vals(dat, &values, len)) < 0)
- return KADM_LENGTH_ERROR;
- if (wh + FLDSZ > len)
- return KADM_LENGTH_ERROR;
- for (loop=FLDSZ-1; loop>=0; loop--)
- fl[loop] = dat[wh++];
- if ((status = kadm_get_entry(ad->pname, ad->pinst, ad->prealm,
- &values, fl, &retvals)) == KADM_DATA) {
- *outlen = vals_to_stream(&retvals,datout);
- return KADM_SUCCESS;
- } else {
- *outlen = 0;
- return status;
- }
-}
-
diff --git a/eBones/usr.sbin/kadmind/kadm_server.h b/eBones/usr.sbin/kadmind/kadm_server.h
deleted file mode 100644
index 1708107029a8..000000000000
--- a/eBones/usr.sbin/kadmind/kadm_server.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * $Source: /usr/cvs/src/eBones/kadmind/kadm_server.h,v $
- * $Author: mark $
- * Header: /afs/athena.mit.edu/astaff/project/kerberos/src/kadmin/RCS/kadm_server.h,v 4.1 89/12/21 17:46:51 jtkohl Exp
- *
- * Copyright 1988 by the Massachusetts Institute of Technology.
- *
- * For copying and distribution information, please see the file
- * Copyright.MIT.
- *
- * Definitions for Kerberos administration server & client
- */
-
-#ifndef KADM_SERVER_DEFS
-#define KADM_SERVER_DEFS
-
-/*
- * kadm_server.h
- * Header file for the fourth attempt at an admin server
- * Doug Church, December 28, 1989, MIT Project Athena
- * ps. Yes that means this code belongs to athena etc...
- * as part of our ongoing attempt to copyright all greek names
- */
-
-#include <sys/types.h>
-#include <krb.h>
-#include <des.h>
-
-typedef struct {
- struct sockaddr_in admin_addr;
- struct sockaddr_in recv_addr;
- int recv_addr_len;
- int admin_fd; /* our link to clients */
- char sname[ANAME_SZ];
- char sinst[INST_SZ];
- char krbrlm[REALM_SZ];
- C_Block master_key;
- C_Block session_key;
- Key_schedule master_key_schedule;
- long master_key_version;
-} Kadm_Server;
-
-/* the default syslog file */
-#define KADM_SYSLOG "/var/log/kadmind.syslog"
-
-#define DEFAULT_ACL_DIR "/etc/kerberosIV"
-#define ADD_ACL_FILE "/admin_acl.add"
-#define GET_ACL_FILE "/admin_acl.get"
-#define MOD_ACL_FILE "/admin_acl.mod"
-
-int kadm_ser_in(unsigned char **dat, int *dat_len);
-int kadm_ser_init(int inter, char realm[]);
-int kadm_ser_cpw(u_char *dat, int len, AUTH_DAT *ad, u_char **datout,
- int *outlen);
-int kadm_ser_add(u_char *dat, int len, AUTH_DAT *ad, u_char **datout,
- int *outlen);
-int kadm_ser_mod(u_char *dat, int len, AUTH_DAT *ad, u_char **datout,
- int *outlen);
-int kadm_ser_get(u_char *dat, int len, AUTH_DAT *ad, u_char **datout,
- int *outlen);
-int kadm_change (char *rname, char *rinstance, char *rrealm,
- des_cblock newpw);
-int kadm_add_entry(char *rname, char *rinstance, char *rrealm,
- Kadm_vals *valsin, Kadm_vals *valsout);
-int kadm_mod_entry(char *rname, char *rinstance, char *rrealm,
- Kadm_vals *valsin1, Kadm_vals *valsin2, Kadm_vals *valsout);
-int kadm_get_entry(char *rname, char *rinstance, char *rrealm,
- Kadm_vals *valsin, u_char *flags, Kadm_vals *valsout);
-
-#endif KADM_SERVER_DEFS
diff --git a/eBones/usr.sbin/kadmind/kadmind.8 b/eBones/usr.sbin/kadmind/kadmind.8
deleted file mode 100644
index 1eb10d793442..000000000000
--- a/eBones/usr.sbin/kadmind/kadmind.8
+++ /dev/null
@@ -1,117 +0,0 @@
-.\" from: kadmind.8,v 4.1 89/07/25 17:28:33 jtkohl Exp $
-.\" $Id: kadmind.8,v 1.1.1.1 1994/09/30 14:50:06 csgr Exp $
-.\" Copyright 1989 by the Massachusetts Institute of Technology.
-.\"
-.\" For copying and distribution information,
-.\" please see the file <Copyright.MIT>.
-.\"
-.TH KADMIND 8 "Kerberos Version 4.0" "MIT Project Athena"
-.SH NAME
-kadmind \- network daemon for Kerberos database administration
-.SH SYNOPSIS
-.B kadmind
-[
-.B \-n
-] [
-.B \-h
-] [
-.B \-r realm
-] [
-.B \-f filename
-] [
-.B \-d dbname
-] [
-.B \-a acldir
-]
-.SH DESCRIPTION
-.I kadmind
-is the network database server for the Kerberos password-changing and
-administration tools.
-.PP
-Upon execution, it prompts the user to enter the master key string for
-the database.
-.PP
-If the
-.B \-n
-option is specified, the master key is instead fetched from the master
-key cache file.
-.PP
-If the
-.B \-r
-.I realm
-option is specified, the admin server will pretend that its
-local realm is
-.I realm
-instead of the actual local realm of the host it is running on.
-This makes it possible to run a server for a foreign kerberos
-realm.
-.PP
-If the
-.B \-f
-.I filename
-option is specified, then that file is used to hold the log information
-instead of the default.
-.PP
-If the
-.B \-d
-.I dbname
-option is specified, then that file is used as the database name instead
-of the default.
-.PP
-If the
-.B \-a
-.I acldir
-option is specified, then
-.I acldir
-is used as the directory in which to search for access control lists
-instead of the default.
-.PP
-If the
-.B \-h
-option is specified,
-.I kadmind
-prints out a short summary of the permissible control arguments, and
-then exits.
-.PP
-When performing requests on behalf of clients,
-.I kadmind
-checks access control lists (ACLs) to determine the authorization of the client
-to perform the requested action.
-Currently three distinct access types are supported:
-.TP 1i
-Addition
-(.add ACL file). If a principal is on this list, it may add new
-principals to the database.
-.TP
-Retrieval
-(.get ACL file). If a principal is on this list, it may retrieve
-database entries. NOTE: A principal's private key is never returned by
-the get functions.
-.TP
-Modification
-(.mod ACL file). If a principal is on this list, it may modify entries
-in the database.
-.PP
-A principal is always granted authorization to change its own password.
-.SH FILES
-.TP 20n
-/var/log/kadmind.syslog
-Default log file.
-.TP
-/etc/kerberosIV/admin_acl.{add,get,mod}
-Access control list files
-.TP
-/etc/kerberosIV/principal.db
-DBM file containing database
-.TP
-/etc/kerberosIV/principal.ok
-Semaphore indicating that the DBM database is not being modified.
-.TP
-/etc/kerberosIV/master_key
-Master key cache file.
-.SH "SEE ALSO"
-kerberos(1), kpasswd(1), kadmin(8), acl_check(3)
-.SH AUTHORS
-Douglas A. Church, MIT Project Athena
-.br
-John T. Kohl, Project Athena/Digital Equipment Corporation
diff --git a/eBones/usr.sbin/kdb_destroy/Makefile b/eBones/usr.sbin/kdb_destroy/Makefile
deleted file mode 100644
index f92eb0e2b8e1..000000000000
--- a/eBones/usr.sbin/kdb_destroy/Makefile
+++ /dev/null
@@ -1,8 +0,0 @@
-# From: @(#)Makefile 5.1 (Berkeley) 6/25/90
-# $Id: Makefile,v 1.4 1995/09/13 17:24:23 markm Exp $
-
-PROG= kdb_destroy
-CFLAGS+=-DKERBEROS -DDEBUG
-MAN8= kdb_destroy.8
-
-.include <bsd.prog.mk>
diff --git a/eBones/usr.sbin/kdb_destroy/kdb_destroy.8 b/eBones/usr.sbin/kdb_destroy/kdb_destroy.8
deleted file mode 100644
index 2e5787603f0b..000000000000
--- a/eBones/usr.sbin/kdb_destroy/kdb_destroy.8
+++ /dev/null
@@ -1,36 +0,0 @@
-.\" from: kdb_destroy.8,v 4.1 89/01/23 11:08:02 jtkohl Exp $
-.\" $Id: kdb_destroy.8,v 1.1.1.1 1994/09/30 14:50:06 csgr Exp $
-.\" Copyright 1989 by the Massachusetts Institute of Technology.
-.\"
-.\" For copying and distribution information,
-.\" please see the file <Copyright.MIT>.
-.\"
-.TH KDB_DESTROY 8 "Kerberos Version 4.0" "MIT Project Athena"
-.SH NAME
-kdb_destroy \- destroy Kerberos key distribution center database
-.SH SYNOPSIS
-kdb_destroy
-.SH DESCRIPTION
-.I kdb_destroy
-deletes a Kerberos key distribution center database.
-.PP
-The user is prompted to verify that the database should be destroyed. A
-response beginning with `y' or `Y' confirms deletion.
-Any other response aborts deletion.
-.SH DIAGNOSTICS
-.TP 20n
-"Database cannot be deleted at /kerberos/principal"
-The attempt to delete the database failed (probably due to a system or
-access permission error).
-.TP
-"Database not deleted."
-The user aborted the deletion.
-.SH FILES
-.TP 20n
-/etc/kerberosIV/principal.db
-DBM file containing database
-.TP
-/etc/kerberosIV/principal.ok
-Semaphore indicating that the DBM database is not being modified.
-.SH SEE ALSO
-kdb_init(8)
diff --git a/eBones/usr.sbin/kdb_destroy/kdb_destroy.c b/eBones/usr.sbin/kdb_destroy/kdb_destroy.c
deleted file mode 100644
index 57e1a80a6b9c..000000000000
--- a/eBones/usr.sbin/kdb_destroy/kdb_destroy.c
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: kdb_destroy.c,v 4.0 89/01/24 21:49:02 jtkohl Exp $
- * $Id: kdb_destroy.c,v 1.5 1995/08/04 06:35:45 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: kdb_destroy.c,v 1.5 1995/08/04 06:35:45 mark Exp $";
-#endif lint
-#endif
-
-#include <unistd.h>
-#include <strings.h>
-#include <stdio.h>
-#include <krb.h>
-#include <krb_db.h>
-
-#if defined(__FreeBSD__) || defined(__NetBSD__)
-#define _DBM_
-#endif
-
-void
-main()
-{
- char answer[10]; /* user input */
-#ifdef _DBM_
- char dbm[256]; /* database path and name */
- char *file; /* database file names */
-#else
- char dbm[256]; /* database path and name */
- char dbm1[256]; /* database path and name */
- char *file1, *file2; /* database file names */
-#endif
-
- strcpy(dbm, DBM_FILE);
-#ifdef _DBM_
- file = strcat(dbm, ".db");
-#else
- strcpy(dbm1, DBM_FILE);
- file1 = strcat(dbm, ".dir");
- file2 = strcat(dbm1, ".pag");
-#endif
-
- printf("You are about to destroy the Kerberos database ");
- printf("on this machine.\n");
- printf("Are you sure you want to do this (y/n)? ");
- fgets(answer, sizeof(answer), stdin);
-
- if (answer[0] == 'y' || answer[0] == 'Y') {
-#ifdef _DBM_
- if (unlink(file) == 0)
-#else
- if (unlink(file1) == 0 && unlink(file2) == 0)
-#endif
- fprintf(stderr, "Database deleted at %s\n", DBM_FILE);
- else
- fprintf(stderr, "Database cannot be deleted at %s\n",
- DBM_FILE);
- } else
- fprintf(stderr, "Database not deleted.\n");
-}
diff --git a/eBones/usr.sbin/kdb_edit/Makefile b/eBones/usr.sbin/kdb_edit/Makefile
deleted file mode 100644
index 34dd94af8a03..000000000000
--- a/eBones/usr.sbin/kdb_edit/Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-# From: @(#)Makefile 5.2 (Berkeley) 2/14/91
-# $Id: Makefile,v 1.5 1995/09/14 04:09:47 gibbs Exp $
-
-PROG= kdb_edit
-CFLAGS+=-DKERBEROS -DDEBUG -I.
-SRCS= kdb_edit.c maketime.c
-DPADD= ${LIBKDB} ${LIBKRB} ${LIBDES}
-LDADD= -L${KDBOBJDIR} -lkdb -L${KRBOBJDIR} -lkrb -L${DESOBJDIR} -ldes
-MAN8= kdb_edit.8
-
-.include <bsd.prog.mk>
diff --git a/eBones/usr.sbin/kdb_edit/kdb_edit.8 b/eBones/usr.sbin/kdb_edit/kdb_edit.8
deleted file mode 100644
index 44a0fa61ed70..000000000000
--- a/eBones/usr.sbin/kdb_edit/kdb_edit.8
+++ /dev/null
@@ -1,58 +0,0 @@
-.\" from: kdb_edit.8,v 4.1 89/01/23 11:08:55 jtkohl Exp $
-.\" $Id: kdb_edit.8,v 1.2 1995/02/08 10:54:20 jkh Exp $
-.\" Copyright 1989 by the Massachusetts Institute of Technology.
-.\"
-.\" For copying and distribution information,
-.\" please see the file <Copyright.MIT>.
-.\"
-.TH KDB_EDIT 8 "Kerberos Version 4.0" "MIT Project Athena"
-.SH NAME
-kdb_edit \- Kerberos key distribution center database editing utility
-.SH SYNOPSIS
-kdb_edit [
-.B \-n
-]
-.SH DESCRIPTION
-.I kdb_edit
-is used to create or change principals stored in the Kerberos key
-distribution center (KDC) database.
-.PP
-When executed,
-.I kdb_edit
-prompts for the master key string and verifies that it matches the
-master key stored in the database.
-If the
-.B \-n
-option is specified, the master key is instead fetched from the master
-key cache file.
-.PP
-Once the master key has been verified,
-.I kdb_edit
-begins a prompt loop. The user is prompted for the principal and
-instance to be modified. If the entry is not found the user may create
-it.
-Once an entry is found or created, the user may set the password,
-expiration date, maximum ticket lifetime, and attributes.
-Default expiration dates, maximum ticket lifetimes, and attributes are
-presented in brackets; if the user presses return the default is selected.
-There is no default password.
-The password "RANDOM" and an empty password are interpreted specially,
-if entered the user may have the program select a random DES key for the
-principal.
-.PP
-Upon successfully creating or changing the entry, ``Edit O.K.'' is
-printed.
-.SH DIAGNOSTICS
-.TP 20n
-"verify_master_key: Invalid master key, does not match database."
-The master key string entered was incorrect.
-.SH FILES
-.TP 20n
-/etc/kerberosIV/principal.db
-DBM file containing database
-.TP
-/etc/kerberosIV/principal.ok
-Semaphore indicating that the DBM database is not being modified.
-.TP
-/etc/kerberosIV/master_key
-Master key cache file.
diff --git a/eBones/usr.sbin/kdb_edit/kdb_edit.c b/eBones/usr.sbin/kdb_edit/kdb_edit.c
deleted file mode 100644
index 82bf9a4e9972..000000000000
--- a/eBones/usr.sbin/kdb_edit/kdb_edit.c
+++ /dev/null
@@ -1,477 +0,0 @@
-/*
- * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * This routine changes the Kerberos encryption keys for principals,
- * i.e., users or services.
- *
- * from: kdb_edit.c,v 4.2 90/01/09 16:05:09 raeburn Exp $
- * $Id: kdb_edit.c,v 1.5 1995/08/03 17:15:54 mark Exp $
- */
-
-/*
- * exit returns 0 ==> success -1 ==> error
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: kdb_edit.c,v 1.5 1995/08/03 17:15:54 mark Exp $";
-#endif lint
-#endif
-
-#include <stdio.h>
-#include <signal.h>
-#include <errno.h>
-#include <strings.h>
-#include <sys/ioctl.h>
-#include <sys/file.h>
-#include "time.h"
-#include <des.h>
-#include <krb.h>
-#include <krb_db.h>
-/* MKEYFILE is now defined in kdc.h */
-#include <kdc.h>
-
-void Usage(void);
-void cleanup(void);
-void sig_exit(int sig, int code, struct sigcontext *scp);
-void no_core_dumps(void);
-int change_principal(void);
-
-#define zaptime(foo) bzero((char *)(foo), sizeof(*(foo)))
-
-char prog[32];
-char *progname = prog;
-int nflag = 0;
-int cflag;
-int lflag;
-int uflag;
-int debug;
-extern kerb_debug;
-
-Key_schedule KS;
-C_Block new_key;
-unsigned char *input;
-
-unsigned char *ivec;
-int i, j;
-int more;
-
-char *in_ptr;
-char input_name[ANAME_SZ];
-char input_instance[INST_SZ];
-char input_string[ANAME_SZ];
-
-#define MAX_PRINCIPAL 10
-Principal principal_data[MAX_PRINCIPAL];
-
-static Principal old_principal;
-static Principal default_princ;
-
-static C_Block master_key;
-static C_Block session_key;
-static Key_schedule master_key_schedule;
-static char pw_str[255];
-static long master_key_version;
-
-/*
- * gets replacement
- */
-static char * s_gets(char * str, int len)
-{
- int i;
- char *s;
-
- if((s = fgets(str, len, stdin)) == NULL)
- return(s);
- if(str[i = (strlen(str)-1)] == '\n')
- str[i] = '\0';
- return(s);
-}
-
-int
-main(argc, argv)
- int argc;
- char *argv[];
-
-{
- /* Local Declarations */
-
- long n;
-
- prog[sizeof prog - 1] = '\0'; /* make sure terminated */
- strncpy(prog, argv[0], sizeof prog - 1); /* salt away invoking
- * program */
-
- /* Assume a long is four bytes */
- if (sizeof(long) != 4) {
- fprintf(stdout, "%s: size of long is %d.\n", prog, sizeof(long));
- exit(-1);
- }
- /* Assume <=32 signals */
- if (NSIG > 32) {
- fprintf(stderr, "%s: more than 32 signals defined.\n", prog);
- exit(-1);
- }
- while (--argc > 0 && (*++argv)[0] == '-')
- for (i = 1; argv[0][i] != '\0'; i++) {
- switch (argv[0][i]) {
-
- /* debug flag */
- case 'd':
- debug = 1;
- continue;
-
- /* debug flag */
- case 'l':
- kerb_debug |= 1;
- continue;
-
- case 'n': /* read MKEYFILE for master key */
- nflag = 1;
- continue;
-
- default:
- fprintf(stderr, "%s: illegal flag \"%c\"\n",
- progname, argv[0][i]);
- Usage(); /* Give message and die */
- }
- };
-
- fprintf(stdout, "Opening database...\n");
- fflush(stdout);
- kerb_init();
- if (argc > 0) {
- if (kerb_db_set_name(*argv) != 0) {
- fprintf(stderr, "Could not open altername database name\n");
- exit(1);
- }
- }
-
-#ifdef notdef
- no_core_dumps(); /* diddle signals to avoid core dumps! */
-
- /* ignore whatever is reasonable */
- signal(SIGHUP, SIG_IGN);
- signal(SIGINT, SIG_IGN);
- signal(SIGTSTP, SIG_IGN);
-
-#endif
-
- if (kdb_get_master_key ((nflag == 0),
- master_key, master_key_schedule) != 0) {
- fprintf (stdout, "Couldn't read master key.\n");
- fflush (stdout);
- exit (-1);
- }
-
- if ((master_key_version = kdb_verify_master_key(master_key,
- master_key_schedule,
- stdout)) < 0)
- exit (-1);
-
- /* lookup the default values */
- n = kerb_get_principal(KERB_DEFAULT_NAME, KERB_DEFAULT_INST,
- &default_princ, 1, &more);
- if (n != 1) {
- fprintf(stderr,
- "%s: Kerberos error on default value lookup, %ld found.\n",
- progname, n);
- exit(-1);
- }
- fprintf(stdout, "Previous or default values are in [brackets] ,\n");
- fprintf(stdout, "enter return to leave the same, or new value.\n");
-
- while (change_principal()) {
- }
-
- cleanup();
- return(0); /* make -Wall shut up - MRVM */
-}
-
-int
-change_principal()
-{
- static char temp[255];
- int creating = 0;
- int editpw = 0;
- int changed = 0;
- long temp_long;
- int n;
- struct tm *tp, edate, *localtime();
- long maketime();
-
- fprintf(stdout, "\nPrincipal name: ");
- fflush(stdout);
- if (!s_gets(input_name, ANAME_SZ-1) || *input_name == '\0')
- return 0;
- fprintf(stdout, "Instance: ");
- fflush(stdout);
- /* instance can be null */
- s_gets(input_instance, INST_SZ-1);
- j = kerb_get_principal(input_name, input_instance, principal_data,
- MAX_PRINCIPAL, &more);
- if (!j) {
- fprintf(stdout, "\n\07\07<Not found>, Create [y] ? ");
- s_gets(temp, sizeof(temp)-1); /* Default case should work, it didn't */
- if (temp[0] != 'y' && temp[0] != 'Y' && temp[0] != '\0')
- return -1;
- /* make a new principal, fill in defaults */
- j = 1;
- creating = 1;
- strcpy(principal_data[0].name, input_name);
- strcpy(principal_data[0].instance, input_instance);
- principal_data[0].old = NULL;
- principal_data[0].exp_date = default_princ.exp_date;
- principal_data[0].max_life = default_princ.max_life;
- principal_data[0].attributes = default_princ.attributes;
- principal_data[0].kdc_key_ver = (unsigned char) master_key_version;
- principal_data[0].key_version = 0; /* bumped up later */
- }
- tp = localtime(&principal_data[0].exp_date);
- (void) sprintf(principal_data[0].exp_date_txt, "%4d-%02d-%02d",
- tp->tm_year > 1900 ? tp->tm_year : tp->tm_year + 1900,
- tp->tm_mon + 1, tp->tm_mday); /* January is 0, not 1 */
- for (i = 0; i < j; i++) {
- for (;;) {
- fprintf(stdout,
- "\nPrincipal: %s, Instance: %s, kdc_key_ver: %d",
- principal_data[i].name, principal_data[i].instance,
- principal_data[i].kdc_key_ver);
- editpw = 1;
- changed = 0;
- if (!creating) {
- /*
- * copy the existing data so we can use the old values
- * for the qualifier clause of the replace
- */
- principal_data[i].old = (char *) &old_principal;
- bcopy(&principal_data[i], &old_principal,
- sizeof(old_principal));
- printf("\nChange password [n] ? ");
- s_gets(temp, sizeof(temp)-1);
- if (strcmp("y", temp) && strcmp("Y", temp))
- editpw = 0;
- }
- /* password */
- if (editpw) {
-#ifdef NOENCRYPTION
- placebo_read_pw_string(pw_str, sizeof pw_str,
- "\nNew Password: ", TRUE);
-#else
- des_read_pw_string(pw_str, sizeof pw_str,
- "\nNew Password: ", TRUE);
-#endif
- if (pw_str[0] == '\0' || !strcmp(pw_str, "RANDOM")) {
- printf("\nRandom password [y] ? ");
- s_gets(temp, sizeof(temp)-1);
- if (!strcmp("n", temp) || !strcmp("N", temp)) {
- /* no, use literal */
-#ifdef NOENCRYPTION
- bzero(new_key, sizeof(C_Block));
- new_key[0] = 127;
-#else
- string_to_key(pw_str, &new_key);
-#endif
- bzero(pw_str, sizeof pw_str); /* "RANDOM" */
- } else {
-#ifdef NOENCRYPTION
- bzero(new_key, sizeof(C_Block));
- new_key[0] = 127;
-#else
- random_key(new_key);
-#endif
- bzero(pw_str, sizeof pw_str);
- }
- } else if (!strcmp(pw_str, "NULL")) {
- printf("\nNull Key [y] ? ");
- s_gets(temp, sizeof(temp)-1);
- if (!strcmp("n", temp) || !strcmp("N", temp)) {
- /* no, use literal */
-#ifdef NOENCRYPTION
- bzero(new_key, sizeof(C_Block));
- new_key[0] = 127;
-#else
- string_to_key(pw_str, &new_key);
-#endif
- bzero(pw_str, sizeof pw_str); /* "NULL" */
- } else {
-
- principal_data[i].key_low = 0;
- principal_data[i].key_high = 0;
- goto null_key;
- }
- } else {
-#ifdef NOENCRYPTION
- bzero(new_key, sizeof(C_Block));
- new_key[0] = 127;
-#else
- string_to_key(pw_str, &new_key);
-#endif
- bzero(pw_str, sizeof pw_str);
- }
-
- /* seal it under the kerberos master key */
- kdb_encrypt_key (new_key, new_key,
- master_key, master_key_schedule,
- ENCRYPT);
- bcopy(new_key, &principal_data[i].key_low, 4);
- bcopy(((long *) new_key) + 1,
- &principal_data[i].key_high, 4);
- bzero(new_key, sizeof(new_key));
- null_key:
- /* set master key version */
- principal_data[i].kdc_key_ver =
- (unsigned char) master_key_version;
- /* bump key version # */
- principal_data[i].key_version++;
- fprintf(stdout,
- "\nPrincipal's new key version = %d\n",
- principal_data[i].key_version);
- fflush(stdout);
- changed = 1;
- }
- /* expiration date */
- fprintf(stdout, "Expiration date (enter yyyy-mm-dd) [ %s ] ? ",
- principal_data[i].exp_date_txt);
- zaptime(&edate);
- while (s_gets(temp, sizeof(temp)-1) && ((n = strlen(temp)) >
- sizeof(principal_data[0].exp_date_txt))) {
- bad_date:
- fprintf(stdout, "\07\07Date Invalid\n");
- fprintf(stdout,
- "Expiration date (enter yyyy-mm-dd) [ %s ] ? ",
- principal_data[i].exp_date_txt);
- zaptime(&edate);
- }
-
- if (*temp) {
- if (sscanf(temp, "%d-%d-%d", &edate.tm_year,
- &edate.tm_mon, &edate.tm_mday) != 3)
- goto bad_date;
- (void) strcpy(principal_data[i].exp_date_txt, temp);
- edate.tm_mon--; /* January is 0, not 1 */
- edate.tm_hour = 23; /* nearly midnight at the end of the */
- edate.tm_min = 59; /* specified day */
- if (!(principal_data[i].exp_date = maketime(&edate, 1)))
- goto bad_date;
- changed = 1;
- }
-
- /* maximum lifetime */
- fprintf(stdout, "Max ticket lifetime (*5 minutes) [ %d ] ? ",
- principal_data[i].max_life);
- while (s_gets(temp, sizeof(temp)-1) && *temp) {
- if (sscanf(temp, "%ld", &temp_long) != 1)
- goto bad_life;
- if (temp_long > 255 || (temp_long < 0)) {
- bad_life:
- fprintf(stdout, "\07\07Invalid, choose 0-255\n");
- fprintf(stdout,
- "Max ticket lifetime (*5 minutes) [ %d ] ? ",
- principal_data[i].max_life);
- continue;
- }
- changed = 1;
- /* dont clobber */
- principal_data[i].max_life = (unsigned short) temp_long;
- break;
- }
-
- /* attributes */
- fprintf(stdout, "Attributes [ %d ] ? ",
- principal_data[i].attributes);
- while (s_gets(temp, sizeof(temp)-1) && *temp) {
- if (sscanf(temp, "%ld", &temp_long) != 1)
- goto bad_att;
- if (temp_long > 65535 || (temp_long < 0)) {
- bad_att:
- fprintf(stdout, "\07\07Invalid, choose 0-65535\n");
- fprintf(stdout, "Attributes [ %d ] ? ",
- principal_data[i].attributes);
- continue;
- }
- changed = 1;
- /* dont clobber */
- principal_data[i].attributes =
- (unsigned short) temp_long;
- break;
- }
-
- /*
- * remaining fields -- key versions and mod info, should
- * not be directly manipulated
- */
- if (changed) {
- if (kerb_put_principal(&principal_data[i], 1)) {
- fprintf(stdout,
- "\nError updating Kerberos database");
- } else {
- fprintf(stdout, "Edit O.K.");
- }
- } else {
- fprintf(stdout, "Unchanged");
- }
-
-
- bzero(&principal_data[i].key_low, 4);
- bzero(&principal_data[i].key_high, 4);
- fflush(stdout);
- break;
- }
- }
- if (more) {
- fprintf(stdout, "\nThere were more tuples found ");
- fprintf(stdout, "than there were space for");
- }
- return 1;
-}
-
-void
-no_core_dumps()
-{
-
- signal(SIGQUIT, (sig_t)sig_exit);
- signal(SIGILL, (sig_t)sig_exit);
- signal(SIGTRAP, (sig_t)sig_exit);
- signal(SIGIOT, (sig_t)sig_exit);
- signal(SIGEMT, (sig_t)sig_exit);
- signal(SIGFPE, (sig_t)sig_exit);
- signal(SIGBUS, (sig_t)sig_exit);
- signal(SIGSEGV, (sig_t)sig_exit);
- signal(SIGSYS, (sig_t)sig_exit);
-}
-
-void
-sig_exit(sig, code, scp)
- int sig, code;
- struct sigcontext *scp;
-{
- cleanup();
- fprintf(stderr,
- "\nSignal caught, sig = %d code = %d old pc = 0x%X \nexiting",
- sig, code, scp->sc_pc);
- exit(-1);
-}
-
-void
-cleanup()
-{
-
- bzero(master_key, sizeof(master_key));
- bzero(session_key, sizeof(session_key));
- bzero(master_key_schedule, sizeof(master_key_schedule));
- bzero(principal_data, sizeof(principal_data));
- bzero(new_key, sizeof(new_key));
- bzero(pw_str, sizeof(pw_str));
-}
-
-void
-Usage()
-{
- fprintf(stderr, "Usage: %s [-n]\n", progname);
- exit(1);
-}
diff --git a/eBones/usr.sbin/kdb_edit/maketime.c b/eBones/usr.sbin/kdb_edit/maketime.c
deleted file mode 100644
index 5e0ee00ee0e4..000000000000
--- a/eBones/usr.sbin/kdb_edit/maketime.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright 1990 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * Convert a struct tm * to a UNIX time.
- *
- * from: maketime.c,v 4.2 90/01/09 15:54:51 raeburn Exp $
- * $Id: maketime.c,v 1.3 1995/07/18 16:37:29 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: maketime.c,v 1.1 1994/03/21 16:23:54 piero Exp ";
-#endif lint
-#endif
-
-#include <sys/time.h>
-
-#define daysinyear(y) (((y) % 4) ? 365 : (((y) % 100) ? 366 : (((y) % 400) ? 365 : 366)))
-
-#define SECSPERDAY 24*60*60
-#define SECSPERHOUR 60*60
-#define SECSPERMIN 60
-
-static int cumdays[] = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334,
- 365};
-
-static int leapyear[] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
-static int nonleapyear[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
-
-long
-maketime(tp, local)
-register struct tm *tp;
-int local;
-{
- register long retval;
- int foo;
- int *marray;
-
- if (tp->tm_mon < 0 || tp->tm_mon > 11 ||
- tp->tm_hour < 0 || tp->tm_hour > 23 ||
- tp->tm_min < 0 || tp->tm_min > 59 ||
- tp->tm_sec < 0 || tp->tm_sec > 59) /* out of range */
- return 0;
-
- retval = 0;
- if (tp->tm_year < 1900)
- foo = tp->tm_year + 1900;
- else
- foo = tp->tm_year;
-
- if (foo < 1901 || foo > 2038) /* year is too small/large */
- return 0;
-
- if (daysinyear(foo) == 366) {
- if (tp->tm_mon > 1)
- retval+= SECSPERDAY; /* add leap day */
- marray = leapyear;
- } else
- marray = nonleapyear;
-
- if (tp->tm_mday < 0 || tp->tm_mday > marray[tp->tm_mon])
- return 0; /* out of range */
-
- while (--foo >= 1970)
- retval += daysinyear(foo) * SECSPERDAY;
-
- retval += cumdays[tp->tm_mon] * SECSPERDAY;
- retval += (tp->tm_mday-1) * SECSPERDAY;
- retval += tp->tm_hour * SECSPERHOUR + tp->tm_min * SECSPERMIN + tp->tm_sec;
-
- if (local) {
- /* need to use local time, so we retrieve timezone info */
- struct timezone tz;
- struct timeval tv;
- if (gettimeofday(&tv, &tz) < 0) {
- /* some error--give up? */
- return(retval);
- }
- retval += tz.tz_minuteswest * SECSPERMIN;
- }
- return(retval);
-}
diff --git a/eBones/usr.sbin/kdb_edit/time.h b/eBones/usr.sbin/kdb_edit/time.h
deleted file mode 100644
index ae84e2e24585..000000000000
--- a/eBones/usr.sbin/kdb_edit/time.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Structure for use by time manipulating subroutines.
- * The following library routines use it:
- * libc: ctime, localtime, gmtime, asctime
- * libcx: partime, maketime (may not be installed yet)
- */
-
-/*
- * from: time.h,v 1.1 82/05/06 11:34:29 wft Exp $
- * $Id: time.h,v 1.3 1995/07/18 16:37:31 mark Exp $
- */
-
-struct tm { /* See defines below for allowable ranges */
- int tm_sec;
- int tm_min;
- int tm_hour;
- int tm_mday;
- int tm_mon;
- int tm_year;
- int tm_wday;
- int tm_yday;
- int tm_isdst;
- int tm_zon; /* NEW: mins westward of Greenwich */
- int tm_ampm; /* NEW: 1 if AM, 2 if PM */
-};
-
-#define LCLZONE (5*60) /* Until V7 ftime(2) works, this defines local zone*/
-#define TMNULL (-1) /* Items not specified are given this value
- * in order to distinguish null specs from zero
- * specs. This is only used by partime and
- * maketime. */
-
- /* Indices into TM structure */
-#define TM_SEC 0 /* 0-59 */
-#define TM_MIN 1 /* 0-59 */
-#define TM_HOUR 2 /* 0-23 */
-#define TM_MDAY 3 /* 1-31 day of month */
-#define TM_DAY TM_MDAY /* " synonym */
-#define TM_MON 4 /* 0-11 */
-#define TM_YEAR 5 /* (year-1900) (year) */
-#define TM_WDAY 6 /* 0-6 day of week (0 = Sunday) */
-#define TM_YDAY 7 /* 0-365 day of year */
-#define TM_ISDST 8 /* 0 Std, 1 DST */
- /* New stuff */
-#define TM_ZON 9 /* 0-(24*60) minutes west of Greenwich */
-#define TM_AMPM 10 /* 1 AM, 2 PM */
diff --git a/eBones/usr.sbin/kdb_init/Makefile b/eBones/usr.sbin/kdb_init/Makefile
deleted file mode 100644
index 71447cae208b..000000000000
--- a/eBones/usr.sbin/kdb_init/Makefile
+++ /dev/null
@@ -1,10 +0,0 @@
-# From: @(#)Makefile 5.1 (Berkeley) 6/25/90
-# $Id: Makefile,v 1.5 1995/09/14 04:09:52 gibbs Exp $
-
-PROG= kdb_init
-CFLAGS+=-DKERBEROS -DDEBUG
-DPADD= ${LIBKDB} ${LIBKRB} ${LIBDES}
-LDADD= -L${KDBOBJDIR} -lkdb -L${KRBOBJDIR} -lkrb -L${DESOBJDIR} -ldes
-MAN8= kdb_init.8
-
-.include <bsd.prog.mk>
diff --git a/eBones/usr.sbin/kdb_init/kdb_init.8 b/eBones/usr.sbin/kdb_init/kdb_init.8
deleted file mode 100644
index d884d00b8b28..000000000000
--- a/eBones/usr.sbin/kdb_init/kdb_init.8
+++ /dev/null
@@ -1,45 +0,0 @@
-.\" from: kdb_init.8,v 4.1 89/01/23 11:09:02 jtkohl Exp $
-.\" $Id: kdb_init.8,v 1.1.1.1 1994/09/30 14:50:06 csgr Exp $
-.\" Copyright 1989 by the Massachusetts Institute of Technology.
-.\"
-.\" For copying and distribution information,
-.\" please see the file <Copyright.MIT>.
-.\"
-.TH KDB_INIT 8 "Kerberos Version 4.0" "MIT Project Athena"
-.SH NAME
-kdb_init \- Initialize Kerberos key distribution center database
-.SH SYNOPSIS
-kdb_init [
-.B realm
-]
-.SH DESCRIPTION
-.I kdb_init
-initializes a Kerberos key distribution center database, creating the
-necessary principals.
-.PP
-If the optional
-.I realm
-argument is not present,
-.I kdb_init
-prompts for a realm name (defaulting to the definition in
-/usr/include/kerberosIV/krb.h).
-After determining the realm to be created, it prompts for
-a master key password. The master key password is used to encrypt
-every encryption key stored in the database.
-.SH DIAGNOSTICS
-.TP 20n
-"/etc/kerberosIV/principal: File exists"
-An attempt was made to create a database on a machine which already had
-an existing database.
-.SH FILES
-.TP 20n
-/etc/kerberosIV/principal.db
-DBM file containing database
-.TP
-/etc/kerberosIV/principal.ok
-Semaphore indicating that the DBM database is not being modified.
-.TP
-/usr/include/kerberosIV/krb.h
-Include file defining default realm
-.SH SEE ALSO
-kdb_destroy(8)
diff --git a/eBones/usr.sbin/kdb_init/kdb_init.c b/eBones/usr.sbin/kdb_init/kdb_init.c
deleted file mode 100644
index de99181d5c3b..000000000000
--- a/eBones/usr.sbin/kdb_init/kdb_init.c
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Copyright 1987, 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * program to initialize the database, reports error if database file
- * already exists.
- *
- * from: kdb_init.c,v 4.0 89/01/24 21:50:45 jtkohl Exp $
- * $Id: kdb_init.c,v 1.4 1995/07/18 16:37:35 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: kdb_init.c,v 1.4 1995/07/18 16:37:35 mark Exp $";
-#endif lint
-#endif
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/file.h>
-#include <sys/time.h>
-#include <des.h>
-#include <krb.h>
-#include <krb_db.h>
-#include <string.h>
-
-#define TRUE 1
-
-enum ap_op {
- NULL_KEY, /* setup null keys */
- MASTER_KEY, /* use master key as new key */
- RANDOM_KEY, /* choose a random key */
-};
-
-int add_principal(char *name, char *instance, enum ap_op aap_op);
-
-int debug = 0;
-char *progname;
-C_Block master_key;
-Key_schedule master_key_schedule;
-
-int
-main(argc, argv)
- int argc;
- char *argv[];
-{
- char realm[REALM_SZ];
- char *cp;
- int code;
- char *database;
-
- progname = (cp = rindex(*argv, '/')) ? cp + 1 : *argv;
-
- if (argc > 3) {
- fprintf(stderr, "Usage: %s [realm-name] [database-name]\n", argv[0]);
- exit(1);
- }
- if (argc == 3) {
- database = argv[2];
- --argc;
- } else
- database = DBM_FILE;
-
- /* Do this first, it'll fail if the database exists */
- if ((code = kerb_db_create(database)) != 0) {
- fprintf(stderr, "Couldn't create database: %s\n",
- sys_errlist[code]);
- exit(1);
- }
- kerb_db_set_name(database);
-
- if (argc == 2)
- strncpy(realm, argv[1], REALM_SZ);
- else {
- fprintf(stderr, "Realm name [default %s ]: ", KRB_REALM);
- if (fgets(realm, sizeof(realm), stdin) == NULL) {
- fprintf(stderr, "\nEOF reading realm\n");
- exit(1);
- }
- if ((cp = index(realm, '\n')))
- *cp = '\0';
- if (!*realm) /* no realm given */
- strcpy(realm, KRB_REALM);
- }
- if (!k_isrealm(realm)) {
- fprintf(stderr, "%s: Bad kerberos realm name \"%s\"\n",
- progname, realm);
- exit(1);
- }
- printf("You will be prompted for the database Master Password.\n");
- printf("It is important that you NOT FORGET this password.\n");
- fflush(stdout);
-
- if (kdb_get_master_key (TRUE, master_key, master_key_schedule) != 0) {
- fprintf (stderr, "Couldn't read master key.\n");
- exit (-1);
- }
-
- if (
- add_principal(KERB_M_NAME, KERB_M_INST, MASTER_KEY) ||
- add_principal(KERB_DEFAULT_NAME, KERB_DEFAULT_INST, NULL_KEY) ||
- add_principal("krbtgt", realm, RANDOM_KEY) ||
- add_principal("changepw", KRB_MASTER, RANDOM_KEY)
- ) {
- fprintf(stderr, "\n%s: couldn't initialize database.\n",
- progname);
- exit(1);
- }
-
- /* play it safe */
- bzero (master_key, sizeof (C_Block));
- bzero (master_key_schedule, sizeof (Key_schedule));
- exit(0);
-}
-
-/* use a return code to indicate success or failure. check the return */
-/* values of the routines called by this routine. */
-
-int
-add_principal(name, instance, aap_op)
- char *name, *instance;
- enum ap_op aap_op;
-{
- Principal principal;
- struct tm *tm;
- C_Block new_key;
-
- bzero(&principal, sizeof(principal));
- strncpy(principal.name, name, ANAME_SZ);
- strncpy(principal.instance, instance, INST_SZ);
- switch (aap_op) {
- case NULL_KEY:
- principal.key_low = 0;
- principal.key_high = 0;
- break;
- case RANDOM_KEY:
-#ifdef NOENCRYPTION
- bzero(new_key, sizeof(C_Block));
- new_key[0] = 127;
-#else
- random_key(new_key);
-#endif
- kdb_encrypt_key (new_key, new_key, master_key, master_key_schedule,
- ENCRYPT);
- bcopy(new_key, &principal.key_low, 4);
- bcopy(((long *) new_key) + 1, &principal.key_high, 4);
- break;
- case MASTER_KEY:
- bcopy (master_key, new_key, sizeof (C_Block));
- kdb_encrypt_key (new_key, new_key, master_key, master_key_schedule,
- ENCRYPT);
- bcopy(new_key, &principal.key_low, 4);
- bcopy(((long *) new_key) + 1, &principal.key_high, 4);
- break;
- }
- principal.exp_date = 946702799; /* Happy new century */
- strncpy(principal.exp_date_txt, "12/31/99", DATE_SZ);
- principal.mod_date = time(0);
-
- tm = localtime(&principal.mod_date);
- principal.attributes = 0;
- principal.max_life = 255;
-
- principal.kdc_key_ver = 1;
- principal.key_version = 1;
-
- strncpy(principal.mod_name, "db_creation", ANAME_SZ);
- strncpy(principal.mod_instance, "", INST_SZ);
- principal.old = 0;
-
- kerb_db_put_principal(&principal, 1);
-
- /* let's play it safe */
- bzero (new_key, sizeof (C_Block));
- bzero (&principal.key_low, 4);
- bzero (&principal.key_high, 4);
- return 0;
-}
diff --git a/eBones/usr.sbin/kdb_util/Makefile b/eBones/usr.sbin/kdb_util/Makefile
deleted file mode 100644
index 88368dfd3384..000000000000
--- a/eBones/usr.sbin/kdb_util/Makefile
+++ /dev/null
@@ -1,12 +0,0 @@
-# From: @(#)Makefile 5.2 (Berkeley) 2/14/91
-# $Id: Makefile,v 1.5 1995/09/14 04:09:56 gibbs Exp $
-
-PROG= kdb_util
-CFLAGS+=-DKERBEROS -DDEBUG -I${.CURDIR}/../../kdb_edit
-SRCS= kdb_util.c maketime.c
-.PATH: ${.CURDIR}/../kdb_edit
-DPADD= ${LIBKDB} ${LIBKRB} ${LIBDES}
-LDADD= -L${KDBOBJDIR} -lkdb -L${KRBOBJDIR} -lkrb -L${DESOBJDIR} -ldes
-MAN8= kdb_util.8
-
-.include <bsd.prog.mk>
diff --git a/eBones/usr.sbin/kdb_util/kdb_util.8 b/eBones/usr.sbin/kdb_util/kdb_util.8
deleted file mode 100644
index 4183ef363b97..000000000000
--- a/eBones/usr.sbin/kdb_util/kdb_util.8
+++ /dev/null
@@ -1,64 +0,0 @@
-.\" from: kdb_util.8,v 4.1 89/01/23 11:09:11 jtkohl Exp $
-.\" $Id: kdb_util.8,v 1.1.1.1 1994/09/30 14:50:06 csgr Exp $
-.\" Copyright 1989 by the Massachusetts Institute of Technology.
-.\"
-.\" For copying and distribution information,
-.\" please see the file <Copyright.MIT>.
-.\"
-.TH KDB_UTIL 8 "Kerberos Version 4.0" "MIT Project Athena"
-.SH NAME
-kdb_util \- Kerberos key distribution center database utility
-.SH SYNOPSIS
-kdb_util
-.B operation filename
-.SH DESCRIPTION
-.I kdb_util
-allows the Kerberos key distribution center (KDC) database administrator to
-perform utility functions on the database.
-.PP
-.I Operation
-must be one of the following:
-.TP 10n
-.I load
-initializes the KDC database with the records described by the
-text contained in the file
-.IR filename .
-Any existing database is overwritten.
-.TP
-.I dump
-dumps the KDC database into a text representation in the file
-.IR filename .
-.TP
-.I slave_dump
-performs a database dump like the
-.I dump
-operation, and additionally creates a semaphore file signalling the
-propagation software that an update is available for distribution to
-slave KDC databases.
-.TP
-.I new_master_key
-prompts for the old and new master key strings, and then dumps the KDC
-database into a text representation in the file
-.IR filename .
-The keys in the text representation are encrypted in the new master key.
-.TP
-.I convert_old_db
-prompts for the master key string, and then dumps the KDC database into
-a text representation in the file
-.IR filename .
-The existing database is assumed to be encrypted using the old format
-(encrypted by the key schedule of the master key); the dumped database
-is encrypted using the new format (encrypted directly with master key).
-.PP
-.SH DIAGNOSTICS
-.TP 20n
-"verify_master_key: Invalid master key, does not match database."
-The master key string entered was incorrect.
-.SH FILES
-.TP 20n
-/etc/kerberosIV/principal.db
-DBM file containing database
-.TP
-.IR filename .dump_ok
-semaphore file created by
-.IR slave_dump.
diff --git a/eBones/usr.sbin/kdb_util/kdb_util.c b/eBones/usr.sbin/kdb_util/kdb_util.c
deleted file mode 100644
index 5dbe509e1afe..000000000000
--- a/eBones/usr.sbin/kdb_util/kdb_util.c
+++ /dev/null
@@ -1,523 +0,0 @@
-/*
- * Copyright 1987, 1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * Kerberos database manipulation utility. This program allows you to
- * dump a kerberos database to an ascii readable file and load this
- * file into the database. Read locking of the database is done during a
- * dump operation. NO LOCKING is done during a load operation. Loads
- * should happen with other processes shutdown.
- *
- * Written July 9, 1987 by Jeffrey I. Schiller
- *
- * from: kdb_util.c,v 4.4 90/01/09 15:57:20 raeburn Exp $
- * $Id: kdb_util.c,v 1.5 1995/08/03 17:15:57 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: kdb_util.c,v 1.5 1995/08/03 17:15:57 mark Exp $";
-#endif lint
-#endif
-
-#include <errno.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <netinet/in.h>
-#include <time.h>
-#include <strings.h>
-#include <des.h>
-#include <krb.h>
-#include <sys/file.h>
-#include <krb_db.h>
-
-#define TRUE 1
-
-Principal aprinc;
-
-static des_cblock master_key, new_master_key;
-static des_key_schedule master_key_schedule, new_master_key_schedule;
-
-#define zaptime(foo) bzero((char *)(foo), sizeof(*(foo)))
-
-char * progname;
-
-void convert_old_format_db (char *db_file, FILE *out);
-void convert_new_master_key (char *db_file, FILE *out);
-void update_ok_file (char *file_name);
-void print_time(FILE *file, unsigned long timeval);
-void load_db (char *db_file, FILE *input_file);
-int dump_db (char *db_file, FILE *output_file, void (*cv_key)());
-
-int
-main(argc, argv)
- int argc;
- char **argv;
-{
- FILE *file;
- enum {
- OP_LOAD,
- OP_DUMP,
- OP_SLAVE_DUMP,
- OP_NEW_MASTER,
- OP_CONVERT_OLD_DB,
- } op;
- char *file_name;
- char *prog = argv[0];
- char *db_name;
-
- progname = prog;
-
- if (argc != 3 && argc != 4) {
- fprintf(stderr, "Usage: %s operation file-name [database name].\n",
- argv[0]);
- exit(1);
- }
- if (argc == 3)
- db_name = DBM_FILE;
- else
- db_name = argv[3];
-
- if (kerb_db_set_name (db_name) != 0) {
- perror("Can't open database");
- exit(1);
- }
-
- if (!strcmp(argv[1], "load"))
- op = OP_LOAD;
- else if (!strcmp(argv[1], "dump"))
- op = OP_DUMP;
- else if (!strcmp(argv[1], "slave_dump"))
- op = OP_SLAVE_DUMP;
- else if (!strcmp(argv[1], "new_master_key"))
- op = OP_NEW_MASTER;
- else if (!strcmp(argv[1], "convert_old_db"))
- op = OP_CONVERT_OLD_DB;
- else {
- fprintf(stderr,
- "%s: %s is an invalid operation.\n", prog, argv[1]);
- fprintf(stderr,
- "%s: Valid operations are \"dump\", \"slave_dump\",", argv[0]);
- fprintf(stderr,
- "\"load\", \"new_master_key\", and \"convert_old_db\".\n");
- exit(1);
- }
-
- file_name = argv[2];
- file = fopen(file_name, op == OP_LOAD ? "r" : "w");
- if (file == NULL) {
- fprintf(stderr, "%s: Unable to open %s\n", prog, argv[2]);
- (void) fflush(stderr);
- perror("open");
- exit(1);
- }
-
- switch (op) {
- case OP_DUMP:
- if ((dump_db (db_name, file, (void (*)()) 0) == EOF) ||
- (fclose(file) == EOF)) {
- fprintf(stderr, "error on file %s:", file_name);
- perror("");
- exit(1);
- }
- break;
- case OP_SLAVE_DUMP:
- if ((dump_db (db_name, file, (void (*)()) 0) == EOF) ||
- (fclose(file) == EOF)) {
- fprintf(stderr, "error on file %s:", file_name);
- perror("");
- exit(1);
- }
- update_ok_file (file_name);
- break;
- case OP_LOAD:
- load_db (db_name, file);
- break;
- case OP_NEW_MASTER:
- convert_new_master_key (db_name, file);
- printf("Don't forget to do a `kdb_util load %s' to reload the database!\n", file_name);
- break;
- case OP_CONVERT_OLD_DB:
- convert_old_format_db (db_name, file);
- printf("Don't forget to do a `kdb_util load %s' to reload the database!\n", file_name);
- break;
- }
- exit(0);
- }
-
-void
-clear_secrets ()
-{
- bzero((char *)master_key, sizeof (des_cblock));
- bzero((char *)master_key_schedule, sizeof (Key_schedule));
- bzero((char *)new_master_key, sizeof (des_cblock));
- bzero((char *)new_master_key_schedule, sizeof (Key_schedule));
-}
-
-/* cv_key is a procedure which takes a principle and changes its key,
- either for a new method of encrypting the keys, or a new master key.
- if cv_key is null no transformation of key is done (other than net byte
- order). */
-
-struct callback_args {
- void (*cv_key)();
- FILE *output_file;
-};
-
-static int dump_db_1(arg, principal)
- char *arg;
- Principal *principal;
-{ /* replace null strings with "*" */
- struct callback_args *a = (struct callback_args *)arg;
-
- if (principal->instance[0] == '\0') {
- principal->instance[0] = '*';
- principal->instance[1] = '\0';
- }
- if (principal->mod_name[0] == '\0') {
- principal->mod_name[0] = '*';
- principal->mod_name[1] = '\0';
- }
- if (principal->mod_instance[0] == '\0') {
- principal->mod_instance[0] = '*';
- principal->mod_instance[1] = '\0';
- }
- if (a->cv_key != NULL) {
- (*a->cv_key) (principal);
- }
- fprintf(a->output_file, "%s %s %d %d %d %d %lx %lx",
- principal->name,
- principal->instance,
- principal->max_life,
- principal->kdc_key_ver,
- principal->key_version,
- principal->attributes,
- htonl (principal->key_low),
- htonl (principal->key_high));
- print_time(a->output_file, principal->exp_date);
- print_time(a->output_file, principal->mod_date);
- fprintf(a->output_file, " %s %s\n",
- principal->mod_name,
- principal->mod_instance);
- return 0;
-}
-
-int
-dump_db (db_file, output_file, cv_key)
- char *db_file;
- FILE *output_file;
- void (*cv_key)();
-{
- struct callback_args a;
-
- a.cv_key = cv_key;
- a.output_file = output_file;
-
- kerb_db_iterate (dump_db_1, (char *)&a);
- return fflush(output_file);
-}
-
-void
-load_db (db_file, input_file)
- char *db_file;
- FILE *input_file;
-{
- char exp_date_str[50];
- char mod_date_str[50];
- int temp1, temp2, temp3;
- long time_explode();
- int code;
- char *temp_db_file;
- temp1 = strlen(db_file)+2;
- temp_db_file = malloc (temp1);
- strcpy(temp_db_file, db_file);
- strcat(temp_db_file, "~");
-
- /* Create the database */
- if ((code = kerb_db_create(temp_db_file)) != 0) {
- fprintf(stderr, "Couldn't create temp database %s: %s\n",
- temp_db_file, sys_errlist[code]);
- exit(1);
- }
- kerb_db_set_name(temp_db_file);
- for (;;) { /* explicit break on eof from fscanf */
- bzero((char *)&aprinc, sizeof(aprinc));
- if (fscanf(input_file,
- "%s %s %d %d %d %hd %lx %lx %s %s %s %s\n",
- aprinc.name,
- aprinc.instance,
- &temp1,
- &temp2,
- &temp3,
- &aprinc.attributes,
- &aprinc.key_low,
- &aprinc.key_high,
- exp_date_str,
- mod_date_str,
- aprinc.mod_name,
- aprinc.mod_instance) == EOF)
- break;
- aprinc.key_low = ntohl (aprinc.key_low);
- aprinc.key_high = ntohl (aprinc.key_high);
- aprinc.max_life = (unsigned char) temp1;
- aprinc.kdc_key_ver = (unsigned char) temp2;
- aprinc.key_version = (unsigned char) temp3;
- aprinc.exp_date = time_explode(exp_date_str);
- aprinc.mod_date = time_explode(mod_date_str);
- if (aprinc.instance[0] == '*')
- aprinc.instance[0] = '\0';
- if (aprinc.mod_name[0] == '*')
- aprinc.mod_name[0] = '\0';
- if (aprinc.mod_instance[0] == '*')
- aprinc.mod_instance[0] = '\0';
- if (kerb_db_put_principal(&aprinc, 1) != 1) {
- fprintf(stderr, "Couldn't store %s.%s: %s; load aborted\n",
- aprinc.name, aprinc.instance,
- sys_errlist[errno]);
- exit(1);
- };
- }
- if ((code = kerb_db_rename(temp_db_file, db_file)) != 0)
- perror("database rename failed");
- (void) fclose(input_file);
- free(temp_db_file);
-}
-
-void
-print_time(file, timeval)
- FILE *file;
- unsigned long timeval;
-{
- struct tm *tm;
- struct tm *gmtime();
- tm = gmtime((long *)&timeval);
- fprintf(file, " %04d%02d%02d%02d%02d",
- tm->tm_year < 1900 ? tm->tm_year + 1900: tm->tm_year,
- tm->tm_mon + 1,
- tm->tm_mday,
- tm->tm_hour,
- tm->tm_min);
-}
-
-/*ARGSUSED*/
-void
-update_ok_file (file_name)
- char *file_name;
-{
- /* handle slave locking/failure stuff */
- char *file_ok;
- int fd;
- static char ok[]=".dump_ok";
-
- if ((file_ok = (char *)malloc(strlen(file_name) + strlen(ok) + 1))
- == NULL) {
- fprintf(stderr, "kdb_util: out of memory.\n");
- (void) fflush (stderr);
- perror ("malloc");
- exit (1);
- }
- strcpy(file_ok, file_name);
- strcat(file_ok, ok);
- if ((fd = open(file_ok, O_WRONLY|O_CREAT|O_TRUNC, 0400)) < 0) {
- fprintf(stderr, "Error creating 'ok' file, '%s'", file_ok);
- perror("");
- (void) fflush (stderr);
- exit (1);
- }
- free(file_ok);
- close(fd);
-}
-
-void
-convert_key_new_master (p)
- Principal *p;
-{
- des_cblock key;
-
- /* leave null keys alone */
- if ((p->key_low == 0) && (p->key_high == 0)) return;
-
- /* move current key to des_cblock for encryption, special case master key
- since that's changing */
- if ((strncmp (p->name, KERB_M_NAME, ANAME_SZ) == 0) &&
- (strncmp (p->instance, KERB_M_INST, INST_SZ) == 0)) {
- bcopy((char *)new_master_key, (char *) key, sizeof (des_cblock));
- (p->key_version)++;
- } else {
- bcopy((char *)&(p->key_low), (char *)key, 4);
- bcopy((char *)&(p->key_high), (char *) (((long *) key) + 1), 4);
- kdb_encrypt_key (key, key, master_key, master_key_schedule, DECRYPT);
- }
-
- kdb_encrypt_key (key, key, new_master_key, new_master_key_schedule, ENCRYPT);
-
- bcopy((char *)key, (char *)&(p->key_low), 4);
- bcopy((char *)(((long *) key) + 1), (char *)&(p->key_high), 4);
- bzero((char *)key, sizeof (key)); /* a little paranoia ... */
-
- (p->kdc_key_ver)++;
-}
-
-void
-convert_new_master_key (db_file, out)
- char *db_file;
- FILE *out;
-{
-
- printf ("\n\nEnter the CURRENT master key.");
- if (kdb_get_master_key (TRUE, master_key, master_key_schedule) != 0) {
- fprintf (stderr, "get_master_key: Couldn't get master key.\n");
- clear_secrets ();
- exit (-1);
- }
-
- if (kdb_verify_master_key (master_key, master_key_schedule, stderr) < 0) {
- clear_secrets ();
- exit (-1);
- }
-
- printf ("\n\nNow enter the NEW master key. Do not forget it!!");
- if (kdb_get_master_key (TRUE, new_master_key, new_master_key_schedule) != 0) {
- fprintf (stderr, "get_master_key: Couldn't get new master key.\n");
- clear_secrets ();
- exit (-1);
- }
-
- dump_db (db_file, out, convert_key_new_master);
-}
-
-void
-convert_key_old_db (p)
- Principal *p;
-{
- des_cblock key;
-
- /* leave null keys alone */
- if ((p->key_low == 0) && (p->key_high == 0)) return;
-
- bcopy((char *)&(p->key_low), (char *)key, 4);
- bcopy((char *)&(p->key_high), (char *)(((long *) key) + 1), 4);
-
-#ifndef NOENCRYPTION
- des_pcbc_encrypt((des_cblock *)key,(des_cblock *)key,
- (long)sizeof(des_cblock),master_key_schedule,
- (des_cblock *)master_key_schedule,DECRYPT);
-#endif
-
- /* make new key, new style */
- kdb_encrypt_key (key, key, master_key, master_key_schedule, ENCRYPT);
-
- bcopy((char *)key, (char *)&(p->key_low), 4);
- bcopy((char *)(((long *) key) + 1), (char *)&(p->key_high), 4);
- bzero((char *)key, sizeof (key)); /* a little paranoia ... */
-}
-
-void
-convert_old_format_db (db_file, out)
- char *db_file;
- FILE *out;
-{
- des_cblock key_from_db;
- Principal principal_data[1];
- int n, more;
-
- if (kdb_get_master_key (TRUE, master_key, master_key_schedule) != 0L) {
- fprintf (stderr, "verify_master_key: Couldn't get master key.\n");
- clear_secrets();
- exit (-1);
- }
-
- /* can't call kdb_verify_master_key because this is an old style db */
- /* lookup the master key version */
- n = kerb_get_principal(KERB_M_NAME, KERB_M_INST, principal_data,
- 1 /* only one please */, &more);
- if ((n != 1) || more) {
- fprintf(stderr, "verify_master_key: "
- "Kerberos error on master key lookup, %d found.\n",
- n);
- exit (-1);
- }
-
- /* set up the master key */
- fprintf(stderr, "Current Kerberos master key version is %d.\n",
- principal_data[0].kdc_key_ver);
-
- /*
- * now use the master key to decrypt (old style) the key in the db, had better
- * be the same!
- */
- bcopy((char *)&principal_data[0].key_low, (char *)key_from_db, 4);
- bcopy((char *)&principal_data[0].key_high,
- (char *)(((long *) key_from_db) + 1), 4);
-#ifndef NOENCRYPTION
- des_pcbc_encrypt((des_cblock *)key_from_db,(des_cblock *)key_from_db,
- (long)sizeof(key_from_db),master_key_schedule,
- (des_cblock *)master_key_schedule,DECRYPT);
-#endif
- /* the decrypted database key had better equal the master key */
- n = bcmp((char *) master_key, (char *) key_from_db,
- sizeof(master_key));
- bzero((char *)key_from_db, sizeof(key_from_db));
-
- if (n) {
- fprintf(stderr, "\n\07\07verify_master_key: Invalid master key, ");
- fprintf(stderr, "does not match database.\n");
- exit (-1);
- }
-
- fprintf(stderr, "Master key verified.\n");
- (void) fflush(stderr);
-
- dump_db (db_file, out, convert_key_old_db);
-}
-
-long
-time_explode(cp)
-register char *cp;
-{
- char wbuf[5];
- struct tm tp;
- long maketime();
- int local;
-
- zaptime(&tp); /* clear out the struct */
-
- if (strlen(cp) > 10) { /* new format */
- (void) strncpy(wbuf, cp, 4);
- wbuf[4] = 0;
- tp.tm_year = atoi(wbuf);
- cp += 4; /* step over the year */
- local = 0; /* GMT */
- } else { /* old format: local time,
- year is 2 digits, assuming 19xx */
- wbuf[0] = *cp++;
- wbuf[1] = *cp++;
- wbuf[2] = 0;
- tp.tm_year = 1900 + atoi(wbuf);
- local = 1; /* local */
- }
-
- wbuf[0] = *cp++;
- wbuf[1] = *cp++;
- wbuf[2] = 0;
- tp.tm_mon = atoi(wbuf)-1;
-
- wbuf[0] = *cp++;
- wbuf[1] = *cp++;
- tp.tm_mday = atoi(wbuf);
-
- wbuf[0] = *cp++;
- wbuf[1] = *cp++;
- tp.tm_hour = atoi(wbuf);
-
- wbuf[0] = *cp++;
- wbuf[1] = *cp++;
- tp.tm_min = atoi(wbuf);
-
-
- return(maketime(&tp, local));
-}
diff --git a/eBones/usr.sbin/kerberos/Makefile b/eBones/usr.sbin/kerberos/Makefile
deleted file mode 100644
index 84a12fbd367e..000000000000
--- a/eBones/usr.sbin/kerberos/Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-# From: @(#)Makefile 5.1 (Berkeley) 6/25/90
-# $Id: Makefile,v 1.6 1995/09/14 04:10:15 gibbs Exp $
-
-PROG= kerberos
-SRCS= kerberos.c cr_err_reply.c
-CFLAGS+=-DKERBEROS -DDEBUG
-DPADD= ${LIBKDB} ${LIBKRB} ${LIBDES}
-LDADD= -L${KDBOBJDIR} -lkdb -L${KRBOBJDIR} -lkrb -L${DESOBJDIR} -ldes
-NOMAN= noman
-
-.include <bsd.prog.mk>
diff --git a/eBones/usr.sbin/kerberos/cr_err_reply.c b/eBones/usr.sbin/kerberos/cr_err_reply.c
deleted file mode 100644
index 89ee5f6cbfdb..000000000000
--- a/eBones/usr.sbin/kerberos/cr_err_reply.c
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: cr_err_reply.c,v 4.10 89/01/10 11:34:42 steiner Exp $
- * $Id: cr_err_reply.c,v 1.2 1995/07/18 16:37:49 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: cr_err_reply.c,v 1.2 1995/07/18 16:37:49 mark Exp $";
-#endif /* lint */
-#endif
-
-#include <sys/types.h>
-#include <krb.h>
-#include <prot.h>
-#include <strings.h>
-
-extern int req_act_vno; /* this is defined in the kerberos
- * server code */
-
-/*
- * This routine is used by the Kerberos authentication server to
- * create an error reply packet to send back to its client.
- *
- * It takes a pointer to the packet to be built, the name, instance,
- * and realm of the principal, the client's timestamp, an error code
- * and an error string as arguments. Its return value is undefined.
- *
- * The packet is built in the following format:
- *
- * type variable data
- * or constant
- * ---- ----------- ----
- *
- * unsigned char req_ack_vno protocol version number
- *
- * unsigned char AUTH_MSG_ERR_REPLY protocol message type
- *
- * [least significant HOST_BYTE_ORDER sender's (server's) byte
- * bit of above field] order
- *
- * string pname principal's name
- *
- * string pinst principal's instance
- *
- * string prealm principal's realm
- *
- * unsigned long time_ws client's timestamp
- *
- * unsigned long e error code
- *
- * string e_string error text
- */
-
-void
-cr_err_reply(pkt,pname,pinst,prealm,time_ws,e,e_string)
- KTEXT pkt;
- char *pname; /* Principal's name */
- char *pinst; /* Principal's instance */
- char *prealm; /* Principal's authentication domain */
- u_long time_ws; /* Workstation time */
- u_long e; /* Error code */
- char *e_string; /* Text of error */
-{
- u_char *v = (u_char *) pkt->dat; /* Prot vers number */
- u_char *t = (u_char *)(pkt->dat+1); /* Prot message type */
-
- /* Create fixed part of packet */
- *v = (unsigned char) req_act_vno; /* KRB_PROT_VERSION; */
- *t = (unsigned char) AUTH_MSG_ERR_REPLY;
- *t |= HOST_BYTE_ORDER;
-
- /* Add the basic info */
- (void) strcpy((char *) (pkt->dat+2),pname);
- pkt->length = 3 + strlen(pname);
- (void) strcpy((char *)(pkt->dat+pkt->length),pinst);
- pkt->length += 1 + strlen(pinst);
- (void) strcpy((char *)(pkt->dat+pkt->length),prealm);
- pkt->length += 1 + strlen(prealm);
- /* ws timestamp */
- bcopy((char *) &time_ws,(char *)(pkt->dat+pkt->length),4);
- pkt->length += 4;
- /* err code */
- bcopy((char *) &e,(char *)(pkt->dat+pkt->length),4);
- pkt->length += 4;
- /* err text */
- (void) strcpy((char *)(pkt->dat+pkt->length),e_string);
- pkt->length += 1 + strlen(e_string);
-
- /* And return */
- return;
-}
diff --git a/eBones/usr.sbin/kerberos/kerberos.c b/eBones/usr.sbin/kerberos/kerberos.c
deleted file mode 100644
index 5dacfdc29ebc..000000000000
--- a/eBones/usr.sbin/kerberos/kerberos.c
+++ /dev/null
@@ -1,815 +0,0 @@
-/*
- * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: kerberos.c,v 4.19 89/11/01 17:18:07 qjb Exp $
- * $Id: kerberos.c,v 1.5 1995/09/17 00:39:00 gibbs Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: kerberos.c,v 1.5 1995/09/17 00:39:00 gibbs Exp $";
-#endif lint
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#include <signal.h>
-#include <sgtty.h>
-#include <sys/ioctl.h>
-#include <sys/time.h>
-#include <sys/file.h>
-#include <ctype.h>
-
-#include <krb.h>
-#include <des.h>
-#include <klog.h>
-#include <prot.h>
-#include <krb_db.h>
-#include <kdc.h>
-
-void cr_err_reply(KTEXT pkt, char *pname, char *pinst, char *prealm,
- u_long time_ws, u_long e, char *e_string);
-void kerb_err_reply(struct sockaddr_in *client, KTEXT pkt, long err,
- char *string);
-void setup_disc(void);
-void kerberos(struct sockaddr_in *client, KTEXT pkt);
-int check_princ(char *p_name, char *instance, unsigned lifetime, Principal *p);
-int set_tgtkey(char *r);
-
-struct sockaddr_in s_in = {AF_INET};
-int f;
-
-/* XXX several files in libkdb know about this */
-char *progname;
-
-static Key_schedule master_key_schedule;
-static C_Block master_key;
-
-static struct timeval kerb_time;
-static Principal a_name_data; /* for requesting user */
-static Principal s_name_data; /* for services requested */
-static C_Block session_key;
-static u_char master_key_version;
-static char k_instance[INST_SZ];
-static char *lt;
-static int more;
-
-static int mflag; /* Are we invoked manually? */
-static int lflag; /* Have we set an alterate log file? */
-static char *log_file; /* name of alt. log file */
-static int nflag; /* don't check max age */
-static int rflag; /* alternate realm specified */
-
-/* fields within the received request packet */
-static u_char req_msg_type;
-static u_char req_version;
-static char *req_name_ptr;
-static char *req_inst_ptr;
-static char *req_realm_ptr;
-static u_long req_time_ws;
-
-int req_act_vno = KRB_PROT_VERSION; /* Temporary for version skew */
-
-static char local_realm[REALM_SZ];
-
-/* statistics */
-static long q_bytes; /* current bytes remaining in queue */
-static long q_n; /* how many consecutive non-zero
- * q_bytes */
-static long max_q_bytes;
-static long max_q_n;
-static long n_auth_req;
-static long n_appl_req;
-static long n_packets;
-
-static long max_age = -1;
-static long pause_int = -1;
-
-static void check_db_age();
-static void hang();
-
-/*
- * Print usage message and exit.
- */
-static void usage()
-{
- fprintf(stderr, "Usage: %s [-s] [-m] [-n] [-p pause_seconds]%s%s\n", progname,
- " [-a max_age] [-l log_file] [-r realm]"
- ," [database_pathname]"
- );
- exit(1);
-}
-
-
-int
-main(argc, argv)
- int argc;
- char **argv;
-{
- struct sockaddr_in from;
- register int n;
- int on = 1;
- int child;
- struct servent *sp;
- int fromlen;
- static KTEXT_ST pkt_st;
- KTEXT pkt = &pkt_st;
- int kerror;
- int c;
- extern char *optarg;
- extern int optind;
-
- progname = argv[0];
-
- while ((c = getopt(argc, argv, "snmp:a:l:r:")) != EOF) {
- switch(c) {
- case 's':
- /*
- * Set parameters to slave server defaults.
- */
- if (max_age == -1 && !nflag)
- max_age = ONE_DAY; /* 24 hours */
- if (pause_int == -1)
- pause_int = FIVE_MINUTES; /* 5 minutes */
- if (lflag == 0) {
- log_file = KRBSLAVELOG;
- lflag++;
- }
- break;
- case 'n':
- max_age = -1; /* don't check max age. */
- nflag++;
- break;
- case 'm':
- mflag++; /* running manually; prompt for master key */
- break;
- case 'p':
- /* Set pause interval. */
- if (!isdigit(optarg[0]))
- usage();
- pause_int = atoi(optarg);
- if ((pause_int < 5) || (pause_int > ONE_HOUR)) {
- fprintf(stderr, "pause_int must be between 5 and 3600 seconds.\n");
- usage();
- }
- break;
- case 'a':
- /* Set max age. */
- if (!isdigit(optarg[0]))
- usage();
- max_age = atoi(optarg);
- if ((max_age < ONE_HOUR) || (max_age > THREE_DAYS)) {
- fprintf(stderr, "max_age must be between one hour and three days, in seconds\n");
- usage();
- }
- break;
- case 'l':
- /* Set alternate log file */
- lflag++;
- log_file = optarg;
- break;
- case 'r':
- /* Set realm name */
- rflag++;
- strcpy(local_realm, optarg);
- break;
- default:
- usage();
- break;
- }
- }
-
- if (optind == (argc-1)) {
- if (kerb_db_set_name(argv[optind]) != 0) {
- fprintf(stderr, "Could not set alternate database name\n");
- exit(1);
- }
- optind++;
- }
-
- if (optind != argc)
- usage();
-
- printf("Kerberos server starting\n");
-
- if ((!nflag) && (max_age != -1))
- printf("\tMaximum database age: %ld seconds\n", max_age);
- if (pause_int != -1)
- printf("\tSleep for %ld seconds on error\n", pause_int);
- else
- printf("\tSleep forever on error\n");
- if (mflag)
- printf("\tMaster key will be entered manually\n");
-
- printf("\tLog file is %s\n", lflag ? log_file : KRBLOG);
-
- if (lflag)
- kset_logfile(log_file);
-
- /* find our hostname, and use it as the instance */
- if (gethostname(k_instance, INST_SZ)) {
- fprintf(stderr, "%s: gethostname error\n", progname);
- exit(1);
- }
-
- if ((sp = getservbyname("kerberos", "udp")) == 0) {
- fprintf(stderr, "%s: udp/kerberos unknown service\n", progname);
- exit(1);
- }
- s_in.sin_port = sp->s_port;
-
- if ((f = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
- fprintf(stderr, "%s: Can't open socket\n", progname);
- exit(1);
- }
- if (setsockopt(f, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) < 0)
- fprintf(stderr, "%s: setsockopt (SO_REUSEADDR)\n", progname);
-
- if (bind(f, (struct sockaddr *) &s_in, S_AD_SZ) < 0) {
- fprintf(stderr, "%s: Can't bind socket\n", progname);
- exit(1);
- }
- /* do all the database and cache inits */
- if ((n = kerb_init())) {
- if (mflag) {
- printf("Kerberos db and cache init ");
- printf("failed = %d ...exiting\n", n);
- exit(-1);
- } else {
- klog(L_KRB_PERR,
- "Kerberos db and cache init failed = %d ...exiting", n);
- hang();
- }
- }
-
- /* Make sure database isn't stale */
- check_db_age();
-
- /* setup master key */
- if (kdb_get_master_key (mflag, master_key, master_key_schedule) != 0) {
- klog (L_KRB_PERR, "kerberos: couldn't get master key.\n");
- exit (-1);
- }
- kerror = kdb_verify_master_key (master_key, master_key_schedule, stdout);
- if (kerror < 0) {
- klog (L_KRB_PERR, "Can't verify master key.");
- bzero (master_key, sizeof (master_key));
- bzero (master_key_schedule, sizeof (master_key_schedule));
- exit (-1);
- }
-
- master_key_version = (u_char) kerror;
-
- fprintf(stdout, "\nCurrent Kerberos master key version is %d\n",
- master_key_version);
-
- if (!rflag) {
- /* Look up our local realm */
- krb_get_lrealm(local_realm, 1);
- }
- fprintf(stdout, "Local realm: %s\n", local_realm);
- fflush(stdout);
-
- if (set_tgtkey(local_realm)) {
- /* Ticket granting service unknown */
- klog(L_KRB_PERR, "Ticket granting ticket service unknown");
- fprintf(stderr, "Ticket granting ticket service unknown\n");
- exit(1);
- }
- if (mflag) {
- if ((child = fork()) != 0) {
- printf("Kerberos started, PID=%d\n", child);
- exit(0);
- }
- setup_disc();
- }
- /* receive loop */
- for (;;) {
- fromlen = S_AD_SZ;
- n = recvfrom(f, pkt->dat, MAX_PKT_LEN, 0, (struct sockaddr *) &from,
- &fromlen);
- if (n > 0) {
- pkt->length = n;
- pkt->mbz = 0; /* force zeros to catch runaway strings */
- /* see what is left in the input queue */
- ioctl(f, FIONREAD, &q_bytes);
- gettimeofday(&kerb_time, NULL);
- q_n++;
- max_q_n = max(max_q_n, q_n);
- n_packets++;
- klog(L_NET_INFO,
- "q_byt %d, q_n %d, rd_byt %d, mx_q_b %d, mx_q_n %d, n_pkt %d",
- q_bytes, q_n, n, max_q_bytes, max_q_n, n_packets, 0);
- max_q_bytes = max(max_q_bytes, q_bytes);
- if (!q_bytes)
- q_n = 0; /* reset consecutive packets */
- kerberos(&from, pkt);
- } else
- klog(L_NET_ERR,
- "%s: bad recvfrom n = %d errno = %d", progname, n, errno, 0);
- }
-}
-
-void
-kerberos(client, pkt)
- struct sockaddr_in *client;
- KTEXT pkt;
-{
- static KTEXT_ST rpkt_st;
- KTEXT rpkt = &rpkt_st;
- static KTEXT_ST ciph_st;
- KTEXT ciph = &ciph_st;
- static KTEXT_ST tk_st;
- KTEXT tk = &tk_st;
- static KTEXT_ST auth_st;
- KTEXT auth = &auth_st;
- AUTH_DAT ad_st;
- AUTH_DAT *ad = &ad_st;
-
-
- static struct in_addr client_host;
- static int msg_byte_order;
- static u_char k_flags;
- u_long lifetime;
- int i;
- C_Block key;
- Key_schedule key_s;
- char *ptr;
-
-
-
- lifetime = DEFAULT_TKT_LIFE;
-
- ciph->length = 0;
-
- client_host = client->sin_addr;
-
- /* eval macros and correct the byte order and alignment as needed */
- req_version = pkt_version(pkt); /* 1 byte, version */
- req_msg_type = pkt_msg_type(pkt); /* 1 byte, Kerberos msg type */
-
- req_act_vno = req_version;
-
- /* check packet version */
- if (req_version != KRB_PROT_VERSION) {
- lt = klog(L_KRB_PERR,
- "KRB prot version mismatch: KRB =%d request = %d",
- KRB_PROT_VERSION, req_version, 0);
- /* send an error reply */
- kerb_err_reply(client, pkt, KERB_ERR_PKT_VER, lt);
- return;
- }
-
- /* set up and correct for byte order and alignment */
- req_name_ptr = (char *) pkt_a_name(pkt);
- req_inst_ptr = (char *) pkt_a_inst(pkt);
- req_realm_ptr = (char *) pkt_a_realm(pkt);
- bcopy(pkt_time_ws(pkt), &req_time_ws, sizeof(req_time_ws));
-
- msg_byte_order = req_msg_type & 1;
-
- if (msg_byte_order != HOST_BYTE_ORDER) {
- swap_u_long(req_time_ws)
- }
- klog(L_KRB_PINFO,
- "Prot version: %d, Byte order: %d, Message type: %d",
- req_version, msg_byte_order, req_msg_type);
-
- switch (req_msg_type & ~1) {
-
- case AUTH_MSG_KDC_REQUEST:
- {
- u_long req_life; /* Requested liftime */
- char *service; /* Service name */
- char *instance; /* Service instance */
- n_auth_req++;
- tk->length = 0;
- k_flags = 0; /* various kerberos flags */
-
-
- ptr = (char *) pkt_time_ws(pkt) + 4;
-
- req_life = (u_long) (*ptr++);
-
- service = ptr;
- instance = ptr + strlen(service) + 1;
-
- rpkt = &rpkt_st;
- klog(L_INI_REQ,
- "Initial ticket request Host: %s User: \"%s\" \"%s\"",
- inet_ntoa(client_host), req_name_ptr, req_inst_ptr, 0);
-
- if ((i = check_princ(req_name_ptr, req_inst_ptr, 0,
- &a_name_data))) {
- kerb_err_reply(client, pkt, i, lt);
- return;
- }
- tk->length = 0; /* init */
- if (strcmp(service, "krbtgt"))
- klog(L_NTGT_INTK,
- "INITIAL request from %s.%s for %s.%s",
- req_name_ptr, req_inst_ptr, service, instance, 0);
- /* this does all the checking */
- if ((i = check_princ(service, instance, lifetime,
- &s_name_data))) {
- kerb_err_reply(client, pkt, i, lt);
- return;
- }
- /* Bound requested lifetime with service and user */
- lifetime = min(req_life, ((u_long) s_name_data.max_life));
- lifetime = min(lifetime, ((u_long) a_name_data.max_life));
-
-#ifdef NOENCRYPTION
- bzero(session_key, sizeof(C_Block));
-#else
- random_key(session_key);
-#endif
- /* unseal server's key from master key */
- bcopy(&s_name_data.key_low, key, 4);
- bcopy(&s_name_data.key_high, ((long *) key) + 1, 4);
- kdb_encrypt_key(key, key, master_key,
- master_key_schedule, DECRYPT);
- /* construct and seal the ticket */
- krb_create_ticket(tk, k_flags, a_name_data.name,
- a_name_data.instance, local_realm,
- client_host.s_addr, session_key, lifetime, kerb_time.tv_sec,
- s_name_data.name, s_name_data.instance, key);
- bzero(key, sizeof(key));
- bzero(key_s, sizeof(key_s));
-
- /*
- * get the user's key, unseal it from the server's key, and
- * use it to seal the cipher
- */
-
- /* a_name_data.key_low a_name_data.key_high */
- bcopy(&a_name_data.key_low, key, 4);
- bcopy(&a_name_data.key_high, ((long *) key) + 1, 4);
-
- /* unseal the a_name key from the master key */
- kdb_encrypt_key(key, key, master_key,
- master_key_schedule, DECRYPT);
-
- create_ciph(ciph, session_key, s_name_data.name,
- s_name_data.instance, local_realm, lifetime,
- s_name_data.key_version, tk, kerb_time.tv_sec, key);
-
- /* clear session key */
- bzero(session_key, sizeof(session_key));
-
- bzero(key, sizeof(key));
-
-
-
- /* always send a reply packet */
- rpkt = create_auth_reply(req_name_ptr, req_inst_ptr,
- req_realm_ptr, req_time_ws, 0, a_name_data.exp_date,
- a_name_data.key_version, ciph);
- sendto(f, rpkt->dat, rpkt->length, 0, (struct sockaddr *) client,
- S_AD_SZ);
- bzero(&a_name_data, sizeof(a_name_data));
- bzero(&s_name_data, sizeof(s_name_data));
- break;
- }
- case AUTH_MSG_APPL_REQUEST:
- {
- u_long time_ws; /* Workstation time */
- u_long req_life; /* Requested liftime */
- char *service; /* Service name */
- char *instance; /* Service instance */
- int kerno; /* Kerberos error number */
- char tktrlm[REALM_SZ];
-
- n_appl_req++;
- tk->length = 0;
- k_flags = 0; /* various kerberos flags */
- kerno = KSUCCESS;
-
- auth->length = 4 + strlen(pkt->dat + 3);
- auth->length += (int) *(pkt->dat + auth->length) +
- (int) *(pkt->dat + auth->length + 1) + 2;
-
- bcopy(pkt->dat, auth->dat, auth->length);
-
- strncpy(tktrlm, auth->dat + 3, REALM_SZ);
- if (set_tgtkey(tktrlm)) {
- lt = klog(L_ERR_UNK,
- "FAILED realm %s unknown. Host: %s ",
- tktrlm, inet_ntoa(client_host));
- kerb_err_reply(client, pkt, kerno, lt);
- return;
- }
- kerno = krb_rd_req(auth, "ktbtgt", tktrlm, client_host.s_addr,
- ad, 0);
-
- if (kerno) {
- klog(L_ERR_UNK, "FAILED krb_rd_req from %s: %s",
- inet_ntoa(client_host), krb_err_txt[kerno]);
- kerb_err_reply(client, pkt, kerno, "krb_rd_req failed");
- return;
- }
- ptr = (char *) pkt->dat + auth->length;
-
- bcopy(ptr, &time_ws, 4);
- ptr += 4;
-
- req_life = (u_long) (*ptr++);
-
- service = ptr;
- instance = ptr + strlen(service) + 1;
-
- klog(L_APPL_REQ, "APPL Request %s.%s@%s on %s for %s.%s",
- ad->pname, ad->pinst, ad->prealm, inet_ntoa(client_host),
- service, instance, 0);
-
- if (strcmp(ad->prealm, tktrlm)) {
- kerb_err_reply(client, pkt, KERB_ERR_PRINCIPAL_UNKNOWN,
- "Can't hop realms");
- return;
- }
- if (!strcmp(service, "changepw")) {
- kerb_err_reply(client, pkt, KERB_ERR_PRINCIPAL_UNKNOWN,
- "Can't authorize password changed based on TGT");
- return;
- }
- kerno = check_princ(service, instance, req_life,
- &s_name_data);
- if (kerno) {
- kerb_err_reply(client, pkt, kerno, lt);
- return;
- }
- /* Bound requested lifetime with service and user */
- lifetime = min(req_life,
- (ad->life - ((kerb_time.tv_sec - ad->time_sec) / 300)));
- lifetime = min(lifetime, ((u_long) s_name_data.max_life));
-
- /* unseal server's key from master key */
- bcopy(&s_name_data.key_low, key, 4);
- bcopy(&s_name_data.key_high, ((long *) key) + 1, 4);
- kdb_encrypt_key(key, key, master_key,
- master_key_schedule, DECRYPT);
- /* construct and seal the ticket */
-
-#ifdef NOENCRYPTION
- bzero(session_key, sizeof(C_Block));
-#else
- random_key(session_key);
-#endif
-
- krb_create_ticket(tk, k_flags, ad->pname, ad->pinst,
- ad->prealm, client_host.s_addr,
- session_key, lifetime, kerb_time.tv_sec,
- s_name_data.name, s_name_data.instance,
- key);
- bzero(key, sizeof(key));
- bzero(key_s, sizeof(key_s));
-
- create_ciph(ciph, session_key, service, instance,
- local_realm,
- lifetime, s_name_data.key_version, tk,
- kerb_time.tv_sec, ad->session);
-
- /* clear session key */
- bzero(session_key, sizeof(session_key));
-
- bzero(ad->session, sizeof(ad->session));
-
- rpkt = create_auth_reply(ad->pname, ad->pinst,
- ad->prealm, time_ws,
- 0, 0, 0, ciph);
- sendto(f, rpkt->dat, rpkt->length, 0, (struct sockaddr *) client,
- S_AD_SZ);
- bzero(&s_name_data, sizeof(s_name_data));
- break;
- }
-
-
-#ifdef notdef_DIE
- case AUTH_MSG_DIE:
- {
- lt = klog(L_DEATH_REQ,
- "Host: %s User: \"%s\" \"%s\" Kerberos killed",
- inet_ntoa(client_host), req_name_ptr, req_inst_ptr, 0);
- exit(0);
- }
-#endif notdef_DIE
-
- default:
- {
- lt = klog(L_KRB_PERR,
- "Unknown message type: %d from %s port %u",
- req_msg_type, inet_ntoa(client_host),
- ntohs(client->sin_port));
- break;
- }
- }
-}
-
-
-/*
- * setup_disc
- *
- * disconnect all descriptors, remove ourself from the process
- * group that spawned us.
- */
-
-void
-setup_disc()
-{
-
- int s;
-
- for (s = 0; s < 3; s++) {
- (void) close(s);
- }
-
- (void) open("/dev/null", 0);
- (void) dup2(0, 1);
- (void) dup2(0, 2);
-
- s = open("/dev/tty", 2);
-
- if (s >= 0) {
- ioctl(s, TIOCNOTTY, (struct sgttyb *) 0);
- (void) close(s);
- }
- (void) chdir("/tmp");
-}
-
-
-/*
- * kerb_er_reply creates an error reply packet and sends it to the
- * client.
- */
-
-void
-kerb_err_reply(client, pkt, err, string)
- struct sockaddr_in *client;
- KTEXT pkt;
- long err;
- char *string;
-
-{
- static KTEXT_ST e_pkt_st;
- KTEXT e_pkt = &e_pkt_st;
- static char e_msg[128];
-
- strcpy(e_msg, "\nKerberos error -- ");
- strcat(e_msg, string);
- cr_err_reply(e_pkt, req_name_ptr, req_inst_ptr, req_realm_ptr,
- req_time_ws, err, e_msg);
- sendto(f, e_pkt->dat, e_pkt->length, 0, (struct sockaddr *) client,
- S_AD_SZ);
-
-}
-
-/*
- * Make sure that database isn't stale.
- *
- * Exit if it is; we don't want to tell lies.
- */
-
-static void check_db_age()
-{
- long age;
-
- if (max_age != -1) {
- /* Requires existance of kerb_get_db_age() */
- gettimeofday(&kerb_time, 0);
- age = kerb_get_db_age();
- if (age == 0) {
- klog(L_KRB_PERR, "Database currently being updated!");
- hang();
- }
- if ((age + max_age) < kerb_time.tv_sec) {
- klog(L_KRB_PERR, "Database out of date!");
- hang();
- /* NOTREACHED */
- }
- }
-}
-
-int
-check_princ(p_name, instance, lifetime, p)
- char *p_name;
- char *instance;
- unsigned lifetime;
-
- Principal *p;
-{
- static int n;
- static int more;
-
- n = kerb_get_principal(p_name, instance, p, 1, &more);
- klog(L_ALL_REQ,
- "Principal: \"%s\", Instance: \"%s\" Lifetime = %d n = %d",
- p_name, instance, lifetime, n, 0);
-
- if (n < 0) {
- lt = klog(L_KRB_PERR, "Database unavailable!");
- hang();
- }
-
- /*
- * if more than one p_name, pick one, randomly create a session key,
- * compute maximum lifetime, lookup authorizations if applicable,
- * and stuff into cipher.
- */
- if (n == 0) {
- /* service unknown, log error, skip to next request */
- lt = klog(L_ERR_UNK, "UNKNOWN \"%s\" \"%s\"", p_name,
- instance, 0);
- return KERB_ERR_PRINCIPAL_UNKNOWN;
- }
- if (more) {
- /* not unique, log error */
- lt = klog(L_ERR_NUN, "Principal NOT UNIQUE \"%s\" \"%s\"",
- p_name, instance, 0);
- return KERB_ERR_PRINCIPAL_NOT_UNIQUE;
- }
- /* If the user's key is null, we want to return an error */
- if ((p->key_low == 0) && (p->key_high == 0)) {
- /* User has a null key */
- lt = klog(L_ERR_NKY, "Null key \"%s\" \"%s\"", p_name,
- instance, 0);
- return KERB_ERR_NULL_KEY;
- }
- if (master_key_version != p->kdc_key_ver) {
- /* log error reply */
- lt = klog(L_ERR_MKV,
- "Key vers incorrect, KRB = %d, \"%s\" \"%s\" = %d",
- master_key_version, p->name, p->instance, p->kdc_key_ver,
- 0);
- return KERB_ERR_NAME_MAST_KEY_VER;
- }
- /* make sure the service hasn't expired */
- if ((u_long) p->exp_date < (u_long) kerb_time.tv_sec) {
- /* service did expire, log it */
- lt = klog(L_ERR_SEXP,
- "EXPIRED \"%s\" \"%s\" %s", p->name, p->instance,
- stime(&(p->exp_date)), 0);
- return KERB_ERR_NAME_EXP;
- }
- /* ok is zero */
- return 0;
-}
-
-
-/* Set the key for krb_rd_req so we can check tgt */
-int
-set_tgtkey(r)
- char *r; /* Realm for desired key */
-{
- int n;
- static char lastrealm[REALM_SZ];
- Principal p_st;
- Principal *p = &p_st;
- C_Block key;
-
- if (!strcmp(lastrealm, r))
- return (KSUCCESS);
-
- log("Getting key for %s", r);
-
- n = kerb_get_principal("krbtgt", r, p, 1, &more);
- if (n == 0)
- return (KFAILURE);
-
- /* unseal tgt key from master key */
- bcopy(&p->key_low, key, 4);
- bcopy(&p->key_high, ((long *) key) + 1, 4);
- kdb_encrypt_key(key, key, master_key,
- master_key_schedule, DECRYPT);
- krb_set_key(key, 0);
- strcpy(lastrealm, r);
- return (KSUCCESS);
-}
-
-static void
-hang()
-{
- if (pause_int == -1) {
- klog(L_KRB_PERR, "Kerberos will pause so as not to loop init");
- for (;;)
- pause();
- } else {
- char buf[256];
- sprintf(buf, "Kerberos will wait %ld seconds before dying so as not to loop init", pause_int);
- klog(L_KRB_PERR, buf);
- sleep(pause_int);
- klog(L_KRB_PERR, "Do svedania....\n");
- exit(1);
- }
-}
diff --git a/eBones/usr.sbin/kprop/Makefile b/eBones/usr.sbin/kprop/Makefile
deleted file mode 100644
index c036b1699705..000000000000
--- a/eBones/usr.sbin/kprop/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-# From: @(#)Makefile 5.1 (Berkeley) 6/25/90
-# $Id: Makefile,v 1.5 1995/09/14 04:11:01 gibbs Exp $
-
-PROG= kprop
-DPADD= ${LIBKRB} ${LIBDES}
-LDADD= -L${KRBOBJDIR} -lkrb -L${DESOBJDIR} -ldes
-NOMAN= noman
-
-.include <bsd.prog.mk>
diff --git a/eBones/usr.sbin/kprop/kprop.c b/eBones/usr.sbin/kprop/kprop.c
deleted file mode 100644
index 23bb893d2703..000000000000
--- a/eBones/usr.sbin/kprop/kprop.c
+++ /dev/null
@@ -1,637 +0,0 @@
-/*
- *
- * Copyright 1987 by the Massachusetts Institute of Technology.
- *
- * For copying and distribution information,
- * please see the file <mit-copyright.h>.
- *
- * $Revision: 1.1.1.1 $
- * $Date: 1995/08/03 07:36:18 $
- * $State: Exp $
- * $Source: /usr/cvs/src/eBones/kprop/kprop.c,v $
- * $Author: mark $
- * $Locker: $
- *
- * $Log: kprop.c,v $
- * Revision 1.1.1.1 1995/08/03 07:36:18 mark
- * Import an updated revision of the MIT kprop program for distributing
- * kerberos databases to slave servers.
- *
- * NOTE: This method was abandoned by MIT long ago, this code is close to
- * garbage, but it is slightly more secure than using rdist.
- * There is no documentation available on how to use it, and
- * it should -not- be built by default.
- *
- * Obtained from: MIT Project Athena
- *
- * Revision 1.1.1.1 1995/08/02 22:11:44 pst
- * Import an updated revision of the MIT kprop program for distributing
- * kerberos databases to slave servers.
- *
- * NOTE: This method was abandoned by MIT long ago, this code is close to
- * garbage, but it is slightly more secure than using rdist.
- * There is no documentation available on how to use it, and
- * it should -not- be built by default.
- *
- * Obtained from: MIT Project Athena
- *
- * Revision 4.7 92/11/10 23:01:06 tytso
- * Removed incompatible #include
- *
- * Revision 4.6 91/02/28 22:49:34 probe
- * Fixed header file inclusion
- *
- * Revision 4.5 90/03/20 15:37:57 jon
- * Stop kpropd port number from being bashed (static buffers)
- * Programmer: jtkohl
- * Auditor: jon
- *
- * Revision 4.4 90/01/02 13:42:40 jtkohl
- * add back in accidentally deleted $ in rcsid string
- *
- * Revision 4.3 89/12/30 21:22:27 qjb
- * Added #define MAXHOSTNAMELEN if not already defined for the benifit
- * of Unixes that don't have this variable in sys/param.h.
- *
- * Revision 4.2 89/03/23 10:23:43 jtkohl
- * fix misuse of mkstemp to use mktemp
- * NOENCRYPTION changes
- *
- * Revision 4.1 89/01/24 20:35:17 root
- * name change
- *
- * Revision 4.0 89/01/24 18:44:38 wesommer
- * Original version; programmer: wesommer
- * auditor: jon.
- *
- * Revision 4.4 88/01/08 18:05:21 jon
- * formating changes and rcs header info
- *
- *
- */
-
-#if 0
-#ifndef lint
-static char rcsid_kprop_c[] =
-"$Id: kprop.c,v 1.1.1.1 1995/08/03 07:36:18 mark Exp $";
-#endif lint
-#endif
-
-#include <unistd.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/file.h>
-#include <signal.h>
-#include <sys/stat.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <sys/param.h>
-#include <netdb.h>
-#include <krb.h>
-#include <des.h>
-
-#include "kprop.h"
-
-/* for those broken Unixes without this defined... should be in sys/param.h */
-#ifndef MAXHOSTNAMELEN
-#define MAXHOSTNAMELEN 64
-#endif
-
-static char kprop_version[KPROP_PROT_VERSION_LEN] = KPROP_PROT_VERSION;
-
-int debug = 0;
-
-char my_realm[REALM_SZ];
-int princ_data_size = 3 * sizeof(long) + 3 * sizeof(unsigned char);
-short transfer_mode, net_transfer_mode;
-int force_flag;
-static char ok[] = ".dump_ok";
-
-extern char *krb_get_phost(char *);
-
-struct slave_host {
- u_long net_addr;
- char *name;
- char *instance;
- char *realm;
- int not_time_yet;
- int succeeded;
- struct slave_host *next;
-};
-
-void Death(char *s);
-int get_slaves(struct slave_host **psl, char *file, time_t ok_mtime);
-int prop_to_slaves(struct slave_host *sl, int fd, char *fslv);
-
-int
-main(argc, argv)
- int argc;
- char *argv[];
-{
- int fd, i;
- char *floc, *floc_ok;
- char *fslv;
- struct stat stbuf, stbuf_ok;
- long l_init, l_final;
- char *pc;
- int l_diff;
- static struct slave_host *slave_host_list = NULL;
- struct slave_host *sh;
-
- transfer_mode = KPROP_TRANSFER_PRIVATE;
-
- time(&l_init);
- pc = ctime(&l_init);
- pc[strlen(pc) - 1] = '\0';
- printf("\nStart slave propagation: %s\n", pc);
-
- floc = (char *) NULL;
- fslv = (char *) NULL;
-
- if (krb_get_lrealm(my_realm,1) != KSUCCESS)
- Death ("Getting my kerberos realm. Check krb.conf");
-
- for (i = 1; i < argc; i++)
- switch (argv[i][0]) {
- case '-':
- if (strcmp (argv[i], "-private") == 0)
- transfer_mode = KPROP_TRANSFER_PRIVATE;
-#ifdef not_safe_yet
- else if (strcmp (argv[i], "-safe") == 0)
- transfer_mode = KPROP_TRANSFER_SAFE;
- else if (strcmp (argv[i], "-clear") == 0)
- transfer_mode = KPROP_TRANSFER_CLEAR;
-#endif
- else if (strcmp (argv[i], "-realm") == 0) {
- i++;
- if (i < argc)
- strcpy(my_realm, argv[i]);
- else
- goto usage;
- } else if (strcmp (argv[i], "-force") == 0)
- force_flag++;
- else {
- fprintf (stderr, "kprop: unknown control argument %s.\n",
- argv[i]);
- exit (1);
- }
- break;
- default:
- /* positional arguments are marginal at best ... */
- if (floc == (char *) NULL)
- floc = argv[i];
- else {
- if (fslv == (char *) NULL)
- fslv = argv[i];
- else {
- usage:
- /* already got floc and fslv, what is this? */
- fprintf(stderr,
- "\nUsage: kprop [-force] [-realm realm] [-private|-safe|-clear] data_file slaves_file\n\n");
- exit(1);
- }
- }
- }
- if ((floc == (char *)NULL) || (fslv == (char *)NULL))
- goto usage;
-
- if ((floc_ok = (char *) malloc(strlen(floc) + strlen(ok) + 1))
- == NULL) {
- Death(floc);
- }
- strcat(strcpy(floc_ok, floc), ok);
-
- if ((fd = open(floc, O_RDONLY)) < 0) {
- Death(floc);
- }
- if (flock(fd, LOCK_EX | LOCK_NB)) {
- Death(floc);
- }
- if (stat(floc, &stbuf)) {
- Death(floc);
- }
- if (stat(floc_ok, &stbuf_ok)) {
- Death(floc_ok);
- }
- if (stbuf.st_mtime > stbuf_ok.st_mtime) {
- fprintf(stderr, "kprop: '%s' more recent than '%s'.\n",
- floc, floc_ok);
- exit(1);
- }
- if (!get_slaves(&slave_host_list, fslv, stbuf_ok.st_mtime)) {
- fprintf(stderr,
- "kprop: can't read slave host file '%s'.\n", fslv);
- exit(1);
- }
-#ifdef KPROP_DBG
- {
- struct slave_host *sh;
- int i;
- fprintf(stderr, "\n\n");
- fflush(stderr);
- for (sh = slave_host_list; sh; sh = sh->next) {
- fprintf(stderr, "slave %d: %s, %s", i++, sh->name,
- inet_ntoa(sh->net_addr));
- fflush(stderr);
- }
- }
-#endif /* KPROP_DBG */
-
- if (!prop_to_slaves(slave_host_list, fd, fslv)) {
- fprintf(stderr,
- "kprop: propagation failed.\n");
- exit(1);
- }
- if (flock(fd, LOCK_UN)) {
- Death(floc);
- }
- fprintf(stderr, "\n\n");
- for (sh = slave_host_list; sh; sh = sh->next) {
- fprintf(stderr, "%s:\t\t%s\n", sh->name,
- (sh->not_time_yet? "Not time yet" : (sh->succeeded ? "Succeeded" : "FAILED")));
- }
-
- time(&l_final);
- l_diff = l_final - l_init;
- printf("propagation finished, %d:%02d:%02d elapsed\n",
- l_diff / 3600, (l_diff % 3600) / 60, l_diff % 60);
-
- exit(0);
-}
-
-void
-Death(s)
- char *s;
-{
- fprintf(stderr, "kprop: ");
- perror(s);
- exit(1);
-}
-
-/* The master -> slave protocol looks like this:
- 1) 8 byte version string
- 2) 2 bytes of "transfer mode" (net byte order of course)
- 3) ticket/authentication send by sendauth
- 4) 4 bytes of "block" length (u_long)
- 5) data
-
- 4 and 5 repeat til EOF ...
-*/
-
-int
-prop_to_slaves(sl, fd, fslv)
- struct slave_host *sl;
- int fd;
- char *fslv;
-{
- char buf[KPROP_BUFSIZ];
- char obuf[KPROP_BUFSIZ + 64 /* leave room for private msg overhead */ ];
- struct servent *sp;
- struct sockaddr_in sin, my_sin;
- int i, n, s;
- struct slave_host *cs; /* current slave */
- char path[256], my_host_name[MAXHOSTNAMELEN], *p_my_host_name;
- char kprop_service_instance[INST_SZ];
- char *pc;
- u_long cksum, get_data_checksum();
- u_long length, nlength;
- long kerror;
- KTEXT_ST ticket;
- CREDENTIALS cred;
- MSG_DAT msg_dat;
- static char tkstring[] = "/tmp/kproptktXXXXXX";
-
- Key_schedule session_sched;
-
- (void) mktemp(tkstring);
- krb_set_tkt_string(tkstring);
-
- if ((sp = getservbyname("krb_prop", "tcp")) == 0) {
- fprintf(stderr, "tcp/krb_prop: service unknown.\n");
- exit(1);
- }
-
- bzero(&sin, sizeof sin);
- sin.sin_family = AF_INET;
- sin.sin_port = sp->s_port;
-
- strcpy(path, fslv);
- if ((pc = rindex(path, '/'))) {
- pc += 1;
- } else {
- pc = path;
- }
-
- for (i = 0; i < 5; i++) { /* try each slave five times max */
- for (cs = sl; cs; cs = cs->next) {
- if (!cs->succeeded) {
- if ((s = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
- perror("kprop: socket");
- exit(1);
- }
- bcopy(&cs->net_addr, &sin.sin_addr,
- sizeof cs->net_addr);
-
- if (connect(s, (struct sockaddr *) &sin, sizeof sin) < 0) {
- fprintf(stderr, "%s: ", cs->name);
- perror("connect");
- close(s);
- continue; /*** NEXT SLAVE ***/
- }
-
- /* for krb_mk_{priv, safe} */
- bzero (&my_sin, sizeof my_sin);
- n = sizeof my_sin;
- if (getsockname (s, (struct sockaddr *) &my_sin, &n) != 0) {
- fprintf (stderr, "kprop: can't get socketname.");
- perror ("getsockname");
- close (s);
- continue; /*** NEXT SLAVE ***/
- }
- if (n != sizeof (my_sin)) {
- fprintf (stderr, "kprop: can't get socketname. len");
- close (s);
- continue; /*** NEXT SLAVE ***/
- }
-
- /* Get ticket */
- kerror = krb_mk_req (&ticket, KPROP_SERVICE_NAME,
- cs->instance, cs->realm, (u_long) 0);
- /* if ticket has expired try to get a new one, but
- * first get a TGT ...
- */
- if (kerror != MK_AP_OK) {
- if (gethostname (my_host_name, sizeof(my_host_name)) != 0) {
- fprintf (stderr, "%s:", cs->name);
- perror ("getting my hostname");
- close (s);
- break; /* next one can't work either! */
- }
- /* get canonical kerberos service instance name */
- p_my_host_name = krb_get_phost (my_host_name);
- /* copy it to make sure gethostbyname static doesn't
- * screw us. */
- strcpy (kprop_service_instance, p_my_host_name);
- kerror = krb_get_svc_in_tkt (KPROP_SERVICE_NAME,
-#if 0
- kprop_service_instance,
-#else
- KRB_MASTER,
-#endif
- my_realm,
- TGT_SERVICE_NAME,
- my_realm,
- 96,
- KPROP_SRVTAB);
- if (kerror != INTK_OK) {
- fprintf (stderr,
- "%s: %s. While getting initial ticket\n",
- cs->name, krb_err_txt[kerror]);
- close (s);
- goto punt;
- }
- kerror = krb_mk_req (&ticket, KPROP_SERVICE_NAME,
- cs->instance, cs->realm, (u_long) 0);
- }
- if (kerror != MK_AP_OK) {
- fprintf (stderr, "%s: %s. Calling krb_mk_req.",
- cs->name, krb_err_txt[kerror]);
- close (s);
- continue; /*** NEXT SLAVE ***/
- }
-
- if (write(s, kprop_version, sizeof(kprop_version))
- != sizeof(kprop_version)) {
- fprintf (stderr, "%s: ", cs->name);
- perror ("write (version) error");
- close (s);
- continue; /*** NEXT SLAVE ***/
- }
-
- net_transfer_mode = htons (transfer_mode);
- if (write(s, &net_transfer_mode, sizeof(net_transfer_mode))
- != sizeof(net_transfer_mode)) {
- fprintf (stderr, "%s: ", cs->name);
- perror ("write (transfer_mode) error");
- close (s);
- continue; /*** NEXT SLAVE ***/
- }
-
- kerror = krb_get_cred (KPROP_SERVICE_NAME, cs->instance,
- cs->realm, &cred);
- if (kerror != KSUCCESS) {
- fprintf (stderr, "%s: %s. Getting session key.",
- cs->name, krb_err_txt[kerror]);
- close (s);
- continue; /*** NEXT SLAVE ***/
- }
-#ifdef NOENCRYPTION
- bzero((char *)session_sched, sizeof(session_sched));
-#else
- if (key_sched ((C_Block *)cred.session, session_sched)) {
- fprintf (stderr, "%s: can't make key schedule.",
- cs->name);
- close (s);
- continue; /*** NEXT SLAVE ***/
- }
-#endif
- /* SAFE (quad_cksum) and CLEAR are just not good enough */
- cksum = 0;
-#ifdef not_working_yet
- if (transfer_mode != KPROP_TRANSFER_PRIVATE) {
- cksum = get_data_checksum(fd, session_sched);
- lseek(fd, 0L, 0);
- }
- else
-#endif
- {
- struct stat st;
- fstat (fd, &st);
- cksum = st.st_size;
- }
- kerror = krb_sendauth(KOPT_DO_MUTUAL,
- s,
- &ticket,
- KPROP_SERVICE_NAME,
- cs->instance,
- cs->realm,
- cksum,
- &msg_dat,
- &cred,
- session_sched,
- &my_sin,
- &sin,
- KPROP_PROT_VERSION);
- if (kerror != KSUCCESS) {
- fprintf (stderr, "%s: %s. Calling krb_sendauth.",
- cs->name, krb_err_txt[kerror]);
- close (s);
- continue; /*** NEXT SLAVE ***/
- }
-
- while ((n = read(fd, buf, sizeof buf))) {
- if (n < 0) {
- perror("input file read error");
- exit(1);
- }
- switch (transfer_mode) {
- case KPROP_TRANSFER_PRIVATE:
- case KPROP_TRANSFER_SAFE:
- if (transfer_mode == KPROP_TRANSFER_PRIVATE)
- length = krb_mk_priv (buf, obuf, n,
- session_sched, cred.session,
- &my_sin, &sin);
- else
- length = krb_mk_safe (buf, obuf, n,
- (C_Block *)cred.session,
- &my_sin, &sin);
- if (length == -1) {
- fprintf (stderr, "%s: %s failed.",
- cs->name,
- (transfer_mode == KPROP_TRANSFER_PRIVATE)
- ? "krb_rd_priv" : "krb_rd_safe");
- close (s);
- continue; /*** NEXT SLAVE ***/
- }
- nlength = htonl(length);
- if (write(s, &nlength, sizeof nlength)
- != sizeof nlength) {
- fprintf (stderr, "%s: ", cs->name);
- perror ("write error");
- close (s);
- continue; /*** NEXT SLAVE ***/
- }
- if (write(s, obuf, length) != length) {
- fprintf(stderr, "%s: ", cs->name);
- perror("write error");
- close(s);
- continue; /*** NEXT SLAVE ***/
- }
- break;
- case KPROP_TRANSFER_CLEAR:
- if (write(s, buf, n) != n) {
- fprintf(stderr, "%s: ", cs->name);
- perror("write error");
- close(s);
- continue; /*** NEXT SLAVE ***/
- }
- break;
- }
- }
- close(s);
- cs->succeeded = 1;
- fprintf(stderr, "%s: success.\n", cs->name);
- strcat(strcpy(pc, cs->name), "-last-prop");
- close(creat(path, 0600));
- }
- }
- }
-punt:
-
- dest_tkt();
- for (cs = sl; cs; cs = cs->next) {
- if (!cs->succeeded)
- return (0); /* didn't get this slave */
- }
- return (1);
-}
-
-int
-get_slaves(psl, file, ok_mtime)
- struct slave_host **psl;
- char *file;
- time_t ok_mtime;
-{
- FILE *fin;
- char namebuf[128], *inst;
- char *pc;
- struct hostent *host;
- struct slave_host **th;
- char path[256];
- char *ppath;
- struct stat stbuf;
-
- if ((fin = fopen(file, "r")) == NULL) {
- fprintf(stderr, "Can't open slave host file, '%s'.\n", file);
- exit(-1);
- }
- strcpy(path, file);
- if ((ppath = rindex(path, '/'))) {
- ppath += 1;
- } else {
- ppath = path;
- }
- for (th = psl; fgets(namebuf, sizeof namebuf, fin); th = &(*th)->next) {
- if ((pc = index(namebuf, '\n'))) {
- *pc = '\0';
- } else {
- fprintf(stderr, "Host name too long (>= %d chars) in '%s'.\n",
- sizeof namebuf, file);
- exit(-1);
- }
- host = gethostbyname(namebuf);
- if (host == NULL) {
- fprintf(stderr, "Unknown host '%s' in '%s'.\n", namebuf, file);
- exit(-1);
- }
- (*th) = (struct slave_host *) malloc(sizeof(struct slave_host));
- if (!*th) {
- fprintf(stderr, "No memory reading host list from '%s'.\n",
- file);
- exit(-1);
- }
- (*th)->name = malloc(strlen(namebuf) + 1);
- if (!(*th)->name) {
- fprintf(stderr, "No memory reading host list from '%s'.\n",
- file);
- exit(-1);
- }
- /* get kerberos cannonical instance name */
- strcpy((*th)->name, namebuf);
- inst = krb_get_phost ((*th)->name);
- (*th)->instance = malloc(strlen(inst) + 1);
- if (!(*th)->instance) {
- fprintf(stderr, "No memory reading host list from '%s'.\n",
- file);
- exit(-1);
- }
- strcpy((*th)->instance, inst);
- /* what a concept, slave servers in different realms! */
- (*th)->realm = my_realm;
- (*th)->net_addr = *(u_long *) host->h_addr;
- (*th)->succeeded = 0;
- (*th)->next = NULL;
- strcat(strcpy(ppath, (*th)->name), "-last-prop");
- if (!force_flag && !stat(path, &stbuf) && stbuf.st_mtime > ok_mtime) {
- (*th)->not_time_yet = 1;
- (*th)->succeeded = 1; /* no change since last success */
- }
- }
- fclose(fin);
- return (1);
-}
-
-#ifdef doesnt_work_yet
-u_long get_data_checksum(fd, key_sched)
- int fd;
- Key_schedule key_sched;
-{
- unsigned long cksum = 0;
- unsigned long cbc_cksum();
- int n;
- char buf[BUFSIZ];
- long obuf[2];
-
- while (n = read(fd, buf, sizeof buf)) {
- if (n < 0) {
- fprintf(stderr, "Input data file read error: ");
- perror("read");
- exit(1);
- }
- cksum = cbc_cksum(buf, obuf, n, key_sched, key_sched);
- }
- return cksum;
-}
-#endif
diff --git a/eBones/usr.sbin/kprop/kprop.h b/eBones/usr.sbin/kprop/kprop.h
deleted file mode 100644
index 5197276fc0d7..000000000000
--- a/eBones/usr.sbin/kprop/kprop.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright 1987 by the Massachusetts Institute of Technology.
- *
- * For copying and distribution information,
- * please see the file <mit-copyright.h>.
- *
- * $Revision: 1.1.1.1 $
- * $Date: 1995/08/03 07:36:18 $
- * $State: Exp $
- * $Source: /usr/cvs/src/eBones/kprop/kprop.h,v $
- * $Author: mark $
- * $Locker: $
- *
- * $Log: kprop.h,v $
- * Revision 1.1.1.1 1995/08/03 07:36:18 mark
- * Import an updated revision of the MIT kprop program for distributing
- * kerberos databases to slave servers.
- *
- * NOTE: This method was abandoned by MIT long ago, this code is close to
- * garbage, but it is slightly more secure than using rdist.
- * There is no documentation available on how to use it, and
- * it should -not- be built by default.
- *
- * Obtained from: MIT Project Athena
- *
- * Revision 1.1.1.1 1995/08/02 22:11:44 pst
- * Import an updated revision of the MIT kprop program for distributing
- * kerberos databases to slave servers.
- *
- * NOTE: This method was abandoned by MIT long ago, this code is close to
- * garbage, but it is slightly more secure than using rdist.
- * There is no documentation available on how to use it, and
- * it should -not- be built by default.
- *
- * Obtained from: MIT Project Athena
- *
- * Revision 4.1 92/10/23 15:45:13 tytso
- * Change the location of KPROP_KDBUTIL to be /kerberos/bin/kdb_util.
- *
- * Revision 4.0 89/01/24 18:44:46 wesommer
- * Original version; programmer: wesommer
- * auditor: jon
- *
- */
-
-#define KPROP_SERVICE_NAME "rcmd"
-#define KPROP_SRVTAB "/etc/kerberosIV/srvtab"
-#define TGT_SERVICE_NAME "krbtgt"
-#define KPROP_PROT_VERSION_LEN 8
-#define KPROP_PROT_VERSION "kprop01"
-#define KPROP_TRANSFER_PRIVATE 1
-#define KPROP_TRANSFER_SAFE 2
-#define KPROP_TRANSFER_CLEAR 3
-#define KPROP_BUFSIZ 32768
-#define KPROP_KDB_UTIL "/usr/sbin/kdb_util"
diff --git a/eBones/usr.sbin/ksrvutil/Makefile b/eBones/usr.sbin/ksrvutil/Makefile
deleted file mode 100644
index f421aa9d2aed..000000000000
--- a/eBones/usr.sbin/ksrvutil/Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-# $Id: Makefile,v 1.5 1995/09/14 04:11:06 gibbs Exp $
-
-PROG= ksrvutil
-SRCS= ksrvutil.c
-CFLAGS+= -I${.CURDIR}/../../lib/libkadm
-DPADD= ${LIBKRB} ${LIBDES}
-LDADD+= -L${KADMOBJDIR} -lkadm -L${KRBOBJDIR} -lkrb \
- -L${DESOBJDIR} -ldes -lcom_err
-MAN8= ksrvutil.8
-
-.include <bsd.prog.mk>
diff --git a/eBones/usr.sbin/ksrvutil/ksrvutil.8 b/eBones/usr.sbin/ksrvutil/ksrvutil.8
deleted file mode 100644
index a7fed8290071..000000000000
--- a/eBones/usr.sbin/ksrvutil/ksrvutil.8
+++ /dev/null
@@ -1,93 +0,0 @@
-.\" from: /mit/kerberos/src/man/RCS/ksrvutil.8,v 4.0 89/07/27 18:35:33 jtkohl Exp $
-.\" $Id: ksrvutil.8,v 1.2 1994/07/19 19:27:53 g89r4222 Exp $
-.\" Copyright 1989 by the Massachusetts Institute of Technology.
-.\"
-.\" For copying and distribution information,
-.\" please see the file <Copyright.MIT>.
-.\"
-.TH KSRVUTIL 8 "Kerberos Version 4.0" "MIT Project Athena"
-.SH NAME
-ksrvutil \- host kerberos keyfile (srvtab) manipulation utility
-.SH SYNOPSIS
-ksrvutil
-.B operation
-[
-.B \-k
-] [
-.B \-i
-] [
-.B \-f filename
-]
-.SH DESCRIPTION
-.I ksrvutil
-allows a system manager to list or change keys currently in his
-keyfile or to add new keys to the keyfile.
-.PP
-
-Operation must be one of the following:
-.TP 10n
-.I list
-lists the keys in a keyfile showing version number and principal
-name. If the \-k option is given, keys will also be shown.
-.TP 10n
-.I change
-changes all the keys in the keyfile by using the regular admin
-protocol. If the \-i flag is given,
-.I ksrvutil
-will prompt for yes or no before changing each key. If the \-k
-option is used, the old and new keys will be displayed.
-.TP 10n
-.I add
-allows the user to add a key.
-.I add
-prompts for name, instance, realm, and key version number, asks
-for confirmation, and then asks for a password.
-.I ksrvutil
-then converts the password to a key and appends the keyfile with
-the new information. If the \-k option is used, the key is
-displayed.
-
-.PP
-In all cases, the default file used is KEY_FILE as defined in
-krb.h unless this is overridden by the \-f option.
-
-.PP
-A good use for
-.I ksrvutil
-would be for adding keys to a keyfile. A system manager could
-ask a kerberos administrator to create a new service key with
-.IR kadmin (8)
-and could supply an initial password. Then, he could use
-.I ksrvutil
-to add the key to the keyfile and then to change the key so that
-it will be random and unknown to either the system manager or
-the kerberos administrator.
-
-.I ksrvutil
-always makes a backup copy of the keyfile before making any
-changes.
-
-.SH DIAGNOSTICS
-If
-.I ksrvutil
-should exit on an error condition at any time during a change or
-add, a copy of the
-original keyfile can be found in
-.IR filename .old
-where
-.I filename
-is the name of the keyfile, and a copy of the file with all new
-keys changed or added so far can be found in
-.IR filename .work.
-The original keyfile is left unmodified until the program exits
-at which point it is removed and replaced it with the workfile.
-Appending the workfile to the backup copy and replacing the
-keyfile with the result should always give a usable keyfile,
-although the resulting keyfile will have some out of date keys
-in it.
-
-.SH SEE ALSO
-kadmin(8), ksrvtgt(1)
-
-.SH AUTHOR
-Emanuel Jay Berkenbilt, MIT Project Athena
diff --git a/eBones/usr.sbin/ksrvutil/ksrvutil.c b/eBones/usr.sbin/ksrvutil/ksrvutil.c
deleted file mode 100644
index 1062ea5cc938..000000000000
--- a/eBones/usr.sbin/ksrvutil/ksrvutil.c
+++ /dev/null
@@ -1,582 +0,0 @@
-/*
- * Copyright 1989 by the Massachusetts Institute of Technology.
- *
- * For copying and distribution information, please see the file
- * Copyright.MIT.
- *
- * list and update contents of srvtab files
- */
-
-#if 0
-#ifndef lint
-static char rcsid_ksrvutil_c[] =
-"BonesHeader: /afs/athena.mit.edu/astaff/project/kerberos/src/kadmin/RCS/ksrvutil.c,v 4.1 89/09/26 09:33:49 jtkohl Exp ";
-static const char rcsid[] =
- "$Id: ksrvutil.c,v 1.1 1995/07/18 16:40:11 mark Exp $";
-#endif lint
-#endif
-
-/*
- * ksrvutil
- * list and update the contents of srvtab files
- */
-
-#ifndef FALSE
-#define FALSE 0
-#endif
-
-#ifndef TRUE
-#define TRUE 1
-#endif
-
-#include <unistd.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/file.h>
-#include <sys/param.h>
-#include <stdio.h>
-#include <sys/stat.h>
-#include <errno.h>
-#include <kadm.h>
-#include <err.h>
-#include <com_err.h>
-
-#ifdef NOENCRYPTION
-#define read_long_pw_string placebo_read_pw_string
-#else /* NOENCRYPTION */
-#define read_long_pw_string des_read_pw_string
-#endif /* NOENCRYPTION */
-int read_long_pw_string();
-
-#define SRVTAB_MODE 0600 /* rw------- */
-#define PAD " "
-#define VNO_HEADER "Version"
-#define VNO_FORMAT "%4d "
-#define KEY_HEADER " Key " /* 17 characters long */
-#define PRINC_HEADER " Principal\n"
-#define PRINC_FORMAT "%s"
-
-void usage(void);
-void leave(char *str, int x);
-void get_key_from_password(des_cblock key);
-void print_name(char *name, char *inst, char *realm);
-void print_key(des_cblock key);
-unsigned short get_mode(char *filename);
-int get_svc_new_key(des_cblock new_key, char *sname, char *sinst,
- char *srealm, char *keyfile);
-
-void
-copy_keyfile(progname, keyfile, backup_keyfile)
- char *progname;
- char *keyfile;
- char *backup_keyfile;
-{
- int keyfile_fd;
- int backup_keyfile_fd;
- int keyfile_mode;
- char buf[BUFSIZ]; /* for copying keyfiles */
- int rcount; /* for copying keyfiles */
- int try_again;
-
- bzero((char *)buf, sizeof(buf));
-
- do {
- try_again = FALSE;
- if ((keyfile_fd = open(keyfile, O_RDONLY, 0)) < 0) {
- if (errno != ENOENT) {
- err(1, "unable to read %s", keyfile);
- }
- else {
- try_again = TRUE;
- if ((keyfile_fd =
- open(keyfile,
- O_WRONLY | O_TRUNC | O_CREAT, SRVTAB_MODE)) < 0) {
- err(1, "unable to create %s", keyfile);
- }
- else
- if (close(keyfile_fd) < 0) {
- err(1, "failure closing %s", keyfile);
- }
- }
- }
- } while(try_again);
-
- keyfile_mode = get_mode(keyfile);
-
- if ((backup_keyfile_fd =
- open(backup_keyfile, O_WRONLY | O_TRUNC | O_CREAT,
- keyfile_mode)) < 0) {
- err(1, "unable to write %s", backup_keyfile);
- }
- do {
- if ((rcount = read(keyfile_fd, (char *)buf, sizeof(buf))) < 0) {
- err(1, "error reading %s", keyfile);
- }
- if (rcount && (write(backup_keyfile_fd, buf, rcount) != rcount)) {
- err(1, "error writing %s", backup_keyfile);
- }
- } while (rcount);
- if (close(backup_keyfile_fd) < 0) {
- err(1, "error closing %s", backup_keyfile);
- }
- if (close(keyfile_fd) < 0) {
- err(1, "error closing %s", keyfile);
- }
-}
-
-void
-safe_read_stdin(prompt, buf, size)
- char *prompt;
- char *buf;
- int size;
-{
- printf(prompt);
- fflush(stdout);
- bzero(buf, size);
- if (read(0, buf, size - 1) < 0) {
- warn("failure reading from stdin");
- leave((char *)NULL, 1);
- }
- fflush(stdin);
- buf[strlen(buf)-1] = 0;
-}
-
-
-void
-safe_write(progname, filename, fd, buf, len)
- char *progname;
- char *filename;
- int fd;
- char *buf;
- int len;
-{
- if (write(fd, buf, len) != len) {
- warn("failure writing %s", filename);
- close(fd);
- leave("In progress srvtab in this file.", 1);
- }
-}
-
-int
-yn(string)
- char *string;
-{
- char ynbuf[5];
-
- printf("%s (y,n) [y] ", string);
- for (;;) {
- safe_read_stdin("", ynbuf, sizeof(ynbuf));
-
- if ((ynbuf[0] == 'n') || (ynbuf[0] == 'N'))
- return(0);
- else if ((ynbuf[0] == 'y') || (ynbuf[0] == 'Y') || (ynbuf[0] == 0))
- return(1);
- else {
- printf("Please enter 'y' or 'n': ");
- fflush(stdout);
- }
- }
-}
-
-void
-append_srvtab(progname, filename, fd, sname, sinst,
- srealm, key_vno, key)
- char *progname;
- char *filename;
- int fd;
- char *sname;
- char *sinst;
- char *srealm;
- unsigned char key_vno;
- des_cblock key;
-{
- /* Add one to append null */
- safe_write(progname, filename, fd, sname, strlen(sname) + 1);
- safe_write(progname, filename, fd, sinst, strlen(sinst) + 1);
- safe_write(progname, filename, fd, srealm, strlen(srealm) + 1);
- safe_write(progname, filename, fd, (char *)&key_vno, 1);
- safe_write(progname, filename, fd, (char *)key, sizeof(des_cblock));
- fsync(fd);
-}
-
-unsigned short
-get_mode(filename)
- char *filename;
-{
- struct stat statbuf;
- unsigned short mode;
-
- bzero((char *)&statbuf, sizeof(statbuf));
-
- if (stat(filename, &statbuf) < 0)
- mode = SRVTAB_MODE;
- else
- mode = statbuf.st_mode;
-
- return(mode);
-}
-
-int
-main(argc,argv)
- int argc;
- char *argv[];
-{
- char sname[ANAME_SZ]; /* name of service */
- char sinst[INST_SZ]; /* instance of service */
- char srealm[REALM_SZ]; /* realm of service */
- unsigned char key_vno; /* key version number */
- int status; /* general purpose error status */
- des_cblock new_key;
- des_cblock old_key;
- char change_tkt[MAXPATHLEN]; /* Ticket to use for key change */
- char keyfile[MAXPATHLEN]; /* Original keyfile */
- char work_keyfile[MAXPATHLEN]; /* Working copy of keyfile */
- char backup_keyfile[MAXPATHLEN]; /* Backup copy of keyfile */
- unsigned short keyfile_mode; /* Protections on keyfile */
- int work_keyfile_fd = -1; /* Initialize so that */
- int backup_keyfile_fd = -1; /* compiler doesn't complain */
- char local_realm[REALM_SZ]; /* local kerberos realm */
- int i;
- int interactive = FALSE;
- int list = FALSE;
- int change = FALSE;
- int add = FALSE;
- int key = FALSE; /* do we show keys? */
- int arg_entered = FALSE;
- int change_this_key = FALSE;
- char databuf[BUFSIZ];
- int first_printed = FALSE; /* have we printed the first item? */
-
- bzero((char *)sname, sizeof(sname));
- bzero((char *)sinst, sizeof(sinst));
- bzero((char *)srealm, sizeof(srealm));
-
- bzero((char *)change_tkt, sizeof(change_tkt));
- bzero((char *)keyfile, sizeof(keyfile));
- bzero((char *)work_keyfile, sizeof(work_keyfile));
- bzero((char *)backup_keyfile, sizeof(backup_keyfile));
- bzero((char *)local_realm, sizeof(local_realm));
-
- sprintf(change_tkt, "/tmp/tkt_ksrvutil.%d", getpid());
- krb_set_tkt_string(change_tkt);
-
- /* This is used only as a default for adding keys */
- if (krb_get_lrealm(local_realm, 1) != KSUCCESS)
- strcpy(local_realm, KRB_REALM);
-
- for (i = 1; i < argc; i++) {
- if (strcmp(argv[i], "-i") == 0)
- interactive++;
- else if (strcmp(argv[i], "-k") == 0)
- key++;
- else if (strcmp(argv[i], "list") == 0) {
- if (arg_entered)
- usage();
- else {
- arg_entered++;
- list++;
- }
- }
- else if (strcmp(argv[i], "change") == 0) {
- if (arg_entered)
- usage();
- else {
- arg_entered++;
- change++;
- }
- }
- else if (strcmp(argv[i], "add") == 0) {
- if (arg_entered)
- usage();
- else {
- arg_entered++;
- add++;
- }
- }
- else if (strcmp(argv[i], "-f") == 0) {
- if (++i == argc)
- usage();
- else
- strcpy(keyfile, argv[i]);
- }
- else
- usage();
- }
-
- if (!arg_entered)
- usage();
-
- if (!keyfile[0])
- strcpy(keyfile, KEYFILE);
-
- strcpy(work_keyfile, keyfile);
- strcpy(backup_keyfile, keyfile);
-
- if (change || add) {
- strcat(work_keyfile, ".work");
- strcat(backup_keyfile, ".old");
-
- copy_keyfile(argv[0], keyfile, backup_keyfile);
- }
-
- if (add)
- copy_keyfile(argv[0], backup_keyfile, work_keyfile);
-
- keyfile_mode = get_mode(keyfile);
-
- if (change || list) {
- if ((backup_keyfile_fd = open(backup_keyfile, O_RDONLY, 0)) < 0) {
- err(1, "unable to read %s", backup_keyfile);
- }
- }
-
- if (change) {
- if ((work_keyfile_fd =
- open(work_keyfile, O_WRONLY | O_CREAT | O_TRUNC,
- SRVTAB_MODE)) < 0) {
- err(1, "unable to write %s", work_keyfile);
- }
- }
- else if (add) {
- if ((work_keyfile_fd =
- open(work_keyfile, O_APPEND | O_WRONLY, SRVTAB_MODE)) < 0) {
- err(1, "unable to append to %s", work_keyfile);
- }
- }
-
- if (change || list) {
- while ((getst(backup_keyfile_fd, sname, SNAME_SZ) > 0) &&
- (getst(backup_keyfile_fd, sinst, INST_SZ) > 0) &&
- (getst(backup_keyfile_fd, srealm, REALM_SZ) > 0) &&
- (read(backup_keyfile_fd, &key_vno, 1) > 0) &&
- (read(backup_keyfile_fd,(char *)old_key,sizeof(old_key)) > 0)) {
- if (list) {
- if (!first_printed) {
- printf(VNO_HEADER);
- printf(PAD);
- if (key) {
- printf(KEY_HEADER);
- printf(PAD);
- }
- printf(PRINC_HEADER);
- first_printed = 1;
- }
- printf(VNO_FORMAT, key_vno);
- printf(PAD);
- if (key) {
- print_key(old_key);
- printf(PAD);
- }
- print_name(sname, sinst, srealm);
- printf("\n");
- }
- else if (change) {
- printf("\nPrincipal: ");
- print_name(sname, sinst, srealm);
- printf("; version %d\n", key_vno);
- if (interactive)
- change_this_key = yn("Change this key?");
- else if (change)
- change_this_key = 1;
- else
- change_this_key = 0;
-
- if (change_this_key)
- printf("Changing to version %d.\n", key_vno + 1);
- else if (change)
- printf("Not changing this key.\n");
-
- if (change_this_key) {
- /*
- * Pick a new key and determine whether or not
- * it is safe to change
- */
- if ((status =
- get_svc_new_key(new_key, sname, sinst,
- srealm, keyfile)) == KADM_SUCCESS)
- key_vno++;
- else {
- bcopy(old_key, new_key, sizeof(new_key));
- com_err(argv[0], status, ": key NOT changed");
- change_this_key = FALSE;
- }
- }
- else
- bcopy(old_key, new_key, sizeof(new_key));
- append_srvtab(argv[0], work_keyfile, work_keyfile_fd,
- sname, sinst, srealm, key_vno, new_key);
- if (key && change_this_key) {
- printf("Old key: ");
- print_key(old_key);
- printf("; new key: ");
- print_key(new_key);
- printf("\n");
- }
- if (change_this_key) {
- if ((status = kadm_change_pw(new_key)) == KADM_SUCCESS) {
- printf("Key changed.\n");
- dest_tkt();
- }
- else {
- com_err(argv[0], status,
- " attempting to change password.");
- dest_tkt();
- /* XXX This knows the format of a keyfile */
- if (lseek(work_keyfile_fd, -9, L_INCR) >= 0) {
- key_vno--;
- safe_write(argv[0], work_keyfile,
- work_keyfile_fd, (char *)&key_vno, 1);
- safe_write(argv[0], work_keyfile, work_keyfile_fd,
- (char *)old_key, sizeof(des_cblock));
- fsync(work_keyfile_fd);
- fprintf(stderr,"Key NOT changed.\n");
- }
- else {
- warn("unable to revert keyfile");
- leave("", 1);
- }
- }
- }
- }
- bzero((char *)old_key, sizeof(des_cblock));
- bzero((char *)new_key, sizeof(des_cblock));
- }
- }
- else if (add) {
- do {
- do {
- safe_read_stdin("Name: ", databuf, sizeof(databuf));
- strncpy(sname, databuf, sizeof(sname) - 1);
- safe_read_stdin("Instance: ", databuf, sizeof(databuf));
- strncpy(sinst, databuf, sizeof(sinst) - 1);
- safe_read_stdin("Realm: ", databuf, sizeof(databuf));
- strncpy(srealm, databuf, sizeof(srealm) - 1);
- safe_read_stdin("Version number: ", databuf, sizeof(databuf));
- key_vno = atoi(databuf);
- if (!srealm[0])
- strcpy(srealm, local_realm);
- printf("New principal: ");
- print_name(sname, sinst, srealm);
- printf("; version %d\n", key_vno);
- } while (!yn("Is this correct?"));
- get_key_from_password(new_key);
- if (key) {
- printf("Key: ");
- print_key(new_key);
- printf("\n");
- }
- append_srvtab(argv[0], work_keyfile, work_keyfile_fd,
- sname, sinst, srealm, key_vno, new_key);
- printf("Key successfully added.\n");
- } while (yn("Would you like to add another key?"));
- }
-
- if (change || list)
- if (close(backup_keyfile_fd) < 0) {
- warn("failure closing %s, continuing", backup_keyfile);
- }
-
- if (change || add) {
- if (close(work_keyfile_fd) < 0) {
- err(1, "failure closing %s", work_keyfile);
- }
- if (rename(work_keyfile, keyfile) < 0) {
- err(1, "failure renaming %s to %s", work_keyfile, keyfile);
- }
- chmod(backup_keyfile, keyfile_mode);
- chmod(keyfile, keyfile_mode);
- printf("Old keyfile in %s.\n", backup_keyfile);
- }
-
- exit(0);
-}
-
-void
-print_key(key)
- des_cblock key;
-{
- int i;
-
- for (i = 0; i < 4; i++)
- printf("%02x", key[i]);
- printf(" ");
- for (i = 4; i < 8; i++)
- printf("%02x", key[i]);
-}
-
-void
-print_name(name, inst, realm)
- char *name;
- char *inst;
- char *realm;
-{
- printf("%s%s%s%s%s", name, inst[0] ? "." : "", inst,
- realm[0] ? "@" : "", realm);
-}
-
-int
-get_svc_new_key(new_key, sname, sinst, srealm, keyfile)
- des_cblock new_key;
- char *sname;
- char *sinst;
- char *srealm;
- char *keyfile;
-{
- int status = KADM_SUCCESS;
-
- if (((status = krb_get_svc_in_tkt(sname, sinst, srealm, PWSERV_NAME,
- KADM_SINST, 1, keyfile)) == KSUCCESS) &&
- ((status = kadm_init_link("changepw", KRB_MASTER, srealm)) ==
- KADM_SUCCESS)) {
-#ifdef NOENCRYPTION
- bzero((char *) new_key, sizeof(des_cblock));
- new_key[0] = (unsigned char) 1;
-#else /* NOENCRYPTION */
- des_random_key(new_key);
-#endif /* NOENCRYPTION */
- return(KADM_SUCCESS);
- }
-
- return(status);
-}
-
-void
-get_key_from_password(key)
- des_cblock key;
-{
- char password[MAX_KPW_LEN]; /* storage for the password */
-
- if (read_long_pw_string(password, sizeof(password)-1, "Password: ", 1))
- leave("Error reading password.", 1);
-
-#ifdef NOENCRYPTION
- bzero((char *) key, sizeof(des_cblock));
- key[0] = (unsigned char) 1;
-#else /* NOENCRYPTION */
- des_string_to_key(password, (des_cblock *)key);
-#endif /* NOENCRYPTION */
- bzero((char *)password, sizeof(password));
-}
-
-void
-usage()
-{
- fprintf(stderr, "Usage: ksrvutil [-f keyfile] [-i] [-k] ");
- fprintf(stderr, "{list | change | add}\n");
- fprintf(stderr, " -i causes the program to ask for ");
- fprintf(stderr, "confirmation before changing keys.\n");
- fprintf(stderr, " -k causes the key to printed for list or ");
- fprintf(stderr, "change.\n");
- exit(1);
-}
-
-void
-leave(str,x)
-char *str;
-int x;
-{
- if (str)
- fprintf(stderr, "%s\n", str);
- dest_tkt();
- exit(x);
-}
diff --git a/eBones/usr.sbin/kstash/Makefile b/eBones/usr.sbin/kstash/Makefile
deleted file mode 100644
index 5043cf3bdb82..000000000000
--- a/eBones/usr.sbin/kstash/Makefile
+++ /dev/null
@@ -1,10 +0,0 @@
-# From: @(#)Makefile 5.2 (Berkeley) 3/5/91
-# $Id: Makefile,v 1.6 1995/09/14 04:11:14 gibbs Exp $
-
-PROG= kstash
-CFLAGS+=-DKERBEROS -DDEBUG
-DPADD= ${LIBKDB} ${LIBKRB} ${LIBDES}
-LDADD= -L${KDBOBJDIR} -lkdb -L${KRBOBJDIR} -lkrb -L${DESOBJDIR} -ldes
-MAN8= kstash.8
-
-.include <bsd.prog.mk>
diff --git a/eBones/usr.sbin/kstash/kstash.8 b/eBones/usr.sbin/kstash/kstash.8
deleted file mode 100644
index ac8c57b302cf..000000000000
--- a/eBones/usr.sbin/kstash/kstash.8
+++ /dev/null
@@ -1,44 +0,0 @@
-.\" from: kstash.8,v 4.1 89/01/23 11:11:39 jtkohl Exp $
-.\" $Id: kstash.8,v 1.1.1.1 1994/09/30 14:50:07 csgr Exp $
-.\" Copyright 1989 by the Massachusetts Institute of Technology.
-.\"
-.\" For copying and distribution information,
-.\" please see the file <Copyright.MIT>.
-.\"
-.TH KSTASH 8 "Kerberos Version 4.0" "MIT Project Athena"
-.SH NAME
-kstash \- stash Kerberos key distribution center database master key
-.SH SYNOPSIS
-kstash
-.SH DESCRIPTION
-.I kstash
-saves the Kerberos key distribution center (KDC) database master key in
-the master key cache file.
-.PP
-The user is prompted to enter the key, to verify the authenticity of the
-key and the authorization to store the key in the file.
-.SH DIAGNOSTICS
-.TP 20n
-"verify_master_key: Invalid master key, does not match database."
-The master key string entered was incorrect.
-.TP
-"kstash: Unable to open master key file"
-The attempt to open the cache file for writing failed (probably due to a
-system or access permission error).
-.TP
-"kstash: Write I/O error on master key file"
-The
-.BR write (2)
-system call returned an error while
-.I kstash
-was attempting to write the key to the file.
-.SH FILES
-.TP 20n
-/etc/kerberosIV/principal.db
-DBM file containing database
-.TP
-/etc/kerberosIV/principal.ok
-Semaphore indicating that the DBM database is not being modified.
-.TP
-/etc/kerberosIV/master_key
-Master key cache file.
diff --git a/eBones/usr.sbin/kstash/kstash.c b/eBones/usr.sbin/kstash/kstash.c
deleted file mode 100644
index ce26a1db34e0..000000000000
--- a/eBones/usr.sbin/kstash/kstash.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology
- * For copying and distribution information, please see the file
- * <Copyright.MIT>.
- *
- * from: kstash.c,v 4.0 89/01/23 09:45:43 jtkohl Exp $
- * $Id: kstash.c,v 1.3 1995/07/18 16:40:16 mark Exp $
- */
-
-#if 0
-#ifndef lint
-static char rcsid[] =
-"$Id: kstash.c,v 1.3 1995/07/18 16:40:16 mark Exp $";
-#endif lint
-#endif
-
-#include <unistd.h>
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netdb.h>
-#include <signal.h>
-#include <sgtty.h>
-#include <sys/ioctl.h>
-#include <sys/time.h>
-#include <sys/file.h>
-
-#include <krb.h>
-#include <des.h>
-#include <klog.h>
-#include <prot.h>
-#include <krb_db.h>
-#include <kdc.h>
-
-/* change this later, but krblib_dbm needs it for now */
-char *progname;
-
-static C_Block master_key;
-static Key_schedule master_key_schedule;
-int debug;
-static int kfile;
-static void clear_secrets();
-
-int
-main(argc, argv)
- int argc;
- char **argv;
-{
- long n;
- if ((n = kerb_init())) {
- fprintf(stderr, "Kerberos db and cache init failed = %ld\n", n);
- exit(1);
- }
-
- if (kdb_get_master_key (TRUE, master_key, master_key_schedule) != 0) {
- fprintf (stderr, "%s: Couldn't read master key.\n", argv[0]);
- fflush (stderr);
- clear_secrets();
- exit (-1);
- }
-
- if (kdb_verify_master_key (master_key, master_key_schedule, stderr) < 0) {
- clear_secrets();
- exit (-1);
- }
-
- kfile = open(MKEYFILE, O_TRUNC | O_RDWR | O_CREAT, 0600);
- if (kfile < 0) {
- clear_secrets();
- fprintf(stderr, "\n\07\07%s: Unable to open master key file\n",
- argv[0]);
- exit(1);
- }
- if (write(kfile, (char *) master_key, 8) < 0) {
- clear_secrets();
- fprintf(stderr, "\n%s: Write I/O error on master key file\n",
- argv[0]);
- exit(1);
- }
- (void) close(kfile);
- clear_secrets();
- return(0);
-}
-
-static void
-clear_secrets()
-{
- bzero(master_key_schedule, sizeof(master_key_schedule));
- bzero(master_key, sizeof(master_key));
-}
diff --git a/eBones/usr.sbin/make_keypair/Makefile b/eBones/usr.sbin/make_keypair/Makefile
deleted file mode 100644
index 4edf76e649f1..000000000000
--- a/eBones/usr.sbin/make_keypair/Makefile
+++ /dev/null
@@ -1,10 +0,0 @@
-# @(#)Makefile 8.1 (Berkeley) 6/1/93
-# $id$
-
-PROG= make_keypair
-MAN8= make_keypair.8
-CFLAGS+=-DKERBEROS -I${.CURDIR}/../../usr.bin/register
-DPADD= ${LIBKDB} ${LIBKRB} ${LIBDES}
-LDADD= -L${KDBOBJDIR} -lkdb -L${KRBOBJDIR} -lkrb -L${DESOBJDIR} -ldes
-
-.include <bsd.prog.mk>
diff --git a/eBones/usr.sbin/make_keypair/make_keypair.8 b/eBones/usr.sbin/make_keypair/make_keypair.8
deleted file mode 100644
index d0b7b889a920..000000000000
--- a/eBones/usr.sbin/make_keypair/make_keypair.8
+++ /dev/null
@@ -1,87 +0,0 @@
-.\" Copyright (c) 1988, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\" must display the following acknowledgement:
-.\" This product includes software developed by the University of
-.\" California, Berkeley and its contributors.
-.\" 4. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)make_keypair.8 8.2 (Berkeley) 12/11/93
-.\"
-.Dd December 11, 1993
-.Dt MAKE_KEYPAIR 8
-.Os
-.Sh NAME
-.Nm make_keypair
-.Nd generate Kerberos host key pair
-.Sh SYNOPSIS
-.Nm make_keypair
-.Ar hostname
-.Op Ar hostname ...
-.Sh DESCRIPTION
-The
-.Nm make_keypair
-command
-is used to create pairs of
-.Tn DES
-keys for
-each
-.Ar hostname .
-The keys are used by privileged programs such as
-.Xr register 1
-to make remote updates to the Kerberos database without
-having to have first acquired a Kerberos ticket granting ticket
-.Pq Tn TGT .
-The keys created by
-.Nm make_keypair
-are placed (by hand) in the filesystems of the
-kerberos server in
-.Pa /etc/kerberosIV/register_keys ,
-and in the root directory of the clients.
-For example, the file
-.Pa /.update.key128.32.130.3
-would
-contain a copy of the key of the client with
-IP address 128.32.130.3.
-These keys provide a shared secret which may be used to establish
-a secure channel between the client hosts and the Kerberos server.
-.Sh FILES
-.Bl -tag -width /etc/kerberosIV/register_keysxx -compact
-.It Pa /.update.keyxx.xx.xx.xx
-shared
-.Tn DES
-key with server
-.It Pa /etc/kerberosIV/register_keys
-server's key storage directory
-.El
-.Sh SEE ALSO
-.Xr register 1 ,
-.Xr registerd 8 ,
-.Xr kerberos 1
-.Sh HISTORY
-The
-.Nm make_keypair
-utility first appeared in 4.4BSD.
diff --git a/etc/Makefile b/etc/Makefile
index 0cf0e0fbd97e..bc8decb40529 100644
--- a/etc/Makefile
+++ b/etc/Makefile
@@ -1,5 +1,5 @@
# from: @(#)Makefile 5.11 (Berkeley) 5/21/91
-# $Id: Makefile,v 1.117.4.1 1995/08/30 06:05:42 davidg Exp $
+# $Id: Makefile,v 1.117.4.2 1995/10/05 09:31:19 davidg Exp $
# disktab may be wrong -- hcx9 is a tahoe, but gets its own.
# -rw-r--r--
diff --git a/etc/crontab b/etc/crontab
index 9ef7abd8114f..4155b83e105a 100644
--- a/etc/crontab
+++ b/etc/crontab
@@ -1,6 +1,6 @@
# /etc/crontab - root's crontab for FreeBSD
#
-# $Id: crontab,v 1.9 1994/11/02 09:50:11 ache Exp $
+# $Id: crontab,v 1.10 1995/05/27 01:55:21 ache Exp $
# From: Id: crontab,v 1.6 1993/05/31 02:03:57 cgd Exp
#
SHELL=/bin/sh
diff --git a/etc/etc.i386/MAKEDEV b/etc/etc.i386/MAKEDEV
index afd64302cbb5..2f43624774d2 100644
--- a/etc/etc.i386/MAKEDEV
+++ b/etc/etc.i386/MAKEDEV
@@ -96,7 +96,7 @@
# isdn* ISDN devices
# labpc* National Instrument's Lab-PC and LAB-PC+
#
-# $Id: MAKEDEV,v 1.95.4.7 1995/11/09 15:53:38 jkh Exp $
+# $Id: MAKEDEV,v 1.95.4.8 1995/11/10 04:42:37 jkh Exp $
#
PATH=/sbin:/bin/:/usr/bin:/usr/sbin:
diff --git a/etc/etc.i386/README.1ST b/etc/etc.i386/README.1ST
index 1840d96573b2..eccb3aab208a 100644
--- a/etc/etc.i386/README.1ST
+++ b/etc/etc.i386/README.1ST
@@ -143,4 +143,4 @@ instructions.
freebsd.cdrom.com - please have a look around! You may also find
this a good time to read the release notes in RELNOTES.FreeBSD.
-End of $Id: floppy.install_notes,v 1.15 1994/05/15 01:10:17 rgrimes Exp $
+End of $Id: README.1ST,v 1.1 1994/06/28 09:01:53 jkh Exp $
diff --git a/etc/etc.i386/README.INSTALL b/etc/etc.i386/README.INSTALL
index e67c6cd708a0..b8f69d23c5c5 100644
--- a/etc/etc.i386/README.INSTALL
+++ b/etc/etc.i386/README.INSTALL
@@ -1008,4 +1008,4 @@ THANKS FOR USING THIS; that's what makes it all worthwhile.
as they will end up in our personal mail spools. We will be
happy to make other arrangements]
-This is $Id: install_notes,v 1.14 1994/02/25 23:34:14 alm Exp $
+This is $Id: README.INSTALL,v 1.1 1994/06/28 09:01:55 jkh Exp $
diff --git a/etc/etc.i386/cdinst1.install b/etc/etc.i386/cdinst1.install
index 7b04dfb23828..2db7b5ecb228 100644
--- a/etc/etc.i386/cdinst1.install
+++ b/etc/etc.i386/cdinst1.install
@@ -1,7 +1,7 @@
#!/bin/sh
# cd install floppy disk /install script
#
-# $Id: cdinst1.install,v 1.6 1994/06/29 06:46:01 rgrimes Exp $
+# $Id: cdinst1.install,v 1.7 1994/09/15 04:46:10 rgrimes Exp $
# ${OPSYSTEM}, the mounting of the cdrom drive, and the path are all
# setup by .profile
diff --git a/etc/etc.i386/cpio.install b/etc/etc.i386/cpio.install
index dda4457a3285..f2f8dade9188 100755
--- a/etc/etc.i386/cpio.install
+++ b/etc/etc.i386/cpio.install
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# $Id$
+# $Id: cpio.install,v 1.1 1994/02/21 21:51:50 rgrimes Exp $
#
echo
diff --git a/etc/etc.i386/cpio.magic b/etc/etc.i386/cpio.magic
index 0e4ed0ced9cb..a4353d943dbc 100644
--- a/etc/etc.i386/cpio.magic
+++ b/etc/etc.i386/cpio.magic
@@ -1,5 +1,5 @@
#!bin/sh
-# $Id: cpio.magic,v 1.12 1994/06/28 07:20:30 jkh Exp $
+# $Id: cpio.magic,v 1.13 1994/06/29 20:29:12 jkh Exp $
#
set_tmp_dir()
{
diff --git a/etc/etc.i386/cpio.rc b/etc/etc.i386/cpio.rc
index c45e0e583832..10ddd74d83e8 100644
--- a/etc/etc.i386/cpio.rc
+++ b/etc/etc.i386/cpio.rc
@@ -1,4 +1,4 @@
-# $Id: cpio.rc,v 1.4 1994/06/04 12:00:51 jkh Exp $
+# $Id: cpio.rc,v 1.5 1994/09/15 04:46:12 rgrimes Exp $
#
stty status '^T'
diff --git a/etc/etc.i386/inst1.profile b/etc/etc.i386/inst1.profile
index 8e39a8b41010..d4afab194eef 100644
--- a/etc/etc.i386/inst1.profile
+++ b/etc/etc.i386/inst1.profile
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: inst1.profile,v 1.3 1994/02/21 21:51:57 rgrimes Exp $
#
PATH=/sbin:/usr/sbin:/bin:/usr/bin:.:
export PATH
diff --git a/etc/etc.i386/inst2.rc b/etc/etc.i386/inst2.rc
index e439eb181c74..37ce99805719 100644
--- a/etc/etc.i386/inst2.rc
+++ b/etc/etc.i386/inst2.rc
@@ -1,4 +1,4 @@
-# $Id: inst2.rc,v 1.4 1994/06/15 19:23:33 jkh Exp $
+# $Id: inst2.rc,v 1.5 1994/09/15 04:46:15 rgrimes Exp $
#
stty status '^T'
diff --git a/etc/etc.i386/kc.profile b/etc/etc.i386/kc.profile
index 1bc715b53aef..b60dd30f5fd4 100644
--- a/etc/etc.i386/kc.profile
+++ b/etc/etc.i386/kc.profile
@@ -1,4 +1,4 @@
-# $Id: kc.profile,v 1.6 1994/02/21 21:52:00 rgrimes Exp $
+# $Id: kc.profile,v 1.7 1994/09/15 04:46:16 rgrimes Exp $
#
# rc for kernel distribution floppy
diff --git a/etc/etc.i386/rc.i386 b/etc/etc.i386/rc.i386
index 964147b27631..e390a3e1ba1e 100644
--- a/etc/etc.i386/rc.i386
+++ b/etc/etc.i386/rc.i386
@@ -1,6 +1,6 @@
#!/bin/sh -
#
-# $Id: rc.i386,v 1.10 1995/07/17 20:07:47 rgrimes Exp $
+# $Id: rc.i386,v 1.9.4.1 1995/07/27 14:07:03 rgrimes Exp $
# Do i386 specific processing
#
diff --git a/etc/host.conf b/etc/host.conf
index 10f4c6575936..4c82560a1fa3 100644
--- a/etc/host.conf
+++ b/etc/host.conf
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: host.conf,v 1.2 1993/11/07 01:02:57 wollman Exp $
# Default is to use the nameserver first
bind
# If that doesn't work, then try the /etc/hosts file
diff --git a/etc/hosts b/etc/hosts
index ba7577c2f18b..7967b5ff682d 100644
--- a/etc/hosts
+++ b/etc/hosts
@@ -1,4 +1,4 @@
-# $Id: hosts,v 1.4 1994/06/24 23:50:16 wollman Exp $
+# $Id: hosts,v 1.5 1995/04/09 09:54:39 rgrimes Exp $
#
# Host Database
# This file should contain the addresses and aliases
diff --git a/etc/make.conf b/etc/make.conf
index b284f8abdaa1..c9cdcdf4f4e7 100644
--- a/etc/make.conf
+++ b/etc/make.conf
@@ -1,4 +1,4 @@
-# $Id: make.conf,v 1.23 1995/09/30 17:20:27 ache Exp $
+# $Id: make.conf,v 1.17.4.3 1995/10/26 02:39:24 jfieber Exp $
#
# This file, if present, will be read by make (see /usr/share/mk/sys.mk).
# It allows you to override macro definitions to make without changing
diff --git a/etc/mtree/BSD.include.dist b/etc/mtree/BSD.include.dist
index 227f89f4147c..1e98b13e2cdb 100644
--- a/etc/mtree/BSD.include.dist
+++ b/etc/mtree/BSD.include.dist
@@ -1,4 +1,4 @@
-# $Id: BSD.include.dist,v 1.1 1995/03/18 07:02:10 rgrimes Exp $
+# $Id: BSD.include.dist,v 1.2 1995/05/17 09:31:03 rgrimes Exp $
#
/set type=dir uname=bin gname=bin mode=0755
diff --git a/etc/mtree/BSD.local.dist b/etc/mtree/BSD.local.dist
index 789c5b8ba205..f9e52a602bd4 100644
--- a/etc/mtree/BSD.local.dist
+++ b/etc/mtree/BSD.local.dist
@@ -1,4 +1,4 @@
-# $Id: BSD.local.dist,v 1.11 1995/05/17 09:31:07 rgrimes Exp $
+# $Id: BSD.local.dist,v 1.11.4.1 1995/10/05 09:31:35 davidg Exp $
#
/set type=dir uname=bin gname=bin mode=0755
diff --git a/etc/mtree/BSD.release.dist b/etc/mtree/BSD.release.dist
index 7dcb262bdcad..fea2d5b76139 100644
--- a/etc/mtree/BSD.release.dist
+++ b/etc/mtree/BSD.release.dist
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: BSD.release.dist,v 1.2 1994/09/19 01:40:36 rgrimes Exp $
#
/set type=dir uname=root gname=wheel mode=0755
diff --git a/etc/mtree/BSD.root.dist b/etc/mtree/BSD.root.dist
index c6c7b896889e..af087de93e08 100644
--- a/etc/mtree/BSD.root.dist
+++ b/etc/mtree/BSD.root.dist
@@ -1,4 +1,4 @@
-# $Id: BSD.root.dist,v 1.19 1994/09/25 02:55:21 wollman Exp $
+# $Id: BSD.root.dist,v 1.20 1995/05/17 09:31:10 rgrimes Exp $
#
/set type=dir uname=root gname=wheel mode=0755
diff --git a/etc/mtree/BSD.usr.dist b/etc/mtree/BSD.usr.dist
index fb39184d6e27..33badc0a4fd8 100644
--- a/etc/mtree/BSD.usr.dist
+++ b/etc/mtree/BSD.usr.dist
@@ -1,4 +1,4 @@
-# $Id: BSD.usr.dist,v 1.44 1995/09/30 15:42:49 jfieber Exp $
+# $Id: BSD.usr.dist,v 1.40.4.3 1995/10/12 03:11:11 jfieber Exp $
#
/set type=dir uname=bin gname=bin mode=0755
diff --git a/etc/mtree/BSD.var.dist b/etc/mtree/BSD.var.dist
index 1e4409228b84..870ac7f84219 100644
--- a/etc/mtree/BSD.var.dist
+++ b/etc/mtree/BSD.var.dist
@@ -1,4 +1,4 @@
-# $Id: BSD.var.dist,v 1.22 1995/04/12 03:02:01 ache Exp $
+# $Id: BSD.var.dist,v 1.23 1995/05/17 09:31:17 rgrimes Exp $
#
/set type=dir uname=bin gname=bin mode=0755
diff --git a/etc/namedb/PROTO.localhost.rev b/etc/namedb/PROTO.localhost.rev
index bc4e8ac1d796..df6794d43618 100644
--- a/etc/namedb/PROTO.localhost.rev
+++ b/etc/namedb/PROTO.localhost.rev
@@ -1,5 +1,5 @@
; From: @(#)localhost.rev 5.1 (Berkeley) 6/30/90
-; $Id$
+; $Id: PROTO.localhost.rev,v 1.1 1995/03/21 16:33:44 wollman Exp $
;
; This file is automatically edited by the `make-localhost' script in
; the /etc/namedb directory.
diff --git a/etc/namedb/named.boot b/etc/namedb/named.boot
index 62eacbece6c6..3b34f50bff5f 100644
--- a/etc/namedb/named.boot
+++ b/etc/namedb/named.boot
@@ -1,4 +1,4 @@
-; $Id: named.boot,v 1.2 1993/11/07 00:58:34 wollman Exp $
+; $Id: named.boot,v 1.3 1995/03/23 08:43:02 rgrimes Exp $
; From: @(#)named.boot 5.1 (Berkeley) 6/30/90
; boot file for secondary name server
diff --git a/etc/netstart b/etc/netstart
index c837bce1edc4..7abf70fb65e6 100755..100644
--- a/etc/netstart
+++ b/etc/netstart
@@ -1,6 +1,6 @@
#!/bin/sh -
#
-# $Id: netstart,v 1.32.4.2 1995/08/23 07:18:05 jkh Exp $
+# $Id: netstart,v 1.32.4.3 1995/08/25 07:21:46 davidg Exp $
# From: @(#)netstart 5.9 (Berkeley) 3/30/91
# Note that almost all the user-configurable behavior is no longer in
diff --git a/etc/phones b/etc/phones
index b9af7f30d8ce..c6ab472d9951 100644
--- a/etc/phones
+++ b/etc/phones
@@ -1,4 +1,4 @@
-# $Id: phones,v 1.3 1994/01/23 18:39:52 rgrimes Exp $
+# $Id: phones,v 1.4 1994/01/24 00:39:01 rgrimes Exp $
# From: @(#)phones 5.2 (Berkeley) 6/30/90
#
# phones -- remote host phone number data base
diff --git a/etc/ppp/ppp.conf.filter.sample b/etc/ppp/ppp.conf.filter.sample
index 891a4b90e543..464d8a1109cf 100644
--- a/etc/ppp/ppp.conf.filter.sample
+++ b/etc/ppp/ppp.conf.filter.sample
@@ -1,5 +1,5 @@
#
-# $Id: ppp.conf.filter.sample,v 1.1.1.1 1995/01/31 06:24:33 amurai Exp $
+# $Id: ppp.conf.filter.sample,v 1.2 1995/02/26 12:16:35 amurai Exp $
#
# An example of packet filter definition.
#
diff --git a/etc/ppp/ppp.conf.iij b/etc/ppp/ppp.conf.iij
index 940898cb9ede..4bc9c8321b78 100644
--- a/etc/ppp/ppp.conf.iij
+++ b/etc/ppp/ppp.conf.iij
@@ -10,7 +10,7 @@
# In all cases, you can use same username and password assigned
# from IIJ.
#
-# $Id:$
+# $Id: ppp.conf.iij,v 1.1.1.1 1995/01/31 06:24:33 amurai Exp $
#
#############################################################################
#
diff --git a/etc/ppp/ppp.conf.sample b/etc/ppp/ppp.conf.sample
index 20180228a7b8..1df362867a58 100644
--- a/etc/ppp/ppp.conf.sample
+++ b/etc/ppp/ppp.conf.sample
@@ -4,7 +4,7 @@
#
# Written by Toshiharu OHNO
#
-# $Id: ppp.conf.sample,v 1.2 1995/02/26 12:16:36 amurai Exp $
+# $Id: ppp.conf.sample,v 1.3 1995/04/22 17:14:21 amurai Exp $
#
#################################################################
#
diff --git a/etc/ppp/ppp.linkup.sample b/etc/ppp/ppp.linkup.sample
index afe58a79ed17..f549b0e238b8 100644
--- a/etc/ppp/ppp.linkup.sample
+++ b/etc/ppp/ppp.linkup.sample
@@ -14,7 +14,7 @@
#
# 3) If given label name is not found, then label MYADDR is serched.
#
-# $Id:$
+# $Id: ppp.linkup.sample,v 1.1.1.1 1995/01/31 06:24:33 amurai Exp $
#
#########################################################################
#
diff --git a/etc/ppp/ppp.secret.sample b/etc/ppp/ppp.secret.sample
index 720c1fb84d97..146c12a434c4 100644
--- a/etc/ppp/ppp.secret.sample
+++ b/etc/ppp/ppp.secret.sample
@@ -1,7 +1,7 @@
##################################################
# Sysname Secret Key Peer's IP address
#
-# $Id: ppp.secret.sample,v 1.1.1.1 1995/01/31 06:24:33 amurai Exp $
+# $Id: ppp.secret.sample,v 1.2 1995/02/26 12:16:37 amurai Exp $
#
##################################################
oscar OurSecretKey 192.244.184.34/24
diff --git a/etc/protocols b/etc/protocols
index 33a1666a8974..9580640d2b6e 100644
--- a/etc/protocols
+++ b/etc/protocols
@@ -1,7 +1,7 @@
#
# Internet (IP) protocols
#
-# $Id: protocols,v 1.2 1993/11/07 00:31:22 wollman Exp $
+# $Id: protocols,v 1.2.8.1 1995/08/30 06:19:30 davidg Exp $
# from: @(#)protocols 5.1 (Berkeley) 4/17/89
#
# Updated for FreeBSD based on RFC 1340, Assigned Numbers (July 1992).
diff --git a/etc/rc b/etc/rc
index a97964d7628e..9529a0275ca8 100644
--- a/etc/rc
+++ b/etc/rc
@@ -1,5 +1,5 @@
#!/bin/sh
-# $Id: rc,v 1.66.4.6 1995/10/19 08:07:09 jkh Exp $
+# $Id: rc,v 1.66.4.7 1995/10/30 08:30:31 davidg Exp $
# From: @(#)rc 5.27 (Berkeley) 6/5/91
# System startup script run by init on autoboot
diff --git a/etc/rc.local b/etc/rc.local
index 84c53c389655..ceee0358ec16 100644
--- a/etc/rc.local
+++ b/etc/rc.local
@@ -1,7 +1,7 @@
#
# site-specific startup actions, daemons
#
-# $Id: rc.local,v 1.18 1995/03/30 06:26:10 rgrimes Exp $
+# $Id: rc.local,v 1.19 1995/03/30 06:34:46 rgrimes Exp $
#
T=/tmp/_motd
diff --git a/etc/root/dot.cshrc b/etc/root/dot.cshrc
index ffa5ecc822ba..1a1a9a998c32 100644
--- a/etc/root/dot.cshrc
+++ b/etc/root/dot.cshrc
@@ -1,4 +1,4 @@
-# $Id: dot.cshrc,v 1.11 1994/09/22 08:23:02 rgrimes Exp $
+# $Id: dot.cshrc,v 1.12 1994/10/27 05:26:59 phk Exp $
#
alias mail Mail
set history=1000
diff --git a/etc/root/dot.klogin b/etc/root/dot.klogin
index 56098a5a903e..e0ff5406de0b 100644
--- a/etc/root/dot.klogin
+++ b/etc/root/dot.klogin
@@ -1,4 +1,4 @@
-# $Id: dot.klogin,v 1.2 1994/02/21 20:36:01 rgrimes Exp $
+# $Id: dot.klogin,v 1.3 1994/10/27 05:26:59 phk Exp $
#
# user1.root@your.realm.wherever
# user2.root@your.realm.wherever
diff --git a/etc/root/dot.login b/etc/root/dot.login
index 2b9fb2214d84..a35926b0ac67 100644
--- a/etc/root/dot.login
+++ b/etc/root/dot.login
@@ -1,4 +1,4 @@
-# $Id: dot.login,v 1.6 1994/09/16 04:20:13 rgrimes Exp $
+# $Id: dot.login,v 1.6.6.1 1995/08/25 03:42:24 davidg Exp $
#
tset -Q \?$TERM
stty crt erase ^H
diff --git a/etc/root/dot.profile b/etc/root/dot.profile
index 7789cda9111a..6b3eb3de46f8 100644
--- a/etc/root/dot.profile
+++ b/etc/root/dot.profile
@@ -1,4 +1,4 @@
-# $Id: dot.profile,v 1.7 1994/09/22 08:32:39 rgrimes Exp $
+# $Id: dot.profile,v 1.8 1994/10/27 05:27:00 phk Exp $
#
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin
echo 'erase ^H, kill ^U, intr ^C'
diff --git a/etc/security b/etc/security
index 19d1bcb525a9..aae50b0536f2 100644
--- a/etc/security
+++ b/etc/security
@@ -1,7 +1,7 @@
#!/bin/sh -
#
# @(#)security 5.3 (Berkeley) 5/28/91
-# $Id: security,v 1.7 1995/01/14 13:23:50 ats Exp $
+# $Id: security,v 1.8 1995/05/27 01:37:44 ache Exp $
#
PATH=/sbin:/bin:/usr/bin
diff --git a/etc/services b/etc/services
index 535697c824aa..36fc1b5cb5bf 100644
--- a/etc/services
+++ b/etc/services
@@ -9,7 +9,7 @@
# Kerberos services are for Kerberos v4, and are unofficial. Sites running
# v5 should uncomment v5 entries and comment v4 entries.
#
-# $Id: services,v 1.15 1995/09/15 22:02:06 gibbs Exp $
+# $Id: services,v 1.11.4.2 1995/09/15 22:16:21 gibbs Exp $
# From: @(#)services 5.8 (Berkeley) 5/9/91
#
# WELL KNOWN PORT NUMBERS
diff --git a/etc/sysconfig b/etc/sysconfig
index e91570274b84..96d36dc99ddd 100644
--- a/etc/sysconfig
+++ b/etc/sysconfig
@@ -4,7 +4,7 @@
# This is sysconfig - a file full of useful variables that you can set
# to change the default startup behavior of your system.
#
-# $Id: sysconfig,v 1.14.4.4 1995/09/19 10:23:43 jkh Exp $
+# $Id: sysconfig,v 1.14.4.5 1995/09/19 12:09:03 jkh Exp $
######################### Start Of Syscons Section #######################
diff --git a/games/boggle/Makefile b/games/boggle/Makefile
new file mode 100644
index 000000000000..e16ddf254ecb
--- /dev/null
+++ b/games/boggle/Makefile
@@ -0,0 +1,26 @@
+# @(#)Makefile 8.1 (Berkeley) 6/11/93
+
+SUBDIR= boggle mkdict mkindex
+
+.if exists(${.CURDIR}/mkdict/obj)
+MKDICT= ${.CURDIR}/mkdict/obj/mkdict
+.else
+MKDICT= ${.CURDIR}/mkdict/mkdict
+.endif
+.if exists(${.CURDIR}/mkindex/obj)
+MKINDX= ${.CURDIR}/mkindex/obj/mkindex
+.else
+MKINDX= ${.CURDIR}/mkindex/mkindex
+.endif
+
+afterdistribute afterinstall:
+ ${MKDICT} < ${.CURDIR}/../../share/dict/web2 > \
+ ${DESTDIR}/usr/share/games/boggle/dictionary
+ ${MKINDX} < ${DESTDIR}/usr/share/games/boggle/dictionary > \
+ ${DESTDIR}/usr/share/games/boggle/dictindex
+ chown ${BINOWN}.${BINGRP} ${DESTDIR}/usr/share/games/boggle/dictionary
+ chmod 444 ${DESTDIR}/usr/share/games/boggle/dictionary
+ chown ${BINOWN}.${BINGRP} ${DESTDIR}/usr/share/games/boggle/dictindex
+ chmod 444 ${DESTDIR}/usr/share/games/boggle/dictindex
+
+.include <bsd.subdir.mk>
diff --git a/games/boggle/README b/games/boggle/README
new file mode 100644
index 000000000000..ac87da00bd00
--- /dev/null
+++ b/games/boggle/README
@@ -0,0 +1,65 @@
+
+Bog is a fairly portable simulation of Parker Brother's game of Boggle and
+is similar to the 4.[23] BSD "boggle" and Sun's "boggletool".
+Bog has not been derived from any proprietary code.
+It has been tested on the Sun 3 under SunOS 3.2 and on the Atari 1040ST (MWC).
+
+What You Need
+
+You will need curses/termcap and a large word list.
+The minix word list or /usr/dict/words will do nicely.
+The word list must already be sorted (you can use "sort -c" to check).
+
+Contents
+
+ README - this file
+ Makefile
+ bog.man - half-hearted man page (use the game's help command)
+ bog.h - configuration and header info
+ bog.c - machine independent game code
+ word.c - machine independent word list routines
+ help.c - (curses) help routine
+ mach.c - (curses) display code
+ prtable.c - ditto
+ timer.c - machine dependent (os) input polling
+ mkdict.c - convert a word list to a bog dictionary
+ mkindex.c - create an index file for the bog dictionary
+ showdict.c - print a bog dictionary to stdout
+
+Portability
+
+- I've tried to make bog.c (the program logic) independent of the I/O.
+ My plan was to make it straightforward to adapt the game to run under a
+ windowing system (eg., Suntools, GEM). I have no plan to actually do this.
+ I've stuck to a small subset of the curses routines.
+- The program runs with the input in raw mode.
+- If you want the running timer you must #define TIMER in bog.h
+ and insert the input polling code in timer.c for your system. There is
+ already code there for BSD, SYSV, and ATARI.
+
+Setup
+
+1. Check bog.h and Makefile and edit to fit your environment
+2. "make all"
+ This will make all the binaries and create the dictionary and index files
+3. Move "dict", "dict.ind", and "helpfile" to where you specified in bog.h
+4. Play away
+
+Distribution
+
+You may use this software for your enjoyment and you may share it with others.
+You may not sell this software or use it for any commercial purposes
+whatsoever. All modified versions of the software that you redistribute must
+clearly indicate your changes.
+
+If you come across any bugs or make any changes you'd like to share please
+send mail to me rather than posting to the net.
+
+Enjoy. [But beware: boggle can be addictive!]
+
+-----
+Barry Brachman | UUCP: {alberta,uw-beaver,uunet}!
+Dept. of Computer Science| ubc-vision!ubc-csgrads!brachman
+Univ. of British Columbia| Internet: brachman@cs.ubc.ca
+Vancouver, B.C. V6T 1W5 | brachman%ubc.csnet@csnet-relay.arpa
+(604) 228-5010 | brachman@ubc.csnet
diff --git a/games/boggle/boggle/Makefile b/games/boggle/boggle/Makefile
new file mode 100644
index 000000000000..4169189a8445
--- /dev/null
+++ b/games/boggle/boggle/Makefile
@@ -0,0 +1,15 @@
+# @(#)Makefile 8.1 (Berkeley) 6/11/93
+
+PROG= boggle
+SRCS= bog.c help.c mach.c prtable.c timer.c word.c
+DPADD= ${LIBCURSES} ${LIBTERMCAP}
+LDADD= -lcurses -ltermcap
+HIDEGAME=hidegame
+MAN6= boggle.6
+
+beforeinstall:
+ install -c -o ${BINOWN} -g ${BINGRP} -m 444 ${.CURDIR}/helpfile \
+ ${DESTDIR}/usr/share/games/boggle/helpfile
+
+.include "../../Makefile.inc"
+.include <bsd.prog.mk>
diff --git a/games/boggle/boggle/bog.c b/games/boggle/boggle/bog.c
new file mode 100644
index 000000000000..8b1cd50ba1af
--- /dev/null
+++ b/games/boggle/boggle/bog.c
@@ -0,0 +1,672 @@
+/*-
+ * Copyright (c) 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Barry Brachman.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef lint
+static char copyright[] =
+"@(#) Copyright (c) 1993\n\
+ The Regents of the University of California. All rights reserved.\n";
+#endif /* not lint */
+
+#ifndef lint
+static char sccsid[] = "@(#)bog.c 8.1 (Berkeley) 6/11/93";
+#endif /* not lint */
+
+#include <ctype.h>
+#include <err.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+
+#include "bog.h"
+#include "extern.h"
+
+static int compar __P((const void *, const void *));
+
+struct dictindex dictindex[26];
+
+/*
+ * Cube position numbering:
+ *
+ * 0 1 2 3
+ * 4 5 6 7
+ * 8 9 A B
+ * C D E F
+ */
+static int adjacency[16][16] = {
+/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
+ { 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, /* 0 */
+ { 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, /* 1 */
+ { 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, /* 2 */
+ { 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, /* 3 */
+ { 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 }, /* 4 */
+ { 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0 }, /* 5 */
+ { 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0 }, /* 6 */
+ { 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0 }, /* 7 */
+ { 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0 }, /* 8 */
+ { 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0 }, /* 9 */
+ { 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1 }, /* A */
+ { 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1 }, /* B */
+ { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0 }, /* C */
+ { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0 }, /* D */
+ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1 }, /* E */
+ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0 } /* F */
+};
+
+static int letter_map[26][16];
+
+char board[17];
+int wordpath[MAXWORDLEN + 1];
+int wordlen; /* Length of last word returned by nextword() */
+int usedbits;
+
+char *pword[MAXPWORDS], pwords[MAXPSPACE], *pwordsp;
+int npwords;
+
+char *mword[MAXMWORDS], mwords[MAXMSPACE], *mwordsp;
+int nmwords;
+
+int ngames = 0;
+int tnmwords = 0, tnpwords = 0;
+
+#include <setjmp.h>
+jmp_buf env;
+
+long start_t;
+
+static FILE *dictfp;
+
+int batch;
+int debug;
+int minlength;
+int reuse;
+int tlimit;
+
+int
+main(argc, argv)
+ int argc;
+ char *argv[];
+{
+ long seed = 0;
+ int ch, done, i, selfuse, sflag;
+ char *bspec, *p;
+
+ batch = debug = reuse = selfuse = sflag = 0;
+ bspec = NULL;
+ minlength = 3;
+ tlimit = 180; /* 3 minutes is standard */
+
+ while ((ch = getopt(argc, argv, "bds:t:w:")) != EOF)
+ switch(ch) {
+ case 'b':
+ batch = 1;
+ break;
+ case 'd':
+ debug = 1;
+ break;
+ case 's':
+ sflag = 1;
+ seed = atol(optarg);
+ break;
+ case 't':
+ if ((tlimit = atoi(optarg)) < 1)
+ errx(1, "bad time limit");
+ break;
+ case 'w':
+ if ((minlength = atoi(optarg)) < 3)
+ errx(1, "min word length must be > 2");
+ break;
+ case '?':
+ default:
+ usage();
+ }
+ argc -= optind;
+ argv += optind;
+
+ if (argv[0]) { /* any args left? */
+ if (strcmp(argv[0], "+") == 0)
+ reuse = 1;
+ else if (strcmp(argv[0], "++") == 0)
+ selfuse = 1;
+ else if (islower(argv[0][0])) {
+ if (strlen(argv[0]) != 16) {
+ usage();
+
+ } else
+ /* This board is assumed to be valid... */
+ bspec = argv[0];
+ }
+ }
+
+ if (batch && bspec == NULL)
+ errx(1, "must give both -b and a board setup");
+
+ if (selfuse)
+ for (i = 0; i < 16; i++)
+ adjacency[i][i] = 1;
+
+ if (batch) {
+ newgame(bspec);
+ while ((p = batchword(stdin)) != NULL)
+ (void) printf("%s\n", p);
+ exit (0);
+ }
+ setup(sflag, seed);
+ prompt("Loading the dictionary...");
+ if ((dictfp = opendict(DICT)) == NULL) {
+ warn("%s", DICT);
+ cleanup();
+ exit(1);
+ }
+#ifdef LOADDICT
+ if (loaddict(dictfp) < 0) {
+ warnx("can't load %s", DICT);
+ cleanup();
+ exit(1);
+ }
+ (void)fclose(dictfp);
+ dictfp = NULL;
+#endif
+ if (loadindex(DICTINDEX) < 0) {
+ warnx("can't load %s", DICTINDEX);
+ cleanup();
+ exit(1);
+ }
+
+ prompt("Type <space> to begin...");
+ while (inputch() != ' ');
+
+ for (done = 0; !done;) {
+ newgame(bspec);
+ bspec = NULL; /* reset for subsequent games */
+ playgame();
+ prompt("Type <space> to continue, any cap to quit...");
+ delay(50); /* wait for user to quit typing */
+ flushin(stdin);
+ for (;;) {
+ ch = inputch();
+ if (ch == '\033')
+ findword();
+ else if (ch == '\014' || ch == '\022') /* ^l or ^r */
+ redraw();
+ else {
+ if (isupper(ch)) {
+ done = 1;
+ break;
+ }
+ if (ch == ' ')
+ break;
+ }
+ }
+ }
+ cleanup();
+ exit (0);
+}
+
+/*
+ * Read a line from the given stream and check if it is legal
+ * Return a pointer to a legal word or a null pointer when EOF is reached
+ */
+char *
+batchword(fp)
+ FILE *fp;
+{
+ register int *p, *q;
+ register char *w;
+
+ q = &wordpath[MAXWORDLEN + 1];
+ p = wordpath;
+ while (p < q)
+ *p++ = -1;
+ while ((w = nextword(fp)) != NULL) {
+ if (wordlen < minlength)
+ continue;
+ p = wordpath;
+ while (p < q && *p != -1)
+ *p++ = -1;
+ usedbits = 0;
+ if (checkword(w, -1, wordpath) != -1)
+ return (w);
+ }
+ return (NULL);
+}
+
+/*
+ * Play a single game
+ * Reset the word lists from last game
+ * Keep track of the running stats
+ */
+void
+playgame()
+{
+ /* Can't use register variables if setjmp() is used! */
+ int i, *p, *q;
+ long t;
+ char buf[MAXWORDLEN + 1];
+
+ ngames++;
+ npwords = 0;
+ pwordsp = pwords;
+ nmwords = 0;
+ mwordsp = mwords;
+
+ time(&start_t);
+
+ q = &wordpath[MAXWORDLEN + 1];
+ p = wordpath;
+ while (p < q)
+ *p++ = -1;
+ showboard(board);
+ startwords();
+ if (setjmp(env)) {
+ badword();
+ goto timesup;
+ }
+
+ while (1) {
+ if (getline(buf) == NULL) {
+ if (feof(stdin))
+ clearerr(stdin);
+ break;
+ }
+ time(&t);
+ if (t - start_t >= tlimit) {
+ badword();
+ break;
+ }
+ if (buf[0] == '\0') {
+ int remaining;
+
+ remaining = tlimit - (int) (t - start_t);
+ (void)snprintf(buf, sizeof(buf),
+ "%d:%02d", remaining / 60, remaining % 60);
+ showstr(buf, 1);
+ continue;
+ }
+ if (strlen(buf) < minlength) {
+ badword();
+ continue;
+ }
+
+ p = wordpath;
+ while (p < q && *p != -1)
+ *p++ = -1;
+ usedbits = 0;
+
+ if (checkword(buf, -1, wordpath) < 0)
+ badword();
+ else {
+ if (debug) {
+ (void) printf("[");
+ for (i = 0; wordpath[i] != -1; i++)
+ (void) printf(" %d", wordpath[i]);
+ (void) printf(" ]\n");
+ }
+ for (i = 0; i < npwords; i++) {
+ if (strcmp(pword[i], buf) == 0)
+ break;
+ }
+ if (i != npwords) { /* already used the word */
+ badword();
+ showword(i);
+ }
+ else if (!validword(buf))
+ badword();
+ else {
+ int len;
+
+ len = strlen(buf) + 1;
+ if (npwords == MAXPWORDS - 1 ||
+ pwordsp + len >= &pwords[MAXPSPACE]) {
+ warnx("Too many words!");
+ cleanup();
+ exit(1);
+ }
+ pword[npwords++] = pwordsp;
+ (void) strcpy(pwordsp, buf);
+ pwordsp += len;
+ addword(buf);
+ }
+ }
+ }
+
+timesup: ;
+
+ /*
+ * Sort the player's words and terminate the list with a null
+ * entry to help out checkdict()
+ */
+ qsort(pword, npwords, sizeof(pword[0]), compar);
+ pword[npwords] = NULL;
+
+ /*
+ * These words don't need to be sorted since the dictionary is sorted
+ */
+ checkdict();
+
+ tnmwords += nmwords;
+ tnpwords += npwords;
+
+ results();
+}
+
+/*
+ * Check if the given word is present on the board, with the constraint
+ * that the first letter of the word is adjacent to square 'prev'
+ * Keep track of the current path of squares for the word
+ * A 'q' must be followed by a 'u'
+ * Words must end with a null
+ * Return 1 on success, -1 on failure
+ */
+int
+checkword(word, prev, path)
+ char *word;
+ int prev, *path;
+{
+ register char *p, *q;
+ register int i, *lm;
+
+ if (debug) {
+ (void) printf("checkword(%s, %d, [", word, prev);
+ for (i = 0; wordpath[i] != -1; i++)
+ (void) printf(" %d", wordpath[i]);
+ (void) printf(" ]\n");
+ }
+
+ if (*word == '\0')
+ return (1);
+
+ lm = letter_map[*word - 'a'];
+
+ if (prev == -1) {
+ char subword[MAXWORDLEN + 1];
+
+ /*
+ * Check for letters not appearing in the cube to eliminate some
+ * recursive calls
+ * Fold 'qu' into 'q'
+ */
+ p = word;
+ q = subword;
+ while (*p != '\0') {
+ if (*letter_map[*p - 'a'] == -1)
+ return (-1);
+ *q++ = *p;
+ if (*p++ == 'q') {
+ if (*p++ != 'u')
+ return (-1);
+ }
+ }
+ *q = '\0';
+ while (*lm != -1) {
+ *path = *lm;
+ usedbits |= (1 << *lm);
+ if (checkword(subword + 1, *lm, path + 1) > 0)
+ return (1);
+ usedbits &= ~(1 << *lm);
+ lm++;
+ }
+ return (-1);
+ }
+
+ /*
+ * A cube is only adjacent to itself in the adjacency matrix if selfuse
+ * was set, so a cube can't be used twice in succession if only the
+ * reuse flag is set
+ */
+ for (i = 0; lm[i] != -1; i++) {
+ if (adjacency[prev][lm[i]]) {
+ int used;
+
+ used = 1 << lm[i];
+ /*
+ * If necessary, check if the square has already
+ * been used.
+ */
+ if (!reuse && (usedbits & used))
+ continue;
+ *path = lm[i];
+ usedbits |= used;
+ if (checkword(word + 1, lm[i], path + 1) > 0)
+ return (1);
+ usedbits &= ~used;
+ }
+ }
+ *path = -1; /* in case of a backtrack */
+ return (-1);
+}
+
+/*
+ * A word is invalid if it is not in the dictionary
+ * At this point it is already known that the word can be formed from
+ * the current board
+ */
+int
+validword(word)
+ char *word;
+{
+ register int j;
+ register char *q, *w;
+
+ j = word[0] - 'a';
+ if (dictseek(dictfp, dictindex[j].start, 0) < 0) {
+ (void) fprintf(stderr, "Seek error\n");
+ cleanup();
+ exit(1);
+ }
+
+ while ((w = nextword(dictfp)) != NULL) {
+ int ch;
+
+ if (*w != word[0]) /* end of words starting with word[0] */
+ break;
+ q = word;
+ while ((ch = *w++) == *q++ && ch != '\0')
+ ;
+ if (*(w - 1) == '\0' && *(q - 1) == '\0')
+ return (1);
+ }
+ if (dictfp != NULL && feof(dictfp)) /* Special case for z's */
+ clearerr(dictfp);
+ return (0);
+}
+
+/*
+ * Check each word in the dictionary against the board
+ * Delete words from the machine list that the player has found
+ * Assume both the dictionary and the player's words are already sorted
+ */
+void
+checkdict()
+{
+ register char *p, **pw, *w;
+ register int i;
+ int prevch, previndex, *pi, *qi, st;
+
+ mwordsp = mwords;
+ nmwords = 0;
+ pw = pword;
+ prevch ='a';
+ qi = &wordpath[MAXWORDLEN + 1];
+
+ (void) dictseek(dictfp, 0L, 0);
+ while ((w = nextword(dictfp)) != NULL) {
+ if (wordlen < minlength)
+ continue;
+ if (*w != prevch) {
+ /*
+ * If we've moved on to a word with a different first
+ * letter then we can speed things up by skipping all
+ * words starting with a letter that doesn't appear in
+ * the cube.
+ */
+ i = (int) (*w - 'a');
+ while (i < 26 && letter_map[i][0] == -1)
+ i++;
+ if (i == 26)
+ break;
+ previndex = prevch - 'a';
+ prevch = i + 'a';
+ /*
+ * Fall through if the word's first letter appears in
+ * the cube (i.e., if we can't skip ahead), otherwise
+ * seek to the beginning of words in the dictionary
+ * starting with the next letter (alphabetically)
+ * appearing in the cube and then read the first word.
+ */
+ if (i != previndex + 1) {
+ if (dictseek(dictfp,
+ dictindex[i].start, 0) < 0) {
+ warnx("seek error in checkdict()");
+ cleanup();
+ exit(1);
+ }
+ continue;
+ }
+ }
+
+ pi = wordpath;
+ while (pi < qi && *pi != -1)
+ *pi++ = -1;
+ usedbits = 0;
+ if (checkword(w, -1, wordpath) == -1)
+ continue;
+
+ st = 1;
+ while (*pw != NULL && (st = strcmp(*pw, w)) < 0)
+ pw++;
+ if (st == 0) /* found it */
+ continue;
+ if (nmwords == MAXMWORDS ||
+ mwordsp + wordlen + 1 >= &mwords[MAXMSPACE]) {
+ warnx("too many words!");
+ cleanup();
+ exit(1);
+ }
+ mword[nmwords++] = mwordsp;
+ p = w;
+ while (*mwordsp++ = *p++);
+ }
+}
+
+/*
+ * Crank up a new game
+ * If the argument is non-null then it is assumed to be a legal board spec
+ * in ascending cube order, oth. make a random board
+ */
+void
+newgame(b)
+ char *b;
+{
+ register int i, p, q;
+ char *tmp;
+ int *lm[26];
+ static char *cubes[16] = {
+ "ednosw", "aaciot", "acelrs", "ehinps",
+ "eefhiy", "elpstu", "acdemp", "gilruw",
+ "egkluy", "ahmors", "abilty", "adenvz",
+ "bfiorx", "dknotu", "abjmoq", "egintv"
+ };
+
+ if (b == NULL) {
+ /*
+ * Shake the cubes and make the board
+ */
+ i = 0;
+ while (i < 100) {
+ p = (int) (random() % 16);
+ q = (int) (random() % 16);
+ if (p != q) {
+ tmp = cubes[p];
+ cubes[p] = cubes[q];
+ cubes[q] = tmp;
+ i++;
+ }
+ /* else try again */
+ }
+
+ for (i = 0; i < 16; i++)
+ board[i] = cubes[i][random() % 6];
+ }
+ else {
+ for (i = 0; i < 16; i++)
+ board[i] = b[i];
+ }
+ board[16] = '\0';
+
+ /*
+ * Set up the map from letter to location(s)
+ * Each list is terminated by a -1 entry
+ */
+ for (i = 0; i < 26; i++) {
+ lm[i] = letter_map[i];
+ *lm[i] = -1;
+ }
+
+ for (i = 0; i < 16; i++) {
+ register int j;
+
+ j = (int) (board[i] - 'a');
+ *lm[j] = i;
+ *(++lm[j]) = -1;
+ }
+
+ if (debug) {
+ for (i = 0; i < 26; i++) {
+ int ch, j;
+
+ (void) printf("%c:", 'a' + i);
+ for (j = 0; (ch = letter_map[i][j]) != -1; j++)
+ (void) printf(" %d", ch);
+ (void) printf("\n");
+ }
+ }
+
+}
+
+int
+compar(p, q)
+ const void *p, *q;
+{
+ return (strcmp(*(char **)p, *(char **)q));
+}
+
+void
+usage()
+{
+ (void) fprintf(stderr,
+ "usage: bog [-bd] [-s#] [-t#] [-w#] [+[+]] [boardspec]\n");
+ exit(1);
+}
diff --git a/secure/usr.bin/telnet/defines.h b/games/boggle/boggle/bog.h
index 0978173ea995..a25f1d751f40 100644
--- a/secure/usr.bin/telnet/defines.h
+++ b/games/boggle/boggle/bog.h
@@ -1,7 +1,10 @@
-/*
- * Copyright (c) 1988, 1993
+/*-
+ * Copyright (c) 1993
* The Regents of the University of California. All rights reserved.
*
+ * This code is derived from software contributed to Berkeley by
+ * Barry Brachman.
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
@@ -30,32 +33,53 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * @(#)defines.h 8.1 (Berkeley) 6/6/93
+ * @(#)bog.h 8.1 (Berkeley) 6/11/93
+ */
+
+#define LOADDICT 1 /* Load the dictionary for speed */
+
+/*
+ * Locations for the dictionary (generated by mkdict),
+ * index (generated by mkindex), and helpfile
*/
+#define DICT "/usr/share/games/boggle/dictionary"
+#define DICTINDEX "/usr/share/games/boggle/dictindex"
+#define HELPFILE "/usr/share/games/boggle/helpfile"
-#define settimer(x) clocks.x = clocks.system++
+/*
+ * The theoretical maximum for MAXWORDLEN is ('a' - 1) == 96
+ */
+#define MAXWORDLEN 40 /* Maximum word length */
+#define MAXPWORDS 200 /* Maximum number of player's words */
+#define MAXMWORDS 200 /* Maximum number of machine's words */
+#define MAXPSPACE 2000 /* Space for player's words */
+#define MAXMSPACE 4000 /* Space for machines's words */
-#if !defined(TN3270)
+#define MAXCOLS 20
-#define SetIn3270()
+/*
+ * The following determine the screen layout
+ */
+#define PROMPT_COL 20
+#define PROMPT_LINE 2
-#endif /* !defined(TN3270) */
+#define BOARD_COL 0
+#define BOARD_LINE 0
-#define NETADD(c) { *netoring.supply = c; ring_supplied(&netoring, 1); }
-#define NET2ADD(c1,c2) { NETADD(c1); NETADD(c2); }
-#define NETBYTES() (ring_full_count(&netoring))
-#define NETROOM() (ring_empty_count(&netoring))
+#define SCORE_COL 20
+#define SCORE_LINE 0
-#define TTYADD(c) if (!(SYNCHing||flushout)) { \
- *ttyoring.supply = c; \
- ring_supplied(&ttyoring, 1); \
- }
-#define TTYBYTES() (ring_full_count(&ttyoring))
-#define TTYROOM() (ring_empty_count(&ttyoring))
+#define LIST_COL 0
+#define LIST_LINE 10
-/* Various modes */
-#define MODE_LOCAL_CHARS(m) ((m)&(MODE_EDIT|MODE_TRAPSIG))
-#define MODE_LOCAL_ECHO(m) ((m)&MODE_ECHO)
-#define MODE_COMMAND_LINE(m) ((m)==-1)
+#define TIMER_COL 20
+#define TIMER_LINE 2
-#define CONTROL(x) ((x)&0x1f) /* CTRL(x) is not portable */
+/*
+ * Internal dictionary index
+ * Initialized from the file created by mkindex
+ */
+struct dictindex {
+ long start;
+ long length;
+};
diff --git a/games/boggle/boggle/boggle.6 b/games/boggle/boggle/boggle.6
new file mode 100644
index 000000000000..2b9f3053775d
--- /dev/null
+++ b/games/boggle/boggle/boggle.6
@@ -0,0 +1,114 @@
+.\" Copyright (c) 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" Barry Brachman.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)boggle.6 8.1 (Berkeley) 6/11/93
+.\"
+.TH BOGGLE 6 "June 11, 1993"
+.UC
+.SH NAME
+boggle \- word search game
+.SH SYNOPSIS
+boggle [-bd] [-s seed] [-t time] [-w length] [+[+]] [boardspec]
+.SH DESCRIPTION
+The object of
+.I boggle
+is to find as many words as possible on the Boggle board within the three
+minute time limit.
+A Boggle board is a four by four arrangement of Boggle cubes, each side of
+each cube displaying a letter of the alphabet or `qu'.
+Words are formed by finding a sequence of cubes (letters) that are in the
+game's dictionary.
+The (N+1)th cube in the word must be horizontally,
+vertically, or diagonally adjacent to the Nth cube.
+Cubes cannot be reused.
+Words consist solely of lower case letters and must be at least 3 letters long.
+.PP
+Command line flags can be given to change the rules of the game.
+The
+.B +
+flag allows a cube to be used multiple times, but not in succession.
+The
+.B ++
+flag allows the same cubes to be considered adjacent to itself.
+.B
+A seed other than the time of day is specified by
+.B -s#,
+where
+.B #
+is the seed.
+The time limit can be changed from the default 3 minutes by using the flag
+.B -t#,
+where
+.B #
+is the duration (in seconds) of each game.
+The minimum word length can be changed from 3 letters by specifying
+.B -w#,
+where
+.B #
+is the minimum number of letters to use.
+.PP
+A starting board position can be specified on the command line by
+listing the board left to right and top to bottom.
+.PP
+The
+.B -b
+flag puts
+.I boggle
+in batch mode.
+A
+.B boardspec
+must also be given.
+The dictionary is read from stdin and a list of words appearing in
+.B boardspec
+is printed to stdout.
+.PP
+Help is available during play by typing `?'.
+More detailed information on the game is given there.
+.SH BUGS
+If there are a great many words in the cube the final display of the words
+may scroll off of the screen. (On a 25 line screen about 130 words can be
+displayed.)
+.sp 2
+No word can contain a 'q' that is not immediately followed by a 'u'.
+.sp 2
+When using the '+' or '++' options the display of words found in the board
+doesn't indicate reused cubes.
+.SH AUTHOR
+Boggle is a trademark of Parker Brothers.
+.br
+Barry Brachman
+.br
+Dept. of Computer Science
+.br
+University of British Columbia
diff --git a/eBones/usr.bin/register/pathnames.h b/games/boggle/boggle/extern.h
index 611c54f28a24..9761c4f66d7c 100644
--- a/eBones/usr.bin/register/pathnames.h
+++ b/games/boggle/boggle/extern.h
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 1990, 1993
+ * Copyright (c) 1993
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -30,10 +30,42 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * @(#)pathnames.h 8.1 (Berkeley) 6/1/93
+ * @(#)extern.h 8.1 (Berkeley) 6/11/93
*/
-#define SERVER_KEYDIR "/etc/kerberosIV/register_keys"
-#define CLIENT_KEYFILE "/etc/kerberosIV/.update.key"
-#define KEYFILE_BASE ".update.key"
-#define _PATH_KPASSWD "/usr/bin/passwd"
+void addword __P((char *));
+void badword __P((void));
+char *batchword __P((FILE *));
+void checkdict __P((void));
+int checkword __P((char *, int, int *));
+void cleanup __P((void));
+void delay __P((int));
+long dictseek __P((FILE *, long, int));
+void findword __P((void));
+void flushin __P((FILE *));
+char *getline __P((char *));
+void getword __P((char *));
+int help __P((void));
+int inputch __P((void));
+int loaddict __P((FILE *));
+int loadindex __P((char *));
+void newgame __P((char *));
+char *nextword __P((FILE *));
+FILE *opendict __P((char *));
+void playgame __P((void));
+void prompt __P((char *));
+void prtable __P((char *[],
+ int, int, int, void (*)(char *[], int), int (*)(char *[], int)));
+void putstr __P((char *));
+void redraw __P((void));
+void results __P((void));
+int setup __P((int, long));
+void showboard __P((char *));
+void showstr __P((char *, int));
+void showword __P((int));
+void starttime __P((void));
+void startwords __P((void));
+void stoptime __P((void));
+int timerch __P((void));
+void usage __P((void));
+int validword __P((char *));
diff --git a/secure/libexec/telnetd/authenc.c b/games/boggle/boggle/help.c
index ccb463c94d1e..684c0ff60bd9 100644
--- a/secure/libexec/telnetd/authenc.c
+++ b/games/boggle/boggle/help.c
@@ -1,7 +1,10 @@
/*-
- * Copyright (c) 1991, 1993
+ * Copyright (c) 1993
* The Regents of the University of California. All rights reserved.
*
+ * This code is derived from software contributed to Berkeley by
+ * Barry Brachman.
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
@@ -32,60 +35,67 @@
*/
#ifndef lint
-static char sccsid[] = "@(#)authenc.c 8.2 (Berkeley) 5/30/95";
+static char sccsid[] = "@(#)help.c 8.1 (Berkeley) 6/11/93";
#endif /* not lint */
-#if defined(AUTHENTICATION) || defined(ENCRYPTION)
-#include "telnetd.h"
-#include <libtelnet/misc.h>
+#include <curses.h>
+#include <stdio.h>
+
+#include "bog.h"
+#include "extern.h"
- int
-net_write(str, len)
- unsigned char *str;
- int len;
+int
+help()
{
- if (nfrontp + len < netobuf + BUFSIZ) {
- memmove((void *)nfrontp, (void *)str, len);
- nfrontp += len;
- return(len);
+ extern int nlines;
+ int eof, i;
+ FILE *fp;
+ WINDOW *win;
+ char buf[BUFSIZ];
+
+ if ((fp = fopen(HELPFILE, "r")) == NULL)
+ return(-1);
+ win = newwin(0, 0, 0, 0);
+ clearok(win, 1);
+
+ eof = 0;
+ if (ungetc(getc(fp), fp) == EOF) {
+ wprintw(win, "There doesn't seem to be any help.");
+ eof = 1; /* Nothing there... */
}
- return(0);
-}
- void
-net_encrypt()
-{
-#ifdef ENCRYPTION
- char *s = (nclearto > nbackp) ? nclearto : nbackp;
- if (s < nfrontp && encrypt_output) {
- (*encrypt_output)((unsigned char *)s, nfrontp - s);
+ while (!eof) {
+ for (i = 0; i < nlines - 3; i++) {
+ if (fgets(buf, sizeof(buf), fp) == (char *) NULL) {
+ eof = 1;
+ break;
+ }
+ if (buf[0] == '.' && buf[1] == '\n')
+ break;
+ wprintw(win, "%s", buf);
+ }
+ if (eof || ungetc(getc(fp), fp) == EOF) {
+ eof = 1;
+ break;
+ }
+ wmove(win, nlines - 1, 0);
+ wprintw(win,
+ "Type <space> to continue, anything else to quit...");
+ wrefresh(win);
+ if ((inputch() & 0177) != ' ')
+ break;
+ wclear(win);
}
- nclearto = nfrontp;
-#endif /* ENCRYPTION */
-}
- int
-telnet_spin()
-{
- ttloop();
+ fclose(fp);
+ if (eof) {
+ wmove(win, nlines - 1, 0);
+ wprintw(win, "Hit any key to continue...");
+ wrefresh(win);
+ inputch();
+ }
+ delwin(win);
+ clearok(stdscr, 1);
+ refresh();
return(0);
}
-
- char *
-telnet_getenv(val)
- char *val;
-{
- extern char *getenv();
- return(getenv(val));
-}
-
- char *
-telnet_gets(prompt, result, length, echo)
- char *prompt;
- char *result;
- int length;
- int echo;
-{
- return((char *)0);
-}
-#endif /* defined(AUTHENTICATION) || defined(ENCRYPTION) */
diff --git a/games/boggle/boggle/helpfile b/games/boggle/boggle/helpfile
new file mode 100644
index 000000000000..c511efe7e1ad
--- /dev/null
+++ b/games/boggle/boggle/helpfile
@@ -0,0 +1,92 @@
+
+Commands:
+
+Enter word: <return> or <linefeed> or <space>
+Delete previous character: <delete> or <backspace>
+Delete line: <^u> or <^w>
+Redraw screen: <^l> or <^r>
+Pause game: <^s>
+Resume game: <^q> or <^s>
+Suspend game (BSD only): <^z>
+Give up on current cube: <^d>
+Show remaining time: <space> first thing on a line
+Show help: ? (Suspends timer until done)
+Exit game: <^c>
+
+(^u means "control u", etc.)
+
+[Note for users of versions of this program that do not display a timer:
+The first word entered after the timer has run out causes a list of all the
+words you found, the words you missed, and your running statistics to be
+displayed.]
+
+Any time you are prompted while the board is displayed you can type:
+ <esc>word
+to see where "word" is on the board.
+
+Usage:
+ bog [-b] [-d] [-s#] [-t#] [-w#] [+[+]] [boardspec]
+
+ -b: batch mode (boardspec must be present); dictionary read from stdin
+ -d: debug mode
+ -s#: use # as the random number seed
+ -t#: time limit is # seconds instead of default 180
+ -w#: minimum word length is # letters instead of default 3
+ +: can reuse a cube, but not twice in succession
+ ++: can reuse cubes arbitrarily
+ boardspec: the first board to use (use 'q' for 'qu'); e.g.:
+ bog nolezeebnqieegei
+.
+ Default Rules
+
+A Boggle board is a four by four arrangement of Boggle cubes.
+You have 3 minutes to find as many words as possible in the Boggle board.
+Words are formed by finding a sequence of cubes (letters) that are in the
+game's dictionary. The (N+1)th cube in the word must be horizontally,
+vertically, or diagonally adjacent to the Nth cube. Cubes cannot be reused.
+Words consist solely of lower case letters and must be at least 3 letters long.
+.
+ Options
+
+Command line flags can be given to change the rules of the game.
+The '+' flag allows a cube to be used multiple times, but not in succession.
+The '++' flag makes each cube adjacent to itself.
+The time limit can be changed from the default 3 minutes by using the flag
+'-t#', where # is the duration (in seconds) of each game.
+The minimum word length can be changed from 3 letters by specifying 'w#',
+where # is the minimum number of letters to use.
+.
+ Bugs and Limitations
+
+The following bugs and problems are known to exist:
+
+- If there are a great many words in the cube the final display of the words
+ may scroll off of the screen. (On a 25 line screen about 130 words can be
+ displayed.)
+
+- Computing the complete word list can be too slow on small machines.
+
+- No word can contain a 'q' that is not immediately followed by a 'u'.
+
+- When using the '+' or '++' options the display of words found in the board
+ doesn't indicate reused cubes.
+.
+ About This Program
+
+Permission is given to freely copy and distribute this software providing:
+
+1) You do not sell it,
+2) You do not use it for commercial advantage,
+3) If you pass the program on you must make the source code available, and
+4) This notice must accompany the distribution
+
+Please notify the author of any bugs or if you have any suggestions.
+
+Copyright (c) 1988
+Barry Brachman | UUCP: {alberta,uw-beaver,uunet}!
+Dept. of Computer Science| ubc-vision!ubc-csgrads!brachman
+Univ. of British Columbia| Internet: brachman@cs.ubc.ca
+Vancouver, B.C. V6T 1W5 | brachman%ubc.csnet@csnet-relay.arpa
+(604) 228-5010 | brachman@ubc.csnet
+
+Boggle is a trademark of Parker Brothers.
diff --git a/games/boggle/boggle/mach.c b/games/boggle/boggle/mach.c
new file mode 100644
index 000000000000..ea6071145dbd
--- /dev/null
+++ b/games/boggle/boggle/mach.c
@@ -0,0 +1,676 @@
+/*-
+ * Copyright (c) 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Barry Brachman.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)mach.c 8.1 (Berkeley) 6/11/93";
+#endif /* not lint */
+
+/*
+ * Terminal interface
+ *
+ * Input is raw and unechoed
+ */
+#include <ctype.h>
+#include <curses.h>
+#include <fcntl.h>
+#include <sgtty.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+
+#include "bog.h"
+#include "extern.h"
+
+static int ccol, crow, maxw;
+static int colstarts[MAXCOLS], ncolstarts;
+static int lastline;
+int ncols, nlines;
+
+extern char *pword[], *mword[];
+extern int ngames, nmwords, npwords, tnmwords, tnpwords;
+
+static void cont_catcher __P((int));
+static int prwidth __P((char *[], int));
+static void prword __P((char *[], int));
+static void stop_catcher __P((int));
+static void tty_cleanup __P((void));
+static int tty_setup __P((void));
+static void tty_showboard __P((char *));
+static void winch_catcher __P((int));
+
+/*
+ * Do system dependent initialization
+ * This is called once, when the program starts
+ */
+int
+setup(sflag, seed)
+ int sflag;
+ long seed;
+{
+ extern int debug;
+
+ if (tty_setup() < 0)
+ return(-1);
+
+ if (!sflag)
+ time(&seed);
+ srandom(seed);
+ if (debug)
+ (void) printf("seed = %ld\n", seed);
+ return(0);
+}
+
+/*
+ * Do system dependent clean up
+ * This is called once, just before the program terminates
+ */
+void
+cleanup()
+{
+ tty_cleanup();
+}
+
+/*
+ * Display the player's word list, the list of words not found, and the running
+ * stats
+ */
+void
+results()
+{
+ int col, row;
+ int denom1, denom2;
+
+ move(LIST_LINE, LIST_COL);
+ clrtobot();
+ printw("Words you found (%d):", npwords);
+ refresh();
+ move(LIST_LINE + 1, LIST_COL);
+ prtable(pword, npwords, 0, ncols, prword, prwidth);
+
+ getyx(stdscr, row, col);
+ move(row + 1, col);
+ printw("Words you missed (%d):", nmwords);
+ refresh();
+ move(row + 2, col);
+ prtable(mword, nmwords, 0, ncols, prword, prwidth);
+
+ denom1 = npwords + nmwords;
+ denom2 = tnpwords + tnmwords;
+
+ move(SCORE_LINE, SCORE_COL);
+ printw("Percentage: %0.2f%% (%0.2f%% over %d game%s)\n",
+ denom1 ? (100.0 * npwords) / (double) (npwords + nmwords) : 0.0,
+ denom2 ? (100.0 * tnpwords) / (double) (tnpwords + tnmwords) : 0.0,
+ ngames, ngames > 1 ? "s" : "");
+}
+
+static void
+prword(base, indx)
+ char *base[];
+ int indx;
+{
+ printw("%s", base[indx]);
+}
+
+static int
+prwidth(base, indx)
+ char *base[];
+ int indx;
+{
+ return (strlen(base[indx]));
+}
+
+/*
+ * Main input routine
+ *
+ * - doesn't accept words longer than MAXWORDLEN or containing caps
+ */
+char *
+getline(q)
+ char *q;
+{
+ register int ch, done;
+ register char *p;
+ int row, col;
+
+ p = q;
+ done = 0;
+ while (!done) {
+ ch = timerch();
+ switch (ch) {
+ case '\n':
+ case '\r':
+ case ' ':
+ done = 1;
+ break;
+ case '\033':
+ findword();
+ break;
+ case '\177': /* <del> */
+ case '\010': /* <bs> */
+ if (p == q)
+ break;
+ p--;
+ getyx(stdscr, row, col);
+ move(row, col - 1);
+ clrtoeol();
+ refresh();
+ break;
+ case '\025': /* <^u> */
+ case '\027': /* <^w> */
+ if (p == q)
+ break;
+ getyx(stdscr, row, col);
+ move(row, col - (int) (p - q));
+ p = q;
+ clrtoeol();
+ refresh();
+ break;
+#ifdef SIGTSTP
+ case '\032': /* <^z> */
+ stop_catcher(0);
+ break;
+#endif
+ case '\023': /* <^s> */
+ stoptime();
+ printw("<PAUSE>");
+ refresh();
+ while ((ch = inputch()) != '\021' && ch != '\023')
+ ;
+ move(crow, ccol);
+ clrtoeol();
+ refresh();
+ starttime();
+ break;
+ case '\003': /* <^c> */
+ cleanup();
+ exit(0);
+ /*NOTREACHED*/
+ case '\004': /* <^d> */
+ done = 1;
+ ch = EOF;
+ break;
+ case '\014': /* <^l> */
+ case '\022': /* <^r> */
+ redraw();
+ break;
+ case '?':
+ stoptime();
+ if (help() < 0)
+ showstr("Can't open help file", 1);
+ starttime();
+ break;
+ default:
+ if (!islower(ch))
+ break;
+ if ((int) (p - q) == MAXWORDLEN) {
+ p = q;
+ badword();
+ break;
+ }
+ *p++ = ch;
+ addch(ch);
+ refresh();
+ break;
+ }
+ }
+ *p = '\0';
+ if (ch == EOF)
+ return((char *) NULL);
+ return(q);
+}
+
+int
+inputch()
+{
+ return (getch() & 0177);
+}
+
+void
+redraw()
+{
+ clearok(stdscr, 1);
+ refresh();
+}
+
+void
+flushin(fp)
+ FILE *fp;
+{
+ int arg;
+
+ arg = FREAD;
+ (void)ioctl(fileno(fp), TIOCFLUSH, &arg);
+}
+
+static int gone;
+
+/*
+ * Stop the game timer
+ */
+void
+stoptime()
+{
+ extern long start_t;
+ long t;
+
+ (void)time(&t);
+ gone = (int) (t - start_t);
+}
+
+/*
+ * Restart the game timer
+ */
+void
+starttime()
+{
+ extern long start_t;
+ long t;
+
+ (void)time(&t);
+ start_t = t - (long) gone;
+}
+
+/*
+ * Initialize for the display of the player's words as they are typed
+ * This display starts at (LIST_LINE, LIST_COL) and goes "down" until the last
+ * line. After the last line a new column is started at LIST_LINE
+ * Keep track of each column position for showword()
+ * There is no check for exceeding COLS
+ */
+void
+startwords()
+{
+ crow = LIST_LINE;
+ ccol = LIST_COL;
+ maxw = 0;
+ ncolstarts = 1;
+ colstarts[0] = LIST_COL;
+ move(LIST_LINE, LIST_COL);
+ refresh();
+}
+
+/*
+ * Add a word to the list and start a new column if necessary
+ * The maximum width of the current column is maintained so we know where
+ * to start the next column
+ */
+void
+addword(w)
+ char *w;
+{
+ int n;
+
+ if (crow == lastline) {
+ crow = LIST_LINE;
+ ccol += (maxw + 5);
+ colstarts[ncolstarts++] = ccol;
+ maxw = 0;
+ move(crow, ccol);
+ }
+ else {
+ move(++crow, ccol);
+ if ((n = strlen(w)) > maxw)
+ maxw = n;
+ }
+ refresh();
+}
+
+/*
+ * The current word is unacceptable so erase it
+ */
+void
+badword()
+{
+
+ move(crow, ccol);
+ clrtoeol();
+ refresh();
+}
+
+/*
+ * Highlight the nth word in the list (starting with word 0)
+ * No check for wild arg
+ */
+void
+showword(n)
+ int n;
+{
+ int col, row;
+
+ row = LIST_LINE + n % (lastline - LIST_LINE + 1);
+ col = colstarts[n / (lastline - LIST_LINE + 1)];
+ move(row, col);
+ standout();
+ printw("%s", pword[n]);
+ standend();
+ move(crow, ccol);
+ refresh();
+ delay(15);
+ move(row, col);
+ printw("%s", pword[n]);
+ move(crow, ccol);
+ refresh();
+}
+
+/*
+ * Get a word from the user and check if it is in either of the two
+ * word lists
+ * If it's found, show the word on the board for a short time and then
+ * erase the word
+ *
+ * Note: this function knows about the format of the board
+ */
+void
+findword()
+{
+ int c, col, found, i, r, row;
+ char buf[MAXWORDLEN + 1];
+ extern char board[];
+ extern int usedbits, wordpath[];
+ extern char *mword[], *pword[];
+ extern int nmwords, npwords;
+
+ getyx(stdscr, r, c);
+ getword(buf);
+ found = 0;
+ for (i = 0; i < npwords; i++) {
+ if (strcmp(buf, pword[i]) == 0) {
+ found = 1;
+ break;
+ }
+ }
+ if (!found) {
+ for (i = 0; i < nmwords; i++) {
+ if (strcmp(buf, mword[i]) == 0) {
+ found = 1;
+ break;
+ }
+ }
+ }
+ for (i = 0; i < MAXWORDLEN; i++)
+ wordpath[i] = -1;
+ usedbits = 0;
+ if (!found || checkword(buf, -1, wordpath) == -1) {
+ move(r, c);
+ clrtoeol();
+ addstr("[???]");
+ refresh();
+ delay(10);
+ move(r, c);
+ clrtoeol();
+ refresh();
+ return;
+ }
+
+ standout();
+ for (i = 0; wordpath[i] != -1; i++) {
+ row = BOARD_LINE + (wordpath[i] / 4) * 2 + 1;
+ col = BOARD_COL + (wordpath[i] % 4) * 4 + 2;
+ move(row, col);
+ if (board[wordpath[i]] == 'q')
+ printw("Qu");
+ else
+ printw("%c", toupper(board[wordpath[i]]));
+ move(r, c);
+ refresh();
+ delay(5);
+ }
+
+ standend();
+
+ for (i = 0; wordpath[i] != -1; i++) {
+ row = BOARD_LINE + (wordpath[i] / 4) * 2 + 1;
+ col = BOARD_COL + (wordpath[i] % 4) * 4 + 2;
+ move(row, col);
+ if (board[wordpath[i]] == 'q')
+ printw("Qu");
+ else
+ printw("%c", toupper(board[wordpath[i]]));
+ }
+ move(r, c);
+ clrtoeol();
+ refresh();
+}
+
+/*
+ * Display a string at the current cursor position for the given number of secs
+ */
+void
+showstr(str, delaysecs)
+ char *str;
+ int delaysecs;
+{
+ addstr(str);
+ refresh();
+ delay(delaysecs * 10);
+ move(crow, ccol);
+ clrtoeol();
+ refresh();
+}
+
+void
+putstr(s)
+ char *s;
+{
+ addstr(s);
+}
+
+/*
+ * Get a valid word and put it in the buffer
+ */
+void
+getword(q)
+ char *q;
+{
+ int ch, col, done, i, row;
+ char *p;
+
+ done = 0;
+ i = 0;
+ p = q;
+ addch('[');
+ refresh();
+ while (!done && i < MAXWORDLEN - 1) {
+ ch = getch() & 0177;
+ switch (ch) {
+ case '\177': /* <del> */
+ case '\010': /* <bs> */
+ if (p == q)
+ break;
+ p--;
+ getyx(stdscr, row, col);
+ move(row, col - 1);
+ clrtoeol();
+ break;
+ case '\025': /* <^u> */
+ case '\027': /* <^w> */
+ if (p == q)
+ break;
+ getyx(stdscr, row, col);
+ move(row, col - (int) (p - q));
+ p = q;
+ clrtoeol();
+ break;
+ case ' ':
+ case '\n':
+ case '\r':
+ done = 1;
+ break;
+ case '\014': /* <^l> */
+ case '\022': /* <^r> */
+ clearok(stdscr, 1);
+ refresh();
+ break;
+ default:
+ if (islower(ch)) {
+ *p++ = ch;
+ addch(ch);
+ i++;
+ }
+ break;
+ }
+ refresh();
+ }
+ *p = '\0';
+ addch(']');
+ refresh();
+}
+
+void
+showboard(b)
+ char *b;
+{
+ tty_showboard(b);
+}
+
+void
+prompt(mesg)
+ char *mesg;
+{
+ move(PROMPT_LINE, PROMPT_COL);
+ printw("%s", mesg);
+ move(PROMPT_LINE + 1, PROMPT_COL);
+ refresh();
+}
+
+static int
+tty_setup()
+{
+ initscr();
+ raw();
+ noecho();
+
+ /*
+ * Does curses look at the winsize structure?
+ * Should handle SIGWINCH ...
+ */
+ nlines = LINES;
+ lastline = nlines - 1;
+ ncols = COLS;
+
+ (void) signal(SIGTSTP, stop_catcher);
+ (void) signal(SIGCONT, cont_catcher);
+ (void) signal(SIGWINCH, winch_catcher);
+ return(0);
+}
+
+static void
+stop_catcher(signo)
+ int signo;
+{
+ stoptime();
+ noraw();
+ echo();
+ move(nlines - 1, 0);
+ refresh();
+
+ (void) signal(SIGTSTP, SIG_DFL);
+ (void) sigsetmask(sigblock(0) & ~(1 << (SIGTSTP-1)));
+ (void) kill(0, SIGTSTP);
+ (void) signal(SIGTSTP, stop_catcher);
+}
+
+static void
+cont_catcher(signo)
+ int signo;
+{
+ (void) signal(SIGCONT, cont_catcher);
+ noecho();
+ raw();
+ clearok(stdscr, 1);
+ move(crow, ccol);
+ refresh();
+ starttime();
+}
+
+/*
+ * The signal is caught but nothing is done about it...
+ * It would mean reformatting the entire display
+ */
+static void
+winch_catcher(signo)
+ int signo;
+{
+ struct winsize win;
+
+ (void) signal(SIGWINCH, winch_catcher);
+ (void) ioctl(fileno(stdout), TIOCGWINSZ, &win);
+ /*
+ LINES = win.ws_row;
+ COLS = win.ws_col;
+ */
+}
+
+static void
+tty_cleanup()
+{
+ move(nlines - 1, 0);
+ refresh();
+ noraw();
+ echo();
+ endwin();
+}
+
+static void
+tty_showboard(b)
+ char *b;
+{
+ register int i;
+ int line;
+
+ clear();
+ move(BOARD_LINE, BOARD_COL);
+ line = BOARD_LINE;
+ printw("+---+---+---+---+");
+ move(++line, BOARD_COL);
+ for (i = 0; i < 16; i++) {
+ if (b[i] == 'q')
+ printw("| Qu");
+ else
+ printw("| %c ", toupper(b[i]));
+ if ((i + 1) % 4 == 0) {
+ printw("|");
+ move(++line, BOARD_COL);
+ printw("+---+---+---+---+");
+ move(++line, BOARD_COL);
+ }
+ }
+ move(SCORE_LINE, SCORE_COL);
+ printw("Type '?' for help");
+ refresh();
+}
diff --git a/games/boggle/boggle/prtable.c b/games/boggle/boggle/prtable.c
new file mode 100644
index 000000000000..f62e00d8c6f7
--- /dev/null
+++ b/games/boggle/boggle/prtable.c
@@ -0,0 +1,127 @@
+/*-
+ * Copyright (c) 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Barry Brachman.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)prtable.c 8.1 (Berkeley) 6/11/93
+ */
+
+#include <curses.h>
+
+#include "extern.h"
+
+#define NCOLS 5
+
+static int get_maxlen __P((char *[], int, int (*)(char **, int)));
+
+/*
+ * Routine to print a table
+ * Modified from 'ls.c' mods (BJB/83)
+ * Arguments:
+ * base - address of first entry
+ * num - number of entries
+ * d_cols - number of columns to use if > 0, "best" size if == 0
+ * width - max line width if not zero
+ * prentry - address of the routine to call to print the string
+ * length - address of the routine to call to determine the length
+ * of string to be printed
+ *
+ * prtable and length are called with the the address of the base and
+ * an index
+ */
+void
+prtable(base, num, d_cols, width, prentry, length)
+ char *base[];
+ int num, d_cols, width;
+ void (*prentry) __P((char *[], int));
+ int (*length) __P((char *[], int));
+{
+ register int c, j;
+ register int a, b, cols, loc, maxlen, nrows, z;
+ int col, row;
+
+ if (num == 0)
+ return;
+ maxlen = get_maxlen(base, num, length) + 1;
+ if (d_cols > 0)
+ cols = d_cols;
+ else
+ cols = width / maxlen;
+ if (cols == 0)
+ cols = NCOLS;
+ nrows = (num - 1) / cols + 1;
+ for (a = 1; a <= nrows; a++) {
+ b = c = z = loc = 0;
+ for (j = 0; j < num; j++) {
+ c++;
+ if (c >= a + b)
+ break;
+ }
+ while (j < num) {
+ (*prentry)(base, j);
+ loc += (*length)(base, j);
+ z++;
+ b += nrows;
+ for (j++; j < num; j++) {
+ c++;
+ if (c >= a + b)
+ break;
+ }
+ if (j < num) {
+ while (loc < z * maxlen) {
+ addch(' ');
+ loc++;
+ }
+ }
+ }
+ getyx(stdscr, row, col);
+ move(row + 1, 0);
+ }
+ refresh();
+}
+
+static int
+get_maxlen(base, num, length)
+ char *base[];
+ int num;
+ int (*length) __P((char **, int));
+{
+ register int i, len, max;
+
+ max = (*length)(base, 0);
+ for (i = 0; i < num; i++) {
+ if ((len = (*length)(base, i)) > max)
+ max = len;
+ }
+ return(max);
+}
diff --git a/secure/lib/libtelnet/genget.c b/games/boggle/boggle/timer.c
index f87fcf0a5d43..f4ed6b8c334a 100644
--- a/secure/lib/libtelnet/genget.c
+++ b/games/boggle/boggle/timer.c
@@ -1,7 +1,10 @@
/*-
- * Copyright (c) 1991, 1993
+ * Copyright (c) 1993
* The Regents of the University of California. All rights reserved.
*
+ * This code is derived from software contributed to Berkeley by
+ * Barry Brachman.
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
@@ -32,74 +35,85 @@
*/
#ifndef lint
-static char sccsid[] = "@(#)genget.c 8.2 (Berkeley) 5/30/95";
+static char sccsid[] = "@(#)timer.c 8.2 (Berkeley) 2/22/94";
#endif /* not lint */
+#include <sys/param.h>
+#include <sys/time.h>
+
+#include <curses.h>
+#include <setjmp.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
-#include <ctype.h>
+#include "bog.h"
+#include "extern.h"
+
+static int waitch __P((long));
-#define LOWER(x) (isupper(x) ? tolower(x) : (x))
/*
- * The prefix function returns 0 if *s1 is not a prefix
- * of *s2. If *s1 exactly matches *s2, the negative of
- * the length is returned. If *s1 is a prefix of *s2,
- * the length of *s1 is returned.
+ * Update the display of the remaining time while waiting for a character
+ * If time runs out do a longjmp() to the game controlling routine, returning
+ * non-zero; oth. return the character
+ * Leave the cursor where it was initially
*/
- int
-isprefix(s1, s2)
- register char *s1, *s2;
+int
+timerch()
{
- register int n = 0;
- char *os1;
- register char c1, c2;
+ extern int tlimit;
+ extern long start_t;
+ extern jmp_buf env;
+ long prevt, t;
+ int col, remaining, row;
- if (*s1 == '\0')
- return(-1);
- os1 = s1;
- c1 = *s1;
- c2 = *s2;
- while (LOWER(c1) == LOWER(c2)) {
- if (c1 == '\0')
+ getyx(stdscr, row, col);
+ prevt = 0L;
+ for (;;) {
+ if (waitch(1000L) == 1)
break;
- c1 = *++s1;
- c2 = *++s2;
- }
- return(*s1 ? 0 : (*s2 ? (s1 - os1) : (os1 - s1)));
-}
-
-static char *ambiguous; /* special return value for command routines */
-
- char **
-genget(name, table, stlen)
- char *name; /* name to match */
- char **table; /* name entry in table */
- int stlen;
-{
- register char **c, **found;
- register int n;
-
- if (name == 0)
- return 0;
-
- found = 0;
- for (c = table; *c != 0; c = (char **)((char *)c + stlen)) {
- if ((n = isprefix(name, *c)) == 0)
+ time(&t);
+ if (t == prevt)
continue;
- if (n < 0) /* exact match */
- return(c);
- if (found)
- return(&ambiguous);
- found = c;
+ prevt = t;
+ remaining = tlimit - (int) (t - start_t);
+ if (remaining < 0) {
+ longjmp(env, 1);
+ /*NOTREACHED*/
+ }
+ move(TIMER_LINE, TIMER_COL);
+ printw("%d:%02d", remaining / 60, remaining % 60);
+ move(row, col);
+ refresh();
}
- return(found);
+ return (getch() & 0177);
}
/*
- * Function call version of Ambiguous()
+ * Wait up to 'delay' microseconds for input to appear
+ * Returns 1 if input is ready, 0 oth.
*/
- int
-Ambiguous(s)
- char *s;
+static int
+waitch(delay)
+ long delay;
{
- return((char **)s == &ambiguous);
+ fd_set fdbits;
+ struct timeval duration;
+
+ duration.tv_sec = 0;
+ duration.tv_usec = delay;
+ FD_ZERO(&fdbits);
+ FD_SET(STDIN_FILENO, &fdbits);
+ return (select(32, &fdbits, NULL, NULL, &duration));
+}
+
+void
+delay(tenths)
+ int tenths;
+{
+ struct timeval duration;
+
+ duration.tv_usec = (tenths % 10 ) * 100000L;
+ duration.tv_sec = (long) (tenths / 10);
+ select(32, 0, 0, 0, &duration);
}
diff --git a/games/boggle/boggle/word.c b/games/boggle/boggle/word.c
new file mode 100644
index 000000000000..ed4cf28cfaca
--- /dev/null
+++ b/games/boggle/boggle/word.c
@@ -0,0 +1,216 @@
+/*-
+ * Copyright (c) 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Barry Brachman.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)word.c 8.1 (Berkeley) 6/11/93";
+#endif /* not lint */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "bog.h"
+#include "extern.h"
+
+static char *dictspace, *dictend;
+static char *sp;
+
+static int first = 1, lastch = 0;
+
+/*
+ * Return the next word in the compressed dictionary in 'buffer' or
+ * NULL on end-of-file
+ */
+char *
+nextword(fp)
+ FILE *fp;
+{
+ extern int wordlen;
+ register int ch, pcount;
+ register char *p;
+ static char buf[MAXWORDLEN + 1];
+
+ if (fp == NULL) {
+ if (sp == dictend)
+ return (NULL);
+
+ p = buf + (int) *sp++;
+
+ /*
+ * The dictionary ends with a null byte
+ */
+ while (*sp >= 'a')
+ if ((*p++ = *sp++) == 'q')
+ *p++ = 'u';
+ } else {
+ if (first) {
+ if ((pcount = getc(fp)) == EOF)
+ return (NULL);
+ first = 0;
+ } else if ((pcount = lastch) == EOF)
+ return (NULL);
+
+ p = buf + pcount;
+
+ while ((ch = getc(fp)) != EOF && ch >= 'a')
+ if ((*p++ = ch) == 'q')
+ *p++ = 'u';
+ lastch = ch;
+ }
+ wordlen = (int) (p - buf);
+ *p = '\0';
+ return (buf);
+}
+
+/*
+ * Reset the state of nextword() and do the fseek()
+ */
+long
+dictseek(fp, offset, ptrname)
+ FILE *fp;
+ long offset;
+ int ptrname;
+{
+ if (fp == NULL) {
+ if ((sp = dictspace + offset) >= dictend)
+ return (-1);
+ return (0);
+ }
+
+ first = 1;
+ return (fseek(fp, offset, ptrname));
+}
+
+FILE *
+opendict(dict)
+ char *dict;
+{
+ FILE *fp;
+
+ if ((fp = fopen(dict, "r")) == NULL)
+ return (NULL);
+ return (fp);
+}
+
+/*
+ * Load the given dictionary and initialize the pointers
+ */
+int
+loaddict(fp)
+ FILE *fp;
+{
+ struct stat statb;
+ long n;
+ int st;
+ char *p;
+
+ if (fstat(fileno(fp), &statb) < 0) {
+ (void)fclose(fp);
+ return (-1);
+ }
+
+ /*
+ * An extra character (a sentinel) is allocated and set to null
+ * to improve the expansion loop in nextword().
+ */
+ if ((dictspace = malloc(statb.st_size + 1)) == NULL) {
+ (void)fclose(fp);
+ return (-1);
+ }
+ n = (long)statb.st_size;
+ sp = dictspace;
+ dictend = dictspace + n;
+
+ p = dictspace;
+ st = -1;
+ while (n > 0 && (st = fread(p, 1, BUFSIZ, fp)) > 0) {
+ p += st;
+ n -= st;
+ }
+ if (st < 0) {
+ (void)fclose(fp);
+ (void)fprintf(stderr, "Error reading dictionary\n");
+ return (-1);
+ }
+ *p = '\0';
+ return (0);
+}
+
+/*
+ * Dependent on the exact format of the index file:
+ * Starting offset field begins in column 1 and length field in column 9
+ * Taking the easy way out, the input buffer is made "large" and a check
+ * is made for lines that are too long
+ */
+int
+loadindex(indexfile)
+ char *indexfile;
+{
+ register int i, j;
+ char buf[BUFSIZ];
+ FILE *fp;
+ extern struct dictindex dictindex[];
+
+ if ((fp = fopen(indexfile, "r")) == NULL) {
+ (void) fprintf(stderr, "Can't open '%s'\n", indexfile);
+ return (-1);
+ }
+ i = 0;
+ while (fgets(buf, sizeof(buf), fp) != NULL) {
+ if (strchr(buf, '\n') == NULL) {
+ (void)fprintf(stderr,
+ "A line in the index file is too long\n");
+ return(-1);
+ }
+ j = *buf - 'a';
+ if (i != j) {
+ (void) fprintf(stderr, "Bad index order\n");
+ return(-1);
+ }
+ dictindex[j].start = atol(buf + 1);
+ dictindex[j].length = atol(buf + 9) - dictindex[j].start;
+ i++;
+ }
+ if (i != 26) {
+ (void) fprintf(stderr, "Bad index length\n");
+ return(-1);
+ }
+ (void) fclose(fp);
+ return(0);
+}
diff --git a/games/boggle/mkdict/Makefile b/games/boggle/mkdict/Makefile
new file mode 100644
index 000000000000..83a323a1952b
--- /dev/null
+++ b/games/boggle/mkdict/Makefile
@@ -0,0 +1,9 @@
+# @(#)Makefile 8.1 (Berkeley) 6/11/93
+
+PROG= mkdict
+CFLAGS+=-I${.CURDIR}/../boggle
+NOMAN=noman
+
+install:
+
+.include <bsd.prog.mk>
diff --git a/eBones/usr.sbin/make_keypair/make_keypair.c b/games/boggle/mkdict/mkdict.c
index deb67ac60e1f..2bec6a88973f 100644
--- a/eBones/usr.sbin/make_keypair/make_keypair.c
+++ b/games/boggle/mkdict/mkdict.c
@@ -1,7 +1,10 @@
/*-
- * Copyright (c) 1988, 1993
+ * Copyright (c) 1993
* The Regents of the University of California. All rights reserved.
*
+ * This code is derived from software contributed to Berkeley by
+ * Barry Brachman.
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
@@ -31,104 +34,91 @@
* SUCH DAMAGE.
*/
-#if 0
#ifndef lint
static char copyright[] =
-"@(#) Copyright (c) 1988, 1993\n\
+"@(#) Copyright (c) 1993\n\
The Regents of the University of California. All rights reserved.\n";
-static char sccsid[] = "@(#)make_keypair.c 8.1 (Berkeley) 6/1/93";
#endif /* not lint */
-#endif
-#include <sys/types.h>
-#include <sys/file.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <unistd.h>
-#include <string.h>
-#include <stdio.h>
-#include <netdb.h>
-#include <des.h>
-#include <krb.h>
-#include "pathnames.h"
-#include "register_proto.h"
+#ifndef lint
+static char sccsid[] = "@(#)mkdict.c 8.1 (Berkeley) 6/11/93";
+#endif /* not lint */
-void usage(char *name);
-void make_key(struct in_addr addr);
+/*
+ * Filter out words that:
+ * 1) Are not completely made up of lower case letters
+ * 2) Contain a 'q' not immediately followed by a 'u'
+ * 3) Are less that 3 characters long
+ * 4) Are greater than MAXWORDLEN characters long
+ */
-char * progname;
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "bog.h"
-void
+int
main(argc, argv)
- int argc;
- char **argv;
+ int argc;
+ char *argv[];
{
- struct hostent *hp;
- char *addr;
- int i;
- struct sockaddr_in sin;
-
- progname = *argv; /* argv[0] */
-
- if (argc != 2) {
- usage(argv[0]);
- exit(1);
- }
+ register char *p, *q;
+ register int ch, common, n, nwords;
+ int current, len, prev, qcount;
+ char buf[2][MAXWORDLEN + 1];
- if ((hp = gethostbyname(argv[1])) == NULL) {
- herror(argv[1]);
- exit(1);
- }
+ prev = 0;
+ current = 1;
+ buf[prev][0] = '\0';
+ if (argc == 2)
+ n = atoi(argv[1]);
- for (i = 0; (addr = hp->h_addr_list[i]); i++) {
- addr = hp->h_addr_list[i];
- bcopy(addr, &sin.sin_addr, hp->h_length);
+ for (nwords = 1;
+ fgets(buf[current], MAXWORDLEN + 1, stdin) != NULL; ++nwords) {
+ if ((p = index(buf[current], '\n')) == NULL) {
+ fprintf(stderr,
+ "mkdict: word too long: %s\n", buf[current]);
+ while ((ch = getc(stdin)) != EOF && ch != '\n')
+ ;
+ if (ch == EOF)
+ break;
+ continue;
+ }
+ len = 0;
+ for (p = buf[current]; *p != '\n'; p++) {
+ if (!islower(*p))
+ break;
+ if (*p == 'q') {
+ q = p + 1;
+ if (*q != 'u')
+ break;
+ else {
+ while (*q = *(q + 1))
+ q++;
+ }
+ len++;
+ }
+ len++;
+ }
+ if (*p != '\n' || len < 3 || len > MAXWORDLEN)
+ continue;
+ if (argc == 2 && nwords % n)
+ continue;
- printf("Making key for host %s (%s)\n",
- argv[1], inet_ntoa(sin.sin_addr));
- make_key(sin.sin_addr);
+ *p = '\0';
+ p = buf[current];
+ q = buf[prev];
+ qcount = 0;
+ while ((ch = *p++) == *q++ && ch != '\0')
+ if (ch == 'q')
+ qcount++;
+ common = p - buf[current] - 1;
+ printf("%c%s", common + qcount, p - 1);
+ prev = !prev;
+ current = !current;
}
- printf("==========\n");
- printf("One copy of the each key should be put in %s on the\n",
- SERVER_KEYDIR);
- printf("Kerberos server machine (mode 600, owner root).\n");
- printf("Another copy of each key should be put on the named\n");
- printf("client as %sXXX.XXX.XXX.XXX (same modes as above),\n",
- CLIENT_KEYFILE);
- printf("where the X's refer to digits of the host's inet address.\n");
- (void)fflush(stdout);
+ fprintf(stderr, "%d words\n", nwords);
exit(0);
}
-
-void
-make_key(addr)
- struct in_addr addr;
-{
- struct keyfile_data kfile;
- char namebuf[255];
- int fd;
-
- (void)sprintf(namebuf, "%s%s",
- CLIENT_KEYFILE,
- inet_ntoa(addr));
- fd = open(namebuf, O_WRONLY|O_CREAT, 0600);
- if (fd < 0) {
- perror("open");
- exit(1);
- }
- random_key(kfile.kf_key);
- printf("writing to file -> %s ...", namebuf);
- if (write(fd, &kfile, sizeof(kfile)) != sizeof(kfile)) {
- fprintf(stderr, "error writing file %s\n", namebuf);
- }
- printf("done.\n");
- (void)close(fd);
- return;
-}
-
-void
-usage(name)
- char *name;
-{
- fprintf(stderr, "usage: %s host\n", name);
-}
diff --git a/games/boggle/mkindex/Makefile b/games/boggle/mkindex/Makefile
new file mode 100644
index 000000000000..0b8a02f42740
--- /dev/null
+++ b/games/boggle/mkindex/Makefile
@@ -0,0 +1,9 @@
+# @(#)Makefile 8.1 (Berkeley) 6/11/93
+
+PROG= mkindex
+CFLAGS+=-I${.CURDIR}/../boggle
+NOMAN=noman
+
+install:
+
+.include <bsd.prog.mk>
diff --git a/secure/usr.bin/telnet/authenc.c b/games/boggle/mkindex/mkindex.c
index 545df780051d..d9f97fa52c3c 100644
--- a/secure/usr.bin/telnet/authenc.c
+++ b/games/boggle/mkindex/mkindex.c
@@ -1,7 +1,10 @@
/*-
- * Copyright (c) 1991, 1993
+ * Copyright (c) 1993
* The Regents of the University of California. All rights reserved.
*
+ * This code is derived from software contributed to Berkeley by
+ * Barry Brachman.
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
@@ -32,80 +35,86 @@
*/
#ifndef lint
-static char sccsid[] = "@(#)authenc.c 8.1 (Berkeley) 6/6/93";
+static char copyright[] =
+"@(#) Copyright (c) 1993\n\
+ The Regents of the University of California. All rights reserved.\n";
+#endif /* not lint */
+
+#ifndef lint
+static char sccsid[] = "@(#)mkindex.c 8.1 (Berkeley) 6/11/93";
#endif /* not lint */
-#if defined(AUTHENTICATION) || defined(ENCRYPTION)
-#include <sys/types.h>
-#include <arpa/telnet.h>
-#include <libtelnet/encrypt.h>
-#include <libtelnet/misc.h>
+#include <stdio.h>
-#include "general.h"
-#include "ring.h"
-#include "externs.h"
-#include "defines.h"
-#include "types.h"
+#include "bog.h"
- int
-net_write(str, len)
- unsigned char *str;
- int len;
+char *nextword __P((FILE *, char *, int *, int *));
+
+int
+main(argc, argv)
+ int argc;
+ char *argv[];
{
- if (NETROOM() > len) {
- ring_supply_data(&netoring, str, len);
- if (str[0] == IAC && str[1] == SE)
- printsub('>', &str[2], len-2);
- return(len);
+ int clen, rlen, prev;
+ long off, start;
+ char buf[MAXWORDLEN + 1];
+
+ prev = '\0';
+ off = start = 0L;
+ while (nextword(stdin, buf, &clen, &rlen) != NULL) {
+ if (*buf != prev) {
+ if (prev != '\0')
+ printf("%c %6ld %6ld\n", prev, start, off - 1);
+ prev = *buf;
+ start = off;
+ }
+ off += clen + 1;
}
- return(0);
+ printf("%c %6ld %6ld\n", prev, start, off - 1);
+ exit(0);
}
- void
-net_encrypt()
+/*
+ * Return the next word in the compressed dictionary in 'buffer' or
+ * NULL on end-of-file
+ * Also set clen to the length of the compressed word (for mkindex) and
+ * rlen to the strlen() of the real word
+ */
+char *
+nextword(fp, buffer, clen, rlen)
+ FILE *fp;
+ char *buffer;
+ int *clen, *rlen;
{
-#ifdef ENCRYPTION
- if (encrypt_output)
- ring_encrypt(&netoring, encrypt_output);
- else
- ring_clearto(&netoring);
-#endif /* ENCRYPTION */
-}
+ register int ch, pcount;
+ register char *p, *q;
+ static char buf[MAXWORDLEN + 1];
+ static int first = 1;
+ static int lastch = 0;
- int
-telnet_spin()
-{
- return(-1);
-}
+ if (first) {
+ if ((pcount = getc(fp)) == EOF)
+ return (NULL);
+ first = 0;
+ }
+ else if ((pcount = lastch) == EOF)
+ return (NULL);
- char *
-telnet_getenv(val)
- char *val;
-{
- return((char *)env_getvalue((unsigned char *)val));
-}
+ p = buf + (*clen = pcount);
- char *
-telnet_gets(prompt, result, length, echo)
- char *prompt;
- char *result;
- int length;
- int echo;
-{
- extern char *getpass();
- extern int globalmode;
- int om = globalmode;
- char *res;
+ while ((ch = getc(fp)) != EOF && ch >= 'a')
+ *p++ = ch;
+ lastch = ch;
+ *p = '\0';
+
+ *rlen = (int) (p - buf);
+ *clen = *rlen - *clen;
- TerminalNewMode(-1);
- if (echo) {
- printf("%s", prompt);
- res = fgets(result, length, stdin);
- } else if (res = getpass(prompt)) {
- strncpy(result, res, length);
- res = result;
+ p = buf;
+ q = buffer;
+ while ((*q++ = *p) != '\0') {
+ if (*p++ == 'q')
+ *q++ = 'u';
}
- TerminalNewMode(om);
- return(res);
+ return (buffer);
}
-#endif /* defined(AUTHENTICATION) || defined(ENCRYPTION) */
diff --git a/games/bs/Makefile b/games/bs/Makefile
index 31498f4b9c88..6eef432a9648 100644
--- a/games/bs/Makefile
+++ b/games/bs/Makefile
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile,v 1.1.1.1 1994/12/03 04:33:28 ache Exp $
PROG= bs
MAN6= bs.6
diff --git a/games/grdc/Makefile b/games/grdc/Makefile
index 543f4be377db..d509e67abeb2 100644
--- a/games/grdc/Makefile
+++ b/games/grdc/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1.1.1 1994/12/03 04:34:46 ache Exp $
+# $Id: Makefile,v 1.1.1.1 1994/12/04 21:51:19 ache Exp $
PROG= grdc
MAN6= grdc.6
diff --git a/games/hack/hack.version.c b/games/hack/hack.version.c
index 3ac6868c151a..0c2febc9864e 100644
--- a/games/hack/hack.version.c
+++ b/games/hack/hack.version.c
@@ -1,6 +1,6 @@
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* hack.version.c - version 1.0.3 */
-/* $Header: hack.version.c,v 1.5 85/05/09 00:40:41 aeb Exp $ */
+/* $Header: /home/ncvs/src/games/hack/hack.version.c,v 1.1.1.1 1994/09/04 04:02:54 jkh Exp $ */
#include "date.h"
diff --git a/games/piano/piano.c b/games/piano/piano.c
index 69b3476976b0..a1564e196ff7 100644
--- a/games/piano/piano.c
+++ b/games/piano/piano.c
@@ -1,7 +1,7 @@
/*
* piano.c - a piano emulator
*/
-static char rcsid[] = "$Id: piano.c,v 1.1.1.1 1995/04/28 17:38:07 jkh Exp $";
+static char rcsid[] = "$Id: piano.c,v 1.2 1995/05/30 03:37:05 rgrimes Exp $";
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
diff --git a/games/tetris/Makefile b/games/tetris/Makefile
new file mode 100644
index 000000000000..d545f8383da7
--- /dev/null
+++ b/games/tetris/Makefile
@@ -0,0 +1,10 @@
+# @(#)Makefile 8.1 (Berkeley) 5/31/93
+
+PROG= tetris
+SRCS= input.c screen.c shapes.c scores.c tetris.c
+MAN6= tetris.6
+DPADD= ${LIBTERMCAP}
+LDADD= -ltermcap
+HIDEGAME=hidegame
+
+.include <bsd.prog.mk>
diff --git a/games/tetris/input.c b/games/tetris/input.c
new file mode 100644
index 000000000000..48da0884cd76
--- /dev/null
+++ b/games/tetris/input.c
@@ -0,0 +1,180 @@
+/*-
+ * Copyright (c) 1992, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Chris Torek and Darren F. Provine.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)input.c 8.1 (Berkeley) 5/31/93
+ */
+
+/*
+ * Tetris input.
+ */
+
+#include <sys/types.h>
+#include <sys/time.h>
+
+#include <errno.h>
+#include <unistd.h>
+
+#include "input.h"
+#include "tetris.h"
+
+/* return true iff the given timeval is positive */
+#define TV_POS(tv) \
+ ((tv)->tv_sec > 0 || ((tv)->tv_sec == 0 && (tv)->tv_usec > 0))
+
+/* subtract timeval `sub' from `res' */
+#define TV_SUB(res, sub) \
+ (res)->tv_sec -= (sub)->tv_sec; \
+ (res)->tv_usec -= (sub)->tv_usec; \
+ if ((res)->tv_usec < 0) { \
+ (res)->tv_usec += 1000000; \
+ (res)->tv_sec--; \
+ }
+
+/*
+ * Do a `read wait': select for reading from stdin, with timeout *tvp.
+ * On return, modify *tvp to reflect the amount of time spent waiting.
+ * It will be positive only if input appeared before the time ran out;
+ * otherwise it will be zero or perhaps negative.
+ *
+ * If tvp is nil, wait forever, but return if select is interrupted.
+ *
+ * Return 0 => no input, 1 => can read() from stdin
+ */
+int
+rwait(tvp)
+ register struct timeval *tvp;
+{
+ int i;
+ struct timeval starttv, endtv, *s;
+ extern int errno;
+#define NILTZ ((struct timezone *)0)
+
+ /*
+ * Someday, select() will do this for us.
+ * Just in case that day is now, and no one has
+ * changed this, we use a temporary.
+ */
+ if (tvp) {
+ (void) gettimeofday(&starttv, NILTZ);
+ endtv = *tvp;
+ s = &endtv;
+ } else
+ s = 0;
+again:
+ i = 1;
+ switch (select(1, (fd_set *)&i, (fd_set *)0, (fd_set *)0, s)) {
+
+ case -1:
+ if (tvp == 0)
+ return (-1);
+ if (errno == EINTR)
+ goto again;
+ stop("select failed, help");
+ /* NOTREACHED */
+
+ case 0: /* timed out */
+ tvp->tv_sec = 0;
+ tvp->tv_usec = 0;
+ return (0);
+ }
+ if (tvp) {
+ /* since there is input, we may not have timed out */
+ (void) gettimeofday(&endtv, NILTZ);
+ TV_SUB(&endtv, &starttv);
+ TV_SUB(tvp, &endtv); /* adjust *tvp by elapsed time */
+ }
+ return (1);
+}
+
+/*
+ * `sleep' for the current turn time (using select).
+ * Eat any input that might be available.
+ */
+void
+tsleep()
+{
+ struct timeval tv;
+ char c;
+
+ tv.tv_sec = 0;
+ tv.tv_usec = fallrate;
+ while (TV_POS(&tv))
+ if (rwait(&tv) && read(0, &c, 1) != 1)
+ break;
+}
+
+/*
+ * Eat up any input (used at end of game).
+ */
+void
+eat_input()
+{
+ struct timeval tv;
+ char c;
+
+ do {
+ tv.tv_sec = tv.tv_usec = 0;
+ } while (rwait(&tv) && read(0, &c, 1) == 1);
+}
+
+/*
+ * getchar with timeout.
+ */
+int
+tgetchar()
+{
+ static struct timeval timeleft;
+ char c;
+
+ /*
+ * Reset timeleft to fallrate whenever it is not positive.
+ * In any case, wait to see if there is any input. If so,
+ * take it, and update timeleft so that the next call to
+ * tgetchar() will not wait as long. If there is no input,
+ * make timeleft zero or negative, and return -1.
+ *
+ * Most of the hard work is done by rwait().
+ */
+ if (!TV_POS(&timeleft)) {
+ faster(); /* go faster */
+ timeleft.tv_sec = 0;
+ timeleft.tv_usec = fallrate;
+ }
+ if (!rwait(&timeleft))
+ return (-1);
+ if (read(0, &c, 1) != 1)
+ stop("end of file, help");
+ return ((int)(unsigned char)c);
+}
diff --git a/secure/lib/libtelnet/misc.h b/games/tetris/input.h
index 41ffa7f67aa7..733182d73357 100644
--- a/secure/lib/libtelnet/misc.h
+++ b/games/tetris/input.h
@@ -1,7 +1,10 @@
/*-
- * Copyright (c) 1991, 1993
+ * Copyright (c) 1992, 1993
* The Regents of the University of California. All rights reserved.
*
+ * This code is derived from software contributed to Berkeley by
+ * Chris Torek and Darren F. Provine.
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
@@ -30,13 +33,10 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * @(#)misc.h 8.1 (Berkeley) 6/4/93
+ * @(#)input.h 8.1 (Berkeley) 5/31/93
*/
-extern char *UserNameRequested;
-extern char *LocalHostName;
-extern char *RemoteHostName;
-extern int ConnectedCount;
-extern int ReservedPort;
-
-#include "misc-proto.h"
+void eat_input __P((void));
+int rwait __P((struct timeval *));
+int tgetchar __P((void));
+void tsleep __P((void));
diff --git a/eBones/usr.bin/register/register_proto.h b/games/tetris/pathnames.h
index 54789494071f..ba08dd116125 100644
--- a/eBones/usr.bin/register/register_proto.h
+++ b/games/tetris/pathnames.h
@@ -1,7 +1,10 @@
/*-
- * Copyright (c) 1989, 1993
+ * Copyright (c) 1992, 1993
* The Regents of the University of California. All rights reserved.
*
+ * This code is derived from software contributed to Berkeley by
+ * Chris Torek and Darren F. Provine.
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
@@ -30,14 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * @(#)register_proto.h 8.1 (Berkeley) 6/1/93
+ * @(#)pathnames.h 8.1 (Berkeley) 5/31/93
*/
-#define APPEND_DB 0x01
-#define ABORT 0x02
-
-#define GOTKEY_MSG "GOTKEY"
-
-struct keyfile_data {
- C_Block kf_key;
-};
+#define _PATH_SCOREFILE "/var/games/tetris.scores"
diff --git a/games/tetris/scores.c b/games/tetris/scores.c
new file mode 100644
index 000000000000..e7e6bb590ad8
--- /dev/null
+++ b/games/tetris/scores.c
@@ -0,0 +1,472 @@
+/*-
+ * Copyright (c) 1992, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Chris Torek and Darren F. Provine.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)scores.c 8.1 (Berkeley) 5/31/93
+ */
+
+/*
+ * Score code for Tetris, by Darren Provine (kilroy@gboro.glassboro.edu)
+ * modified 22 January 1992, to limit the number of entries any one
+ * person has.
+ *
+ * Major whacks since then.
+ */
+#include <errno.h>
+#include <fcntl.h>
+#include <pwd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <unistd.h>
+
+/*
+ * XXX - need a <termcap.h>
+ */
+int tputs __P((const char *, int, int (*)(int)));
+
+#include "pathnames.h"
+#include "screen.h"
+#include "scores.h"
+#include "tetris.h"
+
+/*
+ * Within this code, we can hang onto one extra "high score", leaving
+ * room for our current score (whether or not it is high).
+ *
+ * We also sometimes keep tabs on the "highest" score on each level.
+ * As long as the scores are kept sorted, this is simply the first one at
+ * that level.
+ */
+#define NUMSPOTS (MAXHISCORES + 1)
+#define NLEVELS (MAXLEVEL + 1)
+
+static time_t now;
+static int nscores;
+static int gotscores;
+static struct highscore scores[NUMSPOTS];
+
+static int checkscores __P((struct highscore *, int));
+static int cmpscores __P((const void *, const void *));
+static void getscores __P((FILE **));
+static void printem __P((int, int, struct highscore *, int, const char *));
+static char *thisuser __P((void));
+
+/*
+ * Read the score file. Can be called from savescore (before showscores)
+ * or showscores (if savescore will not be called). If the given pointer
+ * is not NULL, sets *fpp to an open file pointer that corresponds to a
+ * read/write score file that is locked with LOCK_EX. Otherwise, the
+ * file is locked with LOCK_SH for the read and closed before return.
+ *
+ * Note, we assume closing the stdio file releases the lock.
+ */
+static void
+getscores(fpp)
+ FILE **fpp;
+{
+ int sd, mint, lck;
+ char *mstr, *human;
+ FILE *sf;
+
+ if (fpp != NULL) {
+ mint = O_RDWR | O_CREAT;
+ mstr = "r+";
+ human = "read/write";
+ lck = LOCK_EX;
+ } else {
+ mint = O_RDONLY;
+ mstr = "r";
+ human = "reading";
+ lck = LOCK_SH;
+ }
+ sd = open(_PATH_SCOREFILE, mint, 0666);
+ if (sd < 0) {
+ if (fpp == NULL) {
+ nscores = 0;
+ return;
+ }
+ (void)fprintf(stderr, "tetris: cannot open %s for %s: %s\n",
+ _PATH_SCOREFILE, human, strerror(errno));
+ exit(1);
+ }
+ if ((sf = fdopen(sd, mstr)) == NULL) {
+ (void)fprintf(stderr, "tetris: cannot fdopen %s for %s: %s\n",
+ _PATH_SCOREFILE, human, strerror(errno));
+ exit(1);
+ }
+
+ /*
+ * Grab a lock.
+ */
+ if (flock(sd, lck))
+ (void)fprintf(stderr,
+ "tetris: warning: score file %s cannot be locked: %s\n",
+ _PATH_SCOREFILE, strerror(errno));
+
+ nscores = fread(scores, sizeof(scores[0]), MAXHISCORES, sf);
+ if (ferror(sf)) {
+ (void)fprintf(stderr, "tetris: error reading %s: %s\n",
+ _PATH_SCOREFILE, strerror(errno));
+ exit(1);
+ }
+
+ if (fpp)
+ *fpp = sf;
+ else
+ (void)fclose(sf);
+}
+
+void
+savescore(level)
+ int level;
+{
+ register struct highscore *sp;
+ register int i;
+ int change;
+ FILE *sf;
+ const char *me;
+
+ getscores(&sf);
+ gotscores = 1;
+ (void)time(&now);
+
+ /*
+ * Allow at most one score per person per level -- see if we
+ * can replace an existing score, or (easiest) do nothing.
+ * Otherwise add new score at end (there is always room).
+ */
+ change = 0;
+ me = thisuser();
+ for (i = 0, sp = &scores[0]; i < nscores; i++, sp++) {
+ if (sp->hs_level != level || strcmp(sp->hs_name, me) != 0)
+ continue;
+ if (score > sp->hs_score) {
+ (void)printf("%s bettered %s %d score of %d!\n",
+ "\nYou", "your old level", level,
+ sp->hs_score * sp->hs_level);
+ sp->hs_score = score; /* new score */
+ sp->hs_time = now; /* and time */
+ change = 1;
+ } else if (score == sp->hs_score) {
+ (void)printf("%s tied %s %d high score.\n",
+ "\nYou", "your old level", level);
+ sp->hs_time = now; /* renew it */
+ change = 1; /* gotta rewrite, sigh */
+ } /* else new score < old score: do nothing */
+ break;
+ }
+ if (i >= nscores) {
+ strcpy(sp->hs_name, me);
+ sp->hs_level = level;
+ sp->hs_score = score;
+ sp->hs_time = now;
+ nscores++;
+ change = 1;
+ }
+
+ if (change) {
+ /*
+ * Sort & clean the scores, then rewrite.
+ */
+ nscores = checkscores(scores, nscores);
+ rewind(sf);
+ if (fwrite(scores, sizeof(*sp), nscores, sf) != nscores ||
+ fflush(sf) == EOF)
+ (void)fprintf(stderr,
+ "tetris: error writing %s: %s -- %s\n",
+ _PATH_SCOREFILE, strerror(errno),
+ "high scores may be damaged");
+ }
+ (void)fclose(sf); /* releases lock */
+}
+
+/*
+ * Get login name, or if that fails, get something suitable.
+ * The result is always trimmed to fit in a score.
+ */
+static char *
+thisuser()
+{
+ register const char *p;
+ register struct passwd *pw;
+ register size_t l;
+ static char u[sizeof(scores[0].hs_name)];
+
+ if (u[0])
+ return (u);
+ p = getlogin();
+ if (p == NULL || *p == '\0') {
+ pw = getpwuid(getuid());
+ if (pw != NULL)
+ p = pw->pw_name;
+ else
+ p = " ???";
+ }
+ l = strlen(p);
+ if (l >= sizeof(u))
+ l = sizeof(u) - 1;
+ bcopy(p, u, l);
+ u[l] = '\0';
+ return (u);
+}
+
+/*
+ * Score comparison function for qsort.
+ *
+ * If two scores are equal, the person who had the score first is
+ * listed first in the highscore file.
+ */
+static int
+cmpscores(x, y)
+ const void *x, *y;
+{
+ register const struct highscore *a, *b;
+ register long l;
+
+ a = x;
+ b = y;
+ l = (long)b->hs_level * b->hs_score - (long)a->hs_level * a->hs_score;
+ if (l < 0)
+ return (-1);
+ if (l > 0)
+ return (1);
+ if (a->hs_time < b->hs_time)
+ return (-1);
+ if (a->hs_time > b->hs_time)
+ return (1);
+ return (0);
+}
+
+/*
+ * If we've added a score to the file, we need to check the file and ensure
+ * that this player has only a few entries. The number of entries is
+ * controlled by MAXSCORES, and is to ensure that the highscore file is not
+ * monopolised by just a few people. People who no longer have accounts are
+ * only allowed the highest score. Scores older than EXPIRATION seconds are
+ * removed, unless they are someone's personal best.
+ * Caveat: the highest score on each level is always kept.
+ */
+static int
+checkscores(hs, num)
+ register struct highscore *hs;
+ int num;
+{
+ register struct highscore *sp;
+ register int i, j, k, numnames;
+ int levelfound[NLEVELS];
+ struct peruser {
+ char *name;
+ int times;
+ } count[NUMSPOTS];
+ register struct peruser *pu;
+
+ /*
+ * Sort so that highest totals come first.
+ *
+ * levelfound[i] becomes set when the first high score for that
+ * level is encountered. By definition this is the highest score.
+ */
+ qsort((void *)hs, nscores, sizeof(*hs), cmpscores);
+ for (i = MINLEVEL; i < NLEVELS; i++)
+ levelfound[i] = 0;
+ numnames = 0;
+ for (i = 0, sp = hs; i < num;) {
+ /*
+ * This is O(n^2), but do you think we care?
+ */
+ for (j = 0, pu = count; j < numnames; j++, pu++)
+ if (strcmp(sp->hs_name, pu->name) == 0)
+ break;
+ if (j == numnames) {
+ /*
+ * Add new user, set per-user count to 1.
+ */
+ pu->name = sp->hs_name;
+ pu->times = 1;
+ numnames++;
+ } else {
+ /*
+ * Two ways to keep this score:
+ * - Not too many (per user), still has acct, &
+ * score not dated; or
+ * - High score on this level.
+ */
+ if ((pu->times < MAXSCORES &&
+ getpwnam(sp->hs_name) != NULL &&
+ sp->hs_time + EXPIRATION >= now) ||
+ levelfound[sp->hs_level] == 0)
+ pu->times++;
+ else {
+ /*
+ * Delete this score, do not count it,
+ * do not pass go, do not collect $200.
+ */
+ num--;
+ for (k = i; k < num; k++)
+ hs[k] = hs[k + 1];
+ continue;
+ }
+ }
+ levelfound[sp->hs_level] = 1;
+ i++, sp++;
+ }
+ return (num > MAXHISCORES ? MAXHISCORES : num);
+}
+
+/*
+ * Show current scores. This must be called after savescore, if
+ * savescore is called at all, for two reasons:
+ * - Showscores munches the time field.
+ * - Even if that were not the case, a new score must be recorded
+ * before it can be shown anyway.
+ */
+void
+showscores(level)
+ int level;
+{
+ register struct highscore *sp;
+ register int i, n, c;
+ const char *me;
+ int levelfound[NLEVELS];
+
+ if (!gotscores)
+ getscores((FILE **)NULL);
+ (void)printf("\n\t\t\t Tetris High Scores\n");
+
+ /*
+ * If level == 0, the person has not played a game but just asked for
+ * the high scores; we do not need to check for printing in highlight
+ * mode. If SOstr is null, we can't do highlighting anyway.
+ */
+ me = level && SOstr ? thisuser() : NULL;
+
+ /*
+ * Set times to 0 except for high score on each level.
+ */
+ for (i = MINLEVEL; i < NLEVELS; i++)
+ levelfound[i] = 0;
+ for (i = 0, sp = scores; i < nscores; i++, sp++) {
+ if (levelfound[sp->hs_level])
+ sp->hs_time = 0;
+ else {
+ sp->hs_time = 1;
+ levelfound[sp->hs_level] = 1;
+ }
+ }
+
+ /*
+ * Page each screenful of scores.
+ */
+ for (i = 0, sp = scores; i < nscores; sp += n) {
+ n = 40;
+ if (i + n > nscores)
+ n = nscores - i;
+ printem(level, i + 1, sp, n, me);
+ if ((i += n) < nscores) {
+ (void)printf("\nHit RETURN to continue.");
+ (void)fflush(stdout);
+ while ((c = getchar()) != '\n')
+ if (c == EOF)
+ break;
+ (void)printf("\n");
+ }
+ }
+}
+
+static void
+printem(level, offset, hs, n, me)
+ int level, offset;
+ register struct highscore *hs;
+ register int n;
+ const char *me;
+{
+ register struct highscore *sp;
+ int nrows, row, col, item, i, highlight;
+ char buf[100];
+#define TITLE "Rank Score Name (points/level)"
+
+ /*
+ * This makes a nice two-column sort with headers, but it's a bit
+ * convoluted...
+ */
+ printf("%s %s\n", TITLE, n > 1 ? TITLE : "");
+
+ highlight = 0;
+ nrows = (n + 1) / 2;
+
+ for (row = 0; row < nrows; row++) {
+ for (col = 0; col < 2; col++) {
+ item = col * nrows + row;
+ if (item >= n) {
+ /*
+ * Can only occur on trailing columns.
+ */
+ (void)putchar('\n');
+ continue;
+ }
+ (void)printf(item + offset < 10 ? " " : " ");
+ sp = &hs[item];
+ (void)sprintf(buf,
+ "%d%c %6d %-11s (%d on %d)",
+ item + offset, sp->hs_time ? '*' : ' ',
+ sp->hs_score * sp->hs_level,
+ sp->hs_name, sp->hs_score, sp->hs_level);
+ /*
+ * Highlight if appropriate. This works because
+ * we only get one score per level.
+ */
+ if (me != NULL &&
+ sp->hs_level == level &&
+ sp->hs_score == score &&
+ strcmp(sp->hs_name, me) == 0) {
+ putpad(SOstr);
+ highlight = 1;
+ }
+ (void)printf("%s", buf);
+ if (highlight) {
+ putpad(SEstr);
+ highlight = 0;
+ }
+
+ /* fill in spaces so column 1 lines up */
+ if (col == 0)
+ for (i = 40 - strlen(buf); --i >= 0;)
+ (void)putchar(' ');
+ else /* col == 1 */
+ (void)putchar('\n');
+ }
+ }
+}
diff --git a/secure/usr.bin/telnet/fdset.h b/games/tetris/scores.h
index 045bb7221419..7a4865adb4ac 100644
--- a/secure/usr.bin/telnet/fdset.h
+++ b/games/tetris/scores.h
@@ -1,7 +1,10 @@
-/*
- * Copyright (c) 1988, 1993
+/*-
+ * Copyright (c) 1992, 1993
* The Regents of the University of California. All rights reserved.
*
+ * This code is derived from software contributed to Berkeley by
+ * Chris Torek and Darren F. Provine.
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
@@ -30,20 +33,22 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * @(#)fdset.h 8.1 (Berkeley) 6/6/93
+ * @(#)scores.h 8.1 (Berkeley) 5/31/93
*/
/*
- * The following is defined just in case someone should want to run
- * this telnet on a 4.2 system.
- *
+ * Tetris scores.
*/
+struct highscore {
+ char hs_name[20]; /* login name */
+ int hs_score; /* raw score */
+ int hs_level; /* play level */
+ time_t hs_time; /* time at game end */
+};
-#ifndef FD_SETSIZE
-
-#define FD_SET(n, p) ((p)->fds_bits[0] |= (1<<(n)))
-#define FD_CLR(n, p) ((p)->fds_bits[0] &= ~(1<<(n)))
-#define FD_ISSET(n, p) ((p)->fds_bits[0] & (1<<(n)))
-#define FD_ZERO(p) ((p)->fds_bits[0] = 0)
+#define MAXHISCORES 80
+#define MAXSCORES 9 /* maximum high score entries per person */
+#define EXPIRATION (5L * 365 * 24 * 60 * 60)
-#endif
+void savescore __P((int));
+void showscores __P((int));
diff --git a/games/tetris/screen.c b/games/tetris/screen.c
new file mode 100644
index 000000000000..9662ed015570
--- /dev/null
+++ b/games/tetris/screen.c
@@ -0,0 +1,454 @@
+/*-
+ * Copyright (c) 1992, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Chris Torek and Darren F. Provine.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)screen.c 8.1 (Berkeley) 5/31/93
+ */
+
+/*
+ * Tetris screen control.
+ */
+
+#include <sgtty.h>
+#include <sys/ioctl.h>
+
+#include <setjmp.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#ifndef sigmask
+#define sigmask(s) (1 << ((s) - 1))
+#endif
+
+#include "screen.h"
+#include "tetris.h"
+
+/*
+ * XXX - need a <termcap.h>
+ */
+int tgetent __P((char *, const char *));
+int tgetflag __P((const char *));
+int tgetnum __P((const char *));
+int tputs __P((const char *, int, int (*)(int)));
+
+static cell curscreen[B_SIZE]; /* 1 => standout (or otherwise marked) */
+static int curscore;
+static int isset; /* true => terminal is in game mode */
+static struct sgttyb oldtt;
+static void (*tstp)();
+
+char *tgetstr(), *tgoto();
+
+
+/*
+ * Capabilities from TERMCAP.
+ */
+char PC, *BC, *UP; /* tgoto requires globals: ugh! */
+short ospeed;
+
+static char
+ *bcstr, /* backspace char */
+ *CEstr, /* clear to end of line */
+ *CLstr, /* clear screen */
+ *CMstr, /* cursor motion string */
+#ifdef unneeded
+ *CRstr, /* "\r" equivalent */
+#endif
+ *HOstr, /* cursor home */
+ *LLstr, /* last line, first column */
+ *pcstr, /* pad character */
+ *TEstr, /* end cursor motion mode */
+ *TIstr; /* begin cursor motion mode */
+char
+ *SEstr, /* end standout mode */
+ *SOstr; /* begin standout mode */
+static int
+ COnum, /* co# value */
+ LInum, /* li# value */
+ MSflag; /* can move in standout mode */
+
+
+struct tcsinfo { /* termcap string info; some abbrevs above */
+ char tcname[3];
+ char **tcaddr;
+} tcstrings[] = {
+ "bc", &bcstr,
+ "ce", &CEstr,
+ "cl", &CLstr,
+ "cm", &CMstr,
+#ifdef unneeded
+ "cr", &CRstr,
+#endif
+ "le", &BC, /* move cursor left one space */
+ "pc", &pcstr,
+ "se", &SEstr,
+ "so", &SOstr,
+ "te", &TEstr,
+ "ti", &TIstr,
+ "up", &UP, /* cursor up */
+ 0
+};
+
+/* This is where we will actually stuff the information */
+
+static char combuf[1024], tbuf[1024];
+
+
+/*
+ * Routine used by tputs().
+ */
+int
+put(c)
+ int c;
+{
+
+ return (putchar(c));
+}
+
+/*
+ * putstr() is for unpadded strings (either as in termcap(5) or
+ * simply literal strings); putpad() is for padded strings with
+ * count=1. (See screen.h for putpad().)
+ */
+#define putstr(s) (void)fputs(s, stdout)
+#define moveto(r, c) putpad(tgoto(CMstr, c, r))
+
+/*
+ * Set up from termcap.
+ */
+void
+scr_init()
+{
+ static int bsflag, xsflag, sgnum;
+#ifdef unneeded
+ static int ncflag;
+#endif
+ char *term, *fill;
+ static struct tcninfo { /* termcap numeric and flag info */
+ char tcname[3];
+ int *tcaddr;
+ } tcflags[] = {
+ "bs", &bsflag,
+ "ms", &MSflag,
+#ifdef unneeded
+ "nc", &ncflag,
+#endif
+ "xs", &xsflag,
+ 0
+ }, tcnums[] = {
+ "co", &COnum,
+ "li", &LInum,
+ "sg", &sgnum,
+ 0
+ };
+
+ if ((term = getenv("TERM")) == NULL)
+ stop("you must set the TERM environment variable");
+ if (tgetent(tbuf, term) <= 0)
+ stop("cannot find your termcap");
+ fill = combuf;
+ {
+ register struct tcsinfo *p;
+
+ for (p = tcstrings; p->tcaddr; p++)
+ *p->tcaddr = tgetstr(p->tcname, &fill);
+ }
+ {
+ register struct tcninfo *p;
+
+ for (p = tcflags; p->tcaddr; p++)
+ *p->tcaddr = tgetflag(p->tcname);
+ for (p = tcnums; p->tcaddr; p++)
+ *p->tcaddr = tgetnum(p->tcname);
+ }
+ if (bsflag)
+ BC = "\b";
+ else if (BC == NULL && bcstr != NULL)
+ BC = bcstr;
+ if (CLstr == NULL)
+ stop("cannot clear screen");
+ if (CMstr == NULL || UP == NULL || BC == NULL)
+ stop("cannot do random cursor positioning via tgoto()");
+ PC = pcstr ? *pcstr : 0;
+ if (sgnum >= 0 || xsflag)
+ SOstr = SEstr = NULL;
+#ifdef unneeded
+ if (ncflag)
+ CRstr = NULL;
+ else if (CRstr == NULL)
+ CRstr = "\r";
+#endif
+}
+
+/* this foolery is needed to modify tty state `atomically' */
+static jmp_buf scr_onstop;
+
+#define sigunblock(mask) sigsetmask(sigblock(0) & ~(mask))
+
+static void
+stopset(sig)
+ int sig;
+{
+ (void) signal(sig, SIG_DFL);
+ (void) kill(getpid(), sig);
+ (void) sigunblock(sigmask(sig));
+ longjmp(scr_onstop, 1);
+}
+
+static void
+scr_stop()
+{
+ scr_end();
+ (void) kill(getpid(), SIGTSTP);
+ (void) sigunblock(sigmask(SIGTSTP));
+ scr_set();
+ scr_msg(key_msg, 1);
+}
+
+/*
+ * Set up screen mode.
+ */
+void
+scr_set()
+{
+ struct winsize ws;
+ struct sgttyb newtt;
+ volatile int omask;
+ void (*ttou)();
+
+ omask = sigblock(sigmask(SIGTSTP) | sigmask(SIGTTOU));
+ if ((tstp = signal(SIGTSTP, stopset)) == SIG_IGN)
+ (void) signal(SIGTSTP, SIG_IGN);
+ if ((ttou = signal(SIGTSTP, stopset)) == SIG_IGN)
+ (void) signal(SIGTSTP, SIG_IGN);
+ /*
+ * At last, we are ready to modify the tty state. If
+ * we stop while at it, stopset() above will longjmp back
+ * to the setjmp here and we will start over.
+ */
+ (void) setjmp(scr_onstop);
+ (void) sigsetmask(omask);
+ Rows = 0, Cols = 0;
+ if (ioctl(0, TIOCGWINSZ, &ws) == 0) {
+ Rows = ws.ws_row;
+ Cols = ws.ws_col;
+ }
+ if (Rows == 0)
+ Rows = LInum;
+ if (Cols == 0)
+ Cols = COnum;
+ if (Rows < MINROWS || Cols < MINCOLS) {
+ (void) fprintf(stderr,
+ "the screen is too small: must be at least %d x %d",
+ MINROWS, MINCOLS);
+ stop(""); /* stop() supplies \n */
+ }
+ if (ioctl(0, TIOCGETP, &oldtt))
+ stop("ioctl(TIOCGETP) fails");
+ newtt = oldtt;
+ newtt.sg_flags = (newtt.sg_flags | CBREAK) & ~(CRMOD | ECHO);
+ if ((newtt.sg_flags & TBDELAY) == XTABS)
+ newtt.sg_flags &= ~TBDELAY;
+ if (ioctl(0, TIOCSETN, &newtt))
+ stop("ioctl(TIOCSETN) fails");
+ ospeed = newtt.sg_ospeed;
+ omask = sigblock(sigmask(SIGTSTP) | sigmask(SIGTTOU));
+
+ /*
+ * We made it. We are now in screen mode, modulo TIstr
+ * (which we will fix immediately).
+ */
+ if (TIstr)
+ putstr(TIstr); /* termcap(5) says this is not padded */
+ if (tstp != SIG_IGN)
+ (void) signal(SIGTSTP, scr_stop);
+ (void) signal(SIGTTOU, ttou);
+
+ isset = 1;
+ (void) sigsetmask(omask);
+ scr_clear();
+}
+
+/*
+ * End screen mode.
+ */
+void
+scr_end()
+{
+ int omask = sigblock(sigmask(SIGTSTP) | sigmask(SIGTTOU));
+
+ /* move cursor to last line */
+ if (LLstr)
+ putstr(LLstr); /* termcap(5) says this is not padded */
+ else
+ moveto(Rows - 1, 0);
+ /* exit screen mode */
+ if (TEstr)
+ putstr(TEstr); /* termcap(5) says this is not padded */
+ (void) fflush(stdout);
+ (void) ioctl(0, TIOCSETN, &oldtt);
+ isset = 0;
+ /* restore signals */
+ (void) signal(SIGTSTP, tstp);
+ (void) sigsetmask(omask);
+}
+
+void
+stop(why)
+ char *why;
+{
+
+ if (isset)
+ scr_end();
+ (void) fprintf(stderr, "aborting: %s\n", why);
+ exit(1);
+}
+
+/*
+ * Clear the screen, forgetting the current contents in the process.
+ */
+void
+scr_clear()
+{
+
+ putpad(CLstr);
+ curscore = -1;
+ bzero((char *)curscreen, sizeof(curscreen));
+}
+
+#if vax && !__GNUC__
+typedef int regcell; /* pcc is bad at `register char', etc */
+#else
+typedef cell regcell;
+#endif
+
+/*
+ * Update the screen.
+ */
+void
+scr_update()
+{
+ register cell *bp, *sp;
+ register regcell so, cur_so = 0;
+ register int i, ccol, j;
+ int omask = sigblock(sigmask(SIGTSTP));
+
+ /* always leave cursor after last displayed point */
+ curscreen[D_LAST * B_COLS - 1] = -1;
+
+ if (score != curscore) {
+ if (HOstr)
+ putpad(HOstr);
+ else
+ moveto(0, 0);
+ (void) printf("%d", score);
+ curscore = score;
+ }
+
+ bp = &board[D_FIRST * B_COLS];
+ sp = &curscreen[D_FIRST * B_COLS];
+ for (j = D_FIRST; j < D_LAST; j++) {
+ ccol = -1;
+ for (i = 0; i < B_COLS; bp++, sp++, i++) {
+ if (*sp == (so = *bp))
+ continue;
+ *sp = so;
+ if (i != ccol) {
+ if (cur_so && MSflag) {
+ putpad(SEstr);
+ cur_so = 0;
+ }
+ moveto(RTOD(j), CTOD(i));
+ }
+ if (SOstr) {
+ if (so != cur_so) {
+ putpad(so ? SOstr : SEstr);
+ cur_so = so;
+ }
+ putstr(" ");
+ } else
+ putstr(so ? "XX" : " ");
+ ccol = i + 1;
+ /*
+ * Look ahead a bit, to avoid extra motion if
+ * we will be redrawing the cell after the next.
+ * Motion probably takes four or more characters,
+ * so we save even if we rewrite two cells
+ * `unnecessarily'. Skip it all, though, if
+ * the next cell is a different color.
+ */
+#define STOP (B_COLS - 3)
+ if (i > STOP || sp[1] != bp[1] || so != bp[1])
+ continue;
+ if (sp[2] != bp[2])
+ sp[1] = -1;
+ else if (i < STOP && so == bp[2] && sp[3] != bp[3]) {
+ sp[2] = -1;
+ sp[1] = -1;
+ }
+ }
+ }
+ if (cur_so)
+ putpad(SEstr);
+ (void) fflush(stdout);
+ (void) sigsetmask(omask);
+}
+
+/*
+ * Write a message (set!=0), or clear the same message (set==0).
+ * (We need its length in case we have to overwrite with blanks.)
+ */
+void
+scr_msg(s, set)
+ register char *s;
+ int set;
+{
+
+ if (set || CEstr == NULL) {
+ register int l = strlen(s);
+
+ moveto(Rows - 2, ((Cols - l) >> 1) - 1);
+ if (set)
+ putstr(s);
+ else
+ while (--l >= 0)
+ (void) putchar(' ');
+ } else {
+ moveto(Rows - 2, 0);
+ putpad(CEstr);
+ }
+}
diff --git a/secure/usr.bin/telnet/general.h b/games/tetris/screen.h
index 4efa9519469e..fd6793d17a14 100644
--- a/secure/usr.bin/telnet/general.h
+++ b/games/tetris/screen.h
@@ -1,7 +1,10 @@
-/*
- * Copyright (c) 1988, 1993
+/*-
+ * Copyright (c) 1992, 1993
* The Regents of the University of California. All rights reserved.
*
+ * This code is derived from software contributed to Berkeley by
+ * Chris Torek and Darren F. Provine.
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
@@ -30,16 +33,24 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * @(#)general.h 8.1 (Berkeley) 6/6/93
+ * @(#)screen.h 8.1 (Berkeley) 5/31/93
*/
/*
- * Some general definitions.
+ * Capabilities from TERMCAP (used in the score code).
*/
+char *SEstr; /* end standout mode */
+char *SOstr; /* begin standout mode */
+/*
+ * putpad() is for padded strings with count=1.
+ */
+#define putpad(s) tputs(s, 1, put)
-#define numberof(x) (sizeof x/sizeof x[0])
-#define highestof(x) (numberof(x)-1)
-
-#define ClearElement(x) memset((char *)&x, 0, sizeof x)
-#define ClearArray(x) memset((char *)x, 0, sizeof x)
+int put __P((int)); /* just calls putchar; for tputs */
+void scr_clear __P((void));
+void scr_end __P((void));
+void scr_init __P((void));
+void scr_msg __P((char *, int));
+void scr_set __P((void));
+void scr_update __P((void));
diff --git a/secure/lib/libtelnet/misc-proto.h b/games/tetris/shapes.c
index e5f334a9bdd0..39ba3788871f 100644
--- a/secure/lib/libtelnet/misc-proto.h
+++ b/games/tetris/shapes.c
@@ -1,7 +1,10 @@
/*-
- * Copyright (c) 1991, 1993
+ * Copyright (c) 1992, 1993
* The Regents of the University of California. All rights reserved.
*
+ * This code is derived from software contributed to Berkeley by
+ * Chris Torek and Darren F. Provine.
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
@@ -30,50 +33,79 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * @(#)misc-proto.h 8.1 (Berkeley) 6/4/93
+ * @(#)shapes.c 8.1 (Berkeley) 5/31/93
*/
/*
- * Copyright (C) 1990 by the Massachusetts Institute of Technology
- *
- * Export of this software from the United States of America is assumed
- * to require a specific license from the United States Government.
- * It is the responsibility of any person or organization contemplating
- * export to obtain such a license before exporting.
+ * Tetris shapes and related routines.
*
- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
- * distribute this software and its documentation for any purpose and
- * without fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright notice and
- * this permission notice appear in supporting documentation, and that
- * the name of M.I.T. not be used in advertising or publicity pertaining
- * to distribution of the software without specific, written prior
- * permission. M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is" without express
- * or implied warranty.
+ * Note that the first 7 are `well known'.
*/
-#ifndef __MISC_PROTO__
-#define __MISC_PROTO__
+#include <sys/cdefs.h>
+#include "tetris.h"
-#if !defined(P)
-#ifdef __STDC__
-#define P(x) x
-#else
-#define P(x) ()
-#endif
-#endif
+#define TL -B_COLS-1 /* top left */
+#define TC -B_COLS /* top center */
+#define TR -B_COLS+1 /* top right */
+#define ML -1 /* middle left */
+#define MR 1 /* middle right */
+#define BL B_COLS-1 /* bottom left */
+#define BC B_COLS /* bottom center */
+#define BR B_COLS+1 /* bottom right */
-void auth_encrypt_init P((char *, char *, char *, int));
-void auth_encrypt_connect P((int));
-void printd P((unsigned char *, int));
+struct shape shapes[] = {
+ /* 0*/ 7, TL, TC, MR,
+ /* 1*/ 8, TC, TR, ML,
+ /* 2*/ 9, ML, MR, BC,
+ /* 3*/ 3, TL, TC, ML,
+ /* 4*/ 12, ML, BL, MR,
+ /* 5*/ 15, ML, BR, MR,
+ /* 6*/ 18, ML, MR, /* sticks out */ 2,
+ /* 7*/ 0, TC, ML, BL,
+ /* 8*/ 1, TC, MR, BR,
+ /* 9*/ 10, TC, MR, BC,
+ /*10*/ 11, TC, ML, MR,
+ /*11*/ 2, TC, ML, BC,
+ /*12*/ 13, TC, BC, BR,
+ /*13*/ 14, TR, ML, MR,
+ /*14*/ 4, TL, TC, BC,
+ /*15*/ 16, TR, TC, BC,
+ /*16*/ 17, TL, MR, ML,
+ /*17*/ 5, TC, BC, BL,
+ /*18*/ 6, TC, BC, /* sticks out */ 2*B_COLS,
+};
/*
- * These functions are imported from the application
+ * Return true iff the given shape fits in the given position,
+ * taking the current board into account.
*/
-int net_write P((unsigned char *, int));
-void net_encrypt P((void));
-int telnet_spin P((void));
-char *telnet_getenv P((char *));
-char *telnet_gets P((char *, char *, int, int));
-#endif
+int
+fits_in(shape, pos)
+ struct shape *shape;
+ register int pos;
+{
+ register int *o = shape->off;
+
+ if (board[pos] || board[pos + *o++] || board[pos + *o++] ||
+ board[pos + *o])
+ return 0;
+ return 1;
+}
+
+/*
+ * Write the given shape into the current board, turning it on
+ * if `onoff' is 1, and off if `onoff' is 0.
+ */
+void
+place(shape, pos, onoff)
+ struct shape *shape;
+ register int pos, onoff;
+{
+ register int *o = shape->off;
+
+ board[pos] = onoff;
+ board[pos + *o++] = onoff;
+ board[pos + *o++] = onoff;
+ board[pos + *o] = onoff;
+}
diff --git a/games/tetris/tetris.6 b/games/tetris/tetris.6
new file mode 100644
index 000000000000..9513ca057d9e
--- /dev/null
+++ b/games/tetris/tetris.6
@@ -0,0 +1,154 @@
+.\" Copyright (c) 1992, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" Nancy L. Tinkham and Darren F. Provine.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)tetris.6 8.1 (Berkeley) 5/31/93
+.\"
+.Dd "May 31, 1993"
+.Dt TETRIS 6
+.Os
+.Sh NAME
+.Nm tetris
+.Nd the game of tetris
+.Sh SYNOPSIS
+.Nm
+.Op Fl s
+.Op Fl k Ar keys
+.Op Fl l Ar level
+.Sh DESCRIPTION
+The
+.Nm
+command runs display-based game which must be played on a CRT terminal.
+The object is to fit the shapes together forming complete rows,
+which then vanish.
+When the shapes fill up to the top, the game ends.
+You can optionally select a level of play, or custom-select control keys.
+.Pp
+The default level of play is 2.
+.Pp
+The default control keys are as follows:
+.Pp
+.Bl -tag -width "<space>" -compact -offset indent
+.It j
+move left
+.It k
+rotate 1/4 turn counterclockwise
+.It l
+move right
+.It <space>
+drop
+.It p
+pause
+.It q
+quit
+.El
+.Pp
+The options are as follows:
+.Bl -tag -width indent
+.It Fl k
+The default control keys can be changed using the
+.Fl k option.
+The
+.Ar keys
+argument must have the six keys in order, and, remember to quote any
+space or tab characters from the shell.
+For example:
+.sp
+.Dl "tetris -l 2 -k 'jkl pq'"
+.sp
+will play the default games, i.e. level 2 and with the default
+control keys.
+The current key settings are displayed at the bottom of the screen
+during play.
+.It Fl l
+Select a level of play.
+.It Fl s
+Display the top scores.
+.El
+.Pp
+.Sh PLAY
+At the start of the game, a shape will appear at the top of the screen,
+falling one square at a time.
+The speed at which it falls is determined directly by the level:
+if you select level 2, the blocks will fall twice per second;
+at level 9, they fall 9 times per second.
+(As the game goes on, things speed up,
+no matter what your initial selection.)
+When this shape
+.Dq "touches down"
+on the bottom of the field, another will appear at the top.
+.Pp
+You can move shapes to the left or right, rotate them counterclockwise,
+or drop them to the bottom by pressing the appropriate keys.
+As you fit them together, completed horizontal rows vanish,
+and any blocks above fall down to fill in.
+When the blocks stack up to the top of the screen, the game is over.
+.Sh SCORING
+You get one point for every block you fit into the stack,
+and one point for every space a block falls when you hit the drop key.
+(Dropping the blocks is therefore a good way to increase your score.)
+Your total score is the product of the level of play
+and your accumulated
+.ie t points\(em200
+.el points -- 200
+points on level 3 gives you a score of 600.
+Each player gets at most one entry on any level,
+for a total of nine scores in the high scores file.
+Players who no longer have accounts are limited to one score.
+Also, scores over 5 years old are expired.
+The exception to these conditions is that the highest score on a given
+level is
+.Em always
+kept,
+so that following generations can pay homage to those who have
+wasted serious amounts of time.
+.Pp
+The score list is produced at the end of the game.
+The printout includes each player's overall ranking,
+name, score, and how many points were scored on what level.
+Scores which are the highest on a given level
+are marked with asterisks
+.Dq * .
+.Sh FILES
+.Bl -tag -width /var/games/tetris.scoresxx
+.It /var/games/tetris.scores
+high score file
+.El
+.Sh BUGS
+The higher levels are unplayable without a fast terminal connection.
+.Sh AUTHORS
+Adapted from a 1989 International Obfuscated C Code Contest winner by
+Chris Torek and Darren F. Provine.
+.Pp
+Manual adapted from the original entry written by Nancy L. Tinkham and
+Darren F. Provine.
diff --git a/games/tetris/tetris.c b/games/tetris/tetris.c
new file mode 100644
index 000000000000..63265bc6b754
--- /dev/null
+++ b/games/tetris/tetris.c
@@ -0,0 +1,312 @@
+/*-
+ * Copyright (c) 1992, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Chris Torek and Darren F. Provine.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)tetris.c 8.1 (Berkeley) 5/31/93
+ */
+
+#ifndef lint
+static char copyright[] =
+"@(#) Copyright (c) 1992, 1993\n\
+ The Regents of the University of California. All rights reserved.\n";
+#endif /* not lint */
+
+/*
+ * Tetris (or however it is spelled).
+ */
+
+#include <sys/time.h>
+
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "input.h"
+#include "scores.h"
+#include "screen.h"
+#include "tetris.h"
+
+void onintr __P((int));
+void usage __P((void));
+
+/*
+ * Set up the initial board. The bottom display row is completely set,
+ * along with another (hidden) row underneath that. Also, the left and
+ * right edges are set.
+ */
+static void
+setup_board()
+{
+ register int i;
+ register cell *p;
+
+ p = board;
+ for (i = B_SIZE; i; i--)
+#ifndef mips
+ *p++ = i <= (2 * B_COLS) || (i % B_COLS) < 2;
+#else /* work around compiler bug */
+ *p++ = i <= (2 * B_COLS) || (i % B_COLS) < 2 ? 1 : 0;
+#endif
+}
+
+/*
+ * Elide any full active rows.
+ */
+static void
+elide()
+{
+ register int i, j, base;
+ register cell *p;
+
+ for (i = A_FIRST; i < A_LAST; i++) {
+ base = i * B_COLS + 1;
+ p = &board[base];
+ for (j = B_COLS - 2; *p++ != 0;) {
+ if (--j <= 0) {
+ /* this row is to be elided */
+ bzero(&board[base], B_COLS - 2);
+ scr_update();
+ tsleep();
+ while (--base != 0)
+ board[base + B_COLS] = board[base];
+ scr_update();
+ tsleep();
+ break;
+ }
+ }
+ }
+}
+
+int
+main(argc, argv)
+ int argc;
+ char *argv[];
+{
+ register int pos, c;
+ register struct shape *curshape;
+ register char *keys;
+ register int level = 2;
+ char key_write[6][10];
+ int ch, i, j;
+
+ keys = "jkl pq";
+
+ while ((ch = getopt(argc, argv, "k:l:s")) != EOF)
+ switch(ch) {
+ case 'k':
+ if (strlen(keys = optarg) != 6)
+ usage();
+ break;
+ case 'l':
+ level = atoi(optarg);
+ if (level < MINLEVEL || level > MAXLEVEL) {
+ (void)fprintf(stderr,
+ "tetris: level must be from %d to %d",
+ MINLEVEL, MAXLEVEL);
+ exit(1);
+ }
+ break;
+ case 's':
+ showscores(0);
+ exit(0);
+ case '?':
+ default:
+ usage();
+ }
+
+ argc -= optind;
+ argv += optind;
+
+ if (argc)
+ usage();
+
+ fallrate = 1000000 / level;
+
+ for (i = 0; i <= 5; i++) {
+ for (j = i+1; j <= 5; j++) {
+ if (keys[i] == keys[j]) {
+ (void)fprintf(stderr,
+ "%s: Duplicate command keys specified.\n",
+ argv[0]);
+ exit (1);
+ }
+ }
+ if (keys[i] == ' ')
+ strcpy(key_write[i], "<space>");
+ else {
+ key_write[i][0] = keys[i];
+ key_write[i][1] = '\0';
+ }
+ }
+
+ sprintf(key_msg,
+"%s - left %s - rotate %s - right %s - drop %s - pause %s - quit",
+ key_write[0], key_write[1], key_write[2], key_write[3],
+ key_write[4], key_write[5]);
+
+ (void)signal(SIGINT, onintr);
+ scr_init();
+ setup_board();
+
+ srandom(getpid());
+ scr_set();
+
+ pos = A_FIRST*B_COLS + (B_COLS/2)-1;
+ curshape = randshape();
+
+ scr_msg(key_msg, 1);
+
+ for (;;) {
+ place(curshape, pos, 1);
+ scr_update();
+ place(curshape, pos, 0);
+ c = tgetchar();
+ if (c < 0) {
+ /*
+ * Timeout. Move down if possible.
+ */
+ if (fits_in(curshape, pos + B_COLS)) {
+ pos += B_COLS;
+ continue;
+ }
+
+ /*
+ * Put up the current shape `permanently',
+ * bump score, and elide any full rows.
+ */
+ place(curshape, pos, 1);
+ score++;
+ elide();
+
+ /*
+ * Choose a new shape. If it does not fit,
+ * the game is over.
+ */
+ curshape = randshape();
+ pos = A_FIRST*B_COLS + (B_COLS/2)-1;
+ if (!fits_in(curshape, pos))
+ break;
+ continue;
+ }
+
+ /*
+ * Handle command keys.
+ */
+ if (c == keys[5]) {
+ /* quit */
+ break;
+ }
+ if (c == keys[4]) {
+ static char msg[] =
+ "paused - press RETURN to continue";
+
+ place(curshape, pos, 1);
+ do {
+ scr_update();
+ scr_msg(key_msg, 0);
+ scr_msg(msg, 1);
+ (void) fflush(stdout);
+ } while (rwait((struct timeval *)NULL) == -1);
+ scr_msg(msg, 0);
+ scr_msg(key_msg, 1);
+ place(curshape, pos, 0);
+ continue;
+ }
+ if (c == keys[0]) {
+ /* move left */
+ if (fits_in(curshape, pos - 1))
+ pos--;
+ continue;
+ }
+ if (c == keys[1]) {
+ /* turn */
+ struct shape *new = &shapes[curshape->rot];
+
+ if (fits_in(new, pos))
+ curshape = new;
+ continue;
+ }
+ if (c == keys[2]) {
+ /* move right */
+ if (fits_in(curshape, pos + 1))
+ pos++;
+ continue;
+ }
+ if (c == keys[3]) {
+ /* move to bottom */
+ while (fits_in(curshape, pos + B_COLS)) {
+ pos += B_COLS;
+ score++;
+ }
+ continue;
+ }
+ if (c == '\f')
+ scr_clear();
+ }
+
+ scr_clear();
+ scr_end();
+
+ (void)printf("Your score: %d point%s x level %d = %d\n",
+ score, score == 1 ? "" : "s", level, score * level);
+ savescore(level);
+
+ printf("\nHit RETURN to see high scores, ^C to skip.\n");
+
+ while ((i = getchar()) != '\n')
+ if (i == EOF)
+ break;
+
+ showscores(level);
+
+ exit(0);
+}
+
+void
+onintr(signo)
+ int signo;
+{
+ scr_clear();
+ scr_end();
+ exit(0);
+}
+
+void
+usage()
+{
+ (void)fprintf(stderr, "usage: tetris [-s] [-l level] [-keys]\n");
+ exit(1);
+}
diff --git a/games/tetris/tetris.h b/games/tetris/tetris.h
new file mode 100644
index 000000000000..b95627bb9b67
--- /dev/null
+++ b/games/tetris/tetris.h
@@ -0,0 +1,169 @@
+/*-
+ * Copyright (c) 1992, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Chris Torek and Darren F. Provine.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)tetris.h 8.1 (Berkeley) 5/31/93
+ */
+
+/*
+ * Definitions for Tetris.
+ */
+
+/*
+ * The display (`board') is composed of 23 rows of 12 columns of characters
+ * (numbered 0..22 and 0..11), stored in a single array for convenience.
+ * Columns 1 to 10 of rows 1 to 20 are the actual playing area, where
+ * shapes appear. Columns 0 and 11 are always occupied, as are all
+ * columns of rows 21 and 22. Rows 0 and 22 exist as boundary areas
+ * so that regions `outside' the visible area can be examined without
+ * worrying about addressing problems.
+ */
+
+ /* the board */
+#define B_COLS 12
+#define B_ROWS 23
+#define B_SIZE (B_ROWS * B_COLS)
+
+typedef unsigned char cell;
+cell board[B_SIZE]; /* 1 => occupied, 0 => empty */
+
+ /* the displayed area (rows) */
+#define D_FIRST 1
+#define D_LAST 22
+
+ /* the active area (rows) */
+#define A_FIRST 1
+#define A_LAST 21
+
+/*
+ * Minimum display size.
+ */
+#define MINROWS 23
+#define MINCOLS 40
+
+int Rows, Cols; /* current screen size */
+
+/*
+ * Translations from board coordinates to display coordinates.
+ * As with board coordinates, display coordiates are zero origin.
+ */
+#define RTOD(x) ((x) - 1)
+#define CTOD(x) ((x) * 2 + (((Cols - 2 * B_COLS) >> 1) - 1))
+
+/*
+ * A `shape' is the fundamental thing that makes up the game. There
+ * are 7 basic shapes, each consisting of four `blots':
+ *
+ * X.X X.X X.X
+ * X.X X.X X.X.X X.X X.X.X X.X.X X.X.X.X
+ * X X X
+ *
+ * 0 1 2 3 4 5 6
+ *
+ * Except for 3 and 6, the center of each shape is one of the blots.
+ * This blot is designated (0,0). The other three blots can then be
+ * described as offsets from the center. Shape 3 is the same under
+ * rotation, so its center is effectively irrelevant; it has been chosen
+ * so that it `sticks out' upward and leftward. Except for shape 6,
+ * all the blots are contained in a box going from (-1,-1) to (+1,+1);
+ * shape 6's center `wobbles' as it rotates, so that while it `sticks out'
+ * rightward, its rotation---a vertical line---`sticks out' downward.
+ * The containment box has to include the offset (2,0), making the overall
+ * containment box range from offset (-1,-1) to (+2,+1). (This is why
+ * there is only one row above, but two rows below, the display area.)
+ *
+ * The game works by choosing one of these shapes at random and putting
+ * its center at the middle of the first display row (row 1, column 5).
+ * The shape is moved steadily downward until it collides with something:
+ * either another shape, or the bottom of the board. When the shape can
+ * no longer be moved downwards, it is merged into the current board.
+ * At this time, any completely filled rows are elided, and blots above
+ * these rows move down to make more room. A new random shape is again
+ * introduced at the top of the board, and the whole process repeats.
+ * The game ends when the new shape will not fit at (1,5).
+ *
+ * While the shapes are falling, the user can rotate them counterclockwise
+ * 90 degrees (in addition to moving them left or right), provided that the
+ * rotation puts the blots in empty spaces. The table of shapes is set up
+ * so that each shape contains the index of the new shape obtained by
+ * rotating the current shape. Due to symmetry, each shape has exactly
+ * 1, 2, or 4 rotations total; the first 7 entries in the table represent
+ * the primary shapes, and the remaining 12 represent their various
+ * rotated forms.
+ */
+struct shape {
+ int rot; /* index of rotated version of this shape */
+ int off[3]; /* offsets to other blots if center is at (0,0) */
+};
+
+extern struct shape shapes[];
+#define randshape() (&shapes[random() % 7])
+
+/*
+ * Shapes fall at a rate faster than once per second.
+ *
+ * The initial rate is determined by dividing 1 million microseconds
+ * by the game `level'. (This is at most 1 million, or one second.)
+ * Each time the fall-rate is used, it is decreased a little bit,
+ * depending on its current value, via the `faster' macro below.
+ * The value eventually reaches a limit, and things stop going faster,
+ * but by then the game is utterly impossible.
+ */
+long fallrate; /* less than 1 million; smaller => faster */
+#define faster() (fallrate -= fallrate / 3000)
+
+/*
+ * Game level must be between 1 and 9. This controls the initial fall rate
+ * and affects scoring.
+ */
+#define MINLEVEL 1
+#define MAXLEVEL 9
+
+/*
+ * Scoring is as follows:
+ *
+ * When the shape comes to rest, and is integrated into the board,
+ * we score one point. If the shape is high up (at a low-numbered row),
+ * and the user hits the space bar, the shape plummets all the way down,
+ * and we score a point for each row it falls (plus one more as soon as
+ * we find that it is at rest and integrate it---until then, it can
+ * still be moved or rotated).
+ */
+int score; /* the obvious thing */
+
+char key_msg[100];
+
+int fits_in __P((struct shape *, int));
+void place __P((struct shape *, int, int));
+void stop __P((char *));
diff --git a/games/x11/xneko/xneko.c b/games/x11/xneko/xneko.c
index 170dfa395ec6..a04bc029bfdf 100644
--- a/games/x11/xneko/xneko.c
+++ b/games/x11/xneko/xneko.c
@@ -149,7 +149,7 @@ static char sccsid[] = "@(#)xneko.c 8.1 (Berkeley) 5/31/93";
#ifndef lint
static char
- rcsid[] = "$Header: /home/ncvs/src/games/x11/xneko/xneko.c,v 1.3 1995/09/23 09:44:11 asami Exp $";
+ rcsid[] = "$Header: /home/ncvs/src/games/x11/xneko/xneko.c,v 1.2.4.1 1995/10/09 05:23:48 davidg Exp $";
static char WriterMessage[] = "xneko: Programmed by Masayuki Koba, 1990";
#endif
diff --git a/gnu/games/Makefile b/gnu/games/Makefile
index 4a7577e53ef8..d2edcbcdc443 100644
--- a/gnu/games/Makefile
+++ b/gnu/games/Makefile
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile,v 1.1 1994/01/30 00:55:25 rgrimes Exp $
SUBDIR= chess
diff --git a/gnu/games/Makefile.inc b/gnu/games/Makefile.inc
index 4437a8428bef..c10f9e920060 100644
--- a/gnu/games/Makefile.inc
+++ b/gnu/games/Makefile.inc
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile.inc,v 1.1 1994/01/30 00:55:54 rgrimes Exp $
BINOWN?= games
.if defined(HIDEGAME)
diff --git a/gnu/games/chess/Xchess/Makefile b/gnu/games/chess/Xchess/Makefile
index c4d0d78adcd9..4b0d7b2ad59b 100644
--- a/gnu/games/chess/Xchess/Makefile
+++ b/gnu/games/chess/Xchess/Makefile
@@ -1,4 +1,4 @@
-# RCS Info: $Revision: 1.3 $ on $Date: 1995/05/30 04:41:16 $
+# RCS Info: $Revision: 1.3.4.1 $ on $Date: 1995/08/30 06:42:39 $
# $Source: /home/ncvs/src/gnu/games/chess/Xchess/Makefile,v $
# Copyright (c) 1985 Wayne A. Christopher, U. C. Berkeley CAD Group
#
diff --git a/gnu/games/chess/Xchess/XCircle.c b/gnu/games/chess/Xchess/XCircle.c
index fc7de0d717b1..90ce42512f87 100644
--- a/gnu/games/chess/Xchess/XCircle.c
+++ b/gnu/games/chess/Xchess/XCircle.c
@@ -20,7 +20,7 @@ file named COPYING. Among other things, the copyright notice
and this notice must be preserved on all copies. */
-/* RCS Info: $Revision: 1.3 $ on $Date: 1995/07/08 21:39:58 $
+/* RCS Info: $Revision: 1.2.4.1 $ on $Date: 1995/08/30 06:42:41 $
* $Source: /home/ncvs/src/gnu/games/chess/Xchess/XCircle.c,v $
* Copyright (c) 1986 Wayne A. Christopher, U. C. Berkeley CAD Group
* Permission is granted to do anything with this code except sell it
diff --git a/gnu/games/chess/Xchess/board.c b/gnu/games/chess/Xchess/board.c
index fab97d8394cd..f6c2339b53b1 100644
--- a/gnu/games/chess/Xchess/board.c
+++ b/gnu/games/chess/Xchess/board.c
@@ -20,7 +20,7 @@ file named COPYING. Among other things, the copyright notice
and this notice must be preserved on all copies. */
-/* RCS Info: $Revision: 1.1.1.1 $ on $Date: 1993/06/12 14:41:08 $
+/* RCS Info: $Revision: 1.2 $ on $Date: 1995/05/30 04:41:19 $
* $Source: /home/ncvs/src/gnu/games/chess/Xchess/board.c,v $
* Copyright (c) 1986 Wayne A. Christopher, U. C. Berkeley CAD Group
* Permission is granted to do anything with this code except sell it
diff --git a/gnu/games/chess/Xchess/button.c b/gnu/games/chess/Xchess/button.c
index d91005df4362..a22b2de61fcb 100644
--- a/gnu/games/chess/Xchess/button.c
+++ b/gnu/games/chess/Xchess/button.c
@@ -20,7 +20,7 @@ file named COPYING. Among other things, the copyright notice
and this notice must be preserved on all copies. */
-/* RCS Info: $Revision: 1.1.1.1 $ on $Date: 1993/06/12 14:41:15 $
+/* RCS Info: $Revision: 1.2 $ on $Date: 1995/05/30 04:41:20 $
* $Source: /home/ncvs/src/gnu/games/chess/Xchess/button.c,v $
* Copyright (c) 1986 Wayne A. Christopher, U. C. Berkeley CAD Group
* Permission is granted to do anything with this code except sell it
diff --git a/gnu/games/chess/Xchess/clock.c b/gnu/games/chess/Xchess/clock.c
index 88228b0bd0ae..1abff3bcae2d 100644
--- a/gnu/games/chess/Xchess/clock.c
+++ b/gnu/games/chess/Xchess/clock.c
@@ -20,7 +20,7 @@ file named COPYING. Among other things, the copyright notice
and this notice must be preserved on all copies. */
-/* RCS Info: $Revision: 1.1.1.1 $ on $Date: 1993/06/12 14:41:08 $
+/* RCS Info: $Revision: 1.2 $ on $Date: 1995/05/30 04:41:21 $
* $Source: /home/ncvs/src/gnu/games/chess/Xchess/clock.c,v $
* Copyright (c) 1986 Wayne A. Christopher, U. C. Berkeley CAD Group
* Permission is granted to do anything with this code except sell it
diff --git a/gnu/games/chess/Xchess/control.c b/gnu/games/chess/Xchess/control.c
index 7d23a7698b5a..995535c8be03 100644
--- a/gnu/games/chess/Xchess/control.c
+++ b/gnu/games/chess/Xchess/control.c
@@ -19,7 +19,7 @@ file named COPYING. Among other things, the copyright notice
and this notice must be preserved on all copies. */
-/* RCS Info: $Revision: 1.1.1.1 $ on $Date: 1993/06/12 14:41:11 $
+/* RCS Info: $Revision: 1.2 $ on $Date: 1995/05/30 04:41:23 $
* $Source: /home/ncvs/src/gnu/games/chess/Xchess/control.c,v $
* Copyright (c) 1986 Wayne A. Christopher, U. C. Berkeley CAD Group
* Permission is granted to do anything with this code except sell it
diff --git a/gnu/games/chess/Xchess/jail.c b/gnu/games/chess/Xchess/jail.c
index b3ed39178465..2132f3853bf7 100644
--- a/gnu/games/chess/Xchess/jail.c
+++ b/gnu/games/chess/Xchess/jail.c
@@ -20,7 +20,7 @@ file named COPYING. Among other things, the copyright notice
and this notice must be preserved on all copies. */
-/* RCS Info: $Revision: 1.1.1.1 $ on $Date: 1993/06/12 14:41:12 $
+/* RCS Info: $Revision: 1.2 $ on $Date: 1995/05/30 04:41:23 $
* $Source: /home/ncvs/src/gnu/games/chess/Xchess/jail.c,v $
* Copyright (c) 1986 Wayne A. Christopher, U. C. Berkeley CAD Group
* Permission is granted to do anything with this code except sell it
diff --git a/gnu/games/chess/Xchess/message.c b/gnu/games/chess/Xchess/message.c
index 26df73974c26..3bb7a8c970c7 100644
--- a/gnu/games/chess/Xchess/message.c
+++ b/gnu/games/chess/Xchess/message.c
@@ -20,7 +20,7 @@ file named COPYING. Among other things, the copyright notice
and this notice must be preserved on all copies. */
-/* RCS Info: $Revision: 1.1.1.1 $ on $Date: 1993/06/12 14:41:14 $
+/* RCS Info: $Revision: 1.2 $ on $Date: 1995/05/30 04:41:25 $
* $Source: /home/ncvs/src/gnu/games/chess/Xchess/message.c,v $
* Copyright (c) 1986 Wayne A. Christopher, U. C. Berkeley CAD Group
* Permission is granted to do anything with this code except sell it
diff --git a/gnu/games/chess/Xchess/parse.c b/gnu/games/chess/Xchess/parse.c
index 2dd94edc02d2..d75f5ab01789 100644
--- a/gnu/games/chess/Xchess/parse.c
+++ b/gnu/games/chess/Xchess/parse.c
@@ -19,7 +19,7 @@ file named COPYING. Among other things, the copyright notice
and this notice must be preserved on all copies. */
-/* RCS Info: $Revision: 1.1.1.1 $ on $Date: 1993/06/12 14:41:06 $
+/* RCS Info: $Revision: 1.2 $ on $Date: 1995/05/30 04:41:26 $
* $Source: /home/ncvs/src/gnu/games/chess/Xchess/parse.c,v $
* Copyright (c) 1986 Wayne A. Christopher, U. C. Berkeley CAD Group
* Permission is granted to do anything with this code except sell it
diff --git a/gnu/games/chess/Xchess/popup.c b/gnu/games/chess/Xchess/popup.c
index 0995638b359b..74017887b8ae 100644
--- a/gnu/games/chess/Xchess/popup.c
+++ b/gnu/games/chess/Xchess/popup.c
@@ -20,7 +20,7 @@ file named COPYING. Among other things, the copyright notice
and this notice must be preserved on all copies. */
-/* RCS Info: $Revision: 1.1.1.1 $ on $Date: 1993/06/12 14:41:13 $
+/* RCS Info: $Revision: 1.2 $ on $Date: 1995/05/30 04:41:27 $
* $Source: /home/ncvs/src/gnu/games/chess/Xchess/popup.c,v $
* Copyright (c) 1986 Wayne A. Christopher, U. C. Berkeley CAD Group
* faustus@cad.berkeley.edu, ucbvax!faustus
diff --git a/gnu/games/chess/Xchess/program.c b/gnu/games/chess/Xchess/program.c
index e2eb186f98ed..0c9bfb780ec5 100644
--- a/gnu/games/chess/Xchess/program.c
+++ b/gnu/games/chess/Xchess/program.c
@@ -20,7 +20,7 @@ file named COPYING. Among other things, the copyright notice
and this notice must be preserved on all copies. */
-/* RCS Info: $Revision: 1.3 $ on $Date: 1994/11/04 02:11:30 $
+/* RCS Info: $Revision: 1.4 $ on $Date: 1995/05/30 04:41:27 $
* $Source: /home/ncvs/src/gnu/games/chess/Xchess/program.c,v $
* Copyright (c) 1986 Wayne A. Christopher, U. C. Berkeley CAD Group
* Permission is granted to do anything with this code except sell it
diff --git a/gnu/games/chess/Xchess/record.c b/gnu/games/chess/Xchess/record.c
index b2fcea157635..130d6215755a 100644
--- a/gnu/games/chess/Xchess/record.c
+++ b/gnu/games/chess/Xchess/record.c
@@ -20,7 +20,7 @@ file named COPYING. Among other things, the copyright notice
and this notice must be preserved on all copies. */
-/* RCS Info: $Revision: 1.1.1.1 $ on $Date: 1993/06/12 14:41:09 $
+/* RCS Info: $Revision: 1.2 $ on $Date: 1995/05/30 04:41:28 $
* $Source: /home/ncvs/src/gnu/games/chess/Xchess/record.c,v $
* Copyright (c) 1986 Wayne A. Christopher, U. C. Berkeley CAD Group
* Permission is granted to do anything with this code except sell it
diff --git a/gnu/games/chess/Xchess/std.c b/gnu/games/chess/Xchess/std.c
index 2bbd113d65cf..2e806418dc48 100644
--- a/gnu/games/chess/Xchess/std.c
+++ b/gnu/games/chess/Xchess/std.c
@@ -20,7 +20,7 @@ file named COPYING. Among other things, the copyright notice
and this notice must be preserved on all copies. */
-/* RCS Info: $Revision: 1.3 $ on $Date: 1994/11/04 02:11:33 $
+/* RCS Info: $Revision: 1.4 $ on $Date: 1995/05/30 04:41:31 $
* $Source: /home/ncvs/src/gnu/games/chess/Xchess/std.c,v $
* Copyright (c) 1985 Wayne A. Christopher, U. C. Berkeley CAD Group
*
diff --git a/gnu/games/chess/Xchess/std.h b/gnu/games/chess/Xchess/std.h
index 19cb1da8c813..c5a90371e002 100644
--- a/gnu/games/chess/Xchess/std.h
+++ b/gnu/games/chess/Xchess/std.h
@@ -20,7 +20,7 @@ file named COPYING. Among other things, the copyright notice
and this notice must be preserved on all copies. */
-/* RCS Info: $Revision: 1.1.1.1 $ on $Date: 1993/06/12 14:41:06 $
+/* RCS Info: $Revision: 1.1.1.1.8.1 $ on $Date: 1995/08/30 06:42:43 $
* $Source: /home/ncvs/src/gnu/games/chess/Xchess/std.h,v $
* Copyright (c) 1986 Wayne A. Christopher, U. C. Berkeley CAD Group
*
diff --git a/gnu/games/chess/Xchess/valid.c b/gnu/games/chess/Xchess/valid.c
index 06d1f29b067d..7f10b3ea4435 100644
--- a/gnu/games/chess/Xchess/valid.c
+++ b/gnu/games/chess/Xchess/valid.c
@@ -20,7 +20,7 @@ file named COPYING. Among other things, the copyright notice
and this notice must be preserved on all copies. */
-/* RCS Info: $Revision: 1.1.1.1 $ on $Date: 1993/06/12 14:41:08 $
+/* RCS Info: $Revision: 1.2 $ on $Date: 1995/05/30 04:41:32 $
* $Source: /home/ncvs/src/gnu/games/chess/Xchess/valid.c,v $
* Copyright (c) 1986 Wayne A. Christopher, U. C. Berkeley CAD Group
* Permission is granted to do anything with this code except sell it
diff --git a/gnu/games/chess/Xchess/window.c b/gnu/games/chess/Xchess/window.c
index c33ef812d806..f7f257f866d5 100644
--- a/gnu/games/chess/Xchess/window.c
+++ b/gnu/games/chess/Xchess/window.c
@@ -19,7 +19,7 @@ file named COPYING. Among other things, the copyright notice
and this notice must be preserved on all copies. */
-/* RCS Info: $Revision: 1.1.1.1 $ on $Date: 1993/06/12 14:41:08 $
+/* RCS Info: $Revision: 1.2 $ on $Date: 1995/05/30 04:41:33 $
* $Source: /home/ncvs/src/gnu/games/chess/Xchess/window.c,v $
* Copyright (c) 1986 Wayne A. Christopher, U. C. Berkeley CAD Group
* Permission is granted to do anything with this code except sell it
diff --git a/gnu/games/chess/Xchess/window.c.bm b/gnu/games/chess/Xchess/window.c.bm
index 19134d0cdc14..f11228cc013a 100644
--- a/gnu/games/chess/Xchess/window.c.bm
+++ b/gnu/games/chess/Xchess/window.c.bm
@@ -19,8 +19,8 @@ file named COPYING. Among other things, the copyright notice
and this notice must be preserved on all copies. */
-/* RCS Info: $Revision: 1.5 $ on $Date: 86/11/26 12:11:15 $
- * $Source: /users/faustus/xchess/RCS/window.c,v $
+/* RCS Info: $Revision: 1.1.1.1 $ on $Date: 1993/06/12 14:41:07 $
+ * $Source: /home/ncvs/src/gnu/games/chess/Xchess/window.c.bm,v $
* Copyright (c) 1986 Wayne A. Christopher, U. C. Berkeley CAD Group
* Permission is granted to do anything with this code except sell it
* or remove this message.
diff --git a/gnu/games/chess/Xchess/xchess.c b/gnu/games/chess/Xchess/xchess.c
index 74d010f2c717..10dd76a98d68 100644
--- a/gnu/games/chess/Xchess/xchess.c
+++ b/gnu/games/chess/Xchess/xchess.c
@@ -20,7 +20,7 @@ file named COPYING. Among other things, the copyright notice
and this notice must be preserved on all copies. */
-/* RCS Info: $Revision: 1.1.1.1 $ on $Date: 1993/06/12 14:41:09 $
+/* RCS Info: $Revision: 1.2 $ on $Date: 1995/05/30 04:41:34 $
* $Source: /home/ncvs/src/gnu/games/chess/Xchess/xchess.c,v $
* Copyright (c) 1986 Wayne A. Christopher, U. C. Berkeley CAD Group
* Permission is granted to do anything with this code except sell it
diff --git a/gnu/games/chess/Xchess/xchess.c.150 b/gnu/games/chess/Xchess/xchess.c.150
index 2c17906c3571..0cbcfc38842d 100644
--- a/gnu/games/chess/Xchess/xchess.c.150
+++ b/gnu/games/chess/Xchess/xchess.c.150
@@ -20,8 +20,8 @@ file named COPYING. Among other things, the copyright notice
and this notice must be preserved on all copies. */
-/* RCS Info: $Revision: 1.5 $ on $Date: 86/11/26 12:11:32 $
- * $Source: /users/faustus/xchess/RCS/xchess.c,v $
+/* RCS Info: $Revision: 1.1.1.1 $ on $Date: 1993/06/12 14:41:20 $
+ * $Source: /home/ncvs/src/gnu/games/chess/Xchess/xchess.c.150,v $
* Copyright (c) 1986 Wayne A. Christopher, U. C. Berkeley CAD Group
* Permission is granted to do anything with this code except sell it
* or remove this message.
diff --git a/gnu/games/chess/Xchess/xchess.h b/gnu/games/chess/Xchess/xchess.h
index 355731d8b403..29107747e7b8 100644
--- a/gnu/games/chess/Xchess/xchess.h
+++ b/gnu/games/chess/Xchess/xchess.h
@@ -20,8 +20,8 @@ file named COPYING. Among other things, the copyright notice
and this notice must be preserved on all copies. */
-/* RCS Info: $Revision: 1.5 $ on $Date: 86/11/26 12:11:39 $
- * $Source: /users/faustus/xchess/RCS/xchess.h,v $
+/* RCS Info: $Revision: 1.1.1.1 $ on $Date: 1993/06/12 14:41:15 $
+ * $Source: /home/ncvs/src/gnu/games/chess/Xchess/xchess.h,v $
* Copyright (c) 1986 Wayne A. Christopher, U. C. Berkeley CAD Group
* Permission is granted to do anything with this code except sell it
* or remove this message.
diff --git a/gnu/gnu2bmake/gcc-2.6.1.tcl b/gnu/gnu2bmake/gcc-2.6.1.tcl
index a56c804af861..0598ae496353 100755
--- a/gnu/gnu2bmake/gcc-2.6.1.tcl
+++ b/gnu/gnu2bmake/gcc-2.6.1.tcl
@@ -7,7 +7,7 @@
# this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
# ----------------------------------------------------------------------------
#
-# $Id$
+# $Id: gcc-2.6.1.tcl,v 1.2 1994/11/15 04:52:18 phk Exp $
#
# Good for 2.6.1 and 2.6.2
@@ -135,7 +135,7 @@ sh "mkdir $ddir/legal"
sh "cp $sdir/gen-*.c $sdir/md $ddir/legal"
set f [open $ddir/README w]
puts $f {
-$Id$
+$Id: gcc-2.6.1.tcl,v 1.2 1994/11/15 04:52:18 phk Exp $
This directory contains gcc in a form that uses "bmake" makefiles.
This is not the place you want to start, if you want to hack gcc.
diff --git a/gnu/gnu2bmake/gnu2bmake.tcl b/gnu/gnu2bmake/gnu2bmake.tcl
index a99b1b3d134d..489a85fc47e1 100644
--- a/gnu/gnu2bmake/gnu2bmake.tcl
+++ b/gnu/gnu2bmake/gnu2bmake.tcl
@@ -7,7 +7,7 @@
# this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
# ----------------------------------------------------------------------------
#
-# $Id$
+# $Id: gnu2bmake.tcl,v 1.3 1994/11/15 04:52:19 phk Exp $
#
#######################################################################
# Generic procedures usable in the process of gnu-to-bmake jobs.
diff --git a/gnu/include/Makefile b/gnu/include/Makefile
index e05dbf801302..536fd55483d4 100644
--- a/gnu/include/Makefile
+++ b/gnu/include/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.19 1994/11/01 09:19:50 pst Exp $
+# $Id: Makefile,v 1.1 1994/11/08 00:47:02 ache Exp $
#
all depend lint tags:
diff --git a/gnu/lib/Makefile b/gnu/lib/Makefile
index 3c81143abea3..4228f065f35b 100644
--- a/gnu/lib/Makefile
+++ b/gnu/lib/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.7 1995/01/11 04:34:23 ache Exp $
+# $Id: Makefile,v 1.8 1995/01/16 17:53:43 ache Exp $
SUBDIR= libdialog libg++ libmalloc libregex libreadline
diff --git a/gnu/lib/Makefile.inc b/gnu/lib/Makefile.inc
index 605c0cd382ab..ddf5b3053a85 100644
--- a/gnu/lib/Makefile.inc
+++ b/gnu/lib/Makefile.inc
@@ -1,4 +1,4 @@
-# $Id: Makefile.inc,v 1.3 1994/05/28 09:56:30 csgr Exp $
+# $Id: Makefile.inc,v 1.4 1994/08/05 21:33:53 wollman Exp $
SHLIB_MAJOR?= 2
SHLIB_MINOR?= 0
diff --git a/gnu/lib/libdialog/Makefile b/gnu/lib/libdialog/Makefile
index 05fc50b3c78e..f65b7b27d0df 100644
--- a/gnu/lib/libdialog/Makefile
+++ b/gnu/lib/libdialog/Makefile
@@ -1,5 +1,5 @@
# Makefile for libdialog
-# $Id: Makefile,v 1.11 1995/05/03 18:53:19 ache Exp $
+# $Id: Makefile,v 1.12 1995/05/04 09:45:29 ache Exp $
LIB= dialog
SHLIB_MAJOR= 3
diff --git a/gnu/lib/libg++/Makefile b/gnu/lib/libg++/Makefile
index 0788048a08e6..e161b33683a2 100644
--- a/gnu/lib/libg++/Makefile
+++ b/gnu/lib/libg++/Makefile
@@ -1,5 +1,5 @@
#
-# $Id: Makefile,v 1.9 1995/05/08 16:10:34 ache Exp $
+# $Id: Makefile,v 1.9.4.1 1995/08/30 06:46:26 davidg Exp $
#
SRCS= bitand.c bitany.c bitblt.c bitclear.c bitcopy.c bitcount.c \
bitinvert.c bitlcomp.c bitset1.c bitxor.c cleanup.c except.c \
diff --git a/gnu/lib/libmalloc/Makefile b/gnu/lib/libmalloc/Makefile
index 1d33b0f25bc5..d69a7dbe5a44 100644
--- a/gnu/lib/libmalloc/Makefile
+++ b/gnu/lib/libmalloc/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.4 1993/12/28 07:54:51 smace Exp $
+# $Id: Makefile,v 1.5 1994/05/27 10:48:19 csgr Exp $
CFLAGS+= -I${.CURDIR}
diff --git a/gnu/lib/libreadline/Makefile b/gnu/lib/libreadline/Makefile
index 37b3e96fadca..4d511fd913d1 100644
--- a/gnu/lib/libreadline/Makefile
+++ b/gnu/lib/libreadline/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.19 1995/02/15 20:59:13 ache Exp $
+# $Id: Makefile,v 1.20 1995/05/08 08:43:06 ache Exp $
CFLAGS+= -I${.CURDIR} -DVOID_SIGHANDLER -DHAVE_CONFIG_H
diff --git a/gnu/lib/libregex/Makefile b/gnu/lib/libregex/Makefile
index b102119c69b5..db8f5c5b22ec 100644
--- a/gnu/lib/libregex/Makefile
+++ b/gnu/lib/libregex/Makefile
@@ -1,4 +1,4 @@
-# $Header: /home/ncvs/src/gnu/lib/libregex/Makefile,v 1.13 1995/03/06 05:51:32 nate Exp $
+# $Header: /home/ncvs/src/gnu/lib/libregex/Makefile,v 1.14 1995/03/12 23:21:29 ache Exp $
LIB= gnuregex
diff --git a/gnu/libexec/Makefile b/gnu/libexec/Makefile
index 61efa8972e15..a6bc1c9d278f 100644
--- a/gnu/libexec/Makefile
+++ b/gnu/libexec/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1 1994/01/30 01:08:18 rgrimes Exp $
+# $Id: Makefile,v 1.2 1995/01/31 09:29:38 wpaul Exp $
SUBDIR= uucp ypxfr
diff --git a/gnu/libexec/Makefile.inc b/gnu/libexec/Makefile.inc
index 1ac3dc7c91c8..ce2cd44c3076 100644
--- a/gnu/libexec/Makefile.inc
+++ b/gnu/libexec/Makefile.inc
@@ -1,3 +1,3 @@
-# $Id$
+# $Id: Makefile.inc,v 1.1 1994/01/30 01:08:21 rgrimes Exp $
BINDIR?= /usr/libexec
diff --git a/gnu/libexec/uucp/Makefile b/gnu/libexec/uucp/Makefile
index 13a2d238e8a2..39f853bee750 100644
--- a/gnu/libexec/uucp/Makefile
+++ b/gnu/libexec/uucp/Makefile
@@ -1,5 +1,5 @@
# This is the Makefile for Taylor UUCP
-# $Id: Makefile,v 1.2 1993/10/14 12:17:57 rgrimes Exp $
+# $Id: Makefile,v 1.3 1995/01/01 21:58:01 ache Exp $
SUBDIR= libunix libuucp libuuconf \
doc sample \
diff --git a/gnu/libexec/uucp/common_sources/chat.c b/gnu/libexec/uucp/common_sources/chat.c
index e52006b31e8d..59240d10690e 100644
--- a/gnu/libexec/uucp/common_sources/chat.c
+++ b/gnu/libexec/uucp/common_sources/chat.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char chat_rcsid[] = "$Id: chat.c,v 1.4 1995/08/19 21:23:41 ache Exp $";
+const char chat_rcsid[] = "$Id: chat.c,v 1.3.4.1 1995/09/01 06:01:29 davidg Exp $";
#endif
#include <ctype.h>
diff --git a/gnu/libexec/uucp/common_sources/conn.c b/gnu/libexec/uucp/common_sources/conn.c
index 4e0733d59f05..64a04130b3f3 100644
--- a/gnu/libexec/uucp/common_sources/conn.c
+++ b/gnu/libexec/uucp/common_sources/conn.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char conn_rcsid[] = "$Id: conn.c,v 1.4 1995/08/19 21:23:46 ache Exp $";
+const char conn_rcsid[] = "$Id: conn.c,v 1.3.4.1 1995/09/01 06:01:31 davidg Exp $";
#endif
#include <ctype.h>
diff --git a/gnu/libexec/uucp/common_sources/copy.c b/gnu/libexec/uucp/common_sources/copy.c
index 227bee6a3c75..ba1d1bf93ad7 100644
--- a/gnu/libexec/uucp/common_sources/copy.c
+++ b/gnu/libexec/uucp/common_sources/copy.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char copy_rcsid[] = "$Id: copy.c,v 1.3 1995/08/19 21:23:49 ache Exp $";
+const char copy_rcsid[] = "$Id: copy.c,v 1.2.6.1 1995/09/01 06:01:34 davidg Exp $";
#endif
#include "uudefs.h"
diff --git a/gnu/libexec/uucp/common_sources/log.c b/gnu/libexec/uucp/common_sources/log.c
index c99708bc905a..f305632c6462 100644
--- a/gnu/libexec/uucp/common_sources/log.c
+++ b/gnu/libexec/uucp/common_sources/log.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char log_rcsid[] = "$Id: log.c,v 1.4 1995/08/19 21:23:54 ache Exp $";
+const char log_rcsid[] = "$Id: log.c,v 1.3.4.1 1995/09/01 06:01:37 davidg Exp $";
#endif
#include <ctype.h>
diff --git a/gnu/libexec/uucp/common_sources/prot.c b/gnu/libexec/uucp/common_sources/prot.c
index ba6bc65918e0..aede8113f3ca 100644
--- a/gnu/libexec/uucp/common_sources/prot.c
+++ b/gnu/libexec/uucp/common_sources/prot.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char prot_rcsid[] = "$Id: prot.c,v 1.3 1995/08/19 21:23:59 ache Exp $";
+const char prot_rcsid[] = "$Id: prot.c,v 1.2.6.1 1995/09/01 06:01:40 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/common_sources/util.c b/gnu/libexec/uucp/common_sources/util.c
index b65bf8172f45..b8cf283f9e95 100644
--- a/gnu/libexec/uucp/common_sources/util.c
+++ b/gnu/libexec/uucp/common_sources/util.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char util_rcsid[] = "$Id: util.c,v 1.3 1995/08/19 21:24:13 ache Exp $";
+const char util_rcsid[] = "$Id: util.c,v 1.2.6.1 1995/09/01 06:01:47 davidg Exp $";
#endif
#include <ctype.h>
diff --git a/gnu/libexec/uucp/contrib/Makefile.uurt b/gnu/libexec/uucp/contrib/Makefile.uurt
index 473edbb9cae1..2a2b10b3242d 100644
--- a/gnu/libexec/uucp/contrib/Makefile.uurt
+++ b/gnu/libexec/uucp/contrib/Makefile.uurt
@@ -1,4 +1,4 @@
-# $Id: Makefile.uurt,v 1.3 1995/08/19 21:24:24 ache Exp $
+# $Id: Makefile.uurt,v 1.2.6.1 1995/09/01 06:01:53 davidg Exp $
# Makefile for uurate 1.10
#
diff --git a/gnu/libexec/uucp/contrib/uupoll.shar b/gnu/libexec/uucp/contrib/uupoll.shar
index ec9464086b4e..5505ad11d7e5 100644
--- a/gnu/libexec/uucp/contrib/uupoll.shar
+++ b/gnu/libexec/uucp/contrib/uupoll.shar
@@ -493,10 +493,15 @@ X not scan the uucico log.
X
X
#if !defined(lint)
-static char rcsid[] = "$Id: uupoll.shar,v 1.2 1995/08/19 21:24:34 ache Exp $";
+static char rcsid[] = "$Id: uupoll.shar,v 1.1.6.1 1995/09/01 06:01:57 davidg Exp $";
#endif /* not lint */
X
/* $Log: uupoll.shar,v $
+# Revision 1.1.6.1 1995/09/01 06:01:57 davidg
+# Brought in changes from main branch: updated to UUCP 1.06.1
+#
+# Reviewed by: ache
+#
# Revision 1.2 1995/08/19 21:24:34 ache
# Commit delta: current -> 1.06 + FreeBSD configuration
#
@@ -1631,8 +1636,13 @@ sed 's/^X//' << 'SHAR_EOF' > 'uupoll/conf.h' &&
#ifndef CONF
X #define CONF
X
-/* $Id: uupoll.shar,v 1.2 1995/08/19 21:24:34 ache Exp $ */
+/* $Id: uupoll.shar,v 1.1.6.1 1995/09/01 06:01:57 davidg Exp $ */
/* $Log: uupoll.shar,v $
+# Revision 1.1.6.1 1995/09/01 06:01:57 davidg
+# Brought in changes from main branch: updated to UUCP 1.06.1
+#
+# Reviewed by: ache
+#
# Revision 1.2 1995/08/19 21:24:34 ache
# Commit delta: current -> 1.06 + FreeBSD configuration
#
@@ -1992,10 +2002,15 @@ X - No alias expansion is done on the given names.
*/
X
#if !defined(lint)
-static char rcsid[] = "$Id: uupoll.shar,v 1.2 1995/08/19 21:24:34 ache Exp $";
+static char rcsid[] = "$Id: uupoll.shar,v 1.1.6.1 1995/09/01 06:01:57 davidg Exp $";
#endif /* not lint */
X
/* $Log: uupoll.shar,v $
+# Revision 1.1.6.1 1995/09/01 06:01:57 davidg
+# Brought in changes from main branch: updated to UUCP 1.06.1
+#
+# Reviewed by: ache
+#
# Revision 1.2 1995/08/19 21:24:34 ache
# Commit delta: current -> 1.06 + FreeBSD configuration
#
diff --git a/gnu/libexec/uucp/contrib/uurate.c b/gnu/libexec/uucp/contrib/uurate.c
index e3b3ece91f28..3a57c20bc30a 100644
--- a/gnu/libexec/uucp/contrib/uurate.c
+++ b/gnu/libexec/uucp/contrib/uurate.c
@@ -84,6 +84,11 @@
* get knowledge of
*/
/* $Log: uurate.c,v $
+ * Revision 1.3.4.1 1995/09/01 06:01:59 davidg
+ * Brought in changes from main branch: updated to UUCP 1.06.1
+ *
+ * Reviewed by: ache
+ *
* Revision 1.4 1995/08/19 21:24:38 ache
* Commit delta: current -> 1.06 + FreeBSD configuration
*
@@ -142,7 +147,7 @@
* */
char version[] = "@(#) Taylor UUCP Log File Summary Filter, Version 1.2.2";
-static char rcsid[] = "$Id: uurate.c,v 1.4 1995/08/19 21:24:38 ache Exp $";
+static char rcsid[] = "$Id: uurate.c,v 1.3.4.1 1995/09/01 06:01:59 davidg Exp $";
#include <ctype.h> /* Character Classification */
#include <math.h>
#include "uucp.h"
diff --git a/gnu/libexec/uucp/contrib/uurate.man b/gnu/libexec/uucp/contrib/uurate.man
index 2a150a84008b..635bfef70948 100644
--- a/gnu/libexec/uucp/contrib/uurate.man
+++ b/gnu/libexec/uucp/contrib/uurate.man
@@ -1,4 +1,4 @@
-''' $Id: uurate.man,v 1.3 1995/08/19 21:24:40 ache Exp $
+''' $Id: uurate.man,v 1.2.6.1 1995/09/01 06:02:01 davidg Exp $
.TH uurate 1
.SH NAME
uurate \- Report Taylor UUCP statistics
diff --git a/gnu/libexec/uucp/contrib/uusnap.c b/gnu/libexec/uucp/contrib/uusnap.c
index c12f7bd8405d..a0f60645cc96 100644
--- a/gnu/libexec/uucp/contrib/uusnap.c
+++ b/gnu/libexec/uucp/contrib/uusnap.c
@@ -25,7 +25,7 @@
#include "uucp.h"
#if USE_RCS_ID
-char uusnap_rcsid[] = "$Id: uusnap.c,v 1.4 1995/08/19 21:24:42 ache Exp $";
+char uusnap_rcsid[] = "$Id: uusnap.c,v 1.3.4.1 1995/09/01 06:02:02 davidg Exp $";
#endif
#include <ctype.h>
diff --git a/gnu/libexec/uucp/cu/Makefile b/gnu/libexec/uucp/cu/Makefile
index 393b2a327361..ed239827b683 100644
--- a/gnu/libexec/uucp/cu/Makefile
+++ b/gnu/libexec/uucp/cu/Makefile
@@ -1,5 +1,5 @@
# Makefile for cu
-# $Id: Makefile,v 1.4 1995/08/19 21:24:49 ache Exp $
+# $Id: Makefile,v 1.3.6.1 1995/09/01 06:02:08 davidg Exp $
BINDIR= $(bindir)
BINOWN= $(owner)
diff --git a/gnu/libexec/uucp/cu/cu.1 b/gnu/libexec/uucp/cu/cu.1
index 625e99416f27..ed8d58e32933 100644
--- a/gnu/libexec/uucp/cu/cu.1
+++ b/gnu/libexec/uucp/cu/cu.1
@@ -1,4 +1,4 @@
-''' $Id: cu.1,v 1.4 1995/08/19 21:24:50 ache Exp $
+''' $Id: cu.1,v 1.3.4.1 1995/09/01 06:02:09 davidg Exp $
.TH cu 1 "Taylor UUCP 1.06"
.SH NAME
cu \- Call up another system
diff --git a/gnu/libexec/uucp/cu/cu.c b/gnu/libexec/uucp/cu/cu.c
index e8a4623f67f4..1b52bc4062dd 100644
--- a/gnu/libexec/uucp/cu/cu.c
+++ b/gnu/libexec/uucp/cu/cu.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char cu_rcsid[] = "$Id: cu.c,v 1.5 1995/08/19 21:24:51 ache Exp $";
+const char cu_rcsid[] = "$Id: cu.c,v 1.4.4.1 1995/09/01 06:02:10 davidg Exp $";
#endif
#include "cu.h"
diff --git a/gnu/libexec/uucp/doc/uucp.texi b/gnu/libexec/uucp/doc/uucp.texi
index 7b0ac7cef729..404bfc644e16 100644
--- a/gnu/libexec/uucp/doc/uucp.texi
+++ b/gnu/libexec/uucp/doc/uucp.texi
@@ -5649,8 +5649,8 @@ Keywords: UUCP, protocol, FAQ
Approved: news-answers-request@@MIT.Edu
Archive-name: uucp-internals
-Version: $Revision: 1.3 $
-Last-modified: $Date: 1995/08/21 11:28:17 $
+Version: $Revision: 1.1.6.1 $
+Last-modified: $Date: 1995/09/01 06:02:12 $
@end format
@end ifset
diff --git a/gnu/libexec/uucp/libunix/Makefile b/gnu/libexec/uucp/libunix/Makefile
index aef9a6f3af90..311baf58b62c 100644
--- a/gnu/libexec/uucp/libunix/Makefile
+++ b/gnu/libexec/uucp/libunix/Makefile
@@ -1,5 +1,5 @@
# This subdirectory contains Unix specific support functions.
-# $Id: Makefile,v 1.4 1995/08/19 21:25:01 ache Exp $
+# $Id: Makefile,v 1.3.4.1 1995/09/01 06:02:20 davidg Exp $
LIB= unix
SRCS = access.c addbas.c app3.c app4.c basnam.c bytfre.c corrup.c \
diff --git a/gnu/libexec/uucp/libunix/cusub.c b/gnu/libexec/uucp/libunix/cusub.c
index 654b72a8c207..3307c08daa05 100644
--- a/gnu/libexec/uucp/libunix/cusub.c
+++ b/gnu/libexec/uucp/libunix/cusub.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char cusub_rcsid[] = "$Id: cusub.c,v 1.4 1995/08/19 21:25:06 ache Exp $";
+const char cusub_rcsid[] = "$Id: cusub.c,v 1.3.4.1 1995/09/01 06:02:23 davidg Exp $";
#endif
#include "uudefs.h"
diff --git a/gnu/libexec/uucp/libunix/lock.c b/gnu/libexec/uucp/libunix/lock.c
index 23dee3fda5e1..39399c5d981b 100644
--- a/gnu/libexec/uucp/libunix/lock.c
+++ b/gnu/libexec/uucp/libunix/lock.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char lock_rcsid[] = "$Id: lock.c,v 1.4 1995/08/19 21:25:36 ache Exp $";
+const char lock_rcsid[] = "$Id: lock.c,v 1.3.4.1 1995/09/01 06:02:44 davidg Exp $";
#endif
#include "uudefs.h"
diff --git a/gnu/libexec/uucp/libunix/picksb.c b/gnu/libexec/uucp/libunix/picksb.c
index a660283c16df..3ceae0a8f79d 100644
--- a/gnu/libexec/uucp/libunix/picksb.c
+++ b/gnu/libexec/uucp/libunix/picksb.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char picksb_rcsid[] = "$Id: picksb.c,v 1.4 1995/08/19 21:25:47 ache Exp $";
+const char picksb_rcsid[] = "$Id: picksb.c,v 1.3.4.1 1995/09/01 06:02:51 davidg Exp $";
#endif
#include "uudefs.h"
diff --git a/gnu/libexec/uucp/libunix/pipe.c b/gnu/libexec/uucp/libunix/pipe.c
index b59b46980a12..098619bb6c07 100644
--- a/gnu/libexec/uucp/libunix/pipe.c
+++ b/gnu/libexec/uucp/libunix/pipe.c
@@ -27,7 +27,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char pipe_rcsid[] = "$Id: pipe.c,v 1.2 1995/08/19 21:25:48 ache Exp $";
+const char pipe_rcsid[] = "$Id: pipe.c,v 1.1.6.1 1995/09/01 06:02:52 davidg Exp $";
#endif
#include "uudefs.h"
diff --git a/gnu/libexec/uucp/libunix/serial.c b/gnu/libexec/uucp/libunix/serial.c
index 5e538402596a..f665b749cbab 100644
--- a/gnu/libexec/uucp/libunix/serial.c
+++ b/gnu/libexec/uucp/libunix/serial.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char serial_rcsid[] = "$Id: serial.c,v 1.6 1995/08/19 21:25:56 ache Exp $";
+const char serial_rcsid[] = "$Id: serial.c,v 1.5.4.1 1995/09/01 06:02:58 davidg Exp $";
#endif
#include "uudefs.h"
diff --git a/gnu/libexec/uucp/libunix/spool.c b/gnu/libexec/uucp/libunix/spool.c
index 0f51976d5aa9..65545fc2d77a 100644
--- a/gnu/libexec/uucp/libunix/spool.c
+++ b/gnu/libexec/uucp/libunix/spool.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char spool_rcsid[] = "$Id: spool.c,v 1.4 1995/08/19 21:26:02 ache Exp $";
+const char spool_rcsid[] = "$Id: spool.c,v 1.3.4.1 1995/09/01 06:03:03 davidg Exp $";
#endif
#include "uudefs.h"
diff --git a/gnu/libexec/uucp/libunix/statsb.c b/gnu/libexec/uucp/libunix/statsb.c
index fdb71dc758f7..b916456a0490 100644
--- a/gnu/libexec/uucp/libunix/statsb.c
+++ b/gnu/libexec/uucp/libunix/statsb.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char statsb_rcsid[] = "$Id: statsb.c,v 1.3 1995/08/19 21:26:05 ache Exp $";
+const char statsb_rcsid[] = "$Id: statsb.c,v 1.2.6.1 1995/09/01 06:03:05 davidg Exp $";
#endif
#include "uudefs.h"
diff --git a/gnu/libexec/uucp/libunix/tcp.c b/gnu/libexec/uucp/libunix/tcp.c
index 6ec39f26a63b..d38536ce231b 100644
--- a/gnu/libexec/uucp/libunix/tcp.c
+++ b/gnu/libexec/uucp/libunix/tcp.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char tcp_rcsid[] = "$Id: tcp.c,v 1.5 1995/06/21 19:20:46 ian Rel $";
+const char tcp_rcsid[] = "$Id: tcp.c,v 1.1 1995/08/19 21:26:10 ache Exp $";
#endif
#if HAVE_TCP
diff --git a/gnu/libexec/uucp/libunix/tli.c b/gnu/libexec/uucp/libunix/tli.c
index 3e546c844991..a67e8c88c453 100644
--- a/gnu/libexec/uucp/libunix/tli.c
+++ b/gnu/libexec/uucp/libunix/tli.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char tli_rcsid[] = "$Id: tli.c,v 1.4 1995/06/21 19:20:50 ian Rel $";
+const char tli_rcsid[] = "$Id: tli.c,v 1.1 1995/08/19 21:26:11 ache Exp $";
#endif
#if HAVE_TLI
diff --git a/gnu/libexec/uucp/libunix/work.c b/gnu/libexec/uucp/libunix/work.c
index e28e480d1e34..ad48ca56887b 100644
--- a/gnu/libexec/uucp/libunix/work.c
+++ b/gnu/libexec/uucp/libunix/work.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char work_rcsid[] = "$Id: work.c,v 1.4 1995/08/19 21:26:21 ache Exp $";
+const char work_rcsid[] = "$Id: work.c,v 1.3.4.1 1995/09/01 06:03:12 davidg Exp $";
#endif
#include "uudefs.h"
diff --git a/gnu/libexec/uucp/libunix/xqtfil.c b/gnu/libexec/uucp/libunix/xqtfil.c
index 71a6b48e844d..ee5bf0ca2706 100644
--- a/gnu/libexec/uucp/libunix/xqtfil.c
+++ b/gnu/libexec/uucp/libunix/xqtfil.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char xqtfil_rcsid[] = "$Id: xqtfil.c,v 1.4 1995/08/19 21:26:23 ache Exp $";
+const char xqtfil_rcsid[] = "$Id: xqtfil.c,v 1.3.4.1 1995/09/01 06:03:13 davidg Exp $";
#endif
#include "uudefs.h"
diff --git a/gnu/libexec/uucp/libunix/xqtsub.c b/gnu/libexec/uucp/libunix/xqtsub.c
index ea0794660b55..e587e0ea2739 100644
--- a/gnu/libexec/uucp/libunix/xqtsub.c
+++ b/gnu/libexec/uucp/libunix/xqtsub.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char xqtsub_rcsid[] = "$Id: xqtsub.c,v 1.4 1995/08/19 21:26:25 ache Exp $";
+const char xqtsub_rcsid[] = "$Id: xqtsub.c,v 1.3.4.1 1995/09/01 06:03:14 davidg Exp $";
#endif
#include "uudefs.h"
diff --git a/gnu/libexec/uucp/libuuconf/Makefile b/gnu/libexec/uucp/libuuconf/Makefile
index 1a8cab21aef3..eaf1d3eee1cb 100644
--- a/gnu/libexec/uucp/libuuconf/Makefile
+++ b/gnu/libexec/uucp/libuuconf/Makefile
@@ -1,5 +1,5 @@
# This is the Makefile for the Taylor UUCP uuconf library
-# $Id: Makefile,v 1.3 1995/08/19 21:26:30 ache Exp $
+# $Id: Makefile,v 1.2.6.1 1995/09/01 06:03:19 davidg Exp $
LIB= uuconf
SRCS = addblk.c addstr.c allblk.c alloc.c base.c bool.c callin.c \
diff --git a/gnu/libexec/uucp/libuuconf/addblk.c b/gnu/libexec/uucp/libuuconf/addblk.c
index 91763c7f3cbe..b833a73dd631 100644
--- a/gnu/libexec/uucp/libuuconf/addblk.c
+++ b/gnu/libexec/uucp/libuuconf/addblk.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_addblk_rcsid[] = "$Id: addblk.c,v 1.3 1995/08/19 21:26:32 ache Exp $";
+const char _uuconf_addblk_rcsid[] = "$Id: addblk.c,v 1.2.6.1 1995/09/01 06:03:21 davidg Exp $";
#endif
#include "alloc.h"
diff --git a/gnu/libexec/uucp/libuuconf/addstr.c b/gnu/libexec/uucp/libuuconf/addstr.c
index 80d9d5850bfa..3b29d0944e6a 100644
--- a/gnu/libexec/uucp/libuuconf/addstr.c
+++ b/gnu/libexec/uucp/libuuconf/addstr.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_addstr_rcsid[] = "$Id: addstr.c,v 1.3 1995/08/19 21:26:33 ache Exp $";
+const char _uuconf_addstr_rcsid[] = "$Id: addstr.c,v 1.2.6.1 1995/09/01 06:03:22 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/allblk.c b/gnu/libexec/uucp/libuuconf/allblk.c
index 859f4ebdc317..fa4aa45365e5 100644
--- a/gnu/libexec/uucp/libuuconf/allblk.c
+++ b/gnu/libexec/uucp/libuuconf/allblk.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_allblk_rcsid[] = "$Id: allblk.c,v 1.3 1995/08/19 21:26:34 ache Exp $";
+const char _uuconf_allblk_rcsid[] = "$Id: allblk.c,v 1.2.6.1 1995/09/01 06:03:23 davidg Exp $";
#endif
#include "alloc.h"
diff --git a/gnu/libexec/uucp/libuuconf/alloc.c b/gnu/libexec/uucp/libuuconf/alloc.c
index f51268676dd4..c2b2099f72d5 100644
--- a/gnu/libexec/uucp/libuuconf/alloc.c
+++ b/gnu/libexec/uucp/libuuconf/alloc.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_alloc_rcsid[] = "$Id: alloc.c,v 1.3 1995/08/19 21:26:36 ache Exp $";
+const char _uuconf_alloc_rcsid[] = "$Id: alloc.c,v 1.2.6.1 1995/09/01 06:03:24 davidg Exp $";
#endif
#include "alloc.h"
diff --git a/gnu/libexec/uucp/libuuconf/base.c b/gnu/libexec/uucp/libuuconf/base.c
index de1dca343cf1..0f38e062fff9 100644
--- a/gnu/libexec/uucp/libuuconf/base.c
+++ b/gnu/libexec/uucp/libuuconf/base.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_base_rcsid[] = "$Id: base.c,v 1.3 1995/08/19 21:26:39 ache Exp $";
+const char _uuconf_base_rcsid[] = "$Id: base.c,v 1.2.6.1 1995/09/01 06:03:26 davidg Exp $";
#endif
/* This turns a cmdtab_offset table into a uuconf_cmdtab table. Each
diff --git a/gnu/libexec/uucp/libuuconf/bool.c b/gnu/libexec/uucp/libuuconf/bool.c
index c0a28b536524..8ed9166363b9 100644
--- a/gnu/libexec/uucp/libuuconf/bool.c
+++ b/gnu/libexec/uucp/libuuconf/bool.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_bool_rcsid[] = "$Id: bool.c,v 1.4 1995/08/19 21:26:41 ache Exp $";
+const char _uuconf_bool_rcsid[] = "$Id: bool.c,v 1.3.4.1 1995/09/01 06:03:27 davidg Exp $";
#endif
/* Parse a boolean string into a variable. This is called by
diff --git a/gnu/libexec/uucp/libuuconf/callin.c b/gnu/libexec/uucp/libuuconf/callin.c
index b49b0e0e2a56..12c7f5eb1f6b 100644
--- a/gnu/libexec/uucp/libuuconf/callin.c
+++ b/gnu/libexec/uucp/libuuconf/callin.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_callin_rcsid[] = "$Id: callin.c,v 1.4 1995/08/19 21:26:43 ache Exp $";
+const char _uuconf_callin_rcsid[] = "$Id: callin.c,v 1.3.4.1 1995/09/01 06:03:28 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/calout.c b/gnu/libexec/uucp/libuuconf/calout.c
index 0f540b372911..60efa1cb3d33 100644
--- a/gnu/libexec/uucp/libuuconf/calout.c
+++ b/gnu/libexec/uucp/libuuconf/calout.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_calout_rcsid[] = "$Id: calout.c,v 1.4 1995/08/19 21:26:44 ache Exp $";
+const char _uuconf_calout_rcsid[] = "$Id: calout.c,v 1.3.4.1 1995/09/01 06:03:29 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/chatc.c b/gnu/libexec/uucp/libuuconf/chatc.c
index e97a8b5a13d4..cc75d7e41600 100644
--- a/gnu/libexec/uucp/libuuconf/chatc.c
+++ b/gnu/libexec/uucp/libuuconf/chatc.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_chatc_rcsid[] = "$Id: chatc.c,v 1.3 1995/08/19 21:26:45 ache Exp $";
+const char _uuconf_chatc_rcsid[] = "$Id: chatc.c,v 1.2.6.1 1995/09/01 06:03:30 davidg Exp $";
#endif
#include <ctype.h>
diff --git a/gnu/libexec/uucp/libuuconf/cmdarg.c b/gnu/libexec/uucp/libuuconf/cmdarg.c
index e2503d61c2db..992f1df8e246 100644
--- a/gnu/libexec/uucp/libuuconf/cmdarg.c
+++ b/gnu/libexec/uucp/libuuconf/cmdarg.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_cmdarg_rcsid[] = "$Id: cmdarg.c,v 1.4 1995/08/19 21:26:48 ache Exp $";
+const char _uuconf_cmdarg_rcsid[] = "$Id: cmdarg.c,v 1.3.4.1 1995/09/01 06:03:31 davidg Exp $";
#endif
#include <ctype.h>
diff --git a/gnu/libexec/uucp/libuuconf/cmdfil.c b/gnu/libexec/uucp/libuuconf/cmdfil.c
index 143f98ea49cf..b98056128e29 100644
--- a/gnu/libexec/uucp/libuuconf/cmdfil.c
+++ b/gnu/libexec/uucp/libuuconf/cmdfil.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_cmdfil_rcsid[] = "$Id: cmdfil.c,v 1.3 1995/08/19 21:26:50 ache Exp $";
+const char _uuconf_cmdfil_rcsid[] = "$Id: cmdfil.c,v 1.2.6.1 1995/09/01 06:03:33 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/cmdlin.c b/gnu/libexec/uucp/libuuconf/cmdlin.c
index a242db132ea7..09f15bb5e063 100644
--- a/gnu/libexec/uucp/libuuconf/cmdlin.c
+++ b/gnu/libexec/uucp/libuuconf/cmdlin.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_cmdlin_rcsid[] = "$Id: cmdlin.c,v 1.4 1995/08/19 21:26:51 ache Exp $";
+const char _uuconf_cmdlin_rcsid[] = "$Id: cmdlin.c,v 1.3.6.1 1995/09/01 06:03:33 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/debfil.c b/gnu/libexec/uucp/libuuconf/debfil.c
index 527a5e8ef3a5..570bebbfde8e 100644
--- a/gnu/libexec/uucp/libuuconf/debfil.c
+++ b/gnu/libexec/uucp/libuuconf/debfil.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_debfil_rcsid[] = "$Id: debfil.c,v 1.3 1995/08/19 21:26:53 ache Exp $";
+const char _uuconf_debfil_rcsid[] = "$Id: debfil.c,v 1.2.6.1 1995/09/01 06:03:34 davidg Exp $";
#endif
/* Get the name of the UUCP debugging file. */
diff --git a/gnu/libexec/uucp/libuuconf/deblev.c b/gnu/libexec/uucp/libuuconf/deblev.c
index f543fc78c4cc..1cebb665fad6 100644
--- a/gnu/libexec/uucp/libuuconf/deblev.c
+++ b/gnu/libexec/uucp/libuuconf/deblev.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_deblev_rcsid[] = "$Id: deblev.c,v 1.3 1995/08/19 21:26:54 ache Exp $";
+const char _uuconf_deblev_rcsid[] = "$Id: deblev.c,v 1.2.6.1 1995/09/01 06:03:35 davidg Exp $";
#endif
/* Get the UUCP debugging level. */
diff --git a/gnu/libexec/uucp/libuuconf/diacod.c b/gnu/libexec/uucp/libuuconf/diacod.c
index f9f3357b00ee..1278d58027d9 100644
--- a/gnu/libexec/uucp/libuuconf/diacod.c
+++ b/gnu/libexec/uucp/libuuconf/diacod.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_diacod_rcsid[] = "$Id: diacod.c,v 1.3 1995/08/19 21:26:55 ache Exp $";
+const char _uuconf_diacod_rcsid[] = "$Id: diacod.c,v 1.2.6.1 1995/09/01 06:03:36 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/dial.c b/gnu/libexec/uucp/libuuconf/dial.c
index bb5177c330b2..c6ab94997c94 100644
--- a/gnu/libexec/uucp/libuuconf/dial.c
+++ b/gnu/libexec/uucp/libuuconf/dial.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_dial_rcsid[] = "$Id: dial.c,v 1.3 1995/08/19 21:26:56 ache Exp $";
+const char _uuconf_dial_rcsid[] = "$Id: dial.c,v 1.2.6.1 1995/09/01 06:03:37 davidg Exp $";
#endif
/* Find a dialer by name. */
diff --git a/gnu/libexec/uucp/libuuconf/diasub.c b/gnu/libexec/uucp/libuuconf/diasub.c
index 882257fa73ec..694c98dff968 100644
--- a/gnu/libexec/uucp/libuuconf/diasub.c
+++ b/gnu/libexec/uucp/libuuconf/diasub.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_diasub_rcsid[] = "$Id: diasub.c,v 1.3 1995/08/19 21:26:57 ache Exp $";
+const char _uuconf_diasub_rcsid[] = "$Id: diasub.c,v 1.2.6.1 1995/09/01 06:03:38 davidg Exp $";
#endif
/* Clear the information in a dialer. */
diff --git a/gnu/libexec/uucp/libuuconf/dnams.c b/gnu/libexec/uucp/libuuconf/dnams.c
index 9bedd16e2833..9bdd051a4f28 100644
--- a/gnu/libexec/uucp/libuuconf/dnams.c
+++ b/gnu/libexec/uucp/libuuconf/dnams.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_dnams_rcsid[] = "$Id: dnams.c,v 1.3 1995/08/19 21:26:59 ache Exp $";
+const char _uuconf_dnams_rcsid[] = "$Id: dnams.c,v 1.2.6.1 1995/09/01 06:03:39 davidg Exp $";
#endif
/* Get all known dialer names. */
diff --git a/gnu/libexec/uucp/libuuconf/errno.c b/gnu/libexec/uucp/libuuconf/errno.c
index 283833a6e044..bb1361d2f6fb 100644
--- a/gnu/libexec/uucp/libuuconf/errno.c
+++ b/gnu/libexec/uucp/libuuconf/errno.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_errno_rcsid[] = "$Id: errno.c,v 1.3 1995/08/19 21:27:00 ache Exp $";
+const char _uuconf_errno_rcsid[] = "$Id: errno.c,v 1.2.6.1 1995/09/01 06:03:40 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/errstr.c b/gnu/libexec/uucp/libuuconf/errstr.c
index 760dc75b88a3..db6564f72b2a 100644
--- a/gnu/libexec/uucp/libuuconf/errstr.c
+++ b/gnu/libexec/uucp/libuuconf/errstr.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_errstr_rcsid[] = "$Id: errstr.c,v 1.4 1995/08/19 21:27:01 ache Exp $";
+const char _uuconf_errstr_rcsid[] = "$Id: errstr.c,v 1.3.4.1 1995/09/01 06:03:41 davidg Exp $";
#endif
static char *zeprint_num P((char *zbuf, size_t cbuf, int ival));
diff --git a/gnu/libexec/uucp/libuuconf/filnam.c b/gnu/libexec/uucp/libuuconf/filnam.c
index 82b6aee73353..eb033258bec1 100644
--- a/gnu/libexec/uucp/libuuconf/filnam.c
+++ b/gnu/libexec/uucp/libuuconf/filnam.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_filnam_rcsid[] = "$Id: filnam.c,v 1.3 1995/08/19 21:27:02 ache Exp $";
+const char _uuconf_filnam_rcsid[] = "$Id: filnam.c,v 1.2.6.1 1995/09/01 06:03:42 davidg Exp $";
#endif
/* Return the saved file name. */
diff --git a/gnu/libexec/uucp/libuuconf/freblk.c b/gnu/libexec/uucp/libuuconf/freblk.c
index aa7f6583d8ab..84c82302b416 100644
--- a/gnu/libexec/uucp/libuuconf/freblk.c
+++ b/gnu/libexec/uucp/libuuconf/freblk.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_freblk_rcsid[] = "$Id: freblk.c,v 1.3 1995/08/19 21:27:04 ache Exp $";
+const char _uuconf_freblk_rcsid[] = "$Id: freblk.c,v 1.2.6.1 1995/09/01 06:03:43 davidg Exp $";
#endif
#include "alloc.h"
diff --git a/gnu/libexec/uucp/libuuconf/fredia.c b/gnu/libexec/uucp/libuuconf/fredia.c
index 5098058e6d9a..6255512fb4d7 100644
--- a/gnu/libexec/uucp/libuuconf/fredia.c
+++ b/gnu/libexec/uucp/libuuconf/fredia.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_fredia_rcsid[] = "$Id: fredia.c,v 1.3 1995/08/19 21:27:05 ache Exp $";
+const char _uuconf_fredia_rcsid[] = "$Id: fredia.c,v 1.2.6.1 1995/09/01 06:03:43 davidg Exp $";
#endif
/* Free the memory allocated for a dialer. */
diff --git a/gnu/libexec/uucp/libuuconf/free.c b/gnu/libexec/uucp/libuuconf/free.c
index a36c6eb51b55..0c9e266b121d 100644
--- a/gnu/libexec/uucp/libuuconf/free.c
+++ b/gnu/libexec/uucp/libuuconf/free.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_free_rcsid[] = "$Id: free.c,v 1.3 1995/08/19 21:27:07 ache Exp $";
+const char _uuconf_free_rcsid[] = "$Id: free.c,v 1.2.6.1 1995/09/01 06:03:44 davidg Exp $";
#endif
#include "alloc.h"
diff --git a/gnu/libexec/uucp/libuuconf/freprt.c b/gnu/libexec/uucp/libuuconf/freprt.c
index 6ead66ee7417..095e7f9a6dea 100644
--- a/gnu/libexec/uucp/libuuconf/freprt.c
+++ b/gnu/libexec/uucp/libuuconf/freprt.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_freprt_rcsid[] = "$Id: freprt.c,v 1.3 1995/08/19 21:27:09 ache Exp $";
+const char _uuconf_freprt_rcsid[] = "$Id: freprt.c,v 1.2.6.1 1995/09/01 06:03:45 davidg Exp $";
#endif
/* Free the memory allocated for a port. */
diff --git a/gnu/libexec/uucp/libuuconf/fresys.c b/gnu/libexec/uucp/libuuconf/fresys.c
index 0711875f2fc7..62f1a68f5699 100644
--- a/gnu/libexec/uucp/libuuconf/fresys.c
+++ b/gnu/libexec/uucp/libuuconf/fresys.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_fresys_rcsid[] = "$Id: fresys.c,v 1.3 1995/08/19 21:27:10 ache Exp $";
+const char _uuconf_fresys_rcsid[] = "$Id: fresys.c,v 1.2.6.1 1995/09/01 06:03:46 davidg Exp $";
#endif
/* Free the memory allocated for a system. */
diff --git a/gnu/libexec/uucp/libuuconf/grdcmp.c b/gnu/libexec/uucp/libuuconf/grdcmp.c
index 6a25e622fbf4..be7fb95eb009 100644
--- a/gnu/libexec/uucp/libuuconf/grdcmp.c
+++ b/gnu/libexec/uucp/libuuconf/grdcmp.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_grdcmp_rcsid[] = "$Id: grdcmp.c,v 1.3 1995/08/19 21:27:11 ache Exp $";
+const char _uuconf_grdcmp_rcsid[] = "$Id: grdcmp.c,v 1.2.6.1 1995/09/01 06:03:47 davidg Exp $";
#endif
#include <ctype.h>
diff --git a/gnu/libexec/uucp/libuuconf/hdial.c b/gnu/libexec/uucp/libuuconf/hdial.c
index c4933783331c..3b9cf29aeb3b 100644
--- a/gnu/libexec/uucp/libuuconf/hdial.c
+++ b/gnu/libexec/uucp/libuuconf/hdial.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_hdial_rcsid[] = "$Id: hdial.c,v 1.4 1995/08/19 21:27:13 ache Exp $";
+const char _uuconf_hdial_rcsid[] = "$Id: hdial.c,v 1.3.4.1 1995/09/01 06:03:48 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/hdnams.c b/gnu/libexec/uucp/libuuconf/hdnams.c
index b9d747d9a492..b795f218e851 100644
--- a/gnu/libexec/uucp/libuuconf/hdnams.c
+++ b/gnu/libexec/uucp/libuuconf/hdnams.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_hdnams_rcsid[] = "$Id: hdnams.c,v 1.4 1995/08/19 21:27:14 ache Exp $";
+const char _uuconf_hdnams_rcsid[] = "$Id: hdnams.c,v 1.3.4.1 1995/09/01 06:03:49 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/hinit.c b/gnu/libexec/uucp/libuuconf/hinit.c
index e0138cddb0d5..6d30e41ef794 100644
--- a/gnu/libexec/uucp/libuuconf/hinit.c
+++ b/gnu/libexec/uucp/libuuconf/hinit.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_hinit_rcsid[] = "$Id: hinit.c,v 1.4 1995/08/19 21:27:16 ache Exp $";
+const char _uuconf_hinit_rcsid[] = "$Id: hinit.c,v 1.3.4.1 1995/09/01 06:03:51 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/hlocnm.c b/gnu/libexec/uucp/libuuconf/hlocnm.c
index 694b48964133..972b9ca60635 100644
--- a/gnu/libexec/uucp/libuuconf/hlocnm.c
+++ b/gnu/libexec/uucp/libuuconf/hlocnm.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_hlocnm_rcsid[] = "$Id: hlocnm.c,v 1.3 1995/08/19 21:27:17 ache Exp $";
+const char _uuconf_hlocnm_rcsid[] = "$Id: hlocnm.c,v 1.2.6.1 1995/09/01 06:03:52 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/hport.c b/gnu/libexec/uucp/libuuconf/hport.c
index e39bd33e8528..6fc0da628b94 100644
--- a/gnu/libexec/uucp/libuuconf/hport.c
+++ b/gnu/libexec/uucp/libuuconf/hport.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_hport_rcsid[] = "$Id: hport.c,v 1.3 1995/08/19 21:27:22 ache Exp $";
+const char _uuconf_hport_rcsid[] = "$Id: hport.c,v 1.2.6.1 1995/09/01 06:03:53 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/hrmunk.c b/gnu/libexec/uucp/libuuconf/hrmunk.c
index 150f57a5ea12..d928679e26ea 100644
--- a/gnu/libexec/uucp/libuuconf/hrmunk.c
+++ b/gnu/libexec/uucp/libuuconf/hrmunk.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_hrmunk_rcsid[] = "$Id: hrmunk.c,v 1.3 1995/08/19 21:27:24 ache Exp $";
+const char _uuconf_hrmunk_rcsid[] = "$Id: hrmunk.c,v 1.2.6.1 1995/09/01 06:03:54 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/hsinfo.c b/gnu/libexec/uucp/libuuconf/hsinfo.c
index 7903122f6f5c..d256f028e531 100644
--- a/gnu/libexec/uucp/libuuconf/hsinfo.c
+++ b/gnu/libexec/uucp/libuuconf/hsinfo.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_hsinfo_rcsid[] = "$Id: hsinfo.c,v 1.4 1995/08/19 21:27:25 ache Exp $";
+const char _uuconf_hsinfo_rcsid[] = "$Id: hsinfo.c,v 1.3.4.1 1995/09/01 06:03:55 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/hsnams.c b/gnu/libexec/uucp/libuuconf/hsnams.c
index 0e4d9b173f9b..43f6bda3ec89 100644
--- a/gnu/libexec/uucp/libuuconf/hsnams.c
+++ b/gnu/libexec/uucp/libuuconf/hsnams.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_hsnams_rcsid[] = "$Id: hsnams.c,v 1.4 1995/08/19 21:27:26 ache Exp $";
+const char _uuconf_hsnams_rcsid[] = "$Id: hsnams.c,v 1.3.4.1 1995/09/01 06:03:56 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/hsys.c b/gnu/libexec/uucp/libuuconf/hsys.c
index f8959c76f773..01d63929f7e7 100644
--- a/gnu/libexec/uucp/libuuconf/hsys.c
+++ b/gnu/libexec/uucp/libuuconf/hsys.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_hsys_rcsid[] = "$Id: hsys.c,v 1.3 1995/08/19 21:27:28 ache Exp $";
+const char _uuconf_hsys_rcsid[] = "$Id: hsys.c,v 1.2.6.1 1995/09/01 06:03:57 davidg Exp $";
#endif
/* Get system information from the HDB configuration files. This is a
diff --git a/gnu/libexec/uucp/libuuconf/hunk.c b/gnu/libexec/uucp/libuuconf/hunk.c
index 470e1ffe66cb..05b50b9fdbca 100644
--- a/gnu/libexec/uucp/libuuconf/hunk.c
+++ b/gnu/libexec/uucp/libuuconf/hunk.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_hunk_rcsid[] = "$Id: hunk.c,v 1.3 1995/08/19 21:27:29 ache Exp $";
+const char _uuconf_hunk_rcsid[] = "$Id: hunk.c,v 1.2.6.1 1995/09/01 06:03:57 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/iniglb.c b/gnu/libexec/uucp/libuuconf/iniglb.c
index f406e906094a..aafbe20f3cdb 100644
--- a/gnu/libexec/uucp/libuuconf/iniglb.c
+++ b/gnu/libexec/uucp/libuuconf/iniglb.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_iniglb_rcsid[] = "$Id: iniglb.c,v 1.3 1995/08/19 21:27:30 ache Exp $";
+const char _uuconf_iniglb_rcsid[] = "$Id: iniglb.c,v 1.2.6.1 1995/09/01 06:03:58 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/init.c b/gnu/libexec/uucp/libuuconf/init.c
index f9b6432faaa2..aa1ce70dc852 100644
--- a/gnu/libexec/uucp/libuuconf/init.c
+++ b/gnu/libexec/uucp/libuuconf/init.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_init_rcsid[] = "$Id: init.c,v 1.3 1995/08/19 21:27:32 ache Exp $";
+const char _uuconf_init_rcsid[] = "$Id: init.c,v 1.2.6.1 1995/09/01 06:03:59 davidg Exp $";
#endif
/* Initialize the UUCP configuration file reading routines. This is
diff --git a/gnu/libexec/uucp/libuuconf/int.c b/gnu/libexec/uucp/libuuconf/int.c
index cfa1a9a53430..a7ef1c62631a 100644
--- a/gnu/libexec/uucp/libuuconf/int.c
+++ b/gnu/libexec/uucp/libuuconf/int.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_int_rcsid[] = "$Id: int.c,v 1.3 1995/08/19 21:27:33 ache Exp $";
+const char _uuconf_int_rcsid[] = "$Id: int.c,v 1.2.6.1 1995/09/01 06:04:00 davidg Exp $";
#endif
/* Parse a string into a variable. This is called by uuconf_cmd_args,
diff --git a/gnu/libexec/uucp/libuuconf/lckdir.c b/gnu/libexec/uucp/libuuconf/lckdir.c
index b87420ca3781..704a102b93b4 100644
--- a/gnu/libexec/uucp/libuuconf/lckdir.c
+++ b/gnu/libexec/uucp/libuuconf/lckdir.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_lckdir_rcsid[] = "$Id: lckdir.c,v 1.3 1995/08/19 21:27:34 ache Exp $";
+const char _uuconf_lckdir_rcsid[] = "$Id: lckdir.c,v 1.2.6.1 1995/09/01 06:04:01 davidg Exp $";
#endif
/* Get the name of the UUCP lock directory. */
diff --git a/gnu/libexec/uucp/libuuconf/lineno.c b/gnu/libexec/uucp/libuuconf/lineno.c
index af10039e1394..4caa6a949e2e 100644
--- a/gnu/libexec/uucp/libuuconf/lineno.c
+++ b/gnu/libexec/uucp/libuuconf/lineno.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_lineno_rcsid[] = "$Id: lineno.c,v 1.3 1995/08/19 21:27:35 ache Exp $";
+const char _uuconf_lineno_rcsid[] = "$Id: lineno.c,v 1.2.6.1 1995/09/01 06:04:02 davidg Exp $";
#endif
/* Return the saved line number. */
diff --git a/gnu/libexec/uucp/libuuconf/llocnm.c b/gnu/libexec/uucp/libuuconf/llocnm.c
index 5cb8600b664a..2c9053f5cbec 100644
--- a/gnu/libexec/uucp/libuuconf/llocnm.c
+++ b/gnu/libexec/uucp/libuuconf/llocnm.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_llocnm_rcsid[] = "$Id: llocnm.c,v 1.3 1995/08/19 21:27:36 ache Exp $";
+const char _uuconf_llocnm_rcsid[] = "$Id: llocnm.c,v 1.2.6.1 1995/09/01 06:04:03 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/local.c b/gnu/libexec/uucp/libuuconf/local.c
index f124802e899b..37040ab2ce3c 100644
--- a/gnu/libexec/uucp/libuuconf/local.c
+++ b/gnu/libexec/uucp/libuuconf/local.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_local_rcsid[] = "$Id: local.c,v 1.3 1995/08/19 21:27:37 ache Exp $";
+const char _uuconf_local_rcsid[] = "$Id: local.c,v 1.2.6.1 1995/09/01 06:04:04 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/locnm.c b/gnu/libexec/uucp/libuuconf/locnm.c
index 730f368a82bc..8d60626d3798 100644
--- a/gnu/libexec/uucp/libuuconf/locnm.c
+++ b/gnu/libexec/uucp/libuuconf/locnm.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_locnm_rcsid[] = "$Id: locnm.c,v 1.3 1995/08/19 21:27:39 ache Exp $";
+const char _uuconf_locnm_rcsid[] = "$Id: locnm.c,v 1.2.6.1 1995/09/01 06:04:05 davidg Exp $";
#endif
/* Get the local node name. */
diff --git a/gnu/libexec/uucp/libuuconf/logfil.c b/gnu/libexec/uucp/libuuconf/logfil.c
index 8b146259e0c9..f2a600f0032d 100644
--- a/gnu/libexec/uucp/libuuconf/logfil.c
+++ b/gnu/libexec/uucp/libuuconf/logfil.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_logfil_rcsid[] = "$Id: logfil.c,v 1.3 1995/08/19 21:27:41 ache Exp $";
+const char _uuconf_logfil_rcsid[] = "$Id: logfil.c,v 1.2.6.1 1995/09/01 06:04:06 davidg Exp $";
#endif
/* Get the name of the UUCP log file. */
diff --git a/gnu/libexec/uucp/libuuconf/maxuxq.c b/gnu/libexec/uucp/libuuconf/maxuxq.c
index a45a0e494f36..3c80a92061b1 100644
--- a/gnu/libexec/uucp/libuuconf/maxuxq.c
+++ b/gnu/libexec/uucp/libuuconf/maxuxq.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_maxuxq_rcsid[] = "$Id: maxuxq.c,v 1.3 1995/08/19 21:27:42 ache Exp $";
+const char _uuconf_maxuxq_rcsid[] = "$Id: maxuxq.c,v 1.2.6.1 1995/09/01 06:04:06 davidg Exp $";
#endif
/* Get the maximum number of simultaneous uuxqt executions. When
diff --git a/gnu/libexec/uucp/libuuconf/mrgblk.c b/gnu/libexec/uucp/libuuconf/mrgblk.c
index 21d13eafa81c..6e3b66ad50ec 100644
--- a/gnu/libexec/uucp/libuuconf/mrgblk.c
+++ b/gnu/libexec/uucp/libuuconf/mrgblk.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_mrgblk_rcsid[] = "$Id: mrgblk.c,v 1.3 1995/08/19 21:27:44 ache Exp $";
+const char _uuconf_mrgblk_rcsid[] = "$Id: mrgblk.c,v 1.2.6.1 1995/09/01 06:04:07 davidg Exp $";
#endif
#include "alloc.h"
diff --git a/gnu/libexec/uucp/libuuconf/paramc.c b/gnu/libexec/uucp/libuuconf/paramc.c
index feaf4d19b131..15e43f859689 100644
--- a/gnu/libexec/uucp/libuuconf/paramc.c
+++ b/gnu/libexec/uucp/libuuconf/paramc.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_paramc_rcsid[] = "$Id: paramc.c,v 1.3 1995/08/19 21:27:45 ache Exp $";
+const char _uuconf_paramc_rcsid[] = "$Id: paramc.c,v 1.2.6.1 1995/09/01 06:04:08 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/port.c b/gnu/libexec/uucp/libuuconf/port.c
index bd15a7f8ad25..f128a1ebf1a0 100644
--- a/gnu/libexec/uucp/libuuconf/port.c
+++ b/gnu/libexec/uucp/libuuconf/port.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_port_rcsid[] = "$Id: port.c,v 1.3 1995/08/19 21:27:47 ache Exp $";
+const char _uuconf_port_rcsid[] = "$Id: port.c,v 1.2.6.1 1995/09/01 06:04:09 davidg Exp $";
#endif
/* Find a port by name, baud rate, and special purpose function. */
diff --git a/gnu/libexec/uucp/libuuconf/prtsub.c b/gnu/libexec/uucp/libuuconf/prtsub.c
index 47d24bb1f489..b6221ee5edc0 100644
--- a/gnu/libexec/uucp/libuuconf/prtsub.c
+++ b/gnu/libexec/uucp/libuuconf/prtsub.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_prtsub_rcsid[] = "$Id: prtsub.c,v 1.3 1995/08/19 21:27:49 ache Exp $";
+const char _uuconf_prtsub_rcsid[] = "$Id: prtsub.c,v 1.2.6.1 1995/09/01 06:04:10 davidg Exp $";
#endif
/* Clear the information in a port. This can only clear the type
diff --git a/gnu/libexec/uucp/libuuconf/pubdir.c b/gnu/libexec/uucp/libuuconf/pubdir.c
index fbfed1b169d6..c384a68f2c59 100644
--- a/gnu/libexec/uucp/libuuconf/pubdir.c
+++ b/gnu/libexec/uucp/libuuconf/pubdir.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_pubdir_rcsid[] = "$Id: pubdir.c,v 1.3 1995/08/19 21:27:50 ache Exp $";
+const char _uuconf_pubdir_rcsid[] = "$Id: pubdir.c,v 1.2.6.1 1995/09/01 06:04:11 davidg Exp $";
#endif
/* Get the name of the UUCP public directory. */
diff --git a/gnu/libexec/uucp/libuuconf/rdlocs.c b/gnu/libexec/uucp/libuuconf/rdlocs.c
index e2f465a4f331..accdc728d7c2 100644
--- a/gnu/libexec/uucp/libuuconf/rdlocs.c
+++ b/gnu/libexec/uucp/libuuconf/rdlocs.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_rdlocs_rcsid[] = "$Id: rdlocs.c,v 1.4 1995/08/19 21:27:51 ache Exp $";
+const char _uuconf_rdlocs_rcsid[] = "$Id: rdlocs.c,v 1.3.4.1 1995/09/01 06:04:12 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/rdperm.c b/gnu/libexec/uucp/libuuconf/rdperm.c
index d3cf81de9c2a..c78ba7b14017 100644
--- a/gnu/libexec/uucp/libuuconf/rdperm.c
+++ b/gnu/libexec/uucp/libuuconf/rdperm.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_rdperm_rcsid[] = "$Id: rdperm.c,v 1.3 1995/08/19 21:27:55 ache Exp $";
+const char _uuconf_rdperm_rcsid[] = "$Id: rdperm.c,v 1.2.6.1 1995/09/01 06:04:13 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/reliab.c b/gnu/libexec/uucp/libuuconf/reliab.c
index 36567eb9b4bd..370983b0e548 100644
--- a/gnu/libexec/uucp/libuuconf/reliab.c
+++ b/gnu/libexec/uucp/libuuconf/reliab.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_reliab_rcsid[] = "$Id: reliab.c,v 1.3 1995/08/19 21:27:56 ache Exp $";
+const char _uuconf_reliab_rcsid[] = "$Id: reliab.c,v 1.2.6.1 1995/09/01 06:04:14 davidg Exp $";
#endif
/* Handle the "seven-bit" command for a port or a dialer. The pvar
diff --git a/gnu/libexec/uucp/libuuconf/remunk.c b/gnu/libexec/uucp/libuuconf/remunk.c
index 546aefdc6c4e..260d4bcbe27c 100644
--- a/gnu/libexec/uucp/libuuconf/remunk.c
+++ b/gnu/libexec/uucp/libuuconf/remunk.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_remunk_rcsid[] = "$Id: remunk.c,v 1.3 1995/08/19 21:27:58 ache Exp $";
+const char _uuconf_remunk_rcsid[] = "$Id: remunk.c,v 1.2.6.1 1995/09/01 06:04:15 davidg Exp $";
#endif
/* Get the name of the remote.unknown shell script. */
diff --git a/gnu/libexec/uucp/libuuconf/runuxq.c b/gnu/libexec/uucp/libuuconf/runuxq.c
index 9dbf92b66000..a27830b8762c 100644
--- a/gnu/libexec/uucp/libuuconf/runuxq.c
+++ b/gnu/libexec/uucp/libuuconf/runuxq.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_runuxq_rcsid[] = "$Id: runuxq.c,v 1.2 1995/08/19 21:27:59 ache Exp $";
+const char _uuconf_runuxq_rcsid[] = "$Id: runuxq.c,v 1.1.6.1 1995/09/01 06:04:16 davidg Exp $";
#endif
/* Return how often to spawn a uuxqt process. This is either a
diff --git a/gnu/libexec/uucp/libuuconf/sinfo.c b/gnu/libexec/uucp/libuuconf/sinfo.c
index e904fff5b37a..54ccf7112873 100644
--- a/gnu/libexec/uucp/libuuconf/sinfo.c
+++ b/gnu/libexec/uucp/libuuconf/sinfo.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_sinfo_rcsid[] = "$Id: sinfo.c,v 1.3 1995/08/19 21:28:00 ache Exp $";
+const char _uuconf_sinfo_rcsid[] = "$Id: sinfo.c,v 1.2.6.1 1995/09/01 06:04:17 davidg Exp $";
#endif
/* Get information about a particular system. We combine the
diff --git a/gnu/libexec/uucp/libuuconf/snams.c b/gnu/libexec/uucp/libuuconf/snams.c
index 407f522c7473..f695a557530f 100644
--- a/gnu/libexec/uucp/libuuconf/snams.c
+++ b/gnu/libexec/uucp/libuuconf/snams.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_snams_rcsid[] = "$Id: snams.c,v 1.3 1995/08/19 21:28:02 ache Exp $";
+const char _uuconf_snams_rcsid[] = "$Id: snams.c,v 1.2.6.1 1995/09/01 06:04:18 davidg Exp $";
#endif
/* Get all known system names. */
diff --git a/gnu/libexec/uucp/libuuconf/split.c b/gnu/libexec/uucp/libuuconf/split.c
index 12c71fd1bd6a..9080e4b625f2 100644
--- a/gnu/libexec/uucp/libuuconf/split.c
+++ b/gnu/libexec/uucp/libuuconf/split.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_split_rcsid[] = "$Id: split.c,v 1.3 1995/08/19 21:28:04 ache Exp $";
+const char _uuconf_split_rcsid[] = "$Id: split.c,v 1.2.6.1 1995/09/01 06:04:19 davidg Exp $";
#endif
#include <ctype.h>
diff --git a/gnu/libexec/uucp/libuuconf/spool.c b/gnu/libexec/uucp/libuuconf/spool.c
index f871f2be3b51..e69f09ea8687 100644
--- a/gnu/libexec/uucp/libuuconf/spool.c
+++ b/gnu/libexec/uucp/libuuconf/spool.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_spool_rcsid[] = "$Id: spool.c,v 1.3 1995/08/19 21:28:05 ache Exp $";
+const char _uuconf_spool_rcsid[] = "$Id: spool.c,v 1.2.6.1 1995/09/01 06:04:20 davidg Exp $";
#endif
/* Get the name of the UUCP spool directory. */
diff --git a/gnu/libexec/uucp/libuuconf/stafil.c b/gnu/libexec/uucp/libuuconf/stafil.c
index d733b3c4c02d..d7c705ae89e2 100644
--- a/gnu/libexec/uucp/libuuconf/stafil.c
+++ b/gnu/libexec/uucp/libuuconf/stafil.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_stafil_rcsid[] = "$Id: stafil.c,v 1.3 1995/08/19 21:28:06 ache Exp $";
+const char _uuconf_stafil_rcsid[] = "$Id: stafil.c,v 1.2.6.1 1995/09/01 06:04:21 davidg Exp $";
#endif
/* Get the name of the UUCP statistics file. */
diff --git a/gnu/libexec/uucp/libuuconf/strip.c b/gnu/libexec/uucp/libuuconf/strip.c
index fc314a77e939..973fad1efd0a 100644
--- a/gnu/libexec/uucp/libuuconf/strip.c
+++ b/gnu/libexec/uucp/libuuconf/strip.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_strip_rcsid[] = "$Id: strip.c,v 1.2 1995/06/28 15:43:14 ian Rel $";
+const char _uuconf_strip_rcsid[] = "$Id: strip.c,v 1.1 1995/08/19 21:28:07 ache Exp $";
#endif
/* Get information about what types of global information should be
diff --git a/gnu/libexec/uucp/libuuconf/syssub.c b/gnu/libexec/uucp/libuuconf/syssub.c
index 11dd7f2f0ff9..3424368c48cc 100644
--- a/gnu/libexec/uucp/libuuconf/syssub.c
+++ b/gnu/libexec/uucp/libuuconf/syssub.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_syssub_rcsid[] = "$Id: syssub.c,v 1.4 1995/08/19 21:28:10 ache Exp $";
+const char _uuconf_syssub_rcsid[] = "$Id: syssub.c,v 1.3.4.1 1995/09/01 06:04:23 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/tcalou.c b/gnu/libexec/uucp/libuuconf/tcalou.c
index b675b8ee9c2e..0b70f5819c54 100644
--- a/gnu/libexec/uucp/libuuconf/tcalou.c
+++ b/gnu/libexec/uucp/libuuconf/tcalou.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_tcalou_rcsid[] = "$Id: tcalou.c,v 1.3 1995/08/19 21:28:12 ache Exp $";
+const char _uuconf_tcalou_rcsid[] = "$Id: tcalou.c,v 1.2.6.1 1995/09/01 06:04:24 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/tdial.c b/gnu/libexec/uucp/libuuconf/tdial.c
index d3a8a751444d..fe346d91ea5b 100644
--- a/gnu/libexec/uucp/libuuconf/tdial.c
+++ b/gnu/libexec/uucp/libuuconf/tdial.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_tdial_rcsid[] = "$Id: tdial.c,v 1.3 1995/08/19 21:28:13 ache Exp $";
+const char _uuconf_tdial_rcsid[] = "$Id: tdial.c,v 1.2.6.1 1995/09/01 06:04:25 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/tdialc.c b/gnu/libexec/uucp/libuuconf/tdialc.c
index 3e642b23eda1..85a1740281e1 100644
--- a/gnu/libexec/uucp/libuuconf/tdialc.c
+++ b/gnu/libexec/uucp/libuuconf/tdialc.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_tdialc_rcsid[] = "$Id: tdialc.c,v 1.4 1995/08/19 21:28:15 ache Exp $";
+const char _uuconf_tdialc_rcsid[] = "$Id: tdialc.c,v 1.3.4.1 1995/09/01 06:04:26 davidg Exp $";
#endif
static int idchat P((pointer pglobal, int argc, char **argv, pointer pvar,
diff --git a/gnu/libexec/uucp/libuuconf/tdnams.c b/gnu/libexec/uucp/libuuconf/tdnams.c
index afd0814fa711..31e6ad05c96c 100644
--- a/gnu/libexec/uucp/libuuconf/tdnams.c
+++ b/gnu/libexec/uucp/libuuconf/tdnams.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_tdnams_rcsid[] = "$Id: tdnams.c,v 1.4 1995/08/19 21:28:16 ache Exp $";
+const char _uuconf_tdnams_rcsid[] = "$Id: tdnams.c,v 1.3.4.1 1995/09/01 06:04:27 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/tgcmp.c b/gnu/libexec/uucp/libuuconf/tgcmp.c
index 081c6ab36b54..24be7309d128 100644
--- a/gnu/libexec/uucp/libuuconf/tgcmp.c
+++ b/gnu/libexec/uucp/libuuconf/tgcmp.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_tgcmp_rcsid[] = "$Id: tgcmp.c,v 1.3 1995/08/19 21:28:17 ache Exp $";
+const char _uuconf_tgcmp_rcsid[] = "$Id: tgcmp.c,v 1.2.6.1 1995/09/01 06:04:28 davidg Exp $";
#endif
/* A comparison function to pass to _uuconf_itime_parse. This
diff --git a/gnu/libexec/uucp/libuuconf/thread.c b/gnu/libexec/uucp/libuuconf/thread.c
index 91aae72f754a..c8425e0042a6 100644
--- a/gnu/libexec/uucp/libuuconf/thread.c
+++ b/gnu/libexec/uucp/libuuconf/thread.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_thread_rcsid[] = "$Id: thread.c,v 1.3 1995/08/19 21:28:18 ache Exp $";
+const char _uuconf_thread_rcsid[] = "$Id: thread.c,v 1.2.6.1 1995/09/01 06:04:29 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/time.c b/gnu/libexec/uucp/libuuconf/time.c
index 928b4482bacb..bfc7ebe87e39 100644
--- a/gnu/libexec/uucp/libuuconf/time.c
+++ b/gnu/libexec/uucp/libuuconf/time.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_time_rcsid[] = "$Id: time.c,v 1.3 1995/08/19 21:28:19 ache Exp $";
+const char _uuconf_time_rcsid[] = "$Id: time.c,v 1.2.6.1 1995/09/01 06:04:30 davidg Exp $";
#endif
#include <ctype.h>
diff --git a/gnu/libexec/uucp/libuuconf/tinit.c b/gnu/libexec/uucp/libuuconf/tinit.c
index 808850efeae0..e31d89ffb38f 100644
--- a/gnu/libexec/uucp/libuuconf/tinit.c
+++ b/gnu/libexec/uucp/libuuconf/tinit.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_tinit_rcsid[] = "$Id: tinit.c,v 1.3 1995/08/19 21:28:21 ache Exp $";
+const char _uuconf_tinit_rcsid[] = "$Id: tinit.c,v 1.2.6.1 1995/09/01 06:04:31 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/tlocnm.c b/gnu/libexec/uucp/libuuconf/tlocnm.c
index 60b1c91f0819..dfb08abdfdae 100644
--- a/gnu/libexec/uucp/libuuconf/tlocnm.c
+++ b/gnu/libexec/uucp/libuuconf/tlocnm.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_tlocnm_rcsid[] = "$Id: tlocnm.c,v 1.3 1995/08/19 21:28:23 ache Exp $";
+const char _uuconf_tlocnm_rcsid[] = "$Id: tlocnm.c,v 1.2.6.1 1995/09/01 06:04:32 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/tport.c b/gnu/libexec/uucp/libuuconf/tport.c
index 7cb22b200a38..6ad4d1c5c24d 100644
--- a/gnu/libexec/uucp/libuuconf/tport.c
+++ b/gnu/libexec/uucp/libuuconf/tport.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_tport_rcsid[] = "$Id: tport.c,v 1.3 1995/08/19 21:28:24 ache Exp $";
+const char _uuconf_tport_rcsid[] = "$Id: tport.c,v 1.2.6.1 1995/09/01 06:04:33 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/tportc.c b/gnu/libexec/uucp/libuuconf/tportc.c
index 7fc284dc3bb4..fecf013423f4 100644
--- a/gnu/libexec/uucp/libuuconf/tportc.c
+++ b/gnu/libexec/uucp/libuuconf/tportc.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_tportc_rcsid[] = "$Id: tportc.c,v 1.4 1995/08/19 21:28:27 ache Exp $";
+const char _uuconf_tportc_rcsid[] = "$Id: tportc.c,v 1.3.4.1 1995/09/01 06:04:34 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/tsinfo.c b/gnu/libexec/uucp/libuuconf/tsinfo.c
index 32f7fc0d24f0..b6fcd5823346 100644
--- a/gnu/libexec/uucp/libuuconf/tsinfo.c
+++ b/gnu/libexec/uucp/libuuconf/tsinfo.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_tsinfo_rcsid[] = "$Id: tsinfo.c,v 1.3 1995/08/19 21:28:29 ache Exp $";
+const char _uuconf_tsinfo_rcsid[] = "$Id: tsinfo.c,v 1.2.6.1 1995/09/01 06:04:35 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/tsnams.c b/gnu/libexec/uucp/libuuconf/tsnams.c
index e5cacf1a19ea..c0ae6a3e4660 100644
--- a/gnu/libexec/uucp/libuuconf/tsnams.c
+++ b/gnu/libexec/uucp/libuuconf/tsnams.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_tsnams_rcsid[] = "$Id: tsnams.c,v 1.3 1995/08/19 21:28:30 ache Exp $";
+const char _uuconf_tsnams_rcsid[] = "$Id: tsnams.c,v 1.2.6.1 1995/09/01 06:04:36 davidg Exp $";
#endif
/* Get all the system names from the Taylor UUCP configuration files.
diff --git a/gnu/libexec/uucp/libuuconf/tsys.c b/gnu/libexec/uucp/libuuconf/tsys.c
index daec0e6b51b6..540abd16d5c8 100644
--- a/gnu/libexec/uucp/libuuconf/tsys.c
+++ b/gnu/libexec/uucp/libuuconf/tsys.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_tsys_rcsid[] = "$Id: tsys.c,v 1.3 1995/08/19 21:28:31 ache Exp $";
+const char _uuconf_tsys_rcsid[] = "$Id: tsys.c,v 1.2.6.1 1995/09/01 06:04:37 davidg Exp $";
#endif
/* Get system information from the Taylor UUCP configuration files.
diff --git a/gnu/libexec/uucp/libuuconf/tval.c b/gnu/libexec/uucp/libuuconf/tval.c
index b8beab3f38f0..939755be348e 100644
--- a/gnu/libexec/uucp/libuuconf/tval.c
+++ b/gnu/libexec/uucp/libuuconf/tval.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_tval_rcsid[] = "$Id: tval.c,v 1.3 1995/08/19 21:28:33 ache Exp $";
+const char _uuconf_tval_rcsid[] = "$Id: tval.c,v 1.2.6.1 1995/09/01 06:04:38 davidg Exp $";
#endif
/* Validate a login name for a system using Taylor UUCP configuration
diff --git a/gnu/libexec/uucp/libuuconf/ugtlin.c b/gnu/libexec/uucp/libuuconf/ugtlin.c
index 95dbbe5bab2f..ed81b42079d8 100644
--- a/gnu/libexec/uucp/libuuconf/ugtlin.c
+++ b/gnu/libexec/uucp/libuuconf/ugtlin.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_ugtlin_rcsid[] = "$Id: ugtlin.c,v 1.3 1995/08/19 21:28:34 ache Exp $";
+const char _uuconf_ugtlin_rcsid[] = "$Id: ugtlin.c,v 1.2.6.1 1995/09/01 06:04:39 davidg Exp $";
#endif
/* Read a line from a file with backslash continuations. This updates
diff --git a/gnu/libexec/uucp/libuuconf/unk.c b/gnu/libexec/uucp/libuuconf/unk.c
index 7fd386760bc2..b72cb81bed67 100644
--- a/gnu/libexec/uucp/libuuconf/unk.c
+++ b/gnu/libexec/uucp/libuuconf/unk.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_unk_rcsid[] = "$Id: unk.c,v 1.3 1995/08/19 21:28:35 ache Exp $";
+const char _uuconf_unk_rcsid[] = "$Id: unk.c,v 1.2.6.1 1995/09/01 06:04:40 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/val.c b/gnu/libexec/uucp/libuuconf/val.c
index b6c4eaca833c..19e7dee5e9bb 100644
--- a/gnu/libexec/uucp/libuuconf/val.c
+++ b/gnu/libexec/uucp/libuuconf/val.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_val_rcsid[] = "$Id: val.c,v 1.3 1995/08/19 21:28:38 ache Exp $";
+const char _uuconf_val_rcsid[] = "$Id: val.c,v 1.2.6.1 1995/09/01 06:04:42 davidg Exp $";
#endif
/* Validate a login name for a system. */
diff --git a/gnu/libexec/uucp/libuuconf/vinit.c b/gnu/libexec/uucp/libuuconf/vinit.c
index 2097145f83d5..29e385e37fe0 100644
--- a/gnu/libexec/uucp/libuuconf/vinit.c
+++ b/gnu/libexec/uucp/libuuconf/vinit.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_vinit_rcsid[] = "$Id: vinit.c,v 1.3 1995/08/19 21:28:39 ache Exp $";
+const char _uuconf_vinit_rcsid[] = "$Id: vinit.c,v 1.2.6.1 1995/09/01 06:04:43 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/vport.c b/gnu/libexec/uucp/libuuconf/vport.c
index ce4623dd67d7..99c8c4c55810 100644
--- a/gnu/libexec/uucp/libuuconf/vport.c
+++ b/gnu/libexec/uucp/libuuconf/vport.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_vport_rcsid[] = "$Id: vport.c,v 1.4 1995/08/19 21:28:40 ache Exp $";
+const char _uuconf_vport_rcsid[] = "$Id: vport.c,v 1.3.4.1 1995/09/01 06:04:44 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/vsinfo.c b/gnu/libexec/uucp/libuuconf/vsinfo.c
index 04e06be263d3..43b046659eac 100644
--- a/gnu/libexec/uucp/libuuconf/vsinfo.c
+++ b/gnu/libexec/uucp/libuuconf/vsinfo.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_vsinfo_rcsid[] = "$Id: vsinfo.c,v 1.4 1995/08/19 21:28:43 ache Exp $";
+const char _uuconf_vsinfo_rcsid[] = "$Id: vsinfo.c,v 1.3.4.1 1995/09/01 06:04:45 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/vsnams.c b/gnu/libexec/uucp/libuuconf/vsnams.c
index f90ec249e0fa..aba4ca9f3c79 100644
--- a/gnu/libexec/uucp/libuuconf/vsnams.c
+++ b/gnu/libexec/uucp/libuuconf/vsnams.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_vsnams_rcsid[] = "$Id: vsnams.c,v 1.3 1995/08/19 21:28:46 ache Exp $";
+const char _uuconf_vsnams_rcsid[] = "$Id: vsnams.c,v 1.2.6.1 1995/09/01 06:04:46 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/libuuconf/vsys.c b/gnu/libexec/uucp/libuuconf/vsys.c
index 29eed8c35e42..81c0d86ee02d 100644
--- a/gnu/libexec/uucp/libuuconf/vsys.c
+++ b/gnu/libexec/uucp/libuuconf/vsys.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char _uuconf_vsys_rcsid[] = "$Id: vsys.c,v 1.3 1995/08/19 21:28:49 ache Exp $";
+const char _uuconf_vsys_rcsid[] = "$Id: vsys.c,v 1.2.6.1 1995/09/01 06:04:47 davidg Exp $";
#endif
/* Get system information from the V2 configuration files. This is a
diff --git a/gnu/libexec/uucp/libuucp/Makefile b/gnu/libexec/uucp/libuucp/Makefile
index 33e0a0251850..e709431abc6a 100644
--- a/gnu/libexec/uucp/libuucp/Makefile
+++ b/gnu/libexec/uucp/libuucp/Makefile
@@ -1,5 +1,5 @@
# This is the Makefile for the libuucp subdirectory of Taylor UUCP
-# $Id: Makefile,v 1.2 1993/08/16 16:22:34 jtc Exp $
+# $Id: Makefile,v 1.3 1994/05/07 18:13:29 ache Exp $
LIB= uucp
SRCS = buffer.c crc.c debug.c escape.c getopt.c getop1.c parse.c spool.c \
diff --git a/gnu/libexec/uucp/libuucp/parse.c b/gnu/libexec/uucp/libuucp/parse.c
index ab047d08dfb9..884174a8283e 100644
--- a/gnu/libexec/uucp/libuucp/parse.c
+++ b/gnu/libexec/uucp/libuucp/parse.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char parse_rcsid[] = "$Id: parse.c,v 1.4 1995/08/19 21:29:22 ache Exp $";
+const char parse_rcsid[] = "$Id: parse.c,v 1.3.4.1 1995/09/01 06:05:01 davidg Exp $";
#endif
#include "uudefs.h"
diff --git a/gnu/libexec/uucp/sample/Makefile b/gnu/libexec/uucp/sample/Makefile
index 585a0fa66c50..36a84d8e44b2 100644
--- a/gnu/libexec/uucp/sample/Makefile
+++ b/gnu/libexec/uucp/sample/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.3 1995/07/25 00:31:29 bde Exp $
+# $Id: Makefile,v 1.2.6.1 1995/09/01 06:05:06 davidg Exp $
FILES= call.sample config.sample dial.sample dialcode.sample passwd.sample \
port.sample sys1.sample sys2.sample
diff --git a/gnu/libexec/uucp/tstuu.c b/gnu/libexec/uucp/tstuu.c
index ee04353ffc82..4dd789a030e1 100644
--- a/gnu/libexec/uucp/tstuu.c
+++ b/gnu/libexec/uucp/tstuu.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char tstuu_rcsid[] = "$Id: tstuu.c,v 1.4 1995/08/19 21:23:11 ache Exp $";
+const char tstuu_rcsid[] = "$Id: tstuu.c,v 1.3.4.1 1995/09/01 06:01:19 davidg Exp $";
#endif
#include "sysdep.h"
diff --git a/gnu/libexec/uucp/uuchk/Makefile b/gnu/libexec/uucp/uuchk/Makefile
index 707dcee0dc17..3fa79f205866 100644
--- a/gnu/libexec/uucp/uuchk/Makefile
+++ b/gnu/libexec/uucp/uuchk/Makefile
@@ -1,5 +1,5 @@
# Makefile for uuchk
-# $Id: Makefile,v 1.3 1994/05/31 05:46:20 ache Exp $
+# $Id: Makefile,v 1.4 1995/05/14 17:00:58 ache Exp $
BINDIR= $(sbindir)
diff --git a/gnu/libexec/uucp/uuchk/uuchk.c b/gnu/libexec/uucp/uuchk/uuchk.c
index 4e9540a22584..96ef5b333e83 100644
--- a/gnu/libexec/uucp/uuchk/uuchk.c
+++ b/gnu/libexec/uucp/uuchk/uuchk.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char uuchk_rcsid[] = "$Id: uuchk.c,v 1.4 1995/08/19 21:29:30 ache Exp $";
+const char uuchk_rcsid[] = "$Id: uuchk.c,v 1.3.4.1 1995/09/01 06:05:07 davidg Exp $";
#endif
#include "getopt.h"
diff --git a/gnu/libexec/uucp/uucico/Makefile b/gnu/libexec/uucp/uucico/Makefile
index ac67f23dae34..96fe4ac41b41 100644
--- a/gnu/libexec/uucp/uucico/Makefile
+++ b/gnu/libexec/uucp/uucico/Makefile
@@ -1,5 +1,5 @@
# Makefile for uucico
-# $Id: Makefile,v 1.8 1995/08/19 21:29:34 ache Exp $
+# $Id: Makefile,v 1.7.4.1 1995/09/01 06:05:10 davidg Exp $
BINDIR= $(libxdir)
BINOWN= $(owner)
diff --git a/gnu/libexec/uucp/uucico/prote.c b/gnu/libexec/uucp/uucico/prote.c
index c6f0c97483c2..ffc26c4df765 100644
--- a/gnu/libexec/uucp/uucico/prote.c
+++ b/gnu/libexec/uucp/uucico/prote.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char prote_rcsid[] = "$Id: prote.c,v 1.4 1995/08/19 21:29:36 ache Exp $";
+const char prote_rcsid[] = "$Id: prote.c,v 1.3.4.1 1995/09/01 06:05:11 davidg Exp $";
#endif
#include "uudefs.h"
diff --git a/gnu/libexec/uucp/uucico/protf.c b/gnu/libexec/uucp/uucico/protf.c
index 7c70ede274c2..fa01b9424375 100644
--- a/gnu/libexec/uucp/uucico/protf.c
+++ b/gnu/libexec/uucp/uucico/protf.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char protf_rcsid[] = "$Id: protf.c,v 1.4 1995/08/19 21:29:38 ache Exp $";
+const char protf_rcsid[] = "$Id: protf.c,v 1.3.4.1 1995/09/01 06:05:12 davidg Exp $";
#endif
#include <ctype.h>
diff --git a/gnu/libexec/uucp/uucico/protg.c b/gnu/libexec/uucp/uucico/protg.c
index d106c5d7ac8f..749145921033 100644
--- a/gnu/libexec/uucp/uucico/protg.c
+++ b/gnu/libexec/uucp/uucico/protg.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char protg_rcsid[] = "$Id: protg.c,v 1.4 1995/08/19 21:29:40 ache Exp $";
+const char protg_rcsid[] = "$Id: protg.c,v 1.3.4.1 1995/09/01 06:05:13 davidg Exp $";
#endif
#include <ctype.h>
diff --git a/gnu/libexec/uucp/uucico/proti.c b/gnu/libexec/uucp/uucico/proti.c
index e8acd483dd34..233865a9009f 100644
--- a/gnu/libexec/uucp/uucico/proti.c
+++ b/gnu/libexec/uucp/uucico/proti.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char proti_rcsid[] = "$Id: proti.c,v 1.4 1995/08/19 21:29:42 ache Exp $";
+const char proti_rcsid[] = "$Id: proti.c,v 1.3.4.1 1995/09/01 06:05:15 davidg Exp $";
#endif
#include <ctype.h>
diff --git a/gnu/libexec/uucp/uucico/protj.c b/gnu/libexec/uucp/uucico/protj.c
index 8d8cffd092f3..de70c2c0c50b 100644
--- a/gnu/libexec/uucp/uucico/protj.c
+++ b/gnu/libexec/uucp/uucico/protj.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char protj_rcsid[] = "$Id: protj.c,v 1.3 1995/08/19 21:29:44 ache Exp $";
+const char protj_rcsid[] = "$Id: protj.c,v 1.2.6.1 1995/09/01 06:05:16 davidg Exp $";
#endif
#include <ctype.h>
diff --git a/gnu/libexec/uucp/uucico/prott.c b/gnu/libexec/uucp/uucico/prott.c
index 0d38bed6f269..f2bfe16398bd 100644
--- a/gnu/libexec/uucp/uucico/prott.c
+++ b/gnu/libexec/uucp/uucico/prott.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char prott_rcsid[] = "$Id: prott.c,v 1.4 1995/08/19 21:29:45 ache Exp $";
+const char prott_rcsid[] = "$Id: prott.c,v 1.3.4.1 1995/09/01 06:05:17 davidg Exp $";
#endif
#include "uudefs.h"
diff --git a/gnu/libexec/uucp/uucico/proty.c b/gnu/libexec/uucp/uucico/proty.c
index f15671e2b4d3..2d5d5fb74775 100644
--- a/gnu/libexec/uucp/uucico/proty.c
+++ b/gnu/libexec/uucp/uucico/proty.c
@@ -23,7 +23,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char proty_id[] = "$Id: proty.c,v 1.4 1995/06/21 19:15:40 ian Rel $";
+const char proty_id[] = "$Id: proty.c,v 1.1 1995/08/19 21:29:47 ache Exp $";
#endif
#include "uudefs.h"
diff --git a/gnu/libexec/uucp/uucico/protz.c b/gnu/libexec/uucp/uucico/protz.c
index 878bae7c2382..19fb22b390f1 100644
--- a/gnu/libexec/uucp/uucico/protz.c
+++ b/gnu/libexec/uucp/uucico/protz.c
@@ -181,7 +181,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char protz_rcsid[] = "$Id: protz.c,v 1.4 1995/08/19 21:29:48 ache Exp $";
+const char protz_rcsid[] = "$Id: protz.c,v 1.3.4.1 1995/09/01 06:05:18 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/uucico/rec.c b/gnu/libexec/uucp/uucico/rec.c
index 69ed0dbb14e8..e557a23a0f4e 100644
--- a/gnu/libexec/uucp/uucico/rec.c
+++ b/gnu/libexec/uucp/uucico/rec.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char rec_rcsid[] = "$Id: rec.c,v 1.5 1995/08/19 21:29:50 ache Exp $";
+const char rec_rcsid[] = "$Id: rec.c,v 1.4.4.1 1995/09/01 06:05:21 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/uucico/send.c b/gnu/libexec/uucp/uucico/send.c
index abe3384dc823..fbabf2b6d224 100644
--- a/gnu/libexec/uucp/uucico/send.c
+++ b/gnu/libexec/uucp/uucico/send.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char send_rcsid[] = "$Id: send.c,v 1.5 1995/08/19 21:29:52 ache Exp $";
+const char send_rcsid[] = "$Id: send.c,v 1.4.4.1 1995/09/01 06:05:23 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/uucico/time.c b/gnu/libexec/uucp/uucico/time.c
index 4b81a48696e2..7b96b2c9d9d5 100644
--- a/gnu/libexec/uucp/uucico/time.c
+++ b/gnu/libexec/uucp/uucico/time.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char time_rcsid[] = "$Id: time.c,v 1.3 1995/08/19 21:29:54 ache Exp $";
+const char time_rcsid[] = "$Id: time.c,v 1.2.6.1 1995/09/01 06:05:25 davidg Exp $";
#endif
#include <ctype.h>
diff --git a/gnu/libexec/uucp/uucico/trans.c b/gnu/libexec/uucp/uucico/trans.c
index e3860a4c1c93..f6d738cc9646 100644
--- a/gnu/libexec/uucp/uucico/trans.c
+++ b/gnu/libexec/uucp/uucico/trans.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char trans_rcsid[] = "$Id: trans.c,v 1.5 1995/08/21 11:28:22 ache Exp $";
+const char trans_rcsid[] = "$Id: trans.c,v 1.3.4.1 1995/09/01 06:05:26 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/uucico/uucico.8 b/gnu/libexec/uucp/uucico/uucico.8
index 3b3b293e1b8b..3539c2c1dc39 100644
--- a/gnu/libexec/uucp/uucico/uucico.8
+++ b/gnu/libexec/uucp/uucico/uucico.8
@@ -1,4 +1,4 @@
-''' $Id: uucico.8,v 1.5 1995/08/19 21:29:57 ache Exp $
+''' $Id: uucico.8,v 1.4.4.1 1995/09/01 06:05:27 davidg Exp $
.TH uucico 8 "Taylor UUCP 1.06"
.SH NAME
uucico \- UUCP file transfer daemon
diff --git a/gnu/libexec/uucp/uucico/uucico.c b/gnu/libexec/uucp/uucico/uucico.c
index 0699faf781eb..ae5a1c97b27e 100644
--- a/gnu/libexec/uucp/uucico/uucico.c
+++ b/gnu/libexec/uucp/uucico/uucico.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char uucico_rcsid[] = "$Id: uucico.c,v 1.6 1995/08/21 11:28:23 ache Exp $";
+const char uucico_rcsid[] = "$Id: uucico.c,v 1.4.4.1 1995/09/01 06:05:28 davidg Exp $";
#endif
#include <ctype.h>
diff --git a/gnu/libexec/uucp/uucico/xcmd.c b/gnu/libexec/uucp/uucico/xcmd.c
index 728356260e53..b5be1a9fc1e0 100644
--- a/gnu/libexec/uucp/uucico/xcmd.c
+++ b/gnu/libexec/uucp/uucico/xcmd.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char xcmd_rcsid[] = "$Id: xcmd.c,v 1.3 1995/08/19 21:30:01 ache Exp $";
+const char xcmd_rcsid[] = "$Id: xcmd.c,v 1.2.6.1 1995/09/01 06:05:29 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/uuconv/Makefile b/gnu/libexec/uucp/uuconv/Makefile
index 1f9feff7b987..e33e311a43ed 100644
--- a/gnu/libexec/uucp/uuconv/Makefile
+++ b/gnu/libexec/uucp/uuconv/Makefile
@@ -1,5 +1,5 @@
# Makefile for uuconv
-# $Id: Makefile,v 1.4 1995/05/14 17:01:07 ache Exp $
+# $Id: Makefile,v 1.5 1995/05/30 04:45:39 rgrimes Exp $
BINDIR= $(sbindir)
diff --git a/gnu/libexec/uucp/uuconv/uuconv.c b/gnu/libexec/uucp/uuconv/uuconv.c
index a5f2372effcd..ffa5ca508744 100644
--- a/gnu/libexec/uucp/uuconv/uuconv.c
+++ b/gnu/libexec/uucp/uuconv/uuconv.c
@@ -26,7 +26,7 @@
#include "uucnfi.h"
#if USE_RCS_ID
-const char uuconv_rcsid[] = "$Id: uuconv.c,v 1.4 1995/08/19 21:30:03 ache Exp $";
+const char uuconv_rcsid[] = "$Id: uuconv.c,v 1.3.4.1 1995/09/01 06:05:31 davidg Exp $";
#endif
#include "getopt.h"
diff --git a/gnu/libexec/uucp/uucp/Makefile b/gnu/libexec/uucp/uucp/Makefile
index 4cb4afa8138a..b6af00ea421a 100644
--- a/gnu/libexec/uucp/uucp/Makefile
+++ b/gnu/libexec/uucp/uucp/Makefile
@@ -1,5 +1,5 @@
# Makefile for uucp
-# $Id: Makefile,v 1.2 1994/05/31 05:37:12 ache Exp $
+# $Id: Makefile,v 1.3 1994/05/31 07:37:14 ache Exp $
BINDIR= $(bindir)
BINOWN= $(owner)
diff --git a/gnu/libexec/uucp/uucp/uucp.1 b/gnu/libexec/uucp/uucp/uucp.1
index a46164319b32..a6b349d7e5b3 100644
--- a/gnu/libexec/uucp/uucp/uucp.1
+++ b/gnu/libexec/uucp/uucp/uucp.1
@@ -1,4 +1,4 @@
-''' $Id: uucp.1,v 1.4 1995/08/19 21:30:08 ache Exp $
+''' $Id: uucp.1,v 1.3.4.1 1995/09/01 06:05:33 davidg Exp $
.TH uucp 1 "Taylor UUCP 1.06"
.SH NAME
uucp \- Unix to Unix copy
diff --git a/gnu/libexec/uucp/uucp/uucp.c b/gnu/libexec/uucp/uucp/uucp.c
index 115e930013e7..9db7ddf74168 100644
--- a/gnu/libexec/uucp/uucp/uucp.c
+++ b/gnu/libexec/uucp/uucp/uucp.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char uucp_rcsid[] = "$Id: uucp.c,v 1.4 1995/08/21 11:28:24 ache Exp $";
+const char uucp_rcsid[] = "$Id: uucp.c,v 1.2.6.1 1995/09/01 06:05:34 davidg Exp $";
#endif
#include <ctype.h>
diff --git a/gnu/libexec/uucp/uulog/Makefile b/gnu/libexec/uucp/uulog/Makefile
index 321656f3dcf1..eb57dd2314a5 100644
--- a/gnu/libexec/uucp/uulog/Makefile
+++ b/gnu/libexec/uucp/uulog/Makefile
@@ -1,5 +1,5 @@
# Makefile for uulog
-# $Id: Makefile,v 1.2 1993/08/05 16:15:14 jtc Exp $
+# $Id: Makefile,v 1.1 1993/08/05 18:27:39 conklin Exp $
BINDIR= $(bindir)
diff --git a/gnu/libexec/uucp/uulog/uulog.c b/gnu/libexec/uucp/uulog/uulog.c
index 427e32d3bbf5..0aecd55441df 100644
--- a/gnu/libexec/uucp/uulog/uulog.c
+++ b/gnu/libexec/uucp/uulog/uulog.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char uulog_rcsid[] = "$Id: uulog.c,v 1.4 1995/08/19 21:30:12 ache Exp $";
+const char uulog_rcsid[] = "$Id: uulog.c,v 1.3.4.1 1995/09/01 06:05:35 davidg Exp $";
#endif
#include <ctype.h>
diff --git a/gnu/libexec/uucp/uuname/Makefile b/gnu/libexec/uucp/uuname/Makefile
index 5e7b314ba11e..1558f6bba3f2 100644
--- a/gnu/libexec/uucp/uuname/Makefile
+++ b/gnu/libexec/uucp/uuname/Makefile
@@ -1,5 +1,5 @@
# Makefile for uuname
-# $Id: Makefile,v 1.2 1993/08/05 16:15:16 jtc Exp $
+# $Id: Makefile,v 1.1 1993/08/05 18:27:42 conklin Exp $
BINDIR= $(bindir)
BINOWN= $(owner)
diff --git a/gnu/libexec/uucp/uuname/uuname.c b/gnu/libexec/uucp/uuname/uuname.c
index 8389498cbb89..c8f44ca27398 100644
--- a/gnu/libexec/uucp/uuname/uuname.c
+++ b/gnu/libexec/uucp/uuname/uuname.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char uuname_rcsid[] = "$Id: uuname.c,v 1.3 1995/08/19 21:30:14 ache Exp $";
+const char uuname_rcsid[] = "$Id: uuname.c,v 1.2.6.1 1995/09/01 06:05:37 davidg Exp $";
#endif
#include "getopt.h"
diff --git a/gnu/libexec/uucp/uupick/Makefile b/gnu/libexec/uucp/uupick/Makefile
index c9a431219d84..871e138471c3 100644
--- a/gnu/libexec/uucp/uupick/Makefile
+++ b/gnu/libexec/uucp/uupick/Makefile
@@ -1,5 +1,5 @@
# Makefile for uupick
-# $Id: Makefile,v 1.2 1993/08/05 16:15:19 jtc Exp $
+# $Id: Makefile,v 1.1 1993/08/05 18:27:46 conklin Exp $
BINDIR= $(bindir)
diff --git a/gnu/libexec/uucp/uupick/uupick.c b/gnu/libexec/uucp/uupick/uupick.c
index 1e89d932de3f..bda22b04022c 100644
--- a/gnu/libexec/uucp/uupick/uupick.c
+++ b/gnu/libexec/uucp/uupick/uupick.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char uupick_rcsid[] = "$Id: uupick.c,v 1.3 1995/08/19 21:30:16 ache Exp $";
+const char uupick_rcsid[] = "$Id: uupick.c,v 1.2.6.1 1995/09/01 06:05:38 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/uucp/uusched/Makefile b/gnu/libexec/uucp/uusched/Makefile
index a50ce7a452a8..60ba2f79692b 100644
--- a/gnu/libexec/uucp/uusched/Makefile
+++ b/gnu/libexec/uucp/uusched/Makefile
@@ -1,5 +1,5 @@
# Makefile for uusched
-# $Id: Makefile,v 1.8 1995/07/25 00:31:36 bde Exp $
+# $Id: Makefile,v 1.7.4.1 1995/09/01 06:05:40 davidg Exp $
BINDIR= $(bindir)
CLEANFILES+= $(ONESHPROG)
diff --git a/gnu/libexec/uucp/uustat/Makefile b/gnu/libexec/uucp/uustat/Makefile
index 7451292ceaa4..e8814db10668 100644
--- a/gnu/libexec/uucp/uustat/Makefile
+++ b/gnu/libexec/uucp/uustat/Makefile
@@ -1,5 +1,5 @@
# Makefile for uustat
-# $Id: Makefile,v 1.2 1993/08/05 16:15:22 jtc Exp $
+# $Id: Makefile,v 1.1 1993/08/05 18:28:01 conklin Exp $
BINDIR= $(bindir)
BINOWN= $(owner)
diff --git a/gnu/libexec/uucp/uustat/uustat.1 b/gnu/libexec/uucp/uustat/uustat.1
index 3524edd35af2..14e98a762159 100644
--- a/gnu/libexec/uucp/uustat/uustat.1
+++ b/gnu/libexec/uucp/uustat/uustat.1
@@ -1,4 +1,4 @@
-''' $Id: uustat.1,v 1.5 1995/08/19 21:30:18 ache Exp $
+''' $Id: uustat.1,v 1.4.4.1 1995/09/01 06:05:42 davidg Exp $
.TH uustat 1 "Taylor UUCP 1.06"
.SH NAME
uustat \- UUCP status inquiry and control
diff --git a/gnu/libexec/uucp/uustat/uustat.c b/gnu/libexec/uucp/uustat/uustat.c
index 50d1ce1e0294..d2280f2d115c 100644
--- a/gnu/libexec/uucp/uustat/uustat.c
+++ b/gnu/libexec/uucp/uustat/uustat.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char uustat_rcsid[] = "$Id: uustat.c,v 1.4 1995/08/19 21:30:21 ache Exp $";
+const char uustat_rcsid[] = "$Id: uustat.c,v 1.3.4.1 1995/09/01 06:05:43 davidg Exp $";
#endif
#include <ctype.h>
diff --git a/gnu/libexec/uucp/uuto/Makefile b/gnu/libexec/uucp/uuto/Makefile
index 6818e46d3365..b613ede08044 100644
--- a/gnu/libexec/uucp/uuto/Makefile
+++ b/gnu/libexec/uucp/uuto/Makefile
@@ -1,5 +1,5 @@
# Makefile for uuto
-# $Id: Makefile,v 1.6 1995/07/25 00:31:45 bde Exp $
+# $Id: Makefile,v 1.5.4.1 1995/09/01 06:05:44 davidg Exp $
BINDIR= $(bindir)
CLEANFILES+= $(ONESHPROG)
diff --git a/gnu/libexec/uucp/uux/Makefile b/gnu/libexec/uucp/uux/Makefile
index 4ee45a431455..1fe92f2fa2c2 100644
--- a/gnu/libexec/uucp/uux/Makefile
+++ b/gnu/libexec/uucp/uux/Makefile
@@ -1,5 +1,5 @@
# Makefile for uux
-# $Id: Makefile,v 1.2 1994/05/31 05:46:38 ache Exp $
+# $Id: Makefile,v 1.3 1994/05/31 07:37:25 ache Exp $
BINDIR= $(bindir)
BINOWN= $(owner)
diff --git a/gnu/libexec/uucp/uux/uux.1 b/gnu/libexec/uucp/uux/uux.1
index 4d740998fb53..5cb0df5ea9ec 100644
--- a/gnu/libexec/uucp/uux/uux.1
+++ b/gnu/libexec/uucp/uux/uux.1
@@ -1,4 +1,4 @@
-''' $Id: uux.1,v 1.4 1995/08/19 21:30:25 ache Exp $
+''' $Id: uux.1,v 1.3.4.1 1995/09/01 06:05:46 davidg Exp $
.TH uux 1 "Taylor UUCP 1.06"
.SH NAME
uux \- Remote command execution over UUCP
diff --git a/gnu/libexec/uucp/uux/uux.c b/gnu/libexec/uucp/uux/uux.c
index 71a9123d637a..3ac7b560bdb4 100644
--- a/gnu/libexec/uucp/uux/uux.c
+++ b/gnu/libexec/uucp/uux/uux.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char uux_rcsid[] = "$Id: uux.c,v 1.8 1995/08/21 11:28:26 ache Exp $";
+const char uux_rcsid[] = "$Id: uux.c,v 1.6.4.1 1995/09/01 06:05:47 davidg Exp $";
#endif
#include "uudefs.h"
diff --git a/gnu/libexec/uucp/uuxqt/Makefile b/gnu/libexec/uucp/uuxqt/Makefile
index 8669d541e226..a64620bd2639 100644
--- a/gnu/libexec/uucp/uuxqt/Makefile
+++ b/gnu/libexec/uucp/uuxqt/Makefile
@@ -1,5 +1,5 @@
# Makefile for uuxqt
-# $Id: Makefile,v 1.5 1994/05/31 05:46:42 ache Exp $
+# $Id: Makefile,v 1.6 1995/05/13 12:30:17 ache Exp $
BINDIR= $(libxdir)
BINOWN= $(owner)
diff --git a/gnu/libexec/uucp/uuxqt/uuxqt.8 b/gnu/libexec/uucp/uuxqt/uuxqt.8
index 89cd4810cd6c..48df11e9834e 100644
--- a/gnu/libexec/uucp/uuxqt/uuxqt.8
+++ b/gnu/libexec/uucp/uuxqt/uuxqt.8
@@ -1,4 +1,4 @@
-''' $Id: uuxqt.8,v 1.4 1995/08/19 21:30:28 ache Exp $
+''' $Id: uuxqt.8,v 1.3.4.1 1995/09/01 06:05:49 davidg Exp $
.TH uuxqt 8 "Taylor UUCP 1.06"
.SH NAME
uuxqt \- UUCP execution daemon
diff --git a/gnu/libexec/uucp/uuxqt/uuxqt.c b/gnu/libexec/uucp/uuxqt/uuxqt.c
index 08c3f3af1903..93d722f63b35 100644
--- a/gnu/libexec/uucp/uuxqt/uuxqt.c
+++ b/gnu/libexec/uucp/uuxqt/uuxqt.c
@@ -26,7 +26,7 @@
#include "uucp.h"
#if USE_RCS_ID
-const char uuxqt_rcsid[] = "$Id: uuxqt.c,v 1.5 1995/08/19 21:30:30 ache Exp $";
+const char uuxqt_rcsid[] = "$Id: uuxqt.c,v 1.4.4.1 1995/09/01 06:05:50 davidg Exp $";
#endif
#include <errno.h>
diff --git a/gnu/libexec/ypxfr/Makefile b/gnu/libexec/ypxfr/Makefile
index 460d0708d978..0e000f6d2278 100644
--- a/gnu/libexec/ypxfr/Makefile
+++ b/gnu/libexec/ypxfr/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.2 1995/02/06 22:15:20 wpaul Exp $
+# $Id: Makefile,v 1.3 1995/03/31 05:45:18 wpaul Exp $
PROG= ypxfr
MAN8= ypxfr.8
diff --git a/gnu/libexec/ypxfr/log.c b/gnu/libexec/ypxfr/log.c
index 7b76a2aa41d1..0163ecca8a67 100644
--- a/gnu/libexec/ypxfr/log.c
+++ b/gnu/libexec/ypxfr/log.c
@@ -34,7 +34,7 @@
* error logging/reporting facilities
* stolen from /usr/libexec/mail.local via ypserv
*
- * $Id$
+ * $Id: log.c,v 1.1 1995/03/31 05:45:19 wpaul Exp $
*/
#include <stdio.h>
diff --git a/gnu/libexec/ypxfr/ypclnt.c b/gnu/libexec/ypxfr/ypclnt.c
index 04e58b9c03b3..adfe2da7187b 100644
--- a/gnu/libexec/ypxfr/ypclnt.c
+++ b/gnu/libexec/ypxfr/ypclnt.c
@@ -18,7 +18,7 @@
Modified for use with FreeBSD 2.x by Bill Paul (wpaul@ctr.columbia.edu)
- $Id: ypclnt.c,v 1.3 1995/03/31 05:45:21 wpaul Exp $
+ $Id: ypclnt.c,v 1.4 1995/05/30 04:45:50 rgrimes Exp $
*/
#include <stdio.h>
diff --git a/gnu/libexec/ypxfr/ypxfr.8 b/gnu/libexec/ypxfr/ypxfr.8
index 9b021e5ecb32..589ebdffcb74 100644
--- a/gnu/libexec/ypxfr/ypxfr.8
+++ b/gnu/libexec/ypxfr/ypxfr.8
@@ -29,7 +29,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $Id: ypxfr.8,v 1.2 1995/03/30 04:14:45 wpaul Exp $
+.\" $Id: ypxfr.8,v 1.3 1995/03/31 05:45:22 wpaul Exp $
.\"
.Dd February 5, 1995
.Dt YPXFR 8
diff --git a/gnu/libexec/ypxfr/ypxfr.c b/gnu/libexec/ypxfr/ypxfr.c
index e3a47345f6a1..ab1c47933599 100644
--- a/gnu/libexec/ypxfr/ypxfr.c
+++ b/gnu/libexec/ypxfr/ypxfr.c
@@ -18,7 +18,7 @@
Modified for use with FreeBSD 2.x by Bill Paul (wpaul@ctr.columbia.edu)
- $Id: ypxfr.c,v 1.5 1995/03/31 05:45:23 wpaul Exp $
+ $Id: ypxfr.c,v 1.6 1995/05/30 04:45:51 rgrimes Exp $
*/
#include <stdio.h>
diff --git a/gnu/usr.bin/Makefile b/gnu/usr.bin/Makefile
index 55e804730b6b..ca63802ed06f 100644
--- a/gnu/usr.bin/Makefile
+++ b/gnu/usr.bin/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.26 1995/03/31 08:00:06 nate Exp $
+# $Id: Makefile,v 1.27 1995/04/11 17:28:26 nate Exp $
SUBDIR= as awk bc cc cpio cvs dc dialog diff diff3 gdb \
grep groff gzip ld man mkisofs patch perl ptx rcs sdiff send-pr \
diff --git a/gnu/usr.bin/Makefile.inc b/gnu/usr.bin/Makefile.inc
index 5371a22cca25..07604ed971c2 100644
--- a/gnu/usr.bin/Makefile.inc
+++ b/gnu/usr.bin/Makefile.inc
@@ -1,3 +1,3 @@
-# $Id$
+# $Id: Makefile.inc,v 1.1 1994/01/30 00:31:51 rgrimes Exp $
BINDIR?= /usr/bin
diff --git a/gnu/usr.bin/as/Makefile b/gnu/usr.bin/as/Makefile
index c8d73c3af44e..879a48078122 100644
--- a/gnu/usr.bin/as/Makefile
+++ b/gnu/usr.bin/as/Makefile
@@ -1,5 +1,5 @@
# from: @(#)Makefile 6.1 (Berkeley) 3/3/91
-# $Id: Makefile,v 1.7 1995/01/16 17:40:57 ache Exp $
+# $Id: Makefile,v 1.8 1995/05/30 04:45:55 rgrimes Exp $
.include "config/Makefile.$(MACHINE)"
diff --git a/gnu/usr.bin/as/app.c b/gnu/usr.bin/as/app.c
index 15e88e914050..08c07d054372 100644
--- a/gnu/usr.bin/as/app.c
+++ b/gnu/usr.bin/as/app.c
@@ -24,7 +24,7 @@
pair. This needs better error-handling. */
#ifndef lint
-static char rcsid[] = "$Id: app.c,v 1.3 1994/12/23 22:35:59 nate Exp $";
+static char rcsid[] = "$Id: app.c,v 1.4 1995/05/30 04:45:59 rgrimes Exp $";
#endif
#include <stdio.h>
diff --git a/gnu/usr.bin/as/as.c b/gnu/usr.bin/as/as.c
index 920efb73e3f4..27aefc60f530 100644
--- a/gnu/usr.bin/as/as.c
+++ b/gnu/usr.bin/as/as.c
@@ -32,7 +32,7 @@
*
*/
#ifndef lint
-static char rcsid[] = "$Id: as.c,v 1.2 1993/11/03 00:51:09 paul Exp $";
+static char rcsid[] = "$Id: as.c,v 1.3 1995/05/30 04:46:01 rgrimes Exp $";
#endif
#include <stdio.h>
diff --git a/gnu/usr.bin/as/as.h b/gnu/usr.bin/as/as.h
index 2e7243da4fe8..e8bbabf19317 100644
--- a/gnu/usr.bin/as/as.h
+++ b/gnu/usr.bin/as/as.h
@@ -18,7 +18,7 @@
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/*
- * $Id: as.h,v 1.3 1994/12/23 22:36:01 nate Exp $
+ * $Id: as.h,v 1.4 1995/05/30 04:46:02 rgrimes Exp $
*/
#define GAS 1
diff --git a/gnu/usr.bin/as/atof-generic.c b/gnu/usr.bin/as/atof-generic.c
index 47a58b1409a4..55bdbc72d0a5 100644
--- a/gnu/usr.bin/as/atof-generic.c
+++ b/gnu/usr.bin/as/atof-generic.c
@@ -18,7 +18,7 @@
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#ifndef lint
-static char rcsid[] = "$Id: atof-generic.c,v 1.2 1993/11/03 00:51:14 paul Exp $";
+static char rcsid[] = "$Id: atof-generic.c,v 1.3 1995/05/30 04:46:04 rgrimes Exp $";
#endif
#include <ctype.h>
diff --git a/gnu/usr.bin/as/bignum-copy.c b/gnu/usr.bin/as/bignum-copy.c
index ec90e39975ca..f1fe529c38e1 100644
--- a/gnu/usr.bin/as/bignum-copy.c
+++ b/gnu/usr.bin/as/bignum-copy.c
@@ -18,7 +18,7 @@
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#ifndef lint
-static char rcsid[] = "$Id: bignum-copy.c,v 1.2 1993/11/03 00:51:16 paul Exp $";
+static char rcsid[] = "$Id: bignum-copy.c,v 1.3 1995/05/30 04:46:05 rgrimes Exp $";
#endif
#include "as.h"
diff --git a/gnu/usr.bin/as/bignum.h b/gnu/usr.bin/as/bignum.h
index 64efadc1f27c..f5e3a1dcacc9 100644
--- a/gnu/usr.bin/as/bignum.h
+++ b/gnu/usr.bin/as/bignum.h
@@ -18,7 +18,7 @@
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/*
- * $Id: bignum.h,v 1.2 1993/11/03 00:51:18 paul Exp $
+ * $Id: bignum.h,v 1.3 1995/05/30 04:46:06 rgrimes Exp $
*/
/***********************************************************************\
diff --git a/gnu/usr.bin/as/bit_fix.h b/gnu/usr.bin/as/bit_fix.h
index 14988ff2000e..91d526b515ff 100644
--- a/gnu/usr.bin/as/bit_fix.h
+++ b/gnu/usr.bin/as/bit_fix.h
@@ -18,7 +18,7 @@
along with GAS; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/*
- * $Id: bit_fix.h,v 1.1 1993/11/03 00:51:19 paul Exp $
+ * $Id: bit_fix.h,v 1.2 1995/05/30 04:46:07 rgrimes Exp $
*/
diff --git a/gnu/usr.bin/as/cond.c b/gnu/usr.bin/as/cond.c
index 3eb8db7f4114..74488f4dc957 100644
--- a/gnu/usr.bin/as/cond.c
+++ b/gnu/usr.bin/as/cond.c
@@ -18,7 +18,7 @@
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#ifndef lint
-static char rcsid[] = "$Id: cond.c,v 1.2 1994/12/23 22:36:03 nate Exp $";
+static char rcsid[] = "$Id: cond.c,v 1.3 1995/05/30 04:46:08 rgrimes Exp $";
#endif
#include "as.h"
diff --git a/gnu/usr.bin/as/config/Makefile.hp300 b/gnu/usr.bin/as/config/Makefile.hp300
index 4261d35b39bc..388501cf8dc8 100644
--- a/gnu/usr.bin/as/config/Makefile.hp300
+++ b/gnu/usr.bin/as/config/Makefile.hp300
@@ -1,5 +1,5 @@
# from: @(#)Makefile.hp300 6.1 (Berkeley) 3/3/91
-# $Id: Makefile.hp300,v 1.4 1993/10/16 03:23:04 cgd Exp $
+# $Id: Makefile.hp300,v 1.1 1993/11/03 00:52:56 paul Exp $
CFLAGS+= -Dm68851
SRCS+= tc-m68k.c atof-ieee.c
diff --git a/gnu/usr.bin/as/config/Makefile.i386 b/gnu/usr.bin/as/config/Makefile.i386
index 4cee91937bf9..06c3d737cfca 100644
--- a/gnu/usr.bin/as/config/Makefile.i386
+++ b/gnu/usr.bin/as/config/Makefile.i386
@@ -1,5 +1,5 @@
# from: @(#)Makefile.i386 6.1 (Berkeley) 3/3/91
-# $Id: Makefile.i386,v 1.2 1993/11/03 00:52:58 paul Exp $
+# $Id: Makefile.i386,v 1.3 1994/12/23 22:37:31 nate Exp $
CFLAGS+= -DNON_BROKEN_WORDS -DPIC
SRCS+= tc-i386.c atof-ieee.c
diff --git a/gnu/usr.bin/as/config/Makefile.pc532 b/gnu/usr.bin/as/config/Makefile.pc532
index d4b22aba6c80..5336a25a5eee 100644
--- a/gnu/usr.bin/as/config/Makefile.pc532
+++ b/gnu/usr.bin/as/config/Makefile.pc532
@@ -1,4 +1,4 @@
-# $Id: Makefile.pc532,v 1.1 1993/10/16 03:23:37 cgd Exp $
+# $Id: Makefile.pc532,v 1.1 1993/11/03 00:52:59 paul Exp $
SRCS+= tc-ns32k.c atof-ns32k.c
diff --git a/gnu/usr.bin/as/config/Makefile.sparc b/gnu/usr.bin/as/config/Makefile.sparc
index 6dc9658536f7..2e9c8f197219 100644
--- a/gnu/usr.bin/as/config/Makefile.sparc
+++ b/gnu/usr.bin/as/config/Makefile.sparc
@@ -1,5 +1,5 @@
# from: @(#)Makefile.i386 6.1 (Berkeley) 3/3/91
-# $Id: Makefile.sparc,v 1.1 1993/11/03 00:53:00 paul Exp $
+# $Id: Makefile.sparc,v 1.2 1994/12/23 22:37:31 nate Exp $
CFLAGS+= -DNON_BROKEN_WORDS -DPIC
SRCS+= tc-sparc.c atof-ieee.c
diff --git a/gnu/usr.bin/as/config/Makefile.vax b/gnu/usr.bin/as/config/Makefile.vax
index f62b087d3df3..060f15d9ddae 100644
--- a/gnu/usr.bin/as/config/Makefile.vax
+++ b/gnu/usr.bin/as/config/Makefile.vax
@@ -1,4 +1,4 @@
# from: @(#)Makefile.vax 6.1 (Berkeley) 3/3/91
-# $Id: Makefile.vax,v 1.3 1993/10/02 20:58:23 pk Exp $
+# $Id: Makefile.vax,v 1.1 1993/11/03 00:53:01 paul Exp $
SRCS+= tc-vax.c atof-vax.c
diff --git a/gnu/usr.bin/as/config/atof-ieee.c b/gnu/usr.bin/as/config/atof-ieee.c
index 7040f11da820..f785d0ae7782 100644
--- a/gnu/usr.bin/as/config/atof-ieee.c
+++ b/gnu/usr.bin/as/config/atof-ieee.c
@@ -18,7 +18,7 @@
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#ifndef lint
-static char rcsid[] = "$Id: atof-ieee.c,v 1.2 1993/11/03 00:53:04 paul Exp $";
+static char rcsid[] = "$Id: atof-ieee.c,v 1.3 1995/05/30 04:46:46 rgrimes Exp $";
#endif
#include "as.h"
diff --git a/gnu/usr.bin/as/config/ho-i386.h b/gnu/usr.bin/as/config/ho-i386.h
index 04de36681d1c..7e7dbc330fce 100644
--- a/gnu/usr.bin/as/config/ho-i386.h
+++ b/gnu/usr.bin/as/config/ho-i386.h
@@ -17,7 +17,7 @@
along with GAS; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/*
- * $Id: ho-i386.h,v 1.1 1993/11/03 00:53:21 paul Exp $
+ * $Id: ho-i386.h,v 1.2 1995/05/30 04:46:55 rgrimes Exp $
*/
diff --git a/gnu/usr.bin/as/config/obj-aout.h b/gnu/usr.bin/as/config/obj-aout.h
index 1ac0f5c2b3e5..dcafcf13b358 100644
--- a/gnu/usr.bin/as/config/obj-aout.h
+++ b/gnu/usr.bin/as/config/obj-aout.h
@@ -17,7 +17,7 @@
License along with GAS; see the file COPYING. If not, write
to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- $Id: obj-aout.h,v 1.3 1994/12/23 22:37:34 nate Exp $
+ $Id: obj-aout.h,v 1.4 1995/05/30 04:47:04 rgrimes Exp $
*/
diff --git a/gnu/usr.bin/as/config/tc-i386.c b/gnu/usr.bin/as/config/tc-i386.c
index 7aa2174e6087..abc8205b93ec 100644
--- a/gnu/usr.bin/as/config/tc-i386.c
+++ b/gnu/usr.bin/as/config/tc-i386.c
@@ -25,7 +25,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: tc-i386.c,v 1.3 1994/12/23 22:37:35 nate Exp $";
+static char rcsid[] = "$Id: tc-i386.c,v 1.4 1995/05/30 04:47:29 rgrimes Exp $";
#endif
#include "as.h"
diff --git a/gnu/usr.bin/as/config/tc-i386.h b/gnu/usr.bin/as/config/tc-i386.h
index fd4d335ab2d9..5dc82e144768 100644
--- a/gnu/usr.bin/as/config/tc-i386.h
+++ b/gnu/usr.bin/as/config/tc-i386.h
@@ -18,7 +18,7 @@
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/*
- * $Id: tc-i386.h,v 1.2 1994/12/23 22:37:36 nate Exp $
+ * $Id: tc-i386.h,v 1.3 1995/05/30 04:47:31 rgrimes Exp $
*/
#ifndef TC_I386
diff --git a/gnu/usr.bin/as/config/tc-sparc.c b/gnu/usr.bin/as/config/tc-sparc.c
index 238e5f7c1163..9c9063dd297e 100644
--- a/gnu/usr.bin/as/config/tc-sparc.c
+++ b/gnu/usr.bin/as/config/tc-sparc.c
@@ -18,7 +18,7 @@
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#ifndef lint
-static char rcsid[] = "$Id: tc-sparc.c,v 1.3 1994/12/23 22:37:40 nate Exp $";
+static char rcsid[] = "$Id: tc-sparc.c,v 1.4 1995/05/30 04:47:49 rgrimes Exp $";
#endif
#define cypress 1234
diff --git a/gnu/usr.bin/as/config/tc-sparc.h b/gnu/usr.bin/as/config/tc-sparc.h
index c6dfa317da6c..0463ebef45fe 100644
--- a/gnu/usr.bin/as/config/tc-sparc.h
+++ b/gnu/usr.bin/as/config/tc-sparc.h
@@ -18,7 +18,7 @@
to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/*
- * $Id: tc-sparc.h,v 1.2 1994/12/23 22:37:41 nate Exp $
+ * $Id: tc-sparc.h,v 1.3 1995/05/30 04:47:50 rgrimes Exp $
*/
#define TC_SPARC 1
diff --git a/gnu/usr.bin/as/config/te-generic.h b/gnu/usr.bin/as/config/te-generic.h
index f72d5ee95fea..8bf93bf4ad39 100644
--- a/gnu/usr.bin/as/config/te-generic.h
+++ b/gnu/usr.bin/as/config/te-generic.h
@@ -6,7 +6,7 @@
* compile, and copying as an aid for testing and porting. xoxorich.
*/
/*
- * $Id: te-generic.h,v 1.1 1993/10/02 20:59:49 pk Exp $
+ * $Id: te-generic.h,v 1.1 1993/11/03 00:55:03 paul Exp $
*/
diff --git a/gnu/usr.bin/as/debug.c b/gnu/usr.bin/as/debug.c
index d0a0c2d052ca..63e64dfdbfad 100644
--- a/gnu/usr.bin/as/debug.c
+++ b/gnu/usr.bin/as/debug.c
@@ -21,7 +21,7 @@
/* Routines for debug use only. */
#ifndef lint
-static char rcsid[] = "$Id: debug.c,v 1.1 1993/11/03 00:51:26 paul Exp $";
+static char rcsid[] = "$Id: debug.c,v 1.2 1995/05/30 04:46:09 rgrimes Exp $";
#endif
#include "as.h"
diff --git a/gnu/usr.bin/as/expr.c b/gnu/usr.bin/as/expr.c
index b504a4bdd817..e0e18c831859 100644
--- a/gnu/usr.bin/as/expr.c
+++ b/gnu/usr.bin/as/expr.c
@@ -25,7 +25,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: expr.c,v 1.2 1993/11/03 00:51:28 paul Exp $";
+static char rcsid[] = "$Id: expr.c,v 1.3 1995/05/30 04:46:10 rgrimes Exp $";
#endif
#include <ctype.h>
diff --git a/gnu/usr.bin/as/expr.h b/gnu/usr.bin/as/expr.h
index d0b68a53b013..52b591326c07 100644
--- a/gnu/usr.bin/as/expr.h
+++ b/gnu/usr.bin/as/expr.h
@@ -17,7 +17,7 @@
along with GAS; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/*
- * $Id: expr.h,v 1.2 1993/11/03 00:51:31 paul Exp $
+ * $Id: expr.h,v 1.3 1995/05/30 04:46:11 rgrimes Exp $
*/
diff --git a/gnu/usr.bin/as/flo-const.c b/gnu/usr.bin/as/flo-const.c
index 90f0af108bea..4df2e46309a6 100644
--- a/gnu/usr.bin/as/flo-const.c
+++ b/gnu/usr.bin/as/flo-const.c
@@ -18,7 +18,7 @@
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#ifndef lint
-static char rcsid[] = "$Id: flo-const.c,v 1.1 1993/11/03 00:51:32 paul Exp $";
+static char rcsid[] = "$Id: flo-const.c,v 1.2 1995/05/30 04:46:12 rgrimes Exp $";
#endif
#include "flonum.h"
diff --git a/gnu/usr.bin/as/flo-copy.c b/gnu/usr.bin/as/flo-copy.c
index 6e1b30685d1c..8eb41627cf72 100644
--- a/gnu/usr.bin/as/flo-copy.c
+++ b/gnu/usr.bin/as/flo-copy.c
@@ -18,7 +18,7 @@
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#ifndef lint
-static char rcsid[] = "$Id: flo-copy.c,v 1.1 1993/11/03 00:51:34 paul Exp $";
+static char rcsid[] = "$Id: flo-copy.c,v 1.2 1995/05/30 04:46:13 rgrimes Exp $";
#endif
#include "as.h"
diff --git a/gnu/usr.bin/as/flonum-mult.c b/gnu/usr.bin/as/flonum-mult.c
index 4fe8f38dbc0b..6b718758388b 100644
--- a/gnu/usr.bin/as/flonum-mult.c
+++ b/gnu/usr.bin/as/flonum-mult.c
@@ -19,7 +19,7 @@
notice and this notice must be preserved on all copies. */
#ifndef lint
-static char rcsid[] = "$Id: flonum-mult.c,v 1.2 1993/11/03 00:51:36 paul Exp $";
+static char rcsid[] = "$Id: flonum-mult.c,v 1.3 1995/05/30 04:46:14 rgrimes Exp $";
#endif
#include "flonum.h"
diff --git a/gnu/usr.bin/as/flonum.h b/gnu/usr.bin/as/flonum.h
index cc05dbf0267d..7bb3c0dec3ba 100644
--- a/gnu/usr.bin/as/flonum.h
+++ b/gnu/usr.bin/as/flonum.h
@@ -18,7 +18,7 @@
along with GAS; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/*
- * $Id: flonum.h,v 1.2 1993/11/03 00:51:37 paul Exp $
+ * $Id: flonum.h,v 1.3 1995/05/30 04:46:15 rgrimes Exp $
*/
diff --git a/gnu/usr.bin/as/frags.c b/gnu/usr.bin/as/frags.c
index 71f4669b3f5e..262e058a25b9 100644
--- a/gnu/usr.bin/as/frags.c
+++ b/gnu/usr.bin/as/frags.c
@@ -19,7 +19,7 @@
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#ifndef lint
-static char rcsid[] = "$Id: frags.c,v 1.2 1993/11/03 00:51:39 paul Exp $";
+static char rcsid[] = "$Id: frags.c,v 1.3 1995/05/30 04:46:16 rgrimes Exp $";
#endif
#include "as.h"
diff --git a/gnu/usr.bin/as/frags.h b/gnu/usr.bin/as/frags.h
index 0e82c65f362a..23753a7a44e7 100644
--- a/gnu/usr.bin/as/frags.h
+++ b/gnu/usr.bin/as/frags.h
@@ -18,7 +18,7 @@
along with GAS; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/*
- * $Id: frags.h,v 1.2 1993/11/03 00:51:40 paul Exp $
+ * $Id: frags.h,v 1.3 1995/05/30 04:46:17 rgrimes Exp $
*/
diff --git a/gnu/usr.bin/as/hash.c b/gnu/usr.bin/as/hash.c
index b9cc1bcdd512..e8b82d2030f6 100644
--- a/gnu/usr.bin/as/hash.c
+++ b/gnu/usr.bin/as/hash.c
@@ -123,7 +123,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: hash.c,v 1.2 1993/11/03 00:51:44 paul Exp $";
+static char rcsid[] = "$Id: hash.c,v 1.3 1995/05/30 04:46:18 rgrimes Exp $";
#endif
#include <stdio.h>
diff --git a/gnu/usr.bin/as/hash.h b/gnu/usr.bin/as/hash.h
index 034c2aa62c31..c9a2ab2db95d 100644
--- a/gnu/usr.bin/as/hash.h
+++ b/gnu/usr.bin/as/hash.h
@@ -17,7 +17,7 @@
along with GAS; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/*
- * $Id: hash.h,v 1.2 1993/11/03 00:51:46 paul Exp $
+ * $Id: hash.h,v 1.3 1995/05/30 04:46:19 rgrimes Exp $
*/
diff --git a/gnu/usr.bin/as/hex-value.c b/gnu/usr.bin/as/hex-value.c
index 432aa0242210..f55a64bc947e 100644
--- a/gnu/usr.bin/as/hex-value.c
+++ b/gnu/usr.bin/as/hex-value.c
@@ -23,7 +23,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: hex-value.c,v 1.2 1993/11/03 00:51:47 paul Exp $";
+static char rcsid[] = "$Id: hex-value.c,v 1.3 1995/05/30 04:46:20 rgrimes Exp $";
#endif
#define __ (42) /* blatently illegal digit value */
diff --git a/gnu/usr.bin/as/input-file.c b/gnu/usr.bin/as/input-file.c
index 39e19ac0c52a..86c6a7734c84 100644
--- a/gnu/usr.bin/as/input-file.c
+++ b/gnu/usr.bin/as/input-file.c
@@ -25,7 +25,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: input-file.c,v 1.2 1993/11/03 00:51:48 paul Exp $";
+static char rcsid[] = "$Id: input-file.c,v 1.3 1995/05/30 04:46:21 rgrimes Exp $";
#endif
#ifdef USG
diff --git a/gnu/usr.bin/as/input-file.h b/gnu/usr.bin/as/input-file.h
index 0c6da7d004e5..b9fb65fd04a9 100644
--- a/gnu/usr.bin/as/input-file.h
+++ b/gnu/usr.bin/as/input-file.h
@@ -20,7 +20,7 @@
/*"input_file.c":Operating-system dependant functions to read source files.*/
/*
- * $Id: input-file.h,v 1.2 1993/11/03 00:51:50 paul Exp $
+ * $Id: input-file.h,v 1.3 1995/05/30 04:46:22 rgrimes Exp $
*/
diff --git a/gnu/usr.bin/as/input-scrub.c b/gnu/usr.bin/as/input-scrub.c
index 0e0a1790f3bd..47ba0d29f734 100644
--- a/gnu/usr.bin/as/input-scrub.c
+++ b/gnu/usr.bin/as/input-scrub.c
@@ -18,7 +18,7 @@
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#ifndef lint
-static char rcsid[] = "$Id: input-scrub.c,v 1.3 1994/12/23 22:36:05 nate Exp $";
+static char rcsid[] = "$Id: input-scrub.c,v 1.4 1995/05/30 04:46:23 rgrimes Exp $";
#endif
#include <errno.h> /* Need this to make errno declaration right */
diff --git a/gnu/usr.bin/as/listing.c b/gnu/usr.bin/as/listing.c
index f79a8b451041..332d4df9e6bf 100644
--- a/gnu/usr.bin/as/listing.c
+++ b/gnu/usr.bin/as/listing.c
@@ -92,7 +92,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
*/
#ifndef lint
-static char rcsid[] = "$Id: listing.c,v 1.2 1994/12/23 22:36:08 nate Exp $";
+static char rcsid[] = "$Id: listing.c,v 1.3 1995/05/30 04:46:24 rgrimes Exp $";
#endif
#include <ctype.h>
diff --git a/gnu/usr.bin/as/listing.h b/gnu/usr.bin/as/listing.h
index 2220c35eb4c2..fde349b11e4a 100644
--- a/gnu/usr.bin/as/listing.h
+++ b/gnu/usr.bin/as/listing.h
@@ -18,7 +18,7 @@
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/*
- * $Id: listing.h,v 1.1 1993/11/03 00:51:56 paul Exp $
+ * $Id: listing.h,v 1.2 1994/12/23 22:36:10 nate Exp $
*/
#ifndef __listing_h__
diff --git a/gnu/usr.bin/as/makefile.dos b/gnu/usr.bin/as/makefile.dos
index 89c74c787361..b9f7197c5fd6 100644
--- a/gnu/usr.bin/as/makefile.dos
+++ b/gnu/usr.bin/as/makefile.dos
@@ -17,7 +17,7 @@
#along with GNU GAS; see the file COPYING. If not, write to
#the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-# $Id: makefile.dos,v 1.1 1993/10/02 20:57:43 pk Exp $
+# $Id: makefile.dos,v 1.1 1993/11/03 00:51:59 paul Exp $
# The targets for external use include:
# all, doc, proto, install, uninstall, includes, TAGS,
diff --git a/gnu/usr.bin/as/messages.c b/gnu/usr.bin/as/messages.c
index 55e97d943ef8..e46d371d8d86 100644
--- a/gnu/usr.bin/as/messages.c
+++ b/gnu/usr.bin/as/messages.c
@@ -18,7 +18,7 @@
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#ifndef lint
-static char rcsid[] = "$Id: messages.c,v 1.3 1994/12/23 22:36:12 nate Exp $";
+static char rcsid[] = "$Id: messages.c,v 1.4 1995/05/30 04:46:25 rgrimes Exp $";
#endif
#include <stdio.h>
diff --git a/gnu/usr.bin/as/obj.h b/gnu/usr.bin/as/obj.h
index a621941004ae..000641a3c613 100644
--- a/gnu/usr.bin/as/obj.h
+++ b/gnu/usr.bin/as/obj.h
@@ -19,7 +19,7 @@
along with GAS; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/*
- * $Id: obj.h,v 1.1 1993/11/03 00:52:03 paul Exp $
+ * $Id: obj.h,v 1.2 1995/05/30 04:46:26 rgrimes Exp $
*/
diff --git a/gnu/usr.bin/as/obstack.c b/gnu/usr.bin/as/obstack.c
index d7302ea1f5d4..b36bdada55ea 100644
--- a/gnu/usr.bin/as/obstack.c
+++ b/gnu/usr.bin/as/obstack.c
@@ -16,7 +16,7 @@ along with this program; if not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#ifndef lint
-static char rcsid[] = "$Id: obstack.c,v 1.3 1993/10/02 20:57:47 pk Exp $";
+static char rcsid[] = "$Id: obstack.c,v 1.2 1993/11/03 00:52:04 paul Exp $";
#endif
#include "obstack.h"
diff --git a/gnu/usr.bin/as/obstack.h b/gnu/usr.bin/as/obstack.h
index c29bb1f47921..cd847ed7ec82 100644
--- a/gnu/usr.bin/as/obstack.h
+++ b/gnu/usr.bin/as/obstack.h
@@ -15,7 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/*
- * $Id: obstack.h,v 1.2 1993/11/03 00:52:06 paul Exp $
+ * $Id: obstack.h,v 1.3 1995/05/30 04:46:27 rgrimes Exp $
*/
diff --git a/gnu/usr.bin/as/opcode/a29k.h b/gnu/usr.bin/as/opcode/a29k.h
index 8c3616747f09..675f053d50e3 100644
--- a/gnu/usr.bin/as/opcode/a29k.h
+++ b/gnu/usr.bin/as/opcode/a29k.h
@@ -285,6 +285,9 @@ CONST unsigned int num_opcodes = (((sizeof a29k_opcodes) / (sizeof a29k_opcodes[
/*
* $Log: a29k.h,v $
+ * Revision 1.1 1993/11/03 00:55:48 paul
+ * Brought over NetBSD's gas ready for pk's shared libs.
+ *
* Revision 1.1 1993/10/02 21:00:40 pk
* GNU gas 1.92.3 based assembler supporting PIC code (for i386 and sparc).
*
diff --git a/gnu/usr.bin/as/opcode/i386.h b/gnu/usr.bin/as/opcode/i386.h
index 0c663570617c..c0677553021f 100644
--- a/gnu/usr.bin/as/opcode/i386.h
+++ b/gnu/usr.bin/as/opcode/i386.h
@@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License
along with GAS; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
-/* $Id: i386.h,v 1.2 1994/12/11 20:46:55 sef Exp $ */
+/* $Id: i386.h,v 1.3 1995/05/30 04:48:01 rgrimes Exp $ */
static const template i386_optab[] = {
diff --git a/gnu/usr.bin/as/opcode/i960.h b/gnu/usr.bin/as/opcode/i960.h
index 6a6ad42536bd..c32f7ae5ea52 100644
--- a/gnu/usr.bin/as/opcode/i960.h
+++ b/gnu/usr.bin/as/opcode/i960.h
@@ -18,7 +18,7 @@
* appropriate.
*/
-/* $Id: i960.h,v 1.1 1993/11/03 00:55:56 paul Exp $ */
+/* $Id: i960.h,v 1.2 1995/05/30 04:48:03 rgrimes Exp $ */
#define CTRL 0
#define COBR 1
diff --git a/gnu/usr.bin/as/opcode/sparc.h b/gnu/usr.bin/as/opcode/sparc.h
index 7921cf597f43..b5e8d5e33114 100644
--- a/gnu/usr.bin/as/opcode/sparc.h
+++ b/gnu/usr.bin/as/opcode/sparc.h
@@ -20,7 +20,7 @@ along with GAS or GDB; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/*
- * $Id: sparc.h,v 1.2 1994/12/23 22:37:45 nate Exp $
+ * $Id: sparc.h,v 1.3 1995/05/30 04:48:14 rgrimes Exp $
*/
/* FIXME-someday: perhaps the ,a's and such should be embedded in the
diff --git a/gnu/usr.bin/as/output-file.c b/gnu/usr.bin/as/output-file.c
index 1a8683be431f..27bcd8e615f0 100644
--- a/gnu/usr.bin/as/output-file.c
+++ b/gnu/usr.bin/as/output-file.c
@@ -27,7 +27,7 @@
/* note that we do need config info. xoxorich. */
#ifndef lint
-static char rcsid[] = "$Id: output-file.c,v 1.2 1993/11/03 00:52:08 paul Exp $";
+static char rcsid[] = "$Id: output-file.c,v 1.3 1995/05/30 04:46:29 rgrimes Exp $";
#endif
#include <stdio.h>
diff --git a/gnu/usr.bin/as/output-file.h b/gnu/usr.bin/as/output-file.h
index 37878ab6d143..26e8e45073b3 100644
--- a/gnu/usr.bin/as/output-file.h
+++ b/gnu/usr.bin/as/output-file.h
@@ -18,7 +18,7 @@
along with GAS; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/*
- * $Id: output-file.h,v 1.1 1993/11/03 00:52:10 paul Exp $
+ * $Id: output-file.h,v 1.2 1995/05/30 04:46:30 rgrimes Exp $
*/
diff --git a/gnu/usr.bin/as/read.c b/gnu/usr.bin/as/read.c
index c9bcbca7f17f..2f132f28d255 100644
--- a/gnu/usr.bin/as/read.c
+++ b/gnu/usr.bin/as/read.c
@@ -19,7 +19,7 @@
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#ifndef lint
-static char rcsid[] = "$Id: read.c,v 1.5 1994/12/23 22:36:15 nate Exp $";
+static char rcsid[] = "$Id: read.c,v 1.6 1995/05/30 04:46:31 rgrimes Exp $";
#endif
#define MASK_CHAR (0xFF) /* If your chars aren't 8 bits, you will
diff --git a/gnu/usr.bin/as/read.h b/gnu/usr.bin/as/read.h
index 9b2958274a2c..405f0ce3cc61 100644
--- a/gnu/usr.bin/as/read.h
+++ b/gnu/usr.bin/as/read.h
@@ -18,7 +18,7 @@
along with GAS; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/*
- * $Id: read.h,v 1.4 1994/12/23 22:36:17 nate Exp $
+ * $Id: read.h,v 1.5 1995/05/30 04:46:32 rgrimes Exp $
*/
diff --git a/gnu/usr.bin/as/struc-symbol.h b/gnu/usr.bin/as/struc-symbol.h
index 5c405e4cc20d..0c9455c74107 100644
--- a/gnu/usr.bin/as/struc-symbol.h
+++ b/gnu/usr.bin/as/struc-symbol.h
@@ -17,7 +17,7 @@
along with GAS; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/*
- * $Id: struc-symbol.h,v 1.4 1994/12/23 22:36:20 nate Exp $
+ * $Id: struc-symbol.h,v 1.5 1995/05/30 04:46:33 rgrimes Exp $
*/
diff --git a/gnu/usr.bin/as/subsegs.c b/gnu/usr.bin/as/subsegs.c
index 208980957dd5..138fccb0f537 100644
--- a/gnu/usr.bin/as/subsegs.c
+++ b/gnu/usr.bin/as/subsegs.c
@@ -22,7 +22,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: subsegs.c,v 1.3 1995/03/02 20:29:18 nate Exp $";
+static char rcsid[] = "$Id: subsegs.c,v 1.4 1995/05/30 04:46:34 rgrimes Exp $";
#endif
#include "as.h"
diff --git a/gnu/usr.bin/as/subsegs.h b/gnu/usr.bin/as/subsegs.h
index 9d1482a94588..7c10a8f55f51 100644
--- a/gnu/usr.bin/as/subsegs.h
+++ b/gnu/usr.bin/as/subsegs.h
@@ -18,7 +18,7 @@
along with GAS; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/*
- * $Id: subsegs.h,v 1.2 1993/11/03 00:52:20 paul Exp $
+ * $Id: subsegs.h,v 1.3 1995/05/30 04:46:35 rgrimes Exp $
*/
diff --git a/gnu/usr.bin/as/symbols.c b/gnu/usr.bin/as/symbols.c
index 44c71d4fab85..604434ff3eab 100644
--- a/gnu/usr.bin/as/symbols.c
+++ b/gnu/usr.bin/as/symbols.c
@@ -19,7 +19,7 @@
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#ifndef lint
-static char rcsid[] = "$Id: symbols.c,v 1.2 1993/11/03 00:52:22 paul Exp $";
+static char rcsid[] = "$Id: symbols.c,v 1.3 1995/05/30 04:46:36 rgrimes Exp $";
#endif
#include "as.h"
diff --git a/gnu/usr.bin/as/symbols.h b/gnu/usr.bin/as/symbols.h
index 0906e9d38093..11ad6375dc72 100644
--- a/gnu/usr.bin/as/symbols.h
+++ b/gnu/usr.bin/as/symbols.h
@@ -18,7 +18,7 @@
along with GAS; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/*
- * $Id: symbols.h,v 1.2 1993/11/03 00:52:23 paul Exp $
+ * $Id: symbols.h,v 1.3 1995/05/30 04:46:37 rgrimes Exp $
*/
diff --git a/gnu/usr.bin/as/tc.h b/gnu/usr.bin/as/tc.h
index b75b0e2709ed..9d7939fe95fc 100644
--- a/gnu/usr.bin/as/tc.h
+++ b/gnu/usr.bin/as/tc.h
@@ -18,7 +18,7 @@
along with GAS; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/*
- * $Id: tc.h,v 1.1 1993/11/03 00:52:25 paul Exp $
+ * $Id: tc.h,v 1.2 1995/05/30 04:46:38 rgrimes Exp $
*/
diff --git a/gnu/usr.bin/as/testscripts/doboth b/gnu/usr.bin/as/testscripts/doboth
index 6b46a03eb125..dc379e93d3fb 100755
--- a/gnu/usr.bin/as/testscripts/doboth
+++ b/gnu/usr.bin/as/testscripts/doboth
@@ -1,5 +1,5 @@
#!/bin/sh
-# $Id: doboth,v 1.1 1993/10/02 21:01:07 pk Exp $
+# $Id: doboth,v 1.1 1993/11/03 00:56:17 paul Exp $
x=$1 ; shift
y=$1 ; shift
diff --git a/gnu/usr.bin/as/testscripts/doobjcmp b/gnu/usr.bin/as/testscripts/doobjcmp
index 6c90cf9a05ff..9fe6d907558e 100755
--- a/gnu/usr.bin/as/testscripts/doobjcmp
+++ b/gnu/usr.bin/as/testscripts/doobjcmp
@@ -1,5 +1,5 @@
#!/bin/sh
-# $Id: doobjcmp,v 1.1 1993/10/02 21:01:08 pk Exp $
+# $Id: doobjcmp,v 1.1 1993/11/03 00:56:18 paul Exp $
# compare two object files, in depth.
x=$1
diff --git a/gnu/usr.bin/as/testscripts/dostriptest b/gnu/usr.bin/as/testscripts/dostriptest
index aa734c0c2b9f..6f0c2918aeed 100755
--- a/gnu/usr.bin/as/testscripts/dostriptest
+++ b/gnu/usr.bin/as/testscripts/dostriptest
@@ -1,5 +1,5 @@
#!/bin/sh
-# $Id: dostriptest,v 1.1 1993/10/02 21:01:09 pk Exp $
+# $Id: dostriptest,v 1.1 1993/11/03 00:56:19 paul Exp $
x=striptest.xx.$$
y=striptest.yy.$$
diff --git a/gnu/usr.bin/as/testscripts/dotest b/gnu/usr.bin/as/testscripts/dotest
index 051ee11ef790..ff39433d32b9 100755
--- a/gnu/usr.bin/as/testscripts/dotest
+++ b/gnu/usr.bin/as/testscripts/dotest
@@ -1,6 +1,6 @@
#!/bin/sh
# ad hoc debug tool
-# $Id: dotest,v 1.1 1993/10/02 21:01:10 pk Exp $
+# $Id: dotest,v 1.1 1993/11/03 00:56:21 paul Exp $
x=$1
y=$2
diff --git a/gnu/usr.bin/as/testscripts/dounsortreloc b/gnu/usr.bin/as/testscripts/dounsortreloc
index 0a4771c6425e..b990553fa6e7 100755
--- a/gnu/usr.bin/as/testscripts/dounsortreloc
+++ b/gnu/usr.bin/as/testscripts/dounsortreloc
@@ -1,5 +1,5 @@
#!/bin/sh
-# $Id: dounsortreloc,v 1.1 1993/10/02 21:01:11 pk Exp $
+# $Id: dounsortreloc,v 1.1 1993/11/03 00:56:22 paul Exp $
# objdump the reloc table, but strip off the headings and reloc
# numbers and sort the result. Intended for use in comparing reloc
# tables that may not be in the same order.
diff --git a/gnu/usr.bin/as/testscripts/dounsortsymbols b/gnu/usr.bin/as/testscripts/dounsortsymbols
index 2dc5acd65e00..480fe555317e 100755
--- a/gnu/usr.bin/as/testscripts/dounsortsymbols
+++ b/gnu/usr.bin/as/testscripts/dounsortsymbols
@@ -1,5 +1,5 @@
#!/bin/sh
-# $Id: dounsortsymbols,v 1.1 1993/10/02 21:01:12 pk Exp $
+# $Id: dounsortsymbols,v 1.1 1993/11/03 00:56:24 paul Exp $
# objdump the symbol table, but strip off the headings and symbol
# numbers and sort the result. Intended for use in comparing symbol
# tables that may not be in the same order.
diff --git a/gnu/usr.bin/as/version.c b/gnu/usr.bin/as/version.c
index c18109a7a414..64c4caa4b6e1 100644
--- a/gnu/usr.bin/as/version.c
+++ b/gnu/usr.bin/as/version.c
@@ -16,10 +16,10 @@ const
*/
#ifndef lint
-static char rcsid[] = "$Id: version.c,v 1.3 1994/02/14 21:18:05 nate Exp $";
+static char rcsid[] = "$Id: version.c,v 1.4 1995/05/30 04:46:39 rgrimes Exp $";
#endif
-char version_string[] = "GNU assembler version 1.92.3, FreeBSD $Revision: 1.3 $\n";
+char version_string[] = "GNU assembler version 1.92.3, FreeBSD $Revision: 1.4 $\n";
#ifdef HO_VMS
dummy3()
diff --git a/gnu/usr.bin/as/write.c b/gnu/usr.bin/as/write.c
index 66906b0d09d2..42c5c43317c8 100644
--- a/gnu/usr.bin/as/write.c
+++ b/gnu/usr.bin/as/write.c
@@ -21,7 +21,7 @@
/* This thing should be set up to do byteordering correctly. But... */
#ifndef lint
-static char rcsid[] = "$Id: write.c,v 1.6 1994/12/23 22:36:22 nate Exp $";
+static char rcsid[] = "$Id: write.c,v 1.7 1995/05/30 04:46:40 rgrimes Exp $";
#endif
#include "as.h"
diff --git a/gnu/usr.bin/as/xmalloc.c b/gnu/usr.bin/as/xmalloc.c
index 4ecb289237de..b6a6932c1e53 100644
--- a/gnu/usr.bin/as/xmalloc.c
+++ b/gnu/usr.bin/as/xmalloc.c
@@ -42,7 +42,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: xmalloc.c,v 1.2 1993/11/03 00:52:32 paul Exp $";
+static char rcsid[] = "$Id: xmalloc.c,v 1.3 1995/05/30 04:46:42 rgrimes Exp $";
#endif
#include <stdio.h>
diff --git a/gnu/usr.bin/as/xrealloc.c b/gnu/usr.bin/as/xrealloc.c
index 8b2db1623d57..057d4a27dac1 100644
--- a/gnu/usr.bin/as/xrealloc.c
+++ b/gnu/usr.bin/as/xrealloc.c
@@ -43,7 +43,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: xrealloc.c,v 1.2 1993/11/03 00:52:34 paul Exp $";
+static char rcsid[] = "$Id: xrealloc.c,v 1.3 1995/05/30 04:46:42 rgrimes Exp $";
#endif
diff --git a/gnu/usr.bin/bc/scan.c b/gnu/usr.bin/bc/scan.c
index 6bff4516deb5..9bd75b6c3ea1 100644
--- a/gnu/usr.bin/bc/scan.c
+++ b/gnu/usr.bin/bc/scan.c
@@ -1,7 +1,7 @@
/* A lexical scanner generated by flex */
/* scanner skeleton version:
- * $Header: /home/ncvs/src/gnu/usr.bin/bc/scan.c,v 1.1.1.1 1993/06/19 00:26:18 paul Exp $
+ * $Header: /home/ncvs/src/gnu/usr.bin/bc/scan.c,v 1.2 1995/05/30 04:49:02 rgrimes Exp $
*/
#define FLEX_SCANNER
diff --git a/gnu/usr.bin/cc/Makefile b/gnu/usr.bin/cc/Makefile
index 8be131e8ec3f..758f9337e971 100644
--- a/gnu/usr.bin/cc/Makefile
+++ b/gnu/usr.bin/cc/Makefile
@@ -1,5 +1,5 @@
#
-# $Id: Makefile,v 1.4 1994/11/15 04:51:20 phk Exp $
+# $Id: Makefile,v 1.5 1995/01/22 21:56:38 ache Exp $
#
PGMDIR= cc_int cpp cc1 cc cc1plus c++ f77 libgcc doc
diff --git a/gnu/usr.bin/cc/Makefile.inc b/gnu/usr.bin/cc/Makefile.inc
index 16d12bf87b03..8f485ff72e86 100644
--- a/gnu/usr.bin/cc/Makefile.inc
+++ b/gnu/usr.bin/cc/Makefile.inc
@@ -1,5 +1,5 @@
#
-# $Id: Makefile.inc,v 1.12 1995/03/10 19:39:32 davidg Exp $
+# $Id: Makefile.inc,v 1.13 1995/03/11 03:48:42 nate Exp $
#
CFLAGS+= -I${.CURDIR} -I${.CURDIR}/../include
diff --git a/gnu/usr.bin/cc/README b/gnu/usr.bin/cc/README
index e47729a5d750..c98416935891 100644
--- a/gnu/usr.bin/cc/README
+++ b/gnu/usr.bin/cc/README
@@ -1,5 +1,5 @@
-$Id$
+$Id: README,v 1.3 1994/11/15 04:51:22 phk Exp $
This directory contains gcc in a form that uses "bmake" makefiles.
This is not the place you want to start, if you want to hack gcc.
diff --git a/gnu/usr.bin/cc/c++/Makefile b/gnu/usr.bin/cc/c++/Makefile
index 5557c627dfdc..4eb3926dc253 100644
--- a/gnu/usr.bin/cc/c++/Makefile
+++ b/gnu/usr.bin/cc/c++/Makefile
@@ -1,5 +1,5 @@
#
-# $Id$
+# $Id: Makefile,v 1.5 1994/11/15 04:51:26 phk Exp $
#
PROG = c++
diff --git a/gnu/usr.bin/cc/cc/Makefile b/gnu/usr.bin/cc/cc/Makefile
index ce9e1fe60fca..e796b5353315 100644
--- a/gnu/usr.bin/cc/cc/Makefile
+++ b/gnu/usr.bin/cc/cc/Makefile
@@ -1,5 +1,5 @@
#
-# $Id: Makefile,v 1.7 1994/11/15 04:51:27 phk Exp $
+# $Id: Makefile,v 1.8 1994/12/26 19:15:19 ats Exp $
#
PROG = cc
diff --git a/gnu/usr.bin/cc/cc/cc.1 b/gnu/usr.bin/cc/cc/cc.1
index 223115c43801..dc5d5b2bf432 100644
--- a/gnu/usr.bin/cc/cc/cc.1
+++ b/gnu/usr.bin/cc/cc/cc.1
@@ -20,7 +20,7 @@
.if n .sp
.if t .sp 0.4
..
-.Id $Id: gcc.1,v 1.4 1993/10/13 23:19:12 pesch Exp $
+.Id $Id: cc.1,v 1.2 1994/11/15 04:51:29 phk Exp $
.TH GCC 1 "\*(Dt" "GNU Tools" "GNU Tools"
.SH NAME
gcc, g++ \- GNU project C and C++ Compiler (v2.6)
diff --git a/gnu/usr.bin/cc/cc1/Makefile b/gnu/usr.bin/cc/cc1/Makefile
index 3ef760833356..17deeb86af0f 100644
--- a/gnu/usr.bin/cc/cc1/Makefile
+++ b/gnu/usr.bin/cc/cc1/Makefile
@@ -1,5 +1,5 @@
#
-# $Id$
+# $Id: Makefile,v 1.5 1994/11/15 04:51:32 phk Exp $
#
PROG = cc1
diff --git a/gnu/usr.bin/cc/cc1plus/Makefile b/gnu/usr.bin/cc/cc1plus/Makefile
index 22bdba3606db..fc98228337b6 100644
--- a/gnu/usr.bin/cc/cc1plus/Makefile
+++ b/gnu/usr.bin/cc/cc1plus/Makefile
@@ -1,5 +1,5 @@
#
-# $Id$
+# $Id: Makefile,v 1.5 1994/11/15 04:51:37 phk Exp $
#
PROG = cc1plus
diff --git a/gnu/usr.bin/cc/cc_int/Makefile b/gnu/usr.bin/cc/cc_int/Makefile
index a7df2a34147d..7e5fb82e90b9 100644
--- a/gnu/usr.bin/cc/cc_int/Makefile
+++ b/gnu/usr.bin/cc/cc_int/Makefile
@@ -1,5 +1,5 @@
#
-# $Id: Makefile,v 1.7 1994/11/15 04:51:40 phk Exp $
+# $Id: Makefile,v 1.8 1995/03/13 01:30:02 ache Exp $
#
SRCS = aux-output.c bc-emit.c bc-optab.c c-common.c caller-save.c calls.c combine.c convert.c cse.c dbxout.c dwarfout.c emit-rtl.c explow.c expmed.c expr.c final.c flow.c fold-const.c function.c getpwd.c global.c insn-attrtab.c insn-emit.c insn-extract.c insn-opinit.c insn-output.c insn-peep.c insn-recog.c integrate.c jump.c local-alloc.c loop.c obstack.c optabs.c print-rtl.c print-tree.c real.c recog.c reg-stack.c regclass.c reload.c reload1.c reorg.c rtl.c rtlanal.c sched.c sdbout.c stmt.c stor-layout.c stupid.c toplev.c tree.c unroll.c varasm.c version.c xcoffout.c
diff --git a/gnu/usr.bin/cc/cpp/Makefile b/gnu/usr.bin/cc/cpp/Makefile
index 43ec78c3a49f..0be24522688e 100644
--- a/gnu/usr.bin/cc/cpp/Makefile
+++ b/gnu/usr.bin/cc/cpp/Makefile
@@ -1,5 +1,5 @@
#
-# $Id$
+# $Id: Makefile,v 1.4 1994/11/15 04:52:05 phk Exp $
#
PROG = cpp
diff --git a/gnu/usr.bin/cc/f77/Makefile b/gnu/usr.bin/cc/f77/Makefile
index 4af4448ad0f7..04f667bd98bd 100644
--- a/gnu/usr.bin/cc/f77/Makefile
+++ b/gnu/usr.bin/cc/f77/Makefile
@@ -1,5 +1,5 @@
#
-# $Id: Makefile,v 1.3 1994/09/18 22:35:43 wollman Exp $
+# $Id: Makefile,v 1.1 1994/10/25 14:36:49 ljo Exp $
#
PROG = f77
diff --git a/gnu/usr.bin/cc/libgcc/Makefile b/gnu/usr.bin/cc/libgcc/Makefile
index e18fcde89189..45a301df0fef 100644
--- a/gnu/usr.bin/cc/libgcc/Makefile
+++ b/gnu/usr.bin/cc/libgcc/Makefile
@@ -1,5 +1,5 @@
#
-# $Id: Makefile,v 1.7 1995/03/12 09:37:26 phk Exp $
+# $Id: Makefile,v 1.8 1995/03/12 20:17:07 phk Exp $
#
LIB= gcc
diff --git a/gnu/usr.bin/cvs/FAQ b/gnu/usr.bin/cvs/FAQ
index 38f8e1527e8b..9cbf179c5294 100644
--- a/gnu/usr.bin/cvs/FAQ
+++ b/gnu/usr.bin/cvs/FAQ
@@ -1,7 +1,7 @@
Archive-name: cvs-faq
-$Revision: 1.1 $ <<== Include this in your comments
-$Date: 1994/10/07 06:17:45 $
+$Revision: 1.1.1.1 $ <<== Include this in your comments
+$Date: 1995/03/31 07:42:45 $
===========================================================================
== Frequently Asked Questions about CVS (The Concurrent Versions System) ==
diff --git a/gnu/usr.bin/cvs/Makefile b/gnu/usr.bin/cvs/Makefile
index df2f87440d5a..552257c6953f 100644
--- a/gnu/usr.bin/cvs/Makefile
+++ b/gnu/usr.bin/cvs/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.5 1995/03/31 07:55:01 nate Exp $
+# $Id: Makefile,v 1.6 1995/04/14 15:15:27 nate Exp $
SUBDIR = lib cvs mkmodules cvsinit doc examples
diff --git a/gnu/usr.bin/cvs/contrib/clmerge b/gnu/usr.bin/cvs/contrib/clmerge
index 1a29311a9c14..1a29311a9c14 100644..100755
--- a/gnu/usr.bin/cvs/contrib/clmerge
+++ b/gnu/usr.bin/cvs/contrib/clmerge
diff --git a/gnu/usr.bin/cvs/contrib/cln_hist.pl b/gnu/usr.bin/cvs/contrib/cln_hist.pl
index 534863d8ebbb..50415f89e67e 100644
--- a/gnu/usr.bin/cvs/contrib/cln_hist.pl
+++ b/gnu/usr.bin/cvs/contrib/cln_hist.pl
@@ -1,6 +1,6 @@
#!/usr/bin/perl -- # -*-Perl-*-
#
-# $Id: cln_hist.pl,v 1.1 1992/04/10 03:04:15 berliner Exp $
+# $Id: cln_hist.pl,v 1.1.1.2 1995/03/31 07:43:34 nate Exp $
# Contributed by David G. Grubbs <dgg@ksr.com>
#
# Clean up the history file. 10 Record types: MAR OFT WUCG
diff --git a/gnu/usr.bin/cvs/contrib/cvs_acls.pl b/gnu/usr.bin/cvs/contrib/cvs_acls.pl
index 2a3b0d903288..c485ab664668 100644
--- a/gnu/usr.bin/cvs/contrib/cvs_acls.pl
+++ b/gnu/usr.bin/cvs/contrib/cvs_acls.pl
@@ -1,6 +1,6 @@
#!/usr/bin/perl -- # -*-Perl-*-
#
-# $Id: cvs_acls.pl,v 1.2 1992/04/11 16:01:24 berliner Exp $
+# $Id: cvs_acls.pl,v 1.1.1.2 1995/03/31 07:43:36 nate Exp $
#
# Access control lists for CVS. dgg@ksr.com (David G. Grubbs)
#
diff --git a/gnu/usr.bin/cvs/contrib/cvscheck b/gnu/usr.bin/cvs/contrib/cvscheck
index 1c66688cbd34..bc8aa6211ada 100644
--- a/gnu/usr.bin/cvs/contrib/cvscheck
+++ b/gnu/usr.bin/cvs/contrib/cvscheck
@@ -1,5 +1,5 @@
#! /bin/sh
-# $Id: cvscheck,v 1.2 1992/04/10 03:04:19 berliner Exp $
+# $Id: cvscheck,v 1.1.1.2 1995/03/31 07:43:37 nate Exp $
#
# cvscheck - identify files added, changed, or removed
# in CVS working directory
diff --git a/gnu/usr.bin/cvs/contrib/cvscheck.man b/gnu/usr.bin/cvs/contrib/cvscheck.man
index 84d7db7de886..798dc57988da 100644
--- a/gnu/usr.bin/cvs/contrib/cvscheck.man
+++ b/gnu/usr.bin/cvs/contrib/cvscheck.man
@@ -1,4 +1,4 @@
-.\" $Id: cvscheck.man,v 1.1 1992/04/10 03:04:20 berliner Exp $
+.\" $Id: cvscheck.man,v 1.1.1.2 1995/03/31 07:43:40 nate Exp $
.\" Contributed by Lowell Skoog <fluke!lowell@uunet.uu.net>
.TH CVSCHECK LOCAL "4 March 1991" FLUKE
.SH NAME
diff --git a/gnu/usr.bin/cvs/contrib/cvshelp.man b/gnu/usr.bin/cvs/contrib/cvshelp.man
index ba6590a63e43..11a8605f68bd 100644
--- a/gnu/usr.bin/cvs/contrib/cvshelp.man
+++ b/gnu/usr.bin/cvs/contrib/cvshelp.man
@@ -1,4 +1,4 @@
-.\" $Id: cvshelp.man,v 1.1 1992/04/10 03:04:21 berliner Exp $
+.\" $Id: cvshelp.man,v 1.1.1.2 1995/03/31 07:43:42 nate Exp $
.\" Contributed by Lowell Skoog <fluke!lowell@uunet.uu.net>
.\" Full space in nroff; half space in troff
.de SP
diff --git a/gnu/usr.bin/cvs/contrib/descend b/gnu/usr.bin/cvs/contrib/descend
index 999c46f4f0a8..2d0a763e25ca 100644
--- a/gnu/usr.bin/cvs/contrib/descend
+++ b/gnu/usr.bin/cvs/contrib/descend
@@ -1,5 +1,5 @@
#! /bin/sh
-# $Id: descend,v 1.1 1992/04/03 05:22:52 berliner Exp $
+# $Id: descend,v 1.1.1.2 1995/03/31 07:43:43 nate Exp $
#
# descend - walk down a directory tree and execute a command at each node
diff --git a/gnu/usr.bin/cvs/contrib/descend.man b/gnu/usr.bin/cvs/contrib/descend.man
index a38d4caa7f65..576dcbce0541 100644
--- a/gnu/usr.bin/cvs/contrib/descend.man
+++ b/gnu/usr.bin/cvs/contrib/descend.man
@@ -1,4 +1,4 @@
-.\" $Id: descend.man,v 1.1 1992/04/03 05:22:53 berliner Exp $
+.\" $Id: descend.man,v 1.1.1.2 1995/03/31 07:43:44 nate Exp $
.TH DESCEND 1 "31 March 1992"
.SH NAME
descend \- walk directory tree and execute a command at each node
diff --git a/gnu/usr.bin/cvs/contrib/easy-import.perl b/gnu/usr.bin/cvs/contrib/easy-import.perl
index 44f6f4cb2938..8db6490c32b8 100644..100755
--- a/gnu/usr.bin/cvs/contrib/easy-import.perl
+++ b/gnu/usr.bin/cvs/contrib/easy-import.perl
@@ -8,7 +8,7 @@
#
# Written by Jörg Wunsch, 95/03/07, and placed in the public domain.
#
-# $Id: easy-import.perl,v 1.3 1995/07/23 17:34:00 joerg Exp $
+# $Id: easy-import.perl,v 1.2.6.1 1995/09/26 07:48:14 davidg Exp $
require "complete.pl";
require "getopts.pl";
@@ -22,7 +22,7 @@ sub scan_opts
$dont_do_it = "-n" if $opt_n;
if($opt_v) {
- print STDERR '$Source: /home/ncvs/src/gnu/usr.bin/cvs/contrib/easy-import.perl,v $ $Revision: 1.3 $' . "\n"; # 'emacs kludge
+ print STDERR '$Source: /home/ncvs/src/gnu/usr.bin/cvs/contrib/easy-import.perl,v $ $Revision: 1.2.6.1 $' . "\n"; # 'emacs kludge
exit 0;
}
die "usage: $0 [-v] [-n] [moduledir]\n" .
diff --git a/gnu/usr.bin/cvs/contrib/mfpipe.pl b/gnu/usr.bin/cvs/contrib/mfpipe.pl
index 3e6357d21b07..31b7c31af852 100644
--- a/gnu/usr.bin/cvs/contrib/mfpipe.pl
+++ b/gnu/usr.bin/cvs/contrib/mfpipe.pl
@@ -11,7 +11,7 @@
# Especially if they regularly beat on the same directory. Anyway if you
# think anyone would be interested here it is.
#
-# $Id: mfpipe.pl,v 1.1 1992/03/02 01:22:41 berliner Exp $
+# $Id: mfpipe.pl,v 1.1.1.2 1995/03/31 07:43:50 nate Exp $
#
#
# File: mfpipe
diff --git a/gnu/usr.bin/cvs/contrib/pcl-cvs/texinfo.tex b/gnu/usr.bin/cvs/contrib/pcl-cvs/texinfo.tex
new file mode 100644
index 000000000000..5c0463c402f4
--- /dev/null
+++ b/gnu/usr.bin/cvs/contrib/pcl-cvs/texinfo.tex
@@ -0,0 +1,4344 @@
+%% TeX macros to handle texinfo files
+
+% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 1994 Free Software Foundation, Inc.
+
+%This texinfo.tex file is free software; you can redistribute it and/or
+%modify it under the terms of the GNU General Public License as
+%published by the Free Software Foundation; either version 2, or (at
+%your option) any later version.
+
+%This texinfo.tex file 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. See the GNU
+%General Public License for more details.
+
+%You should have received a copy of the GNU General Public License
+%along with this texinfo.tex file; see the file COPYING. If not, write
+%to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139,
+%USA.
+
+
+%In other words, you are welcome to use, share and improve this program.
+%You are forbidden to forbid anyone else to use, share and improve
+%what you give them. Help stamp out software-hoarding!
+
+% This automatically updates the version number based on RCS.
+\def\deftexinfoversion$#1: #2 ${\def\texinfoversion{#2}}
+\deftexinfoversion$Revision: 1.1.1.2 $
+\message{Loading texinfo package [Version \texinfoversion]:}
+
+% Print the version number if in a .fmt file.
+\everyjob{\message{[Texinfo version \texinfoversion]}\message{}}
+
+% Save some parts of plain tex whose names we will redefine.
+
+\let\ptextilde=\~
+\let\ptexlbrace=\{
+\let\ptexrbrace=\}
+\let\ptexdots=\dots
+\let\ptexdot=\.
+\let\ptexstar=\*
+\let\ptexend=\end
+\let\ptexbullet=\bullet
+\let\ptexb=\b
+\let\ptexc=\c
+\let\ptexi=\i
+\let\ptext=\t
+\let\ptexl=\l
+\let\ptexL=\L
+
+% Be sure we're in horizontal mode when doing a tie, since we make space
+% equivalent to this in @example-like environments. Otherwise, a space
+% at the beginning of a line will start with \penalty -- and
+% since \penalty is valid in vertical mode, we'd end up putting the
+% penalty on the vertical list instead of in the new paragraph.
+{\catcode`@ = 11
+ \gdef\tie{\leavevmode\penalty\@M\ }
+}
+\let\~ = \tie % And make it available as @~.
+
+\message{Basics,}
+\chardef\other=12
+
+% If this character appears in an error message or help string, it
+% starts a new line in the output.
+\newlinechar = `^^J
+
+% Set up fixed words for English.
+\ifx\putwordChapter\undefined{\gdef\putwordChapter{Chapter}}\fi%
+\def\putwordInfo{Info}%
+\ifx\putwordSee\undefined{\gdef\putwordSee{See}}\fi%
+\ifx\putwordsee\undefined{\gdef\putwordsee{see}}\fi%
+\ifx\putwordfile\undefined{\gdef\putwordfile{file}}\fi%
+\ifx\putwordpage\undefined{\gdef\putwordpage{page}}\fi%
+\ifx\putwordsection\undefined{\gdef\putwordsection{section}}\fi%
+\ifx\putwordSection\undefined{\gdef\putwordSection{Section}}\fi%
+\ifx\putwordTableofContents\undefined{\gdef\putwordTableofContents{Table of Contents}}\fi%
+\ifx\putwordShortContents\undefined{\gdef\putwordShortContents{Short Contents}}\fi%
+\ifx\putwordAppendix\undefined{\gdef\putwordAppendix{Appendix}}\fi%
+
+% Ignore a token.
+%
+\def\gobble#1{}
+
+\hyphenation{ap-pen-dix}
+\hyphenation{mini-buf-fer mini-buf-fers}
+\hyphenation{eshell}
+
+% Margin to add to right of even pages, to left of odd pages.
+\newdimen \bindingoffset \bindingoffset=0pt
+\newdimen \normaloffset \normaloffset=\hoffset
+\newdimen\pagewidth \newdimen\pageheight
+\pagewidth=\hsize \pageheight=\vsize
+
+% Sometimes it is convenient to have everything in the transcript file
+% and nothing on the terminal. We don't just call \tracingall here,
+% since that produces some useless output on the terminal.
+%
+\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}%
+\def\loggingall{\tracingcommands2 \tracingstats2
+ \tracingpages1 \tracingoutput1 \tracinglostchars1
+ \tracingmacros2 \tracingparagraphs1 \tracingrestores1
+ \showboxbreadth\maxdimen\showboxdepth\maxdimen
+}%
+
+%---------------------Begin change-----------------------
+%
+%%%% For @cropmarks command.
+% Dimensions to add cropmarks at corners Added by P. A. MacKay, 12 Nov. 1986
+%
+\newdimen\cornerlong \newdimen\cornerthick
+\newdimen \topandbottommargin
+\newdimen \outerhsize \newdimen \outervsize
+\cornerlong=1pc\cornerthick=.3pt % These set size of cropmarks
+\outerhsize=7in
+%\outervsize=9.5in
+% Alternative @smallbook page size is 9.25in
+\outervsize=9.25in
+\topandbottommargin=.75in
+%
+%---------------------End change-----------------------
+
+% \onepageout takes a vbox as an argument. Note that \pagecontents
+% does insertions itself, but you have to call it yourself.
+\chardef\PAGE=255 \output={\onepageout{\pagecontents\PAGE}}
+\def\onepageout#1{\hoffset=\normaloffset
+\ifodd\pageno \advance\hoffset by \bindingoffset
+\else \advance\hoffset by -\bindingoffset\fi
+{\escapechar=`\\\relax % makes sure backslash is used in output files.
+\shipout\vbox{{\let\hsize=\pagewidth \makeheadline} \pagebody{#1}%
+{\let\hsize=\pagewidth \makefootline}}}%
+\advancepageno \ifnum\outputpenalty>-20000 \else\dosupereject\fi}
+
+%%%% For @cropmarks command %%%%
+
+% Here is a modification of the main output routine for Near East Publications
+% This provides right-angle cropmarks at all four corners.
+% The contents of the page are centerlined into the cropmarks,
+% and any desired binding offset is added as an \hskip on either
+% site of the centerlined box. (P. A. MacKay, 12 November, 1986)
+%
+\def\croppageout#1{\hoffset=0pt % make sure this doesn't mess things up
+{\escapechar=`\\\relax % makes sure backslash is used in output files.
+ \shipout
+ \vbox to \outervsize{\hsize=\outerhsize
+ \vbox{\line{\ewtop\hfill\ewtop}}
+ \nointerlineskip
+ \line{\vbox{\moveleft\cornerthick\nstop}
+ \hfill
+ \vbox{\moveright\cornerthick\nstop}}
+ \vskip \topandbottommargin
+ \centerline{\ifodd\pageno\hskip\bindingoffset\fi
+ \vbox{
+ {\let\hsize=\pagewidth \makeheadline}
+ \pagebody{#1}
+ {\let\hsize=\pagewidth \makefootline}}
+ \ifodd\pageno\else\hskip\bindingoffset\fi}
+ \vskip \topandbottommargin plus1fill minus1fill
+ \boxmaxdepth\cornerthick
+ \line{\vbox{\moveleft\cornerthick\nsbot}
+ \hfill
+ \vbox{\moveright\cornerthick\nsbot}}
+ \nointerlineskip
+ \vbox{\line{\ewbot\hfill\ewbot}}
+ }}
+ \advancepageno
+ \ifnum\outputpenalty>-20000 \else\dosupereject\fi}
+%
+% Do @cropmarks to get crop marks
+\def\cropmarks{\let\onepageout=\croppageout }
+
+\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}}
+{\catcode`\@ =11
+\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi
+\dimen@=\dp#1 \unvbox#1
+\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi
+\ifr@ggedbottom \kern-\dimen@ \vfil \fi}
+}
+
+%
+% Here are the rules for the cropmarks. Note that they are
+% offset so that the space between them is truly \outerhsize or \outervsize
+% (P. A. MacKay, 12 November, 1986)
+%
+\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong}
+\def\nstop{\vbox
+ {\hrule height\cornerthick depth\cornerlong width\cornerthick}}
+\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong}
+\def\nsbot{\vbox
+ {\hrule height\cornerlong depth\cornerthick width\cornerthick}}
+
+% Parse an argument, then pass it to #1. The argument is the rest of
+% the input line (except we remove a trailing comment). #1 should be a
+% macro which expects an ordinary undelimited TeX argument.
+%
+\def\parsearg#1{%
+ \let\next = #1%
+ \begingroup
+ \obeylines
+ \futurelet\temp\parseargx
+}
+
+% If the next token is an obeyed space (from an @example environment or
+% the like), remove it and recurse. Otherwise, we're done.
+\def\parseargx{%
+ % \obeyedspace is defined far below, after the definition of \sepspaces.
+ \ifx\obeyedspace\temp
+ \expandafter\parseargdiscardspace
+ \else
+ \expandafter\parseargline
+ \fi
+}
+
+% Remove a single space (as the delimiter token to the macro call).
+{\obeyspaces %
+ \gdef\parseargdiscardspace {\futurelet\temp\parseargx}}
+
+{\obeylines %
+ \gdef\parseargline#1^^M{%
+ \endgroup % End of the group started in \parsearg.
+ %
+ % First remove any @c comment, then any @comment.
+ % Result of each macro is put in \toks0.
+ \argremovec #1\c\relax %
+ \expandafter\argremovecomment \the\toks0 \comment\relax %
+ %
+ % Call the caller's macro, saved as \next in \parsearg.
+ \expandafter\next\expandafter{\the\toks0}%
+ }%
+}
+
+% Since all \c{,omment} does is throw away the argument, we can let TeX
+% do that for us. The \relax here is matched by the \relax in the call
+% in \parseargline; it could be more or less anything, its purpose is
+% just to delimit the argument to the \c.
+\def\argremovec#1\c#2\relax{\toks0 = {#1}}
+\def\argremovecomment#1\comment#2\relax{\toks0 = {#1}}
+
+% \argremovec{,omment} might leave us with trailing spaces, though; e.g.,
+% @end itemize @c foo
+% will have two active spaces as part of the argument with the
+% `itemize'. Here we remove all active spaces from #1, and assign the
+% result to \toks0.
+%
+% This loses if there are any *other* active characters besides spaces
+% in the argument -- _ ^ +, for example -- since they get expanded.
+% Fortunately, Texinfo does not define any such commands. (If it ever
+% does, the catcode of the characters in questionwill have to be changed
+% here.) But this means we cannot call \removeactivespaces as part of
+% \argremovec{,omment}, since @c uses \parsearg, and thus the argument
+% that \parsearg gets might well have any character at all in it.
+%
+\def\removeactivespaces#1{%
+ \begingroup
+ \ignoreactivespaces
+ \edef\temp{#1}%
+ \global\toks0 = \expandafter{\temp}%
+ \endgroup
+}
+
+% Change the active space to expand to nothing.
+%
+\begingroup
+ \obeyspaces
+ \gdef\ignoreactivespaces{\obeyspaces\let =\empty}
+\endgroup
+
+
+\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}
+
+%% These are used to keep @begin/@end levels from running away
+%% Call \inENV within environments (after a \begingroup)
+\newif\ifENV \ENVfalse \def\inENV{\ifENV\relax\else\ENVtrue\fi}
+\def\ENVcheck{%
+\ifENV\errmessage{Still within an environment. Type Return to continue.}
+\endgroup\fi} % This is not perfect, but it should reduce lossage
+
+% @begin foo is the same as @foo, for now.
+\newhelp\EMsimple{Type <Return> to continue.}
+
+\outer\def\begin{\parsearg\beginxxx}
+
+\def\beginxxx #1{%
+\expandafter\ifx\csname #1\endcsname\relax
+{\errhelp=\EMsimple \errmessage{Undefined command @begin #1}}\else
+\csname #1\endcsname\fi}
+
+% @end foo executes the definition of \Efoo.
+%
+\def\end{\parsearg\endxxx}
+\def\endxxx #1{%
+ \removeactivespaces{#1}%
+ \edef\endthing{\the\toks0}%
+ %
+ \expandafter\ifx\csname E\endthing\endcsname\relax
+ \expandafter\ifx\csname \endthing\endcsname\relax
+ % There's no \foo, i.e., no ``environment'' foo.
+ \errhelp = \EMsimple
+ \errmessage{Undefined command `@end \endthing'}%
+ \else
+ \unmatchedenderror\endthing
+ \fi
+ \else
+ % Everything's ok; the right environment has been started.
+ \csname E\endthing\endcsname
+ \fi
+}
+
+% There is an environment #1, but it hasn't been started. Give an error.
+%
+\def\unmatchedenderror#1{%
+ \errhelp = \EMsimple
+ \errmessage{This `@end #1' doesn't have a matching `@#1'}%
+}
+
+% Define the control sequence \E#1 to give an unmatched @end error.
+%
+\def\defineunmatchedend#1{%
+ \expandafter\def\csname E#1\endcsname{\unmatchedenderror{#1}}%
+}
+
+
+% Single-spacing is done by various environments (specifically, in
+% \nonfillstart and \quotations).
+\newskip\singlespaceskip \singlespaceskip = 12.5pt
+\def\singlespace{%
+ % Why was this kern here? It messes up equalizing space above and below
+ % environments. --karl, 6may93
+ %{\advance \baselineskip by -\singlespaceskip
+ %\kern \baselineskip}%
+ \setleading \singlespaceskip
+}
+
+%% Simple single-character @ commands
+
+% @@ prints an @
+% Kludge this until the fonts are right (grr).
+\def\@{{\tt \char '100}}
+
+% This is turned off because it was never documented
+% and you can use @w{...} around a quote to suppress ligatures.
+%% Define @` and @' to be the same as ` and '
+%% but suppressing ligatures.
+%\def\`{{`}}
+%\def\'{{'}}
+
+% Used to generate quoted braces.
+
+\def\mylbrace {{\tt \char '173}}
+\def\myrbrace {{\tt \char '175}}
+\let\{=\mylbrace
+\let\}=\myrbrace
+
+% @: forces normal size whitespace following.
+\def\:{\spacefactor=1000 }
+
+% @* forces a line break.
+\def\*{\hfil\break\hbox{}\ignorespaces}
+
+% @. is an end-of-sentence period.
+\def\.{.\spacefactor=3000 }
+
+% @w prevents a word break. Without the \leavevmode, @w at the
+% beginning of a paragraph, when TeX is still in vertical mode, would
+% produce a whole line of output instead of starting the paragraph.
+\def\w#1{\leavevmode\hbox{#1}}
+
+% @group ... @end group forces ... to be all on one page, by enclosing
+% it in a TeX vbox. We use \vtop instead of \vbox to construct the box
+% to keep its height that of a normal line. According to the rules for
+% \topskip (p.114 of the TeXbook), the glue inserted is
+% max (\topskip - \ht (first item), 0). If that height is large,
+% therefore, no glue is inserted, and the space between the headline and
+% the text is small, which looks bad.
+%
+\def\group{\begingroup
+ \ifnum\catcode13=\active \else
+ \errhelp = \groupinvalidhelp
+ \errmessage{@group invalid in context where filling is enabled}%
+ \fi
+ %
+ % The \vtop we start below produces a box with normal height and large
+ % depth; thus, TeX puts \baselineskip glue before it, and (when the
+ % next line of text is done) \lineskip glue after it. (See p.82 of
+ % the TeXbook.) Thus, space below is not quite equal to space
+ % above. But it's pretty close.
+ \def\Egroup{%
+ \egroup % End the \vtop.
+ \endgroup % End the \group.
+ }%
+ %
+ \vtop\bgroup
+ % We have to put a strut on the last line in case the @group is in
+ % the midst of an example, rather than completely enclosing it.
+ % Otherwise, the interline space between the last line of the group
+ % and the first line afterwards is too small. But we can't put the
+ % strut in \Egroup, since there it would be on a line by itself.
+ % Hence this just inserts a strut at the beginning of each line.
+ \everypar = {\strut}%
+ %
+ % Since we have a strut on every line, we don't need any of TeX's
+ % normal interline spacing.
+ \offinterlineskip
+ %
+ % OK, but now we have to do something about blank
+ % lines in the input in @example-like environments, which normally
+ % just turn into \lisppar, which will insert no space now that we've
+ % turned off the interline space. Simplest is to make them be an
+ % empty paragraph.
+ \ifx\par\lisppar
+ \edef\par{\leavevmode \par}%
+ %
+ % Reset ^^M's definition to new definition of \par.
+ \obeylines
+ \fi
+ %
+ % Do @comment since we are called inside an environment such as
+ % @example, where each end-of-line in the input causes an
+ % end-of-line in the output. We don't want the end-of-line after
+ % the `@group' to put extra space in the output. Since @group
+ % should appear on a line by itself (according to the Texinfo
+ % manual), we don't worry about eating any user text.
+ \comment
+}
+%
+% TeX puts in an \escapechar (i.e., `@') at the beginning of the help
+% message, so this ends up printing `@group can only ...'.
+%
+\newhelp\groupinvalidhelp{%
+group can only be used in environments such as @example,^^J%
+where each line of input produces a line of output.}
+
+% @need space-in-mils
+% forces a page break if there is not space-in-mils remaining.
+
+\newdimen\mil \mil=0.001in
+
+\def\need{\parsearg\needx}
+
+% Old definition--didn't work.
+%\def\needx #1{\par %
+%% This method tries to make TeX break the page naturally
+%% if the depth of the box does not fit.
+%{\baselineskip=0pt%
+%\vtop to #1\mil{\vfil}\kern -#1\mil\penalty 10000
+%\prevdepth=-1000pt
+%}}
+
+\def\needx#1{%
+ % Go into vertical mode, so we don't make a big box in the middle of a
+ % paragraph.
+ \par
+ %
+ % Don't add any leading before our big empty box, but allow a page
+ % break, since the best break might be right here.
+ \allowbreak
+ \nointerlineskip
+ \vtop to #1\mil{\vfil}%
+ %
+ % TeX does not even consider page breaks if a penalty added to the
+ % main vertical list is 10000 or more. But in order to see if the
+ % empty box we just added fits on the page, we must make it consider
+ % page breaks. On the other hand, we don't want to actually break the
+ % page after the empty box. So we use a penalty of 9999.
+ %
+ % There is an extremely small chance that TeX will actually break the
+ % page at this \penalty, if there are no other feasible breakpoints in
+ % sight. (If the user is using lots of big @group commands, which
+ % almost-but-not-quite fill up a page, TeX will have a hard time doing
+ % good page breaking, for example.) However, I could not construct an
+ % example where a page broke at this \penalty; if it happens in a real
+ % document, then we can reconsider our strategy.
+ \penalty9999
+ %
+ % Back up by the size of the box, whether we did a page break or not.
+ \kern -#1\mil
+ %
+ % Do not allow a page break right after this kern.
+ \nobreak
+}
+
+% @br forces paragraph break
+
+\let\br = \par
+
+% @dots{} output some dots
+
+\def\dots{$\ldots$}
+
+% @page forces the start of a new page
+
+\def\page{\par\vfill\supereject}
+
+% @exdent text....
+% outputs text on separate line in roman font, starting at standard page margin
+
+% This records the amount of indent in the innermost environment.
+% That's how much \exdent should take out.
+\newskip\exdentamount
+
+% This defn is used inside fill environments such as @defun.
+\def\exdent{\parsearg\exdentyyy}
+\def\exdentyyy #1{{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}}
+
+% This defn is used inside nofill environments such as @example.
+\def\nofillexdent{\parsearg\nofillexdentyyy}
+\def\nofillexdentyyy #1{{\advance \leftskip by -\exdentamount
+\leftline{\hskip\leftskip{\rm#1}}}}
+
+%\hbox{{\rm#1}}\hfil\break}}
+
+% @include file insert text of that file as input.
+
+\def\include{\parsearg\includezzz}
+%Use \input\thisfile to avoid blank after \input, which may be an active
+%char (in which case the blank would become the \input argument).
+%The grouping keeps the value of \thisfile correct even when @include
+%is nested.
+\def\includezzz #1{\begingroup
+\def\thisfile{#1}\input\thisfile
+\endgroup}
+
+\def\thisfile{}
+
+% @center line outputs that line, centered
+
+\def\center{\parsearg\centerzzz}
+\def\centerzzz #1{{\advance\hsize by -\leftskip
+\advance\hsize by -\rightskip
+\centerline{#1}}}
+
+% @sp n outputs n lines of vertical space
+
+\def\sp{\parsearg\spxxx}
+\def\spxxx #1{\par \vskip #1\baselineskip}
+
+% @comment ...line which is ignored...
+% @c is the same as @comment
+% @ignore ... @end ignore is another way to write a comment
+
+\def\comment{\catcode 64=\other \catcode 123=\other \catcode 125=\other%
+\parsearg \commentxxx}
+
+\def\commentxxx #1{\catcode 64=0 \catcode 123=1 \catcode 125=2 }
+
+\let\c=\comment
+
+% Prevent errors for section commands.
+% Used in @ignore and in failing conditionals.
+\def\ignoresections{%
+\let\chapter=\relax
+\let\unnumbered=\relax
+\let\top=\relax
+\let\unnumberedsec=\relax
+\let\unnumberedsection=\relax
+\let\unnumberedsubsec=\relax
+\let\unnumberedsubsection=\relax
+\let\unnumberedsubsubsec=\relax
+\let\unnumberedsubsubsection=\relax
+\let\section=\relax
+\let\subsec=\relax
+\let\subsubsec=\relax
+\let\subsection=\relax
+\let\subsubsection=\relax
+\let\appendix=\relax
+\let\appendixsec=\relax
+\let\appendixsection=\relax
+\let\appendixsubsec=\relax
+\let\appendixsubsection=\relax
+\let\appendixsubsubsec=\relax
+\let\appendixsubsubsection=\relax
+\let\contents=\relax
+\let\smallbook=\relax
+\let\titlepage=\relax
+}
+
+% Used in nested conditionals, where we have to parse the Texinfo source
+% and so want to turn off most commands, in case they are used
+% incorrectly.
+%
+\def\ignoremorecommands{%
+ \let\defcv = \relax
+ \let\deffn = \relax
+ \let\deffnx = \relax
+ \let\defindex = \relax
+ \let\defivar = \relax
+ \let\defmac = \relax
+ \let\defmethod = \relax
+ \let\defop = \relax
+ \let\defopt = \relax
+ \let\defspec = \relax
+ \let\deftp = \relax
+ \let\deftypefn = \relax
+ \let\deftypefun = \relax
+ \let\deftypevar = \relax
+ \let\deftypevr = \relax
+ \let\defun = \relax
+ \let\defvar = \relax
+ \let\defvr = \relax
+ \let\ref = \relax
+ \let\xref = \relax
+ \let\printindex = \relax
+ \let\pxref = \relax
+ \let\settitle = \relax
+ \let\include = \relax
+ \let\lowersections = \relax
+ \let\down = \relax
+ \let\raisesections = \relax
+ \let\up = \relax
+ \let\set = \relax
+ \let\clear = \relax
+ \let\item = \relax
+ \let\message = \relax
+}
+
+% Ignore @ignore ... @end ignore.
+%
+\def\ignore{\doignore{ignore}}
+
+% Also ignore @ifinfo, @menu, and @direntry text.
+%
+\def\ifinfo{\doignore{ifinfo}}
+\def\menu{\doignore{menu}}
+\def\direntry{\doignore{direntry}}
+
+% Ignore text until a line `@end #1'.
+%
+\def\doignore#1{\begingroup
+ % Don't complain about control sequences we have declared \outer.
+ \ignoresections
+ %
+ % Define a command to swallow text until we reach `@end #1'.
+ \long\def\doignoretext##1\end #1{\enddoignore}%
+ %
+ % Make sure that spaces turn into tokens that match what \doignoretext wants.
+ \catcode32 = 10
+ %
+ % And now expand that command.
+ \doignoretext
+}
+
+% What we do to finish off ignored text.
+%
+\def\enddoignore{\endgroup\ignorespaces}%
+
+\newif\ifwarnedobs\warnedobsfalse
+\def\obstexwarn{%
+ \ifwarnedobs\relax\else
+ % We need to warn folks that they may have trouble with TeX 3.0.
+ % This uses \immediate\write16 rather than \message to get newlines.
+ \immediate\write16{}
+ \immediate\write16{***WARNING*** for users of Unix TeX 3.0!}
+ \immediate\write16{This manual trips a bug in TeX version 3.0 (tex hangs).}
+ \immediate\write16{If you are running another version of TeX, relax.}
+ \immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.}
+ \immediate\write16{ Then upgrade your TeX installation if you can.}
+ \immediate\write16{If you are stuck with version 3.0, run the}
+ \immediate\write16{ script ``tex3patch'' from the Texinfo distribution}
+ \immediate\write16{ to use a workaround.}
+ \immediate\write16{}
+ \warnedobstrue
+ \fi
+}
+
+% **In TeX 3.0, setting text in \nullfont hangs tex. For a
+% workaround (which requires the file ``dummy.tfm'' to be installed),
+% uncomment the following line:
+%%%%%\font\nullfont=dummy\let\obstexwarn=\relax
+
+% Ignore text, except that we keep track of conditional commands for
+% purposes of nesting, up to an `@end #1' command.
+%
+\def\nestedignore#1{%
+ \obstexwarn
+ % We must actually expand the ignored text to look for the @end
+ % command, so that nested ignore constructs work. Thus, we put the
+ % text into a \vbox and then do nothing with the result. To minimize
+ % the change of memory overflow, we follow the approach outlined on
+ % page 401 of the TeXbook: make the current font be a dummy font.
+ %
+ \setbox0 = \vbox\bgroup
+ % Don't complain about control sequences we have declared \outer.
+ \ignoresections
+ %
+ % Define `@end #1' to end the box, which will in turn undefine the
+ % @end command again.
+ \expandafter\def\csname E#1\endcsname{\egroup\ignorespaces}%
+ %
+ % We are going to be parsing Texinfo commands. Most cause no
+ % trouble when they are used incorrectly, but some commands do
+ % complicated argument parsing or otherwise get confused, so we
+ % undefine them.
+ %
+ % We can't do anything about stray @-signs, unfortunately;
+ % they'll produce `undefined control sequence' errors.
+ \ignoremorecommands
+ %
+ % Set the current font to be \nullfont, a TeX primitive, and define
+ % all the font commands to also use \nullfont. We don't use
+ % dummy.tfm, as suggested in the TeXbook, because not all sites
+ % might have that installed. Therefore, math mode will still
+ % produce output, but that should be an extremely small amount of
+ % stuff compared to the main input.
+ %
+ \nullfont
+ \let\tenrm = \nullfont \let\tenit = \nullfont \let\tensl = \nullfont
+ \let\tenbf = \nullfont \let\tentt = \nullfont \let\smallcaps = \nullfont
+ \let\tensf = \nullfont
+ % Similarly for index fonts (mostly for their use in
+ % smallexample)
+ \let\indrm = \nullfont \let\indit = \nullfont \let\indsl = \nullfont
+ \let\indbf = \nullfont \let\indtt = \nullfont \let\indsc = \nullfont
+ \let\indsf = \nullfont
+ %
+ % Don't complain when characters are missing from the fonts.
+ \tracinglostchars = 0
+ %
+ % Don't bother to do space factor calculations.
+ \frenchspacing
+ %
+ % Don't report underfull hboxes.
+ \hbadness = 10000
+ %
+ % Do minimal line-breaking.
+ \pretolerance = 10000
+ %
+ % Do not execute instructions in @tex
+ \def\tex{\doignore{tex}}
+}
+
+% @set VAR sets the variable VAR to an empty value.
+% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE.
+%
+% Since we want to separate VAR from REST-OF-LINE (which might be
+% empty), we can't just use \parsearg; we have to insert a space of our
+% own to delimit the rest of the line, and then take it out again if we
+% didn't need it.
+%
+\def\set{\parsearg\setxxx}
+\def\setxxx#1{\setyyy#1 \endsetyyy}
+\def\setyyy#1 #2\endsetyyy{%
+ \def\temp{#2}%
+ \ifx\temp\empty \global\expandafter\let\csname SET#1\endcsname = \empty
+ \else \setzzz{#1}#2\endsetzzz % Remove the trailing space \setxxx inserted.
+ \fi
+}
+\def\setzzz#1#2 \endsetzzz{\expandafter\xdef\csname SET#1\endcsname{#2}}
+
+% @clear VAR clears (i.e., unsets) the variable VAR.
+%
+\def\clear{\parsearg\clearxxx}
+\def\clearxxx#1{\global\expandafter\let\csname SET#1\endcsname=\relax}
+
+% @value{foo} gets the text saved in variable foo.
+%
+\def\value#1{\expandafter
+ \ifx\csname SET#1\endcsname\relax
+ {\{No value for ``#1''\}}
+ \else \csname SET#1\endcsname \fi}
+
+% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
+% with @set.
+%
+\def\ifset{\parsearg\ifsetxxx}
+\def\ifsetxxx #1{%
+ \expandafter\ifx\csname SET#1\endcsname\relax
+ \expandafter\ifsetfail
+ \else
+ \expandafter\ifsetsucceed
+ \fi
+}
+\def\ifsetsucceed{\conditionalsucceed{ifset}}
+\def\ifsetfail{\nestedignore{ifset}}
+\defineunmatchedend{ifset}
+
+% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been
+% defined with @set, or has been undefined with @clear.
+%
+\def\ifclear{\parsearg\ifclearxxx}
+\def\ifclearxxx #1{%
+ \expandafter\ifx\csname SET#1\endcsname\relax
+ \expandafter\ifclearsucceed
+ \else
+ \expandafter\ifclearfail
+ \fi
+}
+\def\ifclearsucceed{\conditionalsucceed{ifclear}}
+\def\ifclearfail{\nestedignore{ifclear}}
+\defineunmatchedend{ifclear}
+
+% @iftex always succeeds; we read the text following, through @end
+% iftex). But `@end iftex' should be valid only after an @iftex.
+%
+\def\iftex{\conditionalsucceed{iftex}}
+\defineunmatchedend{iftex}
+
+% We can't just want to start a group at @iftex (for example) and end it
+% at @end iftex, since then @set commands inside the conditional have no
+% effect (they'd get reverted at the end of the group). So we must
+% define \Eiftex to redefine itself to be its previous value. (We can't
+% just define it to fail again with an ``unmatched end'' error, since
+% the @ifset might be nested.)
+%
+\def\conditionalsucceed#1{%
+ \edef\temp{%
+ % Remember the current value of \E#1.
+ \let\nece{prevE#1} = \nece{E#1}%
+ %
+ % At the `@end #1', redefine \E#1 to be its previous value.
+ \def\nece{E#1}{\let\nece{E#1} = \nece{prevE#1}}%
+ }%
+ \temp
+}
+
+% We need to expand lots of \csname's, but we don't want to expand the
+% control sequences after we've constructed them.
+%
+\def\nece#1{\expandafter\noexpand\csname#1\endcsname}
+
+% @asis just yields its argument. Used with @table, for example.
+%
+\def\asis#1{#1}
+
+% @math means output in math mode.
+% We don't use $'s directly in the definition of \math because control
+% sequences like \math are expanded when the toc file is written. Then,
+% we read the toc file back, the $'s will be normal characters (as they
+% should be, according to the definition of Texinfo). So we must use a
+% control sequence to switch into and out of math mode.
+%
+% This isn't quite enough for @math to work properly in indices, but it
+% seems unlikely it will ever be needed there.
+%
+\let\implicitmath = $
+\def\math#1{\implicitmath #1\implicitmath}
+
+% @bullet and @minus need the same treatment as @math, just above.
+\def\bullet{\implicitmath\ptexbullet\implicitmath}
+\def\minus{\implicitmath-\implicitmath}
+
+\def\node{\ENVcheck\parsearg\nodezzz}
+\def\nodezzz#1{\nodexxx [#1,]}
+\def\nodexxx[#1,#2]{\gdef\lastnode{#1}}
+\let\nwnode=\node
+\let\lastnode=\relax
+
+\def\donoderef{\ifx\lastnode\relax\else
+\expandafter\expandafter\expandafter\setref{\lastnode}\fi
+\global\let\lastnode=\relax}
+
+\def\unnumbnoderef{\ifx\lastnode\relax\else
+\expandafter\expandafter\expandafter\unnumbsetref{\lastnode}\fi
+\global\let\lastnode=\relax}
+
+\def\appendixnoderef{\ifx\lastnode\relax\else
+\expandafter\expandafter\expandafter\appendixsetref{\lastnode}\fi
+\global\let\lastnode=\relax}
+
+\let\refill=\relax
+
+% @setfilename is done at the beginning of every texinfo file.
+% So open here the files we need to have open while reading the input.
+% This makes it possible to make a .fmt file for texinfo.
+\def\setfilename{%
+ \readauxfile
+ \opencontents
+ \openindices
+ \fixbackslash % Turn off hack to swallow `\input texinfo'.
+ \global\let\setfilename=\comment % Ignore extra @setfilename cmds.
+ \comment % Ignore the actual filename.
+}
+
+\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend}
+
+\def\inforef #1{\inforefzzz #1,,,,**}
+\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
+ node \samp{\ignorespaces#1{}}}
+
+\message{fonts,}
+
+% Font-change commands.
+
+% Texinfo supports the sans serif font style, which plain TeX does not.
+% So we set up a \sf analogous to plain's \rm, etc.
+\newfam\sffam
+\def\sf{\fam=\sffam \tensf}
+\let\li = \sf % Sometimes we call it \li, not \sf.
+
+%% Try out Computer Modern fonts at \magstephalf
+\let\mainmagstep=\magstephalf
+
+\ifx\bigger\relax
+\let\mainmagstep=\magstep1
+\font\textrm=cmr12
+\font\texttt=cmtt12
+\else
+\font\textrm=cmr10 scaled \mainmagstep
+\font\texttt=cmtt10 scaled \mainmagstep
+\fi
+% Instead of cmb10, you many want to use cmbx10.
+% cmbx10 is a prettier font on its own, but cmb10
+% looks better when embedded in a line with cmr10.
+\font\textbf=cmb10 scaled \mainmagstep
+\font\textit=cmti10 scaled \mainmagstep
+\font\textsl=cmsl10 scaled \mainmagstep
+\font\textsf=cmss10 scaled \mainmagstep
+\font\textsc=cmcsc10 scaled \mainmagstep
+\font\texti=cmmi10 scaled \mainmagstep
+\font\textsy=cmsy10 scaled \mainmagstep
+
+% A few fonts for @defun, etc.
+\font\defbf=cmbx10 scaled \magstep1 %was 1314
+\font\deftt=cmtt10 scaled \magstep1
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}
+
+% Fonts for indices and small examples.
+% We actually use the slanted font rather than the italic,
+% because texinfo normally uses the slanted fonts for that.
+% Do not make many font distinctions in general in the index, since they
+% aren't very useful.
+\font\ninett=cmtt9
+\font\indrm=cmr9
+\font\indit=cmsl9
+\let\indsl=\indit
+\let\indtt=\ninett
+\let\indsf=\indrm
+\let\indbf=\indrm
+\let\indsc=\indrm
+\font\indi=cmmi9
+\font\indsy=cmsy9
+
+% Fonts for headings
+\font\chaprm=cmbx12 scaled \magstep2
+\font\chapit=cmti12 scaled \magstep2
+\font\chapsl=cmsl12 scaled \magstep2
+\font\chaptt=cmtt12 scaled \magstep2
+\font\chapsf=cmss12 scaled \magstep2
+\let\chapbf=\chaprm
+\font\chapsc=cmcsc10 scaled\magstep3
+\font\chapi=cmmi12 scaled \magstep2
+\font\chapsy=cmsy10 scaled \magstep3
+
+\font\secrm=cmbx12 scaled \magstep1
+\font\secit=cmti12 scaled \magstep1
+\font\secsl=cmsl12 scaled \magstep1
+\font\sectt=cmtt12 scaled \magstep1
+\font\secsf=cmss12 scaled \magstep1
+\font\secbf=cmbx12 scaled \magstep1
+\font\secsc=cmcsc10 scaled\magstep2
+\font\seci=cmmi12 scaled \magstep1
+\font\secsy=cmsy10 scaled \magstep2
+
+% \font\ssecrm=cmbx10 scaled \magstep1 % This size an font looked bad.
+% \font\ssecit=cmti10 scaled \magstep1 % The letters were too crowded.
+% \font\ssecsl=cmsl10 scaled \magstep1
+% \font\ssectt=cmtt10 scaled \magstep1
+% \font\ssecsf=cmss10 scaled \magstep1
+
+%\font\ssecrm=cmb10 scaled 1315 % Note the use of cmb rather than cmbx.
+%\font\ssecit=cmti10 scaled 1315 % Also, the size is a little larger than
+%\font\ssecsl=cmsl10 scaled 1315 % being scaled magstep1.
+%\font\ssectt=cmtt10 scaled 1315
+%\font\ssecsf=cmss10 scaled 1315
+
+%\let\ssecbf=\ssecrm
+
+\font\ssecrm=cmbx12 scaled \magstephalf
+\font\ssecit=cmti12 scaled \magstephalf
+\font\ssecsl=cmsl12 scaled \magstephalf
+\font\ssectt=cmtt12 scaled \magstephalf
+\font\ssecsf=cmss12 scaled \magstephalf
+\font\ssecbf=cmbx12 scaled \magstephalf
+\font\ssecsc=cmcsc10 scaled \magstep1
+\font\sseci=cmmi12 scaled \magstephalf
+\font\ssecsy=cmsy10 scaled \magstep1
+% The smallcaps and symbol fonts should actually be scaled \magstep1.5,
+% but that is not a standard magnification.
+
+% Fonts for title page:
+\font\titlerm = cmbx12 scaled \magstep3
+\let\authorrm = \secrm
+
+% In order for the font changes to affect most math symbols and letters,
+% we have to define the \textfont of the standard families. Since
+% texinfo doesn't allow for producing subscripts and superscripts, we
+% don't bother to reset \scriptfont and \scriptscriptfont (which would
+% also require loading a lot more fonts).
+%
+\def\resetmathfonts{%
+ \textfont0 = \tenrm \textfont1 = \teni \textfont2 = \tensy
+ \textfont\itfam = \tenit \textfont\slfam = \tensl \textfont\bffam = \tenbf
+ \textfont\ttfam = \tentt \textfont\sffam = \tensf
+}
+
+
+% The font-changing commands redefine the meanings of \tenSTYLE, instead
+% of just \STYLE. We do this so that font changes will continue to work
+% in math mode, where it is the current \fam that is relevant in most
+% cases, not the current. Plain TeX does, for example,
+% \def\bf{\fam=\bffam \tenbf} By redefining \tenbf, we obviate the need
+% to redefine \bf itself.
+\def\textfonts{%
+ \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl
+ \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc
+ \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy
+ \resetmathfonts}
+\def\chapfonts{%
+ \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
+ \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
+ \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy
+ \resetmathfonts}
+\def\secfonts{%
+ \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl
+ \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc
+ \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy
+ \resetmathfonts}
+\def\subsecfonts{%
+ \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl
+ \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc
+ \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy
+ \resetmathfonts}
+\def\indexfonts{%
+ \let\tenrm=\indrm \let\tenit=\indit \let\tensl=\indsl
+ \let\tenbf=\indbf \let\tentt=\indtt \let\smallcaps=\indsc
+ \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy
+ \resetmathfonts}
+
+% Set up the default fonts, so we can use them for creating boxes.
+%
+\textfonts
+
+% Count depth in font-changes, for error checks
+\newcount\fontdepth \fontdepth=0
+
+% Fonts for short table of contents.
+\font\shortcontrm=cmr12
+\font\shortcontbf=cmbx12
+\font\shortcontsl=cmsl12
+
+%% Add scribe-like font environments, plus @l for inline lisp (usually sans
+%% serif) and @ii for TeX italic
+
+% \smartitalic{ARG} outputs arg in italics, followed by an italic correction
+% unless the following character is such as not to need one.
+\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else\/\fi\fi\fi}
+\def\smartitalic#1{{\sl #1}\futurelet\next\smartitalicx}
+
+\let\i=\smartitalic
+\let\var=\smartitalic
+\let\dfn=\smartitalic
+\let\emph=\smartitalic
+\let\cite=\smartitalic
+
+\def\b#1{{\bf #1}}
+\let\strong=\b
+
+% We can't just use \exhyphenpenalty, because that only has effect at
+% the end of a paragraph. Restore normal hyphenation at the end of the
+% group within which \nohyphenation is presumably called.
+%
+\def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation}
+\def\restorehyphenation{\hyphenchar\font = `- }
+
+\def\t#1{%
+ {\tt \nohyphenation \rawbackslash \frenchspacing #1}%
+ \null
+}
+\let\ttfont = \t
+%\def\samp #1{`{\tt \rawbackslash \frenchspacing #1}'\null}
+\def\samp #1{`\tclose{#1}'\null}
+\def\key #1{{\tt \nohyphenation \uppercase{#1}}\null}
+\def\ctrl #1{{\tt \rawbackslash \hat}#1}
+
+\let\file=\samp
+
+% @code is a modification of @t,
+% which makes spaces the same size as normal in the surrounding text.
+\def\tclose#1{%
+ {%
+ % Change normal interword space to be same as for the current font.
+ \spaceskip = \fontdimen2\font
+ %
+ % Switch to typewriter.
+ \tt
+ %
+ % But `\ ' produces the large typewriter interword space.
+ \def\ {{\spaceskip = 0pt{} }}%
+ %
+ % Turn off hyphenation.
+ \nohyphenation
+ %
+ \rawbackslash
+ \frenchspacing
+ #1%
+ }%
+ \null
+}
+
+% We *must* turn on hyphenation at `-' and `_' in \code.
+% Otherwise, it is too hard to avoid overful hboxes
+% in the Emacs manual, the Library manual, etc.
+
+% Unfortunately, TeX uses one parameter (\hyphenchar) to control
+% both hyphenation at - and hyphenation within words.
+% We must therefore turn them both off (\tclose does that)
+% and arrange explicitly to hyphenate an a dash.
+% -- rms.
+{
+\catcode`\-=\active
+\catcode`\_=\active
+\global\def\code{\begingroup \catcode`\-=\active \let-\codedash \catcode`\_=\active \let_\codeunder \codex}
+% The following is used by \doprintindex to insure that long function names
+% wrap around. It is necessary for - and _ to be active before the index is
+% read from the file, as \entry parses the arguments long before \code is
+% ever called. -- mycroft
+\global\def\indexbreaks{\catcode`\-=\active \let-\realdash \catcode`\_=\active \let_\realunder}
+}
+\def\realdash{-}
+\def\realunder{_}
+\def\codedash{-\discretionary{}{}{}}
+\def\codeunder{\normalunderscore\discretionary{}{}{}}
+\def\codex #1{\tclose{#1}\endgroup}
+
+%\let\exp=\tclose %Was temporary
+
+% @kbd is like @code, except that if the argument is just one @key command,
+% then @kbd has no effect.
+
+\def\xkey{\key}
+\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
+\ifx\one\xkey\ifx\threex\three \key{#2}%
+\else\tclose{\look}\fi
+\else\tclose{\look}\fi}
+
+% Typeset a dimension, e.g., `in' or `pt'. The only reason for the
+% argument is to make the input look right: @dmn{pt} instead of
+% @dmn{}pt.
+%
+\def\dmn#1{\thinspace #1}
+
+\def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par}
+
+\def\l#1{{\li #1}\null} %
+
+\def\r#1{{\rm #1}} % roman font
+% Use of \lowercase was suggested.
+\def\sc#1{{\smallcaps#1}} % smallcaps font
+\def\ii#1{{\it #1}} % italic font
+
+\message{page headings,}
+
+\newskip\titlepagetopglue \titlepagetopglue = 1.5in
+\newskip\titlepagebottomglue \titlepagebottomglue = 2pc
+
+% First the title page. Must do @settitle before @titlepage.
+\def\titlefont#1{{\titlerm #1}}
+
+\newif\ifseenauthor
+\newif\iffinishedtitlepage
+
+\def\shorttitlepage{\parsearg\shorttitlepagezzz}
+\def\shorttitlepagezzz #1{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}%
+ \endgroup\page\hbox{}\page}
+
+\def\titlepage{\begingroup \parindent=0pt \textfonts
+ \let\subtitlerm=\tenrm
+% I deinstalled the following change because \cmr12 is undefined.
+% This change was not in the ChangeLog anyway. --rms.
+% \let\subtitlerm=\cmr12
+ \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}%
+ %
+ \def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines}%
+ %
+ % Leave some space at the very top of the page.
+ \vglue\titlepagetopglue
+ %
+ % Now you can print the title using @title.
+ \def\title{\parsearg\titlezzz}%
+ \def\titlezzz##1{\leftline{\titlefont{##1}}
+ % print a rule at the page bottom also.
+ \finishedtitlepagefalse
+ \vskip4pt \hrule height 4pt width \hsize \vskip4pt}%
+ % No rule at page bottom unless we print one at the top with @title.
+ \finishedtitlepagetrue
+ %
+ % Now you can put text using @subtitle.
+ \def\subtitle{\parsearg\subtitlezzz}%
+ \def\subtitlezzz##1{{\subtitlefont \rightline{##1}}}%
+ %
+ % @author should come last, but may come many times.
+ \def\author{\parsearg\authorzzz}%
+ \def\authorzzz##1{\ifseenauthor\else\vskip 0pt plus 1filll\seenauthortrue\fi
+ {\authorfont \leftline{##1}}}%
+ %
+ % Most title ``pages'' are actually two pages long, with space
+ % at the top of the second. We don't want the ragged left on the second.
+ \let\oldpage = \page
+ \def\page{%
+ \iffinishedtitlepage\else
+ \finishtitlepage
+ \fi
+ \oldpage
+ \let\page = \oldpage
+ \hbox{}}%
+% \def\page{\oldpage \hbox{}}
+}
+
+\def\Etitlepage{%
+ \iffinishedtitlepage\else
+ \finishtitlepage
+ \fi
+ % It is important to do the page break before ending the group,
+ % because the headline and footline are only empty inside the group.
+ % If we use the new definition of \page, we always get a blank page
+ % after the title page, which we certainly don't want.
+ \oldpage
+ \endgroup
+ \HEADINGSon
+}
+
+\def\finishtitlepage{%
+ \vskip4pt \hrule height 2pt width \hsize
+ \vskip\titlepagebottomglue
+ \finishedtitlepagetrue
+}
+
+%%% Set up page headings and footings.
+
+\let\thispage=\folio
+
+\newtoks \evenheadline % Token sequence for heading line of even pages
+\newtoks \oddheadline % Token sequence for heading line of odd pages
+\newtoks \evenfootline % Token sequence for footing line of even pages
+\newtoks \oddfootline % Token sequence for footing line of odd pages
+
+% Now make Tex use those variables
+\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline
+ \else \the\evenheadline \fi}}
+\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline
+ \else \the\evenfootline \fi}\HEADINGShook}
+\let\HEADINGShook=\relax
+
+% Commands to set those variables.
+% For example, this is what @headings on does
+% @evenheading @thistitle|@thispage|@thischapter
+% @oddheading @thischapter|@thispage|@thistitle
+% @evenfooting @thisfile||
+% @oddfooting ||@thisfile
+
+\def\evenheading{\parsearg\evenheadingxxx}
+\def\oddheading{\parsearg\oddheadingxxx}
+\def\everyheading{\parsearg\everyheadingxxx}
+
+\def\evenfooting{\parsearg\evenfootingxxx}
+\def\oddfooting{\parsearg\oddfootingxxx}
+\def\everyfooting{\parsearg\everyfootingxxx}
+
+{\catcode`\@=0 %
+
+\gdef\evenheadingxxx #1{\evenheadingyyy #1@|@|@|@|\finish}
+\gdef\evenheadingyyy #1@|#2@|#3@|#4\finish{%
+\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\gdef\oddheadingxxx #1{\oddheadingyyy #1@|@|@|@|\finish}
+\gdef\oddheadingyyy #1@|#2@|#3@|#4\finish{%
+\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\gdef\everyheadingxxx #1{\everyheadingyyy #1@|@|@|@|\finish}
+\gdef\everyheadingyyy #1@|#2@|#3@|#4\finish{%
+\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}
+\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\gdef\evenfootingxxx #1{\evenfootingyyy #1@|@|@|@|\finish}
+\gdef\evenfootingyyy #1@|#2@|#3@|#4\finish{%
+\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\gdef\oddfootingxxx #1{\oddfootingyyy #1@|@|@|@|\finish}
+\gdef\oddfootingyyy #1@|#2@|#3@|#4\finish{%
+\global\oddfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\gdef\everyfootingxxx #1{\everyfootingyyy #1@|@|@|@|\finish}
+\gdef\everyfootingyyy #1@|#2@|#3@|#4\finish{%
+\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}
+\global\oddfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+%
+}% unbind the catcode of @.
+
+% @headings double turns headings on for double-sided printing.
+% @headings single turns headings on for single-sided printing.
+% @headings off turns them off.
+% @headings on same as @headings double, retained for compatibility.
+% @headings after turns on double-sided headings after this page.
+% @headings doubleafter turns on double-sided headings after this page.
+% @headings singleafter turns on single-sided headings after this page.
+% By default, they are off.
+
+\def\headings #1 {\csname HEADINGS#1\endcsname}
+
+\def\HEADINGSoff{
+\global\evenheadline={\hfil} \global\evenfootline={\hfil}
+\global\oddheadline={\hfil} \global\oddfootline={\hfil}}
+\HEADINGSoff
+% When we turn headings on, set the page number to 1.
+% For double-sided printing, put current file name in lower left corner,
+% chapter name on inside top of right hand pages, document
+% title on inside top of left hand pages, and page numbers on outside top
+% edge of all pages.
+\def\HEADINGSdouble{
+%\pagealignmacro
+\global\pageno=1
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\folio\hfil\thistitle}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+}
+% For single-sided printing, chapter title goes across top left of page,
+% page number on top right.
+\def\HEADINGSsingle{
+%\pagealignmacro
+\global\pageno=1
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\thischapter\hfil\folio}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+}
+\def\HEADINGSon{\HEADINGSdouble}
+
+\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex}
+\let\HEADINGSdoubleafter=\HEADINGSafter
+\def\HEADINGSdoublex{%
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\folio\hfil\thistitle}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+}
+
+\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}
+\def\HEADINGSsinglex{%
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\thischapter\hfil\folio}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+}
+
+% Subroutines used in generating headings
+% Produces Day Month Year style of output.
+\def\today{\number\day\space
+\ifcase\month\or
+January\or February\or March\or April\or May\or June\or
+July\or August\or September\or October\or November\or December\fi
+\space\number\year}
+
+% Use this if you want the Month Day, Year style of output.
+%\def\today{\ifcase\month\or
+%January\or February\or March\or April\or May\or June\or
+%July\or August\or September\or October\or November\or December\fi
+%\space\number\day, \number\year}
+
+% @settitle line... specifies the title of the document, for headings
+% It generates no output of its own
+
+\def\thistitle{No Title}
+\def\settitle{\parsearg\settitlezzz}
+\def\settitlezzz #1{\gdef\thistitle{#1}}
+
+\message{tables,}
+
+% @tabs -- simple alignment
+
+% These don't work. For one thing, \+ is defined as outer.
+% So these macros cannot even be defined.
+
+%\def\tabs{\parsearg\tabszzz}
+%\def\tabszzz #1{\settabs\+#1\cr}
+%\def\tabline{\parsearg\tablinezzz}
+%\def\tablinezzz #1{\+#1\cr}
+%\def\&{&}
+
+% Tables -- @table, @ftable, @vtable, @item(x), @kitem(x), @xitem(x).
+
+% default indentation of table text
+\newdimen\tableindent \tableindent=.8in
+% default indentation of @itemize and @enumerate text
+\newdimen\itemindent \itemindent=.3in
+% margin between end of table item and start of table text.
+\newdimen\itemmargin \itemmargin=.1in
+
+% used internally for \itemindent minus \itemmargin
+\newdimen\itemmax
+
+% Note @table, @vtable, and @vtable define @item, @itemx, etc., with
+% these defs.
+% They also define \itemindex
+% to index the item name in whatever manner is desired (perhaps none).
+
+\newif\ifitemxneedsnegativevskip
+
+\def\itemxpar{\par\ifitemxneedsnegativevskip\vskip-\parskip\nobreak\fi}
+
+\def\internalBitem{\smallbreak \parsearg\itemzzz}
+\def\internalBitemx{\itemxpar \parsearg\itemzzz}
+
+\def\internalBxitem "#1"{\def\xitemsubtopix{#1} \smallbreak \parsearg\xitemzzz}
+\def\internalBxitemx "#1"{\def\xitemsubtopix{#1} \itemxpar \parsearg\xitemzzz}
+
+\def\internalBkitem{\smallbreak \parsearg\kitemzzz}
+\def\internalBkitemx{\itemxpar \parsearg\kitemzzz}
+
+\def\kitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \lastfunction}}%
+ \itemzzz {#1}}
+
+\def\xitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \xitemsubtopic}}%
+ \itemzzz {#1}}
+
+\def\itemzzz #1{\begingroup %
+ \advance\hsize by -\rightskip
+ \advance\hsize by -\tableindent
+ \setbox0=\hbox{\itemfont{#1}}%
+ \itemindex{#1}%
+ \nobreak % This prevents a break before @itemx.
+ %
+ % Be sure we are not still in the middle of a paragraph.
+ %{\parskip = 0in
+ %\par
+ %}%
+ %
+ % If the item text does not fit in the space we have, put it on a line
+ % by itself, and do not allow a page break either before or after that
+ % line. We do not start a paragraph here because then if the next
+ % command is, e.g., @kindex, the whatsit would get put into the
+ % horizontal list on a line by itself, resulting in extra blank space.
+ \ifdim \wd0>\itemmax
+ %
+ % Make this a paragraph so we get the \parskip glue and wrapping,
+ % but leave it ragged-right.
+ \begingroup
+ \advance\leftskip by-\tableindent
+ \advance\hsize by\tableindent
+ \advance\rightskip by0pt plus1fil
+ \leavevmode\unhbox0\par
+ \endgroup
+ %
+ % We're going to be starting a paragraph, but we don't want the
+ % \parskip glue -- logically it's part of the @item we just started.
+ \nobreak \vskip-\parskip
+ %
+ % Stop a page break at the \parskip glue coming up. Unfortunately
+ % we can't prevent a possible page break at the following
+ % \baselineskip glue.
+ \nobreak
+ \endgroup
+ \itemxneedsnegativevskipfalse
+ \else
+ % The item text fits into the space. Start a paragraph, so that the
+ % following text (if any) will end up on the same line. Since that
+ % text will be indented by \tableindent, we make the item text be in
+ % a zero-width box.
+ \noindent
+ \rlap{\hskip -\tableindent\box0}\ignorespaces%
+ \endgroup%
+ \itemxneedsnegativevskiptrue%
+ \fi
+}
+
+\def\item{\errmessage{@item while not in a table}}
+\def\itemx{\errmessage{@itemx while not in a table}}
+\def\kitem{\errmessage{@kitem while not in a table}}
+\def\kitemx{\errmessage{@kitemx while not in a table}}
+\def\xitem{\errmessage{@xitem while not in a table}}
+\def\xitemx{\errmessage{@xitemx while not in a table}}
+
+%% Contains a kludge to get @end[description] to work
+\def\description{\tablez{\dontindex}{1}{}{}{}{}}
+
+\def\table{\begingroup\inENV\obeylines\obeyspaces\tablex}
+{\obeylines\obeyspaces%
+\gdef\tablex #1^^M{%
+\tabley\dontindex#1 \endtabley}}
+
+\def\ftable{\begingroup\inENV\obeylines\obeyspaces\ftablex}
+{\obeylines\obeyspaces%
+\gdef\ftablex #1^^M{%
+\tabley\fnitemindex#1 \endtabley
+\def\Eftable{\endgraf\afterenvbreak\endgroup}%
+\let\Etable=\relax}}
+
+\def\vtable{\begingroup\inENV\obeylines\obeyspaces\vtablex}
+{\obeylines\obeyspaces%
+\gdef\vtablex #1^^M{%
+\tabley\vritemindex#1 \endtabley
+\def\Evtable{\endgraf\afterenvbreak\endgroup}%
+\let\Etable=\relax}}
+
+\def\dontindex #1{}
+\def\fnitemindex #1{\doind {fn}{\code{#1}}}%
+\def\vritemindex #1{\doind {vr}{\code{#1}}}%
+
+{\obeyspaces %
+\gdef\tabley#1#2 #3 #4 #5 #6 #7\endtabley{\endgroup%
+\tablez{#1}{#2}{#3}{#4}{#5}{#6}}}
+
+\def\tablez #1#2#3#4#5#6{%
+\aboveenvbreak %
+\begingroup %
+\def\Edescription{\Etable}% Neccessary kludge.
+\let\itemindex=#1%
+\ifnum 0#3>0 \advance \leftskip by #3\mil \fi %
+\ifnum 0#4>0 \tableindent=#4\mil \fi %
+\ifnum 0#5>0 \advance \rightskip by #5\mil \fi %
+\def\itemfont{#2}%
+\itemmax=\tableindent %
+\advance \itemmax by -\itemmargin %
+\advance \leftskip by \tableindent %
+\exdentamount=\tableindent
+\parindent = 0pt
+\parskip = \smallskipamount
+\ifdim \parskip=0pt \parskip=2pt \fi%
+\def\Etable{\endgraf\afterenvbreak\endgroup}%
+\let\item = \internalBitem %
+\let\itemx = \internalBitemx %
+\let\kitem = \internalBkitem %
+\let\kitemx = \internalBkitemx %
+\let\xitem = \internalBxitem %
+\let\xitemx = \internalBxitemx %
+}
+
+% This is the counter used by @enumerate, which is really @itemize
+
+\newcount \itemno
+
+\def\itemize{\parsearg\itemizezzz}
+
+\def\itemizezzz #1{%
+ \begingroup % ended by the @end itemsize
+ \itemizey {#1}{\Eitemize}
+}
+
+\def\itemizey #1#2{%
+\aboveenvbreak %
+\itemmax=\itemindent %
+\advance \itemmax by -\itemmargin %
+\advance \leftskip by \itemindent %
+\exdentamount=\itemindent
+\parindent = 0pt %
+\parskip = \smallskipamount %
+\ifdim \parskip=0pt \parskip=2pt \fi%
+\def#2{\endgraf\afterenvbreak\endgroup}%
+\def\itemcontents{#1}%
+\let\item=\itemizeitem}
+
+% Set sfcode to normal for the chars that usually have another value.
+% These are `.?!:;,'
+\def\frenchspacing{\sfcode46=1000 \sfcode63=1000 \sfcode33=1000
+ \sfcode58=1000 \sfcode59=1000 \sfcode44=1000 }
+
+% \splitoff TOKENS\endmark defines \first to be the first token in
+% TOKENS, and \rest to be the remainder.
+%
+\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}%
+
+% Allow an optional argument of an uppercase letter, lowercase letter,
+% or number, to specify the first label in the enumerated list. No
+% argument is the same as `1'.
+%
+\def\enumerate{\parsearg\enumeratezzz}
+\def\enumeratezzz #1{\enumeratey #1 \endenumeratey}
+\def\enumeratey #1 #2\endenumeratey{%
+ \begingroup % ended by the @end enumerate
+ %
+ % If we were given no argument, pretend we were given `1'.
+ \def\thearg{#1}%
+ \ifx\thearg\empty \def\thearg{1}\fi
+ %
+ % Detect if the argument is a single token. If so, it might be a
+ % letter. Otherwise, the only valid thing it can be is a number.
+ % (We will always have one token, because of the test we just made.
+ % This is a good thing, since \splitoff doesn't work given nothing at
+ % all -- the first parameter is undelimited.)
+ \expandafter\splitoff\thearg\endmark
+ \ifx\rest\empty
+ % Only one token in the argument. It could still be anything.
+ % A ``lowercase letter'' is one whose \lccode is nonzero.
+ % An ``uppercase letter'' is one whose \lccode is both nonzero, and
+ % not equal to itself.
+ % Otherwise, we assume it's a number.
+ %
+ % We need the \relax at the end of the \ifnum lines to stop TeX from
+ % continuing to look for a <number>.
+ %
+ \ifnum\lccode\expandafter`\thearg=0\relax
+ \numericenumerate % a number (we hope)
+ \else
+ % It's a letter.
+ \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax
+ \lowercaseenumerate % lowercase letter
+ \else
+ \uppercaseenumerate % uppercase letter
+ \fi
+ \fi
+ \else
+ % Multiple tokens in the argument. We hope it's a number.
+ \numericenumerate
+ \fi
+}
+
+% An @enumerate whose labels are integers. The starting integer is
+% given in \thearg.
+%
+\def\numericenumerate{%
+ \itemno = \thearg
+ \startenumeration{\the\itemno}%
+}
+
+% The starting (lowercase) letter is in \thearg.
+\def\lowercaseenumerate{%
+ \itemno = \expandafter`\thearg
+ \startenumeration{%
+ % Be sure we're not beyond the end of the alphabet.
+ \ifnum\itemno=0
+ \errmessage{No more lowercase letters in @enumerate; get a bigger
+ alphabet}%
+ \fi
+ \char\lccode\itemno
+ }%
+}
+
+% The starting (uppercase) letter is in \thearg.
+\def\uppercaseenumerate{%
+ \itemno = \expandafter`\thearg
+ \startenumeration{%
+ % Be sure we're not beyond the end of the alphabet.
+ \ifnum\itemno=0
+ \errmessage{No more uppercase letters in @enumerate; get a bigger
+ alphabet}
+ \fi
+ \char\uccode\itemno
+ }%
+}
+
+% Call itemizey, adding a period to the first argument and supplying the
+% common last two arguments. Also subtract one from the initial value in
+% \itemno, since @item increments \itemno.
+%
+\def\startenumeration#1{%
+ \advance\itemno by -1
+ \itemizey{#1.}\Eenumerate\flushcr
+}
+
+% @alphaenumerate and @capsenumerate are abbreviations for giving an arg
+% to @enumerate.
+%
+\def\alphaenumerate{\enumerate{a}}
+\def\capsenumerate{\enumerate{A}}
+\def\Ealphaenumerate{\Eenumerate}
+\def\Ecapsenumerate{\Eenumerate}
+
+% Definition of @item while inside @itemize.
+
+\def\itemizeitem{%
+\advance\itemno by 1
+{\let\par=\endgraf \smallbreak}%
+\ifhmode \errmessage{\in hmode at itemizeitem}\fi
+{\parskip=0in \hskip 0pt
+\hbox to 0pt{\hss \itemcontents\hskip \itemmargin}%
+\vadjust{\penalty 1200}}%
+\flushcr}
+
+% @multitable macros
+% Amy Hendrickson, 8/18/94
+%
+% @multitable ... @endmultitable will make as many columns as desired.
+% Contents of each column will wrap at width given in preamble. Width
+% can be specified either with sample text given in a template line,
+% or in percent of \hsize, the current width of text on page.
+
+% Table can continue over pages but will only break between lines.
+
+% To make preamble:
+%
+% Either define widths of columns in terms of percent of \hsize:
+% @multitable @percentofhsize .2 .3 .5
+% @item ...
+%
+% Numbers following @percentofhsize are the percent of the total
+% current hsize to be used for each column. You may use as many
+% columns as desired.
+
+% Or use a template:
+% @multitable {Column 1 template} {Column 2 template} {Column 3 template}
+% @item ...
+% using the widest term desired in each column.
+
+
+% Each new table line starts with @item, each subsequent new column
+% starts with @tab. Empty columns may be produced by supplying @tab's
+% with nothing between them for as many times as empty columns are needed,
+% ie, @tab@tab@tab will produce two empty columns.
+
+% @item, @tab, @multicolumn or @endmulticolumn do not need to be on their
+% own lines, but it will not hurt if they are.
+
+% Sample multitable:
+
+% @multitable {Column 1 template} {Column 2 template} {Column 3 template}
+% @item first col stuff @tab second col stuff @tab third col
+% @item
+% first col stuff
+% @tab
+% second col stuff
+% @tab
+% third col
+% @item first col stuff @tab second col stuff
+% @tab Many paragraphs of text may be used in any column.
+%
+% They will wrap at the width determined by the template.
+% @item@tab@tab This will be in third column.
+% @endmultitable
+
+% Default dimensions may be reset by user.
+% @intableparskip will set vertical space between paragraphs in table.
+% @intableparindent will set paragraph indent in table.
+% @spacebetweencols will set horizontal space to be left between columns.
+% @spacebetweenlines will set vertical space to be left between lines.
+
+%%%%
+% Dimensions
+
+\newdimen\intableparskip
+\newdimen\intableparindent
+\newdimen\spacebetweencols
+\newdimen\spacebetweenlines
+\intableparskip=0pt
+\intableparindent=6pt
+\spacebetweencols=12pt
+\spacebetweenlines=12pt
+
+%%%%
+% Macros used to set up halign preamble:
+\let\endsetuptable\relax
+\def\xendsetuptable{\endsetuptable}
+\let\percentofhsize\relax
+\def\xpercentofhsize{\percentofhsize}
+\newif\ifsetpercent
+
+\newcount\colcount
+\def\setuptable#1{\def\firstarg{#1}%
+\ifx\firstarg\xendsetuptable\let\go\relax%
+\else
+ \ifx\firstarg\xpercentofhsize\global\setpercenttrue%
+ \else
+ \ifsetpercent
+ \if#1.\else%
+ \global\advance\colcount by1 %
+ \expandafter\xdef\csname col\the\colcount\endcsname{.#1\hsize}%
+ \fi
+ \else
+ \global\advance\colcount by1
+ \setbox0=\hbox{#1}%
+ \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}%
+ \fi%
+ \fi%
+ \let\go\setuptable%
+\fi\go}
+%%%%
+% multitable syntax
+\def\tab{&}
+
+%%%%
+% @multitable ... @endmultitable definitions:
+
+\def\multitable#1\item{\bgroup
+\let\item\cr
+\tolerance=9500
+\hbadness=9500
+\parskip=\intableparskip
+\parindent=\intableparindent
+\overfullrule=0pt
+\global\colcount=0\relax%
+\def\Emultitable{\global\setpercentfalse\global\everycr{}\cr\egroup\egroup}%
+ % To parse everything between @multitable and @item :
+\def\one{#1}\expandafter\setuptable\one\endsetuptable
+ % Need to reset this to 0 after \setuptable.
+\global\colcount=0\relax%
+ %
+ % This preamble sets up a generic column definition, which will
+ % be used as many times as user calls for columns.
+ % \vtop will set a single line and will also let text wrap and
+ % continue for many paragraphs if desired.
+\halign\bgroup&\global\advance\colcount by 1\relax%
+\vtop{\hsize=\expandafter\csname col\the\colcount\endcsname
+ % In order to keep entries from bumping into each other
+ % we will add a \leftskip of \spacebetweencols to all columns after
+ % the first one.
+ % If a template has been used, we will add \spacebetweencols
+ % to the width of each template entry.
+ % If user has set preamble in terms of percent of \hsize
+ % we will use that dimension as the width of the column, and
+ % the \leftskip will keep entries from bumping into each other.
+ % Table will start at left margin and final column will justify at
+ % right margin.
+\ifnum\colcount=1
+\else
+ \ifsetpercent
+ \else
+ % If user has <not> set preamble in terms of percent of \hsize
+ % we will advance \hsize by \spacebetweencols
+ \advance\hsize by \spacebetweencols
+ \fi
+ % In either case we will make \leftskip=\spacebetweencols:
+\leftskip=\spacebetweencols
+\fi
+\noindent##}\cr%
+ % \everycr will reset column counter, \colcount, at the end of
+ % each line. Every column entry will cause \colcount to advance by one.
+ % The table preamble
+ % looks at the current \colcount to find the correct column width.
+\global\everycr{\noalign{\nointerlineskip\vskip\spacebetweenlines
+\filbreak%% keeps underfull box messages off when table breaks over pages.
+\global\colcount=0\relax}}}
+
+\message{indexing,}
+% Index generation facilities
+
+% Define \newwrite to be identical to plain tex's \newwrite
+% except not \outer, so it can be used within \newindex.
+{\catcode`\@=11
+\gdef\newwrite{\alloc@7\write\chardef\sixt@@n}}
+
+% \newindex {foo} defines an index named foo.
+% It automatically defines \fooindex such that
+% \fooindex ...rest of line... puts an entry in the index foo.
+% It also defines \fooindfile to be the number of the output channel for
+% the file that accumulates this index. The file's extension is foo.
+% The name of an index should be no more than 2 characters long
+% for the sake of vms.
+
+\def\newindex #1{
+\expandafter\newwrite \csname#1indfile\endcsname% Define number for output file
+\openout \csname#1indfile\endcsname \jobname.#1 % Open the file
+\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex
+\noexpand\doindex {#1}}
+}
+
+% @defindex foo == \newindex{foo}
+
+\def\defindex{\parsearg\newindex}
+
+% Define @defcodeindex, like @defindex except put all entries in @code.
+
+\def\newcodeindex #1{
+\expandafter\newwrite \csname#1indfile\endcsname% Define number for output file
+\openout \csname#1indfile\endcsname \jobname.#1 % Open the file
+\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex
+\noexpand\docodeindex {#1}}
+}
+
+\def\defcodeindex{\parsearg\newcodeindex}
+
+% @synindex foo bar makes index foo feed into index bar.
+% Do this instead of @defindex foo if you don't want it as a separate index.
+\def\synindex #1 #2 {%
+\expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname
+\expandafter\let\csname#1indfile\endcsname=\synindexfoo
+\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex
+\noexpand\doindex {#2}}%
+}
+
+% @syncodeindex foo bar similar, but put all entries made for index foo
+% inside @code.
+\def\syncodeindex #1 #2 {%
+\expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname
+\expandafter\let\csname#1indfile\endcsname=\synindexfoo
+\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex
+\noexpand\docodeindex {#2}}%
+}
+
+% Define \doindex, the driver for all \fooindex macros.
+% Argument #1 is generated by the calling \fooindex macro,
+% and it is "foo", the name of the index.
+
+% \doindex just uses \parsearg; it calls \doind for the actual work.
+% This is because \doind is more useful to call from other macros.
+
+% There is also \dosubind {index}{topic}{subtopic}
+% which makes an entry in a two-level index such as the operation index.
+
+\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer}
+\def\singleindexer #1{\doind{\indexname}{#1}}
+
+% like the previous two, but they put @code around the argument.
+\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}
+\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
+
+\def\indexdummies{%
+% Take care of the plain tex accent commands.
+\def\"{\realbackslash "}%
+\def\`{\realbackslash `}%
+\def\'{\realbackslash '}%
+\def\^{\realbackslash ^}%
+\def\~{\realbackslash ~}%
+\def\={\realbackslash =}%
+\def\b{\realbackslash b}%
+\def\c{\realbackslash c}%
+\def\d{\realbackslash d}%
+\def\u{\realbackslash u}%
+\def\v{\realbackslash v}%
+\def\H{\realbackslash H}%
+% Take care of the plain tex special European modified letters.
+\def\oe{\realbackslash oe}%
+\def\ae{\realbackslash ae}%
+\def\aa{\realbackslash aa}%
+\def\OE{\realbackslash OE}%
+\def\AE{\realbackslash AE}%
+\def\AA{\realbackslash AA}%
+\def\o{\realbackslash o}%
+\def\O{\realbackslash O}%
+\def\l{\realbackslash l}%
+\def\L{\realbackslash L}%
+\def\ss{\realbackslash ss}%
+% Take care of texinfo commands likely to appear in an index entry.
+\def\_{{\realbackslash _}}%
+\def\w{\realbackslash w }%
+\def\bf{\realbackslash bf }%
+\def\rm{\realbackslash rm }%
+\def\sl{\realbackslash sl }%
+\def\sf{\realbackslash sf}%
+\def\tt{\realbackslash tt}%
+\def\gtr{\realbackslash gtr}%
+\def\less{\realbackslash less}%
+\def\hat{\realbackslash hat}%
+\def\char{\realbackslash char}%
+\def\TeX{\realbackslash TeX}%
+\def\dots{\realbackslash dots }%
+\def\copyright{\realbackslash copyright }%
+\def\tclose##1{\realbackslash tclose {##1}}%
+\def\code##1{\realbackslash code {##1}}%
+\def\samp##1{\realbackslash samp {##1}}%
+\def\t##1{\realbackslash r {##1}}%
+\def\r##1{\realbackslash r {##1}}%
+\def\i##1{\realbackslash i {##1}}%
+\def\b##1{\realbackslash b {##1}}%
+\def\cite##1{\realbackslash cite {##1}}%
+\def\key##1{\realbackslash key {##1}}%
+\def\file##1{\realbackslash file {##1}}%
+\def\var##1{\realbackslash var {##1}}%
+\def\kbd##1{\realbackslash kbd {##1}}%
+\def\dfn##1{\realbackslash dfn {##1}}%
+\def\emph##1{\realbackslash emph {##1}}%
+}
+
+% \indexnofonts no-ops all font-change commands.
+% This is used when outputting the strings to sort the index by.
+\def\indexdummyfont#1{#1}
+\def\indexdummytex{TeX}
+\def\indexdummydots{...}
+
+\def\indexnofonts{%
+% Just ignore accents.
+\let\"=\indexdummyfont
+\let\`=\indexdummyfont
+\let\'=\indexdummyfont
+\let\^=\indexdummyfont
+\let\~=\indexdummyfont
+\let\==\indexdummyfont
+\let\b=\indexdummyfont
+\let\c=\indexdummyfont
+\let\d=\indexdummyfont
+\let\u=\indexdummyfont
+\let\v=\indexdummyfont
+\let\H=\indexdummyfont
+% Take care of the plain tex special European modified letters.
+\def\oe{oe}%
+\def\ae{ae}%
+\def\aa{aa}%
+\def\OE{OE}%
+\def\AE{AE}%
+\def\AA{AA}%
+\def\o{o}%
+\def\O{O}%
+\def\l{l}%
+\def\L{L}%
+\def\ss{ss}%
+\let\w=\indexdummyfont
+\let\t=\indexdummyfont
+\let\r=\indexdummyfont
+\let\i=\indexdummyfont
+\let\b=\indexdummyfont
+\let\emph=\indexdummyfont
+\let\strong=\indexdummyfont
+\let\cite=\indexdummyfont
+\let\sc=\indexdummyfont
+%Don't no-op \tt, since it isn't a user-level command
+% and is used in the definitions of the active chars like <, >, |...
+%\let\tt=\indexdummyfont
+\let\tclose=\indexdummyfont
+\let\code=\indexdummyfont
+\let\file=\indexdummyfont
+\let\samp=\indexdummyfont
+\let\kbd=\indexdummyfont
+\let\key=\indexdummyfont
+\let\var=\indexdummyfont
+\let\TeX=\indexdummytex
+\let\dots=\indexdummydots
+}
+
+% To define \realbackslash, we must make \ not be an escape.
+% We must first make another character (@) an escape
+% so we do not become unable to do a definition.
+
+{\catcode`\@=0 \catcode`\\=\other
+@gdef@realbackslash{\}}
+
+\let\indexbackslash=0 %overridden during \printindex.
+
+\def\doind #1#2{%
+{\count10=\lastpenalty %
+{\indexdummies % Must do this here, since \bf, etc expand at this stage
+\escapechar=`\\%
+{\let\folio=0% Expand all macros now EXCEPT \folio
+\def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now
+% so it will be output as is; and it will print as backslash in the indx.
+%
+% Now process the index-string once, with all font commands turned off,
+% to get the string to sort the index by.
+{\indexnofonts
+\xdef\temp1{#2}%
+}%
+% Now produce the complete index entry. We process the index-string again,
+% this time with font commands expanded, to get what to print in the index.
+\edef\temp{%
+\write \csname#1indfile\endcsname{%
+\realbackslash entry {\temp1}{\folio}{#2}}}%
+\temp }%
+}\penalty\count10}}
+
+\def\dosubind #1#2#3{%
+{\count10=\lastpenalty %
+{\indexdummies % Must do this here, since \bf, etc expand at this stage
+\escapechar=`\\%
+{\let\folio=0%
+\def\rawbackslashxx{\indexbackslash}%
+%
+% Now process the index-string once, with all font commands turned off,
+% to get the string to sort the index by.
+{\indexnofonts
+\xdef\temp1{#2 #3}%
+}%
+% Now produce the complete index entry. We process the index-string again,
+% this time with font commands expanded, to get what to print in the index.
+\edef\temp{%
+\write \csname#1indfile\endcsname{%
+\realbackslash entry {\temp1}{\folio}{#2}{#3}}}%
+\temp }%
+}\penalty\count10}}
+
+% The index entry written in the file actually looks like
+% \entry {sortstring}{page}{topic}
+% or
+% \entry {sortstring}{page}{topic}{subtopic}
+% The texindex program reads in these files and writes files
+% containing these kinds of lines:
+% \initial {c}
+% before the first topic whose initial is c
+% \entry {topic}{pagelist}
+% for a topic that is used without subtopics
+% \primary {topic}
+% for the beginning of a topic that is used with subtopics
+% \secondary {subtopic}{pagelist}
+% for each subtopic.
+
+% Define the user-accessible indexing commands
+% @findex, @vindex, @kindex, @cindex.
+
+\def\findex {\fnindex}
+\def\kindex {\kyindex}
+\def\cindex {\cpindex}
+\def\vindex {\vrindex}
+\def\tindex {\tpindex}
+\def\pindex {\pgindex}
+
+\def\cindexsub {\begingroup\obeylines\cindexsub}
+{\obeylines %
+\gdef\cindexsub "#1" #2^^M{\endgroup %
+\dosubind{cp}{#2}{#1}}}
+
+% Define the macros used in formatting output of the sorted index material.
+
+% This is what you call to cause a particular index to get printed.
+% Write
+% @unnumbered Function Index
+% @printindex fn
+
+\def\printindex{\parsearg\doprintindex}
+
+\def\doprintindex#1{%
+ \tex
+ \dobreak \chapheadingskip {10000}
+ \catcode`\%=\other\catcode`\&=\other\catcode`\#=\other
+ \catcode`\$=\other
+ \catcode`\~=\other
+ \indexbreaks
+ %
+ % The following don't help, since the chars were translated
+ % when the raw index was written, and their fonts were discarded
+ % due to \indexnofonts.
+ %\catcode`\"=\active
+ %\catcode`\^=\active
+ %\catcode`\_=\active
+ %\catcode`\|=\active
+ %\catcode`\<=\active
+ %\catcode`\>=\active
+ % %
+ \def\indexbackslash{\rawbackslashxx}
+ \indexfonts\rm \tolerance=9500 \advance\baselineskip -1pt
+ \begindoublecolumns
+ %
+ % See if the index file exists and is nonempty.
+ \openin 1 \jobname.#1s
+ \ifeof 1
+ % \enddoublecolumns gets confused if there is no text in the index,
+ % and it loses the chapter title and the aux file entries for the
+ % index. The easiest way to prevent this problem is to make sure
+ % there is some text.
+ (Index is nonexistent)
+ \else
+ %
+ % If the index file exists but is empty, then \openin leaves \ifeof
+ % false. We have to make TeX try to read something from the file, so
+ % it can discover if there is anything in it.
+ \read 1 to \temp
+ \ifeof 1
+ (Index is empty)
+ \else
+ \input \jobname.#1s
+ \fi
+ \fi
+ \closein 1
+ \enddoublecolumns
+ \Etex
+}
+
+% These macros are used by the sorted index file itself.
+% Change them to control the appearance of the index.
+
+% Same as \bigskipamount except no shrink.
+% \balancecolumns gets confused if there is any shrink.
+\newskip\initialskipamount \initialskipamount 12pt plus4pt
+
+\def\initial #1{%
+{\let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt
+\ifdim\lastskip<\initialskipamount
+\removelastskip \penalty-200 \vskip \initialskipamount\fi
+\line{\secbf#1\hfill}\kern 2pt\penalty10000}}
+
+% This typesets a paragraph consisting of #1, dot leaders, and then #2
+% flush to the right margin. It is used for index and table of contents
+% entries. The paragraph is indented by \leftskip.
+%
+\def\entry #1#2{\begingroup
+ %
+ % Start a new paragraph if necessary, so our assignments below can't
+ % affect previous text.
+ \par
+ %
+ % Do not fill out the last line with white space.
+ \parfillskip = 0in
+ %
+ % No extra space above this paragraph.
+ \parskip = 0in
+ %
+ % Do not prefer a separate line ending with a hyphen to fewer lines.
+ \finalhyphendemerits = 0
+ %
+ % \hangindent is only relevant when the entry text and page number
+ % don't both fit on one line. In that case, bob suggests starting the
+ % dots pretty far over on the line. Unfortunately, a large
+ % indentation looks wrong when the entry text itself is broken across
+ % lines. So we use a small indentation and put up with long leaders.
+ %
+ % \hangafter is reset to 1 (which is the value we want) at the start
+ % of each paragraph, so we need not do anything with that.
+ \hangindent=2em
+ %
+ % When the entry text needs to be broken, just fill out the first line
+ % with blank space.
+ \rightskip = 0pt plus1fil
+ %
+ % Start a ``paragraph'' for the index entry so the line breaking
+ % parameters we've set above will have an effect.
+ \noindent
+ %
+ % Insert the text of the index entry. TeX will do line-breaking on it.
+ #1%
+ % The following is kluged to not output a line of dots in the index if
+ % there are no page numbers. The next person who breaks this will be
+ % cursed by a Unix daemon.
+ \def\tempa{{\rm }}%
+ \def\tempb{#2}%
+ \edef\tempc{\tempa}%
+ \edef\tempd{\tempb}%
+ \ifx\tempc\tempd\ \else%
+ %
+ % If we must, put the page number on a line of its own, and fill out
+ % this line with blank space. (The \hfil is overwhelmed with the
+ % fill leaders glue in \indexdotfill if the page number does fit.)
+ \hfil\penalty50
+ \null\nobreak\indexdotfill % Have leaders before the page number.
+ %
+ % The `\ ' here is removed by the implicit \unskip that TeX does as
+ % part of (the primitive) \par. Without it, a spurious underfull
+ % \hbox ensues.
+ \ #2% The page number ends the paragraph.
+ \fi%
+ \par
+\endgroup}
+
+% Like \dotfill except takes at least 1 em.
+\def\indexdotfill{\cleaders
+ \hbox{$\mathsurround=0pt \mkern1.5mu ${\it .}$ \mkern1.5mu$}\hskip 1em plus 1fill}
+
+\def\primary #1{\line{#1\hfil}}
+
+\newskip\secondaryindent \secondaryindent=0.5cm
+
+\def\secondary #1#2{
+{\parfillskip=0in \parskip=0in
+\hangindent =1in \hangafter=1
+\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\par
+}}
+
+%% Define two-column mode, which is used in indexes.
+%% Adapted from the TeXbook, page 416.
+\catcode `\@=11
+
+\newbox\partialpage
+
+\newdimen\doublecolumnhsize
+
+\def\begindoublecolumns{\begingroup
+ % Grab any single-column material above us.
+ \output = {\global\setbox\partialpage
+ =\vbox{\unvbox255\kern -\topskip \kern \baselineskip}}%
+ \eject
+ %
+ % Now switch to the double-column output routine.
+ \output={\doublecolumnout}%
+ %
+ % Change the page size parameters. We could do this once outside this
+ % routine, in each of @smallbook, @afourpaper, and the default 8.5x11
+ % format, but then we repeat the same computation. Repeating a couple
+ % of assignments once per index is clearly meaningless for the
+ % execution time, so we may as well do it once.
+ %
+ % First we halve the line length, less a little for the gutter between
+ % the columns. We compute the gutter based on the line length, so it
+ % changes automatically with the paper format. The magic constant
+ % below is chosen so that the gutter has the same value (well, +- <
+ % 1pt) as it did when we hard-coded it.
+ %
+ % We put the result in a separate register, \doublecolumhsize, so we
+ % can restore it in \pagesofar, after \hsize itself has (potentially)
+ % been clobbered.
+ %
+ \doublecolumnhsize = \hsize
+ \advance\doublecolumnhsize by -.04154\hsize
+ \divide\doublecolumnhsize by 2
+ \hsize = \doublecolumnhsize
+ %
+ % Double the \vsize as well. (We don't need a separate register here,
+ % since nobody clobbers \vsize.)
+ \vsize = 2\vsize
+ \doublecolumnpagegoal
+}
+
+\def\enddoublecolumns{\eject \endgroup \pagegoal=\vsize \unvbox\partialpage}
+
+\def\doublecolumnsplit{\splittopskip=\topskip \splitmaxdepth=\maxdepth
+ \global\dimen@=\pageheight \global\advance\dimen@ by-\ht\partialpage
+ \global\setbox1=\vsplit255 to\dimen@ \global\setbox0=\vbox{\unvbox1}
+ \global\setbox3=\vsplit255 to\dimen@ \global\setbox2=\vbox{\unvbox3}
+ \ifdim\ht0>\dimen@ \setbox255=\vbox{\unvbox0\unvbox2} \global\setbox255=\copy5 \fi
+ \ifdim\ht2>\dimen@ \setbox255=\vbox{\unvbox0\unvbox2} \global\setbox255=\copy5 \fi
+}
+\def\doublecolumnpagegoal{%
+ \dimen@=\vsize \advance\dimen@ by-2\ht\partialpage \global\pagegoal=\dimen@
+}
+\def\pagesofar{\unvbox\partialpage %
+ \hsize=\doublecolumnhsize % have to restore this since output routine
+ \wd0=\hsize \wd2=\hsize \hbox to\pagewidth{\box0\hfil\box2}}
+\def\doublecolumnout{%
+ \setbox5=\copy255
+ {\vbadness=10000 \doublecolumnsplit}
+ \ifvbox255
+ \setbox0=\vtop to\dimen@{\unvbox0}
+ \setbox2=\vtop to\dimen@{\unvbox2}
+ \onepageout\pagesofar \unvbox255 \penalty\outputpenalty
+ \else
+ \setbox0=\vbox{\unvbox5}
+ \ifvbox0
+ \dimen@=\ht0 \advance\dimen@ by\topskip \advance\dimen@ by-\baselineskip
+ \divide\dimen@ by2 \splittopskip=\topskip \splitmaxdepth=\maxdepth
+ {\vbadness=10000
+ \loop \global\setbox5=\copy0
+ \setbox1=\vsplit5 to\dimen@
+ \setbox3=\vsplit5 to\dimen@
+ \ifvbox5 \global\advance\dimen@ by1pt \repeat
+ \setbox0=\vbox to\dimen@{\unvbox1}
+ \setbox2=\vbox to\dimen@{\unvbox3}
+ \global\setbox\partialpage=\vbox{\pagesofar}
+ \doublecolumnpagegoal
+ }
+ \fi
+ \fi
+}
+
+\catcode `\@=\other
+\message{sectioning,}
+% Define chapters, sections, etc.
+
+\newcount \chapno
+\newcount \secno \secno=0
+\newcount \subsecno \subsecno=0
+\newcount \subsubsecno \subsubsecno=0
+
+% This counter is funny since it counts through charcodes of letters A, B, ...
+\newcount \appendixno \appendixno = `\@
+\def\appendixletter{\char\the\appendixno}
+
+\newwrite \contentsfile
+% This is called from \setfilename.
+\def\opencontents{\openout \contentsfile = \jobname.toc}
+
+% Each @chapter defines this as the name of the chapter.
+% page headings and footings can use it. @section does likewise
+
+\def\thischapter{} \def\thissection{}
+\def\seccheck#1{\if \pageno<0 %
+\errmessage{@#1 not allowed after generating table of contents}\fi
+%
+}
+
+\def\chapternofonts{%
+\let\rawbackslash=\relax%
+\let\frenchspacing=\relax%
+\def\result{\realbackslash result}
+\def\equiv{\realbackslash equiv}
+\def\expansion{\realbackslash expansion}
+\def\print{\realbackslash print}
+\def\TeX{\realbackslash TeX}
+\def\dots{\realbackslash dots}
+\def\copyright{\realbackslash copyright}
+\def\tt{\realbackslash tt}
+\def\bf{\realbackslash bf }
+\def\w{\realbackslash w}
+\def\less{\realbackslash less}
+\def\gtr{\realbackslash gtr}
+\def\hat{\realbackslash hat}
+\def\char{\realbackslash char}
+\def\tclose##1{\realbackslash tclose {##1}}
+\def\code##1{\realbackslash code {##1}}
+\def\samp##1{\realbackslash samp {##1}}
+\def\r##1{\realbackslash r {##1}}
+\def\b##1{\realbackslash b {##1}}
+\def\key##1{\realbackslash key {##1}}
+\def\file##1{\realbackslash file {##1}}
+\def\kbd##1{\realbackslash kbd {##1}}
+% These are redefined because @smartitalic wouldn't work inside xdef.
+\def\i##1{\realbackslash i {##1}}
+\def\cite##1{\realbackslash cite {##1}}
+\def\var##1{\realbackslash var {##1}}
+\def\emph##1{\realbackslash emph {##1}}
+\def\dfn##1{\realbackslash dfn {##1}}
+}
+
+\newcount\absseclevel % used to calculate proper heading level
+\newcount\secbase\secbase=0 % @raise/lowersections modify this count
+
+% @raisesections: treat @section as chapter, @subsection as section, etc.
+\def\raisesections{\global\advance\secbase by -1}
+\let\up=\raisesections % original BFox name
+
+% @lowersections: treat @chapter as section, @section as subsection, etc.
+\def\lowersections{\global\advance\secbase by 1}
+\let\down=\lowersections % original BFox name
+
+% Choose a numbered-heading macro
+% #1 is heading level if unmodified by @raisesections or @lowersections
+% #2 is text for heading
+\def\numhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1
+\ifcase\absseclevel
+ \chapterzzz{#2}
+\or
+ \seczzz{#2}
+\or
+ \numberedsubseczzz{#2}
+\or
+ \numberedsubsubseczzz{#2}
+\else
+ \ifnum \absseclevel<0
+ \chapterzzz{#2}
+ \else
+ \numberedsubsubseczzz{#2}
+ \fi
+\fi
+}
+
+% like \numhead, but chooses appendix heading levels
+\def\apphead#1#2{\absseclevel=\secbase\advance\absseclevel by #1
+\ifcase\absseclevel
+ \appendixzzz{#2}
+\or
+ \appendixsectionzzz{#2}
+\or
+ \appendixsubseczzz{#2}
+\or
+ \appendixsubsubseczzz{#2}
+\else
+ \ifnum \absseclevel<0
+ \appendixzzz{#2}
+ \else
+ \appendixsubsubseczzz{#2}
+ \fi
+\fi
+}
+
+% like \numhead, but chooses numberless heading levels
+\def\unnmhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1
+\ifcase\absseclevel
+ \unnumberedzzz{#2}
+\or
+ \unnumberedseczzz{#2}
+\or
+ \unnumberedsubseczzz{#2}
+\or
+ \unnumberedsubsubseczzz{#2}
+\else
+ \ifnum \absseclevel<0
+ \unnumberedzzz{#2}
+ \else
+ \unnumberedsubsubseczzz{#2}
+ \fi
+\fi
+}
+
+
+\def\thischaptername{No Chapter Title}
+\outer\def\chapter{\parsearg\chapteryyy}
+\def\chapteryyy #1{\numhead0{#1}} % normally numhead0 calls chapterzzz
+\def\chapterzzz #1{\seccheck{chapter}%
+\secno=0 \subsecno=0 \subsubsecno=0
+\global\advance \chapno by 1 \message{Chapter \the\chapno}%
+\chapmacro {#1}{\the\chapno}%
+\gdef\thissection{#1}%
+\gdef\thischaptername{#1}%
+% We don't substitute the actual chapter name into \thischapter
+% because we don't want its macros evaluated now.
+\xdef\thischapter{\putwordChapter{} \the\chapno: \noexpand\thischaptername}%
+{\chapternofonts%
+\edef\temp{{\realbackslash chapentry {#1}{\the\chapno}{\noexpand\folio}}}%
+\escapechar=`\\%
+\write \contentsfile \temp %
+\donoderef %
+\global\let\section = \numberedsec
+\global\let\subsection = \numberedsubsec
+\global\let\subsubsection = \numberedsubsubsec
+}}
+
+\outer\def\appendix{\parsearg\appendixyyy}
+\def\appendixyyy #1{\apphead0{#1}} % normally apphead0 calls appendixzzz
+\def\appendixzzz #1{\seccheck{appendix}%
+\secno=0 \subsecno=0 \subsubsecno=0
+\global\advance \appendixno by 1 \message{Appendix \appendixletter}%
+\chapmacro {#1}{\putwordAppendix{} \appendixletter}%
+\gdef\thissection{#1}%
+\gdef\thischaptername{#1}%
+\xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}%
+{\chapternofonts%
+\edef\temp{{\realbackslash chapentry
+ {#1}{\putwordAppendix{} \appendixletter}{\noexpand\folio}}}%
+\escapechar=`\\%
+\write \contentsfile \temp %
+\appendixnoderef %
+\global\let\section = \appendixsec
+\global\let\subsection = \appendixsubsec
+\global\let\subsubsection = \appendixsubsubsec
+}}
+
+\outer\def\top{\parsearg\unnumberedyyy}
+\outer\def\unnumbered{\parsearg\unnumberedyyy}
+\def\unnumberedyyy #1{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz
+\def\unnumberedzzz #1{\seccheck{unnumbered}%
+\secno=0 \subsecno=0 \subsubsecno=0
+%
+% This used to be simply \message{#1}, but TeX fully expands the
+% argument to \message. Therefore, if #1 contained @-commands, TeX
+% expanded them. For example, in `@unnumbered The @cite{Book}', TeX
+% expanded @cite (which turns out to cause errors because \cite is meant
+% to be executed, not expanded).
+%
+% Anyway, we don't want the fully-expanded definition of @cite to appear
+% as a result of the \message, we just want `@cite' itself. We use
+% \the<toks register> to achieve this: TeX expands \the<toks> only once,
+% simply yielding the contents of the <toks register>.
+\toks0 = {#1}\message{(\the\toks0)}%
+%
+\unnumbchapmacro {#1}%
+\gdef\thischapter{#1}\gdef\thissection{#1}%
+{\chapternofonts%
+\edef\temp{{\realbackslash unnumbchapentry {#1}{\noexpand\folio}}}%
+\escapechar=`\\%
+\write \contentsfile \temp %
+\unnumbnoderef %
+\global\let\section = \unnumberedsec
+\global\let\subsection = \unnumberedsubsec
+\global\let\subsubsection = \unnumberedsubsubsec
+}}
+
+\outer\def\numberedsec{\parsearg\secyyy}
+\def\secyyy #1{\numhead1{#1}} % normally calls seczzz
+\def\seczzz #1{\seccheck{section}%
+\subsecno=0 \subsubsecno=0 \global\advance \secno by 1 %
+\gdef\thissection{#1}\secheading {#1}{\the\chapno}{\the\secno}%
+{\chapternofonts%
+\edef\temp{{\realbackslash secentry %
+{#1}{\the\chapno}{\the\secno}{\noexpand\folio}}}%
+\escapechar=`\\%
+\write \contentsfile \temp %
+\donoderef %
+\penalty 10000 %
+}}
+
+\outer\def\appenixsection{\parsearg\appendixsecyyy}
+\outer\def\appendixsec{\parsearg\appendixsecyyy}
+\def\appendixsecyyy #1{\apphead1{#1}} % normally calls appendixsectionzzz
+\def\appendixsectionzzz #1{\seccheck{appendixsection}%
+\subsecno=0 \subsubsecno=0 \global\advance \secno by 1 %
+\gdef\thissection{#1}\secheading {#1}{\appendixletter}{\the\secno}%
+{\chapternofonts%
+\edef\temp{{\realbackslash secentry %
+{#1}{\appendixletter}{\the\secno}{\noexpand\folio}}}%
+\escapechar=`\\%
+\write \contentsfile \temp %
+\appendixnoderef %
+\penalty 10000 %
+}}
+
+\outer\def\unnumberedsec{\parsearg\unnumberedsecyyy}
+\def\unnumberedsecyyy #1{\unnmhead1{#1}} % normally calls unnumberedseczzz
+\def\unnumberedseczzz #1{\seccheck{unnumberedsec}%
+\plainsecheading {#1}\gdef\thissection{#1}%
+{\chapternofonts%
+\edef\temp{{\realbackslash unnumbsecentry{#1}{\noexpand\folio}}}%
+\escapechar=`\\%
+\write \contentsfile \temp %
+\unnumbnoderef %
+\penalty 10000 %
+}}
+
+\outer\def\numberedsubsec{\parsearg\numberedsubsecyyy}
+\def\numberedsubsecyyy #1{\numhead2{#1}} % normally calls numberedsubseczzz
+\def\numberedsubseczzz #1{\seccheck{subsection}%
+\gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 %
+\subsecheading {#1}{\the\chapno}{\the\secno}{\the\subsecno}%
+{\chapternofonts%
+\edef\temp{{\realbackslash subsecentry %
+{#1}{\the\chapno}{\the\secno}{\the\subsecno}{\noexpand\folio}}}%
+\escapechar=`\\%
+\write \contentsfile \temp %
+\donoderef %
+\penalty 10000 %
+}}
+
+\outer\def\appendixsubsec{\parsearg\appendixsubsecyyy}
+\def\appendixsubsecyyy #1{\apphead2{#1}} % normally calls appendixsubseczzz
+\def\appendixsubseczzz #1{\seccheck{appendixsubsec}%
+\gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 %
+\subsecheading {#1}{\appendixletter}{\the\secno}{\the\subsecno}%
+{\chapternofonts%
+\edef\temp{{\realbackslash subsecentry %
+{#1}{\appendixletter}{\the\secno}{\the\subsecno}{\noexpand\folio}}}%
+\escapechar=`\\%
+\write \contentsfile \temp %
+\appendixnoderef %
+\penalty 10000 %
+}}
+
+\outer\def\unnumberedsubsec{\parsearg\unnumberedsubsecyyy}
+\def\unnumberedsubsecyyy #1{\unnmhead2{#1}} %normally calls unnumberedsubseczzz
+\def\unnumberedsubseczzz #1{\seccheck{unnumberedsubsec}%
+\plainsecheading {#1}\gdef\thissection{#1}%
+{\chapternofonts%
+\edef\temp{{\realbackslash unnumbsubsecentry{#1}{\noexpand\folio}}}%
+\escapechar=`\\%
+\write \contentsfile \temp %
+\unnumbnoderef %
+\penalty 10000 %
+}}
+
+\outer\def\numberedsubsubsec{\parsearg\numberedsubsubsecyyy}
+\def\numberedsubsubsecyyy #1{\numhead3{#1}} % normally numberedsubsubseczzz
+\def\numberedsubsubseczzz #1{\seccheck{subsubsection}%
+\gdef\thissection{#1}\global\advance \subsubsecno by 1 %
+\subsubsecheading {#1}
+ {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}%
+{\chapternofonts%
+\edef\temp{{\realbackslash subsubsecentry %
+ {#1}
+ {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}
+ {\noexpand\folio}}}%
+\escapechar=`\\%
+\write \contentsfile \temp %
+\donoderef %
+\penalty 10000 %
+}}
+
+\outer\def\appendixsubsubsec{\parsearg\appendixsubsubsecyyy}
+\def\appendixsubsubsecyyy #1{\apphead3{#1}} % normally appendixsubsubseczzz
+\def\appendixsubsubseczzz #1{\seccheck{appendixsubsubsec}%
+\gdef\thissection{#1}\global\advance \subsubsecno by 1 %
+\subsubsecheading {#1}
+ {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}%
+{\chapternofonts%
+\edef\temp{{\realbackslash subsubsecentry{#1}%
+ {\appendixletter}
+ {\the\secno}{\the\subsecno}{\the\subsubsecno}{\noexpand\folio}}}%
+\escapechar=`\\%
+\write \contentsfile \temp %
+\appendixnoderef %
+\penalty 10000 %
+}}
+
+\outer\def\unnumberedsubsubsec{\parsearg\unnumberedsubsubsecyyy}
+\def\unnumberedsubsubsecyyy #1{\unnmhead3{#1}} %normally unnumberedsubsubseczzz
+\def\unnumberedsubsubseczzz #1{\seccheck{unnumberedsubsubsec}%
+\plainsecheading {#1}\gdef\thissection{#1}%
+{\chapternofonts%
+\edef\temp{{\realbackslash unnumbsubsubsecentry{#1}{\noexpand\folio}}}%
+\escapechar=`\\%
+\write \contentsfile \temp %
+\unnumbnoderef %
+\penalty 10000 %
+}}
+
+% These are variants which are not "outer", so they can appear in @ifinfo.
+% Actually, they should now be obsolete; ordinary section commands should work.
+\def\infotop{\parsearg\unnumberedzzz}
+\def\infounnumbered{\parsearg\unnumberedzzz}
+\def\infounnumberedsec{\parsearg\unnumberedseczzz}
+\def\infounnumberedsubsec{\parsearg\unnumberedsubseczzz}
+\def\infounnumberedsubsubsec{\parsearg\unnumberedsubsubseczzz}
+
+\def\infoappendix{\parsearg\appendixzzz}
+\def\infoappendixsec{\parsearg\appendixseczzz}
+\def\infoappendixsubsec{\parsearg\appendixsubseczzz}
+\def\infoappendixsubsubsec{\parsearg\appendixsubsubseczzz}
+
+\def\infochapter{\parsearg\chapterzzz}
+\def\infosection{\parsearg\sectionzzz}
+\def\infosubsection{\parsearg\subsectionzzz}
+\def\infosubsubsection{\parsearg\subsubsectionzzz}
+
+% These macros control what the section commands do, according
+% to what kind of chapter we are in (ordinary, appendix, or unnumbered).
+% Define them by default for a numbered chapter.
+\global\let\section = \numberedsec
+\global\let\subsection = \numberedsubsec
+\global\let\subsubsection = \numberedsubsubsec
+
+% Define @majorheading, @heading and @subheading
+
+% NOTE on use of \vbox for chapter headings, section headings, and
+% such:
+% 1) We use \vbox rather than the earlier \line to permit
+% overlong headings to fold.
+% 2) \hyphenpenalty is set to 10000 because hyphenation in a
+% heading is obnoxious; this forbids it.
+% 3) Likewise, headings look best if no \parindent is used, and
+% if justification is not attempted. Hence \raggedright.
+
+
+\def\majorheading{\parsearg\majorheadingzzz}
+\def\majorheadingzzz #1{%
+{\advance\chapheadingskip by 10pt \chapbreak }%
+{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+ \parindent=0pt\raggedright
+ \rm #1\hfill}}\bigskip \par\penalty 200}
+
+\def\chapheading{\parsearg\chapheadingzzz}
+\def\chapheadingzzz #1{\chapbreak %
+{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+ \parindent=0pt\raggedright
+ \rm #1\hfill}}\bigskip \par\penalty 200}
+
+\def\heading{\parsearg\secheadingi}
+
+\def\subheading{\parsearg\subsecheadingi}
+
+\def\subsubheading{\parsearg\subsubsecheadingi}
+
+% These macros generate a chapter, section, etc. heading only
+% (including whitespace, linebreaking, etc. around it),
+% given all the information in convenient, parsed form.
+
+%%% Args are the skip and penalty (usually negative)
+\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi}
+
+\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
+
+%%% Define plain chapter starts, and page on/off switching for it
+% Parameter controlling skip before chapter headings (if needed)
+
+\newskip \chapheadingskip \chapheadingskip = 30pt plus 8pt minus 4pt
+
+\def\chapbreak{\dobreak \chapheadingskip {-4000}}
+\def\chappager{\par\vfill\supereject}
+\def\chapoddpage{\chappager \ifodd\pageno \else \hbox to 0pt{} \chappager\fi}
+
+\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname}
+
+\def\CHAPPAGoff{
+\global\let\pchapsepmacro=\chapbreak
+\global\let\pagealignmacro=\chappager}
+
+\def\CHAPPAGon{
+\global\let\pchapsepmacro=\chappager
+\global\let\pagealignmacro=\chappager
+\global\def\HEADINGSon{\HEADINGSsingle}}
+
+\def\CHAPPAGodd{
+\global\let\pchapsepmacro=\chapoddpage
+\global\let\pagealignmacro=\chapoddpage
+\global\def\HEADINGSon{\HEADINGSdouble}}
+
+\CHAPPAGon
+
+\def\CHAPFplain{
+\global\let\chapmacro=\chfplain
+\global\let\unnumbchapmacro=\unnchfplain}
+
+\def\chfplain #1#2{%
+ \pchapsepmacro
+ {%
+ \chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+ \parindent=0pt\raggedright
+ \rm #2\enspace #1}%
+ }%
+ \bigskip
+ \penalty5000
+}
+
+\def\unnchfplain #1{%
+\pchapsepmacro %
+{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+ \parindent=0pt\raggedright
+ \rm #1\hfill}}\bigskip \par\penalty 10000 %
+}
+\CHAPFplain % The default
+
+\def\unnchfopen #1{%
+\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+ \parindent=0pt\raggedright
+ \rm #1\hfill}}\bigskip \par\penalty 10000 %
+}
+
+\def\chfopen #1#2{\chapoddpage {\chapfonts
+\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
+\par\penalty 5000 %
+}
+
+\def\CHAPFopen{
+\global\let\chapmacro=\chfopen
+\global\let\unnumbchapmacro=\unnchfopen}
+
+% Parameter controlling skip before section headings.
+
+\newskip \subsecheadingskip \subsecheadingskip = 17pt plus 8pt minus 4pt
+\def\subsecheadingbreak{\dobreak \subsecheadingskip {-500}}
+
+\newskip \secheadingskip \secheadingskip = 21pt plus 8pt minus 4pt
+\def\secheadingbreak{\dobreak \secheadingskip {-1000}}
+
+% @paragraphindent is defined for the Info formatting commands only.
+\let\paragraphindent=\comment
+
+% Section fonts are the base font at magstep2, which produces
+% a size a bit more than 14 points in the default situation.
+
+\def\secheading #1#2#3{\secheadingi {#2.#3\enspace #1}}
+\def\plainsecheading #1{\secheadingi {#1}}
+\def\secheadingi #1{{\advance \secheadingskip by \parskip %
+\secheadingbreak}%
+{\secfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+ \parindent=0pt\raggedright
+ \rm #1\hfill}}%
+\ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000 }
+
+
+% Subsection fonts are the base font at magstep1,
+% which produces a size of 12 points.
+
+\def\subsecheading #1#2#3#4{\subsecheadingi {#2.#3.#4\enspace #1}}
+\def\subsecheadingi #1{{\advance \subsecheadingskip by \parskip %
+\subsecheadingbreak}%
+{\subsecfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+ \parindent=0pt\raggedright
+ \rm #1\hfill}}%
+\ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000 }
+
+\def\subsubsecfonts{\subsecfonts} % Maybe this should change:
+ % Perhaps make sssec fonts scaled
+ % magstep half
+\def\subsubsecheading #1#2#3#4#5{\subsubsecheadingi {#2.#3.#4.#5\enspace #1}}
+\def\subsubsecheadingi #1{{\advance \subsecheadingskip by \parskip %
+\subsecheadingbreak}%
+{\subsubsecfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+ \parindent=0pt\raggedright
+ \rm #1\hfill}}%
+\ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000}
+
+
+\message{toc printing,}
+
+% Finish up the main text and prepare to read what we've written
+% to \contentsfile.
+
+\newskip\contentsrightmargin \contentsrightmargin=1in
+\def\startcontents#1{%
+ \pagealignmacro
+ \immediate\closeout \contentsfile
+ \ifnum \pageno>0
+ \pageno = -1 % Request roman numbered pages.
+ \fi
+ % Don't need to put `Contents' or `Short Contents' in the headline.
+ % It is abundantly clear what they are.
+ \unnumbchapmacro{#1}\def\thischapter{}%
+ \begingroup % Set up to handle contents files properly.
+ \catcode`\\=0 \catcode`\{=1 \catcode`\}=2 \catcode`\@=11
+ \raggedbottom % Worry more about breakpoints than the bottom.
+ \advance\hsize by -\contentsrightmargin % Don't use the full line length.
+}
+
+
+% Normal (long) toc.
+\outer\def\contents{%
+ \startcontents{\putwordTableofContents}%
+ \input \jobname.toc
+ \endgroup
+ \vfill \eject
+}
+
+% And just the chapters.
+\outer\def\summarycontents{%
+ \startcontents{\putwordShortContents}%
+ %
+ \let\chapentry = \shortchapentry
+ \let\unnumbchapentry = \shortunnumberedentry
+ % We want a true roman here for the page numbers.
+ \secfonts
+ \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl
+ \rm
+ \advance\baselineskip by 1pt % Open it up a little.
+ \def\secentry ##1##2##3##4{}
+ \def\unnumbsecentry ##1##2{}
+ \def\subsecentry ##1##2##3##4##5{}
+ \def\unnumbsubsecentry ##1##2{}
+ \def\subsubsecentry ##1##2##3##4##5##6{}
+ \def\unnumbsubsubsecentry ##1##2{}
+ \input \jobname.toc
+ \endgroup
+ \vfill \eject
+}
+\let\shortcontents = \summarycontents
+
+% These macros generate individual entries in the table of contents.
+% The first argument is the chapter or section name.
+% The last argument is the page number.
+% The arguments in between are the chapter number, section number, ...
+
+% Chapter-level things, for both the long and short contents.
+\def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}}
+
+% See comments in \dochapentry re vbox and related settings
+\def\shortchapentry#1#2#3{%
+ \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno{#3}}%
+}
+
+% Typeset the label for a chapter or appendix for the short contents.
+% The arg is, e.g. `Appendix A' for an appendix, or `3' for a chapter.
+% We could simplify the code here by writing out an \appendixentry
+% command in the toc file for appendices, instead of using \chapentry
+% for both, but it doesn't seem worth it.
+\setbox0 = \hbox{\shortcontrm \putwordAppendix }
+\newdimen\shortappendixwidth \shortappendixwidth = \wd0
+
+\def\shortchaplabel#1{%
+ % We typeset #1 in a box of constant width, regardless of the text of
+ % #1, so the chapter titles will come out aligned.
+ \setbox0 = \hbox{#1}%
+ \dimen0 = \ifdim\wd0 > \shortappendixwidth \shortappendixwidth \else 0pt \fi
+ %
+ % This space should be plenty, since a single number is .5em, and the
+ % widest letter (M) is 1em, at least in the Computer Modern fonts.
+ % (This space doesn't include the extra space that gets added after
+ % the label; that gets put in in \shortchapentry above.)
+ \advance\dimen0 by 1.1em
+ \hbox to \dimen0{#1\hfil}%
+}
+
+\def\unnumbchapentry#1#2{\dochapentry{#1}{#2}}
+\def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno{#2}}}
+
+% Sections.
+\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}}
+\def\unnumbsecentry#1#2{\dosecentry{#1}{#2}}
+
+% Subsections.
+\def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}}
+\def\unnumbsubsecentry#1#2{\dosubsecentry{#1}{#2}}
+
+% And subsubsections.
+\def\subsubsecentry#1#2#3#4#5#6{%
+ \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}}
+\def\unnumbsubsubsecentry#1#2{\dosubsubsecentry{#1}{#2}}
+
+
+% This parameter controls the indentation of the various levels.
+\newdimen\tocindent \tocindent = 3pc
+
+% Now for the actual typesetting. In all these, #1 is the text and #2 is the
+% page number.
+%
+% If the toc has to be broken over pages, we would want to be at chapters
+% if at all possible; hence the \penalty.
+\def\dochapentry#1#2{%
+ \penalty-300 \vskip\baselineskip
+ \begingroup
+ \chapentryfonts
+ \tocentry{#1}{\dopageno{#2}}%
+ \endgroup
+ \nobreak\vskip .25\baselineskip
+}
+
+\def\dosecentry#1#2{\begingroup
+ \secentryfonts \leftskip=\tocindent
+ \tocentry{#1}{\dopageno{#2}}%
+\endgroup}
+
+\def\dosubsecentry#1#2{\begingroup
+ \subsecentryfonts \leftskip=2\tocindent
+ \tocentry{#1}{\dopageno{#2}}%
+\endgroup}
+
+\def\dosubsubsecentry#1#2{\begingroup
+ \subsubsecentryfonts \leftskip=3\tocindent
+ \tocentry{#1}{\dopageno{#2}}%
+\endgroup}
+
+% Final typesetting of a toc entry; we use the same \entry macro as for
+% the index entries, but we want to suppress hyphenation here. (We
+% can't do that in the \entry macro, since index entries might consist
+% of hyphenated-identifiers-that-do-not-fit-on-a-line-and-nothing-else.)
+%
+\def\tocentry#1#2{\begingroup
+ \hyphenpenalty = 10000
+ \entry{#1}{#2}%
+\endgroup}
+
+% Space between chapter (or whatever) number and the title.
+\def\labelspace{\hskip1em \relax}
+
+\def\dopageno#1{{\rm #1}}
+\def\doshortpageno#1{{\rm #1}}
+
+\def\chapentryfonts{\secfonts \rm}
+\def\secentryfonts{\textfonts}
+\let\subsecentryfonts = \textfonts
+\let\subsubsecentryfonts = \textfonts
+
+
+\message{environments,}
+
+% Since these characters are used in examples, it should be an even number of
+% \tt widths. Each \tt character is 1en, so two makes it 1em.
+% Furthermore, these definitions must come after we define our fonts.
+\newbox\dblarrowbox \newbox\longdblarrowbox
+\newbox\pushcharbox \newbox\bullbox
+\newbox\equivbox \newbox\errorbox
+
+\let\ptexequiv = \equiv
+
+%{\tentt
+%\global\setbox\dblarrowbox = \hbox to 1em{\hfil$\Rightarrow$\hfil}
+%\global\setbox\longdblarrowbox = \hbox to 1em{\hfil$\mapsto$\hfil}
+%\global\setbox\pushcharbox = \hbox to 1em{\hfil$\dashv$\hfil}
+%\global\setbox\equivbox = \hbox to 1em{\hfil$\ptexequiv$\hfil}
+% Adapted from the manmac format (p.420 of TeXbook)
+%\global\setbox\bullbox = \hbox to 1em{\kern.15em\vrule height .75ex width .85ex
+% depth .1ex\hfil}
+%}
+
+\def\point{$\star$}
+
+\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
+\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}}
+\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
+
+\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}}
+
+% Adapted from the TeXbook's \boxit.
+{\tentt \global\dimen0 = 3em}% Width of the box.
+\dimen2 = .55pt % Thickness of rules
+% The text. (`r' is open on the right, `e' somewhat less so on the left.)
+\setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt}
+
+\global\setbox\errorbox=\hbox to \dimen0{\hfil
+ \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
+ \advance\hsize by -2\dimen2 % Rules.
+ \vbox{
+ \hrule height\dimen2
+ \hbox{\vrule width\dimen2 \kern3pt % Space to left of text.
+ \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
+ \kern3pt\vrule width\dimen2}% Space to right.
+ \hrule height\dimen2}
+ \hfil}
+
+% The @error{} command.
+\def\error{\leavevmode\lower.7ex\copy\errorbox}
+
+% @tex ... @end tex escapes into raw Tex temporarily.
+% One exception: @ is still an escape character, so that @end tex works.
+% But \@ or @@ will get a plain tex @ character.
+
+\def\tex{\begingroup
+\catcode `\\=0 \catcode `\{=1 \catcode `\}=2
+\catcode `\$=3 \catcode `\&=4 \catcode `\#=6
+\catcode `\^=7 \catcode `\_=8 \catcode `\~=13 \let~=\tie
+\catcode `\%=14
+\catcode 43=12
+\catcode`\"=12
+\catcode`\==12
+\catcode`\|=12
+\catcode`\<=12
+\catcode`\>=12
+\escapechar=`\\
+%
+\let\~=\ptextilde
+\let\{=\ptexlbrace
+\let\}=\ptexrbrace
+\let\.=\ptexdot
+\let\*=\ptexstar
+\let\dots=\ptexdots
+\def\@{@}%
+\let\bullet=\ptexbullet
+\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl
+\let\L=\ptexL
+%
+\let\Etex=\endgroup}
+
+% Define @lisp ... @endlisp.
+% @lisp does a \begingroup so it can rebind things,
+% including the definition of @endlisp (which normally is erroneous).
+
+% Amount to narrow the margins by for @lisp.
+\newskip\lispnarrowing \lispnarrowing=0.4in
+
+% This is the definition that ^^M gets inside @lisp, @example, and other
+% such environments. \null is better than a space, since it doesn't
+% have any width.
+\def\lisppar{\null\endgraf}
+
+% Make each space character in the input produce a normal interword
+% space in the output. Don't allow a line break at this space, as this
+% is used only in environments like @example, where each line of input
+% should produce a line of output anyway.
+%
+{\obeyspaces %
+\gdef\sepspaces{\obeyspaces\let =\tie}}
+
+% Define \obeyedspace to be our active space, whatever it is. This is
+% for use in \parsearg.
+{\sepspaces%
+\global\let\obeyedspace= }
+
+% This space is always present above and below environments.
+\newskip\envskipamount \envskipamount = 0pt
+
+% Make spacing and below environment symmetrical. We use \parskip here
+% to help in doing that, since in @example-like environments \parskip
+% is reset to zero; thus the \afterenvbreak inserts no space -- but the
+% start of the next paragraph will insert \parskip
+%
+\def\aboveenvbreak{{\advance\envskipamount by \parskip
+\endgraf \ifdim\lastskip<\envskipamount
+\removelastskip \penalty-50 \vskip\envskipamount \fi}}
+
+\let\afterenvbreak = \aboveenvbreak
+
+% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins.
+\let\nonarrowing=\relax
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \cartouche: draw rectangle w/rounded corners around argument
+\font\circle=lcircle10
+\newdimen\circthick
+\newdimen\cartouter\newdimen\cartinner
+\newskip\normbskip\newskip\normpskip\newskip\normlskip
+\circthick=\fontdimen8\circle
+%
+\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth
+\def\ctr{{\hskip 6pt\circle\char'010}}
+\def\cbl{{\circle\char'012\hskip -6pt}}
+\def\cbr{{\hskip 6pt\circle\char'011}}
+\def\carttop{\hbox to \cartouter{\hskip\lskip
+ \ctl\leaders\hrule height\circthick\hfil\ctr
+ \hskip\rskip}}
+\def\cartbot{\hbox to \cartouter{\hskip\lskip
+ \cbl\leaders\hrule height\circthick\hfil\cbr
+ \hskip\rskip}}
+%
+\newskip\lskip\newskip\rskip
+
+\long\def\cartouche{%
+\begingroup
+ \lskip=\leftskip \rskip=\rightskip
+ \leftskip=0pt\rightskip=0pt %we want these *outside*.
+ \cartinner=\hsize \advance\cartinner by-\lskip
+ \advance\cartinner by-\rskip
+ \cartouter=\hsize
+ \advance\cartouter by 18pt % allow for 3pt kerns on either
+% side, and for 6pt waste from
+% each corner char
+ \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
+ % Flag to tell @lisp, etc., not to narrow margin.
+ \let\nonarrowing=\comment
+ \vbox\bgroup
+ \baselineskip=0pt\parskip=0pt\lineskip=0pt
+ \carttop
+ \hbox\bgroup
+ \hskip\lskip
+ \vrule\kern3pt
+ \vbox\bgroup
+ \hsize=\cartinner
+ \kern3pt
+ \begingroup
+ \baselineskip=\normbskip
+ \lineskip=\normlskip
+ \parskip=\normpskip
+ \vskip -\parskip
+\def\Ecartouche{%
+ \endgroup
+ \kern3pt
+ \egroup
+ \kern3pt\vrule
+ \hskip\rskip
+ \egroup
+ \cartbot
+ \egroup
+\endgroup
+}}
+
+
+% This macro is called at the beginning of all the @example variants,
+% inside a group.
+\def\nonfillstart{%
+ \aboveenvbreak
+ \inENV % This group ends at the end of the body
+ \hfuzz = 12pt % Don't be fussy
+ \sepspaces % Make spaces be word-separators rather than space tokens.
+ \singlespace
+ \let\par = \lisppar % don't ignore blank lines
+ \obeylines % each line of input is a line of output
+ \parskip = 0pt
+ \parindent = 0pt
+ \emergencystretch = 0pt % don't try to avoid overfull boxes
+ % @cartouche defines \nonarrowing to inhibit narrowing
+ % at next level down.
+ \ifx\nonarrowing\relax
+ \advance \leftskip by \lispnarrowing
+ \exdentamount=\lispnarrowing
+ \let\exdent=\nofillexdent
+ \let\nonarrowing=\relax
+ \fi
+}
+
+% To ending an @example-like environment, we first end the paragraph
+% (via \afterenvbreak's vertical glue), and then the group. That way we
+% keep the zero \parskip that the environments set -- \parskip glue
+% will be inserted at the beginning of the next paragraph in the
+% document, after the environment.
+%
+\def\nonfillfinish{\afterenvbreak\endgroup}%
+
+% This macro is
+\def\lisp{\begingroup
+ \nonfillstart
+ \let\Elisp = \nonfillfinish
+ \tt
+ \rawbackslash % have \ input char produce \ char from current font
+ \gobble
+}
+
+% Define the \E... control sequence only if we are inside the
+% environment, so the error checking in \end will work.
+%
+% We must call \lisp last in the definition, since it reads the
+% return following the @example (or whatever) command.
+%
+\def\example{\begingroup \def\Eexample{\nonfillfinish\endgroup}\lisp}
+\def\smallexample{\begingroup \def\Esmallexample{\nonfillfinish\endgroup}\lisp}
+\def\smalllisp{\begingroup \def\Esmalllisp{\nonfillfinish\endgroup}\lisp}
+
+% @smallexample and @smalllisp. This is not used unless the @smallbook
+% command is given. Originally contributed by Pavel@xerox.
+%
+\def\smalllispx{\begingroup
+ \nonfillstart
+ \let\Esmalllisp = \nonfillfinish
+ \let\Esmallexample = \nonfillfinish
+ %
+ % Smaller interline space and fonts for small examples.
+ \setleading{10pt}%
+ \indexfonts \tt
+ \rawbackslash % make \ output the \ character from the current font (tt)
+ \gobble
+}
+
+% This is @display; same as @lisp except use roman font.
+%
+\def\display{\begingroup
+ \nonfillstart
+ \let\Edisplay = \nonfillfinish
+ \gobble
+}
+
+% This is @format; same as @display except don't narrow margins.
+%
+\def\format{\begingroup
+ \let\nonarrowing = t
+ \nonfillstart
+ \let\Eformat = \nonfillfinish
+ \gobble
+}
+
+% @flushleft (same as @format) and @flushright.
+%
+\def\flushleft{\begingroup
+ \let\nonarrowing = t
+ \nonfillstart
+ \let\Eflushleft = \nonfillfinish
+ \gobble
+}
+\def\flushright{\begingroup
+ \let\nonarrowing = t
+ \nonfillstart
+ \let\Eflushright = \nonfillfinish
+ \advance\leftskip by 0pt plus 1fill
+ \gobble}
+
+% @quotation does normal linebreaking (hence we can't use \nonfillstart)
+% and narrows the margins.
+%
+\def\quotation{%
+ \begingroup\inENV %This group ends at the end of the @quotation body
+ {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
+ \singlespace
+ \parindent=0pt
+ % We have retained a nonzero parskip for the environment, since we're
+ % doing normal filling. So to avoid extra space below the environment...
+ \def\Equotation{\parskip = 0pt \nonfillfinish}%
+ %
+ % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
+ \ifx\nonarrowing\relax
+ \advance\leftskip by \lispnarrowing
+ \advance\rightskip by \lispnarrowing
+ \exdentamount = \lispnarrowing
+ \let\nonarrowing = \relax
+ \fi
+}
+
+\message{defuns,}
+% Define formatter for defuns
+% First, allow user to change definition object font (\df) internally
+\def\setdeffont #1 {\csname DEF#1\endcsname}
+
+\newskip\defbodyindent \defbodyindent=.4in
+\newskip\defargsindent \defargsindent=50pt
+\newskip\deftypemargin \deftypemargin=12pt
+\newskip\deflastargmargin \deflastargmargin=18pt
+
+\newcount\parencount
+% define \functionparens, which makes ( and ) and & do special things.
+% \functionparens affects the group it is contained in.
+\def\activeparens{%
+\catcode`\(=\active \catcode`\)=\active \catcode`\&=\active
+\catcode`\[=\active \catcode`\]=\active}
+
+% Make control sequences which act like normal parenthesis chars.
+\let\lparen = ( \let\rparen = )
+
+{\activeparens % Now, smart parens don't turn on until &foo (see \amprm)
+
+% Be sure that we always have a definition for `(', etc. For example,
+% if the fn name has parens in it, \boldbrax will not be in effect yet,
+% so TeX would otherwise complain about undefined control sequence.
+\global\let(=\lparen \global\let)=\rparen
+\global\let[=\lbrack \global\let]=\rbrack
+
+\gdef\functionparens{\boldbrax\let&=\amprm\parencount=0 }
+\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
+
+% Definitions of (, ) and & used in args for functions.
+% This is the definition of ( outside of all parentheses.
+\gdef\oprm#1 {{\rm\char`\(}#1 \bf \let(=\opnested %
+\global\advance\parencount by 1 }
+%
+% This is the definition of ( when already inside a level of parens.
+\gdef\opnested{\char`\(\global\advance\parencount by 1 }
+%
+\gdef\clrm{% Print a paren in roman if it is taking us back to depth of 0.
+% also in that case restore the outer-level definition of (.
+\ifnum \parencount=1 {\rm \char `\)}\sl \let(=\oprm \else \char `\) \fi
+\global\advance \parencount by -1 }
+% If we encounter &foo, then turn on ()-hacking afterwards
+\gdef\amprm#1 {{\rm\&#1}\let(=\oprm \let)=\clrm\ }
+%
+\gdef\normalparens{\boldbrax\let&=\ampnr}
+} % End of definition inside \activeparens
+%% These parens (in \boldbrax) actually are a little bolder than the
+%% contained text. This is especially needed for [ and ]
+\def\opnr{{\sf\char`\(}} \def\clnr{{\sf\char`\)}} \def\ampnr{\&}
+\def\lbrb{{\bf\char`\[}} \def\rbrb{{\bf\char`\]}}
+
+% First, defname, which formats the header line itself.
+% #1 should be the function name.
+% #2 should be the type of definition, such as "Function".
+
+\def\defname #1#2{%
+% Get the values of \leftskip and \rightskip as they were
+% outside the @def...
+\dimen2=\leftskip
+\advance\dimen2 by -\defbodyindent
+\dimen3=\rightskip
+\advance\dimen3 by -\defbodyindent
+\noindent %
+\setbox0=\hbox{\hskip \deflastargmargin{\rm #2}\hskip \deftypemargin}%
+\dimen0=\hsize \advance \dimen0 by -\wd0 % compute size for first line
+\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuations
+\parshape 2 0in \dimen0 \defargsindent \dimen1 %
+% Now output arg 2 ("Function" or some such)
+% ending at \deftypemargin from the right margin,
+% but stuck inside a box of width 0 so it does not interfere with linebreaking
+{% Adjust \hsize to exclude the ambient margins,
+% so that \rightline will obey them.
+\advance \hsize by -\dimen2 \advance \hsize by -\dimen3
+\rlap{\rightline{{\rm #2}\hskip \deftypemargin}}}%
+% Make all lines underfull and no complaints:
+\tolerance=10000 \hbadness=10000
+\advance\leftskip by -\defbodyindent
+\exdentamount=\defbodyindent
+{\df #1}\enskip % Generate function name
+}
+
+% Actually process the body of a definition
+% #1 should be the terminating control sequence, such as \Edefun.
+% #2 should be the "another name" control sequence, such as \defunx.
+% #3 should be the control sequence that actually processes the header,
+% such as \defunheader.
+
+\def\defparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody
+\medbreak %
+% Define the end token that this defining construct specifies
+% so that it will exit this group.
+\def#1{\endgraf\endgroup\medbreak}%
+\def#2{\begingroup\obeylines\activeparens\spacesplit#3}%
+\parindent=0in
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
+\exdentamount=\defbodyindent
+\begingroup %
+\catcode 61=\active % 61 is `='
+\obeylines\activeparens\spacesplit#3}
+
+\def\defmethparsebody #1#2#3#4 {\begingroup\inENV %
+\medbreak %
+% Define the end token that this defining construct specifies
+% so that it will exit this group.
+\def#1{\endgraf\endgroup\medbreak}%
+\def#2##1 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}}}%
+\parindent=0in
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
+\exdentamount=\defbodyindent
+\begingroup\obeylines\activeparens\spacesplit{#3{#4}}}
+
+\def\defopparsebody #1#2#3#4#5 {\begingroup\inENV %
+\medbreak %
+% Define the end token that this defining construct specifies
+% so that it will exit this group.
+\def#1{\endgraf\endgroup\medbreak}%
+\def#2##1 ##2 {\def#4{##1}%
+\begingroup\obeylines\activeparens\spacesplit{#3{##2}}}%
+\parindent=0in
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
+\exdentamount=\defbodyindent
+\begingroup\obeylines\activeparens\spacesplit{#3{#5}}}
+
+% These parsing functions are similar to the preceding ones
+% except that they do not make parens into active characters.
+% These are used for "variables" since they have no arguments.
+
+\def\defvarparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody
+\medbreak %
+% Define the end token that this defining construct specifies
+% so that it will exit this group.
+\def#1{\endgraf\endgroup\medbreak}%
+\def#2{\begingroup\obeylines\spacesplit#3}%
+\parindent=0in
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
+\exdentamount=\defbodyindent
+\begingroup %
+\catcode 61=\active %
+\obeylines\spacesplit#3}
+
+% This is used for \def{tp,vr}parsebody. It could probably be used for
+% some of the others, too, with some judicious conditionals.
+%
+\def\parsebodycommon#1#2#3{%
+ \begingroup\inENV %
+ \medbreak %
+ % Define the end token that this defining construct specifies
+ % so that it will exit this group.
+ \def#1{\endgraf\endgroup\medbreak}%
+ \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}%
+ \parindent=0in
+ \advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
+ \exdentamount=\defbodyindent
+ \begingroup\obeylines
+}
+
+\def\defvrparsebody#1#2#3#4 {%
+ \parsebodycommon{#1}{#2}{#3}%
+ \spacesplit{#3{#4}}%
+}
+
+% This loses on `@deftp {Data Type} {struct termios}' -- it thinks the
+% type is just `struct', because we lose the braces in `{struct
+% termios}' when \spacesplit reads its undelimited argument. Sigh.
+% \let\deftpparsebody=\defvrparsebody
+%
+% So, to get around this, we put \empty in with the type name. That
+% way, TeX won't find exactly `{...}' as an undelimited argument, and
+% won't strip off the braces.
+%
+\def\deftpparsebody #1#2#3#4 {%
+ \parsebodycommon{#1}{#2}{#3}%
+ \spacesplit{\parsetpheaderline{#3{#4}}}\empty
+}
+
+% Fine, but then we have to eventually remove the \empty *and* the
+% braces (if any). That's what this does, putting the result in \tptemp.
+%
+\def\removeemptybraces\empty#1\relax{\def\tptemp{#1}}%
+
+% After \spacesplit has done its work, this is called -- #1 is the final
+% thing to call, #2 the type name (which starts with \empty), and #3
+% (which might be empty) the arguments.
+%
+\def\parsetpheaderline#1#2#3{%
+ \removeemptybraces#2\relax
+ #1{\tptemp}{#3}%
+}%
+
+\def\defopvarparsebody #1#2#3#4#5 {\begingroup\inENV %
+\medbreak %
+% Define the end token that this defining construct specifies
+% so that it will exit this group.
+\def#1{\endgraf\endgroup\medbreak}%
+\def#2##1 ##2 {\def#4{##1}%
+\begingroup\obeylines\spacesplit{#3{##2}}}%
+\parindent=0in
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
+\exdentamount=\defbodyindent
+\begingroup\obeylines\spacesplit{#3{#5}}}
+
+% Split up #2 at the first space token.
+% call #1 with two arguments:
+% the first is all of #2 before the space token,
+% the second is all of #2 after that space token.
+% If #2 contains no space token, all of it is passed as the first arg
+% and the second is passed as empty.
+
+{\obeylines
+\gdef\spacesplit#1#2^^M{\endgroup\spacesplitfoo{#1}#2 \relax\spacesplitfoo}%
+\long\gdef\spacesplitfoo#1#2 #3#4\spacesplitfoo{%
+\ifx\relax #3%
+#1{#2}{}\else #1{#2}{#3#4}\fi}}
+
+% So much for the things common to all kinds of definitions.
+
+% Define @defun.
+
+% First, define the processing that is wanted for arguments of \defun
+% Use this to expand the args and terminate the paragraph they make up
+
+\def\defunargs #1{\functionparens \sl
+% Expand, preventing hyphenation at `-' chars.
+% Note that groups don't affect changes in \hyphenchar.
+\hyphenchar\tensl=0
+#1%
+\hyphenchar\tensl=45
+\ifnum\parencount=0 \else \errmessage{unbalanced parens in @def arguments}\fi%
+\interlinepenalty=10000
+\advance\rightskip by 0pt plus 1fil
+\endgraf\penalty 10000\vskip -\parskip\penalty 10000%
+}
+
+\def\deftypefunargs #1{%
+% Expand, preventing hyphenation at `-' chars.
+% Note that groups don't affect changes in \hyphenchar.
+\functionparens
+\tclose{#1}% avoid \code because of side effects on active chars
+\interlinepenalty=10000
+\advance\rightskip by 0pt plus 1fil
+\endgraf\penalty 10000\vskip -\parskip\penalty 10000%
+}
+
+% Do complete processing of one @defun or @defunx line already parsed.
+
+% @deffn Command forward-char nchars
+
+\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader}
+
+\def\deffnheader #1#2#3{\doind {fn}{\code{#2}}%
+\begingroup\defname {#2}{#1}\defunargs{#3}\endgroup %
+\catcode 61=\other % Turn off change made in \defparsebody
+}
+
+% @defun == @deffn Function
+
+\def\defun{\defparsebody\Edefun\defunx\defunheader}
+
+\def\defunheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
+\begingroup\defname {#1}{Function}%
+\defunargs {#2}\endgroup %
+\catcode 61=\other % Turn off change made in \defparsebody
+}
+
+% @deftypefun int foobar (int @var{foo}, float @var{bar})
+
+\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader}
+
+% #1 is the data type. #2 is the name and args.
+\def\deftypefunheader #1#2{\deftypefunheaderx{#1}#2 \relax}
+% #1 is the data type, #2 the name, #3 the args.
+\def\deftypefunheaderx #1#2 #3\relax{%
+\doind {fn}{\code{#2}}% Make entry in function index
+\begingroup\defname {\defheaderxcond#1\relax$$$#2}{Function}%
+\deftypefunargs {#3}\endgroup %
+\catcode 61=\other % Turn off change made in \defparsebody
+}
+
+% @deftypefn {Library Function} int foobar (int @var{foo}, float @var{bar})
+
+\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}
+
+% \defheaderxcond#1\relax$$$
+% puts #1 in @code, followed by a space, but does nothing if #1 is null.
+\def\defheaderxcond#1#2$$${\ifx#1\relax\else\code{#1#2} \fi}
+
+% #1 is the classification. #2 is the data type. #3 is the name and args.
+\def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax}
+% #1 is the classification, #2 the data type, #3 the name, #4 the args.
+\def\deftypefnheaderx #1#2#3 #4\relax{%
+\doind {fn}{\code{#3}}% Make entry in function index
+\begingroup
+\normalparens % notably, turn off `&' magic, which prevents
+% at least some C++ text from working
+\defname {\defheaderxcond#2\relax$$$#3}{#1}%
+\deftypefunargs {#4}\endgroup %
+\catcode 61=\other % Turn off change made in \defparsebody
+}
+
+% @defmac == @deffn Macro
+
+\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader}
+
+\def\defmacheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
+\begingroup\defname {#1}{Macro}%
+\defunargs {#2}\endgroup %
+\catcode 61=\other % Turn off change made in \defparsebody
+}
+
+% @defspec == @deffn Special Form
+
+\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader}
+
+\def\defspecheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
+\begingroup\defname {#1}{Special Form}%
+\defunargs {#2}\endgroup %
+\catcode 61=\other % Turn off change made in \defparsebody
+}
+
+% This definition is run if you use @defunx
+% anywhere other than immediately after a @defun or @defunx.
+
+\def\deffnx #1 {\errmessage{@deffnx in invalid context}}
+\def\defunx #1 {\errmessage{@defunx in invalid context}}
+\def\defmacx #1 {\errmessage{@defmacx in invalid context}}
+\def\defspecx #1 {\errmessage{@defspecx in invalid context}}
+\def\deftypefnx #1 {\errmessage{@deftypefnx in invalid context}}
+\def\deftypeunx #1 {\errmessage{@deftypeunx in invalid context}}
+
+% @defmethod, and so on
+
+% @defop {Funny Method} foo-class frobnicate argument
+
+\def\defop #1 {\def\defoptype{#1}%
+\defopparsebody\Edefop\defopx\defopheader\defoptype}
+
+\def\defopheader #1#2#3{%
+\dosubind {fn}{\code{#2}}{on #1}% Make entry in function index
+\begingroup\defname {#2}{\defoptype{} on #1}%
+\defunargs {#3}\endgroup %
+}
+
+% @defmethod == @defop Method
+
+\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader}
+
+\def\defmethodheader #1#2#3{%
+\dosubind {fn}{\code{#2}}{on #1}% entry in function index
+\begingroup\defname {#2}{Method on #1}%
+\defunargs {#3}\endgroup %
+}
+
+% @defcv {Class Option} foo-class foo-flag
+
+\def\defcv #1 {\def\defcvtype{#1}%
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}
+
+\def\defcvarheader #1#2#3{%
+\dosubind {vr}{\code{#2}}{of #1}% Make entry in var index
+\begingroup\defname {#2}{\defcvtype{} of #1}%
+\defvarargs {#3}\endgroup %
+}
+
+% @defivar == @defcv {Instance Variable}
+
+\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader}
+
+\def\defivarheader #1#2#3{%
+\dosubind {vr}{\code{#2}}{of #1}% Make entry in var index
+\begingroup\defname {#2}{Instance Variable of #1}%
+\defvarargs {#3}\endgroup %
+}
+
+% These definitions are run if you use @defmethodx, etc.,
+% anywhere other than immediately after a @defmethod, etc.
+
+\def\defopx #1 {\errmessage{@defopx in invalid context}}
+\def\defmethodx #1 {\errmessage{@defmethodx in invalid context}}
+\def\defcvx #1 {\errmessage{@defcvx in invalid context}}
+\def\defivarx #1 {\errmessage{@defivarx in invalid context}}
+
+% Now @defvar
+
+% First, define the processing that is wanted for arguments of @defvar.
+% This is actually simple: just print them in roman.
+% This must expand the args and terminate the paragraph they make up
+\def\defvarargs #1{\normalparens #1%
+\interlinepenalty=10000
+\endgraf\penalty 10000\vskip -\parskip\penalty 10000}
+
+% @defvr Counter foo-count
+
+\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader}
+
+\def\defvrheader #1#2#3{\doind {vr}{\code{#2}}%
+\begingroup\defname {#2}{#1}\defvarargs{#3}\endgroup}
+
+% @defvar == @defvr Variable
+
+\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader}
+
+\def\defvarheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index
+\begingroup\defname {#1}{Variable}%
+\defvarargs {#2}\endgroup %
+}
+
+% @defopt == @defvr {User Option}
+
+\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader}
+
+\def\defoptheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index
+\begingroup\defname {#1}{User Option}%
+\defvarargs {#2}\endgroup %
+}
+
+% @deftypevar int foobar
+
+\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader}
+
+% #1 is the data type. #2 is the name.
+\def\deftypevarheader #1#2{%
+\doind {vr}{\code{#2}}% Make entry in variables index
+\begingroup\defname {\defheaderxcond#1\relax$$$#2}{Variable}%
+\interlinepenalty=10000
+\endgraf\penalty 10000\vskip -\parskip\penalty 10000
+\endgroup}
+
+% @deftypevr {Global Flag} int enable
+
+\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}
+
+\def\deftypevrheader #1#2#3{\doind {vr}{\code{#3}}%
+\begingroup\defname {\defheaderxcond#2\relax$$$#3}{#1}
+\interlinepenalty=10000
+\endgraf\penalty 10000\vskip -\parskip\penalty 10000
+\endgroup}
+
+% This definition is run if you use @defvarx
+% anywhere other than immediately after a @defvar or @defvarx.
+
+\def\defvrx #1 {\errmessage{@defvrx in invalid context}}
+\def\defvarx #1 {\errmessage{@defvarx in invalid context}}
+\def\defoptx #1 {\errmessage{@defoptx in invalid context}}
+\def\deftypevarx #1 {\errmessage{@deftypevarx in invalid context}}
+\def\deftypevrx #1 {\errmessage{@deftypevrx in invalid context}}
+
+% Now define @deftp
+% Args are printed in bold, a slight difference from @defvar.
+
+\def\deftpargs #1{\bf \defvarargs{#1}}
+
+% @deftp Class window height width ...
+
+\def\deftp{\deftpparsebody\Edeftp\deftpx\deftpheader}
+
+\def\deftpheader #1#2#3{\doind {tp}{\code{#2}}%
+\begingroup\defname {#2}{#1}\deftpargs{#3}\endgroup}
+
+% This definition is run if you use @deftpx, etc
+% anywhere other than immediately after a @deftp, etc.
+
+\def\deftpx #1 {\errmessage{@deftpx in invalid context}}
+
+\message{cross reference,}
+% Define cross-reference macros
+\newwrite \auxfile
+
+\newif\ifhavexrefs % True if xref values are known.
+\newif\ifwarnedxrefs % True if we warned once that they aren't known.
+
+% \setref{foo} defines a cross-reference point named foo.
+
+\def\setref#1{%
+\dosetq{#1-title}{Ytitle}%
+\dosetq{#1-pg}{Ypagenumber}%
+\dosetq{#1-snt}{Ysectionnumberandtype}}
+
+\def\unnumbsetref#1{%
+\dosetq{#1-title}{Ytitle}%
+\dosetq{#1-pg}{Ypagenumber}%
+\dosetq{#1-snt}{Ynothing}}
+
+\def\appendixsetref#1{%
+\dosetq{#1-title}{Ytitle}%
+\dosetq{#1-pg}{Ypagenumber}%
+\dosetq{#1-snt}{Yappendixletterandtype}}
+
+% \xref, \pxref, and \ref generate cross-references to specified points.
+% For \xrefX, #1 is the node name, #2 the name of the Info
+% cross-reference, #3 the printed node name, #4 the name of the Info
+% file, #5 the name of the printed manual. All but the node name can be
+% omitted.
+%
+\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]}
+\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]}
+\def\ref#1{\xrefX[#1,,,,,,,]}
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
+ \def\printedmanual{\ignorespaces #5}%
+ \def\printednodename{\ignorespaces #3}%
+ \setbox1=\hbox{\printedmanual}%
+ \setbox0=\hbox{\printednodename}%
+ \ifdim \wd0 = 0pt
+ % No printed node name was explicitly given.
+ \ifx\SETxref-automatic-section-title\relax %
+ % Use the actual chapter/section title appear inside
+ % the square brackets. Use the real section title if we have it.
+ \ifdim \wd1>0pt%
+ % It is in another manual, so we don't have it.
+ \def\printednodename{\ignorespaces #1}%
+ \else
+ \ifhavexrefs
+ % We know the real title if we have the xref values.
+ \def\printednodename{\refx{#1-title}}%
+ \else
+ % Otherwise just copy the Info node name.
+ \def\printednodename{\ignorespaces #1}%
+ \fi%
+ \fi
+ \def\printednodename{#1-title}%
+ \else
+ % Use the node name inside the square brackets.
+ \def\printednodename{\ignorespaces #1}%
+ \fi
+ \fi
+ %
+ % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not
+ % insert empty discretionaries after hyphens, which means that it will
+ % not find a line break at a hyphen in a node names. Since some manuals
+ % are best written with fairly long node names, containing hyphens, this
+ % is a loss. Therefore, we give the text of the node name again, so it
+ % is as if TeX is seeing it for the first time.
+ \ifdim \wd1 > 0pt
+ \putwordsection{} ``\printednodename'' in \cite{\printedmanual}%
+ \else
+ % _ (for example) has to be the character _ for the purposes of the
+ % control sequence corresponding to the node, but it has to expand
+ % into the usual \leavevmode...\vrule stuff for purposes of
+ % printing. So we \turnoffactive for the \refx-snt, back on for the
+ % printing, back off for the \refx-pg.
+ {\turnoffactive \refx{#1-snt}{}}%
+ \space [\printednodename],\space
+ \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
+ \fi
+\endgroup}
+
+% \dosetq is the interface for calls from other macros
+
+% Use \turnoffactive so that punctuation chars such as underscore
+% work in node names.
+\def\dosetq #1#2{{\let\folio=0 \turnoffactive%
+\edef\next{\write\auxfile{\internalsetq {#1}{#2}}}%
+\next}}
+
+% \internalsetq {foo}{page} expands into
+% CHARACTERS 'xrdef {foo}{...expansion of \Ypage...}
+% When the aux file is read, ' is the escape character
+
+\def\internalsetq #1#2{'xrdef {#1}{\csname #2\endcsname}}
+
+% Things to be expanded by \internalsetq
+
+\def\Ypagenumber{\folio}
+
+\def\Ytitle{\thissection}
+
+\def\Ynothing{}
+
+\def\Ysectionnumberandtype{%
+\ifnum\secno=0 \putwordChapter\xreftie\the\chapno %
+\else \ifnum \subsecno=0 \putwordSection\xreftie\the\chapno.\the\secno %
+\else \ifnum \subsubsecno=0 %
+\putwordSection\xreftie\the\chapno.\the\secno.\the\subsecno %
+\else %
+\putwordSection\xreftie\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno %
+\fi \fi \fi }
+
+\def\Yappendixletterandtype{%
+\ifnum\secno=0 \putwordAppendix\xreftie'char\the\appendixno{}%
+\else \ifnum \subsecno=0 \putwordSection\xreftie'char\the\appendixno.\the\secno %
+\else \ifnum \subsubsecno=0 %
+\putwordSection\xreftie'char\the\appendixno.\the\secno.\the\subsecno %
+\else %
+\putwordSection\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %
+\fi \fi \fi }
+
+\gdef\xreftie{'tie}
+
+% Use TeX 3.0's \inputlineno to get the line number, for better error
+% messages, but if we're using an old version of TeX, don't do anything.
+%
+\ifx\inputlineno\thisisundefined
+ \let\linenumber = \empty % Non-3.0.
+\else
+ \def\linenumber{\the\inputlineno:\space}
+\fi
+
+% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME.
+% If its value is nonempty, SUFFIX is output afterward.
+
+\def\refx#1#2{%
+ \expandafter\ifx\csname X#1\endcsname\relax
+ % If not defined, say something at least.
+ $\langle$un\-de\-fined$\rangle$%
+ \ifhavexrefs
+ \message{\linenumber Undefined cross reference `#1'.}%
+ \else
+ \ifwarnedxrefs\else
+ \global\warnedxrefstrue
+ \message{Cross reference values unknown; you must run TeX again.}%
+ \fi
+ \fi
+ \else
+ % It's defined, so just use it.
+ \csname X#1\endcsname
+ \fi
+ #2% Output the suffix in any case.
+}
+
+% Read the last existing aux file, if any. No error if none exists.
+
+% This is the macro invoked by entries in the aux file.
+\def\xrdef #1#2{
+{\catcode`\'=\other\expandafter \gdef \csname X#1\endcsname {#2}}}
+
+\def\readauxfile{%
+\begingroup
+\catcode `\^^@=\other
+\catcode `\=\other
+\catcode `\=\other
+\catcode `\^^C=\other
+\catcode `\^^D=\other
+\catcode `\^^E=\other
+\catcode `\^^F=\other
+\catcode `\^^G=\other
+\catcode `\^^H=\other
+\catcode `\ =\other
+\catcode `\^^L=\other
+\catcode `\=\other
+\catcode `\=\other
+\catcode `\=\other
+\catcode `\=\other
+\catcode `\=\other
+\catcode `\=\other
+\catcode `\=\other
+\catcode `\=\other
+\catcode `\=\other
+\catcode `\=\other
+\catcode `\=\other
+\catcode `\=\other
+\catcode 26=\other
+\catcode `\^^[=\other
+\catcode `\^^\=\other
+\catcode `\^^]=\other
+\catcode `\^^^=\other
+\catcode `\^^_=\other
+\catcode `\@=\other
+\catcode `\^=\other
+\catcode `\~=\other
+\catcode `\[=\other
+\catcode `\]=\other
+\catcode`\"=\other
+\catcode`\_=\other
+\catcode`\|=\other
+\catcode`\<=\other
+\catcode`\>=\other
+\catcode `\$=\other
+\catcode `\#=\other
+\catcode `\&=\other
+% `\+ does not work, so use 43.
+\catcode 43=\other
+% Make the characters 128-255 be printing characters
+{%
+ \count 1=128
+ \def\loop{%
+ \catcode\count 1=\other
+ \advance\count 1 by 1
+ \ifnum \count 1<256 \loop \fi
+ }%
+}%
+% the aux file uses ' as the escape.
+% Turn off \ as an escape so we do not lose on
+% entries which were dumped with control sequences in their names.
+% For example, 'xrdef {$\leq $-fun}{page ...} made by @defun ^^
+% Reference to such entries still does not work the way one would wish,
+% but at least they do not bomb out when the aux file is read in.
+\catcode `\{=1 \catcode `\}=2
+\catcode `\%=\other
+\catcode `\'=0
+\catcode `\\=\other
+\openin 1 \jobname.aux
+\ifeof 1 \else \closein 1 \input \jobname.aux \global\havexrefstrue
+\global\warnedobstrue
+\fi
+% Open the new aux file. Tex will close it automatically at exit.
+\openout \auxfile=\jobname.aux
+\endgroup}
+
+
+% Footnotes.
+
+\newcount \footnoteno
+
+% The trailing space in the following definition for supereject is
+% vital for proper filling; pages come out unaligned when you do a
+% pagealignmacro call if that space before the closing brace is
+% removed.
+\def\supereject{\par\penalty -20000\footnoteno =0 }
+
+% @footnotestyle is meaningful for info output only..
+\let\footnotestyle=\comment
+
+\let\ptexfootnote=\footnote
+
+{\catcode `\@=11
+%
+% Auto-number footnotes. Otherwise like plain.
+\gdef\footnote{%
+ \global\advance\footnoteno by \@ne
+ \edef\thisfootno{$^{\the\footnoteno}$}%
+ %
+ % In case the footnote comes at the end of a sentence, preserve the
+ % extra spacing after we do the footnote number.
+ \let\@sf\empty
+ \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi
+ %
+ % Remove inadvertent blank space before typesetting the footnote number.
+ \unskip
+ \thisfootno\@sf
+ \footnotezzz
+}%
+
+% Don't bother with the trickery in plain.tex to not require the
+% footnote text as a parameter. Our footnotes don't need to be so general.
+%
+\long\gdef\footnotezzz#1{\insert\footins{%
+ % We want to typeset this text as a normal paragraph, even if the
+ % footnote reference occurs in (for example) a display environment.
+ % So reset some parameters.
+ \interlinepenalty\interfootnotelinepenalty
+ \splittopskip\ht\strutbox % top baseline for broken footnotes
+ \splitmaxdepth\dp\strutbox
+ \floatingpenalty\@MM
+ \leftskip\z@skip
+ \rightskip\z@skip
+ \spaceskip\z@skip
+ \xspaceskip\z@skip
+ \parindent\defaultparindent
+ %
+ % Hang the footnote text off the number.
+ \hang
+ \textindent{\thisfootno}%
+ %
+ % Don't crash into the line above the footnote text. Since this
+ % expands into a box, it must come within the paragraph, lest it
+ % provide a place where TeX can split the footnote.
+ \footstrut
+ #1\strut}%
+}
+
+}%end \catcode `\@=11
+
+% Set the baselineskip to #1, and the lineskip and strut size
+% correspondingly. There is no deep meaning behind these magic numbers
+% used as factors; they just match (closely enough) what Knuth defined.
+%
+\def\lineskipfactor{.08333}
+\def\strutheightpercent{.70833}
+\def\strutdepthpercent {.29167}
+%
+\def\setleading#1{%
+ \normalbaselineskip = #1\relax
+ \normallineskip = \lineskipfactor\normalbaselineskip
+ \normalbaselines
+ \setbox\strutbox =\hbox{%
+ \vrule width0pt height\strutheightpercent\baselineskip
+ depth \strutdepthpercent \baselineskip
+ }%
+}
+
+% @| inserts a changebar to the left of the current line. It should
+% surround any changed text. This approach does *not* work if the
+% change spans more than two lines of output. To handle that, we would
+% have adopt a much more difficult approach (putting marks into the main
+% vertical list for the beginning and end of each change).
+%
+\def\|{%
+ % \vadjust can only be used in horizontal mode.
+ \leavevmode
+ %
+ % Append this vertical mode material after the current line in the output.
+ \vadjust{%
+ % We want to insert a rule with the height and depth of the current
+ % leading; that is exactly what \strutbox is supposed to record.
+ \vskip-\baselineskip
+ %
+ % \vadjust-items are inserted at the left edge of the type. So
+ % the \llap here moves out into the left-hand margin.
+ \llap{%
+ %
+ % For a thicker or thinner bar, change the `1pt'.
+ \vrule height\baselineskip width1pt
+ %
+ % This is the space between the bar and the text.
+ \hskip 12pt
+ }%
+ }%
+}
+
+% For a final copy, take out the rectangles
+% that mark overfull boxes (in case you have decided
+% that the text looks ok even though it passes the margin).
+%
+\def\finalout{\overfullrule=0pt}
+
+
+% End of control word definitions.
+
+\message{and turning on texinfo input format.}
+
+\def\openindices{%
+ \newindex{cp}%
+ \newcodeindex{fn}%
+ \newcodeindex{vr}%
+ \newcodeindex{tp}%
+ \newcodeindex{ky}%
+ \newcodeindex{pg}%
+}
+
+% Set some numeric style parameters, for 8.5 x 11 format.
+
+%\hsize = 6.5in
+\newdimen\defaultparindent \defaultparindent = 15pt
+\parindent = \defaultparindent
+\parskip 18pt plus 1pt
+\setleading{15pt}
+\advance\topskip by 1.2cm
+
+% Prevent underfull vbox error messages.
+\vbadness=10000
+
+% Following George Bush, just get rid of widows and orphans.
+\widowpenalty=10000
+\clubpenalty=10000
+
+% Use TeX 3.0's \emergencystretch to help line breaking, but if we're
+% using an old version of TeX, don't do anything. We want the amount of
+% stretch added to depend on the line length, hence the dependence on
+% \hsize. This makes it come to about 9pt for the 8.5x11 format.
+%
+\ifx\emergencystretch\thisisundefined
+ % Allow us to assign to \emergencystretch anyway.
+ \def\emergencystretch{\dimen0}%
+\else
+ \emergencystretch = \hsize
+ \divide\emergencystretch by 45
+\fi
+
+% Use @smallbook to reset parameters for 7x9.5 format (or else 7x9.25)
+\def\smallbook{
+
+% These values for secheadingskip and subsecheadingskip are
+% experiments. RJC 7 Aug 1992
+\global\secheadingskip = 17pt plus 6pt minus 3pt
+\global\subsecheadingskip = 14pt plus 6pt minus 3pt
+
+\global\lispnarrowing = 0.3in
+\setleading{12pt}
+\advance\topskip by -1cm
+\global\parskip 3pt plus 1pt
+\global\hsize = 5in
+\global\vsize=7.5in
+\global\tolerance=700
+\global\hfuzz=1pt
+\global\contentsrightmargin=0pt
+\global\deftypemargin=0pt
+\global\defbodyindent=.5cm
+
+\global\pagewidth=\hsize
+\global\pageheight=\vsize
+
+\global\let\smalllisp=\smalllispx
+\global\let\smallexample=\smalllispx
+\global\def\Esmallexample{\Esmalllisp}
+}
+
+% Use @afourpaper to print on European A4 paper.
+\def\afourpaper{
+\global\tolerance=700
+\global\hfuzz=1pt
+\setleading{12pt}
+\global\parskip 15pt plus 1pt
+
+\global\vsize= 53\baselineskip
+\advance\vsize by \topskip
+%\global\hsize= 5.85in % A4 wide 10pt
+\global\hsize= 6.5in
+\global\outerhsize=\hsize
+\global\advance\outerhsize by 0.5in
+\global\outervsize=\vsize
+\global\advance\outervsize by 0.6in
+
+\global\pagewidth=\hsize
+\global\pageheight=\vsize
+}
+
+% Allow control of the text dimensions. Parameters in order: textheight;
+% textwidth; \voffset; \hoffset (!); binding offset. All require a dimension;
+% header is additional; added length extends the bottom of the page.
+
+\def\changepagesizes#1#2#3#4#5
+{\global\vsize= #1
+ \advance\vsize by \topskip
+ \global\voffset= #3
+ \global\hsize= #2
+ \global\outerhsize=\hsize
+ \global\advance\outerhsize by 0.5in
+ \global\outervsize=\vsize
+ \global\advance\outervsize by 0.6in
+ \global\pagewidth=\hsize
+ \global\pageheight=\vsize
+ \global\normaloffset= #4
+ \global\bindingoffset= #5}
+
+% This layout is compatible with Latex on A4 paper.
+
+\def\afourlatex{\changepagesizes{22cm}{15cm}{7mm}{4.6mm}{5mm}}
+
+% Define macros to output various characters with catcode for normal text.
+\catcode`\"=\other
+\catcode`\~=\other
+\catcode`\^=\other
+\catcode`\_=\other
+\catcode`\|=\other
+\catcode`\<=\other
+\catcode`\>=\other
+\catcode`\+=\other
+\def\normaldoublequote{"}
+\def\normaltilde{~}
+\def\normalcaret{^}
+\def\normalunderscore{_}
+\def\normalverticalbar{|}
+\def\normalless{<}
+\def\normalgreater{>}
+\def\normalplus{+}
+
+% This macro is used to make a character print one way in ttfont
+% where it can probably just be output, and another way in other fonts,
+% where something hairier probably needs to be done.
+%
+% #1 is what to print if we are indeed using \tt; #2 is what to print
+% otherwise. Since all the Computer Modern typewriter fonts have zero
+% interword stretch (and shrink), and it is reasonable to expect all
+% typewriter fonts to have this, we can check that font parameter.
+%
+\def\ifusingtt#1#2{\ifdim \fontdimen3\the\font=0pt #1\else #2\fi}
+
+% Turn off all special characters except @
+% (and those which the user can use as if they were ordinary).
+% Most of these we simply print from the \tt font, but for some, we can
+% use math or other variants that look better in normal text.
+
+\catcode`\"=\active
+\def\activedoublequote{{\tt \char '042}}
+\let"=\activedoublequote
+\catcode`\~=\active
+\def~{{\tt \char '176}}
+\chardef\hat=`\^
+\catcode`\^=\active
+\def^{{\tt \hat}}
+
+\catcode`\_=\active
+\def_{\ifusingtt\normalunderscore\_}
+% Subroutine for the previous macro.
+\def\_{\lvvmode \kern.06em \vbox{\hrule width.3em height.1ex}}
+
+% \lvvmode is equivalent in function to \leavevmode.
+% Using \leavevmode runs into trouble when written out to
+% an index file due to the expansion of \leavevmode into ``\unhbox
+% \voidb@x'' ---which looks to TeX like ``\unhbox \voidb\x'' due to our
+% magic tricks with @.
+\def\lvvmode{\vbox to 0pt{}}
+
+\catcode`\|=\active
+\def|{{\tt \char '174}}
+\chardef \less=`\<
+\catcode`\<=\active
+\def<{{\tt \less}}
+\chardef \gtr=`\>
+\catcode`\>=\active
+\def>{{\tt \gtr}}
+\catcode`\+=\active
+\def+{{\tt \char 43}}
+%\catcode 27=\active
+%\def^^[{$\diamondsuit$}
+
+% Set up an active definition for =, but don't enable it most of the time.
+{\catcode`\==\active
+\global\def={{\tt \char 61}}}
+
+\catcode`\@=0
+
+% \rawbackslashxx output one backslash character in current font
+\global\chardef\rawbackslashxx=`\\
+%{\catcode`\\=\other
+%@gdef@rawbackslashxx{\}}
+
+% \rawbackslash redefines \ as input to do \rawbackslashxx.
+{\catcode`\\=\active
+@gdef@rawbackslash{@let\=@rawbackslashxx }}
+
+% \normalbackslash outputs one backslash in fixed width font.
+\def\normalbackslash{{\tt\rawbackslashxx}}
+
+% Say @foo, not \foo, in error messages.
+\escapechar=`\@
+
+% \catcode 17=0 % Define control-q
+\catcode`\\=\active
+
+% Used sometimes to turn off (effectively) the active characters
+% even after parsing them.
+@def@turnoffactive{@let"=@normaldoublequote
+@let\=@realbackslash
+@let~=@normaltilde
+@let^=@normalcaret
+@let_=@normalunderscore
+@let|=@normalverticalbar
+@let<=@normalless
+@let>=@normalgreater
+@let+=@normalplus}
+
+@def@normalturnoffactive{@let"=@normaldoublequote
+@let\=@normalbackslash
+@let~=@normaltilde
+@let^=@normalcaret
+@let_=@normalunderscore
+@let|=@normalverticalbar
+@let<=@normalless
+@let>=@normalgreater
+@let+=@normalplus}
+
+% If a .fmt file is being used, we don't want the `\input texinfo' to show up.
+% That is what \eatinput is for; after that, the `\' should revert to printing
+% a backslash.
+%
+@gdef@eatinput input texinfo{@fixbackslash}
+@global@let\ = @eatinput
+
+% On the other hand, perhaps the file did not have a `\input texinfo'. Then
+% the first `\{ in the file would cause an error. This macro tries to fix
+% that, assuming it is called before the first `\' could plausibly occur.
+%
+@gdef@fixbackslash{@ifx\@eatinput @let\ = @normalbackslash @fi}
+
+%% These look ok in all fonts, so just make them not special. The @rm below
+%% makes sure that the current font starts out as the newly loaded cmr10
+@catcode`@$=@other @catcode`@%=@other @catcode`@&=@other @catcode`@#=@other
+
+@textfonts
+@rm
+
+@c Local variables:
+@c page-delimiter: "^\\\\message"
+@c End:
diff --git a/gnu/usr.bin/cvs/contrib/rcs-to-cvs b/gnu/usr.bin/cvs/contrib/rcs-to-cvs
index 5863ed87414c..957d9b9abf99 100644
--- a/gnu/usr.bin/cvs/contrib/rcs-to-cvs
+++ b/gnu/usr.bin/cvs/contrib/rcs-to-cvs
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# $Id: rcs-to-cvs,v 1.4 1994/09/21 07:23:16 berliner Exp $
+# $Id: rcs-to-cvs,v 1.1.1.2 1995/03/31 07:43:51 nate Exp $
# Based on the CVS 1.0 checkin csh script.
# Contributed by Per Cederqvist <ceder@signum.se>.
# Rewritten in sh by David MacKenzie <djm@cygnus.com>.
diff --git a/gnu/usr.bin/cvs/contrib/rcs2log b/gnu/usr.bin/cvs/contrib/rcs2log
index d7900025b851..d7900025b851 100644..100755
--- a/gnu/usr.bin/cvs/contrib/rcs2log
+++ b/gnu/usr.bin/cvs/contrib/rcs2log
diff --git a/gnu/usr.bin/cvs/contrib/rcs2sccs b/gnu/usr.bin/cvs/contrib/rcs2sccs
index 054ac6c1eca9..2971b70b94a5 100644..100755
--- a/gnu/usr.bin/cvs/contrib/rcs2sccs
+++ b/gnu/usr.bin/cvs/contrib/rcs2sccs
@@ -2,7 +2,7 @@
#
#
# OrigId: rcs2sccs,v 1.12 90/10/04 20:52:23 kenc Exp Locker: kenc
-# $Id: rcs2sccs,v 1.1 1993/12/06 06:37:14 berliner Exp $
+# $Id: rcs2sccs,v 1.1.1.1 1995/03/31 07:44:00 nate Exp $
############################################################
# Error checking
diff --git a/gnu/usr.bin/cvs/contrib/sccs2rcs b/gnu/usr.bin/cvs/contrib/sccs2rcs
index 654024bf3fc3..23e2112a55e6 100644
--- a/gnu/usr.bin/cvs/contrib/sccs2rcs
+++ b/gnu/usr.bin/cvs/contrib/sccs2rcs
@@ -43,7 +43,7 @@
#
# Various hacks made by Brian Berliner before inclusion in CVS contrib area.
#
-# $Id: sccs2rcs,v 1.1 1992/04/10 03:04:26 berliner Exp $
+# $Id: sccs2rcs,v 1.1.1.2 1995/03/31 07:43:57 nate Exp $
#we'll assume the user set up the path correctly
diff --git a/gnu/usr.bin/cvs/cvs/Makefile b/gnu/usr.bin/cvs/cvs/Makefile
index 02efe022b883..c2e4df198daf 100644
--- a/gnu/usr.bin/cvs/cvs/Makefile
+++ b/gnu/usr.bin/cvs/cvs/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.25 1995/03/22 19:39:45 nate Exp $
+# $Id: Makefile,v 1.10 1995/03/31 07:55:08 nate Exp $
PROG= cvs
MAN1= cvs.1
diff --git a/gnu/usr.bin/cvs/cvs/cvs.1 b/gnu/usr.bin/cvs/cvs/cvs.1
index 749969e3d6d1..8e756b93039a 100644
--- a/gnu/usr.bin/cvs/cvs/cvs.1
+++ b/gnu/usr.bin/cvs/cvs/cvs.1
@@ -2,7 +2,7 @@
.ds Rv \\$3
.ds Dt \\$4
..
-.Id $Id: cvs.1,v 1.1.1.2 1995/03/31 07:44:48 nate Exp $
+.Id $Id: cvs.1,v 1.1.1.2.6.1 1995/08/29 11:46:09 davidg Exp $
.TH CVS 1 "\*(Dt"
.\" Full space in nroff; half space in troff
.de SP
diff --git a/gnu/usr.bin/cvs/cvs/cvsbug.sh b/gnu/usr.bin/cvs/cvs/cvsbug.sh
index 8c6a5bbd36b1..8c6a5bbd36b1 100644..100755
--- a/gnu/usr.bin/cvs/cvs/cvsbug.sh
+++ b/gnu/usr.bin/cvs/cvs/cvsbug.sh
diff --git a/gnu/usr.bin/cvs/cvsinit/Makefile b/gnu/usr.bin/cvs/cvsinit/Makefile
index da498fc8665c..992e7cf0a1c2 100644
--- a/gnu/usr.bin/cvs/cvsinit/Makefile
+++ b/gnu/usr.bin/cvs/cvsinit/Makefile
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile,v 1.1 1994/10/22 04:51:39 nate Exp $
afterinstall:
install -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
diff --git a/gnu/usr.bin/cvs/examples/Makefile b/gnu/usr.bin/cvs/examples/Makefile
index edb1cdc07566..1f5e7809cf7b 100644
--- a/gnu/usr.bin/cvs/examples/Makefile
+++ b/gnu/usr.bin/cvs/examples/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.5 1995/02/22 21:49:46 roberto Exp $
+# $Id: Makefile,v 1.1 1995/04/08 17:50:48 nate Exp $
CVSFILES= commitinfo loginfo rcsinfo editinfo modules
diff --git a/gnu/usr.bin/cvs/examples/commitinfo b/gnu/usr.bin/cvs/examples/commitinfo
index 7e602e2b2cb4..3f6ffb7454aa 100644
--- a/gnu/usr.bin/cvs/examples/commitinfo
+++ b/gnu/usr.bin/cvs/examples/commitinfo
@@ -1,5 +1,5 @@
#
-# $Id: commitinfo,v 1.2 1992/03/31 04:19:47 berliner Exp $
+# $Id: commitinfo,v 1.1.1.2 1995/03/31 07:44:32 nate Exp $
#
# The "commitinfo" file is used to control pre-commit checks.
# The filter on the right is invoked with the repository and a list
diff --git a/gnu/usr.bin/cvs/examples/editinfo b/gnu/usr.bin/cvs/examples/editinfo
index fb3f4e74fdf0..87d2ba9f9afc 100644
--- a/gnu/usr.bin/cvs/examples/editinfo
+++ b/gnu/usr.bin/cvs/examples/editinfo
@@ -1,5 +1,5 @@
#
-# $Id: editinfo,v 1.1 1992/03/21 06:49:39 berliner Exp $
+# $Id: editinfo,v 1.1.1.2 1995/03/31 07:44:37 nate Exp $
#
# The "editinfo" file is used to allow verification of logging
# information. It works best when a template (as specified in the
diff --git a/gnu/usr.bin/cvs/examples/rcsinfo b/gnu/usr.bin/cvs/examples/rcsinfo
index 21a7b471ff62..f07b9cbb54e1 100644
--- a/gnu/usr.bin/cvs/examples/rcsinfo
+++ b/gnu/usr.bin/cvs/examples/rcsinfo
@@ -1,5 +1,5 @@
#
-# $Id: rcsinfo,v 1.3 1992/04/10 18:59:14 berliner Exp $
+# $Id: rcsinfo,v 1.1.1.2 1995/03/31 07:44:35 nate Exp $
#
# The "rcsinfo" file is used to control templates with which the editor
# is invoked on commit and import.
diff --git a/gnu/usr.bin/cvs/lib/Makefile b/gnu/usr.bin/cvs/lib/Makefile
index af510b65f972..13369b110efb 100644
--- a/gnu/usr.bin/cvs/lib/Makefile
+++ b/gnu/usr.bin/cvs/lib/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.25 1995/03/22 19:39:45 nate Exp $
+# $Id: Makefile,v 1.8 1995/03/31 07:55:28 nate Exp $
LIB = cvs
NOPROFILE= yes
diff --git a/gnu/usr.bin/cvs/mkmodules/Makefile b/gnu/usr.bin/cvs/mkmodules/Makefile
index f37930b949bd..899f5de5c2f1 100644
--- a/gnu/usr.bin/cvs/mkmodules/Makefile
+++ b/gnu/usr.bin/cvs/mkmodules/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.25 1995/03/22 19:39:45 nate Exp $
+# $Id: Makefile,v 1.5 1995/03/31 07:55:30 nate Exp $
PROG = mkmodules
SRCS = mkmodules.c
diff --git a/gnu/usr.bin/dialog/Makefile b/gnu/usr.bin/dialog/Makefile
index 436519a7e32a..f6ae2938cedc 100644
--- a/gnu/usr.bin/dialog/Makefile
+++ b/gnu/usr.bin/dialog/Makefile
@@ -1,5 +1,5 @@
# Makefile for dialog
-# $Id: Makefile,v 1.3 1994/10/11 23:51:06 ache Exp $
+# $Id: Makefile,v 1.4 1994/10/28 03:12:45 ache Exp $
PROG= dialog
MAN1= dialog.1
diff --git a/gnu/usr.bin/gdb/doc/gdbint.texinfo b/gnu/usr.bin/gdb/doc/gdbint.texinfo
index 59e5a7f548e1..6ce27717028a 100644
--- a/gnu/usr.bin/gdb/doc/gdbint.texinfo
+++ b/gnu/usr.bin/gdb/doc/gdbint.texinfo
@@ -1,6 +1,6 @@
\input texinfo
@setfilename gdbint.info
-@c $Id: gdbint.texinfo,v 1.76 1994/07/17 21:17:18 shebs Exp $
+@c $Id: gdbint.texinfo,v 1.2 1995/01/11 16:29:41 ache Exp $
@ifinfo
@format
@@ -42,7 +42,7 @@ regarded as a program in the language TeX).
@page
@tex
\def\$#1${{#1}} % Kluge: collect RCS revision info without $...$
-\xdef\manvers{\$Revision: 1.76 $} % For use in headers, footers too
+\xdef\manvers{\$Revision: 1.2 $} % For use in headers, footers too
{\parskip=0pt
\hfill Cygnus Support\par
\hfill \manvers\par
diff --git a/gnu/usr.bin/gdb/doc/stabs.texinfo b/gnu/usr.bin/gdb/doc/stabs.texinfo
index 1c8d4071a412..9d4f794ca863 100644
--- a/gnu/usr.bin/gdb/doc/stabs.texinfo
+++ b/gnu/usr.bin/gdb/doc/stabs.texinfo
@@ -43,7 +43,7 @@ regarded as a program in the language TeX).
@page
@tex
\def\$#1${{#1}} % Kluge: collect RCS revision info without $...$
-\xdef\manvers{\$Revision: 2.120 $} % For use in headers, footers too
+\xdef\manvers{\$Revision: 1.2 $} % For use in headers, footers too
{\parskip=0pt
\hfill Cygnus Support\par
\hfill \manvers\par
diff --git a/gnu/usr.bin/gdb/gdb/freebsd-nat.c b/gnu/usr.bin/gdb/gdb/freebsd-nat.c
index 90b323674489..5a3935474ef2 100644
--- a/gnu/usr.bin/gdb/gdb/freebsd-nat.c
+++ b/gnu/usr.bin/gdb/gdb/freebsd-nat.c
@@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- $Id: freebsd-nat.c,v 1.6 1995/05/09 13:59:22 rgrimes Exp $
+ $Id: freebsd-nat.c,v 1.7 1995/05/30 04:57:05 rgrimes Exp $
*/
#include <sys/types.h>
diff --git a/gnu/usr.bin/gdb/gdb/gdb.1 b/gnu/usr.bin/gdb/gdb/gdb.1
index ee14f7073451..2a2af1f9a0e6 100644
--- a/gnu/usr.bin/gdb/gdb/gdb.1
+++ b/gnu/usr.bin/gdb/gdb/gdb.1
@@ -1,6 +1,6 @@
.\" Copyright (c) 1991 Free Software Foundation
.\" See section COPYING for conditions for redistribution
-.\" $Id: gdb.1,v 1.1 1994/01/28 12:39:43 pk Exp $
+.\" $Id: gdb.1,v 1.2 1994/12/30 23:25:45 jkh Exp $
.TH gdb 1 "4nov1991" "GNU Tools" "GNU Tools"
.SH NAME
gdb \- The GNU Debugger
diff --git a/gnu/usr.bin/gdb/gdb/kcorelow.c b/gnu/usr.bin/gdb/gdb/kcorelow.c
index e08c486b3fef..c28f5dc389a2 100644
--- a/gnu/usr.bin/gdb/gdb/kcorelow.c
+++ b/gnu/usr.bin/gdb/gdb/kcorelow.c
@@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- $Id: kcorelow.c,v 1.3 1995/04/26 01:01:09 jkh Exp $
+ $Id: kcorelow.c,v 1.4 1995/05/30 04:57:22 rgrimes Exp $
*/
#include "defs.h"
diff --git a/gnu/usr.bin/gdb/mmalloc/mmalloc.texi b/gnu/usr.bin/gdb/mmalloc/mmalloc.texi
index 5e28398c334c..f70ae68621ee 100644
--- a/gnu/usr.bin/gdb/mmalloc/mmalloc.texi
+++ b/gnu/usr.bin/gdb/mmalloc/mmalloc.texi
@@ -47,7 +47,7 @@ into another language, under the above conditions for modified versions.
@tex
\def\$#1${{#1}} % Kluge: collect RCS revision info without $...$
-\xdef\manvers{\$Revision: 1.1.1.1 $} % For use in headers, footers too
+\xdef\manvers{\$Revision: 1.1 $} % For use in headers, footers too
{\parskip=0pt
\hfill Cygnus Support\par
\hfill fnf\@cygnus.com\par
diff --git a/gnu/usr.bin/gzip/bits.c b/gnu/usr.bin/gzip/bits.c
index fae17801fa64..27bff48f71c1 100644
--- a/gnu/usr.bin/gzip/bits.c
+++ b/gnu/usr.bin/gzip/bits.c
@@ -60,7 +60,7 @@
#endif
#ifdef RCSID
-static char rcsid[] = "$Id: bits.c,v 1.3 1993/10/14 00:32:24 nate Exp $";
+static char rcsid[] = "$Id: bits.c,v 1.4 1995/05/30 05:00:30 rgrimes Exp $";
#endif
/* ===========================================================================
diff --git a/gnu/usr.bin/gzip/crypt.c b/gnu/usr.bin/gzip/crypt.c
index cbce024a01aa..57f62340ecda 100644
--- a/gnu/usr.bin/gzip/crypt.c
+++ b/gnu/usr.bin/gzip/crypt.c
@@ -2,5 +2,5 @@
* Hardly worth copyrighting :-)
*/
#ifdef RCSID
-static char rcsid[] = "$Id: crypt.c,v 0.6 1993/03/22 09:48:47 jloup Exp $";
+static char rcsid[] = "$Id: crypt.c,v 1.3 1993/10/14 00:32:26 nate Exp $";
#endif
diff --git a/gnu/usr.bin/gzip/deflate.c b/gnu/usr.bin/gzip/deflate.c
index 0bc0ed410815..5ed86205973b 100644
--- a/gnu/usr.bin/gzip/deflate.c
+++ b/gnu/usr.bin/gzip/deflate.c
@@ -68,7 +68,7 @@
#include "lzw.h" /* just for consistency checking */
#ifdef RCSID
-static char rcsid[] = "$Id: deflate.c,v 1.3 1993/10/14 00:32:29 nate Exp $";
+static char rcsid[] = "$Id: deflate.c,v 1.4 1995/05/30 05:00:31 rgrimes Exp $";
#endif
/* ===========================================================================
diff --git a/gnu/usr.bin/gzip/gzip.c b/gnu/usr.bin/gzip/gzip.c
index 846b69e6b37a..c10b4a095b82 100644
--- a/gnu/usr.bin/gzip/gzip.c
+++ b/gnu/usr.bin/gzip/gzip.c
@@ -45,7 +45,7 @@ static char *license_msg[] = {
*/
#ifdef RCSID
-static char rcsid[] = "$Id: gzip.c,v 1.3 1993/10/14 00:32:48 nate Exp $";
+static char rcsid[] = "$Id: gzip.c,v 1.4 1995/05/30 05:00:33 rgrimes Exp $";
#endif
#include <ctype.h>
diff --git a/gnu/usr.bin/gzip/inflate.c b/gnu/usr.bin/gzip/inflate.c
index a53d013dbcbb..a59d0ae5e132 100644
--- a/gnu/usr.bin/gzip/inflate.c
+++ b/gnu/usr.bin/gzip/inflate.c
@@ -97,7 +97,7 @@
*/
#ifdef RCSID
-static char rcsid[] = "$Id: inflate.c,v 1.3 1993/10/14 00:32:55 nate Exp $";
+static char rcsid[] = "$Id: inflate.c,v 1.4 1995/05/30 05:00:37 rgrimes Exp $";
#endif
#include <sys/types.h>
diff --git a/gnu/usr.bin/gzip/lzw.c b/gnu/usr.bin/gzip/lzw.c
index 12bf5c611d0c..92b3ce4c5515 100644
--- a/gnu/usr.bin/gzip/lzw.c
+++ b/gnu/usr.bin/gzip/lzw.c
@@ -3,7 +3,7 @@
*/
#ifdef RCSID
-static char rcsid[] = "$Id: lzw.c,v 0.9 1993/06/10 13:27:31 jloup Exp $";
+static char rcsid[] = "$Id: lzw.c,v 1.3 1993/10/14 00:32:59 nate Exp $";
#endif
#include "tailor.h"
diff --git a/gnu/usr.bin/gzip/match.S b/gnu/usr.bin/gzip/match.S
index 4a3d681c3d2b..6ff362308203 100644
--- a/gnu/usr.bin/gzip/match.S
+++ b/gnu/usr.bin/gzip/match.S
@@ -9,7 +9,7 @@
* Kristoffer Eriksson <ske@pkmab.se>
*/
-/* $Id: match.S,v 0.14 1993/06/11 18:33:24 jloup Exp $ */
+/* $Id: match.S,v 1.3 1993/10/14 00:33:02 nate Exp $ */
/* Preprocess with -DNO_UNDERLINE if your C compiler does not prefix
* external symbols with an underline character '_'.
diff --git a/gnu/usr.bin/gzip/revision.h b/gnu/usr.bin/gzip/revision.h
index f99b65f9bbd2..4e5362fb2c6f 100644
--- a/gnu/usr.bin/gzip/revision.h
+++ b/gnu/usr.bin/gzip/revision.h
@@ -13,4 +13,4 @@
# undef LZW
#endif
-/* $Id: revision.h,v 0.25 1993/06/24 08:29:52 jloup Exp $ */
+/* $Id: revision.h,v 1.3 1993/10/14 00:33:05 nate Exp $ */
diff --git a/gnu/usr.bin/gzip/tailor.h b/gnu/usr.bin/gzip/tailor.h
index 840733ab50e2..a3e632168035 100644
--- a/gnu/usr.bin/gzip/tailor.h
+++ b/gnu/usr.bin/gzip/tailor.h
@@ -8,7 +8,7 @@
* The target dependent functions should be defined in tailor.c.
*/
-/* $Id: tailor.h,v 1.3 1993/10/14 00:33:08 nate Exp $ */
+/* $Id: tailor.h,v 1.4 1995/05/30 05:00:38 rgrimes Exp $ */
#if defined(__MSDOS__) && !defined(MSDOS)
# define MSDOS
diff --git a/gnu/usr.bin/gzip/trees.c b/gnu/usr.bin/gzip/trees.c
index d5b41c8ab7d1..b3f452f4cb90 100644
--- a/gnu/usr.bin/gzip/trees.c
+++ b/gnu/usr.bin/gzip/trees.c
@@ -59,7 +59,7 @@
#include "gzip.h"
#ifdef RCSID
-static char rcsid[] = "$Id: trees.c,v 1.3 1993/10/14 00:33:11 nate Exp $";
+static char rcsid[] = "$Id: trees.c,v 1.4 1995/05/30 05:00:40 rgrimes Exp $";
#endif
/* ===========================================================================
diff --git a/gnu/usr.bin/gzip/unlzh.c b/gnu/usr.bin/gzip/unlzh.c
index e318e5ed9418..f8d7989588d6 100644
--- a/gnu/usr.bin/gzip/unlzh.c
+++ b/gnu/usr.bin/gzip/unlzh.c
@@ -4,7 +4,7 @@
*/
#ifdef RCSID
-static char rcsid[] = "$Id: unlzh.c,v 1.2 1993/06/24 10:59:01 jloup Exp $";
+static char rcsid[] = "$Id: unlzh.c,v 1.2 1993/10/14 00:33:14 nate Exp $";
#endif
#include <stdio.h>
diff --git a/gnu/usr.bin/gzip/unlzw.c b/gnu/usr.bin/gzip/unlzw.c
index fe2110fc347a..d873fb0323cc 100644
--- a/gnu/usr.bin/gzip/unlzw.c
+++ b/gnu/usr.bin/gzip/unlzw.c
@@ -8,7 +8,7 @@
*/
#ifdef RCSID
-static char rcsid[] = "$Id: unlzw.c,v 1.3 1993/10/14 00:33:17 nate Exp $";
+static char rcsid[] = "$Id: unlzw.c,v 1.4 1995/05/30 05:00:41 rgrimes Exp $";
#endif
#include <sys/types.h>
diff --git a/gnu/usr.bin/gzip/unpack.c b/gnu/usr.bin/gzip/unpack.c
index a00fdaefc6b2..447052de75dc 100644
--- a/gnu/usr.bin/gzip/unpack.c
+++ b/gnu/usr.bin/gzip/unpack.c
@@ -5,7 +5,7 @@
*/
#ifdef RCSID
-static char rcsid[] = "$Id: unpack.c,v 1.4 1993/06/11 19:25:36 jloup Exp $";
+static char rcsid[] = "$Id: unpack.c,v 1.3 1993/10/14 00:33:20 nate Exp $";
#endif
#include "tailor.h"
diff --git a/gnu/usr.bin/gzip/unzip.c b/gnu/usr.bin/gzip/unzip.c
index 7e287a157ad3..eda8046986c3 100644
--- a/gnu/usr.bin/gzip/unzip.c
+++ b/gnu/usr.bin/gzip/unzip.c
@@ -14,7 +14,7 @@
*/
#ifdef RCSID
-static char rcsid[] = "$Id: unzip.c,v 0.13 1993/06/10 13:29:00 jloup Exp $";
+static char rcsid[] = "$Id: unzip.c,v 1.3 1993/10/14 00:33:24 nate Exp $";
#endif
#include "tailor.h"
diff --git a/gnu/usr.bin/gzip/util.c b/gnu/usr.bin/gzip/util.c
index 2cddf92f8e07..e4eb06c7fa33 100644
--- a/gnu/usr.bin/gzip/util.c
+++ b/gnu/usr.bin/gzip/util.c
@@ -5,7 +5,7 @@
*/
#ifdef RCSID
-static char rcsid[] = "$Id: util.c,v 1.3 1993/10/14 00:33:26 nate Exp $";
+static char rcsid[] = "$Id: util.c,v 1.4 1995/05/30 05:00:43 rgrimes Exp $";
#endif
#include <ctype.h>
diff --git a/gnu/usr.bin/gzip/zip.c b/gnu/usr.bin/gzip/zip.c
index 507d1616efdd..67de7c97c5f1 100644
--- a/gnu/usr.bin/gzip/zip.c
+++ b/gnu/usr.bin/gzip/zip.c
@@ -5,7 +5,7 @@
*/
#ifdef RCSID
-static char rcsid[] = "$Id: zip.c,v 0.17 1993/06/10 13:29:25 jloup Exp $";
+static char rcsid[] = "$Id: zip.c,v 1.3 1993/10/14 00:33:32 nate Exp $";
#endif
#include <ctype.h>
diff --git a/gnu/usr.bin/kgdb/COPYING b/gnu/usr.bin/kgdb/COPYING
new file mode 100644
index 000000000000..9a1703758111
--- /dev/null
+++ b/gnu/usr.bin/kgdb/COPYING
@@ -0,0 +1,249 @@
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 1, February 1989
+
+ Copyright (C) 1989 Free Software Foundation, Inc.
+ 675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The license agreements of most software companies try to keep users
+at the mercy of those companies. By contrast, our General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. The
+General Public License applies to the Free Software Foundation's
+software and to any other program whose authors commit to using it.
+You can use it for your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Specifically, the General Public License is designed to make
+sure that you have the freedom to give away or sell copies of free
+software, that you receive source code or can get it if you want it,
+that you can change the software or use pieces of it in new free
+programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of a such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must tell them their rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any program or other work which
+contains a notice placed by the copyright holder saying it may be
+distributed under the terms of this General Public License. The
+"Program", below, refers to any such program or work, and a "work based
+on the Program" means either the Program or any work containing the
+Program or a portion of it, either verbatim or with modifications. Each
+licensee is addressed as "you".
+
+ 1. You may copy and distribute verbatim copies of the Program's source
+code as you receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice and
+disclaimer of warranty; keep intact all the notices that refer to this
+General Public License and to the absence of any warranty; and give any
+other recipients of the Program a copy of this General Public License
+along with the Program. You may charge a fee for the physical act of
+transferring a copy.
+
+ 2. You may modify your copy or copies of the Program or any portion of
+it, and copy and distribute such modifications under the terms of Paragraph
+1 above, provided that you also do the following:
+
+ a) cause the modified files to carry prominent notices stating that
+ you changed the files and the date of any change; and
+
+ b) cause the whole of any work that you distribute or publish, that
+ in whole or in part contains the Program or any part thereof, either
+ with or without modifications, to be licensed at no charge to all
+ third parties under the terms of this General Public License (except
+ that you may choose to grant warranty protection to some or all
+ third parties, at your option).
+
+ c) If the modified program normally reads commands interactively when
+ run, you must cause it, when started running for such interactive use
+ in the simplest and most usual way, to print or display an
+ announcement including an appropriate copyright notice and a notice
+ that there is no warranty (or else, saying that you provide a
+ warranty) and that users may redistribute the program under these
+ conditions, and telling the user how to view a copy of this General
+ Public License.
+
+ d) You may charge a fee for the physical act of transferring a
+ copy, and you may at your option offer warranty protection in
+ exchange for a fee.
+
+Mere aggregation of another independent work with the Program (or its
+derivative) on a volume of a storage or distribution medium does not bring
+the other work under the scope of these terms.
+
+ 3. You may copy and distribute the Program (or a portion or derivative of
+it, under Paragraph 2) in object code or executable form under the terms of
+Paragraphs 1 and 2 above provided that you also do one of the following:
+
+ a) accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of
+ Paragraphs 1 and 2 above; or,
+
+ b) accompany it with a written offer, valid for at least three
+ years, to give any third party free (except for a nominal charge
+ for the cost of distribution) a complete machine-readable copy of the
+ corresponding source code, to be distributed under the terms of
+ Paragraphs 1 and 2 above; or,
+
+ c) accompany it with the information you received as to where the
+ corresponding source code may be obtained. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form alone.)
+
+Source code for a work means the preferred form of the work for making
+modifications to it. For an executable file, complete source code means
+all the source code for all modules it contains; but, as a special
+exception, it need not include source code for modules which are standard
+libraries that accompany the operating system on which the executable
+file runs, or for standard header files or definitions files that
+accompany that operating system.
+
+ 4. You may not copy, modify, sublicense, distribute or transfer the
+Program except as expressly provided under this General Public License.
+Any attempt otherwise to copy, modify, sublicense, distribute or transfer
+the Program is void, and will automatically terminate your rights to use
+the Program under this License. However, parties who have received
+copies, or rights to use copies, from you under this General Public
+License will not have their licenses terminated so long as such parties
+remain in full compliance.
+
+ 5. By copying, distributing or modifying the Program (or any work based
+on the Program) you indicate your acceptance of this license to do so,
+and all its terms and conditions.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the original
+licensor to copy, distribute or modify the Program subject to these
+terms and conditions. You may not impose any further restrictions on the
+recipients' exercise of the rights granted herein.
+
+ 7. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of the license which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+the license, you may choose any version ever published by the Free Software
+Foundation.
+
+ 8. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ Appendix: How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to humanity, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these
+terms.
+
+ To do so, attach the following notices to the program. It is safest to
+attach them to the start of each source file to most effectively convey
+the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) 19yy <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 1, or (at your option)
+ any later version.
+
+ 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. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) 19xx name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the
+appropriate parts of the General Public License. Of course, the
+commands you use may be called something other than `show w' and `show
+c'; they could even be mouse-clicks or menu items--whatever suits your
+program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ program `Gnomovision' (a program to direct compilers to make passes
+ at assemblers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+That's all there is to it!
diff --git a/gnu/usr.bin/kgdb/ChangeLog b/gnu/usr.bin/kgdb/ChangeLog
new file mode 100644
index 000000000000..1f2342b797a7
--- /dev/null
+++ b/gnu/usr.bin/kgdb/ChangeLog
@@ -0,0 +1,4887 @@
+Thu Feb 8 01:11:55 1990 Jim Kingdon (kingdon at pogo.ai.mit.edu)
+
+ * GDB 3.5 released.
+
+ * version.c: Change version number to 3.5
+
+Tue Feb 6 15:58:06 1990 Jim Kingdon (kingdon at pogo.ai.mit.edu)
+
+ * m-hp9k320.h: define ATTACH_DETACH.
+ hp9k320-dep.c [ATTACH_DETACH]: New code.
+
+Thu Feb 1 17:43:00 1990 Jim Kingdon (kingdon at pogo.ai.mit.edu)
+
+ * valprint.c (is_nan, val_print): Use char * not void *.
+
+ * symmisc.c (print_symbol): Print newline after label.
+
+Tue Jan 30 15:35:52 1990 Jim Kingdon (kingdon at albert.ai.mit.edu)
+
+ * Makefile.dist (READLINE): Add {readline,history}.texinfo.
+
+ * m-merlin.h: Put in clarifying comments about SHELL_FILE.
+ config.gdb (merlin): Explain about /usr/local/lib/gdb-sh.
+
+Sat Jan 27 02:30:27 1990 Jim Kingdon (kingdon at pogo.ai.mit.edu)
+
+ * version.c: Change version number to 3.5alpha.1.
+
+ * dbxread.c (process_one_symbol): Compare context_stack_depth
+ with !VARIABLES_INSIDE_BLOCK, not VARIABLES_INSIDE_BLOCK.
+
+Fri Jan 26 01:21:51 1990 Jim Kingdon (kingdon at mole.ai.mit.edu)
+
+ * main.c [ALIGN_STACK_ON_STARTUP]: New code.
+ m-i386.h: Define ALIGN_STACK_ON_STARTUP.
+
+ * m-merlin.h (NO_SIGINTERRUPT, SHELL_FILE): Define.
+
+ * umax-dep.c (exec_file_command): Add commas to call to
+ read_section_hdr.
+
+Tue Jan 23 15:49:47 1990 Jim Kingdon (kingdon at pogo.ai.mit.edu)
+
+ * dbxread.c (define_symbol): Deal with deftype 'X'.
+
+ * convex-dep.c (wait): Make it pid_t.
+
+ * convex-dep.c (comm_registers_info): accept decimal comm register
+ specification, as "i comm 32768".
+
+ * dbxread.c (process_one_symbol): Make VARIABLES_INSIDE_BLOCK
+ macro say by itself where variables are. Pass it desc.
+ m-convex.h (VARIABLES_INSIDE_BLOCK): Nonzero for native compiler.
+
+ * m-convex.h (SET_STACK_LIMIT_HUGE): Define.
+ (IGNORE_SYMBOL): Take out #ifdef N_MONPT and put in 0xc4.
+
+Fri Jan 19 20:04:15 1990 Jim Kingdon (kingdon at albert.ai.mit.edu)
+
+ * printcmd.c (print_frame_args): Always set highest_offset to
+ current_offset when former is -1.
+
+ * dbxread.c (read_struct_type): Print nice error message
+ when encountering multiple inheritance.
+
+Thu Jan 18 13:43:30 1990 Jim Kingdon (kingdon at mole.ai.mit.edu)
+
+ * dbxread.c (read_dbx_symtab): Always treat N_FN as a potential
+ source for a x.o or -lx symbol, ignoring OFILE_FN_FLAGGED.
+
+ * printcmd.c (print_frame_args): Cast -1 to (CORE_ADDR).
+
+ * hp300bsd-dep.c (_initialize_hp300_dep): Get kernel_u_addr.
+ m-hp300bsd.h (KERNEL_U_ADDR): Use kernel_u_addr.
+
+ * infcmd.c (run_command): #if 0 out call to
+ breakpoint_clear_ignore_counts.
+
+Thu Jan 11 12:58:12 1990 Jim Kingdon (kingdon at mole)
+
+ * printcmd.c (print_frame_args) [STRUCT_ARG_SYM_GARBAGE]:
+ Try looking up name of var before giving up & printing '?'.
+
+Wed Jan 10 14:00:14 1990 Jim Kingdon (kingdon at pogo)
+
+ * many files: Move stdio.h before param.h.
+
+ * sun3-dep.c (store_inferior_registers): Only try to write FP
+ regs #ifdef FP0_REGNUM.
+
+Mon Jan 8 17:56:15 1990 Jim Kingdon (kingdon at pogo)
+
+ * symtab.c: #if 0 out "info methods" code.
+
+Sat Jan 6 12:33:04 1990 Jim Kingdon (kingdon at pogo)
+
+ * dbxread.c (read_struct_type): Set TYPE_NFN_FIELDS_TOTAL
+ from all baseclasses; remove vestigial variable baseclass.
+
+ * findvar.c (read_var_value): Check REG_STRUCT_HAS_ADDR.
+ printcmd.c (print_frame_args): Check STRUCT_ARG_SYM_GARBAGE.
+ m-sparc.h: Define REG_STRUCT_HAS_ADDR and STRUCT_ARG_SYM_GARBAGE.
+
+ * blockframe.c (get_frame_block): Subtract one from pc if not
+ innermost frame.
+
+Fri Dec 29 15:26:33 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * printcmd.c (print_frame_args): check highest_offset != -1, not i.
+
+Thu Dec 28 16:21:02 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * valops.c (value_struct_elt): Clean up error msg.
+
+ * breakpoint.c (describe_other_breakpoints):
+ Delete extra space before "also set at" and add period at end.
+
+Tue Dec 19 10:28:42 1989 Jim Kingdon (kingdon at pogo)
+
+ * source.c (print_source_lines): Tell user which line number
+ was out of range when printing error message.
+
+Sun Dec 17 14:14:09 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * blockframe.c (find_pc_partial_function): Use
+ BLOCK_START (SYMBOL_BLOCK_VALUE (f)) instead of
+ SYMBOL_VALUE (f) to get start of function.
+
+ * dbxread.c: Make xxmalloc just a #define for xmalloc.
+
+Thu Dec 14 16:13:16 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * m68k-opcode.h (fseq & following fp instructions):
+ Change @ to $.
+
+Fri Dec 8 19:06:44 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * breakpoint.c (breakpoint_clear_ignore_counts): New function.
+ infcmd.c (run_command): Call it.
+
+Wed Dec 6 15:03:38 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * valprint.c: Change it so "array-max 0" means there is
+ no limit.
+
+ * expread.y (yylex): Change error message "invalid token in
+ expression" to "invalid character '%c' in expression".
+
+Mon Dec 4 16:12:54 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * blockframe.c (find_pc_partial_function): Always return 1
+ for success, 0 for failure, and set *NAME and *ADDRESS to
+ match the return value.
+
+ * dbxread.c (symbol_file_command): Use perror_with_name on
+ error from stat.
+ (psymtab_to_symtab, add_file_command),
+ core.c (validate_files), source.c (find_source_lines),
+ default-dep.c (exec_file_command): Check for errors from stat,
+ fstat, and myread.
+
+Fri Dec 1 05:16:42 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * valops.c (check_field): When following pointers, just get
+ their types; don't call value_ind.
+
+Thu Nov 30 14:45:29 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * config.gdb (pyr): New machine.
+ core.c [REG_STACK_SEGMENT]: New code.
+ dbxread.c (process_one_symbol): Cast return from copy_pending
+ to long before casting to enum namespace.
+ infrun.c: Split registers_info into DO_REGISTERS_INFO
+ and registers_info.
+ m-pyr.h, pyr-{dep.c,opcode.h,pinsn.c}: New files.
+
+ * hp300bsd-dep.c: Stay in sync with default-dep.c.
+
+ * m-hp300bsd.h (IN_SIGTRAMP): Define.
+
+Mon Nov 27 23:48:21 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu)
+
+ * m-sparc.h (EXTRACT_RETURN_VALUE, STORE_RETURN_VALUE):
+ Return floating point values in %f0.
+
+Tue Nov 21 00:34:46 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * dbxread.c (read_type): #if 0 out code which skips to
+ comma following x-ref.
+
+Sat Nov 18 20:10:54 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * valprint.c (val_print): Undo changes of Nov 11 & 16.
+ (print_string): Add parameter force_ellipses.
+ (val_print): Pass force_ellipses true when we stop fetching string
+ before we get to the end, else pass false.
+
+Thu Nov 16 11:59:50 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * infrun.c (restore_inferior_status): Don't try to restore
+ selected frame if the inferior no longer exists.
+
+ * valprint.c (val_print): Rewrite string printing code not to
+ call print_string.
+
+ * Makefile.dist (clean): Remove xgdb and xgdb.o.
+
+Tue Nov 14 12:41:47 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * Makefile.dist (XGDB, bindir, xbindir, install, all): New stuff.
+
+Sat Nov 11 15:29:38 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * valprint.c (val_print): chars_to_get: New variable.
+
+Thu Nov 9 12:31:47 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * main.c (main): Process "-help" as a switch that doesn't
+ take an argument.
+
+Wed Nov 8 13:07:02 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * Makefile.dist (gdb.tar.Z): Add "else true".
+
+Tue Nov 7 12:25:14 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * infrun.c (restore_inferior_status): Don't dereference fid if NULL.
+
+ * config.gdb (sun3, sun4): Accept "sun3" and "sun4".
+
+Mon Nov 6 09:49:23 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * Makefile.dist (Makefile): Move comments after commands.
+
+ * *-dep.c [READ_COFF_SYMTAB]: Pass optional header size to
+ read_section_hdr().
+
+ * inflow.c: Include <fcntl.h> regardless of USG.
+
+ * coffread.c (read_section_hdr): Add optional_header_size.
+ (symbol_file_command): Pass optional header size to
+ read_section_hdr().
+ (read_coff_symtab): Initialize filestring.
+
+ * version.c: Change version to 3.4.xxx.
+
+ * GDB 3.4 released.
+
+Sun Nov 5 11:39:01 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * version.c: Change version to 3.4.
+
+ * symtab.c (decode_line_1): Only skip past "struct" if it
+ is there.
+
+ * valops.c (value_ind), eval.c (evaluate_subexp, case UNOP_IND):
+ Have "*" <int-valued-exp> return an int, not a LONGEST.
+
+ * utils.c (fprintf_filtered): Pass arg{4,5,6} to sprintf.
+
+ * printcmd.c (x_command): Use variable itself rather
+ than treating it as a pointer only if it is a function.
+ (See comment "this makes x/i main work").
+
+ * coffread.c (symbol_file_command): Use error for
+ "%s does not have a symbol-table.\n".
+
+Wed Nov 1 19:56:18 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * dbxread.c [BELIEVE_PCC_PROMOTION_TYPE]: New code.
+ m-sparc.h: Define BELIEVE_PCC_PROMOTION_TYPE.
+
+Thu Oct 26 12:45:00 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * infrun.c: Include <sys/dir.h>.
+
+ * dbxread.c (read_dbx_symtab, case N_LSYM, case 'T'):
+ Check for enum types and put constants in psymtab.
+
+Mon Oct 23 15:02:25 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * dbxread.c (define_symbol, read_dbx_symtab): Handle enum
+ constants (e.g. "b:c=e6,0").
+
+Thu Oct 19 14:57:26 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * stack.c (frame_info): Use FRAME_ARGS_ADDRESS_CORRECT
+ m-vax.h (FRAME_ARGS_ADDRESS_CORRECT): New macro.
+ (FRAME_ARGS_ADDRESS): Restore old meaning.
+
+ * frame.h (Frame_unknown): New macro.
+ stack.c (frame_info): Check for Frame_unknown return from
+ FRAME_ARGS_ADDRESS.
+ m-vax.h (FRAME_ARGS_ADDRESS): Sometimes return Frame_unknown.
+
+ * utils.c (fatal_dump_core): Add "internal error" to message.
+
+ * infrun.c (IN_SIGTRAMP): New macro.
+ (wait_for_inferior): Use IN_SIGTRAMP.
+ m-vax.h (IN_SIGTRAMP): New macro.
+
+Wed Oct 18 15:09:22 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * config.gdb, Makefile.dist: Shorten m-i386-sv32.h.
+
+ * coffread.c (symbol_file_command): Pass 0 to select_source_symtab.
+
+Tue Oct 17 12:24:41 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * i386-dep.c (i386_frame_num_args): Take function from m-i386.h
+ file. Check for pfi null.
+ m-i386.h (FRAME_NUM_ARGS): Use i386_frame_num_args.
+
+ * infrun.c (wait_for_inferior): set stop_func_name to 0
+ before calling find_pc_partial_function.
+
+Thu Oct 12 01:08:50 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * breakpoint.c (_initialize_breakpoint): Add "disa".
+
+ * Makefile.dist: Add GLOBAL_CFLAGS and pass to readline.
+
+ * config.gdb (various): "$machine =" -> "machine =".
+
+Wed Oct 11 11:54:31 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * inflow.c (try_writing_regs): #if 0 out this function.
+
+ * main.c (main): Add "-help" option.
+
+ * dbxread.c (read_dbx_symtab): Merge code for N_FUN with
+ N_STSYM, etc.
+
+Mon Oct 9 14:21:55 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * inflow.c (try_writing_regs_command): Don't write past end
+ of struct user.
+
+ * dbxread.c (read_struct_type): #if 0 out code which checks for
+ bitpos and bitsize 0.
+
+ * config.gdb: Accept sequent-i386 (not seq386).
+ (symmetry): Set depfile and paramfile.
+
+ * m-convex.h (IGNORE_SYMBOL): Check for N_MONPT if defined.
+
+Thu Oct 5 10:14:26 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * default-dep.c (read_inferior_memory): Put #if 0'd out comment
+ within /* */.
+
+Wed Oct 4 18:44:41 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu)
+
+ * config.gdb: Change /dev/null to m-i386.h for various
+ 386 machine "opcodefile" entries.
+
+ * config.gdb: Accept seq386 for sequent symmetry.
+
+Mon Oct 2 09:59:50 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * hp300bsd-dep.c: Fix copyright notice.
+
+Sun Oct 1 16:25:30 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * Makefile.dist (DEPFILES): Add isi-dep.c.
+
+ * default-dep.c (read_inferior_memory): Move #endif after else.
+
+Sat Sep 30 12:50:16 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * version.c: Change version number to 3.3.xxx.
+
+ * GDB 3.3 released.
+
+ * version.c: Change version number to 3.3.
+
+ * Makefile.dist (READLINE): Add vi_mode.c
+
+ * config.gdb (i386): Change /dev/null to m-i386.h
+
+ * config.gdb: Add ';;' before 'esac'.
+
+ * Makefile.dist (gdb.tar.Z): Move comment above dependency.
+
+ * dbxread.c (read_ofile_symtab): Check symbol before start
+ of source file for GCC_COMPILED_FLAG_SYMBOL.
+ (start_symtab): Don't clear processing_gcc_compilation.
+
+Thu Sep 28 22:30:23 1989 Roland McGrath (roland at hobbes.ai.mit.edu)
+
+ * valprint.c (print_string): If LENGTH is zero, print "".
+
+Wed Sep 27 10:15:10 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu)
+
+ * config.gdb: "rm tmp.c" -> "rm -f tmp.c".
+
+Tue Sep 26 13:02:10 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * utils.c (_initialize_utils): Use termcap to set lines_per_page
+ and chars_per_line.
+
+Mon Sep 25 10:06:43 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * dbxread.c (read_dbx_symtab, N_SOL): Do not add the same file
+ more than once.
+
+Thu Sep 21 12:43:18 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * infcmd.c (unset_environment_command): Delete all variables
+ if called with no arg.
+
+ * remote.c, inferior.h (remote_{read,write}_inferior_memory):
+ New functions.
+ core.c ({read,write}_memory): Use remote_{read,write}_inferior_memory.
+
+ * valops.c (call_function): When reserving stack space for
+ arguments, call value_arg_coerce.
+
+ * m-hp9k320.h: define BROKEN_LARGE_ALLOCA.
+
+ * breakpoint.c (delete_command): Ask for confirmation only
+ when there are breakpoints.
+
+ * dbxread.c (read_struct_type): If lookup_basetype_type has
+ copied a stub type, call add_undefined_type.
+
+ * sparc_pinsn.c (compare_opcodes): Check for "1+i" anywhere
+ in args.
+
+ * val_print.c (type_print_base): Print stub types as
+ "<incomplete type>".
+
+Wed Sep 20 07:32:00 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * sparc-opcode.h (swapa): Remove i bit from match.
+ (all alternate space instructions): Delete surplus "foo rs1+0"
+ patterns.
+
+ * Makefile.dist (LDFLAGS): Set to $(CFLAGS).
+
+ * remote-multi.shar (remote_utils.c, putpkt): Change csum to unsigned.
+
+Tue Sep 19 14:15:16 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu)
+
+ * sparc-opcode.h: Set i bit in lose for many instructions which
+ aren't immediate.
+
+ * stack.c (print_frame_info): add "func = 0".
+
+Mon Sep 18 16:19:48 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * sparc-opcode.h (mov): Add mov to/from %tbr, %psr, %wim.
+
+ * sparc-opcode.h (rett): Fix notation to use suggested assembler
+ syntax from architecture manual.
+
+ * symmetry-dep.c (I386_REGNO_TO_SYMMETRY): New macro.
+ (i386_frame_find_saved_regs): Use I386_REGNO_TO_SYMMETRY.
+
+Sat Sep 16 22:21:17 1989 Jim Kingdon (kingdon at spiff)
+
+ * remote.c (remote_close): Set remote_desc to -1.
+
+ * gdb.texinfo (Output): Fix description of echo to match
+ reality and ANSI C.
+
+Fri Sep 15 14:28:59 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu)
+
+ * symtab.c (lookup_symbol): Add comment about "asm".
+
+ * sparc-pinsn.c: Use NUMOPCODES.
+
+ * sparc-opcode.h (NUMOPCODES): Use sparc_opcodes[0] not *sparc_opcodes.
+
+Thu Sep 14 15:25:20 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu)
+
+ * dbxread.c (xxmalloc): Print error message before calling abort().
+
+ * infrun.c (wait_for_inferior): Check for {stop,prev}_func_name
+ null before passing to strcmp.
+
+Wed Sep 13 12:34:15 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * sparc-opcode.h: New field delayed.
+ sparc-pinsn.c (is_delayed_branch): New function.
+ (print_insn): Check for delayed branches.
+
+ * stack.c (print_frame_info): Use misc_function_vector in
+ case where ar truncates file names.
+
+Tue Sep 12 00:16:14 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * convex-dep.c (psw_info): Move "struct pswbit *p" with declarations.
+
+Mon Sep 11 14:59:57 1989 Jim Kingdon (kingdon at spiff)
+
+ * convex-dep.c (core_file_command): Delete redundant printing
+ of "Program %s".
+
+ * m-convex.h (ENTRY_POINT): New macro.
+
+ * m-convex.h (FRAME_CHAIN_VALID): Change outside_first_object_file
+ to outside_startup_file
+
+ * main.c: #if 0 out catch_termination and related code.
+
+ * command.c (lookup_cmd_1): Consider underscores part of
+ command names.
+
+Sun Sep 10 09:20:12 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * printcmd.c: Change asdump_command to disassemble_command
+ (_initialize_printcmd): Change asdump to diassemble.
+
+ * main.c (main): Exit with code 0 if we hit the end of a batch
+ file.
+
+ * Makefile.dist (libreadline.a): Fix syntax of "CC=${CC}".
+
+Sat Sep 9 01:07:18 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu)
+
+ * values.c (history_info): Renamed to value_history_info.
+ Command renamed to "info value" (with "info history" still
+ accepted).
+
+ * sparc-pinsn.c (print_insn): Extend symbolic address printing
+ to cover "sethi" following by an insn which uses 1+i.
+
+Fri Sep 8 14:24:01 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * m-hp9k320.h, m-hp300bsd.h, m-altos.h, m-sparc.h, m-sun3.h
+ (READ_GDB_SYMSEGS): Remove.
+ dbxread.c [READ_GDB_SYMSEGS]: Remove code to read symsegs.
+
+ * sparc-pinsn.c (print_insn): Detect "sethi-or" pairs and
+ print symbolic address.
+
+ * sparc-opcode.h (sethi, set): Change lose from 0xc0000000 to
+ 0xc0c00000000.
+
+ * remote.c (remote_desc): Initialize to -1.
+
+ * Makefile.dist (libreadline.a): Pass CC='${CC}' to readline makefile.
+
+Thu Sep 7 00:07:17 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu)
+
+ * dbxread.c (read_struct_type): Check for static member functions.
+ values.c, eval.c, valarith.c, valprint.c, valops.c: Merge changes
+ from Tiemann for static member functions.
+
+ * sparc-opcode.h (tst): Fix all 3 patterns.
+
+ * Makefile.dist (gdb1): New rule.
+
+ * sparc-opcode.h: Change comment about what the disassembler
+ does with the order of the opcodes.
+
+ * sparc-pinsn.c (compare_opcodes): Put 1+i before i+1.
+ Also fix mistaken comment about preserving order of original table.
+
+ * sparc-opcode.h (clr, mov): Fix incorrect lose entries.
+
+ * m-symmetry.h (FRAME_NUM_ARGS): Add check to deal with code that
+ GCC sometimes generates.
+
+ * config.gdb: Change all occurances of "skip" to "/dev/null".
+
+ * README (about languages other than C): Update comments about
+ Pascal and FORTRAN.
+
+ * sparc-opcode.h (nop): Change lose from 0xae3fffff to 0xfe3fffff.
+
+ * values.c (value_virtual_fn_field): #if 0-out assignment to
+ VALUE_TYPE(vtbl).
+
+Wed Sep 6 12:19:22 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * utils.c (fatal_dump_core): New function.
+ Makefile.dist (MALLOC_FLAGS): use -Dbotch=fatal_dump_core
+
+Tue Sep 5 15:47:18 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * breakpoint.c (enable_command): With no arg, enable all bkpts.
+
+ * Makefile.dist (Makefile): Remove \"'s around $(MD).
+
+ * Makefile.dist: In "cd readline; make . . ." change first
+ SYSV_DEFINE to SYSV.
+
+ * m68k-pinsn.c (_initialize_pinsn): Use alternate assembler
+ syntax #ifdef HPUX_ASM
+
+Sat Sep 2 23:24:43 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu)
+
+ * values.c (history_info): Don't check num_exp[0] if num_exp
+ is nil (just like recent editing_info change).
+
+Fri Sep 1 19:19:01 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu)
+
+ * gdb.texinfo (inc-history, inc-readline): Copy in the inc-* files
+ because people might not have makeinfo.
+
+ * README (xgdb): Strengthen nasty comments.
+
+ * gdb.texinfo: Change @setfilename to "gdb.info".
+
+Thu Aug 31 17:23:50 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu)
+
+ * main.c (editing_info): Don't check arg[0] if arg is null.
+
+ * m-vax.h: Add comment about known sigtramp bug.
+
+ * sun3-dep.c, sparc-dep.c (IS_OBJECT_FILE, exec_file_command):
+ Get right text & data addresses for .o files.
+
+Wed Aug 30 13:54:19 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * utils.c (tilde_expand): Remove function (it's in readline).
+
+ * sparc-opcode.h (call): Change "8" to "9" in first two
+ patterns (%g7->%o7).
+
+Tue Aug 29 16:44:41 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * printcmd.c (whatis_command): Change 4th arg to type_print
+ from 1 to -1.
+
+Mon Aug 28 12:22:41 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * dbxread.c (psymtab_to_symtab_1): In "and %s ..." change
+ pst->filename to pst->dependencies[i]->filename.
+
+ * blockframe.c (FRAMELESS_LOOK_FOR_PROLOGUE): New macro
+ made from FRAMELESS_FUNCTION_INVOCATION from m-sun3.h except
+ that it checks for zero return from get_pc_function_start.
+ m-hp9k320.h, m-hp300bsd.h, m-i386.h, m-isi.h, m-altos.h,
+ m-news.h, m-sparc.h, m-sun2.h, m-sun3.h, m-symmetry.h
+ (FRAMELESS_FUNCTION_INVOCATION): Use FRAMELESS_LOOK_FOR_PROLOGUE.
+
+ * dbxread.c (read_struct_type): Give warning and ignore field
+ if bitpos and bitsize are zero.
+
+Sun Aug 27 04:55:20 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu)
+
+ * dbxread.c (psymtab_to_symtab{,_1}): Print message about
+ reading in symbols before reading stringtab, not after.
+
+Sat Aug 26 02:01:53 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * dbxread.c (IS_OBJECT_FILE, ADDR_OF_TEXT_SEGMENT): New macros.
+ (read_dbx_symtab): Use text_addr & text_size to set end_of_text_addr.
+ (symbol_file_command): pass text_addr & text_size to read_dbx_symtab.
+
+Fri Aug 25 23:08:13 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * valprint.c (value_print): Try to give the name of function
+ pointed to when printing a function pointer.
+
+Thu Aug 24 23:18:40 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * core.c (xfer_core_file): In cases where MEMADDR is above the
+ largest address that makes sense, set i to len.
+
+Thu Aug 24 16:04:17 1989 Roland McGrath (roland at hobbes.ai.mit.edu)
+
+ * valprint.c (print_string): New function to print a character
+ string, doing array-max limiting and repeat count processing.
+ (val_print, value_print): Use print_string.
+ (REPEAT_COUNT_THRESHOLD): New #define, the max number of elts to print
+ without using a repeat count. Set to ten.
+ (value_print, val_print): Use REPEAT_COUNT_THRESHOLD.
+
+ * utils.c (printchar): Use {fputs,fprintf}_filtered.
+
+ * valprint.c (val_print): Pass the repeat count arg to the
+ fprintf_filtered call for "<repeats N times>" messages.
+
+Wed Aug 23 22:53:47 1989 Roland McGrath (roland at hobbes.ai.mit.edu)
+
+ * utils.c: Include <pwd.h>.
+
+ * main.c: Declare free.
+
+Wed Aug 23 05:05:59 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu)
+
+ * utils.c, defs.h: Add tilde_expand.
+ source.c (directory_command),
+ main.c (cd_command),
+ main.c (set_history_filename),
+ dbxread.c (symbol_file_command),
+ coffread.c (symbol_file_command),
+ dbxread.c (add_file_command),
+ symmisc.c (print_symtabs),
+ *-dep.c (exec_file_command, core_file_command),
+ main.c (source_command): Use tilde_expand.
+
+ * dbxread.c (read_type): When we get a cross-reference, resolve
+ it immediately if possible, only calling add_undefined_type if
+ necessary.
+
+ * gdb.texinfo: Uncomment @includes and put comment at start
+ of file telling people to use makeinfo.
+
+ * valprint.c (type_print_base): Print the right thing for
+ bitfields.
+
+ * config.gdb (sun3os3): Set paramfile and depfile.
+
+Tue Aug 22 05:38:36 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * dbxread.c (symbol_file_command): Pass string table size to
+ read_dbx_symtab().
+ (read_dbx_symtab): Before indexing into string table, check
+ string table index for reasonableness.
+ (psymtab_to_symtab{,_1}, read_ofile_symtab): Same.
+
+Tue Aug 22 04:04:39 1989 Roland McGrath (roland at hobbes.ai.mit.edu)
+
+ * m68k-pinsn.c: Replaced many calls to fprintf and fputs with
+ calls to fprintf_filtered and fputs_filtered.
+ (print_insn_arg): Use normal MIT 68k syntax for postincrement,
+ predecrement, and register indirect addressing modes.
+
+Mon Aug 21 10:08:02 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * main.c (initialize_signals): Set signal handler for SIGQUIT
+ and SIGHUP to do_nothing.
+
+ * ns32k-opcode.h (ord): Change 1D1D to 1D2D.
+
+ * ns32k-pinsn.c (print_insn_arg, print_insn): Handle index
+ bytes correctly.
+
+ * ns32k-opcode.h: Add comments.
+
+ * dbxread.c (read_type): Put enum fields in type.fields in order
+ that they were found in the debugging symbols (not reverse order).
+
+Sun Aug 20 21:17:13 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * main.c (source_command): Read .gdbinit if run without argument.
+
+ * source.c (directory_command): Only print "foo already in path"
+ if from_tty.
+
+ * version.c: Change version number to 3.2.xxx
+
+Sat Aug 19 00:24:08 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu)
+
+ * m-news.h: Define HAVE_WAIT_STRUCT.
+
+ * m-isi.h, isi-dep.c: Replace with new version from Adam de Boor.
+ config.gdb: Remove isibsd43.
+
+ * main.c (catch_termination): Don't say we have written
+ .gdb_history until after we really have.
+
+ * convex-dep.c (attach): Add "sleep (1)".
+ (write_vector_register): Use "LL" with long long constant.
+ (wait): Close comment.
+ (wait): Change "unix 7.1 bug" to "unix 7.1 feature" & related
+ changes in comment.
+ (scan_stack): And fp with 0x80000000 in while loop test.
+ (core_file_command): Move code to set COREFILE.
+ (many places): Change printf to printf_filtered.
+ (psw_info): Allow argument giving value to print as a psw.
+ (_initialize_convex_dep): Update docstrings.
+
+ * m-convex.h (WORDS_BIG_ENDIAN): Correct typo ("WRODS")
+ define NO_SIGINTERRUPT.
+ define SET_STACK_LIMIT_HUGE.
+ add "undef BUILTIN_TYPE_LONGEST" before defining it.
+ Use "LL" after constants in CALL_DUMMY.
+
+ * dbxread.c: In the 3 places it says error "ridiculous string
+ table size"... delete extra parameter to error.
+
+ * dbxread.c (scan_file_globals): Check for FORTRAN common block.
+ Allow multiple references for the sake of common blocks.
+
+ * main.c (initialize_main): Set history_filename to include
+ current directory.
+
+ * valprint.c (decode_format): Don't return a defaulted size
+ field if osize is zero.
+
+ * gdb.texinfo (Compilation): Update information on -gg symbols.
+ Document problem with ar.
+
+Fri Aug 18 19:45:20 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu)
+
+ * valprint.c (val_print, value_print): Add "<repeats %d times>" code.
+ Also put "..." outside quotes for strings.
+
+ * main.c (initialize_main): Add comment about history output file
+ being different from history input file.
+
+ * m-newsos3.h: Undefine NO_SIGINTERRUPT. Rearrange a few comments.
+
+ * m-newsos3.h (REGISTER_U_ADDR): Use new version from Hikichi.
+
+ * sparc-opcode.h: Add comment clarifying meaning of the order of
+ the entries in sparc_opcodes.
+
+ * eval.c (evaluate_subexp, case UNOP_IND): Deal with deferencing
+ things that are not pointers.
+
+ * valops.c (value_ind): Make dereferencing an int give a LONGEST.
+
+ * expprint.c (print_subexp): Add (int) cast in OP_LAST case.
+
+ * dbxread.c (read_array_type): Set lower and upper if adjustable.
+
+ * symtab.c (lookup_symbol): Don't abort if symbol found in psymtab
+ but not in symtab.
+
+Thu Aug 17 15:51:20 1989 Randy Smith (randy at hobbes.ai.mit.edu)
+
+ * config.gdb: Changed "Makefile.c" to "Makefile.dist".
+
+Thu Aug 17 01:58:04 1989 Roland McGrath (roland at apple-gunkies.ai.mit.edu)
+
+ * sparc-opcode.h (or): Removed incorrect lose bit 0x08000000.
+ [many]: Changed many `lose' entries to have the 0x10 bit set, so
+ they don't think %l0 is %g0.
+
+Wed Aug 16 00:30:44 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * m-symmetry.h (STORE_STRUCT_RETURN): Also write reg 0.
+ (EXTRACT_RETURN_VALUE): Call symmetry_extract_return_value.
+ symmetry-dep.c (symmetry_extract_return_value): New fn.
+
+ * main.c (symbol_completion_function): Deal with changed
+ result_list from lookup_cmd_1 for ambiguous return.
+ command.c (lookup_cmd): Same.
+
+ * inflow.c [TIOCGETC]: Move #include "param.h" back before
+ system #includes. Change all #ifdef TIOCGETC to
+ #if defined(TIOCGETC) && !defined(TIOCGETC_BROKEN)
+ m-i386-sysv3.2.h, m-i386gas-sysv3.2.h: Remove "#undef TIOCGETC"
+ and add "#define TIOCGETC_BROKEN".
+
+ * command.c (lookup_cmd_1): Give the correct result_list in the
+ case of an ambiguous return where there is a partial match
+ (e.g. "info a"). Add comment clarifying what is the correct
+ result_list.
+
+ * gdb.texinfo (GDB History): Document the two changes below.
+
+ * main.c (command_line_input): Make history expansion not
+ just occur at the beginning of a line.
+
+ * main.c (initialize_main): Make history expansion off by default.
+
+ * inflow.c: Move #include "param.h" after system #includes.
+
+ * i386-dep.c (i386_float_info): Use U_FPSTATE macro.
+
+ * m-i386-sysv3.2.h, m-i386gas-sysv3.2.h: New files.
+ Makefile.dist, config.gdb: Know about these new files.
+
+Tue Aug 15 21:36:11 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * symtab.c (lookup_struct_elt_type): Use type_print rather
+ than assuming type has a name.
+
+Tue Aug 15 02:25:43 1989 Roland McGrath (roland at apple-gunkies.ai.mit.edu)
+
+ * sparc-opcode.h (mov): Removed bogus "or i,0,d" pattern.
+
+ * sparc-opcode.h (mov, or): Fixed incorrect `lose' members.
+
+ * sparc-dep.c: Don't include "sparc-opcode.h".
+ (skip_prologue, isanulled): Declare special types to recognize
+ instructions, and use them.
+
+ * sparc-pinsn.c (print_insn): Sign-extend 13-bit immediate args.
+ If they are less than +9, print them in signed decimal instead
+ of unsigned hex.
+
+ * sparc-opcode.h, sparc-pinsn.c: Completely rewritten to share an
+ opcode table with gas, and thus produce disassembly that looks
+ like what the assembler accepts.
+
+Tue Aug 15 16:20:52 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu)
+
+ * symtab.c (find_pc_psymbol): Move best_pc=psymtab->textlow-1
+ after test for psymtab null.
+
+ * main.c (editing_info): Remove variable retval.
+
+ * config.gdb (sun3, isi): Comment out obsolete message about telling
+ it whether you have an FPU (now that it detects it).
+
+ * config.gdb (sun3): Accept sun3os3.
+
+ * m68k-insn.h: Include <signal.h>.
+
+ * m68k-pinsn.h (convert_{to,from}_68881): Add have_fpu code
+
+ * m-newsos3.h: Undefine USE_PCB. That code didn't seem to work.
+
+ * sparc-dep.c: Put in insn_fmt and other stuff from the old
+ sparc-opcode.h.
+
+ * sparc-opcode.h, sparc-pinsn.c: Correct copyright notice.
+
+ * sparc-opcode.h, sparc-pinsn.c: Replace the old ones with the new
+ ones by roland.
+
+Tue Aug 15 02:25:43 1989 Roland McGrath (roland at apple-gunkies.ai.mit.edu)
+
+ * Makefile.dist: Don't define CC at all.
+
+ * Makefile.dist (Makefile): Remove tmp.c after preprocessing.
+ Use $(MD) instead of M_MAKEDEFINE in the cc command.
+
+ * Makefile.dist: Don't define RL_LIB as
+ "${READLINE}/libreadline.a", since READLINE is a list of files.
+
+Mon Aug 14 23:49:29 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * main.c (print_version): Change 1988 to 1989.
+
+ * main.c (copying_info, initialize_main): Remove #if 0'd code.
+
+Tue Aug 1 14:44:56 1989 Hikichi (hikichi at sran203)
+
+ * m-newsos3.h
+ (NO_SIGINTERRUPT): have SIGINTERRUPT on NEWS os 3.
+
+ * m-news.h(FRAME_FIND_SAVED_REGS): use the sun3's instead of old
+ one.
+
+Mon Aug 14 15:27:01 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * m-news.h, m-newsos3.h, news-dep.c: Merge additional changes
+ by Hikichi (ChangeLog entries above).
+
+ * Makefile.dist (READLINE): List readline files individually
+ so we don't accidently get random files from the readline
+ directory.
+
+ * m-news.h (STORE_RETURN_VALUE, EXTRACT_RETURN_VALUE):
+ Expect floating point returns to be in fp0.
+
+ * gdb.texinfo (Format options): New node.
+
+ * gdb.texinfo: Comment out "@include"s until bfox fixes the
+ readline & history docs.
+
+ * dbxread.c (read_addl_syms): Set startup_file_* if necessary at
+ the end (as well as when we hit ".o").
+
+ * printcmd.c (decode_format): Set val.format & val.size to '?' at
+ start and set defaults at end.
+
+ * symtab.c (decode_line_1): Check for class_name null.
+
+ * valops.c: Each place where it compares against field names,
+ check for null field names. (new t_field_name variables).
+
+ * utils.c (fputs_filtered): Check for linebuffer null before
+ checking whether to call fputs. Remove later check for linebuffer
+ null.
+
+Sun Aug 13 15:56:50 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * m-isi.h, m-sun3.h ({PUSH,POP}_FP_REGS): New macros.
+ m-sun3.h (NUM_REGS): Conditionalize on FPU.
+ config.gdb (sun3, isi): Add message about support for machines
+ without FPU.
+
+ * main.c (catch_termination, initialize_signals): new functions.
+
+ * main.c (editing_info): Add "info editing n" and "info editing +".
+ Rewrite much of this function.
+ gdb.texinfo (GDB Readline): Document it.
+
+ * values.c (history_info): Add "info history +". Also add code to
+ do "info history +" when command is repeated.
+ gdb.texinfo (Value History): Document "info history +".
+
+ * expprint.c (print_subexp): Add OP_THIS to case stmt.
+
+ * config.gdb (sun4os4): Put quotes around make define.
+
+ * config.gdb: Canonicalize machine name at beginning.
+
+Sat Aug 12 00:50:59 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * config.gdb: define M_MAKEDEFINE
+ Makefile (Makefile, MD): Be able to re-make Makefile.
+
+ * main.c (command_line_input): Add comments to
+ the command history.
+
+ * Makefile.dist (Makefile): Add /bin/false.
+
+Fri Aug 11 14:35:33 1989 Jim Kingdon (kingdon at spiff)
+
+ * Makefile.dist: Comment out .c.o rule and add TARGET_ARCH.
+
+ * m-altos.h: Include sys/page.h & sys/net.h
+
+ * m-altos.h (FRAME_CHAIN{,_VALID}): Use outside_startup_file.
+
+ * config.gdb (altos, altosgas): Add M_SYSV & M_BSD_NM and remove
+ M_ALLOCA=alloca.o from makedefine.
+
+ * coffread.c (complete_symtab): Change a_entry to entry.
+
+ * m-altosgas.h: New file.
+
+ * m-symmetry (REGISTER_BYTE): Fix dumb mistake.
+
+Fri Aug 11 06:39:49 1989 Roland McGrath (roland at hobbes.ai.mit.edu)
+
+ * utils.c (set_screensize_command): Check for ARG being nil, since
+ that's what execute_command will pass if there's no argument.
+
+ * expread.y (yylex): Recognize "0x" or "0X" as the beginning of a
+ number.
+
+Thu Aug 10 15:43:12 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * config.gdb, Makefile.dist: Rename Makefile.c to Makefile.dist.
+
+ * m-altos.h: Add comment about porting to USGR2.
+
+ * config.gdb (sparc): Add -Usparc.
+
+Wed Aug 9 14:20:39 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * m-sun3os4.h: Define BROKEN_LARGE_ALLOCA.
+
+ * values.c (modify_field): Check for value too large to fit in
+ bitfield.
+
+ * utils.c (fputs_filtered): Allow LINEBUFFER to be NULL.
+
+ * breakpoint.c (condition_command): Check for attempt to specify
+ non-numeric breakpoint number.
+
+ * config.gdb, Makefile, m-altos.h, altos-dep.c: Merge Altos
+ port.
+
+ * README: Change message about editing Makefile.
+
+ * config.gdb: Edit Makefile.
+ Copied Makefile to Makefile.c and changed to let config.gdb
+ run us through the C preprocessor.
+
+ * expread.y (yylex): Test correctly for definition of number.
+
+Wed Aug 9 11:56:05 1989 Randy Smith (randy at hobbes.ai.mit.edu)
+
+ * dbxread.c (read_dbx_symtab): Put bracketing of entry point in
+ test case for .o symbols so that it will be correct even without
+ debugging symbols.
+ (end_psymtab): Took bracketing out.
+
+ * blockframe.c (outside_startup_file): Reverse the sense of the
+ return value to make the functionality implied by the name
+ correct.
+
+Tue Aug 8 11:48:38 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * coffread.c (symbol_file_command): Do not assume presence of a.out
+ header.
+
+ * blockframe.c: Replace first_object_file_end with
+ startup_file_{start,end}
+ (outside_startup_file): New function.
+ dbxread.c (read_addl_syms, read_dbx_symtab, end_psymbol): set
+ startup_file_*. Delete first_object_file_end code.
+ Add entry_point and ENTRY_POINT
+ coffread.c (complete_symtab): Set startup_file_*.
+ (first_object_file_end): Add as static.
+ m-*.h (FRAME_CHAIN, FRAME_CHAIN_VALID): Call outside_startup_file
+ instead of comparing with first_object_file_end.
+
+ * breakpoint.c (breakpoint_1): Change -1 to (CORE_ADDR)-1.
+
+ * config.gdb (i386, i386gas): Add missing quotes at end of "echo"
+
+ * source.c (directory_command): Add dont_repeat ();
+
+Mon Aug 7 18:03:51 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * dbxread.c (read_addl_syms): Change strcmp to strncmp and put 3rd
+ arg back.
+
+ * command.h (struct cmd_list_element): Add comment clarifying
+ purpose of abbrev_flag.
+
+Mon Aug 7 12:51:03 1989 Randy Smith (randy at hobbes.ai.mit.edu)
+
+ * printcmd.c (_initialize_printcmd): Changed "undisplay" not to
+ have abbrev flag set; it isn't an abbreviation of "delete
+ display", it's an alias.
+
+Mon Aug 7 00:25:15 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * symtab.c (lookup_symtab_1): Remove filematch (never used).
+
+ * expread.y [type]: Add second argument to 2 calls to
+ lookup_member_type which were missing them.
+
+ * dbxread.c (symbol_file_command): Add from_tty arg.
+ Check it before calling query.
+
+ * infcmd.c (tty_command): Add from_tty arg.
+
+ * eval.c (evaluate_subexp): Remove 3rd argument from
+ calls to value_x_unop.
+
+ * dbxread.c (read_addl_syms): Remove 3rd argument from
+ call to strcmp.
+
+ * gdb.texinfo (Command editing): @include inc-readline.texinfo
+ and inc-history.texinfo and reorganize GDB-specific stuff.
+
+ * Makefile: Add line MAKE=make.
+
+ * README (second paragraph): Fix trivial errors.
+
+ * dbxread.c (read_struct_type): Make sure p is initialized.
+
+ * main.c (symbol_completion_function): Complete correctly
+ on the empty string.
+
+Sun Aug 6 21:01:59 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * symmetry-dep.c: Remove "long" from definition of i386_follow_jump.
+
+ * gdb.texinfo (Backtrace): Document "where" and "info stack".
+
+ * dbxread.c (cleanup_undefined_types): Strip off "struct "
+ or "union " from type names before doing comparison
+
+Sat Aug 5 02:05:36 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * config.gdb (i386, i386gas): Improve makefile editing instructions.
+
+ * Makefile: Fix typo in CLIBS for SYSV.
+
+ * dbxread.c (read_dbx_symtab): Deal with N_GSYM typedefs.
+
+ * dbxread.c (add_file_command): Do not free name. We didn't
+ allocate it; it just points into arg_string.
+
+ * Makefile, m-*.h: Change LACK_VPRINTF to HAVE_VPRINTF.
+
+Fri Jul 28 00:07:48 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * valprint.c (val_print): Made sure that all returns returned a
+ value (usually 0, indicating no memory printed).
+
+ * core.c (read_memory): Changed "return" to "return 0".
+
+ * expread.y (parse_number): Handle scientific notation when the
+ string does not contain a '.'.
+
+Thu Jul 27 15:14:03 1989 Randy Smith (randy at hobbes.ai.mit.edu)
+
+ * infrun.c (signals_info): Error if signal number passed is out of
+ bounds.
+
+ * defs.h: Define alloca to be __builtin_alloca if compiling with
+ gcc and localized inclusion of alloca.h on the sparc with the
+ other alloca stuff.
+ * command.c: Doesn't need to include alloca.h on the sparc; defs.h
+ does it for you.
+
+ * printcmd.c (print_frame_args): Changed test for call to
+ print_frame_nameless_args to check i to tell if any args had been
+ printed.
+
+Thu Jul 27 04:40:56 1989 Roland McGrath (roland at hobbes.ai.mit.edu)
+
+ * blockframe.c (find_pc_partial_function): Always check that NAME
+ and/or ADDRESS are not nil before storing into them.
+
+Wed Jul 26 23:41:21 1989 Roland McGrath (roland at hobbes.ai.mit.edu)
+
+ * m-newsos3.h: Define BROKEN_LARGE_ALLOCA.
+ * dbxread.c (symbol_file_command, psymtab_to_symtab):
+ Use xmalloc #ifdef BROKEN_LARGE_ALLOCA.
+
+Tue Jul 25 16:28:18 1989 Jay Fenlason (hack at apple-gunkies.ai.mit.edu)
+
+ * m68k-opcode.h: moved some of the fmovem entries so they're
+ all consecutive. This way the assembler doesn't bomb.
+
+Mon Jul 24 22:45:54 1989 Randy Smith (randy at hobbes.ai.mit.edu)
+
+ * symtab.c (lookup_symbol): Changed error to an informational (if
+ not very comforting) message about internal problems. This will
+ get a null symbol returned to decode_line_1, which should force
+ things to be looked up in the misc function vector.
+
+Wed Jul 19 13:47:34 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * symtab.c (lookup_symbol): Changed "fatal" to "error" in
+ external symbol not found in symtab in which it was supposed to be
+ found. This can be reached because of a bug in ar.
+
+Tue Jul 18 22:57:43 1989 Randy Smith (roland at hobbes.ai.mit.edu)
+
+ * m-news.h [REGISTER_U_ADDR]: Decreased the assumed offset of fp0
+ by 4 to bring it into (apparently) appropriate alignment with
+ reality.
+
+Tue Jul 18 18:14:42 1989 Randy Smith (randy at hobbes.ai.mit.edu)
+
+ * Makefile: pinsn.o should depend on opcode.h
+
+ * m68k-opcode.h: Moved fmovemx with register lists to before other
+ fmovemx.
+
+Tue Jul 18 11:21:42 1989 Jim Kingdon (kingdon at susie)
+
+ * Makefile, m*.h: Only #define vprintf (to _doprnt or printf,
+ depends on the system) if the library lacks it (controlled by
+ LACK_VPRINTF_DEFINE in makefile). Unpleasant, but necessary to
+ make this work with the GNU C library.
+
+Mon Jul 17 15:17:48 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * breakpoint.c (breakpoint_1): Change addr-b->address to
+ b->address-addr.
+
+Sun Jul 16 16:23:39 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * eval.c (evaluate_subexp): Change error message printed when
+ right operand of '@' is not an integer to English.
+
+ * infcmd.c (registers_info): Fix call to print_spaces_filtered
+ to specify right # of arguments.
+
+ * gdb.texinfo (Command Editing): Document info editing command.
+
+ * coffread.c (read_file_hdr): Add MC68MAGIC.
+
+ * source.c (select_source_symtab): Change MAX to max.
+
+Fri Jul 14 21:19:11 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu)
+
+ * infcmd.c (registers_info): Clean up display to look good with long
+ register names, to say "register" instead of "reg", and to put the
+ "relative to selected stack frame" bit at the top.
+
+Fri Jul 14 18:23:09 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * dbxread.c (record_misc_function): Put parens around | to force
+ correct evaluation.
+
+Wed Jul 12 12:25:53 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * m-newsos3, m-news, infrun.c, Makefile, config.gdb, news-dep.c:
+ Merge in Hikichi's changes for Sony/News-OS 3 support.
+
+Tue Jul 11 21:41:32 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu)
+
+ * utils.c (fputs_filtered): Don't do any filtering if output is
+ not to stdout, or if stdout is not a tty.
+ (fprintf_filtered): Rely on fputs_filtered's check for whether to
+ do filtering.
+
+Tue Jul 11 00:33:58 1989 Randy Smith (randy at hobbes.ai.mit.edu)
+
+ * GDB 3.2 Released.
+
+ * valprint.h: Deleted.
+
+ * utils.c (fputs_filtered): Don't do any filtering if filtering is
+ disabled (lines_per_page == 0).
+
+Mon Jul 10 22:27:53 1989 Randy Smith (roland at hobbes.ai.mit.edu)
+
+ * expread.y [typebase]: Added "unsigned long int" and "unsigned
+ short int" to specs.
+
+Mon Jul 10 21:44:55 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * main.c (main): Make -cd use cd_command to avoid
+ current_directory with non-absolute pathname.
+
+Mon Jul 10 00:34:29 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * dbxread.c (symbol_file_command): Catch errors from stat (even
+ though they should never happen).
+
+ * source.c (openp): If the path is null, use the current
+ directory.
+
+ * dbxread.c (read_dbx_symtab): Put N_SETV symbols into the misc
+ function vector ...
+ (record_misc_function): ... as data symbols.
+
+ * utils.c (fprintf_filtered): Return after printing if we aren't
+ going to do filtering.
+
+ * Makefile: Added several things for make clean to take care of.
+
+ * expread.y: Lowered "@" in precedence below +,-,*,/,%.
+
+ * eval.c (evaluate_subexp): Return an error if the rhs of "@"
+ isn't integral.
+
+ * Makefile: Added removal of core and gdb[0-9] files to clean
+ target.
+
+ * Makefile: Made a new target "distclean", which cleans things up
+ correctly for making a distribution.
+
+Sun Jul 9 23:21:27 1989 Randy Smith (randy at hobbes.ai.mit.edu)
+
+ * dbxread.c: Surrounded define of gnu symbols with an #ifndef
+ NO_GNU_STABS in case you don't want them on some machines.
+ * m-npl.h, m-pn.h: Defined NO_GNU_STABS.
+
+Sun Jul 9 19:25:22 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu)
+
+ * utils.c (fputs_filtered): New function.
+ (fprintf_filtered): Use fputs_filtered.
+ utils.c (print_spaces_filtered),
+ command.c (help_cmd,help_cmd_list),
+ printcmd.c (print_frame_args),
+ stack.c (print_block_frame_locals, print_frame_arg_vars),
+ valprint.c (many functions): Use fputs_filtered instead of
+ fprintf_filtered to avoid arbitrary limit.
+
+ * utils.c (fprintf_filtered): Fix incorrect comment.
+
+Sat Jul 8 18:12:01 1989 Randy Smith (randy at hobbes.ai.mit.edu)
+
+ * valprint.c (val_print): Changed assignment of pretty to use
+ prettyprint as a conditional rather than rely on values of the
+ enum.
+
+ * Projects: Cleaned up a little for release.
+
+ * main.c (initialize_main): Initialize
+ rl_completion_entry_function instead of completion_entry_function.
+
+ * Makefile: Modified to use the new readline library setup.
+
+ * breakpoint.c (break_command_1, delete_breakpoint,
+ enable_breakpoint, disable_breakpoint): Put in new printouts for
+ xgdb usage triggered off of xgdb_verbose.
+ * main.c (main): Added check for flag to set xgdb_verbose.
+ * stack.c (frame_command): Set frame_changed when frame command
+ used.
+
+Fri Jul 7 16:20:58 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * Remove valprint.h and move contents to value.h (more logical).
+
+Fri Jul 7 02:28:06 1989 Randall Smith (randy at rice-chex)
+
+ * m68k-pinsn.c (print_insn): Included a check for register list;
+ if there is one, make sure to start p after it.
+
+ * breakpoint.c (break_command_1, delete_breakpoint,
+ enable_breakpoint, disable_breakpoint): #ifdef'd out changes
+ below; they produce unwanted output in gdb mode in gnu-emacs.
+
+ * gdb.texinfo: Spelled. Also removed index references from
+ command editing section; the relevance/volume ratio was too low.
+ Removed all references to the function index.
+
+ * ns32k-opcode.h, ns32k-pinsn.c: Backed out changes of June 24th;
+ haven't yet received legal papers.
+
+ * .gdbinit: Included message telling the user what it is doing.
+
+ * symmetry-dep.c: Added static decls for i386_get_frame_setup,
+ i386_follow_jump.
+ * values.c (unpack_double): Added a return (double)0 at the end to
+ silence a compiler warning.
+
+ * printcmd.c (containing_function_bounds, asdump_command): Created
+ to dump the assembly code of a function (support for xgdb and a
+ useful hack).
+ (_initialize_printcmd): Added this to command list.
+ * gdb.texinfo [Memory]: Added documentation for the asdump
+ command.
+ * breakpoint.c (break_command_1, delete_breakpoint,
+ enable_breakpoint, disable_breakpoint): Added extra verbosity for
+ xgdb conditionalized on the new external frame_full_file_name.
+ * source.c (identify_source_line): Increase verbosity of fullname
+ prointout to include pc value.
+ * stack.c: Added a new variable; "frame_changed" to indicate when
+ a frame has been changed so that gdb can print out a frame change
+ message when the frame only changes implicitly.
+ (print_frame_info): Check the new variable in determining when to
+ print out a new message and set it to zero when done.
+ (up_command): Increment it.
+ (down_command): Decrement it.
+
+ * m68k-pinsn.c (print_insn_arg [lL]): Modified cases for register
+ lists to reset the point to point to after the word from which the
+ list is grabbed *if* that would cause point to point farther than
+ it currently is.
+
+Thu Jul 6 14:28:11 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu)
+
+ * valprint.c (val_print, value_print): Add parameter to control
+ prettyprinting.
+ valprint.h: New file containing constants used for passing
+ prettyprinting parameter to val{,ue}_print.
+ expprint.c, infcmd.c, printcmd.c, valprint.c, values.c:
+ Change all calls to val{,ue}_print to use new parameter.
+
+Mon Jul 3 22:38:11 1989 Randy Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * dbxread.c (,process_one_symbol): Moved extern declaration for
+ index out of function to beginning of file.
+
+Mon Jul 3 18:40:14 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu)
+
+ * gdb.texinfo (Registers): Add "ps" to list of standard registers.
+
+Sun Jul 2 23:13:03 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu)
+
+ * printcmd.c (enable_display): Change d->next to d = d->next so
+ that "enable display" without args works.
+
+Fri Jun 30 23:42:04 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu)
+
+ * source.c (list_command): Made error message given when no
+ symtab is loaded clearer.
+
+ * valops.c (value_assign): Make it so that when assigning to an
+ internal variable, the type of the assignment exp is the type of
+ the value being assigned.
+
+Fri Jun 30 12:12:43 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * main.c (verbose_info): Created.
+ (initialize_main): Put "info verbose" into command list.
+
+ * utils.c (screensize_info): Created.
+ (_initialize_utils): Defined "info screensize" as a normal command.
+
+ * valprint.c (format_info): Added information about maximum number
+ of array elements to function.
+
+ * blockframe.c (find_pc_partial_function): Again.
+
+ * blockframe.c (find_pc_partial_function): Replaced a "shouldn't
+ happen" (which does) with a zero return.
+
+ * main.c (dont_repeat): Moved ahead of first use.
+
+Thu Jun 29 19:15:08 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * vax-opcode.h: Made minor modifications (moved an instruction and
+ removed a typo) to bring this into accord with gas' table; also
+ changed copyright to reflect it being part of both gdb and gas.
+
+ * m68k-opcode.h: Added whole scads and bunches of new stuff for
+ the m68851 and changed the coptyrightto recognize that the file
+ was shared between gdb and gas.
+
+ * main.c (stop_sig): Use "dont_repeat ()" instead of *line = 0;
+
+ * core.c (read_memory): Don't do anything if length is 0.
+
+ * Makefile: Added readline.c to the list of files screwed by
+ having the ansi ioctl.h compilation with gcc.
+
+ * config.gdb: Added sun4os3 & sun4-os3 as availible options.
+
+Wed Jun 28 02:01:26 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu)
+
+ * command.c (lookup_cmd): Add ignore_help_classes argument.
+ (lookup_cmd_1): Add ignore_help_classes argument.
+ command.c, main.c: Change callers of lookup_cmd{,_1} to supply
+ value for ignore_help_classes.
+
+Tue Jun 27 18:01:31 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * utils.c (print_spaces_filtered): Made more efficient.
+ * defs.h: Declaration.
+ * valprint.c (val_print): Used in a couple of new places.
+
+Mon Jun 26 18:27:28 1989 Randall Smith (randy at gluteus.ai.mit.edu)
+
+ * m68k-pinsn.c (print_insn_arg ['#', '^']): Combined them into one
+ case which always gets the argument from the word immediately
+ following the instruction.
+ (print_insn_arg ["[lL]w"]): Make sure to always get the register
+ mask from the word immediately following the instruction.
+
+Sun Jun 25 19:14:56 1989 Randall Smith (randy at galapas.ai.mit.edu)
+
+ * Makefile: Added hp-include back in as something to distribute.
+
+ * stack.c (print_block_frame_locals): Return value changed from
+ void to int; return 1 if values printed. Use _filtered.
+ (print_frame_local_vars): Use return value from
+ print_block_frame_locals to mention if nothing printed; mention
+ lack of symbol table, use _filtered.
+ (print_frame_arg_vars): Tell the user if no symbol table
+ or no values printed. Use fprintf_filtered instead of fprintf.
+ * blockframe.c (get_prev_frame_info): Check for no inferior or
+ core file before crashing.
+
+ * inflow.c (inferior_died): Set current frame to zero to keep from
+ looking like we're in start.
+
+Sat Jun 24 15:50:53 1989 Randall Smith (randy at gluteus.ai.mit.edu)
+
+ * stack.c (frame_command): Added a check to make sure that there
+ was an inferior or a core file.
+
+ * expread.y (yylex): Allow floating point numbers of the form ".5"
+ to be parsed.
+
+ Changes by David Taylor at TMC:
+ * ns32k-pinsn.c: Added define for ?floating point coprocessor? and
+ tables for register names to be used for each of the possibilities.
+ (list_search): Created; searches a list of options for a specific
+ value.
+ (print_insn_arg): Added 'Q', 'b', 'M', 'P', 'g', and 'G' options
+ to the value location switch.
+ * ns32k-opcode.h: Added several new location flags.
+ [addr, enter, exit, ext[bwd], exts[bwd], lmr, lpr[bwd], restore,
+ rett, spr[bwd], smr]: Improved insn format output.
+
+ * symtab.c (list_symbols): Rearrange printing to produce readable
+ output for "info types".
+
+ * eval.c (evaluate_subexp_for_address): Fixed typo.
+
+ * dbxread.c (read_type): Don't output an error message when
+ there isn't a ',' after a cross-reference.
+
+ * dbxread.c (read_dbx_symtab): #if'd out N_FN case in
+ read_dbx_symtab if it has the EXT bit set (otherwise multiple
+ cases with the same value).
+
+Fri Jun 23 13:12:08 1989 Randall Smith (randy at plantaris.ai.mit.edu)
+
+ * symmisc.c: Changed decl of print_spaces from static to extern
+ (since it's defined in utils.c).
+
+ * remote.c (remote_open): Close remote_desc if it's already been
+ opened.
+
+ * Remote_Makefile, remote_gutils.c, remote_inflow.c,
+ remote_server.c, remote_utils.c: Combined into remote-multi.shar.
+ * remote-multi.shar: Created (Vikram Koka's remote stub).
+ * remote-sa.m68k.shar: Created (Glenn Engel's remcom.c).
+ * README: Updated to reflect new organization of remote stubs.
+
+ * dbxread.c (read_dbx_symtab): Put an N_FN in with N_FN | N_EXT to
+ account for those machines which don't use the external bit here.
+ Sigh.
+
+ * m-symmetry.h: Defined NO_SIGINTERRUPT.
+
+Thu Jun 22 12:51:37 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * printcmd.c (decode_format): Make sure characters are printed
+ using a byte size.
+
+ * utils.c (error): Added a terminal_ours here.
+
+ * stack.c (locals_info): Added check for selected frame.
+
+ * dbxread.c (read_type): Checked to make sure that a "," was
+ actually found in the symbol to end a cross reference.
+
+Wed Jun 21 10:30:01 1989 Randy Smith (randy at tartarus.uchicago.edu)
+
+ * expread.y (parse_number, [exp]): Allowed for the return of a
+ number marked as unsigned; this will allow inclusion of unsigned
+ constants.
+
+ * symtab.h: Put in default definitions for BUILTIN_TYPE_LONGEST
+ and BUILTIN_TYPE_UNSIGNED_LONGEST.
+
+ * expread.y (parse_number): Will now accept integers suffixed with
+ a 'u' (though does nothing special with it).
+
+ * valarith.c (value_binop): Added cases to deal with unsigned
+ arithmetic correctly.
+
+Tue Jun 20 14:25:54 1989 Randy Smith (randy at tartarus.uchicago.edu)
+
+ * dbxread.c (psymtab_to_symtab_1): Changed reading in info message
+ to go through printf_filtered.
+
+ * symtab.c (list_symbols): Placed header message after all calls
+ to psymtab_to_symtab.
+
+ * symtab.c (smash_to_{function, reference, pointer}_type): Carried
+ attribute of permanence for the type being smashed over the bzero
+ and allowed any type to point at this one if it is permanent.
+
+ * symtab.c (smash_to_{function, reference, pointer}_type): Fix
+ typo: check flags of to_type instead of type.
+
+ * m-hp9k320.h: Changed check on __GNU__ predefine to __GNUC__.
+
+ * Makefile: Made MUNCH_DEFINE seperate and based on SYSV_DEFINE;
+ they aren't the same on hp's.
+
+Mon Jun 19 17:10:16 1989 Randy Smith (randy at tartarus.uchicago.edu)
+
+ * Makefile: Fixed typo.
+
+ * valops.c (call_function): Error if the inferior has not been
+ started.
+
+ * ns32k-opcode.h [check[wc], cmpm[bwd], movm[bwd], skpsb]: Fixed
+ typos.
+
+Fri Jun 9 16:23:04 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * m-news.h [NO_SIGINTERRUPT]: Defined.
+
+ * dbxread.c (read_type): Start copy of undefined structure name
+ past [sue] defining type of cross ref.
+
+ * dbxread.c (process_one_symbol): Changed strchr to index.
+
+ * ns32k-opcode.h, ns32k-pinsn.c: More changes to number of
+ operands, addition of all of the set condition opcodes, addition
+ of several flag letters, all patterned after the gas code.
+
+ * ns32k-opcode.h [mov{su,us}[bwd], or[bwd]]: Changed number of
+ operands from 1 to 2.
+
+Wed Jun 7 15:04:24 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * symseg.h [TYPE_FLAG_STUB]: Created.
+ * dbxread.c (read_type): Set flag bit if type is stub.
+ (cleanup_undefined_types): Don't mark it as a stub if it's been
+ defined since we first learned about it.
+ * valprint.c (val_print): Print out a message to that effect if
+ this type is encountered.
+
+ * symseg.h, symtab.h: Moved the definition of TYPE_FLAG_PERM over
+ to symseg.h so that all such definitions would be in the same place.
+
+ * valprint.c (val_print): Print out <No data fields> for a
+ structure if there aren't any.
+
+ * dbxread.c (read_type): Set type name of a cross reference type
+ to "struct whatever" or something.
+
+Tue Jun 6 19:40:52 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * breakpoint.c (breakpoint_1): Print out symbolic location of
+ breakpoints for which there are no debugging symbols.
+
+Mon Jun 5 15:14:51 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * command.c (help_cmd_list): Made line_size static.
+
+Sat Jun 3 17:33:45 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * Makefile: Don't include the binutils hp-include directory in the
+ distribution anymore; refer the users to the binutils distribution.
+
+Thu Jun 1 16:33:07 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * printcmd.c (disable_display_command): Fixed loop iteration for
+ no arg case.
+
+ * printcmd.c (disable_display_command): Added from_tty parameter
+ to function.
+
+ * valops.c (value_of_variable): Call read_var_value with 0 cast to
+ FRAME instead of CORE_ADDR.
+
+ * eval.c (evaluate_subexp): Corrected number of args passed to
+ value_subscript (to 2).
+
+ * infrun.c (wait_for_inferior), symtab.c (decode_line_1),
+ m-convex.h: Changed name of FIRSTLINE_DEBUG_BROKEN to
+ PROLOGUE_FIRSTLINE_OVERLAP.
+
+ * m-merlin.h: Fixed typo.
+ * ns32k-opcode.h: Added ns32381 opcodes and "cinv" insn, and fixed
+ errors in movm[wd], rett, and sfsr.
+
+ * eval.c (evaluate_subexp, evaluate_subexp_for_address), valops.c
+ (value_zero): Change value_zero over to taking two arguments
+ instead of three.
+
+ * eval.c (evaluate_subexp)
+ [OP_VAR_VALUE]: Get correct lval type for AVOID_SIDE_EFFECTS for
+ all types of symbols.
+ [BINOP_DIV]: Don't divide if avoiding side effects; just return
+ an object of the correct type.
+ [BINOP_REPEAT]: Don't call value_repeat, just allocate a
+ repeated value.
+ (evaluete_subexp_for_address) [OP_VAR_VALUE]: Just return a thing
+ of the right type (after checking to make sure that we are allowed
+ to take the address of whatever variable has been passed).
+
+Mon May 29 11:01:02 1989 Randall Smith (randy at galapas.ai.mit.edu)
+
+ * breakpoint.c (until_break_command): Set the breakpoint with a
+ frame specification so that it won't trip in inferior calls to the
+ function. Also set things up so that it works based on selected
+ frame, not current one.
+
+Sun May 28 15:05:33 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * eval.c (evalue_subexp): Change subscript case to use value_zero
+ in EVAL_AVOID_SIDE_EFFECTS case.
+
+Fri May 26 12:03:56 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * dbxread.c (read_addl_syms, psymtab_to_symtab): Removed
+ cleanup_undefined_types; this needs to be done on a symtab basis.
+ (end_symtab): Called cleanup_undefined_types from here.
+ (cleanup_undefined_types): No longer uses lookup_symbol (brain
+ dead idea; oh, well), now it searches through file_symbols.
+
+Wed May 24 15:52:43 1989 Randall Smith (randy at galapas)
+
+ * source.c (select_source_symtab): Only run through
+ partial_symtab_list if it exists.
+
+ * coffread.c (read_coff_symtab): Don't unrecord a misc function
+ when a function symbol is seen for it.
+
+ * expread.y [variable]: Make sure to write a type for memvals if
+ you don't get a mft you recognize.
+
+Tue May 23 12:15:57 1989 Randall Smith (randy at plantaris.ai.mit.edu)
+
+ * dbxread.c (read_ofile_symtab, psymtab_to_symtab): Moved cleanup
+ of undefined types to psymtab_to_symtab. That way it will be
+ called once for all readins (which will, among other things,
+ help reduce infinite loops).
+
+ * symtab.h [misc_function_type]: Forced mf_unknown to 0.
+ * dbxread.c (record_misc_function): Cast enum to unsigned char (to
+ fit).
+ * expread.y [variable]: Cast unsigned char back to enum to test.
+
+Mon May 22 13:08:25 1989 Randall Smith (randy at gluteus.ai.mit.edu)
+
+ Patches by John Gilmore for dealing well with floating point:
+ * findvar.c (value_from_register, locate_var_value): Used
+ BYTES_BIG_ENDIAN instead of an inline test.
+ * m-sparc.h [IEEE_FLOAT]: Created to indicate that the sparc is
+ IEEE compatible.
+ * printcmd.c (print_scalar_formatted): Use BYTES_BIG_ENDIAN and
+ the stream argument for printing; also modify default type for
+ 'f'. Change handling of invalid floats; changed call syntax for
+ is_nan.
+ (print_command): Don't print out anything indicating that
+ something was recorded on the history list if it wasn't.
+ * valprint.c (val_print): Fixed to deal properley with new format
+ of is_nan and unpacking doubles without errors occuring.
+ (is_nan): Changed argument list and how it figures big endianness
+ (uses macros).
+ * values.c (record_latest_value): Return -1 and don't record if
+ it's an invalid float.
+ (value_as_double): Changed to use new unpack_double calling
+ convention.
+ (unpack_double): Changed not to call error if the float was
+ invalid; simply to set invp and return. Changed calling syntax.
+ (unpack_field_as_long, modify_field): Changed to use
+ BITS_BIG_ENDIAN to determine correct action.
+
+ * m-hp9k320.h [HP_OS_BUG]: Created; deals with problem where a
+ trap happens after a continue.
+ * infrun.c (wait_for_inferior): Used.
+
+ * m-convex.h [FIRSTLINE_DEBUG_BROKEN]: Defined a flag to indicate
+ that the debugging symbols output by the compiler for the first
+ line of a function were broken.
+ * infrun.c (wait_for_inferior), symtab.c (decode_line_1): Used.
+
+ * gdb.texinfo [Data, Memory]: Minor cleanups of phrasing.
+
+Fri May 19 00:16:59 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * dbxread.c (add_undefined_type, cleanup_undefined_types): Created
+ to keep a list of cross references to as yet undefined types.
+ (read_type): Call add_undefined_type when we run into such a case.
+ (read_addl_syms, read_ofile_symtab): Call cleanup_undefined_types
+ when we're done.
+
+ * dbxread.c (psymtab_to_symtab, psymtab_to_symtab_1): Broke
+ psymtab_to_symtab out into two routines; made sure the string
+ table was only readin once and the globals were only scanned once,
+ for any number of dependencies.
+
+Thu May 18 19:59:18 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * m-*.h: Defined (or not, as appropriate per machine)
+ BITS_BIG_ENDIAN, BYTES_BIG_ENDIAN, and WORDS_BIG_ENDIAN.
+
+Wed May 17 13:37:45 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * main.c (symbol_completion_function): Always complete on result
+ command list, even if exact match found. If it's really an exact
+ match, it'll find it again; if there's something longer than it,
+ it'll get the right result.
+
+ * symtab.c (make_symbol_completion_function): Fixed typo; strcmp
+ ==> strncmp.
+
+ * dbxread.c (read_dbx_symtab): Change 'G' case to mark symbols as
+ LOC_EXTERNAL.
+
+ * expread.y [variables]: Changed default type of text symbols to
+ function returning int so that one can use, eg. strcmp.
+
+ * infrun.c (wait_for_inferior): Include a special flag indicating
+ that one shouldn't insert the breakpoints on the next step for
+ returning from a sigtramp and forcing at least one move forward.
+
+ * infrun.c (wait_for_inferior): Change test for nexting into a
+ function to check for current stack pointer inner than previous
+ stack pointer.
+
+ * infrun.c (wait_for_inferior): Check for step resume break
+ address before dealing with normal breakpoints.
+
+ * infrun.c (wait_for_inferior): Added a case to deal with taking
+ and passing along a signal when single stepping past breakpoints
+ before inserting breakpoints.
+
+ * infrun.c (wait_for_inferior): Inserted special case to keep
+ going after taking a signal we are supposed to be taking.
+
+Tue May 16 12:49:55 1989 Randall Smith (randy at gluteus.ai.mit.edu)
+
+ * inflow.c (terminal_ours_1): Cast result of signal to (int
+ (*)()).
+
+ * gdb.texinfo: Made sure that references to the program were in
+ upper case. Modify description of the "set prompt" command.
+ [Running]: Cleaned up introduction.
+ [Attach]: Cleaned up.
+ [Stepping]: Change "Proceed" to "Continue running" or "Execute".
+ Minor cleanup.
+ [Source Path]: Cleaned up intro. Cleared up distinction between
+ the executable search path and the source path. Restated effect
+ of the "directory" command with no arguments.
+ [Data]: Fixed typos and trivial details.
+ [Stepping]: Fixed up explanation of "until".
+
+ * source.c (print_source_lines): Print through filter.
+
+ * printcmd.c (x_command): If the format with which to print is
+ "i", use the address of anything that isn't a pointer instead of
+ the value. This is for, eg. "x/10i main".
+
+ * gdb.texinfo: Updated last modification date on manual.
+
+Mon May 15 12:11:33 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * symtab.c (lookup_symtab): Fixed typo (name ==> copy) in call to
+ lookup_symtab_1.
+
+ * gdb.texinfo: Added documentation for "break [+-]n" and for new
+ actions of "directory" command (taking multiple directory names at
+ the same time).
+
+ * m68k-opcode.h: Replaced the version in gdb with an up-to-date
+ version from the assembler directory.
+ * m68k-pinsn.c (print_insn_arg): Added cases 'l' & 'L' to switch
+ to print register lists for movem instructions.
+
+ * dbxread.c, m-convex.h: Moved convex dependent include files over
+ from dbxread.c to m-convex.h.
+
+ * printcmd.c (disable_display, disable_display_command): Changed
+ name of first to second, and created first which takes an int as
+ arg rather than a char pointer. Changed second to use first.
+ (_initialize_printcmd): Changed to use second as command to call.
+ (delete_current_display, disable_current_display): Changed name of
+ first to second, and changed functionality to match.
+ * infrun.c (normal_stop), main.c (return_to_top_level): Changed to
+ call disable_current_display.
+
+ * dbxread.c (process_one_symbol, read_dbx_symtab): Changed N_FN to
+ be N_FN | N_EXT to deal with new Berkeley define; this works with
+ either the old or the new.
+
+ * Remote_Makefile, remote_gutils.c, remote_inflow.c,
+ remote_server.c, remote_utils.c: Created.
+ * Makefile: Included in tag and tar files.
+ * README: Included a note about them.
+
+ * printcmd.c (print_address): Use find_pc_partial_function to
+ remove need to readin symtabs for symbolic addresses.
+
+ * source.c (directory_command): Replaced function with new one
+ that can accept lists of directories seperated by spaces or :'s.
+
+ * inflow.c (new_tty): Replaced calls to dup2 with calls to dup.
+
+Sun May 14 12:33:16 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * stack.c (args_info): Make sure that you have an inferior or core
+ file before taking action.
+
+ * ns32k-opcode.h [deiw, deid]: Fixed machine code values for these
+ opcodes.
+
+ * dbxread.c (scan_file_globals): Modified to use misc function
+ vector instead of file itself. Killed all arguments to the
+ funciton; no longer needed.
+ (psymtab_to_symtab): Changed call for above to reflect new (void)
+ argument list.
+
+ * dbxread.c (read_dbx_symtab, ): Moved HASH_OFFSET define out of
+ read_dbx_symtab.
+
+ * expread.y [variable]: Changed default type of misc function in
+ text space to be (void ()).
+
+ * Makefile: Modified for proper number of s/r conflicts (order is
+ confusing; the mod that necessitated this change was on May 12th,
+ not today).
+
+ * expread.y (yylex): Added SIGNED, LONG, SHORT, and INT keywords.
+ [typename]: Created.
+ [typebase]: Added rules for LONG, LONG INT, SHORT, SHORT INT,
+ SIGNED name, and UNSIGNED name (a good approximation of ansi
+ standard).
+
+ * Makefile: Included .c.o rule to avoid sun's make from throwing
+ any curves at us.
+
+ * blockframe.c: Included <obstack.h>
+
+ * command.c (lookup_cmd): Clear out trailing whitespace.
+
+ * command.c (lookup_cmd_1): Changed malloc to alloca.
+
+Fri May 12 12:13:12 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * printcmd.c (print_frame_args): Only print nameless args when you
+ know how many args there are supposed to be and when you've
+ printed fewer than them. Don't print nameless args between
+ printed args.
+
+ * symtab.c (make_symbol_completion_function): Fixed typo (= ==>
+ ==).
+
+ * remote.c (remote_open): ifdef'd out siginterrupt call by #ifndef
+ NO_SIGINTERRUPT.
+ * m-umax.h: Defined NO_SIGINTERRUPT.
+
+ * expread.y [ptype, array_mod, func_mod, direct_abs_decl,
+ abs_decl]: Added rules for parsing and creating arbitrarily
+ strange types for casts and sizeofs.
+
+ * symtab.c, symtab.h (create_array_type): Created. Some minor
+ misfeatures; see comments for details (main one being that you
+ might end up creating two arrays when you only needed one).
+
+Thu May 11 13:11:49 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * valops.c (value_zero): Add an argument for type of lval.
+ * eval.c (evaluate_subexp_for_address): Take address properly in
+ the avoid side affects case (ie. keep track of whether we have an
+ lval in memory and we can take the address).
+ (evaluate_subexp): Set the lval type of expressions created with
+ value_zero properley.
+
+ * valops.c, value.h (value_zero): Created--will return a value of
+ any type with contents filled with zero.
+ * symtab.c, symtab.h (lookup_struct_elt_type): Created.
+ * eval.c (evaluate_subexp): Modified to not read memory when
+ called with EVAL_AVOID_SIDE_EFFECTS.
+
+ * Makefile: Moved dbxread.c ahead of coffread.c in the list of
+ source files.
+
+Wed May 10 11:29:19 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * munch: Make sure that sysv version substitutes for the whole
+ line.
+
+ * symtab.h: Created an enum misc_function_type to hold the type of
+ the misc function being recorded.
+ * dbxread.c (record_misc_function): Branched on dbx symbols to
+ decide which type to assign to a misc function.
+ * coffread.c (record_misc_function): Always assign type unknown.
+ * expread.y [variable]: Now tests based on new values.
+
+Tue May 9 13:03:54 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * symtab.c: Changed inclusion of <strings.h> (doesn't work on
+ SYSV) to declaration of index.
+
+ * Makefile: Changed last couple of READLINE_FLAGS SYSV_DEFINE
+
+ * source.c ({forward, reverse}_search_command): Made a default
+ search file similar to for the list command.
+
+Mon May 8 18:07:51 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * printcmd.c (print_frame_args): If we don't know how many
+ arguments there are to this function, don't print the nameless
+ arguments. We don't know enough to find them.
+
+ * printcmd.c (print_frame_args): Call print_frame_nameless_args
+ with proper arguments (start & end as offsets from addr).
+
+ * dbxread.c (read_addl_syms): Removed cases to deal with global
+ symbols; this should all be done in scan_global_symbols.
+
+Sun May 7 11:36:23 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * Makefile: Added copying.awk to ${OTHERS}.
+
+Fri May 5 16:49:01 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * valprint.c (type_print_varspec_prefix): Don't pass
+ passed_a_pointer onto children.
+
+ * valprint.c (type_print_varspec_suffix): Print "array of" with
+ whatever the "of" is after tha array brackets.
+
+ * valprint.c (type_print_varspec_{prefix,suffix}): Arrange to
+ parenthesisze pointers to arrays as well as pointers to other
+ objects.
+
+ * valprint.c (type_print_varspec_suffix): Make sure to print
+ subscripts of multi-dimensional arrays in the right order.
+
+ * infcmd.c (run_command): Fixed improper usages of variables
+ within remote debugging branch.
+
+ * Makefile: Added Convex.notes to the list of extra files to carry
+ around.
+
+ * dbxread.c (symbol_file_command): Made use of alloca or malloc
+ dependent on macro define.
+
+Thu May 4 15:47:04 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * Makefile: Changed READLINE_FLAGS to SYSV_DEFINE and called munch
+ with it also.
+ * munch: Check first argument for -DSYSV and be looser about
+ picking up init routines if you find it.
+
+ * coffread.c: Made fclose be of type int.
+
+ * breakpoint.c (_initialize_breakpoint): Put "unset" into class
+ alias.
+
+Wed May 3 14:09:12 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * m-sparc.h [STACK_END_ADDR]: Parameterized off of
+ machine/vmparam.h (as per John Gilmore's suggestion).
+
+ * blockframe.c (get_prev_frame_info): Changed this function back
+ to checking frameless invocation first before checking frame
+ chain. This means that a backtrace up from start will produce the
+ wrong value, but that a backtrace from a frameless function called
+ in main will show up correctly.
+
+ * breakpoint.c (_initialize_breakpoint): Added entry in help for
+ delete that indicates that unset is an alias for it.
+
+ * main.c (symbol_completion_function): Modified recognition of
+ being within a single command.
+
+Tue May 2 15:13:45 1989 Randy Smith (randy at gnu)
+
+ * expread.y [variable]: Add some parens to get checking of the
+ misc function vector right.
+
+Mon May 1 13:07:03 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * default-dep.c (core_file_command): Made reg_offset unsigned.
+
+ * default-dep.c (core_file_command): Improved error messages for
+ reading in registers.
+
+ * expread.y: Allowed a BLOCKNAME to be ok for a variable name (as
+ per C syntax).
+
+ * dbxread.c (psymtab_to_symtab): Flushed stdout after printing
+ starting message about reading in symbols.
+
+ * printcmd.c (print_frame_args): Switched starting place for
+ printing of frameless args to be sizeof int above last real arg
+ printed.
+
+ * printcmd.c (print_frame_args): Modified final call to
+ print_nameless_args to not use frame slots used array if none had
+ been used.
+
+ * infrun.c (wait_for_inferior): Take FUNCTION_START_OFFSET into
+ account when dealing with comparison of pc values to function
+ addresses.
+
+ * Makefile: Added note about compiling gdb on a Vax running 4.3.
+
+Sun Apr 30 12:59:46 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * command.c (lookup_cmd): Got correct error message on bad
+ command.
+
+ * m-sun3.h [ABOUT_TO_RETURN]: Modified to allow any of the return
+ instructions, including trapv and return from interupt.
+
+ * command.c (lookup_cmd): If a command is found, use it's values
+ for error reporting and determination of needed subcommands.
+
+ * command.c (lookup_cmd): Use null string for error if cmdtype is
+ null; pass *line to error instead of **.
+
+ * command.c (lookup_cmd_1): End of command marked by anything but
+ alpha numeric or '-'. Included ctype.h.
+
+Fri Apr 28 18:30:49 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * source.c (select_source_symtab): Kept line number from ever
+ being less than 1 in main decode.
+
+Wed Apr 26 13:03:20 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * default-dep.c (core_file_command): Fixed typo.
+
+ * utils.c (fprintf_filtered): Don't use return value from
+ numchars.
+
+ * main.c, command.c (complete_on_cmdlist): Moved function to
+ command.c.
+
+ * command.c (lookup_cmd): Modified to use my new routine. Old
+ version is still there, ifdef'd out.
+
+ * command.c, command.h (lookup_cmd_1): Added a routine to do all
+ of the work of lookup_cmd with no error reporting and full return
+ of information garnered in search.
+
+Tue Apr 25 12:37:54 1989 Randall Smith (randy at gluteus.ai.mit.edu)
+
+ * breakpoint.c (_initialize_breakpoint): Change "delete
+ breakpionts" to be in class alias and not have the abbrev flag
+ set.
+
+ * main.c (symbol_completion_function): Fix to correctly complete
+ things that correspond to multiword aliases.
+
+ * main.c (complete_on_cmdlist): Don't complete on something if it
+ isn't a command or prefix (ie. if it's just a help topic).
+
+ * main.c (symbol_completion_function): Set list index to be 0 if
+ creating a list with just one element.
+
+ * main.c (complete_on_cmdlist): Don't allow things with
+ abbrev_flag set to be completion values.
+ (symbol_completion_function): Don't accept an exact match if the
+ abbrev flag is set.
+
+ * dbxread.c (read_type): Fixed typo in comparision to check if
+ type number existed.
+
+ * dbxread.c (read_type): Made sure to only call dbx_lookup_type on
+ typenums if typenums were not -1.
+
+Mon Apr 24 17:52:12 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * symtab.c: Added strings.h as an include file.
+
+Fri Apr 21 15:28:38 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * symtab.c (lookup_partial_symtab): Changed to only return a match
+ if the name match is exact (which is what I want in all cases in
+ which this is currently used.
+
+Thu Apr 20 11:12:34 1989 Randall Smith (randy at gluteus.ai.mit.edu)
+
+ * m-isi.h [REGISTER_U_ADDR]: Installed new version from net.
+ * default-dep.c: Deleted inclusion of fcntl.h; apparently not
+ necessary.
+ * Makefile: Added comment about compiling on isi under 4.3.
+
+ * breakpoint.c (break_command_1): Only give decode_line_1 the
+ default_breakpoint_defaults if there's nothing better (ie. make
+ the default be off of the current_source notes if at all
+ possible).
+
+ * blockframe.c (get_prev_frame_info): Clean up comments and
+ delete code ifdefed out around FRAMELESS_FUNCTION_INVOCATION test.
+
+ * remote.c: Added a "?" message to protocol.
+ (remote_open): Used at startup.
+ (putpkt): Read whatever garbage comes over the line until we see a
+ '+' (ie. don't treat garbage as a timeout).
+
+ * valops.c (call_function): Eliminated no longer appropriate
+ comment.
+
+ * infrun.c (wait_for_inferior): Changed several convex conditional
+ compilations to be conditional on CANNOT_EXECUTE_STACK.
+
+Wed Apr 19 10:18:17 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * printcmd.c (print_frame_args): Added code to attempt to deal
+ with arguments that are bigger than an int.
+
+ Continuation of Convex/Fortran changes:
+ * printcmd.c (print_scalar_formatted): Added leading zeros to
+ printing of large integers.
+ (address_info, print_frame_args): Added code to deal with
+ LOC_REF_ARG.
+ (print_nameless_args): Allow param file to specify a routine with
+ which to print typeless integers.
+ (printf_command): Deal with long long values well.
+ * stack.c (print_frame_arg_vars): Change to deal with LOC_REF_ARG.
+ * symmisc.c (print_symbol): Change to deal with LOC_REF_ARG.
+ * symseg.h: Added LOC_REF_ARG to enum address_class.
+ * symtab.c (lookup_block_symbol): Changed to deal with
+ LOC_REF_ARG.
+ * valarith.c (value_subscripted_rvalue): Created.
+ (value_subscript): Used above when app.
+ (value_less, value_equal): Change to cast to (char *) before doing
+ comparison, for machines where that casting does something.
+ * valops.c (call_function): Setup to deal with machines where you
+ cannot execute code on the stack segment.
+ * valprint.c (val_print): Make sure that array element size isn't
+ zero before printing. Set address of default array to address of
+ first element. Put in a couple of int cast. Removed some convex
+ specific code. Added check for endianness of machine in case of a
+ packed structure. Added code for printing typeless integers and
+ for LONG LONG's.
+ (set_maximum_command): Change to use parse_and_eval_address to get
+ argument (so can use expressions there).
+ * values.c (value_of_internalvar, set_internalvar_component,
+ set_internalvar, convenience_info): Add in hooks for trapped
+ internal vars.
+ (unpack_long): Deal with LONG_LONG.
+ (value_field): Remove LONGEST cast.
+ (using_struct_return): Fixed typo ENUM ==> UNION.
+ * xgdb.c (_initialize_xgdb): Make sure that specify_exec_file_hook
+ is not called unless we are setting up a windowing environ.
+
+Tue Apr 18 13:43:37 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ Various changes involved in 1) getting gdb to work on the convex,
+ and 2) Getting gdb to work with fortran (due to convex!csmith):
+ * convex-dep.c, convex-opcode.h, m-convex.h, convex-pinsn.c:
+ Created (or replaced with new files).
+ * Makefile: Add convex dependent files. Changed default flags to
+ gnu malloc to be CFLAGS.
+ * config.gdb: Added convex to list of machines.
+ * core.c (files_info): Added a FILES_INFO_HOOK to be used if
+ defined.
+ (xfer_core_file): Conditionalized compilation of xfer_core_file on
+ the macro XFER_CORE_FILE.
+ * coffread.c (record_misc_function): Made sure it zerod type field
+ (which is now being used; see next).
+ * dbxread.c: Included some convex dependent include files.
+ (copy_pending, fix_common_blocks): Created.
+ [STAB_REG_REGNUM, BELIEVE_PCC_PROMOTION]: Created default values;
+ may be overridden in m-*.h.
+ Included data structures for keeping track of common blocks.
+ (dbx_alloc_type): Modified; if called with negative 1's will
+ create a type without putting it into the type vector.
+ (read_dbx_symtab, read_addl_syms): Modified calls to
+ record_misc_function to include the new information.
+ (symbol_file_command, psymtab_to_symtab, add_file_command):
+ Modified reading in of string table to adapt to machines which
+ *don't* store the size of the string table in the first four bytes
+ of the string table.
+ (read_dbx_symtab, scan_file_globals, read_ofile_symtab,
+ read_addl_syms): Modified assignment of namestring to accept null
+ index into symtab as ok.
+ (read_addl_syms): Modified readin of a new object file to fiddle
+ with common blocks correctly.
+ (process_one_symbol): Fixed incorrect comment about convex. Get
+ symbols local to a lexical context from correct spot on a per
+ machine basis. Catch a bug in pcc which occaisionally puts an SO
+ where there should be an SOL. Seperate sections for N_BCOMM &
+ N_ECOMM.
+ (define_symbol): Ignore symbols with no ":". Use
+ STAB_REG_TO_REGNUM. Added support for function args calling by
+ reference.
+ (read_type): Only read type number if one is there. Remove old
+ (#if 0'd out) array code.
+ (read_array_type): Added code for dealing with adjustable (by
+ parameter) arrays half-heartedly.
+ (read_enum_type): Allow a ',' to end a list of values.
+ (read_range_type): Added code to check for long long.
+ * expread.y: Modified to use LONGEST instead of long where
+ necessary. Modified to use a default type of int for objects that
+ weren't in text space.
+ * findvar.c (locate_var_value, read_var_value): Modified to deal
+ with args passed by reference.
+ * inflow.c (create_inferior): Used CREATE_INFERIOR_HOOK if it
+ exists.
+ * infrun.c (attach_program): Run terminal inferior when attaching.
+ (wait_for_inferior): Removed several convex dependencies.
+ * main.c (float_handler): Created.
+ Made whatever signal indicates a stop configurable (via macro
+ STOP_SIGNAL).
+ (main): Setup use of above as a signal handler. Added check for
+ "-nw" in args already processed.
+ (command_line_input): SIGTSTP ==>STOP_SIGNAL.
+
+ * expread.y: Added token BLOCKNAME to remove reduce/reduce
+ conflict.
+ * Makefile: Change message to reflect new grammar.
+
+Mon Apr 17 13:24:59 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * printcmd.c (compare_ints): Created.
+ (print_frame_args): Modified to always print arguments in the
+ order in which they were found in the symbol table. Figure out
+ what apots are missing on the fly.
+
+ * stack.c (up_command): Error if no inferior or core file.
+
+ * m-i386.h, m-symmetry.h [FRAMELESS_FUNCTION_INVOCATION]: Created;
+ same as m68k.
+
+ * dbxread.c (define_symbol): Changed "desc==0" test to
+ "processing_gcc_compilation", which is the correct way to do it.
+
+Sat Apr 15 17:18:38 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * expread.y: Added precedence rules for arglists, ?:, and sizeof
+ to eliminate some shift-reduce conflicts.
+ * Makefile: Modified "Expect" message to conform to new results.
+
+Thu Apr 13 12:29:26 1989 Randall Smith (randy at plantaris.ai.mit.edu)
+
+ * inflow.c (terminal_init_inferior): Fixed typo in recent diff
+ installation; TIOGETC ==> TIOCGETC.
+
+ * m-vax.h, m-sun2.h, m-sun3.h, m-sparc.h, m-hp*.h, m-isi.h,
+ m-news.h [FRAMELESS_FUNCTION_INVOCATION]: Created macro with
+ appropriate definition.
+
+Wed Apr 12 15:30:29 1989 Randall Smith (randy at plantaris.ai.mit.edu)
+
+ * blockframe.c (get_prev_frame_info): Added in a macro to specify
+ when a "frame" is called without a frame pointer being setup.
+
+ * Makefile [clean]: Made sure to delete gnu malloc if it was being
+ used.
+
+Mon Apr 10 12:43:49 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * dbxread.c (process_one_symbol): Reset within_function to 0 after
+ last RBRAC of a function.
+
+ * dbxread.c (read_struct_type): Changed check for filling in of
+ TYPE_MAIN_VARIANT of type.
+
+ * inflow.c (create_inferior): Conditionalized fork so that it
+ would be used if USG was defined and HAVE_VFORK was not defined.
+
+ * defs.h: Added comment about enum command_class element
+ class_alias.
+
+ * dbxread.c (process_one_symbol): Fixed a typo with interesting
+ implications for associative processing in the brain (':' ==> 'c').
+
+ * sparc-dep.c (isabranch): Changed name to isannulled, modified to
+ deal with coprocessor branches, and improved comment.
+ (single_step): Changed to trap at npc + 4 instead of pc +8 on
+ annulled branches. Changed name in call to isabranch as above.
+
+ * m-sun4os4.h (STACK_END_ADDRESS): Changed it to 0xf8000000 under
+ os 4.0.
+
+Sat Apr 8 17:04:07 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * dbxread.c (process_one_symbol): In the case N_FUN or N_FNAME the
+ value being refered to is sometimes just a text segment variable.
+ Catch this case.
+
+ * infrun.c (wait_for_inferior), breakpoint.c
+ (breakpoint_stop_status): Move the selection of the frame to
+ inside breakpoint_stop_status so that the frame only gets selected
+ (and the symbols potentially read in) if the symbols are needed.
+
+ * symtab.c (find_pc_psymbol): Fixed minor misthough (pc >=
+ fucntion start, not >).
+
+ * breakpoint.c (_initialize_breakpoint): Change "delete" internal
+ help entry to simply refer to it being a prefix command (since the
+ list of subcommands is right there on a "help delete").
+
+Fri Apr 7 15:22:18 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * blockframe.c (find_pc_partial_function): Created; figures out
+ what function pc is in (name and address) without reading in any
+ new symbols.
+ * symtab.h: Added decl for above.
+ * infrun.c (wait_for_inferior): Used instead of
+ find_pc_function_start.
+ * stack.c (print_frame_info): Used instead of hand coding for same
+ thing.
+
+ * dbxread.c (psymtab_to_symtab): No longer patch readin pst's out
+ of the partial_symtab_list; need them there for some checks.
+ * blockframe.c (block_for_pc), source.c (select_source_symtab),
+ symtab.c (lookup_symbol, find_pc_symtab, list_symbols): Made extra
+ sure not to call psymtab_to_symtab with ->readin == 1, since these
+ psymtab now stay on the list.
+ * symtab.c (sources_info): Now distinguishes between psymtabs with
+ readin set and those with it not set.
+
+ * symtab.c (lookup_symtab): Added check through partial symtabs
+ for name with .c appended.
+
+ * source.c (select_source_symtab): Changed semantics a little so
+ that the argument means something.
+ * source.c (list_command), symtab.c (decode_line_1): Changed call
+ to select_source_symtab to match new conventions.
+
+ * dbxread.c (add_file_command): This command no longer selects a
+ symbol table to list from.
+
+ * infrun.c (wait_for_inferior): Only call find_pc_function (to
+ find out if we have debugging symbols for a function and hence if
+ we should step over or into it) if we are doing a "step".
+
+Thu Apr 6 12:42:28 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * main.c (command_line_input): Added a local buffer and only
+ copied information into the global main.c buffer when it is
+ appropriate for it to be saved (and repeated).
+ (dont_repeat): Only nail line when we are reading from stdin
+ (otherwise null lines won't repeat and what's in line needs to be
+ saved).
+ (read_command_lines): Fixed typo; you don't what to repeat when
+ reading command lines from the input stream unless it's standard
+ input.
+
+ John Gilmore's (gnu@toad.com) mods for USG gdb:
+ * inflow.c: Removed inclusion of sys/user.h; no longer necessary.
+ (, terminal_init_inferior, terminal_inferior, terminal_ours_1,
+ term_status_command, _initialize_inflow) Seperated out declaration
+ and usage of terminal mode structures based on the existence of
+ the individual ioctls.
+ * utils.c (request_quit): Restore signal handler under USG. If
+ running under USG initialize sys_siglist at run time (too much
+ variation between systems).
+
+Wed Apr 5 13:47:24 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ John Gilmore's (gnu@toad.com) mods for USG gdb:
+ * default-dep.c: Moved include of sys/user.h to after include of
+ a.out.h.
+ (store_inferior_registers): Fixed error message.
+ (core_file_command): Improved error messages from reading in of
+ u area in core file. Changed calculation of offset of registers
+ to account for some machines putting it in as an offset rather
+ than an absolute address. Changed error messages for reading of
+ registers from core file.
+
+ * coffread.c (read_file_hdr): Added final check for BADMAG macro
+ to use if couldn't recognize magic number.
+ * Makefile: Added explicit directions for alloca addition.
+ Included alloca.c in list of possible library files. Cleaned up
+ possible library usage. Included additional information on gcc
+ and include files.
+
+ * source.c, remote.c, inflow.c, dbxread.c, core.c, coffread.c:
+ Changed include of sys/fcntl.h to an include of fcntl.h (as per
+ posix; presumably this will break fewer machines. I hopw).
+ * README: Added a pointer to comments at top of Makefile.
+ * Makefile: Added a comment about machines which need fcntl.h in
+ sys.
+
+Tue Apr 4 11:29:04 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * valprint.c (set_prettyprint_command, set_unionprint_command,
+ format_info): Created.
+ (_initialize_valprint): Added to lists of commands.
+
+ * gdb.texinfo [Backtrace]: Added a section describing the format
+ if symbols have not yet been read in.
+
+ * valprint.c (val_print): Added code to prettyprint structures if
+ "prettyprint" is set and only to print unions below the top level
+ if "unionprint" is set.
+
+ * infcmd.c (registers_info), valprint.c (value_print, val_print):
+ Added argument to call to val_print indicating deptch of recursion.
+
+ * symtab.[ch] (find_pc_psymbol): Created; finds static function
+ psymbol with value nearest to but under value passed.
+ * stack.c (print_frame_info): Used above to make sure I have best
+ fit to pc value.
+
+ * symseg.h (struct partial_symbol): Added value field.
+ * dbxread.c (read_dbx_symtab): Set value field for partial symbols
+ saved (so that we can lookup static symbols).
+
+ * symtab.[ch] (find_pc_symtab): Changed to external.
+ * stack.c (select_frame): Call above to make sure that symbols for
+ a selected frame is readin.
+
+Mon Apr 3 12:48:16 1989 Randall Smith (randy at plantaris.ai.mit.edu)
+
+ * stack.c (print_frame_info): Modified to only print out full
+ stack frame info on symbols whose tables have been read in.
+ * symtab.c, symtab.h (find_pc_psymtab): Made function external;
+ above needed it.
+
+ * main.c (,set_verbose_command, initialize_main): Created a
+ variable "info_verbose" which says to talk it up in various and
+ sundry places. Added command to set this variable.
+ * gdb.texinfo (GDB Output): Added documentation on "set verbose"
+ and changed the name of the "Screen Output" section to "GDB
+ Output".
+ * dbxread.c (psymtab_to_symtab): Added information message about
+ symbol readin. Conditionalized on above.
+
+ * dbxread.c (define_symbol): Made an "i" constant be of class
+ LOC_CONST and an "r" constant be of class LOC_CONST_BYTES.
+
+ * README: Made a note about modifications which may be necessary
+ to the manual for this version of gdb.
+
+ * blockframe.c (get_prev_frame_info): Now we get saved address and
+ check for validity before we check for leafism. This means that
+ we will catch the fact that we are in start, but we will miss any
+ fns that start calls without an fp. This should be fine.
+
+ * m-*.h (FRAME_CHAIN): Modified to return 0 if we are in start.
+ This is usually a test for within the first object file.
+ * m-sparc.h (FRAME_CHAIN): The test here is simply if the fp saved
+ off the the start sp is 0.
+
+ * blockframe.c (get_prev_frame_info): Removed check to see if we
+ were in start. Screws up sparc.
+
+ * m-sparc.h (FRAME_FIND_SAVED_REGISTERS): Changed test for dummy
+ frame to not need frame to be innermost.
+
+ * gdb.texinfo: Added section on frameless invocations of functions
+ and when gdb can and can't deal with this.
+
+ * stack.c (frame_info): Disallowed call if no inferior or core
+ file; fails gracefully if truely bad stack specfication has been
+ given (ie. parse_frame_specification returns 0).
+
+Fri Mar 31 13:59:33 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * infrun.c (normal_stop): Changed references to "unset-env" to
+ "delete env".
+
+ * infcmd.c (_initialize_infcmd): Change reference to set-args in
+ help run to "set args".
+
+ * remote.c (getpkt): Allow immediate quit when reading from
+ device; it could be hung.
+
+ * coffread.c (process_coff_symbol): Modify handling of REG
+ parameter symbols.
+
+Thu Mar 30 15:27:23 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * dbxread.c (symbol_file_command): Use malloc to allocate the
+ space for the string table in symbol_file_command (and setup a
+ cleanup for this). This allows a more graceful error failure if
+ there isn't any memory availible (and probably allows more memory
+ to be avail, depending on the machine).
+
+ Additional mods for handling GNU C++ (from Tiemann):
+ * dbxread.c (read_type): Added case for '#' type (method type, I
+ believe).
+ (read_struct_type): If type code is undefined, make the main
+ variant for the type be itself. Allow recognition of bad format
+ in reading of structure fields.
+ * eval.c (evaluate_subexp): Modify evaluation of a member of a
+ structure and pointer to same to make sure that the syntax is
+ being used correctly and that the member is being accessed correctly.
+ * symseg.h: Added TYPE_CODE_METHOD to enum type_code. Add a
+ pointer to an array of argument types to the type structure.
+ * symtab.c (lookout_method_type, smash_to_method_type): Created.
+ * symtab.h (TYPE_ARG_TYPES): Created.
+ * valops.c (call_function): Modified handling of methods to be the
+ same as handling of functions; no longer check for members.
+ * valprint.c (val_print, type_print_varspec_{prefix,suffix},
+ type_print_base): Added code to print method args correctly.
+ * values.c (value_virtual_fn_field): Modify access to virtual
+ function table.
+
+Wed Mar 29 13:19:34 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * findvar.c: Special cases for REGISTER_WINDOWS: 1) Return 0 if we
+ are the innermost frame, and 2) return the next frame in's value
+ if the SP is being looked for.
+
+ * blockframe.c (get_next_frame): Created; returns the next (inner)
+ frame of the called frame.
+ * frame.h: Extern delcaration for above.
+
+ * main.c (command_line_input): Stick null at end before doing
+ history expansion.
+
+Tue Mar 28 17:35:50 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * dbxread.c (read_dbx_symtab): Added namestring assignment to
+ N_DATA/BSS/ABS case. Sigh.
+
+Sat Mar 25 17:49:07 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * expread.y: Defined YYDEBUG.
+
+Fri Mar 24 20:46:55 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * symtab.c (make_symbol_completion_list): Completely rewrote to
+ never call psymtab_to_symtab, to do a correct search (no
+ duplicates) through the visible symbols, and to include structure
+ and union fields in the things that it can match.
+
+Thu Mar 23 15:27:44 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * dbxread.c (dbx_create_type): Created; allocates and inits space
+ for a type without putting it on the type vector lists.
+ (dbx_alloc_type): Uses above.
+
+ * Makefile: xgdb.o now produced by default rules for .o.c.
+
+Fri Mar 17 14:27:50 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * infrun.c: Fixed up inclusion of aouthdr.h on UMAX_PTRACE.
+
+ * Makefile, config.gdb: Added hp300bsd to potential
+ configurations.
+ * hp300bsd-dep.c, m-hp300bsd.h: Created.
+
+ * infrun.c (wait_for_inferior): Rewrote to do no access to
+ inferior until we make sure it's still there.
+
+ * inflow.c (inferior_died): Added a select to force the selected
+ frame to null when inferior dies.
+
+ * dbxread.c (symbol_file_command): free and zero symfile when
+ discarding symbols.
+
+ * core.c (xfer_core_file): Extended and cleaned up logic in
+ interpeting memory address.
+
+ * core.c (xfer_core_file): Extended opening comment.
+
+Thu Mar 16 15:39:42 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * coffread.c (symbol_file_command): Free symfile name when freeing
+ contents.
+
+ * blockframe.c (get_prev_frame_info): Added to fatal error message
+ to indicate that it should never happen.
+
+ * stack.c (frame_info): Printed out value of "saved" sp seperately
+ to call attention to the fact that it isn't stored in memory
+ anywhere; the actual previous frames address is printed.
+
+ * m-sparc.h (FRAME_FIND_SAVED_REGS): Set address of sp saved in
+ frame to value of fp (rather than value of sp in current frame).
+
+ * expread.y: Allow "unsigned" as a type itself, as well as a type
+ modifier.
+
+ * coffread.c: Added declaration for fclose
+
+Fri Mar 10 17:22:31 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * main.c (command_line_input): Checked for -1 return from
+ readline; indicates EOF.
+
+Fri Mar 3 00:31:27 1989 Randall Smith (randy at gluteus.ai.mit.edu)
+
+ * remote.c (remote_open): Cast return from signal to (void (*)) to
+ avoid problems on machines where the return type of signal is (int
+ (*)).
+
+ * Makefile: Removed deletion of version control from it (users
+ will need it for their changes).
+
+Thu Mar 2 15:32:21 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * symmetry-dep.c (print_1167_regs): Print out effective doubles on
+ even number regs.
+ (fetch_inferior_registers): Get the floating point regs also.
+
+ * xgdb.c (do_command): Copied command before calling execute
+ command (so that execute_command wouldn't write into text space).
+
+ * copying.awk: Created (will produce copying.c as output when
+ given COPYING as input).
+ * Makefile: Used above to create copying.c.
+ * main.c: Took out info_warranty and info_copying.
+
+ * *.*: Changed copyright notice to use new GNU General Public
+ License (includes necessary changes to manual).
+
+ * xgdb.c (create_text_widget): Created text_widget before I create
+ the source and sink.
+ (print_prompt): Added fflush (stdout).
+
+ * Makefile: Added -lXmu to the compilation line for xgdb. Left
+ the old one there incase people still had R2.
+
+ * README: Added note about -gg format.
+
+ * remote.c (getpkt): Fixed typo; && ==> &.
+
+ * Makefile: Added new variable READLINE_FLAGS so that I could
+ force compilation of readline.c and history.c with -DSYSV on
+ system V machines. Mentioned in Makefile comments at top.
+
+Wed Mar 1 17:01:01 1989 Randall Smith (randy at gluteus.ai.mit.edu)
+
+ * hp9k320-dep.c (store_inferior_registers): Fixed typo.
+
+Fri Feb 24 14:58:45 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * hp9k320-dep.c (store_inferior_registers,
+ fetch_inferior_registers): Added support for remote debugging.
+
+ * remote.c (remote_timer): Created.
+ (remote_open, readchar): Setup to timeout reads if they take
+ longer than "timeout". This allows one to debug how long such
+ things take.
+ (putpkt): Modified to print a debugging message (if such things
+ are enabled) each time it resends a packet.
+ (getpkt): Modified to make the variable CSUM unsigned and read it
+ CSUM with an & 0xff (presumably to deal with poor sign extension
+ on some machines). Also made c1 and c2 unsigned.
+ (remote_wait): Changed buffer to unsigned status.
+ (remote_store_registers, remote_write_bytes): Puts a null byte at
+ the end of the control string.
+
+ * infcmd.c (attach_command, detach_command, _initialize_infcmd):
+ Made attach_command and detach_command always availible, but
+ modified them to only allow device file attaches if ATTACH_DETACH
+ is not defined.
+
+ * gdb.texinfo: Added cross reference from attach command to remote
+ debugging.
+
+Thu Feb 23 12:37:59 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * remote.c (remote_close): Created to close the remote connection
+ and set the remote_debugging flag to 0.
+ * infcmd.c (detach_command): Now calls the above when appropriate.
+
+ * gdb.texinfo: Removed references to the ``Distribution'' section
+ in the copyright.
+
+ * main.c, utils.c (ISATTY): Created default defintions of this
+ macro which use isatty and fileno.
+ * utils.c (fprintf_filtered, print_spaces_filtered), main.c
+ (command_loop, command_line_input): Used this macro.
+ * m-news.h: Created a definition to override this one.
+
+ * utils.c (fprintf_filtered): Made line_size static (clueless).
+
+ * utils.c (fprintf_filtered): Changed max length of line printed
+ to be 255 chars or twice the format length.
+
+ * symmetry-dep.c, m-symmetry: Fixed typo (^L ==> ).
+
+ * printcmd.c (do_examine): Fixed typo (\n ==> \t).
+
+Wed Feb 22 16:00:33 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ Contributed by Jay Vosburgh (jay@mentor.cc.purdue.edu)
+ * m-symmetry.h, symmetry-dep.c: Created.
+ * Makefile: Added above in appropriate lists.
+ * config.gdb: Added "symmetry" target.
+
+ * utils.c (prompt_for_continue): Zero'd chars_printed also.
+
+ * utils.c (fprintf_filtered): Call prompt for continue instead of
+ doing it yourself.
+
+ * dbxread.c (read_dbx_symtab): Added code to conditionalize what
+ symbol type holds to "x.o" or "-lx" symbol that indicates the
+ beginning of a new file.
+
+Tue Feb 21 16:22:13 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * gdb.texinfo: Deleted @ignore block at end of file.
+
+ * findvar.c, stack.c: Changed comments that refered to "frame
+ address" to "frame id".
+
+ * findvar.c (locate_var_value): Modified so that taking the
+ address of an array generates an object whose type is a pointer to
+ the elements of the array.
+
+Sat Feb 18 16:35:14 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * gdb.texinfo: Removed reference to "!" as a shell escape
+ character. Added a section on controling screen output
+ (pagination); changing "Input" section to "User Interface"
+ section. Changed many inappropriate subsubsection nodes into
+ subsections nodes (in the readline and history expansion
+ sections).
+
+Fri Feb 17 11:10:54 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * utils.c (set_screensize_command): Created.
+ (_initialize_utils): Added above to setlist.
+
+ * main.c (main): Added check to see if ~/.gdbinit and .gdbinit
+ were the same file; only one gets read if so. Had to include
+ sys/stat.h for this.
+
+ * valprint.c (type_print_base): Changed calls to print_spaces to
+ print_spaces_filtered.
+
+ * main.c (command_line_input): Chaned test for command line
+ editing to check for stdin and isatty.
+
+ * main.c (command_loop): Call reinitialize_more_filter before each
+ command (if reading from stdin and it's a tty).
+ utils.c (initialize_more_filter): Changed name to
+ reinitialize_more_filter; killed arguments.
+ utils.c (_initialize_utils): Created; initialized lines_per_page
+ and chars_per_line here.
+
+ * utils.c (fprintf_filtered): Removed printing of "\\\n" after
+ printing linesize - 1 chars; assume that the screen display will
+ take care of that. Still watching that overflow.
+
+ * main.c: Created the global variables linesize and pagesize to
+ describe the number of chars per line and lines per page.
+
+Thu Feb 16 17:27:43 1989 Randall Smith (randy at gluteus.ai.mit.edu)
+
+ * printcmd.c (do_examine, print_scalar_formatted, print_address,
+ whatis_command, do_one_display, ptype_command), valprint.c
+ (value_print, val_print, type_print_method_args, type_print_1,
+ type_print_derivation_info, type_print_varspec_suffix,
+ type_print_base), breakpoint.c (breakpoints_info, breakpoint_1),
+ values.c (history_info), main.c (editing_info, warranty_info,
+ copying_info), infcmd.c (registers_info), inflow.c
+ (term_status_command), infrun.c (signals_info), stack.c
+ (backtrace_command, print_frame_info), symtab.c (list_symbols,
+ output_source_filename), command.c (help_cmd, help_list,
+ help_command_list): Replaced calls to printf, fprintf, and putc
+ with calls to [f]printf_filtered to handle more processing.
+ Killed local more emulations where I noticed them.
+
+Wed Feb 15 15:27:36 1989 Randall Smith (randy at gluteus.ai.mit.edu)
+
+ * defs.h, utils.c (initialize_more_filter, fprintf_filtered,
+ printf_filtered): Created a printf that will also act as a more
+ filter, prompting the user for a <return> whenever the page length
+ is overflowed.
+
+ * symtab.c (list_symbols): Elminated some code inside of an #if 0.
+
+Tue Feb 14 11:11:24 1989 Randall Smith (randy at gluteus.ai.mit.edu)
+
+ * Makefile: Turned off backup versions for this file; it changes
+ too often.
+
+ * command.c (lookup_cmd, _initialize_command): Changed '!' so that
+ it was no longer a shell escape. "sh" must be used.
+
+ * main.c (command_line_input, set_history_expansion,
+ initialize_main): Turned history expansion on, made it the
+ default, and only execute it if the first character in the line is
+ a '!'.
+
+ * version.c, gdb.texinfo: Moved version to 3.2 (as usual, jumping
+ the gun some time before release).
+
+ * gdb.texinfo: Added sections (adapted from Brian's notes) on
+ command line editing and history expansion.
+
+ * main.c (set_command_editing, initialize_main): Modified name to
+ set_editing and modified command to "set editing".
+
+ * Makefile: Put in dependencies for READLINEOBJS.
+
+ * main.c (history_info, command_info): Combined into new command
+ info; deleted history_info.
+ (initialize_main): Deleted "info history" command; it was
+ interfering with the value history.
+
+ * coffread.c (enter_linenos): Modified to do bit copy instead of
+ pointer dereference, since the clipper machine can't handle having
+ longs on short boundaries.
+ (read_file_hdr): Added code to get number of syms for clipper.
+
+ * stack.c (return_command): Fixed method for checking when all of
+ the necessary frames had been popped.
+
+ * dbxread.c (read_dbx_symtab (ADD_PSYMBOL_TO_LIST)): Fixed typo in
+ allocation length.
+
+Mon Feb 13 10:03:27 1989 Randall Smith (randy at gluteus.ai.mit.edu)
+
+ * dbxread.c (read_dbx_symtab): Split assignment to namestring into
+ several different assignments (so that it wouldn't be done except
+ when it had to be). Shortened switches and duplicated code to
+ produce the lowest possible execution time. Commented (at top of
+ switch) which code I duplicated.
+
+ * dbxread.c (read_dbx_symtab): Modified which variables were
+ register and deleted several variables which weren't used. Also
+ eliminated 'F' choice from subswitch, broke out strcmp's, reversed
+ compare on line 1986, and elminated test for !namestring[0]; it is
+ caught by following test for null index of ':'.
+
+Sun Feb 12 12:57:56 1989 Randall Smith (randy at plantaris.ai.mit.edu)
+
+ * main.c (gdb_completer_word_break_characters): Turned \~ into ~.
+
+Sat Feb 11 15:39:06 1989 Randall Smith (randy at plantaris.ai.mit.edu)
+
+ * symtab.c (find_pc_psymtab): Created; checks all psymtab's till
+ it finds pc.
+ (find_pc_symtab): Used; fatal error if psymtab found is readin
+ (should have been caught in symtab loop).
+ (lookup_symbol): Added check before scan through partial symtab
+ list for symbol name to be on the misc function vector (only if in
+ VAR_NAMESPACE). Also made sure that psymtab's weren't fooled with
+ if they had already been read in.
+ (list_symbols): Checked through misc_function_vector for matching
+ names if we were looking for functions.
+ (make_symbol_completion_list): Checked through
+ misc_function_vector for matching names.
+ * dbxread.c (read_dbx_symtab): Don't bother to do processing on
+ global function types; this will be taken care of by the
+ misc_function hack.
+
+ * symtab.h: Modified comment on misc_function structure.
+
+Fri Feb 10 18:09:33 1989 Randall Smith (randy at plantaris.ai.mit.edu)
+
+ * symseg.h, dbxread.c (read_dbx_symtab, init_psymbol_list,
+ start_psymtab, end_psymtab), coffread.c (_initialize_coff),
+ symtab.c (lookup_partial_symbol, list_symbols,
+ make_symbol_completion_list): Changed separate variables for
+ description of partial symbol allocation into a specific kind of
+ structure.
+
+ (read_dbx_symtab, process_symbol_for_psymtab): Moved most of
+ process_symbol_for_psymtab up into read_dbx_symtab, moved a couple
+ of symbol types down to the ingore section, streamlined (I hope)
+ code some, modularized access to psymbol lists.
+
+Thu Feb 9 13:21:19 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * main.c (command_line_input): Made sure that it could recognize
+ newlines as indications to repeat the last line.
+
+ * symtab.c (_initialize_symtab): Changed size of builtin_type_void
+ to be 1 for compatibility with gcc.
+
+ * main.c (initialize_main): Made history_expansion the default
+ when gdb is compiled with HISTORY_EXPANSION.
+
+ * readline.c, readline.h, history.c, history.h, general.h,
+ emacs_keymap.c, vi_keymap.c, keymaps.c, funmap.c: Made all of
+ these links to /gp/gnu/bash/* to keep them updated.
+ * main.c (initialize_main): Made default be command editing on.
+
+Wed Feb 8 13:32:04 1989 & Smith (randy at hobbes)
+
+ * dbxread.c (read_dbx_symtab): Ignore N_BSLINE on first
+ readthrough.
+
+ * Makefile: Removed convex-dep.c from list of distribution files.
+
+Tue Feb 7 14:06:25 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * main.c: Added command lists sethistlist and unsethistlist to
+ accesible command lists.
+ (parse_binary_operation): Created to parse a on/1/yes vs. off/0/no
+ spec.
+ (set_command_edit, set_history, set_history_expansion,
+ set_history_write, set_history_size, set_history_filename,
+ command_info, history_info): Created to allow users to control
+ various aspects of command line editing.
+
+ * main.c (symbol_creation_function): Created.
+ (command_line_input, initialize_main): Added rest of stuff
+ necessary for calling bfox' command editing routines under
+ run-time control.
+ * Makefile: Included readline and history source files for command
+ editing; also made arrangements to make sure that the termcap
+ library was available.
+ * symtab.c (make_symbol_completion_list): Created.
+
+Mon Feb 6 16:25:25 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * main.c: Invented variables to control command editing.
+ command_editing_p, history_expansion_p, history_size,
+ write_history_p, history_filename. Initialized them to default
+ values in initialize_main.
+
+ * infcmd.c (registers_info), infrun.c (signals_info),
+ * main.c (gdb_read_line): Changed name to command_line_input.
+ (readline): Changed name to gdb_readline; added second argument
+ indicating that the read value shouldn't be saved (via malloc).
+ * infcmd.c (registers_info), infrun.c (signals_info), main.c
+ (copying_info), symtab.c (output_source_filename, MORE,
+ list_symbols): Converted to use gdb_readline in place of
+ gdb_read_line.
+
+
+Sun Feb 5 17:34:38 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * blockframe.c (get_frame_saved_regs): Removed macro expansion
+ that had accidentally been left in the code.
+
+Sat Feb 4 17:54:14 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * main.c (gdb_read_line, readline): Added function readline and
+ converted gdb_read_line to use it. This was a conversion to the
+ line at a time style of input, in preparation for full command
+ editing.
+
+Fri Feb 3 12:39:03 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * dbxread.c (read_dbx_symtab): Call end_psymtab at the end of
+ read_dbx_symtab if any psymtab still needs to be completed.
+
+ * config.gdb, sun3-dep.c: Brought these into accord with the
+ actual sun2 status (no floating point period; sun3-dep.c unless
+ has os > 3.0).
+ * m-sun2os2.h: Deleted; not needed.
+
+ * config.gdb: Added a couple of aliases for machines in the
+ script.
+
+ * infrun.c: Added inclusion of aouthdr.h inside of #ifdef UMAX
+ because ptrace needs to know about the a.out header.
+
+ * Makefile: Made dep.o depend on dep.c and config.status only.
+
+ * expread.y: Added declarations of all of the new write_exp_elt
+ functions at the include section in the top.
+
+ * Makefile: Added a YACC definition so that people can use bison
+ if they wish.
+
+ * Makefile: Added rms' XGDB-README to the distribution.
+
+ * Makefile: Added removal of init.o on a "make clean".
+
+Thu Feb 2 16:27:06 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * *-dep.c: Deleted definition of COFF_FORMAT if AOUTHDR was
+ defined since 1) We *may* (recent mail message) want to define
+ AOUTHDR under a basically BSD system, and 2) AOUTHDR is sometimes
+ a typedef in coff encapsulation setups. Also removed #define's of
+ AOUTHDR if AOUTHDR is already defined (inside of coff format).
+ * core.c, dbxread.c: Removed #define's of AOUTHDR if AOUTHDR is
+ already defined (inside of coff format).
+
+Tue Jan 31 12:56:01 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * GDB 3.1 released.
+
+ * values.c (modify_field): Changed test for endianness to assign
+ to integer and reference character (so that all bits would be
+ defined).
+
+Mon Jan 30 11:41:21 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * news-dep.c: Deleted inclusion of fcntl.h; just duplicates stuff
+ found in sys/file.h.
+
+ * i386-dep.c: Included default definition of N_SET_MAGIC for
+ COFF_FORMAT.
+
+ * config.gdb: Added checks for several different operating
+ systems.
+
+ * coffread.c (read_struct_type): Put in a flag variable so that
+ one could tell when you got to the end of a structure.
+
+ * sun3-dep.c (core_file_command): Changed #ifdef based on SUNOS4
+ to ifdef based on FPU.
+
+ * infrun.c (restore_inferior_status): Changed error message to
+ "unable to restore previously selected frame".
+
+ * dbxread.c (read_dbx_symtab): Used intermediate variable in error
+ message reporting a bad symbol type. (scan_file_globals,
+ read_ofile_symtab, read_addl_syms): Data type of "type" changed to
+ unsigned char (which is what it is).
+ * i386-dep.c: Removed define of COFF_FORMAT if AOUTHDR is defined.
+ Removed define of a_magic to magic (taken care of by N_MAGIC).
+ (core_file_command): Zero'd core_aouthdr instead of setting magic
+ to zero.
+ * i386-pinsn.c: Changed jcxz == jCcxz in jump table.
+ (putop): Added a case for 'C'.
+ (OP_J): Added code to handle possible masking of PC value on
+ certain kinds of data.
+ m-i386gas.h: Moved COFF_ENCAPSULATE to before inclusion of
+ m-i386.h and defined NAMES_HAVE_UNDERSCORE.
+
+ * coffread.c (unrecrod_misc_function, read_coff_symtab): Added
+ symbol number on which error occured to error output.
+
+Fri Jan 27 11:55:04 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * Makefile: Removed init.c in make clean. Removed it without -f
+ and with leading - in make ?gdb.
+
+Thu Jan 26 15:08:03 1989 Randall Smith (randy at gluteus.ai.mit.edu)
+
+ Changes to get it to work on gould NP1.
+ * dbxread.c (read_dbx_symtab): Included cases for N_NBDATA and
+ N_NBBSS.
+ (psymtab_to_symtab): Changed declaration of hdr to
+ DECLARE_FILE_HEADERS. Changed access to use STRING_TABLE_SIZE and
+ SYMBOL_TABLE_SIZE.
+ * gld-pinsn.c (findframe): Added declaration of framechain() as
+ FRAME_ADDR.
+
+ * coffread.c (read_coff_symtab): Avoided treating typedefs as
+ external symbol definitions.
+
+Wed Jan 25 14:45:43 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * Makefile: Removed reference to alloca.c. If they need it, they
+ can pull alloca.o from the gnu-emacs directory.
+
+ * version.c, gdb.texinfo: Updated version to 3.1 (jumping the gun
+ a bit so that I won't forget when I release).
+
+ * m-sun2.h, m-sun2os2.h, m-sun3os4.h, config.gdb: Modified code so
+ that default includes new sun core, ptrace, and attach-detach.
+ Added defaults for sun 2 os 2.
+
+ Modifications to reset stack limit back to what it used to be just
+ before exec. All mods inside of #ifdef SET_STACK_LIMIT_HUGE.
+ * main.c: Added global variable original_stack_limit.
+ (main): Set original_stack_limit to original stack limit.
+ * inflow.c: Added inclusion of necessary files and external
+ reference to original_stack_limit.
+ (create_inferior): Reset stack limit to original_stack_limit.
+
+ * dbxread.c (read_dbx_symtab): Killed PROFILE_SYMBOLS ifdef.
+
+ * sparc-dep.c (isabranch): Multiplied offset by 4 before adding it
+ to addr to get target.
+
+ * Makefile: Added definition of SHELL to Makefile.
+
+ * m-sun2os4.h: Added code to define NEW_SUN_PTRACE, NEW_SUN_CORE,
+ and ATTACH_DETACH.
+ * sun3-dep.c: Added code to avoid fp regs if we are on a sun2.
+
+Tue Jan 24 17:59:14 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * dbxread.c (read_array_type): Added function.
+ (read_type): Added call to above instead of inline code.
+
+ * Makefile: Added ${GNU_MALLOC} to the list of dependencies for
+ the executables.
+
+Mon Jan 23 15:08:51 1989 Randall Smith (randy at plantaris.ai.mit.edu)
+
+ * gdb.texinfo: Added paragraph to summary describing languages
+ with which gdb can be run. Also added descriptions of the
+ "info-methods" and "add-file" commands.
+
+ * symseg.h: Commented a range type as having TYPE_TARGET_TYPE
+ pointing at the containing type for the range (often int).
+ * dbxread.c (read_range_type): Added code to do actual range types
+ if they are defined. Assumed that the length of a range type is
+ the length of the target type; this is a lie, but will do until
+ somebody gets back to me as to what these silly dbx symbols mean.
+
+ * dbxread.c (read_range_type): Added code to be more picky about
+ recognizing builtins as range types, to treat types defined as
+ subranges of themselves to be subranges of int, and to recognize
+ the char type idiom from dbx as a special case.
+
+Sun Jan 22 01:00:13 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * m-vax.h: Removed definition of FUNCTION_HAS_FRAME_POINTER.
+ * blockframe.c (get_prev_frame_info): Removed default definition
+ and use of above. Instead conditionalized checking for leaf nodes
+ on FUNCTION_START_OFFSET (see comment in code).
+
+Sat Jan 21 16:59:19 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * dbxread.c (read_range_type): Fixed assumption that integer was
+ always type 1.
+
+ * gdb.texinfo: Fixed spelling mistake and added a note in the
+ running section making it clear that users may invoke subroutines
+ directly from gdb.
+
+ * blockframe.c: Setup a default definition for the macro
+ FUNCTION_HAS_FRAME_POINTER.
+ (get_prev_frame_info): Used this macro instead of checking
+ SKIP_PROLOGUE directly.
+ * m-vax.h: Overroad definition; all functions on the vax have
+ frame pointers.
+
+Fri Jan 20 12:25:35 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * core.c: Added default definition of N_MAGIC for COFF_FORMAT.
+
+ * xgdb.c: Installed a fix to keep the thing from dying when there
+ isn't any frame selected.
+
+ * core.c: Made a change for the UMAX system; needs a different
+ file included if using that core format.
+
+ * Makefile: Deleted duplicate obstack.h in dbxread.c dependency.
+
+ * munch: Modified (much simpler) to cover (I hope) all cases.
+
+ * utils.c (save_cleanups, restore_cleanups): Added functions to
+ allow you to push and pop the chain of cleanups to be done.
+ * defs.h: Declared the new functions.
+ * main.c (catch_errors): Made sure that the only cleanups which
+ would be done were the ones put on the chain *after* the current
+ location.
+
+ * m-*.h (FRAME_CHAIN_VALID): Removed check on pc in the current
+ frame being valid.
+ * blockframe.c (get_prev_frame_info): Made the assumption that if
+ a frame's pc value was within the first object file (presumed to
+ be /lib/crt0.o), that we shouldn't go any higher.
+
+ * infrun.c (wait_for_inferior): Do *not* execute check for stop pc
+ at step_resume_break if we are proceeding over a breakpoint (ie.
+ if trap_expected != 0).
+
+ * Makefile: Added -g to LDFLAGS.
+
+ * m-news.h (POP_FRAME) Fixed typo.
+
+ * printcmd.c (print_frame_args): Modified to print out register
+ params in order by .stabs entry, not by register number.
+
+ * sparc-opcode.h: Changed declaration of (struct
+ arith_imm_fmt).simm to be signed (as per architecture manual).
+ * sparc-pinsn.c (fprint_addr1, print_insn): Forced a cast to an
+ int, so that we really would get signed behaivior (default for sun
+ cc is unsigned).
+
+ * i386-dep.c (i386_get_frame_setup): Replace function with new
+ function provided by pace to fix bug in recognizing prologue.
+
+Thu Jan 19 11:01:22 1989 Randall Smith (randy at plantaris.ai.mit.edu)
+
+ * infcmd.c (run_command): Changed error message to "Program not
+ restarted."
+
+ * value.h: Changed "frame" field in value structure to be a
+ FRAME_ADDR (actually CORE_ADDR) so that it could survive across
+ calls.
+
+ * m-sun.h (FRAME_FIND_SAVED_REGS): Fixed a typo.
+
+ * value.h: Added lval: "lval_reg_frame_relative" to indicate a
+ register that must be interpeted relative to a frame. Added
+ single entry to value structure: "frame", used to indicate which
+ frame a relative regnum is relative to.
+ * findvar.c (value_from_register): Modified to correctly setup
+ these fields when needed. Deleted section to fiddle with last
+ register copied on little endian machine; multi register
+ structures will always occupy an integral number of registers.
+ (find_saved_register): Made extern.
+ * values.c (allocate_value, allocate_repeat_value): Zero frame
+ field on creation.
+ * valops.c (value_assign): Added case for lval_reg_frame_relative;
+ copy value out, modify it, and copy it back. Desclared
+ find_saved_register as being external.
+ * value.h: Removed addition of kludgy structure; thoroughly
+ commented file.
+ * values.c (free_value, free_all_values, clear_value_history,
+ set_internalvar, clear_internavars): Killed free_value.
+
+Wed Jan 18 20:09:39 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * value.h: Deleted struct partial_storage; left over from
+ yesterday.
+
+ * findvar.c (value_from_register): Added code to create a value of
+ type lval_reg_partsaved if a value is in seperate registers and
+ saved in different places.
+
+Tue Jan 17 13:50:18 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * value.h: Added lval_reg_partsaved to enum lval_type and
+ commented enum lval_type. Commented value structure.
+ Added "struct partial_register_saved" to value struct; added
+ macros to deal with structure to value.h.
+ * values.c (free_value): Created; special cases lval_reg_partsaved
+ (which has a pointer to an array which also needs to be free).
+ (free_all_values, clear_value_history, set_internalvar,
+ clear_internalvars): Modified to use free_values.
+
+ * m-sunos4.h: Changed name to sun3os4.h.
+ * m-sun2os4.h, m-sun4os4.h: Created.
+ * config.gdb: Added configuration entries for each of the above.
+ * Makefile: Added into correct lists.
+
+ * Makefile: Added dependencies on a.out.encap.h. Made
+ a.out.encap.h dependent on a.out.gnu.h and dbxread.c dependent on
+ stab.gnu.h.
+
+ * infrun.c, remote.c: Removed inclusion of any a.out.h files in
+ these files; they aren't needed.
+
+ * README: Added comment about bug reporting and comment about
+ xgdb.
+
+ * Makefile: Added note to HPUX dependent section warning about
+ problems if compiled with gcc and mentioning the need to add
+ -Ihp-include to CFLAGS if you compile on those systems. Added a
+ note about needing the GNU nm with compilers *of gdb* that use the
+ coff encapsulate feature also. * hp-include: Made symbolic link
+ over to /gp/gnu/binutils.
+
+ * Makefile: Added TSOBS NTSOBS OBSTACK and REGEX to list of things
+ to delete in "make clean". Also changed "squeakyclean" target as
+ "realclean".
+
+ * findvar.c (value_from_register): Added assignment of VALUE_LVAL
+ to be lval_memory when that is appropriate (original code didn't
+ bother because it assumed that it was working with a pre lval
+ memoried value).
+
+ * expread.y (yylex): Changed to only return type THIS if the
+ symbol "$this" is defined in some block superior or equal to the
+ current expression context block.
+
+Mon Jan 16 13:56:44 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * m-*.h (FRAME_CHAIN_VALID): On machines which check the relation
+ of FRAME_SAVED_PC (thisframe) to first_object_file_end (all except
+ gould), make sure that the pc of the current frame also passes (in
+ case someone stops in _start).
+
+ * findvar.c (value_of_register): Changed error message in case of
+ no inferior or core file.
+
+ * infcmd.c (registers_info): Added a check for inferior or core
+ file; error message if not.
+
+ * main.c (gdb_read_line): Modified to take prompt as argument and
+ output it to stdout.
+ * infcmd.c (registers_info, signals_info), main.c (command_loop,
+ read_command_lines, copying_info), symtab.c (decode_line_2,
+ output_source_filename, MORE, list_symbols): Changed calling
+ convention used to call gdb_read_line.
+
+ * infcmd.c, infrun.c, main.c, symtab.c: Changed the name of the
+ function "read_line" to "gdb_read_line".
+ * breakpoint.c: Deleted external referenced to function
+ "read_line" (not needed by code).
+
+Fri Jan 13 12:22:05 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * i386-dep.c: Include a.out.encap.h if COFF_ENCAPSULATE.
+ (N_SET_MAGIC): Defined if not defined by include file.
+ (core_file_command): Used N_SET_MAGIC instead of assignment to
+ a_magic.
+ (exec_file_command): Stuck in a HEADER_SEEK_FD.
+
+ * config.gdb: Added i386-dep.c as depfile for i386gas choice.
+
+ * munch: Added -I. to cc to pick up things included by the param
+ file.
+
+ * stab.gnu.def: Changed name to stab.def (stab.gnu.h needs this name).
+ * Makefile: Changed name here also.
+ * dbxread.c: Changed name of gnu-stab.h to stab.gnu.h.
+
+ * gnu-stab.h: Changed name to stab.gnu.h.
+ * stab.gnu.def: Added as link to binutils.
+ * Makefile: Put both in in the distribution.
+
+Thu Jan 12 11:33:49 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * dbxread.c: Made which stab.h is included dependent on
+ COFF_ENCAPSULATE; either <stab.h> or "gnu-stab.h".
+ * Makefile: Included gnu-stab.h in the list of files to include in
+ the distribution.
+ * gnu-stab.h: Made a link to /gp/gnu/binutils/stab.h
+
+ * Makefile: Included a.out.gnu.h and m-i386gas.h in list of
+ distribution files.
+ * m-i386gas.h: Changed to include m-i386.h and fiddle with it
+ instead of being a whole new file.
+ * a.out.gnu.h: Made a link to /gp/gnu/binutils/a.out.gnu.h.
+
+ Chris Hanson's changes to gdb for hp Unix.
+ * Makefile: Modified comments on hpux.
+ * hp9k320-dep.c: #define'd WOPR & moved inclusion of signal.h
+ * inflow.c: Moved around declaratiosn of <sys/fcntl.h> and
+ <sys/ioctl.h> inside of USG depends and deleted all SYSV ifdef's
+ (use USG instead).
+ * munch: Modified to accept any number of spaces between the T and
+ the symbol name.
+
+ Pace's changes to gdb to work with COFF_ENCAPSULATE (robotussin):
+ * config.gdb: Added i386gas to targets.
+ * default-dep.c: Include a.out.encap.h if COFF_ENCAPSULATE.
+ (N_SET_MAGIC): Defined if not defined by include file.
+ (core_file_command): Used N_SET_MAGIC instead of assignment to a_magic.
+ (exec_file_command): Stuck in a HEADER_SEEK_FD.
+ * infrun.c, remote.c: Added an include of a.out.encap.h if
+ COFF_ENCAPSULATE defined. This is commented out in these two
+ files, I presume because the definitions aren't used.
+ * m-i386gas.h: Created.
+ * dbxread.c: Included defintions for USG.
+ (READ_FILE_HEADERS): Now uses HEADER_SEEK_FD if it exists.
+ (symbol_file_command): Deleted use of HEADER_SEEK_FD.
+ * core.c: Deleted extra definition of COFF_FORMAT.
+ (N_MAGIC): Defined to be a_magic if not already defined.
+ (validate_files): USed N_MAGIC instead of reading a_magic.
+
+Wed Jan 11 12:51:00 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * remote.c: Upped PBUFSIZ.
+ (getpkt): Added zeroing of c inside loop in case of error retry.
+
+ * dbxread.c (read_dbx_symtab, process_symbol_for_psymtab): Removed
+ code to not put stuff with debugging symbols in the misc function
+ list. Had been ifdef'd out.
+
+ * gdb.texinfo: Added the fact that the return value for a function
+ is printed if you use return.
+
+ * infrun.c (wait_for_inferior): Removed test in "Have we hit
+ step_resume_breakpoint" for sp values in proper orientation. Was
+ in there for recursive calls in functions without frame pointers
+ and it was screwing up calls to alloca.
+
+ * dbxread.c: Added #ifdef COFF_ENCAPSULATE to include
+ a.out.encap.h.
+ (symbol_file_command): Do HEADER_SEEK_FD when defined.
+ * dbxread.c, core.c: Deleted #ifdef ROBOTUSSIN stuff.
+ * robotussin.h: Deleted local copy (was symlink).
+ * a.out.encap.h: Created symlink to
+ /gp/gnu/binutils/a.out.encap.h.
+ * Makefile: Removed robotussin.h and included a.out.encap.h in
+ list of files.
+
+ * valprint.c (val_print, print_scalar_formatted): Changed default
+ precision of printing float value; now 6 for a float and 16 for a
+ double.
+
+ * findvar.c (value_from_register): Added code to deal with the
+ case where a value is spread over several registers. Still don't
+ deal with the case when some registers are saved in memory and
+ some aren't.
+
+Tue Jan 10 17:04:04 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * xgdb.c (xgdb_create_window): Removed third arg (XtDepth) to
+ frameArgs.
+
+ * infrun.c (handle_command): Error if signal number is less or
+ equal to 0 or greater or equal to NSIG or a signal number is not
+ provided.
+
+ * command.c (lookup_cmd): Modified to not convert command section
+ of command line to lower case in place (in case it isn't a
+ subcommand, but an argument to a command).
+
+Fri Jan 6 17:57:34 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * dbxread.c: Changed "text area" to "data area" in comments on
+ N_SETV.
+
+Wed Jan 4 12:29:54 1989 Randall Smith (randy at gluteus.ai.mit.edu)
+
+ * dbxread.c: Added definitions of gnu symbol types after inclusion
+ of a.out.h and stab.h.
+
+Mon Jan 2 20:38:31 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * eval.c (evaluate_subexp): Binary logical operations needed to
+ know type to determine whether second value should be evaluated.
+ Modified to discover type before binup_user_defined_p branch.
+ Also commented "enum noside".
+
+ * Makefile: Changed invocations of munch to be "./munch".
+
+ * gdb.texinfo: Updated to refer to current version of gdb with
+ January 1989 last update.
+
+ * coffread.c (end_symtab): Zero context stack when finishing
+ lexical contexts.
+ (read_coff_symtab): error if context stack 0 in ".ef" else case.
+
+ * m-*.h (FRAME_SAVED_PC): Changed name of argument from "frame" to
+ "FRAME" to avoid problems with replacement of "->frame" part of
+ macro.
+
+ * i386-dep.c (i386_get_frame_setup): Added codestream_get() to
+ move codestream pointer up to the correct location in "subl $X,
+ %esp" case.
+
+Sun Jan 1 14:24:35 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * valprint.c (val_print): Rewrote routine to print string pointed
+ to by char pointer; was producing incorrect results when print_max
+ was 0.
+
+Fri Dec 30 12:13:35 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * dbxread.c (read_dbx_symtab, process_symbol_for_psymtab): Put
+ everything on the misc function list.
+
+ * Checkpointed distribution.
+
+ * Makefile: Added expread.tab.c to the list of things slated for
+ distribution.
+
+Thu Dec 29 10:06:41 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * stack.c (set_backtrace_limit_command, backtrace_limit_info,
+ bactrace_command, _initialize_stack): Removed modifications for
+ limit on backtrace. Piping the backtrace through an interuptable
+ "more" emulation is a better way to do it.
+
+Wed Dec 28 11:43:09 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * stack.c
+ (set_backtrace_limit_command): Added command to set a limit to the
+ number of frames for a backtrace to print by default.
+ (backtrace_limit_info): To print the current limit.
+ (backtrace_command): To use the limit.
+ (_initialize_stack): To initialize the limit to its default value
+ (30), and add the set and info commands onto the appropriate
+ command lists.
+
+ * gdb.texinfo: Documented changes to "backtrace" and "commands"
+ commands.
+
+ * stack.c (backtrace_command): Altered so that a negative argument
+ would show the last few frames on the stack instead of the first
+ few.
+ (_initialize_stack): Modified help documentation.
+
+ * breakpoint.c (commands_command): Altered so that "commands" with
+ no argument would refer to the last breakpoint set.
+ (_initialize_breakpoint): Modified help documentation.
+
+ * infrun.c (wait_for_inferior): Removed ifdef on Sun4; now you can
+ single step through compiler generated sub calls and will die if
+ you next off of the end of a function.
+
+ * sparc-dep.c (single_step): Fixed typo; "break_insn" ==> "sizeof
+ break_insn".
+
+ * m-sparc.h (INIT_EXTRA_FRAME_INFO): Set the bottom of a stack
+ frame to be the bottom of the stack frame inner from this, if that
+ inner one is a leaf node.
+
+ * dbxread.c (read_dbx_symtab): Check to make sure we don't add a
+ psymtab to it's own dependency list.
+
+ * dbxread.c (read_dbx_symtab): Modified check for duplicate
+ dependencies to catch them correctly.
+
+Tue Dec 27 17:02:09 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * m-*.h (FRAME_SAVED_PC): Modified macro to take frame info
+ pointer as argument.
+ * stack.c (frame_info), blockframe.c (get_prev_frame_info),
+ gld-pinsn.c (findframe), m-*.h (SAVED_PC_AFTER_CALL,
+ FRAME_CHAIN_VALID, FRAME_NUM_ARGS): Changed usage of macros to
+ conform to above.
+ * m-sparc.h (FRAME_SAVED_PC), sparc-dep.c (frame_saved_pc):
+ Changed frame_saved_pc to have a frame info pointer as an
+ argument.
+
+ * m-vax.h, m-umax.h, m-npl.h, infrun.c (wait_for_inferior),
+ blockframe.c (get_prev_frame_info): Modified SAVED_PC_AFTER_CALL
+ to take a frame info pointer as an argument.
+
+ * blockframe.c (get_prev_frame_info): Altered the use of the
+ macros FRAME_CHAIN, FRAME_CHAIN_VALID, and FRAME_CHAIN_COMBINE to
+ use frame info pointers as arguments instead of frame addresses.
+ * m-vax.h, m-umax.h, m-sun3.h, m-sun3.h, m-sparc.h, m-pn.h,
+ m-npl.h, m-news.h, m-merlin.h, m-isi.h, m-hp9k320.h, m-i386.h:
+ Modified definitions of the above macros to suit.
+ * m-pn.h, m-npl.h, gould-dep.c (findframe): Modified findframe to
+ use a frame info argument; also fixed internals (wouldn't work
+ before).
+
+ * m-sparc.h: Cosmetic changes; reordered some macros and made sure
+ that nothing went over 80 lines.
+
+Thu Dec 22 11:49:15 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * Version 3.0 released.
+
+ * README: Deleted note about changing -lobstack to obstack.o.
+
+Wed Dec 21 11:12:47 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * m-vax.h (SKIP_PROLOGUE): Now recognizes gcc prologue also.
+
+ * blockframe.c (get_prev_frame_info): Added FUNCTION_START_OFFSET
+ to result of get_pc_function_start.
+ * infrun.c (wait_for_inferior): Same.
+
+ * gdb.texinfo: Documented new "step" and "next" behavior in
+ functions without line number information.
+
+Tue Dec 20 18:00:45 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * infcmd.c (step_1): Changed behavior of "step" or "next" in a
+ function witout line number information. It now sets the step
+ range around the function (to single step out of it) using the
+ misc function vector, warns the user, and continues.
+
+ * symtab.c (find_pc_line): Zero "end" subsection of returned
+ symtab_and_line if no symtab found.
+
+Mon Dec 19 17:44:35 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * i386-pinsn.c (OP_REG): Added code from pace to streamline
+ disassembly and corrected types.
+ * i386-dep.c
+ (i386_follow_jump): Code added to follow byte and word offset
+ branches.
+ (i386_get_frame_setup): Expanded to deal with more wide ranging
+ function prologue.
+ (i386_frame_find_saved_regs, i386_skip_prologue): Changed to use
+ i386_get_frame_setup.
+
+
+Sun Dec 18 11:15:03 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * m-sparc.h: Deleted definition of SUN4_COMPILER_BUG; was designed
+ to avoid something that I consider a bug in our code, not theirs,
+ and which I fixed earlier. Also deleted definition of
+ CANNOT_USE_ARBITRARY_FRAME; no longer used anywhere.
+ FRAME_SPECIFICATION_DYADIC used instead.
+
+ * infrun.c (wait_for_inferior): On the sun 4, if a function
+ doesn't have a prologue, a next over it single steps into it.
+ This gets around the problem of a "call .stret4" at the end of
+ functions returning structures.
+ * m-sparc.h: Defined SUN4_COMPILER_FEATURE.
+
+ * main.c (copying_info): Seperated the last printf into two
+ printfs. The 386 compiler will now handle it.
+
+ * i386-pinsn.c, i386-dep.c: Moved print_387_control_word,
+ print_387_status_word, print_387_status, and i386_float_info to
+ dep.c Also included reg.h in dep.c.
+
+Sat Dec 17 15:31:38 1988 Randall Smith (randy at gluteus.ai.mit.edu)
+
+ * main.c (source_command): Don't close instream if it's null
+ (indicating execution of a user-defined command).
+ (execute_command): Set instream to null before executing
+ commands and setup clean stuff to put it back on error.
+
+ * inflow.c (terminal_inferior): Went back to not checking the
+ ioctl returns; there are some systems when this will simply fail.
+ It seems that, on most of these systems, nothing bad will happen
+ by that failure.
+
+ * values.c (value_static_field): Fixed dereferencing of null
+ pointer.
+
+ * i386-dep.c (i386_follow_jump): Modified to deal with
+ unconditional byte offsets also.
+
+ * dbxread.c (read_type): Fixed typo in function type case of switch.
+
+ * infcmd.c (run_command): Does not prompt to restart if command is
+ not from a tty.
+
+Fri Dec 16 15:21:58 1988 Randy Smith (randy at calvin)
+
+ * gdb.texinfo: Added a third option under the "Cannot Insert
+ Breakpoints" workarounds.
+
+ * printcmd.c (display_command): Don't do the display unless there
+ is an active inferior; only set it.
+
+ * findvar.c (value_of_register): Added an error check for calling
+ this when the inferior isn't active and a core file isn't being
+ read.
+
+ * config.gdb: Added reminder about modifying REGEX in the
+ makefile for the 386.
+
+ * i386-pinsn.c, i386-dep.c: Moved m-i386.h helper functions over
+ to i386-dep.c.b
+
+Thu Dec 15 14:04:25 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * README: Added a couple of notes about compiling gdb with itself.
+
+ * breakpoint.c (set_momentary_breakpoint): Only takes FRAME_FP of
+ frame if frame is non-zero.
+
+ * printcmd.c (print_scalar_formatted): Implemented /g size for
+ hexadecimal format on machines without an 8 byte integer type. It
+ seems to be non-trivial to implement /g for other formats.
+ (decode_format): Allowed hexadecimal format to make it through /g
+ fileter.
+
+Wed Dec 14 13:27:04 1988 Randall Smith (randy at gluteus.ai.mit.edu)
+
+ * expread.y: Converted all calls to write_exp_elt from the parser
+ to calls to one of write_exp_elt_{opcode, sym, longcst, dblcst,
+ char, type, intern}. Created all of these routines. This gets
+ around possible problems in passing one of these things in one ear
+ and getting something different out the other. Eliminated
+ SUN4_COMPILER_BUG ifdef's; they are now superfluous.
+
+ * symmisc.c (free_all_psymtabs): Reinited partial_symtab_list to 0.
+ (_initialize_symmisc): Initialized both symtab_list and
+ partial_symtab_list.
+
+ * dbxread.c (start_psymtab): Didn't allocate anything on
+ dependency list.
+ (end_psymtab): Allocate dependency list on psymbol obstack from
+ local list.
+ (add_psymtab_dependency): Deleted.
+ (read_dbx_symtab): Put dependency on local list if it isn't on it
+ already.
+
+ * symtab.c: Added definition of psymbol_obstack.
+ * symtab.h: Added declaration of psymbol_obstack.
+ * symmisc.c (free_all_psymtabs): Added freeing and
+ reinitionaliztion of psymbol_obstack.
+ * dbxread.c (free_all_psymbols): Deleted.
+ (start_psymtab, end_psymtab,
+ process_symbol_for_psymtab): Changed most allocation
+ of partial symbol stuff to be off of psymbol_obstack.
+
+ * symmisc.c (free_psymtab, free_all_psymtabs): Deleted
+ free_psymtab subroutine.
+
+ * symtab.h: Removed num_includes and includes from partial_symtab
+ structure; no longer needed now that all include files have their
+ own psymtab.
+ * dbxread.c (start_psymtab): Eliminated initialization of above.
+ (end_psymtab): Eliminated finalization of above; get
+ includes from seperate list.
+ (read_dbx_symtab): Moved includes from psymtab list to
+ their own list; included in call to end_psymtab.
+ * symmisc.c (free_psymtab): Don't free includes.
+
+Tue Dec 13 14:48:14 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * i386-pinsn.c: Reformatted entire file to correspond to gnu
+ software indentation conventions.
+
+ * sparc-dep.c (skip_prologue): Added capability of recognizign
+ stores of input register parameters into stack slots.
+
+ * sparc-dep.c: Added an include of sparc-opcode.h.
+ * sparc-pinsn.c, sparc-opcode.h: Moved insn_fmt structures and
+ unions from pinsn.c to opcode.h.
+ * sparc-pinsn.c, sparc-dep.c (isabranch, skip_prologue): Moved
+ this function from pinsn.c to dep.c.
+
+ * Makefile: Put in warnings about compiling with gcc (non-ansi
+ include files) and compiling with shared libs on Sunos 4.0 (can't
+ debug something that's been compiled that way).
+
+ * sparc-pinsn.c: Put in a completely new file (provided by
+ Tiemann) to handle floating point disassembly, load and store
+ instructions, and etc. better. Made the modifications this file
+ (ChangeLog) list for sparc-pinsn.c again.
+
+ * symtab.c (output_source_filename): Included "more" emulation hack.
+
+ * symtab.c (output_source_filename): Initialized COLUMN to 0.
+ (sources_info): Modified to not print out a line for
+ all of the include files within a partial symtab (since
+ they have pst's of their own now). Also modified to
+ make a distinction between those pst's read in and
+ those not.
+
+ * infrun.c: Included void declaration of single_step() if it's
+ going to be used.
+ * sparc-dep.c (single_step): Moved function previous to use of it.
+
+ * Makefile: Took removal of expread.tab.c out of make clean entry
+ and put it into a new "squeakyclean" entry.
+
+Mon Dec 12 13:21:02 1988 Randall Smith (randy at gluteus.ai.mit.edu)
+
+ * sparc-pinsn.c (skip_prologue): Changed a struct insn_fmt to a
+ union insn_fmt.
+
+ * inflow.c (terminal_inferior): Checked *all* return codes from
+ ioctl's and fcntl's in routine.
+
+ * inflow.c (terminal_inferior): Added check for sucess of
+ TIOCSPGRP ioctl call. Just notifies if bad.
+
+ * dbxread.c (symbol_file_command): Close was getting called twice;
+ once directly and once through cleanup. Killed the direct call.
+
+Sun Dec 11 19:40:40 1988 & Smith (randy at hobbes.ai.mit.edu)
+
+ * valprint.c (val_print): Deleted spurious printing of "=" from
+ TYPE_CODE_REF case.
+
+Sat Dec 10 16:41:07 1988 Randall Smith (randy at gluteus.ai.mit.edu)
+
+ * dbxread.c: Changed allocation of psymbols from using malloc and
+ realloc to using obstacks. This means they aren't realloc'd out
+ from under the pointers to them.
+
+Fri Dec 9 10:33:24 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * sparc-dep.c inflow.c core.c expread.y command.c infrun.c
+ infcmd.c dbxread.c symmisc.c symtab.c printcmd.c valprint.c
+ values.c source.c stack.c findvar.c breakpoint.c blockframe.c
+ main.c: Various cleanups inspired by "gcc -Wall" (without checking
+ for implicit declarations).
+
+ * Makefile: Cleaned up some more.
+
+ * valops.c, m-*.h (FIX_CALL_DUMMY): Modified to take 5 arguments
+ as per what sparc needs (programming for a superset of needed
+ args).
+
+ * dbxread.c (process_symbol_for_psymtab): Modified to be slightly
+ more picky about what it puts on the list of things *not* to be
+ put on the misc function list. When/if I shift everything over to
+ being placed on the misc_function_list, this will go away.
+
+ * inferior.h, infrun.c: Added fields to save in inferior_status
+ structure.
+
+ * maketarfile: Deleted; functionality is in Makefile now.
+
+ * infrun.c (wait_for_inferior): Modified algorithm for determining
+ whether or not a single-step was through a subroutine call. See
+ comments at top of file.
+
+ * dbxread.c (read_dbx_symtab): Made sure that the IGNORE_SYMBOL
+ macro would be checked during initial readin.
+
+ * dbxread.c (read_ofile_symtab): Added macro GCC_COMPILED_FLAG_SYMBOL
+ into dbxread.c to indicate what string in a local text symbol will
+ indicate a file compiled with gcc. Defaults to "gcc_compiled.".
+
+Thu Dec 8 11:46:22 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * m-sparc.h (FRAME_FIND_SAVED_REGS): Cleaned up a little to take
+ advantage of the new frame cache system.
+
+ * inferior.h, infrun.c, valops.c, valops.c, infcmd.c: Changed
+ mechanism to save inferior status over calls to inferior (eg.
+ call_function); implemented save_inferior_info and
+ restore_inferior_info.
+
+ * blockframe.c (get_prev_frame): Simplified this by a direct call
+ to get_prev_frame_info.
+
+ * frame.h, stack.c, printcmd.c, m-sparc.h, sparc-dep.c: Removed
+ all uses of frame_id_from_addr. There are short routines like it
+ still in frame_saved_pc (m-sparc.h) and parse_frame_spec
+ (stack.c). Eventually the one in frame_saved_pc will go away.
+
+ * infcmd.c, sparc-dep.c: Implemented a new mechanism for
+ re-selecting the selected frame on return from a call.
+
+ * blockframe.c, stack.c, findvar.c, printcmd.c, m-*.h: Changed
+ all routines and macros that took a "struct frame_info" as an
+ argument to take a "struct frame_info *". Routines: findarg,
+ framechain, print_frame_args, FRAME_ARGS_ADDRESS,
+ FRAME_STRUCT_ARGS_ADDRESS, FRAME_LOCALS_ADDRESS, FRAME_NUM_ARGS,
+ FRAME_FIND_SAVED_REGS.
+
+ * frame.h, stack.c, printcmd.c, infcmd.c, findvar.c, breakpoint.c,
+ blockframe.c, xgdb.c, i386-pinsn.c, gld-pinsn.c, m-umax.h,
+ m-sun2.h, m-sun3.h, m-sparc.h, m-pn.h, m-npl.h, m-news.h,
+ m-merlin.h, m-isi.h, m-i386.h, m-hp9k320.h: Changed routines to
+ use "struct frame_info *" internally.
+
+Wed Dec 7 12:07:54 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * frame.h, blockframe.c, m-sparc.h, sparc-dep.c: Changed all calls
+ to get_[prev_]frame_cache_item to get_[prev_]frame_info.
+
+ * blockframe.c: Elminated get_frame_cache_item and
+ get_prev_frame_cache_item; functionality now taken care of by
+ get_frame_info and get_prev_frame_info.
+
+ * blockframe.c: Put allocation on an obstack and eliminated fancy
+ reallocation routines, several variables, and various nasty
+ things.
+
+ * frame.h, stack.c, infrun.c, blockframe.c, sparc-dep.c: Changed
+ type FRAME to be a typedef to "struct frame_info *". Had to also
+ change routines that returned frame id's to return the pointer
+ instead of the cache index.
+
+ * infcmd.c (finish_command): Used proper method of getting from
+ function symbol to start of function. Was treating a symbol as a
+ value.
+
+ * blockframe.c, breakpoint.c, findvar.c, infcmd.c, stack.c,
+ xgdb.c, i386-pinsn.c, frame.h, m-hp9k320.h, m-i386.h, m-isi.h,
+ m-merlin.h, m-news.h, m-npl.h, m-pn.h, m-sparc.h, m-sun2.h,
+ m-sun3.h, m-umax.h: Changed get_frame_info and get_prev_frame_info
+ to return pointers instead of structures.
+
+ * blockframe.c (get_pc_function_start): Modified to go to misc
+ function table instead of bombing if pc was in a block without a
+ containing function.
+
+ * coffread.c: Dup'd descriptor passed to read_coff_symtab and
+ fdopen'd it so that there wouldn't be multiple closes on the same
+ fd. Also put (fclose, stream) on the cleanup list.
+
+ * printcmd.c, stack.c: Changed print_frame_args to take a
+ frame_info struct as argument instead of the address of the args
+ to the frame.
+
+ * m-i386.h (STORE_STRUCT_RETURN): Decremented sp by sizeof object
+ to store (an address) rather than 1.
+
+ * dbxread.c (read_dbx_symtab): Set first_object_file_end in
+ read_dbx_symtab (oops).
+
+ * coffread.c (fill_in_vptr_fieldno): Rewrote TYPE_BASECLASS as
+ necessary.
+
+Tue Dec 6 13:03:43 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * coffread.c: Added fake support for partial_symtabs to allow
+ compilation and execution without there use.
+ * inflow.c: Added a couple of minor USG mods.
+ * munch: Put in appropriate conditionals so that it would work on
+ USG systems.
+ * Makefile: Made regex.* handled same as obstack.*; made sure tar
+ file included everything I wanted it to include (including
+ malloc.c).
+
+ * dbxread.c (end_psymtab): Create an entry in the
+ partial_symtab_list for each subfile of the .o file just read in.
+ This allows a "list expread.y:10" to work when we haven't read in
+ expread.o's symbol stuff yet.
+
+ * symtab.h, dbxread.c (psymtab_to_symtab): Recognize pst->ldsymlen
+ == 0 as indicating a dummy psymtab, only in existence to cause the
+ dependency list to be read in.
+
+ * dbxread.c (sort_symtab_syms): Elminated reversal of symbols to
+ make sure that register debug symbol decls always come before
+ parameter symbols. After mod below, this is not needed.
+
+ * symtab.c (lookup_block_symbol): Take parameter type symbols
+ (LOC_ARG or LOC_REGPARM) after any other symbols which match.
+
+ * dbxread.c (read_type): When defining a type in terms of some
+ other type and the other type is supposed to have a pointer back
+ to this specific kind of type (pointer, reference, or function),
+ check to see if *that* type has been created yet. If it has, use
+ it and fill in the appropriate slot with a pointer to it.
+
+Mon Dec 5 11:25:04 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * symmisc.c: Eliminated existence of free_inclink_symtabs and
+ init_free_inclink_symtabs; they aren't called from anywhere, and
+ if they were they could disrupt gdb's data structure badly
+ (elimination of struct type's which values that stick around past
+ elimination of inclink symtabs).
+
+ * dbxread.c (symbol_file_command): Fixed a return pathway out of
+ the routine to do_cleanups before it left.
+
+ * infcmd.c (set_environment_command), gdb.texinfo: Added
+ capability to set environmental variable values to null.
+
+ * gdb.texinfo: Modified doc on "break" without args slightly.
+
+Sun Dec 4 17:03:16 1988 Randall Smith (randy at gluteus.ai.mit.edu)
+
+ * dbxread.c (symbol_file_command): Added check; if there weren't
+ any debugging symbols in the file just read, the user is warned.
+
+ * infcmd.c: Commented set_environment_command (a little).
+
+ * createtags: Cleaned up and commented.
+
+ * Makefile: Updated depen_memory and write_inferior_memory in that errno is
+ checked after each ptrace and returned to the caller. Used in
+ value_at to detect references to addresses which are out of
+ bounds. Also core.c (xfer_core_file): return 1 if invalid
+ address, 0 otherwise.
+
+ * inflow.c, <machine>-infdep.c: removed all calls to ptrace from
+ inflo, m-sun3.h: Cleaned up dealings with
+ functions returning structu0 19:19:36 1988 Peter TerMaat (pete at corn-chex.ai.mit.edu)
+
+ * symmisc.c: (read_symsegs) Accept only format number 2. Since
+ the size of the type structure changed when C++ support was added,
+ format 1 can no longer be used.
+
+ * core.c, m-sunos4.h: (core_file_command) support for SunOS 4.0.
+ Slight change in the core structure. #ifdef SUNOS4. New file
+ m-sunos4.h. May want to change config.gdb also.
+
+Fri Jul 8 19:59:49 1988 Peter TerMaat (pete at corn-chex.ai.mit.edu)
+
+ * breakpoint.c: (break_command_1) Allow `break if condition'
+ rather than parsing `if' as a function name and returning an
+ error.
+
+Thu Jul 7 22:22:47 1988 Peter TerMaat (pete at corn-chex.ai.mit.edu)
+
+ * C++: valops.c, valprint.c, value.h, values.c: merged code to deal
+ with C++ expressions.
+
+Wed Jul 6 03:28:18 1988 Peter TerMaat (pete at corn-chex.ai.mit.edu)
+
+ * C++: dbxread.c: (read_dbx_symtab, condense_misc_bunches,
+ add_file_command) Merged code to read symbol information from
+ an incrementally linked file. symmisc.c:
+ (init_free_inclink_symtabs, free_inclink_symtabs) Cleanup
+ routines.
+
+Tue Jul 5 02:50:41 1988 Peter TerMaat (pete at corn-chex.ai.mit.edu)
+
+ * C++: symtab.c, breakpoint.c, source.c: Merged code to deal with
+ ambiguous line specifications. In C++ one can have overloaded
+ function names, so that `list classname::overloadedfuncname'
+ refers to several different lines, possibly sure currently configured machine
+ dependent files come first in e at corn-chex.ai.mit.edu)
+
+ * C++: symtab.c: replaced lookup_symtab_1 and lookup_symtab_2 with
+ a modified lookup_symbol which checks for fields of the current
+ implied argument `this'. printcmd.c, source.c, symtab.c,
+ valops.c: Need to change callers once callers are
+ installed.
+
+Wed Jun 29 01:26:56 1988 Peter TerMaat (pete at frosted-flakes.ai.mit.edu)
+
+ * C++: eval.c, expprint.c, expread.y, expression.h, valarith.c,
+ Merged code to deal with evaluation of user-defined operators,
+ member functions, and virtual functions.
+ binop_must_be_user_defined tests for user-defined binops,
+ value_x_binop calls the appropriate operator function.
+
+Tue Jun 28 02:56:42 1988 Peter TerMaat (pete at frosted-flakes.ai.mit.edu)
+
+ * C++: Makefile: changed the echo: expect 101 shift/reduce conflicts
+ and 1 reduce/reduce conflict.
+
+
+Local Variables:
+mode: indented-text
+eval: (auto-fill-mode 1)
+left-margin: 8
+fill-column: 74
+version-control: never
+End:
+
+ constructors, and flags being defined via public and via
+ virtual paths. Added fields NEXT_VARIANT, N_BASECLASSES,
+ and BASECLASSES to this type (tr: Changed types from
+ having to be derived from a single baseclass to a multiple
+ base class).
+ * symtab.h: Added macros to access new fields defined in symseg.h.
+ Added decl for lookup_basetype_type.
+ * dbxread.c
+ (condense_addl_misc_bunches): Function added to condense the misc
+ function bunches added by reading in a new .o file.
+ (read_addl_syms): Function added to read in symbols
+ from a new .o file (incremental linking).
+ (add_file_command): Command interface function to indicate
+ incrmental linking of a new .o file; this now calls
+ read_addl_syms and condense_addl_misc_bunches.
+ (define_symbol): Modified code to handle types defined from base
+ types which were not known when the derived class was
+ output.
+ (read_struct_type): Modified to better handle description of
+ struct types as derived types. Possibly derived from
+ several different base classes. Also added new code to
+ mark definitions via virtual paths or via public paths.
+ Killed seperate code to handle classes with destructors
+ but without constructors and improved marking of classes
+ as having destructors and constructors.
+ * infcmd.c: Modified call to val_print (one more argument).
+ * symtab.c (lookup_member_type): Modified to deal with new
+ structure in symseg.h.
+ (lookup_basetype_type): Function added to find or construct a type
+ ?derived? from the given type.
+ (decode_line_1): Modified to deal with new type data structures.
+ Modified to deal with new number of args for
+ decode_line_2.
+ (decode_line_2): Changed number of args (?why?).
+ (init_type): Added inits for new C++ fields from
+ symseg.h.
+ *valarith.c
+ (value_x_binop, value_binop): Added cases for BINOP_MIN &
+ BINOP_MAX.
+ * valops.c
+ (value_struct_elt, check_field, value_struct_elt_for_address):
+ Changed to deal with multiple possible baseclasses.
+ (value_of_this): Made SELECTED_FRAME an extern variable.
+ * valprint.c
+ (val_print): Added an argument DEREF_REF to dereference references
+ automatically, instead of printing them like pointers.
+ Changed number of arguments in recursive calls to itself.
+ Changed to deal with varibale numbers of base classes.
+ (value_print): Changed number of arguments to val_print. Print
+ type of value also if value is a reference.
+ (type_print_derivation_info): Added function to print out
+ derivation info a a type.
+ (type_print_base): Modified to use type_print_derivation_info and
+ to handle multiple baseclasses.
+
+Mon Nov 21 10:32:07 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * inflow.c (term_status_command): Add trailing newline to output.
+
+ * sparc-dep.c (do_save_insn, do_restore_insn): Saved
+ "stop_registers" over the call for the sake of normal_stop and
+ run_stack_dummy.
+
+ * m-sparc.h (EXTRACT_RETURN_VALUE): Put in parenthesis to force
+ addition of 8 to the int pointer, not the char pointer.
+
+ * sparc-pinsn.c (print_addr1): Believe that I have gotten the
+ syntax right for loads and stores as adb does it.
+
+ * symtab.c (list_symbols): Turned search for match on rexegp into
+ a single loop.
+
+ * dbxread.c (psymtab_to_symtab): Don't read it in if it's already
+ been read in.
+
+ * dbxread.c (psymtab_to_symtab): Changed error to fatal in
+ psymtab_to_symtab.
+
+ * expread.y (parse_number): Fixed bug which treated 'l' at end of
+ number as '0'.
+
+Fri Nov 18 13:57:33 1988 Randall Smith (randy at gluteus.ai.mit.edu)
+
+ * dbxread.c (read_dbx_symtab, process_symbol_for_psymtab): Was
+ being foolish and using pointers into an array I could realloc.
+ Converted these pointers into integers.
+
+Wed Nov 16 11:43:10 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * m-sparc.h (POP_FRAME): Made the new frame be PC_ADJUST of the
+ old frame.
+
+ * i386-pinsn.c, m-hp9k320.h, m-isi.h, m-merlin.h, m-news.h,
+ m-npl.h, m-pn.h, m-sparc.h, m-sun2.h, m-sun3.h, m-umax.h, m-vax.h:
+ Modified POP_FRAME to use the current frame instead of
+ read_register (FP_REGNUM) and to flush_cached_frames before
+ setting the current frame. Also added a call to set the current
+ frame in those POP_FRAMEs that didn't have it.
+
+ * infrun.c (wait_for_inferior): Moved call to set_current_frame up
+ to guarrantee that the current frame will always be set when a
+ POP_FRAME is done.
+
+ * infrun.c (normal_stop): Added something to reset the pc of the
+ current frame (was incorrect because of DECR_PC_AFTER_BREAK).
+
+ * valprint.c (val_print): Changed to check to see if a string was
+ out of bounds when being printed and to indicate this if so.
+
+ * convex-dep.c (read_inferior_memory): Changed to return the value
+ of errno if the call failed (which will be 0 if the call
+ suceeded).
+
+Tue Nov 15 10:17:15 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * infrun.c (wait_for_inferior): Two changes: 1) Added code to
+ not trigger the step breakpoint on recursive calls to functions
+ without frame info, and 2) Added calls to distinguish recursive
+ calls within a function without a frame (which next/nexti might
+ wish to step over) from jumps to the beginning of a function
+ (which it generally doesn't).
+
+ * m-sparc.h (INIT_EXTRA_FRAME_INFO): Bottom set correctly for leaf
+ parents.
+
+ * blockframe.c (get_prev_frame_cache_item): Put in mod to check
+ for a leaf node (by presence or lack of function prologue). If
+ there is a leaf node, it is assumed that SAVED_PC_AFTER_CALL is
+ valid. Otherwise, FRAME_SAVED_PC or read_pc is used.
+
+ * blockframe.c, frame.h: Did final deletion of unused routines and
+ commented problems with getting a pointer into the frame cache in
+ the frame_info structure comment.
+
+ * blockframe.c, frame.h, stack.c: Killed use of
+ frame_id_from_frame_info; used frame_id_from_addr instead.
+
+ * blockframe.c, frame.h, stack.c, others (oops): Combined stack
+ cache and frame info structures.
+
+ * blockframe.c, sparc-dep.c, stack.c: Created the function
+ create_new_frame and used it in place of bad calls to
+ frame_id_from_addr.
+
+ * blockframe.c, inflow.c, infrun.c, i386-pinsn.c, m-hp9k320.h,
+ m-npl.h, m-pn.h, m-sparc.h, m-sun3.h, m-vax.h, default-dep.c,
+ convex-dep.c, gould-dep.c, hp9k320-dep.c, news-dep.c, sparc-dep.c,
+ sun3-dep.c, umax-dep.c: Killed use of
+ set_current_Frame_by_address. Used set_current_frame
+ (create_new_frame...) instead.
+
+ * frame.h: Killed use of FRAME_FP_ID.
+
+ * infrun.c, blockframe.c: Killed select_frame_by_address. Used
+ select_frame (get_current_frame (), 0) (which was correct in all
+ cases that we need to worry about.
+
+Mon Nov 14 14:19:32 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * frame.h, blockframe.c, stack.c, m-sparc.h, sparc-dep.c: Added
+ mechanisms to deal with possible specification of frames
+ dyadically.
+
+Sun Nov 13 16:03:32 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * ns32k-opcode.h: Add insns acbw, acbd.
+
+Sun Nov 13 15:09:58 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * breakpoint.c: Changed breakpoint structure to use the address of
+ a given frame (constant across inferior runs) as the criteria for
+ stopping instead of the frame ident (which varies across inferior
+ calls).
+
+Fri Nov 11 13:00:22 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * gld-pinsn.c (findframe): Modified to work with the new frame
+ id's. Actually, it looks as if this routine should be called with
+ an address anyway.
+
+ * findvar.c (find_saved_register): Altered bactrace loop to work
+ off of frames and not frame infos.
+
+ * frame.h, blockframe.c, stack.c, sparc-dep.c, m-sparc.h: Changed
+ FRAME from being the address of the frame to being a simple ident
+ which is an index into the frame_cache_item list.
+ * convex-dep.c, default-dep.c, gould-dep.c, hp9k320-dep.c,
+ i386-pinsn.c, inflow.c, infrun.c, news-dep.c, sparc-dep.c,
+ sun3-dep.c, umax-dep.c, m-hp9k320.h, m-npl.h, m-pn.h, m-sparc.h,
+ m-sun3.h, m-vax.h: Changed calls of the form set_current_frame
+ (read_register (FP_REGNUM)) to set_current_frame_by_address (...).
+
+Thu Nov 10 16:57:57 1988 Randall Smith (randy at gluteus.ai.mit.edu)
+
+ * frame.h, blockframe.c, gld-pinsn.c, sparc-dep.c, stack.c,
+ infrun.c, findvar.c, m-sparc.h: Changed the FRAME type to be
+ purely an identifier, using FRAME_FP and FRAME_FP_ID to convert
+ back and forth between the two. The identifier is *currently*
+ still the frame pointer value for that frame.
+
+Wed Nov 9 17:28:14 1988 Chris Hanson (cph at kleph)
+
+ * m-hp9k320.h (FP_REGISTER_ADDR): Redefine this to return
+ difference between address of given FP register, and beginning of
+ `struct user' that it occurs in.
+
+ * hp9k320-dep.c (core_file_command): Fix sign error in size
+ argument to myread. Change buffer argument to pointer; was
+ copying entire structure.
+ (fetch_inferior_registers, store_inferior_registers): Replace
+ occurrences of `FP_REGISTER_ADDR_DIFF' with `FP_REGISTER_ADDR'.
+ Flush former definition.
+
+Wed Nov 9 12:11:37 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * xgdb.c: Killed include of initialize.h.
+
+ * Pulled in xgdb.c from the net.
+
+ * Checkpointed distribution (to provide to 3b2 guy).
+
+ * coffread.c, dbxread.c, symmisc.c, symtab.c, symseg.h: Changed
+ format of table of line number--pc mapping information. Can
+ handle negative pc's now.
+
+ * command.c: Deleted local copy of savestring; code in utils.c is
+ identical.
+
+Tue Nov 8 11:12:16 1988 Randall Smith (randy at plantaris.ai.mit.edu)
+
+ * gdb.texinfo: Added documentation for shell escape.
+
+Mon Nov 7 12:27:16 1988 Randall Smith (randy at sugar-bombs.ai.mit.edu)
+
+ * command.c: Added commands for shell escape.
+
+ * core.c, dbxread.c: Added ROBOTUSSIN mods.
+
+ * Checkpointed distribution.
+
+ * printcmd.c (x_command): Yanked error if there is no memory to
+ examine (could be looking at executable straight).
+
+ * sparc-pinsn.c (print_insn): Amount to leftshift sethi imm by is
+ now 10 (matches adb in output).
+
+ * printcmd.c (x_command): Don't attempt to set $_ & $__ if there
+ is no last_examine_value (can happen if you did an x/0).
+
+Fri Nov 4 13:44:49 1988 Randall Smith (randy at gluteus.ai.mit.edu)
+
+ * printcmd.c (x_command): Error if there is no memory to examine.
+
+ * gdb.texinfo: Added "cont" to the command index.
+
+ * sparc-dep.c (do_save_insn): Fixed typo in shift amount.
+
+ * m68k-opcode.h: Fixed opcodes for 68881.
+
+ * breakpoint.c, infcmd.c, source.c: Changed defaults in several
+ places for decode_line_1 to work off of the default_breakpoint_*
+ values instead of current_source_* values (the current_source_*
+ values are off by 5 or so because of listing defaults).
+
+ * stack.c (frame_info): ifdef'd out FRAME_SPECIFCATION_DYADIC in
+ the stack.c module. If I can't do this right, I don't want to do
+ it at all. Read the comment there for more info.
+
+Mon Oct 31 16:23:06 1988 Randall Smith (randy at gluteus.ai.mit.edu)
+
+ * gdb.texinfo: Added documentation on the "until" command.
+
+Sat Oct 29 17:47:10 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * breakpoint.c, infcmd.c: Added UNTIL_COMMAND and subroutines of
+ it.
+
+ * breakpoint.c, infcmd.c, infrun.c: Added new field to breakpoint
+ structure (silent, indicating a silent breakpoint), and modified
+ breakpoint_stop_status and things that read it's return value to
+ understand it.
+
+Fri Oct 28 17:45:33 1988 Randall Smith (randy at gluteus.ai.mit.edu)
+
+ * dbxread.c, symmisc.c: Assorted speedups for readin, including
+ special casing most common symbols, and doing buffering instead of
+ calling malloc.
+
+Thu Oct 27 11:11:15 1988 Randall Smith (randy at gluteus.ai.mit.edu)
+
+ * stack.c, sparc-dep.c, m-sparc.h: Modified to allow "info frame"
+ to take two arguments on the sparc and do the right thing with
+ them.
+
+ * dbxread.c (read_dbx_symtab, process_symbol_for_psymtab): Put
+ stuff to put only symbols that didn't have debugging info on the
+ misc functions list back in.
+
+Wed Oct 26 10:10:32 1988 Randall Smith (randy at gluteus.ai.mit.edu)
+
+ * valprint.c (type_print_varspec_suffix): Added check for
+ TYPE_LENGTH(TYPE_TARGET_TYPE(type)) > 0 to prevent divide by 0.
+
+ * printcmd.c (print_formatted): Added check for VALUE_REPEATED;
+ value_print needs to be called for that.
+
+ * infrun.c (wait_for_inferior): Added break when you decide to
+ stop on a null function prologue rather than continue stepping.
+
+ * m-sun3.h: Added explanatory comment to REGISTER_RAW_SIZE.
+
+ * expread.y (parse_c_1): Initialized paren_depth for each parse.
+
+Tue Oct 25 14:19:38 1988 Randall Smith (randy at gluteus.ai.mit.edu)
+
+ * valprint.c, coffread.c, dbxread.c: Enum constant values in enum
+ type now accessed through TYPE_FIELD_BITPOS.
+
+ * dbxread.c (process_symbol_for_psymtab): Added code to deal with
+ possible lack of a ":" in a debugging symbol (do nothing).
+
+ * symtab.c (decode_line_1): Added check in case of all numbers for
+ complete lack of symbols.
+
+ * source.c (select_source_symtab): Made sure that this wouldn't
+ bomb on complete lack of symbols.
+
+Mon Oct 24 12:28:29 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * m-sparc.h, findvar.c: Ditched REGISTER_SAVED_UNIQUELY and based
+ code on REGISTER_IN_WINDOW_P and HAVE_REGISTER_WINDOWS. This will
+ break when we find a register window machine which saves the
+ window registers within the context of an inferior frame.
+
+ * sparc-dep.c (frame_saved_pc): Put PC_ADJUST return back in for
+ frame_saved_pc. Seems correct.
+
+ * findvar.c, m-sparc.h: Created the macro REGISTER_SAVED_UNIQUELY
+ to handle register window issues (ie. that find_saved_register
+ wasn't checking the selected frame itself for shit).
+
+ * sparc-dep.c (core_file_command): Offset target of o & g register
+ bcopy by 1 to hit correct registers.
+
+ * m-sparc.h: Changed STACK_END_ADDR.
+
+Sun Oct 23 19:41:51 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * sparc-dep.c (core_file_command): Added in code to get the i & l
+ registers from the stack in the corefile, and blew away some wrong
+ code to get i & l from inferior.
+
+Fri Oct 21 15:09:19 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu)
+
+ * m-sparc.h (PUSH_DUMMY_FRAME): Saved the value of the RP register
+ in the location reserved for i7 (in the created frame); this way
+ the rp value won't get lost. The pc (what we put into the rp in
+ this routine) gets saved seperately, so we loose no information.
+
+ * sparc-dep.c (do_save_insn & do_restore_insn): Added a wrapper to
+ preserve the proceed status state variables around each call to
+ proceed (the current frame was getting munged because this wasn't
+ being done).
+
+ * m-sparc.h (FRAME_FIND_SAVED_REGS): Fix bug: saved registers
+ addresses were being computed using absolute registers number,
+ rather than numbers relative to each group of regs.
+
+ * m-sparc.h (POP_FRAME): Fixed a bug (I hope) in the context
+ within which saved reg numbers were being interpetted. The
+ values to be restored were being gotten in the inferior frame, and
+ the restoring was done in the superior frame. This means that i
+ registers must be restored into o registers.
+
+ * sparc-dep.c (do_restore_insn): Modified to take a pc as an
+ argument, instead of a raw_buffer. This matches (at least it
+ appears to match) usage from POP_FRAME, which is the only place
+ from which do_restore_insn is called.
+
+ * sparc-dep.c (do_save_insn and do_restore_insn): Added comments.
+
+ * m-sparc.h (FRAME_FIND_SAVED_REGS): Modified my code to find the
+ save addresses of out registers to use the in regs off the stack
+ pointer when the current frame is 1 from the innermost.
+
+Thu Oct 20 13:56:15 1988 & Smith (randy at hobbes.ai.mit.edu)
+
+ * blockframe.c, m-sparc.h: Removed code associated with
+ GET_PREV_FRAME_FROM_CACHE_ITEM. This code was not needed for the
+ sparc; you can always find the previous frames fp from the fp of
+ the current frame (which is the sp of the previous). It's getting
+ the information associated with a given frame (ie. saved
+ registers) that's a bitch, because that stuff is saved relative to
+ the stack pointer rather than the frame pointer.
+
+ * m-sparc.h (GET_PREV_FRAME_FROM_CACHE_ITEM): Modified to return
+ the frame pointer of the previous frame instead of the stack
+ pointer of same.
+
+ * blockframe.c (flush_cached_frames): Modified call to
+ obstack_free to free back to frame_cache instead of back to zero.
+ This leaves the obstack control structure in finite state (and
+ still frees the entry allocated at frame_cache).
+
+Sat Oct 15 16:30:47 1988 & Smith (randy at tartarus.uchicago.edu)
+
+ * valops.c (call_function): Suicide material here. Fixed a typo;
+ CALL_DUMMY_STACK_ADJUST was spelled CAll_DUMMY_STACK_ADJUST on
+ line 530 of the file. This cost me three days. I'm giving up
+ typing for lent.
+
+Fri Oct 14 15:10:43 1988 & Smith (randy at tartarus.uchicago.edu)
+
+ * m-sparc.h: Corrected a minor mistake in the dummy frame code
+ that was getting the 5th argument and the first argument from the
+ same place.
+
+Tue Oct 11 11:49:33 1988 & Smith (randy at tartarus.uchicago.edu)
+
+ * infrun.c: Made stop_after_trap and stop_after_attach extern
+ instead of static so that code which used proceed from machine
+ dependent files could fiddle with them.
+
+ * blockframe.c, frame.h, sparc-dep.c, m-sparc.h: Changed sense of
+ ->prev and ->next in struct frame_cache_item to fit usage in rest
+ of gdb (oops).
+
+Mon Oct 10 15:32:42 1988 Randy Smith (randy at gargoyle.uchicago.edu)
+
+ * m-sparc.h, sparc-dep.c, blockframe.c, frame.h: Wrote
+ get_frame_cache_item. Modified FRAME_SAVED_PC and frame_saved_pc
+ to take only one argument and do the correct thing with it. Added
+ the two macros I recently defined in blockframe.c to m-sparc.h.
+ Have yet to compile this thing on a sparc, but I've now merged in
+ everything that I received from tiemann, either exactly, or simply
+ effectively.
+
+ * source.c: Added code to allocated space to sals.sals in the case
+ where no line was specified.
+
+ * blockframe.c, infrun.c: Modified to cache stack frames requested
+ to minimize accesses to subprocess.
+
+Tue Oct 4 15:10:39 1988 Randall Smith (randy at cream-of-wheat.ai.mit.edu)
+
+ * config.gdb: Added sparc.
+
+Mon Oct 3 23:01:22 1988 Randall Smith (randy at cream-of-wheat.ai.mit.edu)
+
+ * Makefile, blockframe.c, command.c, core.c, dbxread.c, defs.h,
+ expread.y, findvar.c, infcmd.c, inflow.c, infrun.c, sparc-pinsn.c,
+ m-sparc.h, sparc-def.c, printcmd.c, stack.c, symmisc.c, symseg.h,
+ valops.c, values.c: Did initial merge of sparc port. This will
+ not compile; have to do stack frame caching and finish port.
+
+ * inflow.c, gdb.texinfo: `tty' now resets the controling terminal.
+
+Fri Sep 30 11:31:16 1988 Randall Smith (randy at gluteus.ai.mit.edu)
+
+ * inferior.h, infcmd.c, infrun.c: Changed the variable
+ stop_random_signal to stopped_by_random signal to fit in better
+ with name conventions (variable is not a direction to the
+ proceed/resume set; it is information from it).
+
+Thu Sep 29 13:30:46 1988 Randall Smith (randy at cream-of-wheat.ai.mit.edu)
+
+ * infcmd.c (finish_command): Value type of return value is now
+ whatever the function returns, not the type of the function (fixed
+ a bug in printing said value).
+
+ * dbxread.c (read_dbx_symtab, process_symbol_for_psymtab):
+ Put *all* global symbols into misc_functions. This is what was
+ happening anyway, and we need it for find_pc_misc_function.
+
+ ** This was eventually taken out, but I didn't mark it in the
+ ChangeLog. Oops.
+
+ * dbxread.c (process_symbol_for_psymtab): Put every debugger
+ symbol which survives the top case except for constants on the
+ symchain. This means that all of these *won't* show up in misc
+ functions (this will be fixed once I make sure it's broken the way
+ it's supposed to be).
+
+ * dbxread.c: Modified placement of debugger globals onto the hash
+ list; now we exclude the stuff after the colon and don't skip the
+ first character (debugger symbols don't have underscores).
+
+ * dbxread.c: Killed debuginfo stuff with ifdef's.
+
+Wed Sep 28 14:31:51 1988 Randall Smith (randy at cream-of-wheat.ai.mit.edu)
+
+ * symtab.h, dbxread.c: Modified to deal with BINCL, EINCL, and
+ EXCL symbols produced by the sun loader by adding a list of
+ pre-requisite partial_symtabs that each partial symtab needs.
+
+ * symtab.h, dbxread.c, symtab.c, symmisc.c: Modified to avoid
+ doing a qsort on the local (static) psymbols for each file to
+ speed startup. This feature is not completely debugged, but it's
+ inclusion has forced the inclusion of another feature (dealing
+ with EINCL's, BINCL's and EXCL's) and so I'm going to go in and
+ deal with them.
+
+ * dbxread.c (process_symbol_for_psymtab): Made sure that the class
+ of the symbol made it into the partial_symbol entry.
+
+Tue Sep 27 15:10:26 1988 Randall Smith (randy at gluteus.ai.mit.edu)
+
+ * dbxread.c: Fixed bug; init_psymbol_list was not being called
+ with the right number of arguments (1).
+
+ * dbxread.c: Put ifdef's around N_MAIN, N_M2C, and N_SCOPE to
+ allow compilation on a microvax.
+
+ * config.gdb: Modified so that "config.gdb vax" would work.
+
+ * dbxread.c, symtab.h, symmisc.h, symtab.c, source.c: Put in many
+ and varied hacks to speed up gdb startup including: A complete
+ rewrite of read_dbx_symtab, a modification of the partial_symtab
+ data type, deletion of select_source_symtab from
+ symbol_file_command, and optimiztion of the call to strcmp in
+ compare_psymbols.
+
+Thu Sep 22 11:08:54 1988 Randall Smith (randy at gluteus.ai.mit.edu)
+
+ * dbxread.c (psymtab_to_symtab): Removed call to
+ init_misc_functions.
+
+ * dbxread.c: Fixed enumeration type clash (used enum instead of
+ integer constant).
+
+ * breakpoint.c: Fixed typo; lack of \ at end of line in middle of
+ string constant.
+
+ * symseg.h: Fixed typo; lack of semicolon after structure
+ definition.
+
+ * command.c, breakpoint.c, printcmd.c: Added cmdlist editing
+ functions to add commands with the abbrev flag set. Changed
+ help_cmd_list to recognize this flag and modified unset,
+ undisplay, and enable, disable, and delete breakpoints to have
+ this flag set.
+
+Wed Sep 21 13:34:19 1988 Randall Smith (randy at plantaris.ai.mit.edu)
+
+ * breakpoint.c, infcmd.c, gdb.texinfo: Created "unset" as an alias
+ for delete, and changed "unset-environment" to be the
+ "environment" subcommand of "delete".
+
+ * gdb.texinfo, valprint.c: Added documentation in the manual for
+ breaking the set-* commands into subcommands of set. Changed "set
+ maximum" to "set array-max".
+
+ * main.c, printcmd.c, breakpoint.c: Moved the declaration of
+ command lists into main and setup a function in main initializing
+ them to guarrantee that they would be initialized before calling
+ any of the individual files initialize routines.
+
+ * command.c (lookup_cmd): A null string subcommand is treated as
+ an unknown subcommand rather than an ambiguous one (eg. "set $x =
+ 1" will now work).
+
+ * infrun.c (wait_for_inferior): Put in ifdef for Sony News in
+ check for trap by INNER_THAN macro.
+
+ * eval.c (evaluate_subexp): Put in catch to keep the user from
+ attempting to call a non function as a function.
+
+Tue Sep 20 10:35:53 1988 Randall Smith (randy at oatmeal.ai.mit.edu)
+
+ * dbxread.c (read_dbx_symtab): Installed code to keep track of
+ which global symbols did not have debugger symbols refering to
+ them, and recording these via record_misc_function.
+
+ * dbxread.c: Killed code to check for extra global symbols in the
+ debugger symbol table.
+
+ * printcmd.c, breakpoint.c: Modified help entries for several
+ commands to make sure that abbreviations were clearly marked and
+ that the right commands showed up in the help listings.
+
+ * main.c, command.c, breakpoint.c, infcmd.c, printcmd.c,
+ valprint.c, defs.h: Modified help system to allow help on a class
+ name to show subcommands as well as commands and help on a command
+ to show *all* subcommands of that command.
+
+Fri Sep 16 16:51:19 1988 Randall Smith (randy at gluteus.ai.mit.edu)
+
+ * breakpoint.c (_initialize_breakpoint): Made "breakpoints"
+ subcommands of enable, disable, and delete use class 0 (ie. they
+ show up when you do a help xxx now).
+
+ * infcmd.c,printcmd,c,main.c,valprint.c: Changed the set-*
+ commands into subcommands of set. Created "set variable" for use
+ with variables whose names might conflict with other subcommands.
+
+ * blockframe.c, dbxread.c, coffread.c, expread.y, source.c:
+ Fixed mostly minor (and one major one in block_for_pc) bugs
+ involving checking the partial_symtab_list when a scan through the
+ symtab_list fails.
+
+Wed Sep 14 12:02:05 1988 Randall Smith (randy at sugar-smacks.ai.mit.edu)
+
+ * breakpoint.c, gdb.texinfo: Added enable breakpoints, disable
+ breakpoints and delete breakpoints as synonyms for enable,
+ disable, and delete. This seemed reasonable because of the
+ immeninent arrival of watchpoints & etc.
+
+ * gdb.texinfo: Added enable display, disable display, and delete
+ display to manual.
+
+Tue Sep 13 16:53:56 1988 Randall Smith (randy at sugar-smacks.ai.mit.edu)
+
+ * inferior.h, infrun.c, infcmd.c: Added variable
+ stop_random_signal to indicate when a proceed had been stopped by
+ an unexpected signal. Used this to determine (in normal_stop)
+ whether the current display point should be deleted.
+
+ * valops.c: Fix to value_ind to check for reference before doing a
+ COERCE_ARRAY.
+
+Sun Jul 31 11:42:36 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu)
+
+ * breakpoint.c (_initialize_breakpoint): Clean up doc for commands
+ that can now apply also to auto-displays.
+
+ * coffread.c (record_line): Corrected a spazz in editing.
+ Also removed the two lines that assume line-numbers appear
+ only in increasing order.
+
+Tue Jul 26 22:19:06 1988 Peter TerMaat (pete at corn-chex.ai.mit.edu)
+
+ * expression.h, eval.c, expprint.c, printcmd.c, valarith.c,
+ valops.c, valprint.c, values.c, m-*.h: Changes for evaluating and
+ displaying 64-bit `long long' integers. Each machine must define
+ a LONGEST type, and a BUILTIN_TYPE_LONGEST.
+
+ * symmisc.c: (print_symtab) check the status of the fopen and call
+ perror_with_name if needed.
+
+Thu Jul 21 00:56:11 1988 Peter TerMaat (pete at corn-chex.ai.mit.edu)
+
+ * Convex: core.c: changes required by Convex's SOFF format were
+ isolated in convex-dep.c.
+
+Wed Jul 20 21:26:10 1988 Peter TerMaat (pete at corn-chex.ai.mit.edu)
+
+ * coffread.c, core.c, expread.y, i386-pinsn.c, infcmd.c, inflow.c,
+ infrun.c, m-i386.h, main.c, remote.c, source.c, valops.c:
+ Improvements for the handling of the i386 and other machines
+ running USG. (Several of these files just needed extra header files
+ such as types.h.) utils.c: added bcopy, bcmp, bzero, getwd, list
+ of signals, and queue routines for USG systems. Added vfork macro
+ to i386
+
+ * printcmd.c, breakpoint.c: New commands to enable/disable
+ auto-displays. Also `delete display displaynumber' works like
+ `undisplay displaynumber'.
+
+Tue Jul 19 02:17:18 1988 Peter TerMaat (pete at corn-chex.ai.mit.edu)
+
+ * coffread.c: (coff_lookup_type) Wrong portion of type_vector was
+ being bzero'd after type_vector was reallocated.
+
+ * printcmd.c: (delete_display) Check for a display chain before
+ attempting to delete a display.
+
+ * core.c, *-dep.c (*-infdep moved to *-dep): machine-dependent
+ parts of core.c (core_file_command, exec_file_command) moved to
+ *-dep.c.
+
+Mon Jul 18 19:45:51 1988 Peter TerMaat (pete at corn-chex.ai.mit.edu)
+
+ * dbxread.c: typo in read_struct_type (missing '=') was causing a
+ C struct to be parsed as a C++ struct, resulting in a `invalid
+ character' message.
+
+Sun Jul 17 22:27:32 1988 Peter TerMaat (pete at corn-chex.ai.mit.edu)
+
+ * printcmd.c, symtab.c, valops.c, expread.y: When an expression is
+ read, the innermost block required to evaluate the expression is
+ saved in the global variable `innermost_block'. This information
+ is saved in the `block' field of an auto-display so that
+ expressions with inactive variables can be skipped. `info display'
+ tells the user which displays are active and which are not. New
+ fn `contained_in' returns nonzero if one block is contained within
+ another.
+
+Fri Jul 15 01:53:14 1988 Peter TerMaat (pete at corn-chex.ai.mit.edu)
+
+ * infrun.c, m-i386.h: Use macro TRAPS_EXPECTED to set number of
+ traps to skip when sh execs the program. Default is 2, m-i386.h
+ overrides this and sets to 4.
+
+ * coffread.c, infrun.c: minor changes for the i386. May be able
+ to eliminate them with more general code.
+
+ * default-infdep.c: #ifdef SYSTEMV, include header file types.h.
+ Also switched the order of signal.h and user.h, since System 5
+ requires signal.h to come first.
+
+ * core.c main.c, remote,c, source.c, inflow.c: #ifdef SYSTEMV,
+ include various header files. Usually types.h and fcntl.h.
+
+ * utils.c: added queue routines needed by the i386 (and other sys
+ 5 machines).
+
+ * sys5.c, regex.c, regex.h: new files for sys 5 systems. (The
+ regex files are simply links to /gp/gnu/lib.)
+
+Thu Jul 14 01:47:14 1988 Peter TerMaat (pete at corn-chex.ai.mit.edu)
+
+ * config.gdb, README: Provide a list of known machines when user
+ enters an invalid machine. New second arg is operating system,
+ currently only used with `sunos4' or `os4'. Entry for i386 added.
+
+ * news-infdep.c: new file.
+
+ * m-news.h: new version which deals with new bugs in news800's OS.
+
+Tue Jul 12 19:52:16 1988 Peter TerMaat (pete at corn-chex.ai.mit.edu)
+
+ * Makefile, *.c, munch, config.gdb, README: New initialization
+ scheme uses nm to find functions whose names begin with
+ `_initialize_'. Files `initialize.h', `firstfile.c',
+ `lastfile.c', `m-*init.h' no longer needed.
+
+ * eval.c, symtab.c, valarith.c, valops.c, value.h, values.c: Bug
+ fixes from gdb+ 2.5.4. evaluate_subexp takes a new arg, type
+ expected. New fn value_virtual_fn_field.
+
+Mon Jul 11 00:48:49 1988 Peter TerMaat (pete at corn-chex.ai.mit.edu)
+
+ * core.c (read_memory): xfer_core_file was being called with an
+ extra argument (0) by read_memory.
+
+ * core.c (read_memory), *-infdep.c (read_inferior_memory),
+ valops.c (value_at): read_memory and read_inferior_memory now work
+ like write_memory and write_inferior_memory in that errno is
+ checked after each ptrace and returned to the caller. Used in
+ value_at to detect references to addresses which are out of
+ bounds. Also core.c (xfer_core_file): return 1 if invalid
+ address, 0 otherwise.
+
+ * inflow.c, <machine>-infdep.c: removed all calls to ptrace from
+ inflow.c and put them in machine-dependent files *-infdep.c.
+
+Sun Jul 10 19:19:36 1988 Peter TerMaat (pete at corn-chex.ai.mit.edu)
+
+ * symmisc.c: (read_symsegs) Accept only format number 2. Since
+ the size of the type structure changed when C++ support was added,
+ format 1 can no longer be used.
+
+ * core.c, m-sunos4.h: (core_file_command) support for SunOS 4.0.
+ Slight change in the core structure. #ifdef SUNOS4. New file
+ m-sunos4.h. May want to change config.gdb also.
+
+Fri Jul 8 19:59:49 1988 Peter TerMaat (pete at corn-chex.ai.mit.edu)
+
+ * breakpoint.c: (break_command_1) Allow `break if condition'
+ rather than parsing `if' as a function name and returning an
+ error.
+
+Thu Jul 7 22:22:47 1988 Peter TerMaat (pete at corn-chex.ai.mit.edu)
+
+ * C++: valops.c, valprint.c, value.h, values.c: merged code to deal
+ with C++ expressions.
+
+Wed Jul 6 03:28:18 1988 Peter TerMaat (pete at corn-chex.ai.mit.edu)
+
+ * C++: dbxread.c: (read_dbx_symtab, condense_misc_bunches,
+ add_file_command) Merged code to read symbol information from
+ an incrementally linked file. symmisc.c:
+ (init_free_inclink_symtabs, free_inclink_symtabs) Cleanup
+ routines.
+
+Tue Jul 5 02:50:41 1988 Peter TerMaat (pete at corn-chex.ai.mit.edu)
+
+ * C++: symtab.c, breakpoint.c, source.c: Merged code to deal with
+ ambiguous line specifications. In C++ one can have overloaded
+ function names, so that `list classname::overloadedfuncname'
+ refers to several different lines, possibly in different files.
+
+Fri Jul 1 02:44:20 1988 Peter TerMaat (pete at corn-chex.ai.mit.edu)
+
+ * C++: symtab.c: replaced lookup_symtab_1 and lookup_symtab_2 with
+ a modified lookup_symbol which checks for fields of the current
+ implied argument `this'. printcmd.c, source.c, symtab.c,
+ valops.c: Need to change callers once callers are
+ installed.
+
+Wed Jun 29 01:26:56 1988 Peter TerMaat (pete at frosted-flakes.ai.mit.edu)
+
+ * C++: eval.c, expprint.c, expread.y, expression.h, valarith.c,
+ Merged code to deal with evaluation of user-defined operators,
+ member functions, and virtual functions.
+ binop_must_be_user_defined tests for user-defined binops,
+ value_x_binop calls the appropriate operator function.
+
+Tue Jun 28 02:56:42 1988 Peter TerMaat (pete at frosted-flakes.ai.mit.edu)
+
+ * C++: Makefile: changed the echo: expect 101 shift/reduce conflicts
+ and 1 reduce/reduce conflict.
+
+Local Variables:
+mode: indented-text
+left-margin: 8
+fill-column: 74
+version-control: never
+End:
diff --git a/gnu/usr.bin/kgdb/Gdbinit b/gnu/usr.bin/kgdb/Gdbinit
new file mode 100644
index 000000000000..bcacd5dc7e84
--- /dev/null
+++ b/gnu/usr.bin/kgdb/Gdbinit
@@ -0,0 +1,15 @@
+echo Setting up the environment for debugging gdb.\n
+
+b fatal
+
+b info_command
+commands
+ silent
+ return
+end
+
+define rr
+ run
+end
+
+set prompt (top-gdb)
diff --git a/gnu/usr.bin/kgdb/Makefile b/gnu/usr.bin/kgdb/Makefile
new file mode 100644
index 000000000000..fcbff80ef963
--- /dev/null
+++ b/gnu/usr.bin/kgdb/Makefile
@@ -0,0 +1,35 @@
+# @(#)Makefile 6.4 (Berkley) 5/6/91
+
+PROG= kgdb
+GDBSRCS= blockframe.c breakpoint.c command.c copying.c core.c \
+ cplus-dem.c dbxread.c environ.c eval.c expprint.c \
+ expread.y findvar.c infcmd.c inflow.c infrun.c \
+ main.c obstack.c printcmd.c regex.c remote.c \
+ remote-sl.c source.c stack.c symmisc.c symtab.c \
+ utils.c valarith.c valops.c valprint.c values.c \
+ version.c
+SRCS= $(CONFIGSRCS) $(GDBSRCS) init.c
+CFLAGS+= -I. -I$(.CURDIR) -I$(.CURDIR)/config \
+ -DHAVE_VPRINTF -DKERNELDEBUG -DNEWVM
+CFLAGS+= -DFRAME_SPECIFICATION_DYADIC
+DPADD+= ${LIBREADLINE} ${LIBTERMCAP}
+LDADD+= -lreadline -ltermcap
+YFLAGS=
+.PATH: $(.CURDIR)/config
+
+.include "config/Makefile.$(MACHINE)"
+.include <bsd.prog.mk>
+
+$(OBJS): param.h
+
+#
+# Generate the constructor
+#
+init.c: $(CONFIGSRCS) $(GDBSRCS) $(READLINESRCS) param.h
+ -((cd $(.CURDIR)/config; \
+ egrep -h '^_initialize_[^ ]* *\(\)' $(CONFIGSRCS)); \
+ (cd $(.CURDIR); egrep -h '^_initialize_[^ ]* *\(\)' $(GDBSRCS))) | \
+ (echo 'void initialize_all_files () {'; sed -e 's/$$/;/'; echo '}') \
+ > init.c
+
+CLEANFILES+= init.c param.h
diff --git a/gnu/usr.bin/kgdb/Makefile.dist b/gnu/usr.bin/kgdb/Makefile.dist
new file mode 100644
index 000000000000..a51b1fc861c3
--- /dev/null
+++ b/gnu/usr.bin/kgdb/Makefile.dist
@@ -0,0 +1,371 @@
+/* This file should be run through the C preprocessor by config.gdb
+ to produce the Makefile. */
+
+/* Define this to xgdb if you want to compile xgdb as well as gdb. */
+XGDB=
+/* Place to install binaries. */
+bindir=/usr/local/bin
+/* Place to install X binaries. */
+xbindir=$(bindir)
+
+/* System V: If you compile gdb with a compiler which uses the coff
+ encapsulation feature (this is a function of the compiler used, NOT
+ of the m-?.h file selected by config.gdb), you must make sure that
+ the GNU nm is the one that is used by munch. */
+
+/* If you are compiling with GCC, make sure that either 1) You use the
+ -traditional flag, or 2) You have the fixed include files where GCC
+ can reach them. Otherwise the ioctl calls in inflow.c and readline.c
+ will be incorrectly compiled. The "fixincludes" script in the gcc
+ distribution will fix your include files up. */
+/* CC=gcc -traditional */
+CC=cc
+
+/* It is also possible that you will need to add -I/usr/include/sys to the
+ CFLAGS section if your system doesn't have fcntl.h in /usr/include (which
+ is where it should be according to Posix). */
+
+YACC=bison -y -v
+/* YACC=yacc */
+SHELL=/bin/sh
+MAKE=make
+
+/* Set this up with gcc if you have gnu ld and the loader will print out
+ line numbers for undefinded refs. */
+/* CC-LD=gcc -static */
+CC-LD=${CC}
+
+/* If you are using the GNU C library, uncomment the following line. */
+/* HAVE_VPRINTF_DEFINE = -DHAVE_VPRINTF */
+
+/* -I. for "#include <obstack.h>". Possibly regex.h also. */
+
+/* M_CFLAGS, if defined, has system-dependent CFLAGS. */
+#if !defined(M_CFLAGS)
+#define M_CFLAGS
+#endif
+
+/* CFLAGS for both GDB and readline. */
+GLOBAL_CFLAGS = -g M_CFLAGS
+CFLAGS = -I. ${HAVE_VPRINTF_DEFINE} ${GLOBAL_CFLAGS}
+/* None of the things in CFLAGS will do any harm, and on some systems
+ (e.g. SunOS4) it is important to use the M_CFLAGS. */
+LDFLAGS = $(CFLAGS)
+
+/*
+ define this to be "obstack.o" if you don't have the obstack library installed
+ you must at the same time define OBSTACK1 as "obstack.o"
+ so that the dependencies work right. Similarly with REGEX and "regex.o".
+ You must define REGEX and REGEX1 on USG machines.
+ If your sysyem is missing alloca(), or, more likely, it's there but
+ it doesn't work, define ALLOCA & ALLOCA1 */
+OBSTACK = obstack.o
+OBSTACK1 = obstack.o
+
+#ifdef M_REGEX
+REGEX = M_REGEX
+REGEX1 = M_REGEX
+#else
+REGEX =
+REGEX1 =
+#endif
+
+#ifdef M_ALLOCA
+ALLOCA = M_ALLOCA
+ALLOCA1 = M_ALLOCA
+#else
+ALLOCA =
+ALLOCA1 =
+#endif
+
+/*
+ define this to be "malloc.o" if you want to use the gnu malloc routine
+ (useful for debugging memory allocation problems in gdb). Otherwise, leave
+ it blank. */
+/* GNU_MALLOC = */
+GNU_MALLOC = malloc.o
+
+/* Flags to be used in compiling malloc.o
+ Specify range checking for storage allocation. */
+/* MALLOC_FLAGS = ${CFLAGS} */
+MALLOC_FLAGS = ${CFLAGS} -Drcheck -Dbotch=fatal_dump_core -DMSTATS
+
+/* Define SYSV if compiling on a system V or HP machine. */
+#ifdef M_SYSV
+SYSV_DEFINE = -DSYSV
+#else
+SYSV_DEFINE =
+#endif
+
+/* MUNCH_DEFINE should be -DSYSV if have System V-style nm,
+ or null if have BSD-style nm. */
+#ifdef M_BSD_NM
+MUNCH_DEFINE =
+#else
+MUNCH_DEFINE = ${SYSV_DEFINE}
+#endif
+
+/* Flags that describe where you can find the termcap library.
+ You may need to make other arrangements for USG. */
+TERMCAP = -ltermcap
+
+/* M_CLIBS, if defined, has system-dependent libs
+ For example, -lPW for System V to get alloca(). */
+#ifndef M_CLIBS
+#define M_CLIBS
+#endif
+CLIBS = ${ADD_FILES} ${TERMCAP} M_CLIBS
+
+ADD_FILES = ${OBSTACK} ${REGEX} ${ALLOCA} ${GNU_MALLOC}
+ADD_DEPS = ${OBSTACK1} ${REGEX1} ${ALLOCA1} ${GNU_MALLOC}
+
+SFILES = blockframe.c breakpoint.c dbxread.c coffread.c command.c core.c \
+ environ.c eval.c expprint.c findvar.c infcmd.c inflow.c infrun.c \
+ kdb-start.c main.c printcmd.c \
+ remote.c source.c stack.c standalone.c stuff.c symmisc.c symtab.c \
+ utils.c valarith.c valops.c valprint.c values.c version.c expread.y \
+ xgdb.c
+
+DEPFILES = umax-dep.c gould-dep.c default-dep.c sun3-dep.c \
+ sparc-dep.c hp9k320-dep.c hp300bsd-dep.c news-dep.c i386-dep.c \
+ symmetry-dep.c convex-dep.c altos-dep.c isi-dep.c pyr-dep.c
+
+PINSNS = gld-pinsn.c i386-pinsn.c sparc-pinsn.c vax-pinsn.c m68k-pinsn.c \
+ ns32k-pinsn.c convex-pinsn.c pyr-pinsn.c
+
+HFILES = command.h defs.h environ.h expression.h frame.h getpagesize.h \
+ inferior.h symseg.h symtab.h value.h wait.h \
+ a.out.encap.h a.out.gnu.h stab.gnu.h
+
+OPCODES = m68k-opcode.h pn-opcode.h sparc-opcode.h npl-opcode.h vax-opcode.h \
+ ns32k-opcode.h convex-opcode.h pyr-opcode.h
+
+MFILES = m-hp9k320.h m-hp300bsd.h m-i386.h m-i386gas.h \
+ m-i386-sv32.h m-i386g-sv32.h m-isi.h m-merlin.h \
+ m-altos.h m-news.h m-newsos3.h m-npl.h m-pn.h \
+ m-sparc.h m-sun2.h m-sun3.h m-sun2os4.h \
+ m-sun3os4.h m-sun4os4.h m-umax.h m-vax.h m-symmetry.h m-convex.h \
+ m-pyr.h
+
+/* This list of files really shouldn't be in this makefile, but I can't think
+ of any good way to get the readline makefile to tell us what files
+ to put in our tarfile. */
+READLINE = readline.c history.c funmap.c \
+ emacs_keymap.c vi_keymap.c vi_mode.c keymaps.c \
+ readline.h history.h keymaps.h chardefs.h \
+ inc-readline.texinfo inc-history.texinfo \
+ readline.texinfo history.texinfo \
+ Makefile ChangeLog
+
+REMOTE_EXAMPLES = remote-sa.m68k.shar remote-multi.shar
+
+POSSLIBS = obstack.h obstack.c regex.c regex.h malloc.c alloca.c
+
+TESTS = testbpt.c testfun.c testrec.c testreg.c testregs.c
+
+OTHERS = Makefile.dist createtags munch config.gdb ChangeLog README TAGS \
+ gdb.texinfo .gdbinit COPYING expread.tab.c stab.def \
+ XGDB-README copying.c Projects Convex.notes copying.awk hp-include
+
+TAGFILES = ${SFILES} ${DEPFILES} ${PINSNS} ${HFILES} ${OPCODES} ${MFILES} \
+ ${POSSLIBS}
+TARFILES = ${TAGFILES} ${OTHERS} ${REMOTE_EXAMPLES}
+
+OBS = main.o blockframe.o breakpoint.o findvar.o stack.o source.o \
+ values.o eval.o valops.o valarith.o valprint.o printcmd.o \
+ symtab.o symmisc.o coffread.o dbxread.o infcmd.o infrun.o remote.o \
+ command.o utils.o expread.o expprint.o pinsn.o environ.o version.o \
+ copying.o ${READLINEOBS}
+
+TSOBS = core.o inflow.o dep.o
+
+NTSOBS = standalone.o
+
+TSSTART = /lib/crt0.o
+
+NTSSTART = kdb-start.o
+
+RL_LIB = readline/libreadline.a
+
+/* Do some fancy trickery to produce a line like
+ -DM_MAKEDEFINE="-DM_SYSV -DM_BSD_NM".
+*/
+MD=M_MAKEDEFINE
+
+/* Avoid funny things that Sun's make throws in for us. */
+/* TARGET_ARCH is supposed to get around it putting in the machine type.
+ If the "things" up there really is plural, we'll need to do something
+ else as well. */
+/*.c.o:
+ ${CC} -c ${CFLAGS} $< */
+TARGET_ARCH=
+
+all: gdb $(XGDB)
+
+install: gdb $(XGDB)
+ cp gdb $(bindir)/gdb.new
+ mv $(bindir)/gdb.new $(bindir)/gdb
+ -if [ "$(XGDB)" = xgdb ]; then \
+ cp xgdb $(xbindir)/xgdb.new; \
+ mv $(xbindir)/xgdb.new $(xbindir)xgdb; \
+ fi
+
+gdb : $(OBS) $(TSOBS) ${ADD_DEPS} ${RL_LIB}
+ rm -f init.c
+ ./munch ${MUNCH_DEFINE} $(OBS) $(TSOBS) > init.c
+ ${CC-LD} $(LDFLAGS) -o gdb init.c $(OBS) $(TSOBS) ${RL_LIB} $(CLIBS)
+
+/* This is useful when debugging GDB, because Unix doesn't let you run GDB
+ on itself without copying the executable. So "make gdb1" will make
+ gdb and put a copy in gdb1, and you can run it with "gdb gdb1". */
+gdb1 : gdb
+ cp gdb gdb1
+
+Makefile : Makefile.dist
+ cp Makefile.dist tmp.c
+ $(CC) -E >Makefile tmp.c $(MD) "-DM_MAKEDEFINE=$(MD)"
+ -rm tmp.c
+/* This did not work-- -Usparc became "-Usparc" became "-Usparc.
+ Or something like that. */
+/* $(CC) -E >Makefile tmp.c $(MD) "-DM_MAKEDEFINE=\"$(MD)\"" */
+
+xgdb : $(OBS) $(TSOBS) xgdb.o ${ADD_DEPS} ${RL_LIB}
+ rm -f init.c
+ ./munch ${MUNCH_DEFINE} $(OBS) $(TSOBS) xgdb.o > init.c
+ $(CC-LD) $(LDFLAGS) -o xgdb init.c $(OBS) $(TSOBS) xgdb.o \
+ -lXaw -lXmu -lXt -lX11 ${RL_LIB} $(CLIBS)
+
+/* Old (pre R3) xgdb comp.
+ $(CC-LD) $(LDFLAGS) -o xgdb init.c $(OBS) $(TSOBS) xgdb.o \
+ -lXaw -lXt -lX11 $(CLIBS) */
+
+kdb : $(NTSSTART) $(OBS) $(NTSOBS) ${ADD_DEPS} ${RL_LIB}
+ rm -f init.c
+ ./munch ${MUNCH_DEFINE} $(OBS) $(NTSOBS) > init.c
+ $(CC) $(LDFLAGS) -c init.c $(CLIBS)
+ ld -o kdb $(NTSSTART) $(OBS) $(NTSOBS) init.o ${RL_LIB} -lc $(CLIBS)
+
+/* If it can figure out the appropriate order, createtags will make sure
+ that the proper m-*, *-dep, *-pinsn, and *-opcode files come first
+ in the tags list. It will attempt to do the same for dbxread.c and
+ coffread.c. This makes using M-. on machine dependent routines much
+ easier. */
+
+TAGS: ${TAGFILES}
+ createtags ${TAGFILES}
+tags: TAGS
+
+gdb.tar: ${TARFILES}
+ rm -f gdb.tar
+ mkdir dist-gdb
+ cd dist-gdb ; for i in ${TARFILES} ; do ln -s ../$$i . ; done
+ mkdir dist-gdb/readline
+ cd dist-gdb/readline ; for i in ${READLINE} ; do ln -s ../../readline/$$i . ; done
+ tar chf gdb.tar dist-gdb
+ rm -rf dist-gdb
+
+/* Remove gdb.tar.Z so stupid compress doesn't ask whether we want to
+ overwrite it. compress -f is not what we want, because we do want
+ to know if compress would not make it smaller. */
+gdb.tar.Z: gdb.tar
+ if [ -f gdb.tar.Z ]; then rm -f gdb.tar.Z; else true; fi
+ compress gdb.tar
+
+clean:
+ rm -f ${OBS} ${TSOBS} ${NTSOBS} ${OBSTACK} ${REGEX} ${GNU_MALLOC}
+ rm -f init.c init.o
+ rm -f xgdb.o xgdb
+ rm -f gdb core gdb.tar gdb.tar.Z make.log
+ rm -f gdb[0-9]
+ cd readline ; make clean
+
+distclean: clean expread.tab.c TAGS
+ rm -f dep.c opcode.h param.h pinsn.c config.status
+ rm -f y.output yacc.acts yacc.tmp
+ rm -f ${TESTS} Makefile
+
+realclean: clean
+ rm -f expread.tab.c TAGS
+ rm -f dep.c opcode.h param.h pinsn.c config.status
+ rm -f Makefile
+
+xgdb.o : defs.h param.h symtab.h frame.h
+
+/* Make copying.c from COPYING */
+copying.c : COPYING copying.awk
+ awk -f copying.awk < COPYING > copying.c
+
+expread.tab.c : expread.y
+ @echo 'Expect 4 shift/reduce conflict.'
+ ${YACC} expread.y
+ mv y.tab.c expread.tab.c
+
+expread.o : expread.tab.c defs.h param.h symtab.h frame.h expression.h
+ $(CC) -c ${CFLAGS} expread.tab.c
+ mv expread.tab.o expread.o
+
+readline/libreadline.a : force_update
+ cd readline ; ${MAKE} "SYSV=${SYSV_DEFINE}" \
+ "DEBUG_FLAGS=${GLOBAL_CFLAGS}" "CC=${CC}" libreadline.a
+
+force_update :
+
+/* Only useful if you are using the gnu malloc routines. */
+malloc.o : malloc.c
+ ${CC} -c ${MALLOC_FLAGS} malloc.c
+
+/* dep.o depends on config.status in case someone reconfigures gdb out
+ from under an already compiled gdb. */
+dep.o : dep.c config.status defs.h param.h frame.h inferior.h obstack.h \
+ a.out.encap.h
+
+/* pinsn.o depends on config.status in case someone reconfigures gdb out
+ from under an already compiled gdb. */
+pinsn.o : pinsn.c config.status defs.h param.h symtab.h obstack.h symseg.h \
+ frame.h opcode.h
+
+/* The rest of this is a standard dependencies list (hand edited output of
+ cpp -M). It does not include dependencies of .o files on .c files. */
+/* All files which depend on config.status also depend on param.h in case
+ someone reconfigures gdb out from under an already compiled gdb. */
+blockframe.o : defs.h param.h config.status symtab.h obstack.h symseg.h frame.h
+breakpoint.o : defs.h param.h config.status symtab.h obstack.h symseg.h frame.h
+coffread.o : defs.h param.h config.status
+command.o : command.h defs.h
+core.o : defs.h param.h config.status a.out.encap.h
+dbxread.o : param.h config.status defs.h symtab.h obstack.h symseg.h a.out.encap.h \
+ stab.gnu.h
+environ.o : environ.h
+eval.o : defs.h param.h config.status symtab.h obstack.h symseg.h value.h expression.h
+expprint.o : defs.h symtab.h obstack.h symseg.h param.h config.status expression.h
+findvar.o : defs.h param.h config.status symtab.h obstack.h symseg.h frame.h value.h
+infcmd.o : defs.h param.h config.status symtab.h obstack.h symseg.h frame.h inferior.h \
+ environ.h value.h
+inflow.o : defs.h param.h config.status frame.h inferior.h
+infrun.o : defs.h param.h config.status symtab.h obstack.h symseg.h frame.h inferior.h \
+ wait.h
+kdb-start.o : defs.h param.h config.status
+main.o : defs.h command.h param.h config.status
+malloc.o : getpagesize.h
+obstack.o : obstack.h
+printcmd.o : defs.h param.h config.status frame.h symtab.h obstack.h symseg.h value.h \
+ expression.h
+regex.o : regex.h
+remote.o : defs.h param.h config.status frame.h inferior.h wait.h
+source.o : defs.h symtab.h obstack.h symseg.h param.h config.status
+stack.o : defs.h param.h config.status symtab.h obstack.h symseg.h frame.h
+standalone.o : defs.h param.h config.status symtab.h obstack.h symseg.h frame.h \
+ inferior.h wait.h
+symmisc.o : defs.h symtab.h obstack.h symseg.h obstack.h
+symtab.o : defs.h symtab.h obstack.h symseg.h param.h config.status obstack.h
+utils.o : defs.h param.h config.status
+valarith.o : defs.h param.h config.status symtab.h obstack.h symseg.h value.h expression.h
+valops.o : defs.h param.h config.status symtab.h obstack.h symseg.h value.h frame.h \
+ inferior.h
+valprint.o : defs.h param.h config.status symtab.h obstack.h symseg.h value.h
+values.o : defs.h param.h config.status symtab.h obstack.h symseg.h value.h
+
+robotussin.h : getpagesize.h
+symtab.h : obstack.h symseg.h
+a.out.encap.h : a.out.gnu.h
+
diff --git a/gnu/usr.bin/kgdb/Projects b/gnu/usr.bin/kgdb/Projects
new file mode 100644
index 000000000000..f38f6c74e959
--- /dev/null
+++ b/gnu/usr.bin/kgdb/Projects
@@ -0,0 +1,114 @@
+
+ Suggested projects for aspiring or current GDB hackers
+ ======================================================
+
+ (You should probably chat with kingdon@ai.mit.edu to make sure that
+ no one else is doing the project you chose).
+
+Add watchpoints (break if a memory location changes). This would
+usually have to involve constant single stepping, but occasionally
+there is operating system support which gdb should be able to cleanly
+use (e.g. on the 80386, there are 4 debug registers. By ptracing an
+address into them, you can get a trap on writes or on reads and
+writes).
+
+Rewrite proceed, wait_for_inferior, and normal_stop to clean them up.
+Suggestions:
+
+ 1) Make each test in wait_for_inferior a seperate subroutine
+ call.
+ 2) Combine wait_for_inferior and normal_stop to clean up
+ communication via global variables.
+ 3) See if you can find some way to clean up the global
+ variables that are used; possibly group them by data flow
+ and information content?
+
+Work out some kind of way to allow running the inferior to be done as
+a sub-execution of, eg. breakpoint command lists. Currently running
+the inferior interupts any command list execution. This would require
+some rewriting of wait_for_inferior & friends, and hence should
+probably be done in concert with the above.
+
+Add function arguments to gdb user defined functions.
+
+Add convenience variables that refer to exec file, symbol file,
+selected frame source file, selected frame function, selected frame
+line number, etc.
+
+Add a "suspend" subcommand of the "continue" command to suspend gdb
+while continuing execution of the subprocess. Useful when you are
+debugging servers and you want to dodge out and initiate a connection
+to a server running under gdb.
+
+Make "handle" understand symbolic signal names.
+
+Work out and implement a reasonably general mechanism for multi-threaded
+processies. There are parts of one implemented in convex-dep.c, if
+you want an example.
+
+A standalone version of gdb on the i386 exists. Anyone who wants to
+do some serious working cleaning it up and making it a general
+standalone gdb should contact pace@wheaties.ai.mit.edu.
+
+Add stab information to allow reasonable debugging of inline functions
+(possibly they should show up on a stack backtrace? With a note
+indicating that they weren't "real"?).
+
+Implement support for specifying arbitrary locations of stack frames
+(in practice, this usually requires specification of both the top and
+bottom of the stack frame (fp and sp), since you *must* retrieve the
+pc that was saved in the innermost frame).
+
+Modify the naked "until" command to step until past the current source
+line, rather than past the current pc value. This is tricky simply
+because the low level routines have no way of specifying a multi-line
+step range, and there is no way of saying "don't print stuff when we
+stop" from above (otherwise could just call step many times).
+
+Modify the handling of symbols grouped through BINCL/EINCL stabs to
+allocate a partial symtab for each BINCL/EINCL grouping. This will
+seriously decrease the size of inter-psymtab dependencies and hence
+lessen the amount that needs to be read in when a new source file is
+accessed.
+
+Work out some method of saving breakpoints across the reloading of an
+executable. Probably this should be by saving the commands by which
+the breakpoints were set and re-executing them (as text locations may
+change).
+
+Do an "x/i $pc" after each stepi or nexti.
+
+Modify all of the disassemblers to use printf_filtered to get correct
+more filtering.
+
+Modify gdb to work correctly with Pascal.
+
+Rewrite macros that handle frame chaining and frameless functions.
+They should be able to tell the difference between start, main, and a
+frameless function called from main.
+
+Work out what information would need to be included in an executable
+by the compiler to allow gdb to debug functions which do not have a
+frame pointer. Modify gdb and gcc to do this.
+
+When `attached' to a program (via either OS support or remote
+debugging), gdb should arrange to catch signals which the terminal
+might send, as it is unlikely that the program will be able to notice
+them. SIGINT and SIGTSTP are obvious examples.
+
+Enhance the gdb manual with extra examples where needed.
+
+Arrange for list_command not to use decode_line_1 and thus not require
+symbols to be read in simply to read a source file.
+
+Problem in xgdb; the readline library needs the terminal in CBREAK
+mode for command line editing, but this makes it difficult to dispatch
+on button presses. Possible solution: use a define to replace getc in
+readline.c with a routine that does button dispatches. You should
+probably see XGDB-README before you fiddle with XGDB. Also, someone
+is implementing a new xgdb; it may not be worth while fiddling with
+the old one.
+
+# Local Variables:
+# mode: text
+# End:
diff --git a/gnu/usr.bin/kgdb/README.gnu b/gnu/usr.bin/kgdb/README.gnu
new file mode 100644
index 000000000000..fa54dec236fd
--- /dev/null
+++ b/gnu/usr.bin/kgdb/README.gnu
@@ -0,0 +1,142 @@
+This is GDB, the GNU source-level debugger, presently running under un*x.
+
+Before compiling GDB, you must tell GDB what kind of machine you are
+running on. To do this, type `config.gdb machine', where machine is
+something like `vax' or `sun2'. For a list of valid machine types,
+type `config.gdb'.
+
+Normally config.gdb edits the makefile as necessary. If you have to
+edit the makefile on a standard machine listed in config.gdb this
+should be considered a bug and reported as such.
+
+Once these files are set up, just `make' will do everything,
+producing an executable `gdb' in this directory.
+
+If you want a new (current to this release) version of the manual, you
+will have to use the gdb.texinfo file provided with this distribution.
+The gdb.texinfo file requires the texinfo-format-buffer command from
+emacs 18.55 or later.
+
+About languages other than C...
+
+C++ support has been integrated into gdb. GDB should work with
+FORTRAN programs (if you have problem, please send a bug report), but
+I am not aware of anyone who is working on getting it to use the
+syntax of any language other than C or C++. Pascal programs which use
+sets, subranges, file variables, or nested functions will not
+currently work.
+
+About -gg format...
+
+Currently GDB version 3.x does *not* support GCC's -gg format. This
+is because it (in theory) has fast enough startup on dbx debugging
+format object files that -gg format is unnecessary (and hence
+undesirable, since it wastes space and processing power in gcc). I
+would like to hear people's opinions on the amount of time currently
+spent in startup; is it fast enough?
+
+About remote debugging...
+
+The two files remote-multi.shar and remote-sa.m68k.shar contain two
+examples of a remote stub to be used with remote.c. The the -multi
+file is a general stub that can probably be running on various
+different flavors of unix to allow debugging over a serial line from
+one machine to another. The remote-sa.m68k.shar is designed to run
+standalone on a 68k type cpu and communicate properley with the
+remote.c stub over a serial line.
+
+About reporting bugs...
+
+The correct address for reporting bugs found with gdb is
+"bug-gdb@prep.ai.mit.edu". Please send all bugs to that address.
+
+About xgdb...
+
+xgdb.c was provided to us by the user community; it is not an integral
+part of the gdb distribution. The problem of providing visual
+debugging support on top of gdb is peripheral to the GNU project and
+(at least right now) we can't afford to put time into it. So while we
+will be happy to incorporate user fixes to xgdb.c, we do not guarantee
+that it will work and we will not fix bugs reported in it. Someone is
+working on writing a new XGDB, so improving (e.g. by fixing it so that
+it will work, if it doesn't currently) the current one is not worth it.
+
+For those intersted in auto display of source and the availability of
+an editor while debugging I suggest trying gdb-mode in gnu-emacs.
+Comments on this mode are welcome.
+
+About the machine-dependent files...
+
+m-<machine>.h (param.h is a link to this file).
+This file contains macro definitions that express information
+about the machine's registers, stack frame format and instructions.
+
+<machine>-opcode.h (opcode.h is a link to this file).
+<machine>-pinsn.c (pinsn.c is a link to this file).
+These files contain the information necessary to print instructions
+for your cpu type.
+
+<machine>-dep.c (dep.c is a link to this file).
+Those routines which provide a low level interface to ptrace and which
+tend to be machine-dependent. (The machine-independent routines are in
+`infrun.c' and `inflow.c')
+
+About writing code for GDB...
+
+We appreciate having users contribute code that is of general use, but
+for it to be included in future GDB releases it must be cleanly
+written. We do not want to include changes that will needlessly make future
+maintainance difficult. It is not much harder to do things right, and
+in the long term it is worth it to the GNU project, and probably to
+you individually as well.
+
+Please code according to the GNU coding standards. If you do not have
+a copy, you can request one by sending mail to gnu@prep.ai.mit.edu.
+
+Please try to avoid making machine-specific changes to
+machine-independent files (i.e. all files except "param.h" and
+"dep.c". "pinsn.c" and "opcode.h" are processor-specific but not
+operating system-dependent). If this is unavoidable, put a hook in
+the machine-independent file which calls a (possibly)
+machine-dependent macro (for example, the IGNORE_SYMBOL macro can be
+used for any symbols which need to be ignored on a specific machine.
+Calling IGNORE_SYMBOL in dbxread.c is a lot cleaner than a maze of #if
+defined's). The machine-independent code should do whatever "most"
+machines want if the macro is not defined in param.h. Using #if
+defined can sometimes be OK (e.g. SET_STACK_LIMIT_HUGE) but should be
+conditionalized on a specific feature of an operating system (set in
+param.h) rather than something like #if defined(vax) or #if
+defined(SYSV).
+
+It is better to replace entire routines which may be system-specific,
+rather than put in a whole bunch of hooks which are probably not going
+to be helpful for any purpose other than your changes. For example,
+if you want to modify dbxread.c to deal with DBX debugging symbols
+which are in COFF files rather than BSD a.out files, do something
+along the lines of a macro GET_NEXT_SYMBOL, which could have
+different definitions for COFF and a.out, rather than trying to put
+the necessary changes throughout all the code in dbxread.c that
+currently assumes BSD format.
+
+Please avoid duplicating code. For example, if something needs to be
+changed in read_inferior_memory, it is very painful because there is a
+copy in every dep.c file. The correct way to do this is to put (in
+this case) the standard ptrace interfaces in a separate file ptrace.c,
+which is used by all systems which have ptrace. ptrace.c would deal
+with variations between systems the same way any system-independent
+file would (hooks, #if defined, etc.).
+
+About debugging gdb with itself...
+
+You probably want to do a "make TAGS" after you configure your
+distribution; this will put the machine dependent routines for your
+local machine where they will be accessed first by a M-period .
+
+Also, make sure that you've compiled gdb with your local cc or taken
+appropriate precautions regarding ansification of include files. See
+the Makefile for more information.
+
+The "info" command, when executed without a subcommand in a gdb being
+debugged by gdb, will pop you back up to the top level gdb. See
+.gdbinit for more details.
+
diff --git a/gnu/usr.bin/kgdb/XGdbinit.samp b/gnu/usr.bin/kgdb/XGdbinit.samp
new file mode 100644
index 000000000000..a99f10695606
--- /dev/null
+++ b/gnu/usr.bin/kgdb/XGdbinit.samp
@@ -0,0 +1,15 @@
+button "show" push-to-file %S
+button "back" pop-file
+button "break in" break %S
+button "break at" break %l
+button delete delete %b%e
+button backtrace
+button up
+button down
+button print print %E
+button print* print *(%E)
+button next
+button step
+button "do upto" until %l%e
+button finish
+button continue cont%e
diff --git a/gnu/usr.bin/kgdb/Xgdb.ad b/gnu/usr.bin/kgdb/Xgdb.ad
new file mode 100644
index 000000000000..5f9fe9920b49
--- /dev/null
+++ b/gnu/usr.bin/kgdb/Xgdb.ad
@@ -0,0 +1,8 @@
+Xgdb*geometry: 580x874-0+28
+Xgdb*src*scrollVertical: whenneeded
+Xgdb*src*scrollHorizontal: whenneeded
+Xgdb*src*wrap: never
+Xgdb*src*editType: read
+Xgdb*frame.buttons.allowResize: true
+Xgdb*frame.buttons.skipAdjust: true
+Xgdb*frame*showGrip: false
diff --git a/gnu/usr.bin/kgdb/blockframe.c b/gnu/usr.bin/kgdb/blockframe.c
new file mode 100644
index 000000000000..236d1cdccfec
--- /dev/null
+++ b/gnu/usr.bin/kgdb/blockframe.c
@@ -0,0 +1,622 @@
+/*-
+ * This code is derived from software copyrighted by the Free Software
+ * Foundation.
+ *
+ * Modified 1991 by Donn Seeley at UUNET Technologies, Inc.
+ * Modified 1990 by Van Jacobson at Lawrence Berkeley Laboratory.
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)blockframe.c 6.4 (Berkeley) 5/11/91";
+#endif /* not lint */
+
+/* Get info from stack frames;
+ convert between frames, blocks, functions and pc values.
+ Copyright (C) 1986, 1987, 1988, 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include "defs.h"
+#include "param.h"
+#include "symtab.h"
+#include "frame.h"
+
+#include <obstack.h>
+
+#if defined(NEWVM) && defined(KERNELDEBUG)
+#include <sys/param.h> /* XXX for FRAME_CHAIN_VALID */
+#endif
+
+/* Start and end of object file containing the entry point.
+ STARTUP_FILE_END is the first address of the next file.
+ This file is assumed to be a startup file
+ and frames with pc's inside it
+ are treated as nonexistent.
+
+ Setting these variables is necessary so that backtraces do not fly off
+ the bottom of the stack. */
+CORE_ADDR startup_file_start;
+CORE_ADDR startup_file_end;
+
+/* Is ADDR outside the startup file? */
+int
+outside_startup_file (addr)
+ CORE_ADDR addr;
+{
+ return !(addr >= startup_file_start && addr < startup_file_end);
+}
+
+/* Address of innermost stack frame (contents of FP register) */
+
+static FRAME current_frame;
+
+struct block *block_for_pc ();
+CORE_ADDR get_pc_function_start ();
+
+/*
+ * Cache for frame addresses already read by gdb. Valid only while
+ * inferior is stopped. Control variables for the frame cache should
+ * be local to this module.
+ */
+struct obstack frame_cache_obstack;
+
+/* Return the innermost (currently executing) stack frame. */
+
+FRAME
+get_current_frame ()
+{
+ /* We assume its address is kept in a general register;
+ param.h says which register. */
+
+ return current_frame;
+}
+
+void
+set_current_frame (frame)
+ FRAME frame;
+{
+ current_frame = frame;
+}
+
+FRAME
+create_new_frame (addr, pc)
+ FRAME_ADDR addr;
+ CORE_ADDR pc;
+{
+ struct frame_info *fci; /* Same type as FRAME */
+
+ fci = (struct frame_info *)
+ obstack_alloc (&frame_cache_obstack,
+ sizeof (struct frame_info));
+
+ /* Arbitrary frame */
+ fci->next = (struct frame_info *) 0;
+ fci->prev = (struct frame_info *) 0;
+ fci->frame = addr;
+ fci->next_frame = 0; /* Since arbitrary */
+ fci->pc = pc;
+
+#ifdef INIT_EXTRA_FRAME_INFO
+ INIT_EXTRA_FRAME_INFO (fci);
+#endif
+
+ return fci;
+}
+
+/* Return the frame that called FRAME.
+ If FRAME is the original frame (it has no caller), return 0. */
+
+FRAME
+get_prev_frame (frame)
+ FRAME frame;
+{
+ /* We're allowed to know that FRAME and "struct frame_info *" are
+ the same */
+ return get_prev_frame_info (frame);
+}
+
+/* Return the frame that FRAME calls (0 if FRAME is the innermost
+ frame). */
+
+FRAME
+get_next_frame (frame)
+ FRAME frame;
+{
+ /* We're allowed to know that FRAME and "struct frame_info *" are
+ the same */
+ return frame->next;
+}
+
+/*
+ * Flush the entire frame cache.
+ */
+void
+flush_cached_frames ()
+{
+ /* Since we can't really be sure what the first object allocated was */
+ obstack_free (&frame_cache_obstack, 0);
+ obstack_init (&frame_cache_obstack);
+
+ current_frame = (struct frame_info *) 0; /* Invalidate cache */
+}
+
+/* Return a structure containing various interesting information
+ about a specified stack frame. */
+/* How do I justify including this function? Well, the FRAME
+ identifier format has gone through several changes recently, and
+ it's not completely inconceivable that it could happen again. If
+ it does, have this routine around will help */
+
+struct frame_info *
+get_frame_info (frame)
+ FRAME frame;
+{
+ return frame;
+}
+
+/* If a machine allows frameless functions, it should define a macro
+ FRAMELESS_FUNCTION_INVOCATION(FI, FRAMELESS) in param.h. FI is the struct
+ frame_info for the frame, and FRAMELESS should be set to nonzero
+ if it represents a frameless function invocation. */
+
+/* Many machines which allow frameless functions can detect them using
+ this macro. Such machines should define FRAMELESS_FUNCTION_INVOCATION
+ to just call this macro. */
+#define FRAMELESS_LOOK_FOR_PROLOGUE(FI, FRAMELESS) \
+{ \
+ CORE_ADDR func_start, after_prologue; \
+ func_start = (get_pc_function_start ((FI)->pc) + \
+ FUNCTION_START_OFFSET); \
+ if (func_start) \
+ { \
+ after_prologue = func_start; \
+ SKIP_PROLOGUE (after_prologue); \
+ (FRAMELESS) = (after_prologue == func_start); \
+ } \
+ else \
+ /* If we can't find the start of the function, we don't really */ \
+ /* know whether the function is frameless, but we should be */ \
+ /* able to get a reasonable (i.e. best we can do under the */ \
+ /* circumstances) backtrace by saying that it isn't. */ \
+ (FRAMELESS) = 0; \
+}
+
+/* Return a structure containing various interesting information
+ about the frame that called NEXT_FRAME. Returns NULL
+ if there is no such frame. */
+
+struct frame_info *
+get_prev_frame_info (next_frame)
+ FRAME next_frame;
+{
+ FRAME_ADDR address;
+ struct frame_info *prev;
+ int fromleaf = 0;
+
+ /* If the requested entry is in the cache, return it.
+ Otherwise, figure out what the address should be for the entry
+ we're about to add to the cache. */
+
+ if (!next_frame)
+ {
+ if (!current_frame)
+ {
+ if (!have_inferior_p () && !have_core_file_p ())
+ fatal ("get_prev_frame_info: Called before cache primed. \"Shouldn't happen.\"");
+ else
+ error ("No inferior or core file.");
+ }
+
+ return current_frame;
+ }
+
+ /* If we have the prev one, return it */
+ if (next_frame->prev)
+ return next_frame->prev;
+
+ /* On some machines it is possible to call a function without
+ setting up a stack frame for it. On these machines, we
+ define this macro to take two args; a frameinfo pointer
+ identifying a frame and a variable to set or clear if it is
+ or isn't leafless. */
+#ifdef FRAMELESS_FUNCTION_INVOCATION
+ /* Still don't want to worry about this except on the innermost
+ frame. This macro will set FROMLEAF if NEXT_FRAME is a
+ frameless function invocation. */
+ if (!(next_frame->next))
+ {
+ FRAMELESS_FUNCTION_INVOCATION (next_frame, fromleaf);
+ if (fromleaf)
+ address = next_frame->frame;
+ }
+#endif
+
+ if (!fromleaf)
+ {
+ /* Two macros defined in param.h specify the machine-dependent
+ actions to be performed here.
+ First, get the frame's chain-pointer.
+ If that is zero, the frame is the outermost frame or a leaf
+ called by the outermost frame. This means that if start
+ calls main without a frame, we'll return 0 (which is fine
+ anyway).
+
+ Nope; there's a problem. This also returns when the current
+ routine is a leaf of main. This is unacceptable. We move
+ this to after the ffi test; I'd rather have backtraces from
+ start go curfluy than have an abort called from main not show
+ main. */
+ address = FRAME_CHAIN (next_frame);
+ if (!FRAME_CHAIN_VALID (address, next_frame))
+ return 0;
+ /* If this frame is a leaf, this will be superceeded by the
+ code below. */
+ address = FRAME_CHAIN_COMBINE (address, next_frame);
+ }
+ if (address == 0)
+ return 0;
+
+ prev = (struct frame_info *)
+ obstack_alloc (&frame_cache_obstack,
+ sizeof (struct frame_info));
+
+ if (next_frame)
+ next_frame->prev = prev;
+ prev->next = next_frame;
+ prev->prev = (struct frame_info *) 0;
+ prev->frame = address;
+ prev->next_frame = prev->next ? prev->next->frame : 0;
+
+#ifdef INIT_EXTRA_FRAME_INFO
+ INIT_EXTRA_FRAME_INFO(prev);
+#endif
+
+ /* This entry is in the frame queue now, which is good since
+ FRAME_SAVED_PC may use that queue to figure out it's value
+ (see m-sparc.h). We want the pc saved in the inferior frame. */
+ prev->pc = (fromleaf ? SAVED_PC_AFTER_CALL (next_frame) :
+ next_frame ? FRAME_SAVED_PC (next_frame) : read_pc ());
+
+ return prev;
+}
+
+CORE_ADDR
+get_frame_pc (frame)
+ FRAME frame;
+{
+ struct frame_info *fi;
+ fi = get_frame_info (frame);
+ return fi->pc;
+}
+
+/* Find the addresses in which registers are saved in FRAME. */
+
+void
+get_frame_saved_regs (frame_info_addr, saved_regs_addr)
+ struct frame_info *frame_info_addr;
+ struct frame_saved_regs *saved_regs_addr;
+{
+ FRAME_FIND_SAVED_REGS (frame_info_addr, *saved_regs_addr);
+}
+
+/* Return the innermost lexical block in execution
+ in a specified stack frame. The frame address is assumed valid. */
+
+struct block *
+get_frame_block (frame)
+ FRAME frame;
+{
+ struct frame_info *fi;
+ CORE_ADDR pc;
+
+ fi = get_frame_info (frame);
+
+ pc = fi->pc;
+ if (fi->next_frame != 0)
+ /* We are not in the innermost frame. We need to subtract one to
+ get the correct block, in case the call instruction was the
+ last instruction of the block. If there are any machines on
+ which the saved pc does not point to after the call insn, we
+ probably want to make fi->pc point after the call insn anyway. */
+ --pc;
+ return block_for_pc (pc);
+}
+
+struct block *
+get_current_block ()
+{
+ return block_for_pc (read_pc ());
+}
+
+CORE_ADDR
+get_pc_function_start (pc)
+ CORE_ADDR pc;
+{
+ register struct block *bl = block_for_pc (pc);
+ register struct symbol *symbol;
+ if (bl == 0 || (symbol = block_function (bl)) == 0)
+ {
+ register int misc_index = find_pc_misc_function (pc);
+ if (misc_index >= 0)
+ return misc_function_vector[misc_index].address;
+ return 0;
+ }
+ bl = SYMBOL_BLOCK_VALUE (symbol);
+ return BLOCK_START (bl);
+}
+
+/* Return the symbol for the function executing in frame FRAME. */
+
+struct symbol *
+get_frame_function (frame)
+ FRAME frame;
+{
+ register struct block *bl = get_frame_block (frame);
+ if (bl == 0)
+ return 0;
+ return block_function (bl);
+}
+
+/* Return the innermost lexical block containing the specified pc value,
+ or 0 if there is none. */
+
+extern struct symtab *psymtab_to_symtab ();
+
+struct block *
+block_for_pc (pc)
+ register CORE_ADDR pc;
+{
+ register struct block *b;
+ register int bot, top, half;
+ register struct symtab *s;
+ register struct partial_symtab *ps;
+ struct blockvector *bl;
+
+ /* First search all symtabs for one whose file contains our pc */
+
+ for (s = symtab_list; s; s = s->next)
+ {
+ bl = BLOCKVECTOR (s);
+ b = BLOCKVECTOR_BLOCK (bl, 0);
+ if (BLOCK_START (b) <= pc
+ && BLOCK_END (b) > pc)
+ break;
+ }
+
+ if (s == 0)
+ for (ps = partial_symtab_list; ps; ps = ps->next)
+ {
+ if (ps->textlow <= pc
+ && ps->texthigh > pc)
+ {
+ if (ps->readin)
+ fatal ("Internal error: pc found in readin psymtab and not in any symtab.");
+ s = psymtab_to_symtab (ps);
+ bl = BLOCKVECTOR (s);
+ b = BLOCKVECTOR_BLOCK (bl, 0);
+ break;
+ }
+ }
+
+ if (s == 0)
+ return 0;
+
+ /* Then search that symtab for the smallest block that wins. */
+ /* Use binary search to find the last block that starts before PC. */
+
+ bot = 0;
+ top = BLOCKVECTOR_NBLOCKS (bl);
+
+ while (top - bot > 1)
+ {
+ half = (top - bot + 1) >> 1;
+ b = BLOCKVECTOR_BLOCK (bl, bot + half);
+ if (BLOCK_START (b) <= pc)
+ bot += half;
+ else
+ top = bot + half;
+ }
+
+ /* Now search backward for a block that ends after PC. */
+
+ while (bot >= 0)
+ {
+ b = BLOCKVECTOR_BLOCK (bl, bot);
+ if (BLOCK_END (b) > pc)
+ return b;
+ bot--;
+ }
+
+ return 0;
+}
+
+/* Return the function containing pc value PC.
+ Returns 0 if function is not known. */
+
+struct symbol *
+find_pc_function (pc)
+ CORE_ADDR pc;
+{
+ register struct block *b = block_for_pc (pc);
+ if (b == 0)
+ return 0;
+ return block_function (b);
+}
+
+/* Finds the "function" (text symbol) that is smaller than PC
+ but greatest of all of the potential text symbols. Sets
+ *NAME and/or *ADDRESS conditionally if that pointer is non-zero.
+ Returns 0 if it couldn't find anything, 1 if it did. On a zero
+ return, *NAME and *ADDRESS are always set to zero. On a 1 return,
+ *NAME and *ADDRESS contain real information. */
+
+int
+find_pc_partial_function (pc, name, address)
+ CORE_ADDR pc;
+ char **name;
+ CORE_ADDR *address;
+{
+ struct partial_symtab *pst = find_pc_psymtab (pc);
+ struct symbol *f;
+ int miscfunc;
+ struct partial_symbol *psb;
+
+ if (pst)
+ {
+ if (pst->readin)
+ {
+ /* The information we want has already been read in.
+ We can go to the already readin symbols and we'll get
+ the best possible answer. */
+ f = find_pc_function (pc);
+ if (!f)
+ {
+ return_error:
+ /* No availible symbol. */
+ if (name != 0)
+ *name = 0;
+ if (address != 0)
+ *address = 0;
+ return 0;
+ }
+
+ if (name)
+ *name = SYMBOL_NAME (f);
+ if (address)
+ *address = BLOCK_START (SYMBOL_BLOCK_VALUE (f));
+ return 1;
+ }
+
+ /* Get the information from a combination of the pst
+ (static symbols), and the misc function vector (extern
+ symbols). */
+ miscfunc = find_pc_misc_function (pc);
+ psb = find_pc_psymbol (pst, pc);
+
+ if (!psb && miscfunc == -1)
+ {
+ goto return_error;
+ }
+ if (!psb
+ || (miscfunc != -1
+ && (SYMBOL_VALUE(psb)
+ < misc_function_vector[miscfunc].address)))
+ {
+ if (address)
+ *address = misc_function_vector[miscfunc].address;
+ if (name)
+ *name = misc_function_vector[miscfunc].name;
+ return 1;
+ }
+ else
+ {
+ if (address)
+ *address = SYMBOL_VALUE (psb);
+ if (name)
+ *name = SYMBOL_NAME (psb);
+ return 1;
+ }
+ }
+ else
+ /* Must be in the misc function stuff. */
+ {
+ miscfunc = find_pc_misc_function (pc);
+ if (miscfunc == -1)
+ goto return_error;
+ if (address)
+ *address = misc_function_vector[miscfunc].address;
+ if (name)
+ *name = misc_function_vector[miscfunc].name;
+ return 1;
+ }
+}
+
+/* Find the misc function whose address is the largest
+ while being less than PC. Return its index in misc_function_vector.
+ Returns -1 if PC is not in suitable range. */
+
+int
+find_pc_misc_function (pc)
+ register CORE_ADDR pc;
+{
+ register int lo = 0;
+ register int hi = misc_function_count-1;
+ register int new;
+ register int distance;
+
+ /* Note that the last thing in the vector is always _etext. */
+ /* Actually, "end", now that non-functions
+ go on the misc_function_vector. */
+
+ /* Above statement is not *always* true - fix for case where there are */
+ /* no misc functions at all (ie no symbol table has been read). */
+ if (hi < 0) return -1; /* no misc functions recorded */
+
+ /* trivial reject range test */
+ if (pc < misc_function_vector[0].address ||
+ pc > misc_function_vector[hi].address)
+ return -1;
+
+ /* Note that the following search will not return hi if
+ pc == misc_function_vector[hi].address. If "end" points to the
+ first unused location, this is correct and the above test
+ simply needs to be changed to
+ "pc >= misc_function_vector[hi].address". */
+ do {
+ new = (lo + hi) >> 1;
+ distance = misc_function_vector[new].address - pc;
+ if (distance == 0)
+ return new; /* an exact match */
+ else if (distance > 0)
+ hi = new;
+ else
+ lo = new;
+ } while (hi-lo != 1);
+
+ /* if here, we had no exact match, so return the lower choice */
+ return lo;
+}
+
+/* Return the innermost stack frame executing inside of the specified block,
+ or zero if there is no such frame. */
+
+FRAME
+block_innermost_frame (block)
+ struct block *block;
+{
+ struct frame_info *fi;
+ register FRAME frame;
+ register CORE_ADDR start = BLOCK_START (block);
+ register CORE_ADDR end = BLOCK_END (block);
+
+ frame = 0;
+ while (1)
+ {
+ frame = get_prev_frame (frame);
+ if (frame == 0)
+ return 0;
+ fi = get_frame_info (frame);
+ if (fi->pc >= start && fi->pc < end)
+ return frame;
+ }
+}
+
+void
+_initialize_blockframe ()
+{
+ obstack_init (&frame_cache_obstack);
+}
diff --git a/gnu/usr.bin/kgdb/breakpoint.c b/gnu/usr.bin/kgdb/breakpoint.c
new file mode 100644
index 000000000000..fc013407b357
--- /dev/null
+++ b/gnu/usr.bin/kgdb/breakpoint.c
@@ -0,0 +1,1383 @@
+/*-
+ * This code is derived from software copyrighted by the Free Software
+ * Foundation.
+ *
+ * Modified 1991 by Donn Seeley at UUNET Technologies, Inc.
+ * Modified 1990 by Van Jacobson at Lawrence Berkeley Laboratory.
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)breakpoint.c 6.3 (Berkeley) 5/8/91";
+#endif /* not lint */
+
+/* Everything about breakpoints, for GDB.
+ Copyright (C) 1986, 1987, 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include <stdio.h>
+#include "defs.h"
+#include "param.h"
+#include "symtab.h"
+#include "frame.h"
+
+/* This is the sequence of bytes we insert for a breakpoint. */
+
+static char break_insn[] = BREAKPOINT;
+
+/* States of enablement of breakpoint.
+ `temporary' means disable when hit.
+ `delete' means delete when hit. */
+
+enum enable { disabled, enabled, temporary, delete};
+
+/* Not that the ->silent field is not currently used by any commands
+ (though the code is in there if it was to be and set_raw_breakpoint
+ does set it to 0). I implemented it because I thought it would be
+ useful for a hack I had to put in; I'm going to leave it in because
+ I can see how there might be times when it would indeed be useful */
+
+struct breakpoint
+{
+ struct breakpoint *next;
+ /* Number assigned to distinguish breakpoints. */
+ int number;
+ /* Address to break at. */
+ CORE_ADDR address;
+ /* Line number of this address. Redundant. */
+ int line_number;
+ /* Symtab of file of this address. Redundant. */
+ struct symtab *symtab;
+ /* Zero means disabled; remember the info but don't break here. */
+ enum enable enable;
+ /* Non-zero means a silent breakpoint (don't print frame info
+ if we stop here). */
+ unsigned char silent;
+ /* Number of stops at this breakpoint that should
+ be continued automatically before really stopping. */
+ int ignore_count;
+ /* "Real" contents of byte where breakpoint has been inserted.
+ Valid only when breakpoints are in the program. */
+ char shadow_contents[sizeof break_insn];
+ /* Nonzero if this breakpoint is now inserted. */
+ char inserted;
+ /* Nonzero if this is not the first breakpoint in the list
+ for the given address. */
+ char duplicate;
+ /* Chain of command lines to execute when this breakpoint is hit. */
+ struct command_line *commands;
+ /* Stack depth (address of frame). If nonzero, break only if fp
+ equals this. */
+ FRAME_ADDR frame;
+ /* Conditional. Break only if this expression's value is nonzero. */
+ struct expression *cond;
+};
+
+#define ALL_BREAKPOINTS(b) for (b = breakpoint_chain; b; b = b->next)
+
+/* Chain of all breakpoints defined. */
+
+struct breakpoint *breakpoint_chain;
+
+/* Number of last breakpoint made. */
+
+static int breakpoint_count;
+
+/* Default address, symtab and line to put a breakpoint at
+ for "break" command with no arg.
+ if default_breakpoint_valid is zero, the other three are
+ not valid, and "break" with no arg is an error.
+
+ This set by print_stack_frame, which calls set_default_breakpoint. */
+
+int default_breakpoint_valid;
+CORE_ADDR default_breakpoint_address;
+struct symtab *default_breakpoint_symtab;
+int default_breakpoint_line;
+
+/* Remaining commands (not yet executed)
+ of last breakpoint hit. */
+
+struct command_line *breakpoint_commands;
+
+static void delete_breakpoint ();
+void clear_momentary_breakpoints ();
+void breakpoint_auto_delete ();
+
+/* Flag indicating extra verbosity for xgdb. */
+extern int xgdb_verbose;
+
+/* condition N EXP -- set break condition of breakpoint N to EXP. */
+
+static void
+condition_command (arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ register struct breakpoint *b;
+ register char *p;
+ register int bnum;
+ register struct expression *expr;
+
+ if (arg == 0)
+ error_no_arg ("breakpoint number");
+
+ p = arg;
+ while (*p >= '0' && *p <= '9') p++;
+ if (p == arg)
+ /* There is no number here. (e.g. "cond a == b"). */
+ error_no_arg ("breakpoint number");
+ bnum = atoi (arg);
+
+ ALL_BREAKPOINTS (b)
+ if (b->number == bnum)
+ {
+ if (b->cond)
+ {
+ free (b->cond);
+ b->cond = 0; /* parse_c_1 can leave this unchanged. */
+ }
+ if (*p == 0)
+ {
+ b->cond = 0;
+ if (from_tty)
+ printf ("Breakpoint %d now unconditional.\n", bnum);
+ }
+ else
+ {
+ if (*p != ' ' && *p != '\t')
+ error ("Arguments must be an integer (breakpoint number) and an expression.");
+
+ /* Find start of expression */
+ while (*p == ' ' || *p == '\t') p++;
+
+ arg = p;
+ b->cond = (struct expression *) parse_c_1 (&arg, block_for_pc (b->address), 0);
+ if (*arg)
+ error ("Junk at end of expression");
+ }
+ return;
+ }
+
+ error ("No breakpoint number %d.", bnum);
+}
+
+static void
+commands_command (arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ register struct breakpoint *b;
+ register char *p, *p1;
+ register int bnum;
+ struct command_line *l;
+
+ /* If we allowed this, we would have problems with when to
+ free the storage, if we change the commands currently
+ being read from. */
+
+ if (breakpoint_commands)
+ error ("Can't use the \"commands\" command among a breakpoint's commands.");
+
+ /* Allow commands by itself to refer to the last breakpoint. */
+ if (arg == 0)
+ bnum = breakpoint_count;
+ else
+ {
+ p = arg;
+ if (! (*p >= '0' && *p <= '9'))
+ error ("Argument must be integer (a breakpoint number).");
+
+ while (*p >= '0' && *p <= '9') p++;
+ if (*p)
+ error ("Unexpected extra arguments following breakpoint number.");
+
+ bnum = atoi (arg);
+ }
+
+ ALL_BREAKPOINTS (b)
+ if (b->number == bnum)
+ {
+ if (from_tty && input_from_terminal_p ())
+ {
+ printf ("Type commands for when breakpoint %d is hit, one per line.\n\
+End with a line saying just \"end\".\n", bnum);
+ fflush (stdout);
+ }
+ l = read_command_lines (from_tty);
+ free_command_lines (b->commands);
+ b->commands = l;
+ return;
+ }
+ error ("No breakpoint number %d.", bnum);
+}
+
+/* Called from command loop to execute the commands
+ associated with the breakpoint we just stopped at. */
+
+void
+do_breakpoint_commands ()
+{
+ struct command_line *cmd;
+
+ while (cmd = breakpoint_commands)
+ {
+ breakpoint_commands = 0;
+ execute_command_lines(cmd);
+ /* If command was "cont", breakpoint_commands is now 0,
+ of if we stopped at yet another breakpoint which has commands,
+ it is now the commands for the new breakpoint. */
+ }
+ clear_momentary_breakpoints ();
+}
+
+/* Used when the program is proceeded, to eliminate any remaining
+ commands attached to the previous breakpoint we stopped at. */
+
+void
+clear_breakpoint_commands ()
+{
+ breakpoint_commands = 0;
+ breakpoint_auto_delete (0);
+}
+
+/* Functions to get and set the current list of pending
+ breakpoint commands. These are used by run_stack_dummy
+ to preserve the commands around a function call. */
+
+struct command_line *
+get_breakpoint_commands ()
+{
+ return breakpoint_commands;
+}
+
+void
+set_breakpoint_commands (cmds)
+ struct command_line *cmds;
+{
+ breakpoint_commands = cmds;
+}
+
+/* insert_breakpoints is used when starting or continuing the program.
+ remove_breakpoints is used when the program stops.
+ Both return zero if successful,
+ or an `errno' value if could not write the inferior. */
+
+int
+insert_breakpoints ()
+{
+ register struct breakpoint *b;
+ int val;
+
+#ifdef BREAKPOINT_DEBUG
+ printf ("Inserting breakpoints.\n");
+#endif /* BREAKPOINT_DEBUG */
+
+ ALL_BREAKPOINTS (b)
+ if (b->enable != disabled && ! b->inserted && ! b->duplicate)
+ {
+ read_memory (b->address, b->shadow_contents, sizeof break_insn);
+ val = write_memory (b->address, break_insn, sizeof break_insn);
+ if (val)
+ return val;
+#ifdef BREAKPOINT_DEBUG
+ printf ("Inserted breakpoint at 0x%x, shadow 0x%x, 0x%x.\n",
+ b->address, b->shadow_contents[0], b->shadow_contents[1]);
+#endif /* BREAKPOINT_DEBUG */
+ b->inserted = 1;
+ }
+ return 0;
+}
+
+int
+remove_breakpoints ()
+{
+ register struct breakpoint *b;
+ int val;
+
+#ifdef BREAKPOINT_DEBUG
+ printf ("Removing breakpoints.\n");
+#endif /* BREAKPOINT_DEBUG */
+
+ ALL_BREAKPOINTS (b)
+ if (b->inserted)
+ {
+ val = write_memory (b->address, b->shadow_contents, sizeof break_insn);
+ if (val)
+ return val;
+ b->inserted = 0;
+#ifdef BREAKPOINT_DEBUG
+ printf ("Removed breakpoint at 0x%x, shadow 0x%x, 0x%x.\n",
+ b->address, b->shadow_contents[0], b->shadow_contents[1]);
+#endif /* BREAKPOINT_DEBUG */
+ }
+
+ return 0;
+}
+
+/* Clear the "inserted" flag in all breakpoints.
+ This is done when the inferior is loaded. */
+
+void
+mark_breakpoints_out ()
+{
+ register struct breakpoint *b;
+
+ ALL_BREAKPOINTS (b)
+ b->inserted = 0;
+}
+
+/* breakpoint_here_p (PC) returns 1 if an enabled breakpoint exists at PC.
+ When continuing from a location with a breakpoint,
+ we actually single step once before calling insert_breakpoints. */
+
+int
+breakpoint_here_p (pc)
+ CORE_ADDR pc;
+{
+ register struct breakpoint *b;
+
+ ALL_BREAKPOINTS (b)
+ if (b->enable != disabled && b->address == pc)
+ return 1;
+
+ return 0;
+}
+
+/* Evaluate the expression EXP and return 1 if value is zero.
+ This is used inside a catch_errors to evaluate the breakpoint condition. */
+
+int
+breakpoint_cond_eval (exp)
+ struct expression *exp;
+{
+ return value_zerop (evaluate_expression (exp));
+}
+
+/* Return 0 if PC is not the address just after a breakpoint,
+ or -1 if breakpoint says do not stop now,
+ or -2 if breakpoint says it has deleted itself and don't stop,
+ or -3 if hit a breakpoint number -3 (delete when program stops),
+ or else the number of the breakpoint,
+ with 0x1000000 added (or subtracted, for a negative return value) for
+ a silent breakpoint. */
+
+int
+breakpoint_stop_status (pc, frame_address)
+ CORE_ADDR pc;
+ FRAME_ADDR frame_address;
+{
+ register struct breakpoint *b;
+ register int cont = 0;
+
+ /* Get the address where the breakpoint would have been. */
+ pc -= DECR_PC_AFTER_BREAK;
+
+ ALL_BREAKPOINTS (b)
+ if (b->enable != disabled && b->address == pc)
+ {
+ if (b->frame && b->frame != frame_address)
+ cont = -1;
+ else
+ {
+ int value_zero;
+ if (b->cond)
+ {
+ /* Need to select the frame, with all that implies
+ so that the conditions will have the right context. */
+ select_frame (get_current_frame (), 0);
+ value_zero
+ = catch_errors (breakpoint_cond_eval, b->cond,
+ "Error occurred in testing breakpoint condition.");
+ free_all_values ();
+ }
+ if (b->cond && value_zero)
+ {
+ cont = -1;
+ }
+ else if (b->ignore_count > 0)
+ {
+ b->ignore_count--;
+ cont = -1;
+ }
+ else
+ {
+ if (b->enable == temporary)
+ b->enable = disabled;
+ breakpoint_commands = b->commands;
+ if (b->silent
+ || (breakpoint_commands
+ && !strcmp ("silent", breakpoint_commands->line)))
+ {
+ if (breakpoint_commands)
+ breakpoint_commands = breakpoint_commands->next;
+ return (b->number > 0 ?
+ 0x1000000 + b->number :
+ b->number - 0x1000000);
+ }
+ return b->number;
+ }
+ }
+ }
+
+ return cont;
+}
+
+static void
+breakpoint_1 (bnum)
+ int bnum;
+{
+ register struct breakpoint *b;
+ register struct command_line *l;
+ register struct symbol *sym;
+ CORE_ADDR last_addr = (CORE_ADDR)-1;
+
+ ALL_BREAKPOINTS (b)
+ if (bnum == -1 || bnum == b->number)
+ {
+ printf_filtered ("#%-3d %c 0x%08x", b->number,
+ "nyod"[(int) b->enable],
+ b->address);
+ last_addr = b->address;
+ if (b->symtab)
+ {
+ sym = find_pc_function (b->address);
+ if (sym)
+ {
+ fputs_filtered (" in ", stdout);
+ fputs_demangled (SYMBOL_NAME (sym), stdout, 1);
+ fputs_filtered (" (", stdout);
+ }
+ fputs_filtered (b->symtab->filename, stdout);
+ printf_filtered (" line %d", b->line_number);
+ if (sym) fputs_filtered(")", stdout);
+ }
+ else
+ print_address_symbolic (b->address, stdout);
+
+ printf_filtered ("\n");
+
+ if (b->ignore_count)
+ printf_filtered ("\tignore next %d hits\n", b->ignore_count);
+ if (b->frame)
+ printf_filtered ("\tstop only in stack frame at 0x%x\n", b->frame);
+ if (b->cond)
+ {
+ printf_filtered ("\tbreak only if ");
+ print_expression (b->cond, stdout);
+ printf_filtered ("\n");
+ }
+ if (l = b->commands)
+ while (l)
+ {
+ printf_filtered ("\t%s\n", l->line);
+ l = l->next;
+ }
+ }
+
+ /* Compare against (CORE_ADDR)-1 in case some compiler decides
+ that a comparison of an unsigned with -1 is always false. */
+ if (last_addr != (CORE_ADDR)-1)
+ set_next_address (last_addr);
+}
+
+static void
+breakpoints_info (bnum_exp)
+ char *bnum_exp;
+{
+ int bnum = -1;
+
+ if (bnum_exp)
+ bnum = parse_and_eval_address (bnum_exp);
+ else if (breakpoint_chain == 0)
+ printf_filtered ("No breakpoints.\n");
+ else
+ printf_filtered ("Breakpoints:\n\
+Num Enb Address Where\n");
+
+ breakpoint_1 (bnum);
+}
+
+/* Print a message describing any breakpoints set at PC. */
+
+static void
+describe_other_breakpoints (pc)
+ register CORE_ADDR pc;
+{
+ register int others = 0;
+ register struct breakpoint *b;
+
+ ALL_BREAKPOINTS (b)
+ if (b->address == pc)
+ others++;
+ if (others > 0)
+ {
+ printf ("Note: breakpoint%s ", (others > 1) ? "s" : "");
+ ALL_BREAKPOINTS (b)
+ if (b->address == pc)
+ {
+ others--;
+ printf ("%d%s%s ",
+ b->number,
+ (b->enable == disabled) ? " (disabled)" : "",
+ (others > 1) ? "," : ((others == 1) ? " and" : ""));
+ }
+ printf ("also set at pc 0x%x.\n", pc);
+ }
+}
+
+/* Set the default place to put a breakpoint
+ for the `break' command with no arguments. */
+
+void
+set_default_breakpoint (valid, addr, symtab, line)
+ int valid;
+ CORE_ADDR addr;
+ struct symtab *symtab;
+ int line;
+{
+ default_breakpoint_valid = valid;
+ default_breakpoint_address = addr;
+ default_breakpoint_symtab = symtab;
+ default_breakpoint_line = line;
+}
+
+/* Rescan breakpoints at address ADDRESS,
+ marking the first one as "first" and any others as "duplicates".
+ This is so that the bpt instruction is only inserted once. */
+
+static void
+check_duplicates (address)
+ CORE_ADDR address;
+{
+ register struct breakpoint *b;
+ register int count = 0;
+
+ ALL_BREAKPOINTS (b)
+ if (b->enable != disabled && b->address == address)
+ {
+ count++;
+ b->duplicate = count > 1;
+ }
+}
+
+/* Low level routine to set a breakpoint.
+ Takes as args the three things that every breakpoint must have.
+ Returns the breakpoint object so caller can set other things.
+ Does not set the breakpoint number!
+ Does not print anything. */
+
+static struct breakpoint *
+set_raw_breakpoint (sal)
+ struct symtab_and_line sal;
+{
+ register struct breakpoint *b, *b1;
+
+ b = (struct breakpoint *) xmalloc (sizeof (struct breakpoint));
+ bzero (b, sizeof *b);
+ b->address = sal.pc;
+ b->symtab = sal.symtab;
+ b->line_number = sal.line;
+ b->enable = enabled;
+ b->next = 0;
+ b->silent = 0;
+
+ /* Add this breakpoint to the end of the chain
+ so that a list of breakpoints will come out in order
+ of increasing numbers. */
+
+ b1 = breakpoint_chain;
+ if (b1 == 0)
+ breakpoint_chain = b;
+ else
+ {
+ while (b1->next)
+ b1 = b1->next;
+ b1->next = b;
+ }
+
+ check_duplicates (sal.pc);
+
+ return b;
+}
+
+/* Set a breakpoint that will evaporate an end of command
+ at address specified by SAL.
+ Restrict it to frame FRAME if FRAME is nonzero. */
+
+void
+set_momentary_breakpoint (sal, frame)
+ struct symtab_and_line sal;
+ FRAME frame;
+{
+ register struct breakpoint *b;
+ b = set_raw_breakpoint (sal);
+ b->number = -3;
+ b->enable = delete;
+ b->frame = (frame ? FRAME_FP (frame) : 0);
+}
+
+void
+clear_momentary_breakpoints ()
+{
+ register struct breakpoint *b;
+ ALL_BREAKPOINTS (b)
+ if (b->number == -3)
+ {
+ delete_breakpoint (b);
+ break;
+ }
+}
+
+/* Set a breakpoint from a symtab and line.
+ If TEMPFLAG is nonzero, it is a temporary breakpoint.
+ Print the same confirmation messages that the breakpoint command prints. */
+
+void
+set_breakpoint (s, line, tempflag)
+ struct symtab *s;
+ int line;
+ int tempflag;
+{
+ register struct breakpoint *b;
+ struct symtab_and_line sal;
+
+ sal.symtab = s;
+ sal.line = line;
+ sal.pc = find_line_pc (sal.symtab, sal.line);
+ if (sal.pc == 0)
+ error ("No line %d in file \"%s\".\n", sal.line, sal.symtab->filename);
+ else
+ {
+ describe_other_breakpoints (sal.pc);
+
+ b = set_raw_breakpoint (sal);
+ b->number = ++breakpoint_count;
+ b->cond = 0;
+ if (tempflag)
+ b->enable = temporary;
+
+ printf ("Breakpoint %d at 0x%x", b->number, b->address);
+ if (b->symtab)
+ printf (": file %s, line %d.", b->symtab->filename, b->line_number);
+ printf ("\n");
+ }
+}
+
+/* Set a breakpoint according to ARG (function, linenum or *address)
+ and make it temporary if TEMPFLAG is nonzero. */
+
+static void
+break_command_1 (arg, tempflag, from_tty)
+ char *arg;
+ int tempflag, from_tty;
+{
+ struct symtabs_and_lines sals;
+ struct symtab_and_line sal;
+ register struct expression *cond = 0;
+ register struct breakpoint *b;
+ char *save_arg;
+ int i;
+ CORE_ADDR pc;
+
+ sals.sals = NULL;
+ sals.nelts = 0;
+
+ sal.line = sal.pc = sal.end = 0;
+ sal.symtab = 0;
+
+ /* If no arg given, or if first arg is 'if ', use the default breakpoint. */
+
+ if (!arg || (arg[0] == 'i' && arg[1] == 'f'
+ && (arg[2] == ' ' || arg[2] == '\t')))
+ {
+ if (default_breakpoint_valid)
+ {
+ sals.sals = (struct symtab_and_line *)
+ malloc (sizeof (struct symtab_and_line));
+ sal.pc = default_breakpoint_address;
+ sal.line = default_breakpoint_line;
+ sal.symtab = default_breakpoint_symtab;
+ sals.sals[0] = sal;
+ sals.nelts = 1;
+ }
+ else
+ error ("No default breakpoint address now.");
+ }
+ else
+ /* Force almost all breakpoints to be in terms of the
+ current_source_symtab (which is decode_line_1's default). This
+ should produce the results we want almost all of the time while
+ leaving default_breakpoint_* alone. */
+ if (default_breakpoint_valid
+ && (!current_source_symtab
+ || (arg && (*arg == '+' || *arg == '-'))))
+ sals = decode_line_1 (&arg, 1, default_breakpoint_symtab,
+ default_breakpoint_line);
+ else
+ sals = decode_line_1 (&arg, 1, 0, 0);
+
+ if (! sals.nelts)
+ return;
+
+ save_arg = arg;
+ for (i = 0; i < sals.nelts; i++)
+ {
+ sal = sals.sals[i];
+ if (sal.pc == 0 && sal.symtab != 0)
+ {
+ pc = find_line_pc (sal.symtab, sal.line);
+ if (pc == 0)
+ error ("No line %d in file \"%s\".",
+ sal.line, sal.symtab->filename);
+ }
+ else
+ pc = sal.pc;
+
+ while (arg && *arg)
+ {
+ if (arg[0] == 'i' && arg[1] == 'f'
+ && (arg[2] == ' ' || arg[2] == '\t'))
+ cond = (struct expression *) parse_c_1 ((arg += 2, &arg),
+ block_for_pc (pc), 0);
+ else
+ error ("Junk at end of arguments.");
+ }
+ arg = save_arg;
+ sals.sals[i].pc = pc;
+ }
+
+ for (i = 0; i < sals.nelts; i++)
+ {
+ sal = sals.sals[i];
+
+ if (from_tty)
+ describe_other_breakpoints (sal.pc);
+
+ b = set_raw_breakpoint (sal);
+ b->number = ++breakpoint_count;
+ b->cond = cond;
+ if (tempflag)
+ b->enable = temporary;
+
+ printf ("Breakpoint %d at 0x%x", b->number, b->address);
+ if (b->symtab)
+ printf (": file %s, line %d.", b->symtab->filename, b->line_number);
+ printf ("\n");
+ }
+
+ if (sals.nelts > 1)
+ {
+ printf ("Multiple breakpoints were set.\n");
+ printf ("Use the \"delete\" command to delete unwanted breakpoints.\n");
+ }
+ free (sals.sals);
+}
+
+static void
+break_command (arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ break_command_1 (arg, 0, from_tty);
+}
+
+static void
+tbreak_command (arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ break_command_1 (arg, 1, from_tty);
+}
+
+/*
+ * Helper routine for the until_command routine in infcmd.c. Here
+ * because it uses the mechanisms of breakpoints.
+ */
+void
+until_break_command (arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ struct symtabs_and_lines sals;
+ struct symtab_and_line sal;
+ FRAME prev_frame = get_prev_frame (selected_frame);
+
+ clear_proceed_status ();
+
+ /* Set a breakpoint where the user wants it and at return from
+ this function */
+
+ if (default_breakpoint_valid)
+ sals = decode_line_1 (&arg, 1, default_breakpoint_symtab,
+ default_breakpoint_line);
+ else
+ sals = decode_line_1 (&arg, 1, 0, 0);
+
+ if (sals.nelts != 1)
+ error ("Couldn't get information on specified line.");
+
+ sal = sals.sals[0];
+ free (sals.sals); /* malloc'd, so freed */
+
+ if (*arg)
+ error ("Junk at end of arguments.");
+
+ if (sal.pc == 0 && sal.symtab != 0)
+ sal.pc = find_line_pc (sal.symtab, sal.line);
+
+ if (sal.pc == 0)
+ error ("No line %d in file \"%s\".", sal.line, sal.symtab->filename);
+
+ set_momentary_breakpoint (sal, selected_frame);
+
+ /* Keep within the current frame */
+
+ if (prev_frame)
+ {
+ struct frame_info *fi;
+
+ fi = get_frame_info (prev_frame);
+ sal = find_pc_line (fi->pc, 0);
+ sal.pc = fi->pc;
+ set_momentary_breakpoint (sal, prev_frame);
+ }
+
+ proceed (-1, -1, 0);
+}
+
+static void
+clear_command (arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ register struct breakpoint *b, *b1;
+ struct symtabs_and_lines sals;
+ struct symtab_and_line sal;
+ register struct breakpoint *found;
+ int i;
+
+ if (arg)
+ {
+ sals = decode_line_spec (arg, 1);
+ }
+ else
+ {
+ sals.sals = (struct symtab_and_line *) malloc (sizeof (struct symtab_and_line));
+ sal.line = default_breakpoint_line;
+ sal.symtab = default_breakpoint_symtab;
+ sal.pc = 0;
+ if (sal.symtab == 0)
+ error ("No source file specified.");
+
+ sals.sals[0] = sal;
+ sals.nelts = 1;
+ }
+
+ for (i = 0; i < sals.nelts; i++)
+ {
+ /* If exact pc given, clear bpts at that pc.
+ But if sal.pc is zero, clear all bpts on specified line. */
+ sal = sals.sals[i];
+ found = (struct breakpoint *) 0;
+ while (breakpoint_chain
+ && (sal.pc ? breakpoint_chain->address == sal.pc
+ : (breakpoint_chain->symtab == sal.symtab
+ && breakpoint_chain->line_number == sal.line)))
+ {
+ b1 = breakpoint_chain;
+ breakpoint_chain = b1->next;
+ b1->next = found;
+ found = b1;
+ }
+
+ ALL_BREAKPOINTS (b)
+ while (b->next
+ && (sal.pc ? b->next->address == sal.pc
+ : (b->next->symtab == sal.symtab
+ && b->next->line_number == sal.line)))
+ {
+ b1 = b->next;
+ b->next = b1->next;
+ b1->next = found;
+ found = b1;
+ }
+
+ if (found == 0)
+ error ("No breakpoint at %s.", arg);
+
+ if (found->next) from_tty = 1; /* Always report if deleted more than one */
+ if (from_tty) printf ("Deleted breakpoint%s ", found->next ? "s" : "");
+ while (found)
+ {
+ if (from_tty) printf ("%d ", found->number);
+ b1 = found->next;
+ delete_breakpoint (found);
+ found = b1;
+ }
+ if (from_tty) putchar ('\n');
+ }
+ free (sals.sals);
+}
+
+/* Delete breakpoint number BNUM if it is a `delete' breakpoint.
+ This is called after breakpoint BNUM has been hit.
+ Also delete any breakpoint numbered -3 unless there are breakpoint
+ commands to be executed. */
+
+void
+breakpoint_auto_delete (bnum)
+ int bnum;
+{
+ register struct breakpoint *b;
+ if (bnum != 0)
+ ALL_BREAKPOINTS (b)
+ if (b->number == bnum)
+ {
+ if (b->enable == delete)
+ delete_breakpoint (b);
+ break;
+ }
+ if (breakpoint_commands == 0)
+ clear_momentary_breakpoints ();
+}
+
+static void
+delete_breakpoint (bpt)
+ struct breakpoint *bpt;
+{
+ register struct breakpoint *b;
+
+ if (bpt->inserted)
+ write_memory (bpt->address, bpt->shadow_contents, sizeof break_insn);
+
+ if (breakpoint_chain == bpt)
+ breakpoint_chain = bpt->next;
+
+ ALL_BREAKPOINTS (b)
+ if (b->next == bpt)
+ {
+ b->next = bpt->next;
+ break;
+ }
+
+ check_duplicates (bpt->address);
+
+ free_command_lines (bpt->commands);
+ if (bpt->cond)
+ free (bpt->cond);
+
+ if (xgdb_verbose && bpt->number >=0)
+ printf ("breakpoint #%d deleted\n", bpt->number);
+
+ free (bpt);
+}
+
+static void map_breakpoint_numbers ();
+
+static void
+delete_command (arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ register struct breakpoint *b, *b1;
+
+ if (arg == 0)
+ {
+ /* Ask user only if there are some breakpoints to delete. */
+ if (!from_tty
+ || breakpoint_chain && query ("Delete all breakpoints? "))
+ {
+ /* No arg; clear all breakpoints. */
+ while (breakpoint_chain)
+ delete_breakpoint (breakpoint_chain);
+ }
+ }
+ else
+ map_breakpoint_numbers (arg, delete_breakpoint);
+}
+
+/* Delete all breakpoints.
+ Done when new symtabs are loaded, since the break condition expressions
+ may become invalid, and the breakpoints are probably wrong anyway. */
+
+void
+clear_breakpoints ()
+{
+ delete_command (0, 0);
+}
+
+/* Set ignore-count of breakpoint number BPTNUM to COUNT.
+ If from_tty is nonzero, it prints a message to that effect,
+ which ends with a period (no newline). */
+
+void
+set_ignore_count (bptnum, count, from_tty)
+ int bptnum, count, from_tty;
+{
+ register struct breakpoint *b;
+
+ if (count < 0)
+ count = 0;
+
+ ALL_BREAKPOINTS (b)
+ if (b->number == bptnum)
+ {
+ b->ignore_count = count;
+ if (!from_tty)
+ return;
+ else if (count == 0)
+ printf ("Will stop next time breakpoint %d is reached.", bptnum);
+ else if (count == 1)
+ printf ("Will ignore next crossing of breakpoint %d.", bptnum);
+ else
+ printf ("Will ignore next %d crossings of breakpoint %d.",
+ count, bptnum);
+ return;
+ }
+
+ error ("No breakpoint number %d.", bptnum);
+}
+
+/* Clear the ignore counts of all breakpoints. */
+void
+breakpoint_clear_ignore_counts ()
+{
+ struct breakpoint *b;
+
+ ALL_BREAKPOINTS (b)
+ b->ignore_count = 0;
+}
+
+/* Command to set ignore-count of breakpoint N to COUNT. */
+
+static void
+ignore_command (args, from_tty)
+ char *args;
+ int from_tty;
+{
+ register char *p = args;
+ register int num;
+
+ if (p == 0)
+ error_no_arg ("a breakpoint number");
+
+ while (*p >= '0' && *p <= '9') p++;
+ if (*p && *p != ' ' && *p != '\t')
+ error ("First argument must be a breakpoint number.");
+
+ num = atoi (args);
+
+ if (*p == 0)
+ error ("Second argument (specified ignore-count) is missing.");
+
+ set_ignore_count (num, parse_and_eval_address (p), from_tty);
+ printf ("\n");
+}
+
+/* Call FUNCTION on each of the breakpoints
+ whose numbers are given in ARGS. */
+
+static void
+map_breakpoint_numbers (args, function)
+ char *args;
+ void (*function) ();
+{
+ register char *p = args;
+ register char *p1;
+ register int num;
+ register struct breakpoint *b;
+
+ if (p == 0)
+ error_no_arg ("one or more breakpoint numbers");
+
+ while (*p)
+ {
+ p1 = p;
+ while (*p1 >= '0' && *p1 <= '9') p1++;
+ if (*p1 && *p1 != ' ' && *p1 != '\t')
+ error ("Arguments must be breakpoint numbers.");
+
+ num = atoi (p);
+
+ ALL_BREAKPOINTS (b)
+ if (b->number == num)
+ {
+ function (b);
+ goto win;
+ }
+ printf ("No breakpoint number %d.\n", num);
+ win:
+ p = p1;
+ while (*p == ' ' || *p == '\t') p++;
+ }
+}
+
+static void
+enable_breakpoint (bpt)
+ struct breakpoint *bpt;
+{
+ bpt->enable = enabled;
+
+ if (xgdb_verbose && bpt->number >= 0)
+ printf ("breakpoint #%d enabled\n", bpt->number);
+
+ check_duplicates (bpt->address);
+}
+
+static void
+enable_command (args)
+ char *args;
+{
+ struct breakpoint *bpt;
+ if (args == 0)
+ ALL_BREAKPOINTS (bpt)
+ enable_breakpoint (bpt);
+ else
+ map_breakpoint_numbers (args, enable_breakpoint);
+}
+
+static void
+disable_breakpoint (bpt)
+ struct breakpoint *bpt;
+{
+ bpt->enable = disabled;
+
+ if (xgdb_verbose && bpt->number >= 0)
+ printf ("breakpoint #%d disabled\n", bpt->number);
+
+ check_duplicates (bpt->address);
+}
+
+static void
+disable_command (args)
+ char *args;
+{
+ register struct breakpoint *bpt;
+ if (args == 0)
+ ALL_BREAKPOINTS (bpt)
+ disable_breakpoint (bpt);
+ else
+ map_breakpoint_numbers (args, disable_breakpoint);
+}
+
+static void
+enable_once_breakpoint (bpt)
+ struct breakpoint *bpt;
+{
+ bpt->enable = temporary;
+
+ check_duplicates (bpt->address);
+}
+
+static void
+enable_once_command (args)
+ char *args;
+{
+ map_breakpoint_numbers (args, enable_once_breakpoint);
+}
+
+static void
+enable_delete_breakpoint (bpt)
+ struct breakpoint *bpt;
+{
+ bpt->enable = delete;
+
+ check_duplicates (bpt->address);
+}
+
+static void
+enable_delete_command (args)
+ char *args;
+{
+ map_breakpoint_numbers (args, enable_delete_breakpoint);
+}
+
+/*
+ * Use default_breakpoint_'s, or nothing if they aren't valid.
+ */
+struct symtabs_and_lines
+decode_line_spec_1 (string, funfirstline)
+ char *string;
+ int funfirstline;
+{
+ struct symtabs_and_lines sals;
+ if (string == 0)
+ error ("Empty line specification.");
+ if (default_breakpoint_valid)
+ sals = decode_line_1 (&string, funfirstline,
+ default_breakpoint_symtab, default_breakpoint_line);
+ else
+ sals = decode_line_1 (&string, funfirstline, 0, 0);
+ if (*string)
+ error ("Junk at end of line specification: %s", string);
+ return sals;
+}
+
+
+/* Chain containing all defined enable commands. */
+
+extern struct cmd_list_element
+ *enablelist, *disablelist,
+ *deletelist, *enablebreaklist;
+
+extern struct cmd_list_element *cmdlist;
+
+void
+_initialize_breakpoint ()
+{
+ breakpoint_chain = 0;
+ breakpoint_count = 0;
+
+ add_com ("ignore", class_breakpoint, ignore_command,
+ "Set ignore-count of breakpoint number N to COUNT.");
+
+ add_com ("commands", class_breakpoint, commands_command,
+ "Set commands to be executed when a breakpoint is hit.\n\
+Give breakpoint number as argument after \"commands\".\n\
+With no argument, the targeted breakpoint is the last one set.\n\
+The commands themselves follow starting on the next line.\n\
+Type a line containing \"end\" to indicate the end of them.\n\
+Give \"silent\" as the first line to make the breakpoint silent;\n\
+then no output is printed when it is hit, except what the commands print.");
+
+ add_com ("condition", class_breakpoint, condition_command,
+ "Specify breakpoint number N to break only if COND is true.\n\
+N is an integer; COND is a C expression to be evaluated whenever\n\
+breakpoint N is reached. Actually break only when COND is nonzero.");
+
+ add_com ("tbreak", class_breakpoint, tbreak_command,
+ "Set a temporary breakpoint. Args like \"break\" command.\n\
+Like \"break\" except the breakpoint is only enabled temporarily,\n\
+so it will be disabled when hit. Equivalent to \"break\" followed\n\
+by using \"enable once\" on the breakpoint number.");
+
+ add_prefix_cmd ("enable", class_breakpoint, enable_command,
+ "Enable some breakpoints or auto-display expressions.\n\
+Give breakpoint numbers (separated by spaces) as arguments.\n\
+With no subcommand, breakpoints are enabled until you command otherwise.\n\
+This is used to cancel the effect of the \"disable\" command.\n\
+With a subcommand you can enable temporarily.\n\
+\n\
+The \"display\" subcommand applies to auto-displays instead of breakpoints.",
+ &enablelist, "enable ", 1, &cmdlist);
+
+ add_abbrev_prefix_cmd ("breakpoints", class_breakpoint, enable_command,
+ "Enable some breakpoints or auto-display expressions.\n\
+Give breakpoint numbers (separated by spaces) as arguments.\n\
+With no subcommand, breakpoints are enabled until you command otherwise.\n\
+This is used to cancel the effect of the \"disable\" command.\n\
+May be abbreviates to simply \"enable\".\n\
+With a subcommand you can enable temporarily.",
+ &enablebreaklist, "enable breakpoints ", 1, &enablelist);
+
+ add_cmd ("once", no_class, enable_once_command,
+ "Enable breakpoints for one hit. Give breakpoint numbers.\n\
+If a breakpoint is hit while enabled in this fashion, it becomes disabled.\n\
+See the \"tbreak\" command which sets a breakpoint and enables it once.",
+ &enablebreaklist);
+
+ add_cmd ("delete", no_class, enable_delete_command,
+ "Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
+If a breakpoint is hit while enabled in this fashion, it is deleted.",
+ &enablebreaklist);
+
+ add_cmd ("delete", no_class, enable_delete_command,
+ "Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
+If a breakpoint is hit while enabled in this fashion, it is deleted.",
+ &enablelist);
+
+ add_cmd ("once", no_class, enable_once_command,
+ "Enable breakpoints for one hit. Give breakpoint numbers.\n\
+If a breakpoint is hit while enabled in this fashion, it becomes disabled.\n\
+See the \"tbreak\" command which sets a breakpoint and enables it once.",
+ &enablelist);
+
+ add_prefix_cmd ("disable", class_breakpoint, disable_command,
+ "Disable some breakpoints or auto-display expressions.\n\
+Arguments are breakpoint numbers with spaces in between.\n\
+To disable all breakpoints, give no argument.\n\
+A disabled breakpoint is not forgotten, but has no effect until reenabled.\n\
+\n\
+The \"display\" subcommand applies to auto-displays instead of breakpoints.",
+ &disablelist, "disable ", 1, &cmdlist);
+ add_com_alias ("dis", "disable", class_breakpoint, 1);
+ add_com_alias ("disa", "disable", class_breakpoint, 1);
+
+ add_abbrev_cmd ("breakpoints", class_breakpoint, disable_command,
+ "Disable some breakpoints or auto-display expressions.\n\
+Arguments are breakpoint numbers with spaces in between.\n\
+To disable all breakpoints, give no argument.\n\
+A disabled breakpoint is not forgotten, but has no effect until reenabled.\n\
+This command may be abbreviated \"disable\".",
+ &disablelist);
+
+ add_prefix_cmd ("delete", class_breakpoint, delete_command,
+ "Delete some breakpoints or auto-display expressions.\n\
+Arguments are breakpoint numbers with spaces in between.\n\
+To delete all breakpoints, give no argument.\n\
+\n\
+Also a prefix command for deletion of other GDB objects.\n\
+The \"unset\" command is also an alias for \"delete\".",
+ &deletelist, "delete ", 1, &cmdlist);
+ add_com_alias ("d", "delete", class_breakpoint, 1);
+ add_com_alias ("unset", "delete", class_alias, 1);
+
+ add_cmd ("breakpoints", class_alias, delete_command,
+ "Delete some breakpoints or auto-display expressions.\n\
+Arguments are breakpoint numbers with spaces in between.\n\
+To delete all breakpoints, give no argument.\n\
+This command may be abbreviated \"delete\".",
+ &deletelist);
+
+ add_com ("clear", class_breakpoint, clear_command,
+ "Clear breakpoint at specified line or function.\n\
+Argument may be line number, function name, or \"*\" and an address.\n\
+If line number is specified, all breakpoints in that line are cleared.\n\
+If function is specified, breakpoints at beginning of function are cleared.\n\
+If an address is specified, breakpoints at that address are cleared.\n\n\
+With no argument, clears all breakpoints in the line that the selected frame\n\
+is executing in.\n\
+\n\
+See also the \"delete\" command which clears breakpoints by number.");
+
+ add_com ("break", class_breakpoint, break_command,
+ "Set breakpoint at specified line or function.\n\
+Argument may be line number, function name, or \"*\" and an address.\n\
+If line number is specified, break at start of code for that line.\n\
+If function is specified, break at start of code for that function.\n\
+If an address is specified, break at that exact address.\n\
+With no arg, uses current execution address of selected stack frame.\n\
+This is useful for breaking on return to a stack frame.\n\
+\n\
+Multiple breakpoints at one place are permitted, and useful if conditional.\n\
+\n\
+Do \"help breakpoints\" for info on other commands dealing with breakpoints.");
+ add_com_alias ("b", "break", class_run, 1);
+ add_com_alias ("br", "break", class_run, 1);
+ add_com_alias ("bre", "break", class_run, 1);
+ add_com_alias ("brea", "break", class_run, 1);
+
+ add_info ("breakpoints", breakpoints_info,
+ "Status of all breakpoints, or breakpoint number NUMBER.\n\
+Second column is \"y\" for enabled breakpoint, \"n\" for disabled,\n\
+\"o\" for enabled once (disable when hit), \"d\" for enable but delete when hit.\n\
+Then come the address and the file/line number.\n\n\
+Convenience variable \"$_\" and default examine address for \"x\"\n\
+are set to the address of the last breakpoint listed.");
+}
+
diff --git a/gnu/usr.bin/kgdb/command.c b/gnu/usr.bin/kgdb/command.c
new file mode 100644
index 000000000000..ed63f72bceb0
--- /dev/null
+++ b/gnu/usr.bin/kgdb/command.c
@@ -0,0 +1,856 @@
+/* Library for reading command lines and decoding commands.
+ Copyright (C) 1986, 1989 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 1, or (at your option)
+ any later version.
+
+ 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. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include "command.h"
+#include "defs.h"
+#include <stdio.h>
+#include <ctype.h>
+
+extern char *xmalloc ();
+
+/* Add element named NAME to command list *LIST.
+ FUN should be the function to execute the command;
+ it will get a character string as argument, with leading
+ and trailing blanks already eliminated.
+
+ DOC is a documentation string for the command.
+ Its first line should be a complete sentence.
+ It should start with ? for a command that is an abbreviation
+ or with * for a command that most users don't need to know about. */
+
+struct cmd_list_element *
+add_cmd (name, class, fun, doc, list)
+ char *name;
+ int class;
+ void (*fun) ();
+ char *doc;
+ struct cmd_list_element **list;
+{
+ register struct cmd_list_element *c
+ = (struct cmd_list_element *) xmalloc (sizeof (struct cmd_list_element));
+
+ delete_cmd (name, list);
+ c->next = *list;
+ c->name = savestring (name, strlen (name));
+ c->class = class;
+ c->function = fun;
+ c->doc = doc;
+ c->prefixlist = 0;
+ c->allow_unknown = 0;
+ c->abbrev_flag = 0;
+ c->aux = 0;
+ *list = c;
+ return c;
+}
+
+/* Same as above, except that the abbrev_flag is set. */
+
+struct cmd_list_element *
+add_abbrev_cmd (name, class, fun, doc, list)
+ char *name;
+ int class;
+ void (*fun) ();
+ char *doc;
+ struct cmd_list_element **list;
+{
+ register struct cmd_list_element *c
+ = (struct cmd_list_element *) xmalloc (sizeof (struct cmd_list_element));
+
+ delete_cmd (name, list);
+ c->next = *list;
+ c->name = savestring (name, strlen (name));
+ c->class = class;
+ c->function = fun;
+ c->doc = doc;
+ c->prefixlist = 0;
+ c->allow_unknown = 0;
+ c->abbrev_flag = 1;
+ c->aux = 0;
+ *list = c;
+ return c;
+}
+
+struct cmd_list_element *
+add_alias_cmd (name, oldname, class, abbrev_flag, list)
+ char *name;
+ char *oldname;
+ int class;
+ int abbrev_flag;
+ struct cmd_list_element **list;
+{
+ /* Must do this since lookup_cmd tries to side-effect its first arg */
+ char *copied_name;
+ register struct cmd_list_element *old;
+ register struct cmd_list_element *c;
+ copied_name = (char *) alloca (strlen (oldname) + 1);
+ strcpy (copied_name, oldname);
+ old = lookup_cmd (&copied_name, *list, 0, 1, 1);
+
+ if (old == 0)
+ {
+ delete_cmd (name, list);
+ return 0;
+ }
+
+ c = add_cmd (name, class, old->function, old->doc, list);
+ c->prefixlist = old->prefixlist;
+ c->prefixname = old->prefixname;
+ c->allow_unknown = old->allow_unknown;
+ c->abbrev_flag = abbrev_flag;
+ c->aux = old->aux;
+ return c;
+}
+
+/* Like add_cmd but adds an element for a command prefix:
+ a name that should be followed by a subcommand to be looked up
+ in another command list. PREFIXLIST should be the address
+ of the variable containing that list. */
+
+struct cmd_list_element *
+add_prefix_cmd (name, class, fun, doc, prefixlist, prefixname,
+ allow_unknown, list)
+ char *name;
+ int class;
+ void (*fun) ();
+ char *doc;
+ struct cmd_list_element **prefixlist;
+ char *prefixname;
+ int allow_unknown;
+ struct cmd_list_element **list;
+{
+ register struct cmd_list_element *c = add_cmd (name, class, fun, doc, list);
+ c->prefixlist = prefixlist;
+ c->prefixname = prefixname;
+ c->allow_unknown = allow_unknown;
+ return c;
+}
+
+/* Like add_prefix_cmd butsets the abbrev_flag on the new command. */
+
+struct cmd_list_element *
+add_abbrev_prefix_cmd (name, class, fun, doc, prefixlist, prefixname,
+ allow_unknown, list)
+ char *name;
+ int class;
+ void (*fun) ();
+ char *doc;
+ struct cmd_list_element **prefixlist;
+ char *prefixname;
+ int allow_unknown;
+ struct cmd_list_element **list;
+{
+ register struct cmd_list_element *c = add_cmd (name, class, fun, doc, list);
+ c->prefixlist = prefixlist;
+ c->prefixname = prefixname;
+ c->allow_unknown = allow_unknown;
+ c->abbrev_flag = 1;
+ return c;
+}
+
+/* Remove the command named NAME from the command list. */
+
+void
+delete_cmd (name, list)
+ char *name;
+ struct cmd_list_element **list;
+{
+ register struct cmd_list_element *c;
+
+ while (*list && !strcmp ((*list)->name, name))
+ {
+ *list = (*list)->next;
+ }
+
+ if (*list)
+ for (c = *list; c->next;)
+ {
+ if (!strcmp (c->next->name, name))
+ c->next = c->next->next;
+ else
+ c = c->next;
+ }
+}
+
+void help_cmd (), help_list (), help_cmd_list ();
+
+/* This command really has to deal with two things:
+ * 1) I want documentation on *this string* (usually called by
+ * "help commandname").
+ * 2) I want documentation on *this list* (usually called by
+ * giving a command that requires subcommands. Also called by saying
+ * just "help".)
+ *
+ * I am going to split this into two seperate comamnds, help_cmd and
+ * help_list.
+ */
+
+void
+help_cmd (command, stream)
+ char *command;
+ FILE *stream;
+{
+ struct cmd_list_element *c;
+ extern struct cmd_list_element *cmdlist;
+
+ if (!command)
+ {
+ help_list (cmdlist, "", -2, stream);
+ return;
+ }
+
+ c = lookup_cmd (&command, cmdlist, "", 0, 0);
+
+ if (c == 0)
+ return;
+
+ /* There are three cases here.
+ If c->prefixlist is nonzer, we have a prefix command.
+ Print its documentation, then list its subcommands.
+
+ If c->function is nonzero, we really have a command.
+ Print its documentation and return.
+
+ If c->function is zero, we have a class name.
+ Print its documentation (as if it were a command)
+ and then set class to he number of this class
+ so that the commands in the class will be listed. */
+
+ fputs_filtered (c->doc, stream);
+ fputs_filtered ("\n", stream);
+
+ if (c->prefixlist == 0 && c->function != 0)
+ return;
+ fprintf_filtered (stream, "\n");
+
+ /* If this is a prefix command, print it's subcommands */
+ if (c->prefixlist)
+ help_list (*c->prefixlist, c->prefixname, -1, stream);
+
+ /* If this is a class name, print all of the commands in the class */
+ if (c->function == 0)
+ help_list (cmdlist, "", c->class, stream);
+}
+
+/*
+ * Get a specific kind of help on a command list.
+ *
+ * LIST is the list.
+ * CMDTYPE is the prefix to use in the title string.
+ * CLASS is the class with which to list the nodes of this list (see
+ * documentation for help_cmd_list below), As usual, -1 for
+ * everything, -2 for just classes, and non-negative for only things
+ * in a specific class.
+ * and STREAM is the output stream on which to print things.
+ * If you call this routine with a class >= 0, it recurses.
+ */
+void
+help_list (list, cmdtype, class, stream)
+ struct cmd_list_element *list;
+ char *cmdtype;
+ int class;
+ FILE *stream;
+{
+ int len;
+ char *cmdtype1, *cmdtype2;
+
+ /* If CMDTYPE is "foo ", CMDTYPE1 gets " foo" and CMDTYPE2 gets "foo sub" */
+ len = strlen (cmdtype);
+ cmdtype1 = (char *) alloca (len + 1);
+ cmdtype1[0] = 0;
+ cmdtype2 = (char *) alloca (len + 4);
+ cmdtype2[0] = 0;
+ if (len)
+ {
+ cmdtype1[0] = ' ';
+ strncpy (cmdtype1 + 1, cmdtype, len - 1);
+ cmdtype1[len] = 0;
+ strncpy (cmdtype2, cmdtype, len - 1);
+ strcpy (cmdtype2 + len - 1, " sub");
+ }
+
+ if (class == -2)
+ fprintf_filtered (stream, "List of classes of %scommands:\n\n", cmdtype2);
+ else
+ fprintf_filtered (stream, "List of %scommands:\n\n", cmdtype2);
+
+ help_cmd_list (list, class, cmdtype, (class >= 0), stream);
+
+ if (class == -2)
+ fprintf_filtered (stream, "\n\
+Type \"help%s\" followed by a class name for a list of commands in that class.",
+ cmdtype1);
+
+ fprintf_filtered (stream, "\n\
+Type \"help%s\" followed by %scommand name for full documentation.\n\
+Command name abbreviations are allowed if unambiguous.\n",
+ cmdtype1, cmdtype2);
+}
+
+
+/*
+ * Implement a help command on command list LIST.
+ * RECURSE should be non-zero if this should be done recursively on
+ * all sublists of LIST.
+ * PREFIX is the prefix to print before each command name.
+ * STREAM is the stream upon which the output should be written.
+ * CLASS should be:
+ * A non-negative class number to list only commands in that
+ * class.
+ * -1 to list all commands in list.
+ * -2 to list all classes in list.
+ *
+ * Note that RECURSE will be active on *all* sublists, not just the
+ * ones seclected by the criteria above (ie. the selection mechanism
+ * is at the low level, not the high-level).
+ */
+void
+help_cmd_list (list, class, prefix, recurse, stream)
+ struct cmd_list_element *list;
+ int class;
+ char *prefix;
+ int recurse;
+ FILE *stream;
+{
+ register struct cmd_list_element *c;
+ register char *p;
+ static char *line_buffer = 0;
+ static int line_size;
+
+ if (!line_buffer)
+ {
+ line_size = 80;
+ line_buffer = (char *) xmalloc (line_size);
+ }
+
+ for (c = list; c; c = c->next)
+ {
+ if (c->abbrev_flag == 0 &&
+ (class == -1
+ || (class == -2 && c->function == 0)
+ || (class == c->class && c->function != 0)))
+ {
+ fprintf_filtered (stream, "%s%s -- ", prefix, c->name);
+ /* Print just the first line */
+ p = c->doc;
+ while (*p && *p != '\n') p++;
+ if (p - c->doc > line_size - 1)
+ {
+ line_size = p - c->doc + 1;
+ free (line_buffer);
+ line_buffer = (char *) xmalloc (line_size);
+ }
+ strncpy (line_buffer, c->doc, p - c->doc);
+ line_buffer[p - c->doc] = '\0';
+ fputs_filtered (line_buffer, stream);
+ fputs_filtered ("\n", stream);
+ }
+ if (recurse
+ && c->prefixlist != 0
+ && c->abbrev_flag == 0)
+ help_cmd_list (*c->prefixlist, class, c->prefixname, 1, stream);
+ }
+}
+
+/* This routine takes a line of TEXT and a CLIST in which to
+ start the lookup. When it returns it will have incremented the text
+ pointer past the section of text it matched, set *RESULT_LIST to
+ the list in which the last word was matched, and will return the
+ cmd list element which the text matches. It will return 0 if no
+ match at all was possible. It will return -1 if ambigous matches are
+ possible; in this case *RESULT_LIST will be set to the list in which
+ there are ambiguous choices (and text will be set to the ambiguous
+ text string).
+
+ It does no error reporting whatsoever; control will always return
+ to the superior routine.
+
+ In the case of an ambiguous return (-1), *RESULT_LIST will be set to
+ point at the prefix_command (ie. the best match) *or* (special
+ case) will be 0 if no prefix command was ever found. For example,
+ in the case of "info a", "info" matches without ambiguity, but "a"
+ could be "args" or "address", so *RESULT_LIST is set to
+ the cmd_list_element for "info". So in this case
+ result list should not be interpeted as a pointer to the beginning
+ of a list; it simply points to a specific command.
+
+ This routine does *not* modify the text pointed to by TEXT.
+
+ If INGNORE_HELP_CLASSES is nonzero, ignore any command list
+ elements which are actually help classes rather than commands (i.e.
+ the function field of the struct cmd_list_element is 0). */
+
+struct cmd_list_element *
+lookup_cmd_1 (text, clist, result_list, ignore_help_classes)
+ char **text;
+ struct cmd_list_element *clist, **result_list;
+ int ignore_help_classes;
+{
+ char *p, *command;
+ int len, tmp, nfound;
+ struct cmd_list_element *found, *c;
+
+ while (**text == ' ' || **text == '\t')
+ (*text)++;
+
+ /* Treating underscores as part of command words is important
+ so that "set args_foo()" doesn't get interpreted as
+ "set args _foo()". */
+ for (p = *text;
+ *p && (isalnum(*p) || *p == '-' || *p == '_');
+ p++)
+ ;
+
+ /* If nothing but whitespace, return 0. */
+ if (p == *text)
+ return 0;
+
+ len = p - *text;
+
+ /* *text and p now bracket the first command word to lookup (and
+ it's length is len). We copy this into a local temporary,
+ converting to lower case as we go. */
+
+ command = (char *) alloca (len + 1);
+ for (tmp = 0; tmp < len; tmp++)
+ {
+ char x = (*text)[tmp];
+ command[tmp] = (x >= 'A' && x <= 'Z') ? x - 'A' + 'a' : x;
+ }
+ command[len] = '\0';
+
+ /* Look it up. */
+ found = 0;
+ nfound = 0;
+ for (c = clist; c; c = c->next)
+ if (!strncmp (command, c->name, len)
+ && (!ignore_help_classes || c->function))
+ {
+ found = c;
+ nfound++;
+ if (c->name[len] == '\0')
+ {
+ nfound = 1;
+ break;
+ }
+ }
+
+ /* If nothing matches, we have a simple failure. */
+ if (nfound == 0)
+ return 0;
+
+ if (nfound > 1)
+ {
+ *result_list = 0; /* Will be modified in calling routine
+ if we know what the prefix command is.
+ */
+ return (struct cmd_list_element *) -1; /* Ambiguous. */
+ }
+
+ /* We've matched something on this list. Move text pointer forward. */
+
+ *text = p;
+ if (found->prefixlist)
+ {
+ c = lookup_cmd_1 (text, *found->prefixlist, result_list,
+ ignore_help_classes);
+ if (!c)
+ {
+ /* Didn't find anything; this is as far as we got. */
+ *result_list = clist;
+ return found;
+ }
+ else if (c == (struct cmd_list_element *) -1)
+ {
+ /* We've gotten this far properley, but the next step
+ is ambiguous. We need to set the result list to the best
+ we've found (if an inferior hasn't already set it). */
+ if (!*result_list)
+ /* This used to say *result_list = *found->prefixlist
+ If that was correct, need to modify the documentation
+ at the top of this function to clarify what is supposed
+ to be going on. */
+ *result_list = found;
+ return c;
+ }
+ else
+ {
+ /* We matched! */
+ return c;
+ }
+ }
+ else
+ {
+ *result_list = clist;
+ return found;
+ }
+}
+
+/* Look up the contents of *LINE as a command in the command list LIST.
+ LIST is a chain of struct cmd_list_element's.
+ If it is found, return the struct cmd_list_element for that command
+ and update *LINE to point after the command name, at the first argument.
+ If not found, call error if ALLOW_UNKNOWN is zero
+ otherwise (or if error returns) return zero.
+ Call error if specified command is ambiguous,
+ unless ALLOW_UNKNOWN is negative.
+ CMDTYPE precedes the word "command" in the error message.
+
+ If INGNORE_HELP_CLASSES is nonzero, ignore any command list
+ elements which are actually help classes rather than commands (i.e.
+ the function field of the struct cmd_list_element is 0). */
+
+struct cmd_list_element *
+lookup_cmd (line, list, cmdtype, allow_unknown, ignore_help_classes)
+ char **line;
+ struct cmd_list_element *list;
+ char *cmdtype;
+ int allow_unknown;
+ int ignore_help_classes;
+{
+ struct cmd_list_element *last_list = 0;
+ struct cmd_list_element *c =
+ lookup_cmd_1 (line, list, &last_list, ignore_help_classes);
+ char *ptr = (*line) + strlen (*line) - 1;
+
+ /* Clear off trailing whitespace. */
+ while (ptr >= *line && (*ptr == ' ' || *ptr == '\t'))
+ ptr--;
+ *(ptr + 1) = '\0';
+
+ if (!c)
+ {
+ if (!allow_unknown)
+ {
+ if (!*line)
+ error ("Lack of needed %scommand", cmdtype);
+ else
+ {
+ char *p = *line, *q;
+
+ while (isalnum(*p) || *p == '-')
+ p++;
+
+ q = (char *) alloca (p - *line + 1);
+ strncpy (q, *line, p - *line);
+ q[p-*line] = '\0';
+
+ error ("Undefined %scommand: \"%s\".", cmdtype, q);
+ }
+ }
+ else
+ return 0;
+ }
+ else if (c == (struct cmd_list_element *) -1)
+ {
+ /* Ambigous. Local values should be off prefixlist or called
+ values. */
+ int local_allow_unknown = (last_list ? last_list->allow_unknown :
+ allow_unknown);
+ char *local_cmdtype = last_list ? last_list->prefixname : cmdtype;
+ struct cmd_list_element *local_list =
+ (last_list ? *(last_list->prefixlist) : list);
+
+ if (local_allow_unknown < 0)
+ {
+ if (last_list)
+ return last_list; /* Found something. */
+ else
+ return 0; /* Found nothing. */
+ }
+ else
+ {
+ /* Report as error. */
+ int amb_len;
+ char ambbuf[100];
+
+ for (amb_len = 0;
+ ((*line)[amb_len] && (*line)[amb_len] != ' '
+ && (*line)[amb_len] != '\t');
+ amb_len++)
+ ;
+
+ ambbuf[0] = 0;
+ for (c = local_list; c; c = c->next)
+ if (!strncmp (*line, c->name, amb_len))
+ {
+ if (strlen (ambbuf) + strlen (c->name) + 6 < sizeof ambbuf)
+ {
+ if (strlen (ambbuf))
+ strcat (ambbuf, ", ");
+ strcat (ambbuf, c->name);
+ }
+ else
+ {
+ strcat (ambbuf, "..");
+ break;
+ }
+ }
+ error ("Ambiguous %scommand \"%s\": %s.", local_cmdtype,
+ *line, ambbuf);
+ }
+ }
+ else
+ {
+ /* We've got something. It may still not be what the caller
+ wants (if this command *needs* a subcommand). */
+ while (**line == ' ' || **line == '\t')
+ (*line)++;
+
+ if (c->prefixlist && **line && !c->allow_unknown)
+ error ("Undefined %scommand: \"%s\".", c->prefixname, *line);
+
+ /* Seems to be what he wants. Return it. */
+ return c;
+ }
+}
+
+#if 0
+/* Look up the contents of *LINE as a command in the command list LIST.
+ LIST is a chain of struct cmd_list_element's.
+ If it is found, return the struct cmd_list_element for that command
+ and update *LINE to point after the command name, at the first argument.
+ If not found, call error if ALLOW_UNKNOWN is zero
+ otherwise (or if error returns) return zero.
+ Call error if specified command is ambiguous,
+ unless ALLOW_UNKNOWN is negative.
+ CMDTYPE precedes the word "command" in the error message. */
+
+struct cmd_list_element *
+lookup_cmd (line, list, cmdtype, allow_unknown)
+ char **line;
+ struct cmd_list_element *list;
+ char *cmdtype;
+ int allow_unknown;
+{
+ register char *p;
+ register struct cmd_list_element *c, *found;
+ int nfound;
+ char ambbuf[100];
+ char *processed_cmd;
+ int i, cmd_len;
+
+ /* Skip leading whitespace. */
+
+ while (**line == ' ' || **line == '\t')
+ (*line)++;
+
+ /* Clear out trailing whitespace. */
+
+ p = *line + strlen (*line);
+ while (p != *line && (p[-1] == ' ' || p[-1] == '\t'))
+ p--;
+ *p = 0;
+
+ /* Find end of command name. */
+
+ p = *line;
+ while (*p == '-'
+ || (*p >= 'a' && *p <= 'z')
+ || (*p >= 'A' && *p <= 'Z')
+ || (*p >= '0' && *p <= '9'))
+ p++;
+
+ /* Look up the command name.
+ If exact match, keep that.
+ Otherwise, take command abbreviated, if unique. Note that (in my
+ opinion) a null string does *not* indicate ambiguity; simply the
+ end of the argument. */
+
+ if (p == *line)
+ {
+ if (!allow_unknown)
+ error ("Lack of needed %scommand", cmdtype);
+ return 0;
+ }
+
+ /* Copy over to a local buffer, converting to lowercase on the way.
+ This is in case the command being parsed is a subcommand which
+ doesn't match anything, and that's ok. We want the original
+ untouched for the routine of the original command. */
+
+ processed_cmd = (char *) alloca (p - *line + 1);
+ for (cmd_len = 0; cmd_len < p - *line; cmd_len++)
+ {
+ char x = (*line)[cmd_len];
+ if (x >= 'A' && x <= 'Z')
+ processed_cmd[cmd_len] = x - 'A' + 'a';
+ else
+ processed_cmd[cmd_len] = x;
+ }
+ processed_cmd[cmd_len] = '\0';
+
+ /* Check all possibilities in the current command list. */
+ found = 0;
+ nfound = 0;
+ for (c = list; c; c = c->next)
+ {
+ if (!strncmp (processed_cmd, c->name, cmd_len))
+ {
+ found = c;
+ nfound++;
+ if (c->name[cmd_len] == 0)
+ {
+ nfound = 1;
+ break;
+ }
+ }
+ }
+
+ /* Report error for undefined command name. */
+
+ if (nfound != 1)
+ {
+ if (nfound > 1 && allow_unknown >= 0)
+ {
+ ambbuf[0] = 0;
+ for (c = list; c; c = c->next)
+ if (!strncmp (processed_cmd, c->name, cmd_len))
+ {
+ if (strlen (ambbuf) + strlen (c->name) + 6 < sizeof ambbuf)
+ {
+ if (strlen (ambbuf))
+ strcat (ambbuf, ", ");
+ strcat (ambbuf, c->name);
+ }
+ else
+ {
+ strcat (ambbuf, "..");
+ break;
+ }
+ }
+ error ("Ambiguous %scommand \"%s\": %s.", cmdtype,
+ processed_cmd, ambbuf);
+ }
+ else if (!allow_unknown)
+ error ("Undefined %scommand: \"%s\".", cmdtype, processed_cmd);
+ return 0;
+ }
+
+ /* Skip whitespace before the argument. */
+
+ while (*p == ' ' || *p == '\t') p++;
+ *line = p;
+
+ if (found->prefixlist && *p)
+ {
+ c = lookup_cmd (line, *found->prefixlist, found->prefixname,
+ found->allow_unknown);
+ if (c)
+ return c;
+ }
+
+ return found;
+}
+#endif
+
+/* Helper function for SYMBOL_COMPLETION_FUNCTION. */
+
+/* Return a vector of char pointers which point to the different
+ possible completions in LIST of TEXT. */
+
+char **
+complete_on_cmdlist (list, text)
+ struct cmd_list_element *list;
+ char *text;
+{
+ struct cmd_list_element *ptr;
+ char **matchlist;
+ int sizeof_matchlist;
+ int matches;
+ int textlen = strlen (text);
+
+ sizeof_matchlist = 10;
+ matchlist = (char **) xmalloc (sizeof_matchlist * sizeof (char *));
+ matches = 0;
+
+ for (ptr = list; ptr; ptr = ptr->next)
+ if (!strncmp (ptr->name, text, textlen)
+ && !ptr->abbrev_flag
+ && (ptr->function
+ || ptr->prefixlist))
+ {
+ if (matches == sizeof_matchlist)
+ {
+ sizeof_matchlist *= 2;
+ matchlist = (char **) xrealloc (matchlist,
+ (sizeof_matchlist
+ * sizeof (char *)));
+ }
+
+ matchlist[matches] = (char *)
+ xmalloc (strlen (ptr->name) + 1);
+ strcpy (matchlist[matches++], ptr->name);
+ }
+
+ if (matches == 0)
+ {
+ free (matchlist);
+ matchlist = 0;
+ }
+ else
+ {
+ matchlist = (char **) xrealloc (matchlist, ((matches + 1)
+ * sizeof (char *)));
+ matchlist[matches] = (char *) 0;
+ }
+
+ return matchlist;
+}
+
+static void
+shell_escape (arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ int rc, status, pid;
+ char *p, *user_shell;
+ extern char *rindex ();
+
+ if ((user_shell = (char *) getenv ("SHELL")) == NULL)
+ user_shell = "/bin/sh";
+
+ /* Get the name of the shell for arg0 */
+ if ((p = rindex (user_shell, '/')) == NULL)
+ p = user_shell;
+ else
+ p++; /* Get past '/' */
+
+ if ((pid = fork()) == 0)
+ {
+ if (!arg)
+ execl (user_shell, p, 0);
+ else
+ execl (user_shell, p, "-c", arg, 0);
+
+ fprintf (stderr, "Exec of shell failed\n");
+ exit (0);
+ }
+
+ if (pid != -1)
+ while ((rc = wait (&status)) != pid && rc != -1)
+ ;
+ else
+ error ("Fork failed");
+}
+
+void
+_initialize_command ()
+{
+ add_com ("shell", class_support, shell_escape,
+ "Execute the rest of the line as a shell command. \n\
+With no arguments, run an inferior shell.");
+}
diff --git a/gnu/usr.bin/kgdb/command.h b/gnu/usr.bin/kgdb/command.h
new file mode 100644
index 000000000000..fe28aef817ae
--- /dev/null
+++ b/gnu/usr.bin/kgdb/command.h
@@ -0,0 +1,77 @@
+/* Header file for command-reading library command.c.
+ Copyright (C) 1986, 1989 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 1, or (at your option)
+ any later version.
+
+ 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. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+/* This structure records one command'd definition. */
+
+struct cmd_list_element
+ {
+ /* Points to next command in this list. */
+ struct cmd_list_element *next;
+
+ /* Name of this command. */
+ char *name;
+
+ /* Command class; class values are chosen by application program. */
+ int class;
+
+ /* Function definition of this command.
+ Zero for command class names and for help topics that
+ are not really commands. */
+ void (*function) ();
+
+ /* Documentation of this command (or help topic).
+ First line is brief documentation; remaining lines form, with it,
+ the full documentation. First line should end with a period.
+ Entire string should also end with a period, not a newline. */
+ char *doc;
+
+ /* Auxiliary information.
+ It is up to the calling program to decide what this means. */
+ char *aux;
+
+ /* Nonzero identifies a prefix command. For them, the address
+ of the variable containing the list of subcommands. */
+ struct cmd_list_element **prefixlist;
+
+ /* For prefix commands only:
+ String containing prefix commands to get here: this one
+ plus any others needed to get to it. Should end in a space.
+ It is used before the word "command" in describing the
+ commands reached through this prefix. */
+ char *prefixname;
+
+ /* For prefix commands only:
+ nonzero means do not get an error if subcommand is not
+ recognized; call the prefix's own function in that case. */
+ char allow_unknown;
+
+ /* Nonzero says this is an abbreviation, and should not
+ be mentioned in lists of commands.
+ This allows "br<tab>" to complete to "break", which it
+ otherwise wouldn't. */
+ char abbrev_flag;
+ };
+
+/* Forward-declarations of the entry-points of command.c. */
+
+extern struct cmd_list_element *add_cmd ();
+extern struct cmd_list_element *add_alias_cmd ();
+extern struct cmd_list_element *add_prefix_cmd ();
+extern struct cmd_list_element *lookup_cmd (), *lookup_cmd_1 ();
+extern char **complete_on_cmdlist ();
+extern void delete_cmd ();
+extern void help_cmd ();
diff --git a/gnu/usr.bin/kgdb/config/Makefile.i386 b/gnu/usr.bin/kgdb/config/Makefile.i386
new file mode 100644
index 000000000000..cc52aa3b13d4
--- /dev/null
+++ b/gnu/usr.bin/kgdb/config/Makefile.i386
@@ -0,0 +1,6 @@
+# @(#)Makefile.i386 6.2 (Berkeley) 3/21/91
+
+CONFIGSRCS= i386bsd-dep.c i386-pinsn.c
+
+param.h:
+ ln -s $(.CURDIR)/config/m-i386bsd.h param.h
diff --git a/gnu/usr.bin/kgdb/config/default-dep.c b/gnu/usr.bin/kgdb/config/default-dep.c
new file mode 100644
index 000000000000..411c1a6f4b10
--- /dev/null
+++ b/gnu/usr.bin/kgdb/config/default-dep.c
@@ -0,0 +1,585 @@
+/*-
+ * This code is derived from software copyrighted by the Free Software
+ * Foundation.
+ *
+ * Modified 1991 by Donn Seeley at UUNET Technologies, Inc.
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)default-dep.c 6.3 (Berkeley) 5/8/91";
+#endif /* not lint */
+
+/* Low level interface to ptrace, for GDB when running under Unix.
+ Copyright (C) 1988, 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include <stdio.h>
+#include "defs.h"
+#include "param.h"
+#include "frame.h"
+#include "inferior.h"
+
+#ifdef USG
+#include <sys/types.h>
+#endif
+
+#include <sys/param.h>
+#include <sys/dir.h>
+#include <signal.h>
+#include <sys/ioctl.h>
+/* #include <fcntl.h> Can we live without this? */
+
+#ifdef COFF_ENCAPSULATE
+#include "a.out.encap.h"
+#else
+#include <a.out.h>
+#endif
+#ifndef N_SET_MAGIC
+#define N_SET_MAGIC(exec, val) ((exec).a_magic = (val))
+#endif
+
+#include <sys/user.h> /* After a.out.h */
+#include <sys/file.h>
+#include <sys/stat.h>
+
+extern int errno;
+
+/* This function simply calls ptrace with the given arguments.
+ It exists so that all calls to ptrace are isolated in this
+ machine-dependent file. */
+int
+call_ptrace (request, pid, arg3, arg4)
+ int request, pid, arg3, arg4;
+{
+ return ptrace (request, pid, arg3, arg4);
+}
+
+kill_inferior ()
+{
+ if (remote_debugging)
+ return;
+ if (inferior_pid == 0)
+ return;
+ ptrace (8, inferior_pid, 0, 0);
+ wait (0);
+ inferior_died ();
+}
+
+/* This is used when GDB is exiting. It gives less chance of error.*/
+
+kill_inferior_fast ()
+{
+ if (remote_debugging)
+ return;
+ if (inferior_pid == 0)
+ return;
+ ptrace (8, inferior_pid, 0, 0);
+ wait (0);
+}
+
+/* Resume execution of the inferior process.
+ If STEP is nonzero, single-step it.
+ If SIGNAL is nonzero, give it that signal. */
+
+void
+resume (step, signal)
+ int step;
+ int signal;
+{
+ errno = 0;
+ if (remote_debugging)
+ remote_resume (step, signal);
+ else
+ {
+ ptrace (step ? 9 : 7, inferior_pid, 1, signal);
+ if (errno)
+ perror_with_name ("ptrace");
+ }
+}
+
+void
+fetch_inferior_registers ()
+{
+ register int regno;
+ register unsigned int regaddr;
+ char buf[MAX_REGISTER_RAW_SIZE];
+ register int i;
+
+ struct user u;
+ unsigned int offset = (char *) &u.u_ar0 - (char *) &u;
+ offset = ptrace (3, inferior_pid, offset, 0) - KERNEL_U_ADDR;
+
+ for (regno = 0; regno < NUM_REGS; regno++)
+ {
+ regaddr = register_addr (regno, offset);
+ for (i = 0; i < REGISTER_RAW_SIZE (regno); i += sizeof (int))
+ {
+ *(int *) &buf[i] = ptrace (3, inferior_pid, regaddr, 0);
+ regaddr += sizeof (int);
+ }
+ supply_register (regno, buf);
+ }
+}
+
+/* Store our register values back into the inferior.
+ If REGNO is -1, do this for all registers.
+ Otherwise, REGNO specifies which register (so we can save time). */
+
+store_inferior_registers (regno)
+ int regno;
+{
+ register unsigned int regaddr;
+ char buf[80];
+
+ struct user u;
+ unsigned int offset = (char *) &u.u_ar0 - (char *) &u;
+ offset = ptrace (3, inferior_pid, offset, 0) - KERNEL_U_ADDR;
+
+ if (regno >= 0)
+ {
+ regaddr = register_addr (regno, offset);
+ errno = 0;
+ ptrace (6, inferior_pid, regaddr, read_register (regno));
+ if (errno != 0)
+ {
+ sprintf (buf, "writing register number %d", regno);
+ perror_with_name (buf);
+ }
+ }
+ else for (regno = 0; regno < NUM_REGS; regno++)
+ {
+ regaddr = register_addr (regno, offset);
+ errno = 0;
+ ptrace (6, inferior_pid, regaddr, read_register (regno));
+ if (errno != 0)
+ {
+ sprintf (buf, "writing all regs, number %d", regno);
+ perror_with_name (buf);
+ }
+ }
+}
+
+/* Copy LEN bytes from inferior's memory starting at MEMADDR
+ to debugger memory starting at MYADDR.
+ On failure (cannot read from inferior, usually because address is out
+ of bounds) returns the value of errno. */
+
+int
+read_inferior_memory (memaddr, myaddr, len)
+ CORE_ADDR memaddr;
+ char *myaddr;
+ int len;
+{
+ register int i;
+ /* Round starting address down to longword boundary. */
+ register CORE_ADDR addr = memaddr & - sizeof (int);
+ /* Round ending address up; get number of longwords that makes. */
+ register int count
+ = (((memaddr + len) - addr) + sizeof (int) - 1) / sizeof (int);
+ /* Allocate buffer of that many longwords. */
+ register int *buffer = (int *) alloca (count * sizeof (int));
+ extern int errno;
+
+ /* Read all the longwords */
+ for (i = 0; i < count; i++, addr += sizeof (int))
+ {
+ errno = 0;
+#if 0
+ /* This is now done by read_memory, because when this function did it,
+ reading a byte or short int hardware port read whole longs, causing
+ serious side effects
+ such as bus errors and unexpected hardware operation. This would
+ also be a problem with ptrace if the inferior process could read
+ or write hardware registers, but that's not usually the case. */
+ if (remote_debugging)
+ buffer[i] = remote_fetch_word (addr);
+ else
+#endif
+ buffer[i] = ptrace (1, inferior_pid, addr, 0);
+ if (errno)
+ return errno;
+ }
+
+ /* Copy appropriate bytes out of the buffer. */
+ bcopy ((char *) buffer + (memaddr & (sizeof (int) - 1)), myaddr, len);
+ return 0;
+}
+
+/* Copy LEN bytes of data from debugger memory at MYADDR
+ to inferior's memory at MEMADDR.
+ On failure (cannot write the inferior)
+ returns the value of errno. */
+
+int
+write_inferior_memory (memaddr, myaddr, len)
+ CORE_ADDR memaddr;
+ char *myaddr;
+ int len;
+{
+ register int i;
+ /* Round starting address down to longword boundary. */
+ register CORE_ADDR addr = memaddr & - sizeof (int);
+ /* Round ending address up; get number of longwords that makes. */
+ register int count
+ = (((memaddr + len) - addr) + sizeof (int) - 1) / sizeof (int);
+ /* Allocate buffer of that many longwords. */
+ register int *buffer = (int *) alloca (count * sizeof (int));
+ extern int errno;
+
+ /* Fill start and end extra bytes of buffer with existing memory data. */
+
+ if (remote_debugging)
+ return (remote_write_inferior_memory(memaddr, myaddr, len));
+
+ buffer[0] = ptrace (1, inferior_pid, addr, 0);
+
+ if (count > 1)
+ buffer[count - 1] = ptrace (1, inferior_pid,
+ addr + (count - 1) * sizeof (int), 0);
+
+ /* Copy data to be written over corresponding part of buffer */
+
+ bcopy (myaddr, (char *) buffer + (memaddr & (sizeof (int) - 1)), len);
+
+ /* Write the entire buffer. */
+
+ for (i = 0; i < count; i++, addr += sizeof (int))
+ {
+ errno = 0;
+ ptrace (4, inferior_pid, addr, buffer[i]);
+ if (errno)
+ return errno;
+ }
+
+ return 0;
+}
+
+/* Work with core dump and executable files, for GDB.
+ This code would be in core.c if it weren't machine-dependent. */
+
+#ifndef N_TXTADDR
+#define N_TXTADDR(hdr) 0
+#endif /* no N_TXTADDR */
+
+#ifndef N_DATADDR
+#define N_DATADDR(hdr) hdr.a_text
+#endif /* no N_DATADDR */
+
+/* Make COFF and non-COFF names for things a little more compatible
+ to reduce conditionals later. */
+
+#ifdef COFF_FORMAT
+#define a_magic magic
+#endif
+
+#ifndef COFF_FORMAT
+#ifndef AOUTHDR
+#define AOUTHDR struct exec
+#endif
+#endif
+
+extern char *sys_siglist[];
+
+
+/* Hook for `exec_file_command' command to call. */
+
+extern void (*exec_file_display_hook) ();
+
+/* File names of core file and executable file. */
+
+extern char *corefile;
+extern char *execfile;
+
+/* Descriptors on which core file and executable file are open.
+ Note that the execchan is closed when an inferior is created
+ and reopened if the inferior dies or is killed. */
+
+extern int corechan;
+extern int execchan;
+
+/* Last modification time of executable file.
+ Also used in source.c to compare against mtime of a source file. */
+
+extern int exec_mtime;
+
+/* Virtual addresses of bounds of the two areas of memory in the core file. */
+
+extern CORE_ADDR data_start;
+extern CORE_ADDR data_end;
+extern CORE_ADDR stack_start;
+extern CORE_ADDR stack_end;
+
+/* Virtual addresses of bounds of two areas of memory in the exec file.
+ Note that the data area in the exec file is used only when there is no core file. */
+
+extern CORE_ADDR text_start;
+extern CORE_ADDR text_end;
+
+extern CORE_ADDR exec_data_start;
+extern CORE_ADDR exec_data_end;
+
+/* Address in executable file of start of text area data. */
+
+extern int text_offset;
+
+/* Address in executable file of start of data area data. */
+
+extern int exec_data_offset;
+
+/* Address in core file of start of data area data. */
+
+extern int data_offset;
+
+/* Address in core file of start of stack area data. */
+
+extern int stack_offset;
+
+#ifdef COFF_FORMAT
+/* various coff data structures */
+
+extern FILHDR file_hdr;
+extern SCNHDR text_hdr;
+extern SCNHDR data_hdr;
+
+#endif /* not COFF_FORMAT */
+
+/* a.out header saved in core file. */
+
+extern AOUTHDR core_aouthdr;
+
+/* a.out header of exec file. */
+
+extern AOUTHDR exec_aouthdr;
+
+extern void validate_files ();
+
+core_file_command (filename, from_tty)
+ char *filename;
+ int from_tty;
+{
+ int val;
+ extern char registers[];
+
+ /* Discard all vestiges of any previous core file
+ and mark data and stack spaces as empty. */
+
+ if (corefile)
+ free (corefile);
+ corefile = 0;
+
+ if (corechan >= 0)
+ close (corechan);
+ corechan = -1;
+
+ data_start = 0;
+ data_end = 0;
+ stack_start = STACK_END_ADDR;
+ stack_end = STACK_END_ADDR;
+
+ /* Now, if a new core file was specified, open it and digest it. */
+
+ if (filename)
+ {
+ filename = tilde_expand (filename);
+ make_cleanup (free, filename);
+
+ if (have_inferior_p ())
+ error ("To look at a core file, you must kill the inferior with \"kill\".");
+ corechan = open (filename, O_RDONLY, 0);
+ if (corechan < 0)
+ perror_with_name (filename);
+ /* 4.2-style (and perhaps also sysV-style) core dump file. */
+ {
+ struct user u;
+
+ unsigned int reg_offset;
+
+ val = myread (corechan, &u, sizeof u);
+ if (val < 0)
+ perror_with_name ("Not a core file: reading upage");
+ if (val != sizeof u)
+ error ("Not a core file: could only read %d bytes", val);
+
+ /* We are depending on exec_file_command having been called
+ previously to set exec_data_start. Since the executable
+ and the core file share the same text segment, the address
+ of the data segment will be the same in both. */
+ data_start = exec_data_start;
+
+ data_end = data_start + NBPG * u.u_dsize;
+ stack_start = stack_end - NBPG * u.u_ssize;
+ data_offset = NBPG * UPAGES;
+ stack_offset = NBPG * (UPAGES + u.u_dsize);
+
+ /* Some machines put an absolute address in here and some put
+ the offset in the upage of the regs. */
+ reg_offset = (int) u.u_ar0;
+ if (reg_offset > NBPG * UPAGES)
+ reg_offset -= KERNEL_U_ADDR;
+
+ /* I don't know where to find this info.
+ So, for now, mark it as not available. */
+ N_SET_MAGIC (core_aouthdr, 0);
+
+ /* Read the register values out of the core file and store
+ them where `read_register' will find them. */
+
+ {
+ register int regno;
+
+ for (regno = 0; regno < NUM_REGS; regno++)
+ {
+ char buf[MAX_REGISTER_RAW_SIZE];
+
+ val = lseek (corechan, register_addr (regno, reg_offset), 0);
+ if (val < 0
+ || (val = myread (corechan, buf, sizeof buf)) < 0)
+ {
+ char * buffer = (char *) alloca (strlen (reg_names[regno])
+ + 30);
+ strcpy (buffer, "Reading register ");
+ strcat (buffer, reg_names[regno]);
+
+ perror_with_name (buffer);
+ }
+
+ supply_register (regno, buf);
+ }
+ }
+ }
+ if (filename[0] == '/')
+ corefile = savestring (filename, strlen (filename));
+ else
+ {
+ corefile = concat (current_directory, "/", filename);
+ }
+
+ set_current_frame ( create_new_frame (read_register (FP_REGNUM),
+ read_pc ()));
+ select_frame (get_current_frame (), 0);
+ validate_files ();
+ }
+ else if (from_tty)
+ printf ("No core file now.\n");
+}
+
+exec_file_command (filename, from_tty)
+ char *filename;
+ int from_tty;
+{
+ int val;
+
+ /* Eliminate all traces of old exec file.
+ Mark text segment as empty. */
+
+ if (execfile)
+ free (execfile);
+ execfile = 0;
+ data_start = 0;
+ data_end -= exec_data_start;
+ text_start = 0;
+ text_end = 0;
+ exec_data_start = 0;
+ exec_data_end = 0;
+ if (execchan >= 0)
+ close (execchan);
+ execchan = -1;
+
+ /* Now open and digest the file the user requested, if any. */
+
+ if (filename)
+ {
+ filename = tilde_expand (filename);
+ make_cleanup (free, filename);
+
+ execchan = openp (getenv ("PATH"), 1, filename, O_RDONLY, 0,
+ &execfile);
+ if (execchan < 0)
+ perror_with_name (filename);
+
+#ifdef COFF_FORMAT
+ {
+ int aout_hdrsize;
+ int num_sections;
+
+ if (read_file_hdr (execchan, &file_hdr) < 0)
+ error ("\"%s\": not in executable format.", execfile);
+
+ aout_hdrsize = file_hdr.f_opthdr;
+ num_sections = file_hdr.f_nscns;
+
+ if (read_aout_hdr (execchan, &exec_aouthdr, aout_hdrsize) < 0)
+ error ("\"%s\": can't read optional aouthdr", execfile);
+
+ if (read_section_hdr (execchan, _TEXT, &text_hdr, num_sections,
+ aout_hdrsize) < 0)
+ error ("\"%s\": can't read text section header", execfile);
+
+ if (read_section_hdr (execchan, _DATA, &data_hdr, num_sections,
+ aout_hdrsize) < 0)
+ error ("\"%s\": can't read data section header", execfile);
+
+ text_start = exec_aouthdr.text_start;
+ text_end = text_start + exec_aouthdr.tsize;
+ text_offset = text_hdr.s_scnptr;
+ exec_data_start = exec_aouthdr.data_start;
+ exec_data_end = exec_data_start + exec_aouthdr.dsize;
+ exec_data_offset = data_hdr.s_scnptr;
+ data_start = exec_data_start;
+ data_end += exec_data_start;
+ exec_mtime = file_hdr.f_timdat;
+ }
+#else /* not COFF_FORMAT */
+ {
+ struct stat st_exec;
+
+#ifdef HEADER_SEEK_FD
+ HEADER_SEEK_FD (execchan);
+#endif
+
+ val = myread (execchan, &exec_aouthdr, sizeof (AOUTHDR));
+
+ if (val < 0)
+ perror_with_name (filename);
+
+ text_start = N_TXTADDR (exec_aouthdr);
+ exec_data_start = N_DATADDR (exec_aouthdr);
+
+ text_offset = N_TXTOFF (exec_aouthdr);
+ exec_data_offset = N_TXTOFF (exec_aouthdr) + exec_aouthdr.a_text;
+
+ text_end = text_start + exec_aouthdr.a_text;
+ exec_data_end = exec_data_start + exec_aouthdr.a_data;
+ data_start = exec_data_start;
+ data_end += exec_data_start;
+
+ if (fstat (execchan, &st_exec) < 0)
+ perror_with_name (filename);
+ exec_mtime = st_exec.st_mtime;
+ }
+#endif /* not COFF_FORMAT */
+
+ validate_files ();
+ }
+ else if (from_tty)
+ printf ("No exec file now.\n");
+
+ /* Tell display code (if any) about the changed file name. */
+ if (exec_file_display_hook)
+ (*exec_file_display_hook) (filename);
+}
diff --git a/gnu/usr.bin/kgdb/config/i386-dep.c b/gnu/usr.bin/kgdb/config/i386-dep.c
new file mode 100644
index 000000000000..c22b3a894c15
--- /dev/null
+++ b/gnu/usr.bin/kgdb/config/i386-dep.c
@@ -0,0 +1,1275 @@
+/* Low level interface to ptrace, for GDB when running on the Intel 386.
+ Copyright (C) 1988, 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include <stdio.h>
+#include "defs.h"
+#include "param.h"
+#include "frame.h"
+#include "inferior.h"
+
+#ifdef USG
+#include <sys/types.h>
+#endif
+
+#include <sys/param.h>
+#include <sys/dir.h>
+#include <signal.h>
+#include <sys/user.h>
+#include <sys/ioctl.h>
+#include <fcntl.h>
+
+#ifdef COFF_ENCAPSULATE
+#include "a.out.encap.h"
+#else
+#include <a.out.h>
+#endif
+
+#ifndef N_SET_MAGIC
+#ifdef COFF_FORMAT
+#define N_SET_MAGIC(exec, val) ((exec).magic = (val))
+#else
+#define N_SET_MAGIC(exec, val) ((exec).a_magic = (val))
+#endif
+#endif
+
+#include <sys/file.h>
+#include <sys/stat.h>
+
+#include <sys/reg.h>
+
+extern int errno;
+
+/* This function simply calls ptrace with the given arguments.
+ It exists so that all calls to ptrace are isolated in this
+ machine-dependent file. */
+int
+call_ptrace (request, pid, arg3, arg4)
+ int request, pid, arg3, arg4;
+{
+ return ptrace (request, pid, arg3, arg4);
+}
+
+kill_inferior ()
+{
+ if (remote_debugging)
+ return;
+ if (inferior_pid == 0)
+ return;
+ ptrace (8, inferior_pid, 0, 0);
+ wait (0);
+ inferior_died ();
+}
+
+/* This is used when GDB is exiting. It gives less chance of error.*/
+
+kill_inferior_fast ()
+{
+ if (remote_debugging)
+ return;
+ if (inferior_pid == 0)
+ return;
+ ptrace (8, inferior_pid, 0, 0);
+ wait (0);
+}
+
+/* Resume execution of the inferior process.
+ If STEP is nonzero, single-step it.
+ If SIGNAL is nonzero, give it that signal. */
+
+void
+resume (step, signal)
+ int step;
+ int signal;
+{
+ errno = 0;
+ if (remote_debugging)
+ remote_resume (step, signal);
+ else
+ {
+ ptrace (step ? 9 : 7, inferior_pid, 1, signal);
+ if (errno)
+ perror_with_name ("ptrace");
+ }
+}
+
+void
+fetch_inferior_registers ()
+{
+ register int regno;
+ register unsigned int regaddr;
+ char buf[MAX_REGISTER_RAW_SIZE];
+ register int i;
+
+ struct user u;
+ unsigned int offset = (char *) &u.u_ar0 - (char *) &u;
+ offset = ptrace (3, inferior_pid, offset, 0) - KERNEL_U_ADDR;
+
+ for (regno = 0; regno < NUM_REGS; regno++)
+ {
+ regaddr = register_addr (regno, offset);
+ for (i = 0; i < REGISTER_RAW_SIZE (regno); i += sizeof (int))
+ {
+ *(int *) &buf[i] = ptrace (3, inferior_pid, regaddr, 0);
+ regaddr += sizeof (int);
+ }
+ supply_register (regno, buf);
+ }
+}
+
+/* Store our register values back into the inferior.
+ If REGNO is -1, do this for all registers.
+ Otherwise, REGNO specifies which register (so we can save time). */
+
+store_inferior_registers (regno)
+ int regno;
+{
+ register unsigned int regaddr;
+ char buf[80];
+
+ struct user u;
+ unsigned int offset = (char *) &u.u_ar0 - (char *) &u;
+ offset = ptrace (3, inferior_pid, offset, 0) - KERNEL_U_ADDR;
+
+ if (regno >= 0)
+ {
+ regaddr = register_addr (regno, offset);
+ errno = 0;
+ ptrace (6, inferior_pid, regaddr, read_register (regno));
+ if (errno != 0)
+ {
+ sprintf (buf, "writing register number %d", regno);
+ perror_with_name (buf);
+ }
+ }
+ else for (regno = 0; regno < NUM_REGS; regno++)
+ {
+ regaddr = register_addr (regno, offset);
+ errno = 0;
+ ptrace (6, inferior_pid, regaddr, read_register (regno));
+ if (errno != 0)
+ {
+ sprintf (buf, "writing register number %d", regno);
+ perror_with_name (buf);
+ }
+ }
+}
+
+/* Copy LEN bytes from inferior's memory starting at MEMADDR
+ to debugger memory starting at MYADDR.
+ On failure (cannot read from inferior, usually because address is out
+ of bounds) returns the value of errno. */
+
+int
+read_inferior_memory (memaddr, myaddr, len)
+ CORE_ADDR memaddr;
+ char *myaddr;
+ int len;
+{
+ register int i;
+ /* Round starting address down to longword boundary. */
+ register CORE_ADDR addr = memaddr & - sizeof (int);
+ /* Round ending address up; get number of longwords that makes. */
+ register int count
+ = (((memaddr + len) - addr) + sizeof (int) - 1) / sizeof (int);
+ /* Allocate buffer of that many longwords. */
+ register int *buffer = (int *) alloca (count * sizeof (int));
+ extern int errno;
+
+ /* Read all the longwords */
+ for (i = 0; i < count; i++, addr += sizeof (int))
+ {
+ errno = 0;
+ if (remote_debugging)
+ buffer[i] = remote_fetch_word (addr);
+ else
+ buffer[i] = ptrace (1, inferior_pid, addr, 0);
+ if (errno)
+ return errno;
+ }
+
+ /* Copy appropriate bytes out of the buffer. */
+ bcopy ((char *) buffer + (memaddr & (sizeof (int) - 1)), myaddr, len);
+ return 0;
+}
+
+/* Copy LEN bytes of data from debugger memory at MYADDR
+ to inferior's memory at MEMADDR.
+ On failure (cannot write the inferior)
+ returns the value of errno. */
+
+int
+write_inferior_memory (memaddr, myaddr, len)
+ CORE_ADDR memaddr;
+ char *myaddr;
+ int len;
+{
+ register int i;
+ /* Round starting address down to longword boundary. */
+ register CORE_ADDR addr = memaddr & - sizeof (int);
+ /* Round ending address up; get number of longwords that makes. */
+ register int count
+ = (((memaddr + len) - addr) + sizeof (int) - 1) / sizeof (int);
+ /* Allocate buffer of that many longwords. */
+ register int *buffer = (int *) alloca (count * sizeof (int));
+ extern int errno;
+
+ /* Fill start and end extra bytes of buffer with existing memory data. */
+
+ if (remote_debugging)
+ buffer[0] = remote_fetch_word (addr);
+ else
+ buffer[0] = ptrace (1, inferior_pid, addr, 0);
+
+ if (count > 1)
+ {
+ if (remote_debugging)
+ buffer[count - 1]
+ = remote_fetch_word (addr + (count - 1) * sizeof (int));
+ else
+ buffer[count - 1]
+ = ptrace (1, inferior_pid,
+ addr + (count - 1) * sizeof (int), 0);
+ }
+
+ /* Copy data to be written over corresponding part of buffer */
+
+ bcopy (myaddr, (char *) buffer + (memaddr & (sizeof (int) - 1)), len);
+
+ /* Write the entire buffer. */
+
+ for (i = 0; i < count; i++, addr += sizeof (int))
+ {
+ errno = 0;
+ if (remote_debugging)
+ remote_store_word (addr, buffer[i]);
+ else
+ ptrace (4, inferior_pid, addr, buffer[i]);
+ if (errno)
+ return errno;
+ }
+
+ return 0;
+}
+
+/* Work with core dump and executable files, for GDB.
+ This code would be in core.c if it weren't machine-dependent. */
+
+#ifndef N_TXTADDR
+#define N_TXTADDR(hdr) 0
+#endif /* no N_TXTADDR */
+
+#ifndef N_DATADDR
+#define N_DATADDR(hdr) hdr.a_text
+#endif /* no N_DATADDR */
+
+/* Make COFF and non-COFF names for things a little more compatible
+ to reduce conditionals later. */
+
+#ifndef COFF_FORMAT
+#ifndef AOUTHDR
+#define AOUTHDR struct exec
+#endif
+#endif
+
+extern char *sys_siglist[];
+
+
+/* Hook for `exec_file_command' command to call. */
+
+extern void (*exec_file_display_hook) ();
+
+/* File names of core file and executable file. */
+
+extern char *corefile;
+extern char *execfile;
+
+/* Descriptors on which core file and executable file are open.
+ Note that the execchan is closed when an inferior is created
+ and reopened if the inferior dies or is killed. */
+
+extern int corechan;
+extern int execchan;
+
+/* Last modification time of executable file.
+ Also used in source.c to compare against mtime of a source file. */
+
+extern int exec_mtime;
+
+/* Virtual addresses of bounds of the two areas of memory in the core file. */
+
+extern CORE_ADDR data_start;
+extern CORE_ADDR data_end;
+extern CORE_ADDR stack_start;
+extern CORE_ADDR stack_end;
+
+/* Virtual addresses of bounds of two areas of memory in the exec file.
+ Note that the data area in the exec file is used only when there is no core file. */
+
+extern CORE_ADDR text_start;
+extern CORE_ADDR text_end;
+
+extern CORE_ADDR exec_data_start;
+extern CORE_ADDR exec_data_end;
+
+/* Address in executable file of start of text area data. */
+
+extern int text_offset;
+
+/* Address in executable file of start of data area data. */
+
+extern int exec_data_offset;
+
+/* Address in core file of start of data area data. */
+
+extern int data_offset;
+
+/* Address in core file of start of stack area data. */
+
+extern int stack_offset;
+
+#ifdef COFF_FORMAT
+/* various coff data structures */
+
+extern FILHDR file_hdr;
+extern SCNHDR text_hdr;
+extern SCNHDR data_hdr;
+
+#endif /* not COFF_FORMAT */
+
+/* a.out header saved in core file. */
+
+extern AOUTHDR core_aouthdr;
+
+/* a.out header of exec file. */
+
+extern AOUTHDR exec_aouthdr;
+
+extern void validate_files ();
+
+core_file_command (filename, from_tty)
+ char *filename;
+ int from_tty;
+{
+ int val;
+ extern char registers[];
+
+ /* Discard all vestiges of any previous core file
+ and mark data and stack spaces as empty. */
+
+ if (corefile)
+ free (corefile);
+ corefile = 0;
+
+ if (corechan >= 0)
+ close (corechan);
+ corechan = -1;
+
+ data_start = 0;
+ data_end = 0;
+ stack_start = STACK_END_ADDR;
+ stack_end = STACK_END_ADDR;
+
+ /* Now, if a new core file was specified, open it and digest it. */
+
+ if (filename)
+ {
+ filename = tilde_expand (filename);
+ make_cleanup (free, filename);
+
+ if (have_inferior_p ())
+ error ("To look at a core file, you must kill the inferior with \"kill\".");
+ corechan = open (filename, O_RDONLY, 0);
+ if (corechan < 0)
+ perror_with_name (filename);
+ /* 4.2-style (and perhaps also sysV-style) core dump file. */
+ {
+ struct user u;
+
+ int reg_offset;
+
+ val = myread (corechan, &u, sizeof u);
+ if (val < 0)
+ perror_with_name (filename);
+ data_start = exec_data_start;
+
+ data_end = data_start + NBPG * u.u_dsize;
+ stack_start = stack_end - NBPG * u.u_ssize;
+ data_offset = NBPG * UPAGES;
+ stack_offset = NBPG * (UPAGES + u.u_dsize);
+ reg_offset = (int) u.u_ar0 - KERNEL_U_ADDR;
+
+ /* I don't know where to find this info.
+ So, for now, mark it as not available. */
+/* N_SET_MAGIC (core_aouthdr, 0); */
+ bzero ((char *) &core_aouthdr, sizeof core_aouthdr);
+
+ /* Read the register values out of the core file and store
+ them where `read_register' will find them. */
+
+ {
+ register int regno;
+
+ for (regno = 0; regno < NUM_REGS; regno++)
+ {
+ char buf[MAX_REGISTER_RAW_SIZE];
+
+ val = lseek (corechan, register_addr (regno, reg_offset), 0);
+ if (val < 0)
+ perror_with_name (filename);
+
+ val = myread (corechan, buf, sizeof buf);
+ if (val < 0)
+ perror_with_name (filename);
+ supply_register (regno, buf);
+ }
+ }
+ }
+ if (filename[0] == '/')
+ corefile = savestring (filename, strlen (filename));
+ else
+ {
+ corefile = concat (current_directory, "/", filename);
+ }
+
+ set_current_frame ( create_new_frame (read_register (FP_REGNUM),
+ read_pc ()));
+ select_frame (get_current_frame (), 0);
+ validate_files ();
+ }
+ else if (from_tty)
+ printf ("No core file now.\n");
+}
+
+exec_file_command (filename, from_tty)
+ char *filename;
+ int from_tty;
+{
+ int val;
+
+ /* Eliminate all traces of old exec file.
+ Mark text segment as empty. */
+
+ if (execfile)
+ free (execfile);
+ execfile = 0;
+ data_start = 0;
+ data_end -= exec_data_start;
+ text_start = 0;
+ text_end = 0;
+ exec_data_start = 0;
+ exec_data_end = 0;
+ if (execchan >= 0)
+ close (execchan);
+ execchan = -1;
+
+ /* Now open and digest the file the user requested, if any. */
+
+ if (filename)
+ {
+ filename = tilde_expand (filename);
+ make_cleanup (free, filename);
+
+ execchan = openp (getenv ("PATH"), 1, filename, O_RDONLY, 0,
+ &execfile);
+ if (execchan < 0)
+ perror_with_name (filename);
+
+#ifdef COFF_FORMAT
+ {
+ int aout_hdrsize;
+ int num_sections;
+
+ if (read_file_hdr (execchan, &file_hdr) < 0)
+ error ("\"%s\": not in executable format.", execfile);
+
+ aout_hdrsize = file_hdr.f_opthdr;
+ num_sections = file_hdr.f_nscns;
+
+ if (read_aout_hdr (execchan, &exec_aouthdr, aout_hdrsize) < 0)
+ error ("\"%s\": can't read optional aouthdr", execfile);
+
+ if (read_section_hdr (execchan, _TEXT, &text_hdr, num_sections,
+ aout_hdrsize) < 0)
+ error ("\"%s\": can't read text section header", execfile);
+
+ if (read_section_hdr (execchan, _DATA, &data_hdr, num_sections,
+ aout_hdrsize) < 0)
+ error ("\"%s\": can't read data section header", execfile);
+
+ text_start = exec_aouthdr.text_start;
+ text_end = text_start + exec_aouthdr.tsize;
+ text_offset = text_hdr.s_scnptr;
+ exec_data_start = exec_aouthdr.data_start;
+ exec_data_end = exec_data_start + exec_aouthdr.dsize;
+ exec_data_offset = data_hdr.s_scnptr;
+ data_start = exec_data_start;
+ data_end += exec_data_start;
+ exec_mtime = file_hdr.f_timdat;
+ }
+#else /* not COFF_FORMAT */
+ {
+ struct stat st_exec;
+
+#ifdef HEADER_SEEK_FD
+ HEADER_SEEK_FD (execchan);
+#endif
+
+ val = myread (execchan, &exec_aouthdr, sizeof (AOUTHDR));
+
+ if (val < 0)
+ perror_with_name (filename);
+
+ text_start = N_TXTADDR (exec_aouthdr);
+ exec_data_start = N_DATADDR (exec_aouthdr);
+
+ text_offset = N_TXTOFF (exec_aouthdr);
+ exec_data_offset = N_TXTOFF (exec_aouthdr) + exec_aouthdr.a_text;
+
+ text_end = text_start + exec_aouthdr.a_text;
+ exec_data_end = exec_data_start + exec_aouthdr.a_data;
+ data_start = exec_data_start;
+ data_end += exec_data_start;
+
+ fstat (execchan, &st_exec);
+ exec_mtime = st_exec.st_mtime;
+ }
+#endif /* not COFF_FORMAT */
+
+ validate_files ();
+ }
+ else if (from_tty)
+ printf ("No exec file now.\n");
+
+ /* Tell display code (if any) about the changed file name. */
+ if (exec_file_display_hook)
+ (*exec_file_display_hook) (filename);
+}
+
+/* helper functions for m-i386.h */
+
+/* stdio style buffering to minimize calls to ptrace */
+static CORE_ADDR codestream_next_addr;
+static CORE_ADDR codestream_addr;
+static unsigned char codestream_buf[sizeof (int)];
+static int codestream_off;
+static int codestream_cnt;
+
+#define codestream_tell() (codestream_addr + codestream_off)
+#define codestream_peek() (codestream_cnt == 0 ? \
+ codestream_fill(1): codestream_buf[codestream_off])
+#define codestream_get() (codestream_cnt-- == 0 ? \
+ codestream_fill(0) : codestream_buf[codestream_off++])
+
+static unsigned char
+codestream_fill (peek_flag)
+{
+ codestream_addr = codestream_next_addr;
+ codestream_next_addr += sizeof (int);
+ codestream_off = 0;
+ codestream_cnt = sizeof (int);
+ read_memory (codestream_addr,
+ (unsigned char *)codestream_buf,
+ sizeof (int));
+
+ if (peek_flag)
+ return (codestream_peek());
+ else
+ return (codestream_get());
+}
+
+static void
+codestream_seek (place)
+{
+ codestream_next_addr = place & -sizeof (int);
+ codestream_cnt = 0;
+ codestream_fill (1);
+ while (codestream_tell() != place)
+ codestream_get ();
+}
+
+static void
+codestream_read (buf, count)
+ unsigned char *buf;
+{
+ unsigned char *p;
+ int i;
+ p = buf;
+ for (i = 0; i < count; i++)
+ *p++ = codestream_get ();
+}
+
+/* next instruction is a jump, move to target */
+static
+i386_follow_jump ()
+{
+ int long_delta;
+ short short_delta;
+ char byte_delta;
+ int data16;
+ int pos;
+
+ pos = codestream_tell ();
+
+ data16 = 0;
+ if (codestream_peek () == 0x66)
+ {
+ codestream_get ();
+ data16 = 1;
+ }
+
+ switch (codestream_get ())
+ {
+ case 0xe9:
+ /* relative jump: if data16 == 0, disp32, else disp16 */
+ if (data16)
+ {
+ codestream_read ((unsigned char *)&short_delta, 2);
+ pos += short_delta + 3; /* include size of jmp inst */
+ }
+ else
+ {
+ codestream_read ((unsigned char *)&long_delta, 4);
+ pos += long_delta + 5;
+ }
+ break;
+ case 0xeb:
+ /* relative jump, disp8 (ignore data16) */
+ codestream_read ((unsigned char *)&byte_delta, 1);
+ pos += byte_delta + 2;
+ break;
+ }
+ codestream_seek (pos + data16);
+}
+
+/*
+ * find & return amound a local space allocated, and advance codestream to
+ * first register push (if any)
+ *
+ * if entry sequence doesn't make sense, return -1, and leave
+ * codestream pointer random
+ */
+static long
+i386_get_frame_setup (pc)
+{
+ unsigned char op;
+
+ codestream_seek (pc);
+
+ i386_follow_jump ();
+
+ op = codestream_get ();
+
+ if (op == 0x58) /* popl %eax */
+ {
+ /*
+ * this function must start with
+ *
+ * popl %eax 0x58
+ * xchgl %eax, (%esp) 0x87 0x04 0x24
+ * or xchgl %eax, 0(%esp) 0x87 0x44 0x24 0x00
+ *
+ * (the system 5 compiler puts out the second xchg
+ * inst, and the assembler doesn't try to optimize it,
+ * so the 'sib' form gets generated)
+ *
+ * this sequence is used to get the address of the return
+ * buffer for a function that returns a structure
+ */
+ int pos;
+ unsigned char buf[4];
+ static unsigned char proto1[3] = { 0x87,0x04,0x24 };
+ static unsigned char proto2[4] = { 0x87,0x44,0x24,0x00 };
+ pos = codestream_tell ();
+ codestream_read (buf, 4);
+ if (bcmp (buf, proto1, 3) == 0)
+ pos += 3;
+ else if (bcmp (buf, proto2, 4) == 0)
+ pos += 4;
+
+ codestream_seek (pos);
+ op = codestream_get (); /* update next opcode */
+ }
+
+ if (op == 0x55) /* pushl %esp */
+ {
+ /* check for movl %esp, %ebp - can be written two ways */
+ switch (codestream_get ())
+ {
+ case 0x8b:
+ if (codestream_get () != 0xec)
+ return (-1);
+ break;
+ case 0x89:
+ if (codestream_get () != 0xe5)
+ return (-1);
+ break;
+ default:
+ return (-1);
+ }
+ /* check for stack adjustment
+ *
+ * subl $XXX, %esp
+ *
+ * note: you can't subtract a 16 bit immediate
+ * from a 32 bit reg, so we don't have to worry
+ * about a data16 prefix
+ */
+ op = codestream_peek ();
+ if (op == 0x83)
+ {
+ /* subl with 8 bit immed */
+ codestream_get ();
+ if (codestream_get () != 0xec)
+ return (-1);
+ /* subl with signed byte immediate
+ * (though it wouldn't make sense to be negative)
+ */
+ return (codestream_get());
+ }
+ else if (op == 0x81)
+ {
+ /* subl with 32 bit immed */
+ int locals;
+ codestream_get();
+ if (codestream_get () != 0xec)
+ return (-1);
+ /* subl with 32 bit immediate */
+ codestream_read ((unsigned char *)&locals, 4);
+ return (locals);
+ }
+ else
+ {
+ return (0);
+ }
+ }
+ else if (op == 0xc8)
+ {
+ /* enter instruction: arg is 16 bit unsigned immed */
+ unsigned short slocals;
+ codestream_read ((unsigned char *)&slocals, 2);
+ codestream_get (); /* flush final byte of enter instruction */
+ return (slocals);
+ }
+ return (-1);
+}
+
+/* Return number of args passed to a frame.
+ Can return -1, meaning no way to tell. */
+
+/* on the 386, the instruction following the call could be:
+ * popl %ecx - one arg
+ * addl $imm, %esp - imm/4 args; imm may be 8 or 32 bits
+ * anything else - zero args
+ */
+
+int
+i386_frame_num_args (fi)
+ struct frame_info fi;
+{
+ int retpc;
+ unsigned char op;
+ struct frame_info *pfi;
+
+ pfi = get_prev_frame_info ((fi));
+ if (pfi == 0)
+ {
+ /* Note: this can happen if we are looking at the frame for
+ main, because FRAME_CHAIN_VALID won't let us go into
+ start. If we have debugging symbols, that's not really
+ a big deal; it just means it will only show as many arguments
+ to main as are declared. */
+ return -1;
+ }
+ else
+ {
+ retpc = pfi->pc;
+ op = read_memory_integer (retpc, 1);
+ if (op == 0x59)
+ /* pop %ecx */
+ return 1;
+ else if (op == 0x83)
+ {
+ op = read_memory_integer (retpc+1, 1);
+ if (op == 0xc4)
+ /* addl $<signed imm 8 bits>, %esp */
+ return (read_memory_integer (retpc+2,1)&0xff)/4;
+ else
+ return 0;
+ }
+ else if (op == 0x81)
+ { /* add with 32 bit immediate */
+ op = read_memory_integer (retpc+1, 1);
+ if (op == 0xc4)
+ /* addl $<imm 32>, %esp */
+ return read_memory_integer (retpc+2, 4) / 4;
+ else
+ return 0;
+ }
+ else
+ {
+ return 0;
+ }
+ }
+}
+
+/*
+ * parse the first few instructions of the function to see
+ * what registers were stored.
+ *
+ * We handle these cases:
+ *
+ * The startup sequence can be at the start of the function,
+ * or the function can start with a branch to startup code at the end.
+ *
+ * %ebp can be set up with either the 'enter' instruction, or
+ * 'pushl %ebp, movl %esp, %ebp' (enter is too slow to be useful,
+ * but was once used in the sys5 compiler)
+ *
+ * Local space is allocated just below the saved %ebp by either the
+ * 'enter' instruction, or by 'subl $<size>, %esp'. 'enter' has
+ * a 16 bit unsigned argument for space to allocate, and the
+ * 'addl' instruction could have either a signed byte, or
+ * 32 bit immediate.
+ *
+ * Next, the registers used by this function are pushed. In
+ * the sys5 compiler they will always be in the order: %edi, %esi, %ebx
+ * (and sometimes a harmless bug causes it to also save but not restore %eax);
+ * however, the code below is willing to see the pushes in any order,
+ * and will handle up to 8 of them.
+ *
+ * If the setup sequence is at the end of the function, then the
+ * next instruction will be a branch back to the start.
+ */
+
+i386_frame_find_saved_regs (fip, fsrp)
+ struct frame_info *fip;
+ struct frame_saved_regs *fsrp;
+{
+ unsigned long locals;
+ unsigned char *p;
+ unsigned char op;
+ CORE_ADDR dummy_bottom;
+ CORE_ADDR adr;
+ int i;
+
+ bzero (fsrp, sizeof *fsrp);
+
+ /* if frame is the end of a dummy, compute where the
+ * beginning would be
+ */
+ dummy_bottom = fip->frame - 4 - NUM_REGS*4 - CALL_DUMMY_LENGTH;
+
+ /* check if the PC is in the stack, in a dummy frame */
+ if (dummy_bottom <= fip->pc && fip->pc <= fip->frame)
+ {
+ /* all regs were saved by push_call_dummy () */
+ adr = fip->frame - 4;
+ for (i = 0; i < NUM_REGS; i++)
+ {
+ fsrp->regs[i] = adr;
+ adr -= 4;
+ }
+ return;
+ }
+
+ locals = i386_get_frame_setup (get_pc_function_start (fip->pc));
+
+ if (locals >= 0)
+ {
+ adr = fip->frame - 4 - locals;
+ for (i = 0; i < 8; i++)
+ {
+ op = codestream_get ();
+ if (op < 0x50 || op > 0x57)
+ break;
+ fsrp->regs[op - 0x50] = adr;
+ adr -= 4;
+ }
+ }
+
+ fsrp->regs[PC_REGNUM] = fip->frame + 4;
+ fsrp->regs[FP_REGNUM] = fip->frame;
+}
+
+/* return pc of first real instruction */
+i386_skip_prologue (pc)
+{
+ unsigned char op;
+ int i;
+
+ if (i386_get_frame_setup (pc) < 0)
+ return (pc);
+
+ /* found valid frame setup - codestream now points to
+ * start of push instructions for saving registers
+ */
+
+ /* skip over register saves */
+ for (i = 0; i < 8; i++)
+ {
+ op = codestream_peek ();
+ /* break if not pushl inst */
+ if (op < 0x50 || op > 0x57)
+ break;
+ codestream_get ();
+ }
+
+ i386_follow_jump ();
+
+ return (codestream_tell ());
+}
+
+i386_push_dummy_frame ()
+{
+ CORE_ADDR sp = read_register (SP_REGNUM);
+ int regnum;
+
+ sp = push_word (sp, read_register (PC_REGNUM));
+ sp = push_word (sp, read_register (FP_REGNUM));
+ write_register (FP_REGNUM, sp);
+ for (regnum = 0; regnum < NUM_REGS; regnum++)
+ sp = push_word (sp, read_register (regnum));
+ write_register (SP_REGNUM, sp);
+}
+
+i386_pop_frame ()
+{
+ FRAME frame = get_current_frame ();
+ CORE_ADDR fp;
+ int regnum;
+ struct frame_saved_regs fsr;
+ struct frame_info *fi;
+
+ fi = get_frame_info (frame);
+ fp = fi->frame;
+ get_frame_saved_regs (fi, &fsr);
+ for (regnum = 0; regnum < NUM_REGS; regnum++)
+ {
+ CORE_ADDR adr;
+ adr = fsr.regs[regnum];
+ if (adr)
+ write_register (regnum, read_memory_integer (adr, 4));
+ }
+ write_register (FP_REGNUM, read_memory_integer (fp, 4));
+ write_register (PC_REGNUM, read_memory_integer (fp + 4, 4));
+ write_register (SP_REGNUM, fp + 8);
+ flush_cached_frames ();
+ set_current_frame ( create_new_frame (read_register (FP_REGNUM),
+ read_pc ()));
+}
+
+/* this table must line up with REGISTER_NAMES in m-i386.h */
+/* symbols like 'EAX' come from <sys/reg.h> */
+static int regmap[] =
+{
+ EAX, ECX, EDX, EBX,
+ UESP, EBP, ESI, EDI,
+ EIP, EFL, CS, SS,
+ DS, ES, FS, GS,
+};
+
+/* blockend is the value of u.u_ar0, and points to the
+ * place where GS is stored
+ */
+i386_register_u_addr (blockend, regnum)
+{
+#if 0
+ /* this will be needed if fp registers are reinstated */
+ /* for now, you can look at them with 'info float'
+ * sys5 wont let you change them with ptrace anyway
+ */
+ if (regnum >= FP0_REGNUM && regnum <= FP7_REGNUM)
+ {
+ int ubase, fpstate;
+ struct user u;
+ ubase = blockend + 4 * (SS + 1) - KSTKSZ;
+ fpstate = ubase + ((char *)&u.u_fpstate - (char *)&u);
+ return (fpstate + 0x1c + 10 * (regnum - FP0_REGNUM));
+ }
+ else
+#endif
+ return (blockend + 4 * regmap[regnum]);
+
+}
+
+i387_to_double (from, to)
+ char *from;
+ char *to;
+{
+ long *lp;
+ /* push extended mode on 387 stack, then pop in double mode
+ *
+ * first, set exception masks so no error is generated -
+ * number will be rounded to inf or 0, if necessary
+ */
+ asm ("pushl %eax"); /* grab a stack slot */
+ asm ("fstcw (%esp)"); /* get 387 control word */
+ asm ("movl (%esp),%eax"); /* save old value */
+ asm ("orl $0x3f,%eax"); /* mask all exceptions */
+ asm ("pushl %eax");
+ asm ("fldcw (%esp)"); /* load new value into 387 */
+
+ asm ("movl 8(%ebp),%eax");
+ asm ("fldt (%eax)"); /* push extended number on 387 stack */
+ asm ("fwait");
+ asm ("movl 12(%ebp),%eax");
+ asm ("fstpl (%eax)"); /* pop double */
+ asm ("fwait");
+
+ asm ("popl %eax"); /* flush modified control word */
+ asm ("fnclex"); /* clear exceptions */
+ asm ("fldcw (%esp)"); /* restore original control word */
+ asm ("popl %eax"); /* flush saved copy */
+}
+
+double_to_i387 (from, to)
+ char *from;
+ char *to;
+{
+ /* push double mode on 387 stack, then pop in extended mode
+ * no errors are possible because every 64-bit pattern
+ * can be converted to an extended
+ */
+ asm ("movl 8(%ebp),%eax");
+ asm ("fldl (%eax)");
+ asm ("fwait");
+ asm ("movl 12(%ebp),%eax");
+ asm ("fstpt (%eax)");
+ asm ("fwait");
+}
+
+struct env387
+{
+ unsigned short control;
+ unsigned short r0;
+ unsigned short status;
+ unsigned short r1;
+ unsigned short tag;
+ unsigned short r2;
+ unsigned long eip;
+ unsigned short code_seg;
+ unsigned short opcode;
+ unsigned long operand;
+ unsigned short operand_seg;
+ unsigned short r3;
+ unsigned char regs[8][10];
+};
+
+static
+print_387_control_word (control)
+unsigned short control;
+{
+ printf ("control 0x%04x: ", control);
+ printf ("compute to ");
+ switch ((control >> 8) & 3)
+ {
+ case 0: printf ("24 bits; "); break;
+ case 1: printf ("(bad); "); break;
+ case 2: printf ("53 bits; "); break;
+ case 3: printf ("64 bits; "); break;
+ }
+ printf ("round ");
+ switch ((control >> 10) & 3)
+ {
+ case 0: printf ("NEAREST; "); break;
+ case 1: printf ("DOWN; "); break;
+ case 2: printf ("UP; "); break;
+ case 3: printf ("CHOP; "); break;
+ }
+ if (control & 0x3f)
+ {
+ printf ("mask:");
+ if (control & 0x0001) printf (" INVALID");
+ if (control & 0x0002) printf (" DENORM");
+ if (control & 0x0004) printf (" DIVZ");
+ if (control & 0x0008) printf (" OVERF");
+ if (control & 0x0010) printf (" UNDERF");
+ if (control & 0x0020) printf (" LOS");
+ printf (";");
+ }
+ printf ("\n");
+ if (control & 0xe080) printf ("warning: reserved bits on 0x%x\n",
+ control & 0xe080);
+}
+
+static
+print_387_status_word (status)
+ unsigned short status;
+{
+ printf ("status 0x%04x: ", status);
+ if (status & 0xff)
+ {
+ printf ("exceptions:");
+ if (status & 0x0001) printf (" INVALID");
+ if (status & 0x0002) printf (" DENORM");
+ if (status & 0x0004) printf (" DIVZ");
+ if (status & 0x0008) printf (" OVERF");
+ if (status & 0x0010) printf (" UNDERF");
+ if (status & 0x0020) printf (" LOS");
+ if (status & 0x0040) printf (" FPSTACK");
+ printf ("; ");
+ }
+ printf ("flags: %d%d%d%d; ",
+ (status & 0x4000) != 0,
+ (status & 0x0400) != 0,
+ (status & 0x0200) != 0,
+ (status & 0x0100) != 0);
+
+ printf ("top %d\n", (status >> 11) & 7);
+}
+
+static
+print_387_status (status, ep)
+ unsigned short status;
+ struct env387 *ep;
+{
+ int i;
+ int bothstatus;
+ int top;
+ int fpreg;
+ unsigned char *p;
+
+ bothstatus = ((status != 0) && (ep->status != 0));
+ if (status != 0)
+ {
+ if (bothstatus)
+ printf ("u: ");
+ print_387_status_word (status);
+ }
+
+ if (ep->status != 0)
+ {
+ if (bothstatus)
+ printf ("e: ");
+ print_387_status_word (ep->status);
+ }
+
+ print_387_control_word (ep->control);
+ printf ("last exception: ");
+ printf ("opcode 0x%x; ", ep->opcode);
+ printf ("pc 0x%x:0x%x; ", ep->code_seg, ep->eip);
+ printf ("operand 0x%x:0x%x\n", ep->operand_seg, ep->operand);
+
+ top = (ep->status >> 11) & 7;
+
+ printf ("regno tag msb lsb value\n");
+ for (fpreg = 7; fpreg >= 0; fpreg--)
+ {
+ double val;
+
+ printf ("%s %d: ", fpreg == top ? "=>" : " ", fpreg);
+
+ switch ((ep->tag >> (fpreg * 2)) & 3)
+ {
+ case 0: printf ("valid "); break;
+ case 1: printf ("zero "); break;
+ case 2: printf ("trap "); break;
+ case 3: printf ("empty "); break;
+ }
+ for (i = 9; i >= 0; i--)
+ printf ("%02x", ep->regs[fpreg][i]);
+
+ i387_to_double (ep->regs[fpreg], (char *)&val);
+ printf (" %g\n", val);
+ }
+ if (ep->r0)
+ printf ("warning: reserved0 is 0x%x\n", ep->r0);
+ if (ep->r1)
+ printf ("warning: reserved1 is 0x%x\n", ep->r1);
+ if (ep->r2)
+ printf ("warning: reserved2 is 0x%x\n", ep->r2);
+ if (ep->r3)
+ printf ("warning: reserved3 is 0x%x\n", ep->r3);
+}
+
+#ifndef U_FPSTATE
+#define U_FPSTATE(u) u.u_fpstate
+#endif
+
+i386_float_info ()
+{
+ struct user u; /* just for address computations */
+ int i;
+ /* fpstate defined in <sys/user.h> */
+ struct fpstate *fpstatep;
+ char buf[sizeof (struct fpstate) + 2 * sizeof (int)];
+ unsigned int uaddr;
+ char fpvalid;
+ unsigned int rounded_addr;
+ unsigned int rounded_size;
+ extern int corechan;
+ int skip;
+
+ uaddr = (char *)&u.u_fpvalid - (char *)&u;
+ if (have_inferior_p())
+ {
+ unsigned int data;
+ unsigned int mask;
+
+ rounded_addr = uaddr & -sizeof (int);
+ data = ptrace (3, inferior_pid, rounded_addr, 0);
+ mask = 0xff << ((uaddr - rounded_addr) * 8);
+
+ fpvalid = ((data & mask) != 0);
+ }
+ else
+ {
+ if (lseek (corechan, uaddr, 0) < 0)
+ perror ("seek on core file");
+ if (myread (corechan, &fpvalid, 1) < 0)
+ perror ("read on core file");
+
+ }
+
+ if (fpvalid == 0)
+ {
+ printf ("no floating point status saved\n");
+ return;
+ }
+
+ uaddr = (char *)&U_FPSTATE(u) - (char *)&u;
+ if (have_inferior_p ())
+ {
+ int *ip;
+
+ rounded_addr = uaddr & -sizeof (int);
+ rounded_size = (((uaddr + sizeof (struct fpstate)) - uaddr) +
+ sizeof (int) - 1) / sizeof (int);
+ skip = uaddr - rounded_addr;
+
+ ip = (int *)buf;
+ for (i = 0; i < rounded_size; i++)
+ {
+ *ip++ = ptrace (3, inferior_pid, rounded_addr, 0);
+ rounded_addr += sizeof (int);
+ }
+ }
+ else
+ {
+ if (lseek (corechan, uaddr, 0) < 0)
+ perror_with_name ("seek on core file");
+ if (myread (corechan, buf, sizeof (struct fpstate)) < 0)
+ perror_with_name ("read from core file");
+ skip = 0;
+ }
+
+ fpstatep = (struct fpstate *)(buf + skip);
+ print_387_status (fpstatep->status, (struct env387 *)fpstatep->state);
+}
+
diff --git a/gnu/usr.bin/kgdb/config/i386-pinsn.c b/gnu/usr.bin/kgdb/config/i386-pinsn.c
new file mode 100644
index 000000000000..264fbb0835eb
--- /dev/null
+++ b/gnu/usr.bin/kgdb/config/i386-pinsn.c
@@ -0,0 +1,1812 @@
+/* Print i386 instructions for GDB, the GNU debugger.
+ Copyright (C) 1988, 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+/*
+ * 80386 instruction printer by Pace Willisson (pace@prep.ai.mit.edu)
+ * July 1988
+ */
+
+/*
+ * The main tables describing the instructions is essentially a copy
+ * of the "Opcode Map" chapter (Appendix A) of the Intel 80386
+ * Programmers Manual. Usually, there is a capital letter, followed
+ * by a small letter. The capital letter tell the addressing mode,
+ * and the small letter tells about the operand size. Refer to
+ * the Intel manual for details.
+ */
+
+#include <stdio.h>
+#include <ctype.h>
+
+#define Eb OP_E, b_mode
+#define indirEb OP_indirE, b_mode
+#define Gb OP_G, b_mode
+#define Ev OP_E, v_mode
+#define indirEv OP_indirE, v_mode
+#define Ew OP_E, w_mode
+#define Ma OP_E, v_mode
+#define M OP_E, 0
+#define Mp OP_E, 0 /* ? */
+#define Gv OP_G, v_mode
+#define Gw OP_G, w_mode
+#define Rw OP_rm, w_mode
+#define Rd OP_rm, d_mode
+#define Ib OP_I, b_mode
+#define sIb OP_sI, b_mode /* sign extened byte */
+#define Iv OP_I, v_mode
+#define Iw OP_I, w_mode
+#define Jb OP_J, b_mode
+#define Jv OP_J, v_mode
+#define ONE OP_ONE, 0
+#define Cd OP_C, d_mode
+#define Dd OP_D, d_mode
+#define Td OP_T, d_mode
+
+#define eAX OP_REG, eAX_reg
+#define eBX OP_REG, eBX_reg
+#define eCX OP_REG, eCX_reg
+#define eDX OP_REG, eDX_reg
+#define eSP OP_REG, eSP_reg
+#define eBP OP_REG, eBP_reg
+#define eSI OP_REG, eSI_reg
+#define eDI OP_REG, eDI_reg
+#define AL OP_REG, al_reg
+#define CL OP_REG, cl_reg
+#define DL OP_REG, dl_reg
+#define BL OP_REG, bl_reg
+#define AH OP_REG, ah_reg
+#define CH OP_REG, ch_reg
+#define DH OP_REG, dh_reg
+#define BH OP_REG, bh_reg
+#define AX OP_REG, ax_reg
+#define DX OP_REG, dx_reg
+#define indirDX OP_REG, indir_dx_reg
+
+#define Sw OP_SEG, w_mode
+#define Ap OP_DIR, lptr
+#define Av OP_DIR, v_mode
+#define Ob OP_OFF, b_mode
+#define Ov OP_OFF, v_mode
+#define Xb OP_DSSI, b_mode
+#define Xv OP_DSSI, v_mode
+#define Yb OP_ESDI, b_mode
+#define Yv OP_ESDI, v_mode
+
+#define es OP_REG, es_reg
+#define ss OP_REG, ss_reg
+#define cs OP_REG, cs_reg
+#define ds OP_REG, ds_reg
+#define fs OP_REG, fs_reg
+#define gs OP_REG, gs_reg
+
+int OP_E(), OP_indirE(), OP_G(), OP_I(), OP_sI(), OP_REG();
+int OP_J(), OP_SEG();
+int OP_DIR(), OP_OFF(), OP_DSSI(), OP_ESDI(), OP_ONE(), OP_C();
+int OP_D(), OP_T(), OP_rm();
+
+
+#define b_mode 1
+#define v_mode 2
+#define w_mode 3
+#define d_mode 4
+
+#define es_reg 100
+#define cs_reg 101
+#define ss_reg 102
+#define ds_reg 103
+#define fs_reg 104
+#define gs_reg 105
+#define eAX_reg 107
+#define eCX_reg 108
+#define eDX_reg 109
+#define eBX_reg 110
+#define eSP_reg 111
+#define eBP_reg 112
+#define eSI_reg 113
+#define eDI_reg 114
+
+#define lptr 115
+
+#define al_reg 116
+#define cl_reg 117
+#define dl_reg 118
+#define bl_reg 119
+#define ah_reg 120
+#define ch_reg 121
+#define dh_reg 122
+#define bh_reg 123
+
+#define ax_reg 124
+#define cx_reg 125
+#define dx_reg 126
+#define bx_reg 127
+#define sp_reg 128
+#define bp_reg 129
+#define si_reg 130
+#define di_reg 131
+
+#define indir_dx_reg 150
+
+#define GRP1b NULL, NULL, 0
+#define GRP1S NULL, NULL, 1
+#define GRP1Ss NULL, NULL, 2
+#define GRP2b NULL, NULL, 3
+#define GRP2S NULL, NULL, 4
+#define GRP2b_one NULL, NULL, 5
+#define GRP2S_one NULL, NULL, 6
+#define GRP2b_cl NULL, NULL, 7
+#define GRP2S_cl NULL, NULL, 8
+#define GRP3b NULL, NULL, 9
+#define GRP3S NULL, NULL, 10
+#define GRP4 NULL, NULL, 11
+#define GRP5 NULL, NULL, 12
+#define GRP6 NULL, NULL, 13
+#define GRP7 NULL, NULL, 14
+#define GRP8 NULL, NULL, 15
+
+#define FLOATCODE 50
+#define FLOAT NULL, NULL, FLOATCODE
+
+struct dis386 {
+ char *name;
+ int (*op1)();
+ int bytemode1;
+ int (*op2)();
+ int bytemode2;
+ int (*op3)();
+ int bytemode3;
+};
+
+struct dis386 dis386[] = {
+ /* 00 */
+ { "addb", Eb, Gb },
+ { "addS", Ev, Gv },
+ { "addb", Gb, Eb },
+ { "addS", Gv, Ev },
+ { "addb", AL, Ib },
+ { "addS", eAX, Iv },
+ { "pushl", es },
+ { "popl", es },
+ /* 08 */
+ { "orb", Eb, Gb },
+ { "orS", Ev, Gv },
+ { "orb", Gb, Eb },
+ { "orS", Gv, Ev },
+ { "orb", AL, Ib },
+ { "orS", eAX, Iv },
+ { "pushl", cs },
+ { "(bad)" }, /* 0x0f extended opcode escape */
+ /* 10 */
+ { "adcb", Eb, Gb },
+ { "adcS", Ev, Gv },
+ { "adcb", Gb, Eb },
+ { "adcS", Gv, Ev },
+ { "adcb", AL, Ib },
+ { "adcS", eAX, Iv },
+ { "pushl", ss },
+ { "popl", ss },
+ /* 18 */
+ { "sbbb", Eb, Gb },
+ { "sbbS", Ev, Gv },
+ { "sbbb", Gb, Eb },
+ { "sbbS", Gv, Ev },
+ { "sbbb", AL, Ib },
+ { "sbbS", eAX, Iv },
+ { "pushl", ds },
+ { "popl", ds },
+ /* 20 */
+ { "andb", Eb, Gb },
+ { "andS", Ev, Gv },
+ { "andb", Gb, Eb },
+ { "andS", Gv, Ev },
+ { "andb", AL, Ib },
+ { "andS", eAX, Iv },
+ { "(bad)" }, /* SEG ES prefix */
+ { "daa" },
+ /* 28 */
+ { "subb", Eb, Gb },
+ { "subS", Ev, Gv },
+ { "subb", Gb, Eb },
+ { "subS", Gv, Ev },
+ { "subb", AL, Ib },
+ { "subS", eAX, Iv },
+ { "(bad)" }, /* SEG CS prefix */
+ { "das" },
+ /* 30 */
+ { "xorb", Eb, Gb },
+ { "xorS", Ev, Gv },
+ { "xorb", Gb, Eb },
+ { "xorS", Gv, Ev },
+ { "xorb", AL, Ib },
+ { "xorS", eAX, Iv },
+ { "(bad)" }, /* SEG SS prefix */
+ { "aaa" },
+ /* 38 */
+ { "cmpb", Eb, Gb },
+ { "cmpS", Ev, Gv },
+ { "cmpb", Gb, Eb },
+ { "cmpS", Gv, Ev },
+ { "cmpb", AL, Ib },
+ { "cmpS", eAX, Iv },
+ { "(bad)" }, /* SEG DS prefix */
+ { "aas" },
+ /* 40 */
+ { "incS", eAX },
+ { "incS", eCX },
+ { "incS", eDX },
+ { "incS", eBX },
+ { "incS", eSP },
+ { "incS", eBP },
+ { "incS", eSI },
+ { "incS", eDI },
+ /* 48 */
+ { "decS", eAX },
+ { "decS", eCX },
+ { "decS", eDX },
+ { "decS", eBX },
+ { "decS", eSP },
+ { "decS", eBP },
+ { "decS", eSI },
+ { "decS", eDI },
+ /* 50 */
+ { "pushS", eAX },
+ { "pushS", eCX },
+ { "pushS", eDX },
+ { "pushS", eBX },
+ { "pushS", eSP },
+ { "pushS", eBP },
+ { "pushS", eSI },
+ { "pushS", eDI },
+ /* 58 */
+ { "popS", eAX },
+ { "popS", eCX },
+ { "popS", eDX },
+ { "popS", eBX },
+ { "popS", eSP },
+ { "popS", eBP },
+ { "popS", eSI },
+ { "popS", eDI },
+ /* 60 */
+ { "pusha" },
+ { "popa" },
+ { "boundS", Gv, Ma },
+ { "arpl", Ew, Gw },
+ { "(bad)" }, /* seg fs */
+ { "(bad)" }, /* seg gs */
+ { "(bad)" }, /* op size prefix */
+ { "(bad)" }, /* adr size prefix */
+ /* 68 */
+ { "pushS", Iv }, /* 386 book wrong */
+ { "imulS", Gv, Ev, Iv },
+ { "pushl", sIb }, /* push of byte really pushes 4 bytes */
+ { "imulS", Gv, Ev, Ib },
+ { "insb", Yb, indirDX },
+ { "insS", Yv, indirDX },
+ { "outsb", indirDX, Xb },
+ { "outsS", indirDX, Xv },
+ /* 70 */
+ { "jo", Jb },
+ { "jno", Jb },
+ { "jb", Jb },
+ { "jae", Jb },
+ { "je", Jb },
+ { "jne", Jb },
+ { "jbe", Jb },
+ { "ja", Jb },
+ /* 78 */
+ { "js", Jb },
+ { "jns", Jb },
+ { "jp", Jb },
+ { "jnp", Jb },
+ { "jl", Jb },
+ { "jnl", Jb },
+ { "jle", Jb },
+ { "jg", Jb },
+ /* 80 */
+ { GRP1b },
+ { GRP1S },
+ { "(bad)" },
+ { GRP1Ss },
+ { "testb", Eb, Gb },
+ { "testS", Ev, Gv },
+ { "xchgb", Eb, Gb },
+ { "xchgS", Ev, Gv },
+ /* 88 */
+ { "movb", Eb, Gb },
+ { "movS", Ev, Gv },
+ { "movb", Gb, Eb },
+ { "movS", Gv, Ev },
+ { "movw", Ew, Sw },
+ { "leaS", Gv, M },
+ { "movw", Sw, Ew },
+ { "popS", Ev },
+ /* 90 */
+ { "nop" },
+ { "xchgS", eCX, eAX },
+ { "xchgS", eDX, eAX },
+ { "xchgS", eBX, eAX },
+ { "xchgS", eSP, eAX },
+ { "xchgS", eBP, eAX },
+ { "xchgS", eSI, eAX },
+ { "xchgS", eDI, eAX },
+ /* 98 */
+ { "cwtl" },
+ { "cltd" },
+ { "lcall", Ap },
+ { "(bad)" }, /* fwait */
+ { "pushf" },
+ { "popf" },
+ { "sahf" },
+ { "lahf" },
+ /* a0 */
+ { "movb", AL, Ob },
+ { "movS", eAX, Ov },
+ { "movb", Ob, AL },
+ { "movS", Ov, eAX },
+ { "movsb", Yb, Xb },
+ { "movsS", Yv, Xv },
+ { "cmpsb", Yb, Xb },
+ { "cmpsS", Yv, Xv },
+ /* a8 */
+ { "testb", AL, Ib },
+ { "testS", eAX, Iv },
+ { "stosb", Yb, AL },
+ { "stosS", Yv, eAX },
+ { "lodsb", AL, Xb },
+ { "lodsS", eAX, Xv },
+ { "scasb", AL, Xb },
+ { "scasS", eAX, Xv },
+ /* b0 */
+ { "movb", AL, Ib },
+ { "movb", CL, Ib },
+ { "movb", DL, Ib },
+ { "movb", BL, Ib },
+ { "movb", AH, Ib },
+ { "movb", CH, Ib },
+ { "movb", DH, Ib },
+ { "movb", BH, Ib },
+ /* b8 */
+ { "movS", eAX, Iv },
+ { "movS", eCX, Iv },
+ { "movS", eDX, Iv },
+ { "movS", eBX, Iv },
+ { "movS", eSP, Iv },
+ { "movS", eBP, Iv },
+ { "movS", eSI, Iv },
+ { "movS", eDI, Iv },
+ /* c0 */
+ { GRP2b },
+ { GRP2S },
+ { "ret", Iw },
+ { "ret" },
+ { "lesS", Gv, Mp },
+ { "ldsS", Gv, Mp },
+ { "movb", Eb, Ib },
+ { "movS", Ev, Iv },
+ /* c8 */
+ { "enter", Iw, Ib },
+ { "leave" },
+ { "lret", Iw },
+ { "lret" },
+ { "int3" },
+ { "int", Ib },
+ { "into" },
+ { "iret" },
+ /* d0 */
+ { GRP2b_one },
+ { GRP2S_one },
+ { GRP2b_cl },
+ { GRP2S_cl },
+ { "aam", Ib },
+ { "aad", Ib },
+ { "(bad)" },
+ { "xlat" },
+ /* d8 */
+ { FLOAT },
+ { FLOAT },
+ { FLOAT },
+ { FLOAT },
+ { FLOAT },
+ { FLOAT },
+ { FLOAT },
+ { FLOAT },
+ /* e0 */
+ { "loopne", Jb },
+ { "loope", Jb },
+ { "loop", Jb },
+ { "jCcxz", Jb },
+ { "inb", AL, Ib },
+ { "inS", eAX, Ib },
+ { "outb", Ib, AL },
+ { "outS", Ib, eAX },
+ /* e8 */
+ { "call", Av },
+ { "jmp", Jv },
+ { "ljmp", Ap },
+ { "jmp", Jb },
+ { "inb", AL, indirDX },
+ { "inS", eAX, indirDX },
+ { "outb", indirDX, AL },
+ { "outS", indirDX, eAX },
+ /* f0 */
+ { "(bad)" }, /* lock prefix */
+ { "(bad)" },
+ { "(bad)" }, /* repne */
+ { "(bad)" }, /* repz */
+ { "hlt" },
+ { "cmc" },
+ { GRP3b },
+ { GRP3S },
+ /* f8 */
+ { "clc" },
+ { "stc" },
+ { "cli" },
+ { "sti" },
+ { "cld" },
+ { "std" },
+ { GRP4 },
+ { GRP5 },
+};
+
+struct dis386 dis386_twobyte[] = {
+ /* 00 */
+ { GRP6 },
+ { GRP7 },
+ { "larS", Gv, Ew },
+ { "lslS", Gv, Ew },
+ { "(bad)" },
+ { "(bad)" },
+ { "clts" },
+ { "(bad)" },
+ /* 08 */
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ /* 10 */
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ /* 18 */
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ /* 20 */
+ /* these are all backward in appendix A of the intel book */
+ { "movl", Rd, Cd },
+ { "movl", Rd, Dd },
+ { "movl", Cd, Rd },
+ { "movl", Dd, Rd },
+ { "movl", Rd, Td },
+ { "(bad)" },
+ { "movl", Td, Rd },
+ { "(bad)" },
+ /* 28 */
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ /* 30 */
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ /* 38 */
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ /* 40 */
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ /* 48 */
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ /* 50 */
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ /* 58 */
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ /* 60 */
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ /* 68 */
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ /* 70 */
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ /* 78 */
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ /* 80 */
+ { "jo", Jv },
+ { "jno", Jv },
+ { "jb", Jv },
+ { "jae", Jv },
+ { "je", Jv },
+ { "jne", Jv },
+ { "jbe", Jv },
+ { "ja", Jv },
+ /* 88 */
+ { "js", Jv },
+ { "jns", Jv },
+ { "jp", Jv },
+ { "jnp", Jv },
+ { "jl", Jv },
+ { "jge", Jv },
+ { "jle", Jv },
+ { "jg", Jv },
+ /* 90 */
+ { "seto", Eb },
+ { "setno", Eb },
+ { "setb", Eb },
+ { "setae", Eb },
+ { "sete", Eb },
+ { "setne", Eb },
+ { "setbe", Eb },
+ { "seta", Eb },
+ /* 98 */
+ { "sets", Eb },
+ { "setns", Eb },
+ { "setp", Eb },
+ { "setnp", Eb },
+ { "setl", Eb },
+ { "setge", Eb },
+ { "setle", Eb },
+ { "setg", Eb },
+ /* a0 */
+ { "pushl", fs },
+ { "popl", fs },
+ { "(bad)" },
+ { "btS", Ev, Gv },
+ { "shldS", Ev, Gv, Ib },
+ { "shldS", Ev, Gv, CL },
+ { "(bad)" },
+ { "(bad)" },
+ /* a8 */
+ { "pushl", gs },
+ { "popl", gs },
+ { "(bad)" },
+ { "btsS", Ev, Gv },
+ { "shrdS", Ev, Gv, Ib },
+ { "shrdS", Ev, Gv, CL },
+ { "(bad)" },
+ { "imulS", Gv, Ev },
+ /* b0 */
+ { "(bad)" },
+ { "(bad)" },
+ { "lssS", Gv, Mp }, /* 386 lists only Mp */
+ { "btrS", Ev, Gv },
+ { "lfsS", Gv, Mp }, /* 386 lists only Mp */
+ { "lgsS", Gv, Mp }, /* 386 lists only Mp */
+ { "movzbS", Gv, Eb },
+ { "movzwS", Gv, Ew },
+ /* b8 */
+ { "(bad)" },
+ { "(bad)" },
+ { GRP8 },
+ { "btcS", Ev, Gv },
+ { "bsfS", Gv, Ev },
+ { "bsrS", Gv, Ev },
+ { "movsbS", Gv, Eb },
+ { "movswS", Gv, Ew },
+ /* c0 */
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ /* c8 */
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ /* d0 */
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ /* d8 */
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ /* e0 */
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ /* e8 */
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ /* f0 */
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ /* f8 */
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+ { "(bad)" }, { "(bad)" }, { "(bad)" }, { "(bad)" },
+};
+
+static char obuf[100];
+static char *obufp;
+static char scratchbuf[100];
+static unsigned char *start_codep;
+static unsigned char *codep;
+static int mod;
+static int rm;
+static int reg;
+
+static char *names32[]={
+ "%eax","%ecx","%edx","%ebx", "%esp","%ebp","%esi","%edi",
+};
+static char *names16[] = {
+ "%ax","%cx","%dx","%bx","%sp","%bp","%si","%di",
+};
+static char *names8[] = {
+ "%al","%cl","%dl","%bl","%ah","%ch","%dh","%bh",
+};
+static char *names_seg[] = {
+ "%es","%cs","%ss","%ds","%fs","%gs","%?","%?",
+};
+
+struct dis386 grps[][8] = {
+ /* GRP1b */
+ {
+ { "addb", Eb, Ib },
+ { "orb", Eb, Ib },
+ { "adcb", Eb, Ib },
+ { "sbbb", Eb, Ib },
+ { "andb", Eb, Ib },
+ { "subb", Eb, Ib },
+ { "xorb", Eb, Ib },
+ { "cmpb", Eb, Ib }
+ },
+ /* GRP1S */
+ {
+ { "addS", Ev, Iv },
+ { "orS", Ev, Iv },
+ { "adcS", Ev, Iv },
+ { "sbbS", Ev, Iv },
+ { "andS", Ev, Iv },
+ { "subS", Ev, Iv },
+ { "xorS", Ev, Iv },
+ { "cmpS", Ev, Iv }
+ },
+ /* GRP1Ss */
+ {
+ { "addS", Ev, sIb },
+ { "orS", Ev, sIb },
+ { "adcS", Ev, sIb },
+ { "sbbS", Ev, sIb },
+ { "andS", Ev, sIb },
+ { "subS", Ev, sIb },
+ { "xorS", Ev, sIb },
+ { "cmpS", Ev, sIb }
+ },
+ /* GRP2b */
+ {
+ { "rolb", Eb, Ib },
+ { "rorb", Eb, Ib },
+ { "rclb", Eb, Ib },
+ { "rcrb", Eb, Ib },
+ { "shlb", Eb, Ib },
+ { "shrb", Eb, Ib },
+ { "(bad)" },
+ { "sarb", Eb, Ib },
+ },
+ /* GRP2S */
+ {
+ { "rolS", Ev, Ib },
+ { "rorS", Ev, Ib },
+ { "rclS", Ev, Ib },
+ { "rcrS", Ev, Ib },
+ { "shlS", Ev, Ib },
+ { "shrS", Ev, Ib },
+ { "(bad)" },
+ { "sarS", Ev, Ib },
+ },
+ /* GRP2b_one */
+ {
+ { "rolb", Eb },
+ { "rorb", Eb },
+ { "rclb", Eb },
+ { "rcrb", Eb },
+ { "shlb", Eb },
+ { "shrb", Eb },
+ { "(bad)" },
+ { "sarb", Eb },
+ },
+ /* GRP2S_one */
+ {
+ { "rolS", Ev },
+ { "rorS", Ev },
+ { "rclS", Ev },
+ { "rcrS", Ev },
+ { "shlS", Ev },
+ { "shrS", Ev },
+ { "(bad)" },
+ { "sarS", Ev },
+ },
+ /* GRP2b_cl */
+ {
+ { "rolb", Eb, CL },
+ { "rorb", Eb, CL },
+ { "rclb", Eb, CL },
+ { "rcrb", Eb, CL },
+ { "shlb", Eb, CL },
+ { "shrb", Eb, CL },
+ { "(bad)" },
+ { "sarb", Eb, CL },
+ },
+ /* GRP2S_cl */
+ {
+ { "rolS", Ev, CL },
+ { "rorS", Ev, CL },
+ { "rclS", Ev, CL },
+ { "rcrS", Ev, CL },
+ { "shlS", Ev, CL },
+ { "shrS", Ev, CL },
+ { "(bad)" },
+ { "sarS", Ev, CL }
+ },
+ /* GRP3b */
+ {
+ { "testb", Eb, Ib },
+ { "(bad)", Eb },
+ { "notb", Eb },
+ { "negb", Eb },
+ { "mulb", AL, Eb },
+ { "imulb", AL, Eb },
+ { "divb", AL, Eb },
+ { "idivb", AL, Eb }
+ },
+ /* GRP3S */
+ {
+ { "testS", Ev, Iv },
+ { "(bad)" },
+ { "notS", Ev },
+ { "negS", Ev },
+ { "mulS", eAX, Ev },
+ { "imulS", eAX, Ev },
+ { "divS", eAX, Ev },
+ { "idivS", eAX, Ev },
+ },
+ /* GRP4 */
+ {
+ { "incb", Eb },
+ { "decb", Eb },
+ { "(bad)" },
+ { "(bad)" },
+ { "(bad)" },
+ { "(bad)" },
+ { "(bad)" },
+ { "(bad)" },
+ },
+ /* GRP5 */
+ {
+ { "incS", Ev },
+ { "decS", Ev },
+ { "call", indirEv },
+ { "lcall", indirEv },
+ { "jmp", indirEv },
+ { "ljmp", indirEv },
+ { "pushS", Ev },
+ { "(bad)" },
+ },
+ /* GRP6 */
+ {
+ { "sldt", Ew },
+ { "str", Ew },
+ { "lldt", Ew },
+ { "ltr", Ew },
+ { "verr", Ew },
+ { "verw", Ew },
+ { "(bad)" },
+ { "(bad)" }
+ },
+ /* GRP7 */
+ {
+ { "sgdt", Ew },
+ { "sidt", Ew },
+ { "lgdt", Ew },
+ { "lidt", Ew },
+ { "smsw", Ew },
+ { "(bad)" },
+ { "lmsw", Ew },
+ { "(bad)" },
+ },
+ /* GRP8 */
+ {
+ { "(bad)" },
+ { "(bad)" },
+ { "(bad)" },
+ { "(bad)" },
+ { "btS", Ev, Ib },
+ { "btsS", Ev, Ib },
+ { "btrS", Ev, Ib },
+ { "btcS", Ev, Ib },
+ }
+};
+
+#define PREFIX_REPZ 1
+#define PREFIX_REPNZ 2
+#define PREFIX_LOCK 4
+#define PREFIX_CS 8
+#define PREFIX_SS 0x10
+#define PREFIX_DS 0x20
+#define PREFIX_ES 0x40
+#define PREFIX_FS 0x80
+#define PREFIX_GS 0x100
+#define PREFIX_DATA 0x200
+#define PREFIX_ADR 0x400
+#define PREFIX_FWAIT 0x800
+
+static int prefixes;
+
+ckprefix ()
+{
+ prefixes = 0;
+ while (1)
+ {
+ switch (*codep)
+ {
+ case 0xf3:
+ prefixes |= PREFIX_REPZ;
+ break;
+ case 0xf2:
+ prefixes |= PREFIX_REPNZ;
+ break;
+ case 0xf0:
+ prefixes |= PREFIX_LOCK;
+ break;
+ case 0x2e:
+ prefixes |= PREFIX_CS;
+ break;
+ case 0x36:
+ prefixes |= PREFIX_SS;
+ break;
+ case 0x3e:
+ prefixes |= PREFIX_DS;
+ break;
+ case 0x26:
+ prefixes |= PREFIX_ES;
+ break;
+ case 0x64:
+ prefixes |= PREFIX_FS;
+ break;
+ case 0x65:
+ prefixes |= PREFIX_GS;
+ break;
+ case 0x66:
+ prefixes |= PREFIX_DATA;
+ break;
+ case 0x67:
+ prefixes |= PREFIX_ADR;
+ break;
+ case 0x9b:
+ prefixes |= PREFIX_FWAIT;
+ break;
+ default:
+ return;
+ }
+ codep++;
+ }
+}
+
+static int dflag;
+static int aflag;
+
+static char op1out[100], op2out[100], op3out[100];
+static int start_pc;
+
+/*
+ * disassemble the first instruction in 'inbuf'. You have to make
+ * sure all of the bytes of the instruction are filled in.
+ * On the 386's of 1988, the maximum length of an instruction is 15 bytes.
+ * (see topic "Redundant prefixes" in the "Differences from 8086"
+ * section of the "Virtual 8086 Mode" chapter.)
+ * 'pc' should be the address of this instruction, it will
+ * be used to print the target address if this is a relative jump or call
+ * 'outbuf' gets filled in with the disassembled instruction. it should
+ * be long enough to hold the longest disassembled instruction.
+ * 100 bytes is certainly enough, unless symbol printing is added later
+ * The function returns the length of this instruction in bytes.
+ */
+i386dis (pc, inbuf, outbuf)
+ int pc;
+ unsigned char *inbuf;
+ char *outbuf;
+{
+ struct dis386 *dp;
+ char *p;
+ int i;
+ int enter_instruction;
+ char *first, *second, *third;
+ int needcomma;
+
+ obuf[0] = 0;
+ op1out[0] = 0;
+ op2out[0] = 0;
+ op3out[0] = 0;
+
+ start_pc = pc;
+ start_codep = inbuf;
+ codep = inbuf;
+
+ ckprefix ();
+
+ if (*codep == 0xc8)
+ enter_instruction = 1;
+ else
+ enter_instruction = 0;
+
+ obufp = obuf;
+
+ if (prefixes & PREFIX_REPZ)
+ oappend ("repz ");
+ if (prefixes & PREFIX_REPNZ)
+ oappend ("repnz ");
+ if (prefixes & PREFIX_LOCK)
+ oappend ("lock ");
+
+ if ((prefixes & PREFIX_FWAIT)
+ && ((*codep < 0xd8) || (*codep > 0xdf)))
+ {
+ /* fwait not followed by floating point instruction */
+ oappend ("fwait");
+ strcpy (outbuf, obuf);
+ return (1);
+ }
+
+ /* these would be initialized to 0 if disassembling for 8086 or 286 */
+ dflag = 1;
+ aflag = 1;
+
+ if (prefixes & PREFIX_DATA)
+ dflag ^= 1;
+
+ if (prefixes & PREFIX_ADR)
+ {
+ aflag ^= 1;
+ oappend ("addr16 ");
+ }
+
+ if (*codep == 0x0f)
+ dp = &dis386_twobyte[*++codep];
+ else
+ dp = &dis386[*codep];
+ codep++;
+ mod = (*codep >> 6) & 3;
+ reg = (*codep >> 3) & 7;
+ rm = *codep & 7;
+
+ if (dp->name == NULL && dp->bytemode1 == FLOATCODE)
+ {
+ dofloat ();
+ }
+ else
+ {
+ if (dp->name == NULL)
+ dp = &grps[dp->bytemode1][reg];
+
+ putop (dp->name);
+
+ obufp = op1out;
+ if (dp->op1)
+ (*dp->op1)(dp->bytemode1);
+
+ obufp = op2out;
+ if (dp->op2)
+ (*dp->op2)(dp->bytemode2);
+
+ obufp = op3out;
+ if (dp->op3)
+ (*dp->op3)(dp->bytemode3);
+ }
+
+ obufp = obuf + strlen (obuf);
+ for (i = strlen (obuf); i < 6; i++)
+ oappend (" ");
+ oappend (" ");
+
+ /* enter instruction is printed with operands in the
+ * same order as the intel book; everything else
+ * is printed in reverse order
+ */
+ if (enter_instruction)
+ {
+ first = op1out;
+ second = op2out;
+ third = op3out;
+ }
+ else
+ {
+ first = op3out;
+ second = op2out;
+ third = op1out;
+ }
+ needcomma = 0;
+ if (*first)
+ {
+ oappend (first);
+ needcomma = 1;
+ }
+ if (*second)
+ {
+ if (needcomma)
+ oappend (",");
+ oappend (second);
+ needcomma = 1;
+ }
+ if (*third)
+ {
+ if (needcomma)
+ oappend (",");
+ oappend (third);
+ }
+ strcpy (outbuf, obuf);
+ return (codep - inbuf);
+}
+
+char *float_mem[] = {
+ /* d8 */
+ "fadds",
+ "fmuls",
+ "fcoms",
+ "fcomps",
+ "fsubs",
+ "fsubrs",
+ "fdivs",
+ "fdivrs",
+ /* d9 */
+ "flds",
+ "(bad)",
+ "fsts",
+ "fstps",
+ "fldenv",
+ "fldcw",
+ "fNstenv",
+ "fNstcw",
+ /* da */
+ "fiaddl",
+ "fimull",
+ "ficoml",
+ "ficompl",
+ "fisubl",
+ "fisubrl",
+ "fidivl",
+ "fidivrl",
+ /* db */
+ "fildl",
+ "(bad)",
+ "fistl",
+ "fistpl",
+ "(bad)",
+ "fldt",
+ "(bad)",
+ "fstpt",
+ /* dc */
+ "faddl",
+ "fmull",
+ "fcoml",
+ "fcompl",
+ "fsubl",
+ "fsubrl",
+ "fdivl",
+ "fdivrl",
+ /* dd */
+ "fldl",
+ "(bad)",
+ "fstl",
+ "fstpl",
+ "frstor",
+ "(bad)",
+ "fNsave",
+ "fNstsw",
+ /* de */
+ "fiadd",
+ "fimul",
+ "ficom",
+ "ficomp",
+ "fisub",
+ "fisubr",
+ "fidiv",
+ "fidivr",
+ /* df */
+ "fild",
+ "(bad)",
+ "fist",
+ "fistp",
+ "fbld",
+ "fildll",
+ "fbstp",
+ "fistpll",
+};
+
+#define ST OP_ST, 0
+#define STi OP_STi, 0
+int OP_ST(), OP_STi();
+
+#define FGRPd9_2 NULL, NULL, 0
+#define FGRPd9_4 NULL, NULL, 1
+#define FGRPd9_5 NULL, NULL, 2
+#define FGRPd9_6 NULL, NULL, 3
+#define FGRPd9_7 NULL, NULL, 4
+#define FGRPda_5 NULL, NULL, 5
+#define FGRPdb_4 NULL, NULL, 6
+#define FGRPde_3 NULL, NULL, 7
+#define FGRPdf_4 NULL, NULL, 8
+
+struct dis386 float_reg[][8] = {
+ /* d8 */
+ {
+ { "fadd", ST, STi },
+ { "fmul", ST, STi },
+ { "fcom", STi },
+ { "fcomp", STi },
+ { "fsub", ST, STi },
+ { "fsubr", ST, STi },
+ { "fdiv", ST, STi },
+ { "fdivr", ST, STi },
+ },
+ /* d9 */
+ {
+ { "fld", STi },
+ { "fxch", STi },
+ { FGRPd9_2 },
+ { "(bad)" },
+ { FGRPd9_4 },
+ { FGRPd9_5 },
+ { FGRPd9_6 },
+ { FGRPd9_7 },
+ },
+ /* da */
+ {
+ { "(bad)" },
+ { "(bad)" },
+ { "(bad)" },
+ { "(bad)" },
+ { "(bad)" },
+ { FGRPda_5 },
+ { "(bad)" },
+ { "(bad)" },
+ },
+ /* db */
+ {
+ { "(bad)" },
+ { "(bad)" },
+ { "(bad)" },
+ { "(bad)" },
+ { FGRPdb_4 },
+ { "(bad)" },
+ { "(bad)" },
+ { "(bad)" },
+ },
+ /* dc */
+ {
+ { "fadd", STi, ST },
+ { "fmul", STi, ST },
+ { "(bad)" },
+ { "(bad)" },
+ { "fsub", STi, ST },
+ { "fsubr", STi, ST },
+ { "fdiv", STi, ST },
+ { "fdivr", STi, ST },
+ },
+ /* dd */
+ {
+ { "ffree", STi },
+ { "(bad)" },
+ { "fst", STi },
+ { "fstp", STi },
+ { "fucom", STi },
+ { "fucomp", STi },
+ { "(bad)" },
+ { "(bad)" },
+ },
+ /* de */
+ {
+ { "faddp", STi, ST },
+ { "fmulp", STi, ST },
+ { "(bad)" },
+ { FGRPde_3 },
+ { "fsubp", STi, ST },
+ { "fsubrp", STi, ST },
+ { "fdivp", STi, ST },
+ { "fdivrp", STi, ST },
+ },
+ /* df */
+ {
+ { "(bad)" },
+ { "(bad)" },
+ { "(bad)" },
+ { "(bad)" },
+ { FGRPdf_4 },
+ { "(bad)" },
+ { "(bad)" },
+ { "(bad)" },
+ },
+};
+
+
+char *fgrps[][8] = {
+ /* d9_2 0 */
+ {
+ "fnop","(bad)","(bad)","(bad)","(bad)","(bad)","(bad)","(bad)",
+ },
+
+ /* d9_4 1 */
+ {
+ "fchs","fabs","(bad)","(bad)","ftst","fxam","(bad)","(bad)",
+ },
+
+ /* d9_5 2 */
+ {
+ "fld1","fldl2t","fldl2e","fldpi","fldlg2","fldln2","fldz","(bad)",
+ },
+
+ /* d9_6 3 */
+ {
+ "f2xm1","fyl2x","fptan","fpatan","fxtract","fprem1","fdecstp","fincstp",
+ },
+
+ /* d9_7 4 */
+ {
+ "fprem","fyl2xp1","fsqrt","fsincos","frndint","fscale","fsin","fcos",
+ },
+
+ /* da_5 5 */
+ {
+ "(bad)","fucompp","(bad)","(bad)","(bad)","(bad)","(bad)","(bad)",
+ },
+
+ /* db_4 6 */
+ {
+ "feni(287 only)","fdisi(287 only)","fNclex","fNinit",
+ "fNsetpm(287 only)","(bad)","(bad)","(bad)",
+ },
+
+ /* de_3 7 */
+ {
+ "(bad)","fcompp","(bad)","(bad)","(bad)","(bad)","(bad)","(bad)",
+ },
+
+ /* df_4 8 */
+ {
+ "fNstsw","(bad)","(bad)","(bad)","(bad)","(bad)","(bad)","(bad)",
+ },
+};
+
+
+dofloat ()
+{
+ struct dis386 *dp;
+ unsigned char floatop;
+
+ floatop = codep[-1];
+
+ if (mod != 3)
+ {
+ putop (float_mem[(floatop - 0xd8) * 8 + reg]);
+ obufp = op1out;
+ OP_E (v_mode);
+ return;
+ }
+ codep++;
+
+ dp = &float_reg[floatop - 0xd8][reg];
+ if (dp->name == NULL)
+ {
+ putop (fgrps[dp->bytemode1][rm]);
+ /* instruction fnstsw is only one with strange arg */
+ if (floatop == 0xdf && *codep == 0xe0)
+ strcpy (op1out, "%eax");
+ }
+ else
+ {
+ putop (dp->name);
+ obufp = op1out;
+ if (dp->op1)
+ (*dp->op1)(dp->bytemode1);
+ obufp = op2out;
+ if (dp->op2)
+ (*dp->op2)(dp->bytemode2);
+ }
+}
+
+/* ARGSUSED */
+OP_ST (ignore)
+{
+ oappend ("%st");
+}
+
+/* ARGSUSED */
+OP_STi (ignore)
+{
+ sprintf (scratchbuf, "%%st(%d)", rm);
+ oappend (scratchbuf);
+}
+
+
+/* capital letters in template are macros */
+putop (template)
+ char *template;
+{
+ char *p;
+
+ for (p = template; *p; p++)
+ {
+ switch (*p)
+ {
+ default:
+ *obufp++ = *p;
+ break;
+ case 'C': /* For jcxz/jecxz */
+ if (aflag == 0)
+ *obufp++ = 'e';
+ break;
+ case 'N':
+ if ((prefixes & PREFIX_FWAIT) == 0)
+ *obufp++ = 'n';
+ break;
+ case 'S':
+ /* operand size flag */
+ if (dflag)
+ *obufp++ = 'l';
+ else
+ *obufp++ = 'w';
+ break;
+ }
+ }
+ *obufp = 0;
+}
+
+oappend (s)
+char *s;
+{
+ strcpy (obufp, s);
+ obufp += strlen (s);
+ *obufp = 0;
+}
+
+append_prefix ()
+{
+ if (prefixes & PREFIX_CS)
+ oappend ("%cs:");
+ if (prefixes & PREFIX_DS)
+ oappend ("%ds:");
+ if (prefixes & PREFIX_SS)
+ oappend ("%ss:");
+ if (prefixes & PREFIX_ES)
+ oappend ("%es:");
+ if (prefixes & PREFIX_FS)
+ oappend ("%fs:");
+ if (prefixes & PREFIX_GS)
+ oappend ("%gs:");
+}
+
+OP_indirE (bytemode)
+{
+ oappend ("*");
+ OP_E (bytemode);
+}
+
+OP_E (bytemode)
+{
+ int disp;
+ int havesib;
+ int didoutput = 0;
+ int base;
+ int index;
+ int scale;
+ int havebase;
+
+ /* skip mod/rm byte */
+ codep++;
+
+ havesib = 0;
+ havebase = 0;
+ disp = 0;
+
+ if (mod == 3)
+ {
+ switch (bytemode)
+ {
+ case b_mode:
+ oappend (names8[rm]);
+ break;
+ case w_mode:
+ oappend (names16[rm]);
+ break;
+ case v_mode:
+ if (dflag)
+ oappend (names32[rm]);
+ else
+ oappend (names16[rm]);
+ break;
+ default:
+ oappend ("<bad dis table>");
+ break;
+ }
+ return;
+ }
+
+ append_prefix ();
+ if (rm == 4)
+ {
+ havesib = 1;
+ havebase = 1;
+ scale = (*codep >> 6) & 3;
+ index = (*codep >> 3) & 7;
+ base = *codep & 7;
+ codep++;
+ }
+
+ switch (mod)
+ {
+ case 0:
+ switch (rm)
+ {
+ case 4:
+ /* implies havesib and havebase */
+ if (base == 5) {
+ havebase = 0;
+ disp = get32 ();
+ }
+ break;
+ case 5:
+ disp = get32 ();
+ break;
+ default:
+ havebase = 1;
+ base = rm;
+ break;
+ }
+ break;
+ case 1:
+ disp = *(char *)codep++;
+ if (rm != 4)
+ {
+ havebase = 1;
+ base = rm;
+ }
+ break;
+ case 2:
+ disp = get32 ();
+ if (rm != 4)
+ {
+ havebase = 1;
+ base = rm;
+ }
+ break;
+ }
+
+ if (mod != 0 || rm == 5 || (havesib && base == 5))
+ {
+ sprintf (scratchbuf, "%d", disp);
+ oappend (scratchbuf);
+ }
+
+ if (havebase || havesib)
+ {
+ oappend ("(");
+ if (havebase)
+ oappend (names32[base]);
+ if (havesib)
+ {
+ if (index != 4)
+ {
+ sprintf (scratchbuf, ",%s", names32[index]);
+ oappend (scratchbuf);
+ }
+ sprintf (scratchbuf, ",%d", 1 << scale);
+ oappend (scratchbuf);
+ }
+ oappend (")");
+ }
+}
+
+OP_G (bytemode)
+{
+ switch (bytemode)
+ {
+ case b_mode:
+ oappend (names8[reg]);
+ break;
+ case w_mode:
+ oappend (names16[reg]);
+ break;
+ case d_mode:
+ oappend (names32[reg]);
+ break;
+ case v_mode:
+ if (dflag)
+ oappend (names32[reg]);
+ else
+ oappend (names16[reg]);
+ break;
+ default:
+ oappend ("<internal disassembler error>");
+ break;
+ }
+}
+
+get32 ()
+{
+ int x = 0;
+
+ x = *codep++ & 0xff;
+ x |= (*codep++ & 0xff) << 8;
+ x |= (*codep++ & 0xff) << 16;
+ x |= (*codep++ & 0xff) << 24;
+ return (x);
+}
+
+get16 ()
+{
+ int x = 0;
+
+ x = *codep++ & 0xff;
+ x |= (*codep++ & 0xff) << 8;
+ return (x);
+}
+
+OP_REG (code)
+{
+ char *s;
+
+ switch (code)
+ {
+ case indir_dx_reg: s = "(%dx)"; break;
+ case ax_reg: case cx_reg: case dx_reg: case bx_reg:
+ case sp_reg: case bp_reg: case si_reg: case di_reg:
+ s = names16[code - ax_reg];
+ break;
+ case es_reg: case ss_reg: case cs_reg:
+ case ds_reg: case fs_reg: case gs_reg:
+ s = names_seg[code - es_reg];
+ break;
+ case al_reg: case ah_reg: case cl_reg: case ch_reg:
+ case dl_reg: case dh_reg: case bl_reg: case bh_reg:
+ s = names8[code - al_reg];
+ break;
+ case eAX_reg: case eCX_reg: case eDX_reg: case eBX_reg:
+ case eSP_reg: case eBP_reg: case eSI_reg: case eDI_reg:
+ if (dflag)
+ s = names32[code - eAX_reg];
+ else
+ s = names16[code - eAX_reg];
+ break;
+ default:
+ s = "<internal disassembler error>";
+ break;
+ }
+ oappend (s);
+}
+
+OP_I (bytemode)
+{
+ int op;
+
+ switch (bytemode)
+ {
+ case b_mode:
+ op = *codep++ & 0xff;
+ break;
+ case v_mode:
+ if (dflag)
+ op = get32 ();
+ else
+ op = get16 ();
+ break;
+ case w_mode:
+ op = get16 ();
+ break;
+ default:
+ oappend ("<internal disassembler error>");
+ return;
+ }
+ sprintf (scratchbuf, "$0x%x", op);
+ oappend (scratchbuf);
+}
+
+OP_sI (bytemode)
+{
+ int op;
+
+ switch (bytemode)
+ {
+ case b_mode:
+ op = *(char *)codep++;
+ break;
+ case v_mode:
+ if (dflag)
+ op = get32 ();
+ else
+ op = (short)get16();
+ break;
+ case w_mode:
+ op = (short)get16 ();
+ break;
+ default:
+ oappend ("<internal disassembler error>");
+ return;
+ }
+ sprintf (scratchbuf, "$0x%x", op);
+ oappend (scratchbuf);
+}
+
+OP_J (bytemode)
+{
+ int disp;
+ int mask = -1;
+
+ switch (bytemode)
+ {
+ case b_mode:
+ disp = *(char *)codep++;
+ break;
+ case v_mode:
+ if (dflag)
+ disp = get32 ();
+ else
+ {
+ disp = (short)get16 ();
+ /* for some reason, a data16 prefix on a jump instruction
+ means that the pc is masked to 16 bits after the
+ displacement is added! */
+ mask = 0xffff;
+ }
+ break;
+ default:
+ oappend ("<internal disassembelr error>");
+ return;
+ }
+
+ sprintf (scratchbuf, "0x%x",
+ (start_pc + codep - start_codep + disp) & mask);
+ oappend (scratchbuf);
+}
+
+/* ARGSUSED */
+OP_SEG (dummy)
+{
+ static char *sreg[] = {
+ "%es","%cs","%ss","%ds","%fs","%gs","%?","%?",
+ };
+
+ oappend (sreg[reg]);
+}
+
+OP_DIR (size)
+{
+ int seg, offset;
+
+ switch (size)
+ {
+ case lptr:
+ if (aflag)
+ {
+ offset = get32 ();
+ seg = get16 ();
+ }
+ else
+ {
+ offset = get16 ();
+ seg = get16 ();
+ }
+ sprintf (scratchbuf, "0x%x,0x%x", seg, offset);
+ oappend (scratchbuf);
+ break;
+ case v_mode:
+ if (aflag)
+ offset = get32 ();
+ else
+ offset = (short)get16 ();
+
+ sprintf (scratchbuf, "0x%x",
+ start_pc + codep - start_codep + offset);
+ oappend (scratchbuf);
+ break;
+ default:
+ oappend ("<internal disassembler error>");
+ break;
+ }
+}
+
+/* ARGSUSED */
+OP_OFF (bytemode)
+{
+ int off;
+
+ if (aflag)
+ off = get32 ();
+ else
+ off = get16 ();
+
+ sprintf (scratchbuf, "0x%x", off);
+ oappend (scratchbuf);
+}
+
+/* ARGSUSED */
+OP_ESDI (dummy)
+{
+ oappend ("%es:(");
+ oappend (aflag ? "%edi" : "%di");
+ oappend (")");
+}
+
+/* ARGSUSED */
+OP_DSSI (dummy)
+{
+ oappend ("%ds:(");
+ oappend (aflag ? "%esi" : "%si");
+ oappend (")");
+}
+
+/* ARGSUSED */
+OP_ONE (dummy)
+{
+ oappend ("1");
+}
+
+/* ARGSUSED */
+OP_C (dummy)
+{
+ codep++; /* skip mod/rm */
+ sprintf (scratchbuf, "%%cr%d", reg);
+ oappend (scratchbuf);
+}
+
+/* ARGSUSED */
+OP_D (dummy)
+{
+ codep++; /* skip mod/rm */
+ sprintf (scratchbuf, "%%db%d", reg);
+ oappend (scratchbuf);
+}
+
+/* ARGSUSED */
+OP_T (dummy)
+{
+ codep++; /* skip mod/rm */
+ sprintf (scratchbuf, "%%tr%d", reg);
+ oappend (scratchbuf);
+}
+
+OP_rm (bytemode)
+{
+ switch (bytemode)
+ {
+ case d_mode:
+ oappend (names32[rm]);
+ break;
+ case w_mode:
+ oappend (names16[rm]);
+ break;
+ }
+}
+
+/* GDB interface */
+#include "defs.h"
+#include "param.h"
+#include "symtab.h"
+#include "frame.h"
+#include "inferior.h"
+
+#define MAXLEN 20
+print_insn (memaddr, stream)
+ CORE_ADDR memaddr;
+ FILE *stream;
+{
+ unsigned char buffer[MAXLEN];
+ /* should be expanded if disassembler prints symbol names */
+ char outbuf[100];
+ int n;
+
+ read_memory (memaddr, buffer, MAXLEN);
+
+ n = i386dis ((int)memaddr, buffer, outbuf);
+
+ fputs (outbuf, stream);
+
+ return (n);
+}
+
diff --git a/gnu/usr.bin/kgdb/config/i386bsd-dep.c b/gnu/usr.bin/kgdb/config/i386bsd-dep.c
new file mode 100644
index 000000000000..1bee8474b88e
--- /dev/null
+++ b/gnu/usr.bin/kgdb/config/i386bsd-dep.c
@@ -0,0 +1,1909 @@
+/*-
+ * This code is derived from software copyrighted by the Free Software
+ * Foundation.
+ *
+ * Modified 1991 by Donn Seeley at UUNET Technologies, Inc.
+ * Modified 1990 by Van Jacobson at Lawrence Berkeley Laboratory.
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)i386bsd-dep.c 6.10 (Berkeley) 6/26/91";
+#endif /* not lint */
+
+/* Low level interface to ptrace, for GDB when running on the Intel 386.
+ Copyright (C) 1988, 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include <stdio.h>
+#include "defs.h"
+#include "param.h"
+#include "frame.h"
+#include "inferior.h"
+#include "value.h"
+
+#include <sys/param.h>
+#include <sys/dir.h>
+#include <signal.h>
+#include <sys/ioctl.h>
+#include <fcntl.h>
+
+#include <a.out.h>
+
+#ifndef N_SET_MAGIC
+#define N_SET_MAGIC(exec, val) ((exec).a_magic = (val))
+#endif
+
+#include <sys/time.h>
+#include <sys/resource.h>
+#include <sys/uio.h>
+#define curpcb Xcurpcb /* XXX avoid leaking declaration from pcb.h */
+#include <sys/user.h>
+#undef curpcb
+#include <sys/file.h>
+#include <sys/stat.h>
+#include <sys/ptrace.h>
+
+#include <machine/reg.h>
+
+#ifdef KERNELDEBUG
+#ifndef NEWVM
+#include <sys/vmmac.h>
+#include <machine/pte.h>
+#else
+#include <sys/proc.h> /* for curproc */
+#endif
+#include <machine/vmparam.h>
+#include <machine/cpu.h>
+#include <ctype.h>
+#include "symtab.h" /* XXX */
+
+#undef vtophys /* XXX */
+
+extern int kernel_debugging;
+
+#define KERNOFF ((unsigned)KERNBASE)
+#ifndef NEWVM
+#define INKERNEL(x) ((x) >= KERNOFF && (x) < KERNOFF + ctob(slr))
+#define INUPAGE(x) \
+ ((x) >= KERNEL_U_ADDR && (x) < KERNEL_U_ADDR + NBPG)
+#else
+#define INKERNEL(x) ((x) >= KERNOFF)
+#endif
+
+#define PT_ADDR_ANY ((caddr_t) 1)
+
+/*
+ * Convert from sysmap pte index to system virtual address & vice-versa.
+ * (why aren't these in one of the system vm macro files???)
+ */
+#define smxtob(a) (sbr + (a) * sizeof(pte))
+#define btosmx(b) (((b) - sbr) / sizeof(pte))
+
+static int ok_to_cache();
+static int found_pcb;
+#ifdef NEWVM
+static CORE_ADDR curpcb;
+static CORE_ADDR kstack;
+#endif
+
+static void setregmap();
+
+extern int errno;
+
+/*
+ * This function simply calls ptrace with the given arguments. It exists so
+ * that all calls to ptrace are isolated in this machine-dependent file.
+ */
+int
+call_ptrace(request, pid, arg3, arg4)
+ int request;
+ pid_t pid;
+ caddr_t arg3;
+ int arg4;
+{
+ return(ptrace(request, pid, arg3, arg4));
+}
+
+kill_inferior()
+{
+ if (remote_debugging) {
+#ifdef KERNELDEBUG
+ if (kernel_debugging)
+ /*
+ * It's a very, very bad idea to go away leaving
+ * breakpoints in a remote kernel or to leave it
+ * stopped at a breakpoint.
+ */
+ clear_breakpoints();
+#endif
+ remote_close(0);
+ inferior_died();
+ } else if (inferior_pid != 0) {
+ ptrace(PT_KILL, inferior_pid, 0, 0);
+ wait(0);
+ inferior_died();
+ }
+}
+
+/*
+ * This is used when GDB is exiting. It gives less chance of error.
+ */
+kill_inferior_fast()
+{
+ if (remote_debugging) {
+#ifdef KERNELDEBUG
+ if (kernel_debugging)
+ clear_breakpoints();
+#endif
+ remote_close(0);
+ return;
+ }
+ if (inferior_pid == 0)
+ return;
+
+ ptrace(PT_KILL, inferior_pid, 0, 0);
+ wait(0);
+}
+
+/*
+ * Resume execution of the inferior process. If STEP is nonzero, single-step
+ * it. If SIGNAL is nonzero, give it that signal.
+ */
+void
+resume(step, signal)
+ int step;
+ int signal;
+{
+ errno = 0;
+ if (remote_debugging)
+ remote_resume(step, signal);
+ else {
+ ptrace(step ? PT_STEP : PT_CONTINUE, inferior_pid,
+ PT_ADDR_ANY, signal);
+ if (errno)
+ perror_with_name("ptrace");
+ }
+}
+
+#ifdef ATTACH_DETACH
+extern int attach_flag;
+
+/*
+ * Start debugging the process whose number is PID.
+ */
+attach(pid)
+ int pid;
+{
+ errno = 0;
+ ptrace(PT_ATTACH, pid, 0, 0);
+ if (errno)
+ perror_with_name("ptrace");
+ attach_flag = 1;
+ return pid;
+}
+
+/*
+ * Stop debugging the process whose number is PID and continue it
+ * with signal number SIGNAL. SIGNAL = 0 means just continue it.
+ */
+void
+detach(signal)
+ int signal;
+{
+ errno = 0;
+ ptrace(PT_DETACH, inferior_pid, PT_ADDR_ANY, signal);
+ if (errno)
+ perror_with_name("ptrace");
+ attach_flag = 0;
+}
+#endif /* ATTACH_DETACH */
+
+static unsigned int
+get_register_offset()
+{
+ unsigned int offset;
+ struct user u; /* XXX */
+ unsigned int flags = (char *) &u.u_pcb.pcb_flags - (char *) &u;
+
+ setregmap(ptrace(PT_READ_U, inferior_pid, (caddr_t)flags, 0));
+
+#ifdef NEWVM
+ offset = (char *) &u.u_kproc.kp_proc.p_md.md_regs - (char *) &u;
+ offset = ptrace(PT_READ_U, inferior_pid, (caddr_t)offset, 0) -
+ USRSTACK;
+#else
+ offset = (char *) &u.u_ar0 - (char *) &u;
+ offset = ptrace(PT_READ_U, inferior_pid, (caddr_t)offset, 0) -
+ KERNEL_U_ADDR;
+#endif
+
+ return offset;
+}
+
+void
+fetch_inferior_registers()
+{
+ register int regno;
+ register unsigned int regaddr;
+ char buf[MAX_REGISTER_RAW_SIZE];
+ register int i;
+ unsigned int offset;
+
+ if (remote_debugging) {
+ extern char registers[];
+
+ remote_fetch_registers(registers);
+ return;
+ }
+
+ offset = get_register_offset();
+
+ for (regno = 0; regno < NUM_REGS; regno++) {
+ regaddr = register_addr(regno, offset);
+ for (i = 0; i < REGISTER_RAW_SIZE(regno); i += sizeof(int)) {
+ *(int *)&buf[i] = ptrace(PT_READ_U, inferior_pid,
+ (caddr_t)regaddr, 0);
+ regaddr += sizeof(int);
+ }
+ supply_register(regno, buf);
+ }
+}
+
+/*
+ * Store our register values back into the inferior. If REGNO is -1, do this
+ * for all registers. Otherwise, REGNO specifies which register (so we can
+ * save time).
+ */
+store_inferior_registers(regno)
+ int regno;
+{
+ register unsigned int regaddr;
+ char buf[80];
+ extern char registers[];
+ register int i;
+ unsigned int offset;
+
+ if (remote_debugging) {
+ extern char registers[];
+
+ remote_store_registers(registers);
+ return;
+ }
+
+ offset = get_register_offset();
+
+ if (regno >= 0) {
+ regaddr = register_addr(regno, offset);
+ for (i = 0; i < REGISTER_RAW_SIZE(regno); i += sizeof(int)) {
+ errno = 0;
+ ptrace(PT_WRITE_U, inferior_pid, (caddr_t)regaddr,
+ *(int *) &registers[REGISTER_BYTE(regno) + i]);
+ if (errno != 0) {
+ sprintf(buf, "writing register number %d(%d)",
+ regno, i);
+ perror_with_name(buf);
+ }
+ regaddr += sizeof(int);
+ }
+ } else
+ for (regno = 0; regno < NUM_REGS; regno++) {
+ regaddr = register_addr(regno, offset);
+ for (i = 0; i < REGISTER_RAW_SIZE(regno);
+ i += sizeof(int)) {
+ errno = 0;
+ ptrace(PT_WRITE_U, inferior_pid,
+ (caddr_t)regaddr,
+ *(int *) &registers[REGISTER_BYTE(regno) + i]);
+ if (errno != 0) {
+ sprintf(buf,
+ "writing register number %d(%d)",
+ regno, i);
+ perror_with_name(buf);
+ }
+ regaddr += sizeof(int);
+ }
+ }
+}
+
+/*
+ * Copy LEN bytes from inferior's memory starting at MEMADDR to debugger
+ * memory starting at MYADDR. On failure (cannot read from inferior, usually
+ * because address is out of bounds) returns the value of errno.
+ */
+int
+read_inferior_memory(memaddr, myaddr, len)
+ CORE_ADDR memaddr;
+ char *myaddr;
+ int len;
+{
+ register int i;
+ /* Round starting address down to longword boundary. */
+ register CORE_ADDR addr = memaddr & -sizeof(int);
+ /* Round ending address up; get number of longwords that makes. */
+ register int count = (((memaddr + len) - addr) + sizeof(int) - 1) /
+ sizeof(int);
+ /* Allocate buffer of that many longwords. */
+ register int *buffer = (int *) alloca(count * sizeof(int));
+ extern int errno;
+
+ if (remote_debugging)
+ return (remote_read_inferior_memory(memaddr, myaddr, len));
+
+ /* Read all the longwords */
+ errno = 0;
+ for (i = 0; i < count && errno == 0; i++, addr += sizeof(int))
+ buffer[i] = ptrace(PT_READ_I, inferior_pid, (caddr_t)addr, 0);
+
+ /* Copy appropriate bytes out of the buffer. */
+ bcopy((char *) buffer + (memaddr & (sizeof(int) - 1)), myaddr, len);
+ return(errno);
+}
+
+/*
+ * Copy LEN bytes of data from debugger memory at MYADDR to inferior's memory
+ * at MEMADDR. On failure (cannot write the inferior) returns the value of
+ * errno.
+ */
+
+int
+write_inferior_memory(memaddr, myaddr, len)
+ CORE_ADDR memaddr;
+ char *myaddr;
+ int len;
+{
+ register int i;
+ /* Round starting address down to longword boundary. */
+ register CORE_ADDR addr = memaddr & -sizeof(int);
+ /* Round ending address up; get number of longwords that makes. */
+ register int count = (((memaddr + len) - addr) + sizeof(int) - 1) /
+ sizeof(int);
+ /* Allocate buffer of that many longwords. */
+ register int *buffer = (int *) alloca(count * sizeof(int));
+ extern int errno;
+
+ /*
+ * Fill start and end extra bytes of buffer with existing memory
+ * data.
+ */
+ if (remote_debugging)
+ return (remote_write_inferior_memory(memaddr, myaddr, len));
+
+ /*
+ * Fill start and end extra bytes of buffer with existing memory
+ * data.
+ */
+ buffer[0] = ptrace(PT_READ_I, inferior_pid, (caddr_t)addr, 0);
+
+ if (count > 1)
+ buffer[count - 1] = ptrace(PT_READ_I, inferior_pid,
+ (caddr_t)addr + (count - 1) * sizeof(int), 0);
+
+ /* Copy data to be written over corresponding part of buffer */
+
+ bcopy(myaddr, (char *) buffer + (memaddr & (sizeof(int) - 1)), len);
+
+ /* Write the entire buffer. */
+
+ errno = 0;
+ for (i = 0; i < count && errno == 0; i++, addr += sizeof(int))
+ ptrace(PT_WRITE_I, inferior_pid, (caddr_t)addr, buffer[i]);
+
+ return(errno);
+}
+
+
+/*
+ * Work with core dump and executable files, for GDB.
+ * This code would be in core.c if it weren't machine-dependent.
+ */
+
+#ifndef N_TXTADDR
+#define N_TXTADDR(hdr) 0
+#endif /* no N_TXTADDR */
+
+#ifndef N_DATADDR
+#define N_DATADDR(hdr) hdr.a_text
+#endif /* no N_DATADDR */
+
+/*
+ * Make COFF and non-COFF names for things a little more compatible to reduce
+ * conditionals later.
+ */
+
+#ifndef AOUTHDR
+#define AOUTHDR struct exec
+#endif
+
+
+/* Hook for `exec_file_command' command to call. */
+
+extern void (*exec_file_display_hook) ();
+
+/* File names of core file and executable file. */
+
+extern char *corefile;
+extern char *execfile;
+
+/* Descriptors on which core file and executable file are open.
+ Note that the execchan is closed when an inferior is created
+ and reopened if the inferior dies or is killed. */
+
+extern int corechan;
+extern int execchan;
+
+/* Last modification time of executable file.
+ Also used in source.c to compare against mtime of a source file. */
+
+extern int exec_mtime;
+
+/* Virtual addresses of bounds of the two areas of memory in the core file. */
+
+extern CORE_ADDR data_start;
+extern CORE_ADDR data_end;
+extern CORE_ADDR stack_start;
+extern CORE_ADDR stack_end;
+
+/* Virtual addresses of bounds of two areas of memory in the exec file.
+ Note that the data area in the exec file is used only when there is no core file. */
+
+extern CORE_ADDR text_start;
+extern CORE_ADDR text_end;
+
+extern CORE_ADDR exec_data_start;
+extern CORE_ADDR exec_data_end;
+
+/* Address in executable file of start of text area data. */
+
+extern int text_offset;
+
+/* Address in executable file of start of data area data. */
+
+extern int exec_data_offset;
+
+/* Address in core file of start of data area data. */
+
+extern int data_offset;
+
+/* Address in core file of start of stack area data. */
+
+extern int stack_offset;
+
+/* a.out header saved in core file. */
+
+extern AOUTHDR core_aouthdr;
+
+/* a.out header of exec file. */
+
+extern AOUTHDR exec_aouthdr;
+
+extern void validate_files ();
+
+extern int (*core_file_hook)();
+
+#ifdef KERNELDEBUG
+/*
+ * Kernel debugging routines.
+ */
+
+#define IOTOP 0x100000 /* XXX should get this from include file */
+#define IOBASE 0xa0000 /* XXX should get this from include file */
+
+static CORE_ADDR file_offset;
+static CORE_ADDR lowram;
+static CORE_ADDR sbr;
+static CORE_ADDR slr;
+static struct pcb pcb;
+
+static CORE_ADDR
+ksym_lookup(name)
+ char *name;
+{
+ struct symbol *sym;
+ int i;
+
+ if ((i = lookup_misc_func(name)) < 0)
+ error("kernel symbol `%s' not found.", name);
+
+ return (misc_function_vector[i].address);
+}
+
+/*
+ * return true if 'len' bytes starting at 'addr' can be read out as
+ * longwords and/or locally cached (this is mostly for memory mapped
+ * i/o register access when debugging remote kernels).
+ *
+ * XXX the HP code does this differently with NEWVM
+ */
+static int
+ok_to_cache(addr, len)
+{
+ static CORE_ADDR atdevbase;
+
+ if (! atdevbase)
+ atdevbase = ksym_lookup("atdevbase");
+
+ if (addr >= atdevbase && addr < atdevbase + (IOTOP - IOBASE))
+ return (0);
+
+ return (1);
+}
+
+static
+physrd(addr, dat, len)
+ u_int addr;
+ char *dat;
+{
+ if (lseek(corechan, addr - file_offset, L_SET) == -1)
+ return (-1);
+ if (read(corechan, dat, len) != len)
+ return (-1);
+
+ return (0);
+}
+
+/*
+ * When looking at kernel data space through /dev/mem or with a core file, do
+ * virtual memory mapping.
+ */
+#ifdef NEWVM
+static CORE_ADDR
+vtophys(addr)
+ CORE_ADDR addr;
+{
+ CORE_ADDR v;
+ struct pte pte;
+ static CORE_ADDR PTD = -1;
+ CORE_ADDR current_ptd;
+
+ /*
+ * If we're looking at the kernel stack,
+ * munge the address to refer to the user space mapping instead;
+ * that way we get the requested process's kstack, not the running one.
+ */
+ if (addr >= kstack && addr < kstack + ctob(UPAGES))
+ addr = (addr - kstack) + curpcb;
+
+ /*
+ * We may no longer have a linear system page table...
+ *
+ * Here's the scoop. IdlePTD contains the physical address
+ * of a page table directory that always maps the kernel.
+ * IdlePTD is in memory that is mapped 1-to-1, so we can
+ * find it easily given its 'virtual' address from ksym_lookup().
+ * For hysterical reasons, the value of IdlePTD is stored in sbr.
+ *
+ * To look up a kernel address, we first convert it to a 1st-level
+ * address and look it up in IdlePTD. This gives us the physical
+ * address of a page table page; we extract the 2nd-level part of
+ * VA and read the 2nd-level pte. Finally, we add the offset part
+ * of the VA into the physical address from the pte and return it.
+ *
+ * User addresses are a little more complicated. If we don't have
+ * a current PCB from read_pcb(), we use PTD, which is the (fixed)
+ * virtual address of the current ptd. Since it's NOT in 1-to-1
+ * kernel space, we must look it up using IdlePTD. If we do have
+ * a pcb, we get the ptd from pcb_ptd.
+ */
+
+ if (INKERNEL(addr))
+ current_ptd = sbr;
+ else if (found_pcb == 0) {
+ if (PTD == -1)
+ PTD = vtophys(ksym_lookup("PTD"));
+ current_ptd = PTD;
+ } else
+ current_ptd = pcb.pcb_ptd;
+
+ /*
+ * Read the first-level page table (ptd).
+ */
+ v = current_ptd + ((unsigned)addr >> PD_SHIFT) * sizeof pte;
+ if (physrd(v, (char *)&pte, sizeof pte) || pte.pg_v == 0)
+ return (~0);
+
+ /*
+ * Read the second-level page table.
+ */
+ v = i386_ptob(pte.pg_pfnum) + ((addr&PT_MASK) >> PG_SHIFT) * sizeof pte;
+ if (physrd(v, (char *) &pte, sizeof(pte)) || pte.pg_v == 0)
+ return (~0);
+
+ addr = i386_ptob(pte.pg_pfnum) + (addr & PGOFSET);
+#if 0
+ printf("vtophys(%x) -> %x\n", oldaddr, addr);
+#endif
+ return (addr);
+}
+#else
+static CORE_ADDR
+vtophys(addr)
+ CORE_ADDR addr;
+{
+ CORE_ADDR v;
+ struct pte pte;
+ CORE_ADDR oldaddr = addr;
+
+ if (found_pcb == 0 && INUPAGE(addr)) {
+ static CORE_ADDR pSwtchmap;
+
+ if (pSwtchmap == 0)
+ pSwtchmap = vtophys(ksym_lookup("Swtchmap"));
+ addr = pSwtchmap;
+ } else if (INKERNEL(addr)) {
+ /*
+ * In system space get system pte. If valid or reclaimable
+ * then physical address is combination of its page number
+ * and the page offset of the original address.
+ */
+ addr = smxtob(btop(addr - KERNOFF)) - KERNOFF;
+ } else {
+ v = btop(addr);
+ if (v < pcb.pcb_p0lr)
+ addr = (CORE_ADDR) pcb.pcb_p0br +
+ v * sizeof (struct pte);
+ else if (v >= pcb.pcb_p1lr && v < P1PAGES)
+ addr = (CORE_ADDR) pcb.pcb_p0br +
+ ((pcb.pcb_szpt * NPTEPG - HIGHPAGES) -
+ (BTOPUSRSTACK - v)) * sizeof (struct pte);
+ else
+ return (~0);
+
+ /*
+ * For p0/p1 address, user-level page table should be in
+ * kernel vm. Do second-level indirect by recursing.
+ */
+ if (!INKERNEL(addr))
+ return (~0);
+
+ addr = vtophys(addr);
+ }
+ /*
+ * Addr is now address of the pte of the page we are interested in;
+ * get the pte and paste up the physical address.
+ */
+ if (physrd(addr, (char *) &pte, sizeof(pte)))
+ return (~0);
+
+ if (pte.pg_v == 0 && (pte.pg_fod || pte.pg_pfnum == 0))
+ return (~0);
+
+ addr = (CORE_ADDR)ptob(pte.pg_pfnum) + (oldaddr & PGOFSET);
+#if 0
+ printf("vtophys(%x) -> %x\n", oldaddr, addr);
+#endif
+ return (addr);
+}
+
+#endif
+
+static
+kvread(addr)
+ CORE_ADDR addr;
+{
+ CORE_ADDR paddr = vtophys(addr);
+
+ if (paddr != ~0)
+ if (physrd(paddr, (char *)&addr, sizeof(addr)) == 0);
+ return (addr);
+
+ return (~0);
+}
+
+static void
+read_pcb(uaddr)
+ u_int uaddr;
+{
+ int i;
+ int *pcb_regs = (int *)&pcb;
+
+#ifdef NEWVM
+ if (physrd(uaddr, (char *)&pcb, sizeof pcb))
+ error("cannot read pcb at %x\n", uaddr);
+ printf("current pcb at %x\n", uaddr);
+#else
+ if (physrd(uaddr, (char *)&pcb, sizeof pcb))
+ error("cannot read pcb at %x\n", uaddr);
+ printf("p0br %x p0lr %x p1br %x p1lr %x\n",
+ pcb.pcb_p0br, pcb.pcb_p0lr, pcb.pcb_p1br, pcb.pcb_p1lr);
+#endif
+
+ /*
+ * get the register values out of the sys pcb and
+ * store them where `read_register' will find them.
+ */
+ for (i = 0; i < 8; ++i)
+ supply_register(i, &pcb_regs[i+10]);
+ supply_register(8, &pcb_regs[8]); /* eip */
+ supply_register(9, &pcb_regs[9]); /* eflags */
+ for (i = 10; i < 13; ++i) /* cs, ss, ds */
+ supply_register(i, &pcb_regs[i+9]);
+ supply_register(13, &pcb_regs[18]); /* es */
+ for (i = 14; i < 16; ++i) /* fs, gs */
+ supply_register(i, &pcb_regs[i+8]);
+
+ /* XXX 80387 registers? */
+}
+
+static void
+setup_kernel_debugging()
+{
+ struct stat stb;
+ int devmem = 0;
+ CORE_ADDR addr;
+
+ fstat(corechan, &stb);
+ if ((stb.st_mode & S_IFMT) == S_IFCHR && stb.st_rdev == makedev(2, 0))
+ devmem = 1;
+
+#ifdef NEWVM
+ physrd(ksym_lookup("IdlePTD") - KERNOFF, &sbr, sizeof sbr);
+ slr = 2 * NPTEPG; /* XXX temporary */
+ printf("IdlePTD %x\n", sbr);
+ curpcb = ksym_lookup("curpcb") - KERNOFF;
+ physrd(curpcb, &curpcb, sizeof curpcb);
+ kstack = ksym_lookup("kstack");
+#else
+ sbr = ksym_lookup("Sysmap");
+ slr = ksym_lookup("Syssize");
+ printf("sbr %x slr %x\n", sbr, slr);
+#endif
+
+ /*
+ * pcb where "panic" saved registers in first thing in current
+ * u area.
+ */
+#ifndef NEWVM
+ read_pcb(vtophys(ksym_lookup("u")));
+#endif
+ found_pcb = 1;
+ if (!devmem) {
+ /* find stack frame */
+ CORE_ADDR panicstr;
+ char buf[256];
+ register char *cp;
+
+ panicstr = kvread(ksym_lookup("panicstr"));
+ if (panicstr == ~0)
+ return;
+ (void) kernel_core_file_hook(panicstr, buf, sizeof(buf));
+ for (cp = buf; cp < &buf[sizeof(buf)] && *cp; cp++)
+ if (!isascii(*cp) || (!isprint(*cp) && !isspace(*cp)))
+ *cp = '?';
+ if (*cp)
+ *cp = '\0';
+ printf("panic: %s\n", buf);
+ read_pcb(ksym_lookup("dumppcb") - KERNOFF);
+ }
+#ifdef NEWVM
+ else
+ read_pcb(vtophys(kstack));
+#endif
+
+ stack_start = USRSTACK;
+ stack_end = USRSTACK + ctob(UPAGES);
+}
+
+set_paddr_command(arg)
+ char *arg;
+{
+ u_int uaddr;
+
+ if (!arg)
+ error_no_arg("ps-style address for new current process");
+ if (!kernel_debugging)
+ error("not debugging kernel");
+ uaddr = (u_int) parse_and_eval_address(arg);
+#ifndef NEWVM
+ read_pcb(ctob(uaddr));
+#else
+ /* p_addr is now a pcb virtual address */
+ read_pcb(vtophys(uaddr));
+ curpcb = uaddr;
+#endif
+
+ flush_cached_frames();
+ set_current_frame(create_new_frame(read_register(FP_REGNUM), read_pc()));
+ select_frame(get_current_frame(), 0);
+}
+
+/*
+ * read len bytes from kernel virtual address 'addr' into local
+ * buffer 'buf'. Return 0 if read ok, 1 otherwise. On read
+ * errors, portion of buffer not read is zeroed.
+ */
+kernel_core_file_hook(addr, buf, len)
+ CORE_ADDR addr;
+ char *buf;
+ int len;
+{
+ int i;
+ CORE_ADDR paddr;
+
+ while (len > 0) {
+ paddr = vtophys(addr);
+ if (paddr == ~0) {
+ bzero(buf, len);
+ return (1);
+ }
+ /* we can't read across a page boundary */
+ i = min(len, NBPG - (addr & PGOFSET));
+ if (physrd(paddr, buf, i)) {
+ bzero(buf, len);
+ return (1);
+ }
+ buf += i;
+ addr += i;
+ len -= i;
+ }
+ return (0);
+}
+#endif
+
+core_file_command(filename, from_tty)
+ char *filename;
+ int from_tty;
+{
+ int val;
+ extern char registers[];
+#ifdef KERNELDEBUG
+ struct stat stb;
+#endif
+
+ /*
+ * Discard all vestiges of any previous core file and mark data and
+ * stack spaces as empty.
+ */
+ if (corefile)
+ free(corefile);
+ corefile = 0;
+ core_file_hook = 0;
+
+ if (corechan >= 0)
+ close(corechan);
+ corechan = -1;
+
+ /* Now, if a new core file was specified, open it and digest it. */
+
+ if (filename == 0) {
+ if (from_tty)
+ printf("No core file now.\n");
+ return;
+ }
+ filename = tilde_expand(filename);
+ make_cleanup(free, filename);
+ if (have_inferior_p())
+ error("To look at a core file, you must kill the inferior with \"kill\".");
+ corechan = open(filename, O_RDONLY, 0);
+ if (corechan < 0)
+ perror_with_name(filename);
+
+#ifdef KERNELDEBUG
+ fstat(corechan, &stb);
+
+ if (kernel_debugging) {
+ setup_kernel_debugging();
+ core_file_hook = kernel_core_file_hook;
+ } else if ((stb.st_mode & S_IFMT) == S_IFCHR &&
+ stb.st_rdev == makedev(2, 1)) {
+ /* looking at /dev/kmem */
+ data_offset = data_start = KERNOFF;
+ data_end = ~0; /* XXX */
+ stack_end = stack_start = data_end;
+ } else
+#endif
+ {
+ /*
+ * 4.2-style core dump file.
+ */
+ struct user u;
+ unsigned int reg_offset;
+
+ val = myread(corechan, &u, sizeof u);
+ if (val < 0)
+ perror_with_name("Not a core file: reading upage");
+ if (val != sizeof u)
+ error("Not a core file: could only read %d bytes", val);
+
+ /*
+ * We are depending on exec_file_command having been
+ * called previously to set exec_data_start. Since
+ * the executable and the core file share the same
+ * text segment, the address of the data segment will
+ * be the same in both.
+ */
+ data_start = exec_data_start;
+
+#ifndef NEWVM
+ data_end = data_start + NBPG * u.u_dsize;
+ stack_start = stack_end - NBPG * u.u_ssize;
+ data_offset = NBPG * UPAGES;
+ stack_offset = NBPG * (UPAGES + u.u_dsize);
+
+ /*
+ * Some machines put an absolute address in here and
+ * some put the offset in the upage of the regs.
+ */
+ reg_offset = (int) u.u_ar0 - KERNEL_U_ADDR;
+#else
+ /*
+ * 386bsd does not put the stack end in a fixed virtual
+ * location, so we get the beginning and depend on the
+ * MAXSSIZ constant for the full length of the stack to
+ * find the end.
+ * (See code & comments in kern_execve.c, search for USRSTACK)
+ */
+ stack_end = (CORE_ADDR) u.u_kproc.kp_eproc.e_vm.vm_maxsaddr
+ + MAXSSIZ;
+
+ data_end = data_start +
+ NBPG * u.u_kproc.kp_eproc.e_vm.vm_dsize;
+ stack_start = stack_end -
+ NBPG * u.u_kproc.kp_eproc.e_vm.vm_ssize;
+ data_offset = NBPG * UPAGES;
+ stack_offset = NBPG *
+ (UPAGES + u.u_kproc.kp_eproc.e_vm.vm_dsize);
+
+ reg_offset = (int) u.u_kproc.kp_proc.p_md.md_regs - USRSTACK;
+#endif
+
+ setregmap(u.u_pcb.pcb_flags);
+
+ /*
+ * I don't know where to find this info. So, for now,
+ * mark it as not available.
+ */
+ /* N_SET_MAGIC (core_aouthdr, 0); */
+ bzero ((char *) &core_aouthdr, sizeof core_aouthdr);
+
+ /*
+ * Read the register values out of the core file and
+ * store them where `read_register' will find them.
+ */
+ {
+ register int regno;
+
+ for (regno = 0; regno < NUM_REGS; regno++) {
+ char buf[MAX_REGISTER_RAW_SIZE];
+
+ val = lseek(corechan, register_addr(regno, reg_offset), 0);
+ if (val < 0
+ || (val = myread(corechan, buf, sizeof buf)) < 0) {
+ char *buffer = (char *) alloca(strlen(reg_names[regno]) + 30);
+ strcpy(buffer, "Reading register ");
+ strcat(buffer, reg_names[regno]);
+ perror_with_name(buffer);
+ }
+ supply_register(regno, buf);
+ }
+ }
+ }
+#endif
+ if (filename[0] == '/')
+ corefile = savestring(filename, strlen(filename));
+ else
+ corefile = concat(current_directory, "/", filename);
+
+ set_current_frame(create_new_frame(read_register(FP_REGNUM),
+ read_pc()));
+ select_frame(get_current_frame(), 0);
+ validate_files();
+}
+
+exec_file_command(filename, from_tty)
+ char *filename;
+ int from_tty;
+{
+ int val;
+
+ /*
+ * Eliminate all traces of old exec file. Mark text segment as empty.
+ */
+
+ if (execfile)
+ free(execfile);
+ execfile = 0;
+ data_start = 0;
+ data_end = 0;
+ stack_start = 0;
+ stack_end = 0;
+ text_start = 0;
+ text_end = 0;
+ exec_data_start = 0;
+ exec_data_end = 0;
+ if (execchan >= 0)
+ close(execchan);
+ execchan = -1;
+
+ /* Now open and digest the file the user requested, if any. */
+
+ if (filename) {
+ filename = tilde_expand(filename);
+ make_cleanup(free, filename);
+
+ execchan = openp(getenv("PATH"), 1, filename, O_RDONLY, 0,
+ &execfile);
+ if (execchan < 0)
+ perror_with_name(filename);
+
+ {
+ struct stat st_exec;
+
+#ifdef HEADER_SEEK_FD
+ HEADER_SEEK_FD(execchan);
+#endif
+
+ val = myread(execchan, &exec_aouthdr, sizeof(AOUTHDR));
+
+ if (val < 0)
+ perror_with_name(filename);
+
+#ifdef KERNELDEBUG
+ if (kernel_debugging) {
+ /* Gross and disgusting XXX */
+ text_start = KERNTEXT_BASE;
+ exec_data_start = KERNTEXT_BASE +
+ (exec_aouthdr.a_text + 4095) & ~ 4095;
+ } else {
+#endif
+ text_start = N_TXTADDR(exec_aouthdr);
+ exec_data_start = N_DATADDR(exec_aouthdr);
+#ifdef KERNELDEBUG
+ }
+#endif
+
+ text_offset = N_TXTOFF(exec_aouthdr);
+ exec_data_offset = N_TXTOFF(exec_aouthdr) + exec_aouthdr.a_text;
+
+ text_end = text_start + exec_aouthdr.a_text;
+ exec_data_end = exec_data_start + exec_aouthdr.a_data;
+
+ fstat(execchan, &st_exec);
+ exec_mtime = st_exec.st_mtime;
+ }
+
+ validate_files();
+ } else if (from_tty)
+ printf("No exec file now.\n");
+
+ /* Tell display code (if any) about the changed file name. */
+ if (exec_file_display_hook)
+ (*exec_file_display_hook) (filename);
+}
+
+int dummy_code[] = {
+ 0xb8909090, /* nop; nop; nop; movl $0x32323232,%eax */
+ 0x32323232,
+#define DUMMY_CALL_INDEX 1
+ 0x90ccd0ff, /* call %eax; int3; nop */
+};
+
+/*
+ * Build `dummy' call instructions on inferior's stack to cause
+ * it to call a subroutine.
+ *
+ * N.B. - code in wait_for_inferior requires that sp < pc < fp when
+ * we take the trap 2 above so it will recognize that we stopped
+ * at a `dummy' call. So, after the call sp is *not* decremented
+ * to clean the arguments, code & other stuff we lay on the stack.
+ * Since the regs are restored to saved values at the breakpoint,
+ * sp will get reset correctly. Also, this restore means we don't
+ * have to construct frame linkage info to save pc & fp. The lack
+ * of frame linkage means we can't do a backtrace, etc., if the
+ * called function gets a fault or hits a breakpoint but code in
+ * run_stack_dummy makes this impossible anyway.
+ */
+CORE_ADDR
+setup_dummy(sp, funaddr, nargs, args, struct_return_bytes, pushfn)
+ CORE_ADDR sp;
+ CORE_ADDR funaddr;
+ int nargs;
+ value *args;
+ int struct_return_bytes;
+ CORE_ADDR (*pushfn)();
+{
+ int padding, i;
+ CORE_ADDR top = sp, struct_addr, pc;
+
+ i = arg_stacklen(nargs, args) + struct_return_bytes
+ + sizeof(dummy_code);
+ if (i & 3)
+ padding = 4 - (i & 3);
+ else
+ padding = 0;
+ pc = sp - sizeof(dummy_code);
+ sp = pc - padding - struct_return_bytes;
+ struct_addr = sp;
+ while (--nargs >= 0)
+ sp = (*pushfn)(sp, *args++);
+ if (struct_return_bytes)
+ STORE_STRUCT_RETURN(struct_addr, sp);
+ write_register(SP_REGNUM, sp);
+
+ dummy_code[DUMMY_CALL_INDEX] = (int)funaddr;
+ write_memory(pc, (char *)dummy_code, sizeof(dummy_code));
+
+ return pc;
+}
+
+/* helper functions for m-i386.h */
+
+/* stdio style buffering to minimize calls to ptrace */
+static CORE_ADDR codestream_next_addr;
+static CORE_ADDR codestream_addr;
+static unsigned char codestream_buf[sizeof (int)];
+static int codestream_off;
+static int codestream_cnt;
+
+#define codestream_tell() (codestream_addr + codestream_off)
+#define codestream_peek() (codestream_cnt == 0 ? \
+ codestream_fill(1): codestream_buf[codestream_off])
+#define codestream_get() (codestream_cnt-- == 0 ? \
+ codestream_fill(0) : codestream_buf[codestream_off++])
+
+static unsigned char
+codestream_fill (peek_flag)
+{
+ codestream_addr = codestream_next_addr;
+ codestream_next_addr += sizeof (int);
+ codestream_off = 0;
+ codestream_cnt = sizeof (int);
+ read_memory (codestream_addr,
+ (unsigned char *)codestream_buf,
+ sizeof (int));
+
+ if (peek_flag)
+ return (codestream_peek());
+ else
+ return (codestream_get());
+}
+
+static void
+codestream_seek (place)
+{
+ codestream_next_addr = place & -sizeof (int);
+ codestream_cnt = 0;
+ codestream_fill (1);
+ while (codestream_tell() != place)
+ codestream_get ();
+}
+
+static void
+codestream_read (buf, count)
+ unsigned char *buf;
+{
+ unsigned char *p;
+ int i;
+ p = buf;
+ for (i = 0; i < count; i++)
+ *p++ = codestream_get ();
+}
+
+/* next instruction is a jump, move to target */
+static
+i386_follow_jump ()
+{
+ int long_delta;
+ short short_delta;
+ char byte_delta;
+ int data16;
+ int pos;
+
+ pos = codestream_tell ();
+
+ data16 = 0;
+ if (codestream_peek () == 0x66)
+ {
+ codestream_get ();
+ data16 = 1;
+ }
+
+ switch (codestream_get ())
+ {
+ case 0xe9:
+ /* relative jump: if data16 == 0, disp32, else disp16 */
+ if (data16)
+ {
+ codestream_read ((unsigned char *)&short_delta, 2);
+ pos += short_delta + 3; /* include size of jmp inst */
+ }
+ else
+ {
+ codestream_read ((unsigned char *)&long_delta, 4);
+ pos += long_delta + 5;
+ }
+ break;
+ case 0xeb:
+ /* relative jump, disp8 (ignore data16) */
+ codestream_read ((unsigned char *)&byte_delta, 1);
+ pos += byte_delta + 2;
+ break;
+ }
+ codestream_seek (pos + data16);
+}
+
+/*
+ * find & return amound a local space allocated, and advance codestream to
+ * first register push (if any)
+ *
+ * if entry sequence doesn't make sense, return -1, and leave
+ * codestream pointer random
+ */
+static long
+i386_get_frame_setup (pc)
+{
+ unsigned char op;
+
+ codestream_seek (pc);
+
+ i386_follow_jump ();
+
+ op = codestream_get ();
+
+ if (op == 0x58) /* popl %eax */
+ {
+ /*
+ * this function must start with
+ *
+ * popl %eax 0x58
+ * xchgl %eax, (%esp) 0x87 0x04 0x24
+ * or xchgl %eax, 0(%esp) 0x87 0x44 0x24 0x00
+ *
+ * (the system 5 compiler puts out the second xchg
+ * inst, and the assembler doesn't try to optimize it,
+ * so the 'sib' form gets generated)
+ *
+ * this sequence is used to get the address of the return
+ * buffer for a function that returns a structure
+ */
+ int pos;
+ unsigned char buf[4];
+ static unsigned char proto1[3] = { 0x87,0x04,0x24 };
+ static unsigned char proto2[4] = { 0x87,0x44,0x24,0x00 };
+ pos = codestream_tell ();
+ codestream_read (buf, 4);
+ if (bcmp (buf, proto1, 3) == 0)
+ pos += 3;
+ else if (bcmp (buf, proto2, 4) == 0)
+ pos += 4;
+
+ codestream_seek (pos);
+ op = codestream_get (); /* update next opcode */
+ }
+
+ if (op == 0x55) /* pushl %esp */
+ {
+ /* check for movl %esp, %ebp - can be written two ways */
+ switch (codestream_get ())
+ {
+ case 0x8b:
+ if (codestream_get () != 0xec)
+ return (-1);
+ break;
+ case 0x89:
+ if (codestream_get () != 0xe5)
+ return (-1);
+ break;
+ default:
+ return (-1);
+ }
+ /* check for stack adjustment
+ *
+ * subl $XXX, %esp
+ *
+ * note: you can't subtract a 16 bit immediate
+ * from a 32 bit reg, so we don't have to worry
+ * about a data16 prefix
+ */
+ op = codestream_peek ();
+ if (op == 0x83)
+ {
+ /* subl with 8 bit immed */
+ codestream_get ();
+ if (codestream_get () != 0xec)
+ return (-1);
+ /* subl with signed byte immediate
+ * (though it wouldn't make sense to be negative)
+ */
+ return (codestream_get());
+ }
+ else if (op == 0x81)
+ {
+ /* subl with 32 bit immed */
+ int locals;
+ codestream_get();
+ if (codestream_get () != 0xec)
+ return (-1);
+ /* subl with 32 bit immediate */
+ codestream_read ((unsigned char *)&locals, 4);
+ return (locals);
+ }
+ else
+ {
+ return (0);
+ }
+ }
+ else if (op == 0xc8)
+ {
+ /* enter instruction: arg is 16 bit unsigned immed */
+ unsigned short slocals;
+ codestream_read ((unsigned char *)&slocals, 2);
+ codestream_get (); /* flush final byte of enter instruction */
+ return (slocals);
+ }
+ return (-1);
+}
+
+/* Return number of args passed to a frame.
+ Can return -1, meaning no way to tell. */
+
+/* on the 386, the instruction following the call could be:
+ * popl %ecx - one arg
+ * addl $imm, %esp - imm/4 args; imm may be 8 or 32 bits
+ * anything else - zero args
+ */
+
+int
+i386_frame_num_args (fi)
+ struct frame_info fi;
+{
+ int retpc;
+ unsigned char op;
+ struct frame_info *pfi;
+
+ pfi = get_prev_frame_info ((fi));
+ if (pfi == 0)
+ {
+ /* Note: this can happen if we are looking at the frame for
+ main, because FRAME_CHAIN_VALID won't let us go into
+ start. If we have debugging symbols, that's not really
+ a big deal; it just means it will only show as many arguments
+ to main as are declared. */
+ return -1;
+ }
+ else
+ {
+ retpc = pfi->pc;
+ op = read_memory_integer (retpc, 1);
+ if (op == 0x59)
+ /* pop %ecx */
+ return 1;
+ else if (op == 0x83)
+ {
+ op = read_memory_integer (retpc+1, 1);
+ if (op == 0xc4)
+ /* addl $<signed imm 8 bits>, %esp */
+ return (read_memory_integer (retpc+2,1)&0xff)/4;
+ else
+ return 0;
+ }
+ else if (op == 0x81)
+ { /* add with 32 bit immediate */
+ op = read_memory_integer (retpc+1, 1);
+ if (op == 0xc4)
+ /* addl $<imm 32>, %esp */
+ return read_memory_integer (retpc+2, 4) / 4;
+ else
+ return 0;
+ }
+ else
+ {
+ return 0;
+ }
+ }
+}
+
+/*
+ * parse the first few instructions of the function to see
+ * what registers were stored.
+ *
+ * We handle these cases:
+ *
+ * The startup sequence can be at the start of the function,
+ * or the function can start with a branch to startup code at the end.
+ *
+ * %ebp can be set up with either the 'enter' instruction, or
+ * 'pushl %ebp, movl %esp, %ebp' (enter is too slow to be useful,
+ * but was once used in the sys5 compiler)
+ *
+ * Local space is allocated just below the saved %ebp by either the
+ * 'enter' instruction, or by 'subl $<size>, %esp'. 'enter' has
+ * a 16 bit unsigned argument for space to allocate, and the
+ * 'addl' instruction could have either a signed byte, or
+ * 32 bit immediate.
+ *
+ * Next, the registers used by this function are pushed. In
+ * the sys5 compiler they will always be in the order: %edi, %esi, %ebx
+ * (and sometimes a harmless bug causes it to also save but not restore %eax);
+ * however, the code below is willing to see the pushes in any order,
+ * and will handle up to 8 of them.
+ *
+ * If the setup sequence is at the end of the function, then the
+ * next instruction will be a branch back to the start.
+ */
+
+i386_frame_find_saved_regs (fip, fsrp)
+ struct frame_info *fip;
+ struct frame_saved_regs *fsrp;
+{
+ unsigned long locals;
+ unsigned char *p;
+ unsigned char op;
+ CORE_ADDR dummy_bottom;
+ CORE_ADDR adr;
+ int i;
+
+ bzero (fsrp, sizeof *fsrp);
+
+#if 0
+ /* if frame is the end of a dummy, compute where the
+ * beginning would be
+ */
+ dummy_bottom = fip->frame - 4 - NUM_REGS*4 - CALL_DUMMY_LENGTH;
+
+ /* check if the PC is in the stack, in a dummy frame */
+ if (dummy_bottom <= fip->pc && fip->pc <= fip->frame)
+ {
+ /* all regs were saved by push_call_dummy () */
+ adr = fip->frame - 4;
+ for (i = 0; i < NUM_REGS; i++)
+ {
+ fsrp->regs[i] = adr;
+ adr -= 4;
+ }
+ return;
+ }
+#endif
+
+ locals = i386_get_frame_setup (get_pc_function_start (fip->pc));
+
+ if (locals >= 0)
+ {
+ adr = fip->frame - 4 - locals;
+ for (i = 0; i < 8; i++)
+ {
+ op = codestream_get ();
+ if (op < 0x50 || op > 0x57)
+ break;
+ fsrp->regs[op - 0x50] = adr;
+ adr -= 4;
+ }
+ }
+
+ fsrp->regs[PC_REGNUM] = fip->frame + 4;
+ fsrp->regs[FP_REGNUM] = fip->frame;
+}
+
+/* return pc of first real instruction */
+i386_skip_prologue (pc)
+{
+ unsigned char op;
+ int i;
+
+ if (i386_get_frame_setup (pc) < 0)
+ return (pc);
+
+ /* found valid frame setup - codestream now points to
+ * start of push instructions for saving registers
+ */
+
+ /* skip over register saves */
+ for (i = 0; i < 8; i++)
+ {
+ op = codestream_peek ();
+ /* break if not pushl inst */
+ if (op < 0x50 || op > 0x57)
+ break;
+ codestream_get ();
+ }
+
+ i386_follow_jump ();
+
+ return (codestream_tell ());
+}
+
+i386_pop_frame ()
+{
+ FRAME frame = get_current_frame ();
+ CORE_ADDR fp;
+ int regnum;
+ struct frame_saved_regs fsr;
+ struct frame_info *fi;
+
+ fi = get_frame_info (frame);
+ fp = fi->frame;
+ get_frame_saved_regs (fi, &fsr);
+ for (regnum = 0; regnum < NUM_REGS; regnum++)
+ {
+ CORE_ADDR adr;
+ adr = fsr.regs[regnum];
+ if (adr)
+ write_register (regnum, read_memory_integer (adr, 4));
+ }
+ write_register (FP_REGNUM, read_memory_integer (fp, 4));
+ write_register (PC_REGNUM, read_memory_integer (fp + 4, 4));
+ write_register (SP_REGNUM, fp + 8);
+ flush_cached_frames ();
+ set_current_frame ( create_new_frame (read_register (FP_REGNUM),
+ read_pc ()));
+}
+
+#ifdef FRAME_SPECIFICATION_DYADIC
+/* 20 Jan 93 */
+
+/*
+ * if we want to allow specification of ``frame frame-pointer pc''
+ * style command, this is simple:
+ */
+FRAME
+setup_arbitrary_frame(fp, pc)
+void *fp, *pc;
+{
+ /* XXX we simply create a new frame; maybe this is a rude hack only */
+ return create_new_frame (fp, pc);
+}
+#endif /* FRAME_SPECIFICATION_DYADIC */
+
+/* this table must line up with REGISTER_NAMES in m-i386.h */
+/* symbols like 'EAX' come from <sys/reg.h> */
+static int trapmap[] =
+{
+ tEAX, tECX, tEDX, tEBX,
+ tESP, tEBP, tESI, tEDI,
+ tEIP, tEFLAGS, tCS, tSS,
+ tDS, tES, tES, tES /* lies: no fs or gs */
+};
+#if defined(FM_TRAP) || defined(EX_TRAPSTK)
+static int syscallmap[] =
+{
+ sEAX, sECX, sEDX, sEBX,
+ sESP, sEBP, sESI, sEDI,
+ sEIP, sEFLAGS, sCS, sSS,
+ sSS, sSS, sSS, sSS /* lies: no ds, es, fs or gs */
+};
+#endif
+static int *regmap;
+
+static void
+setregmap(flags)
+ int flags;
+{
+#ifdef FM_TRAP
+ regmap = flags & FM_TRAP ? trapmap: syscallmap;
+#elif EX_TRAPSTK
+ regmap = flags & EX_TRAPSTK ? trapmap : syscallmap;
+#else
+ regmap = trapmap; /* the lesser evil */
+#endif
+}
+
+/* blockend is the value of u.u_ar0, and points to the
+ * place where GS is stored
+ */
+i386_register_u_addr (blockend, regnum)
+{
+#if 0
+ /* this will be needed if fp registers are reinstated */
+ /* for now, you can look at them with 'info float'
+ * sys5 wont let you change them with ptrace anyway
+ */
+ if (regnum >= FP0_REGNUM && regnum <= FP7_REGNUM)
+ {
+ int ubase, fpstate;
+ struct user u;
+ ubase = blockend + 4 * (SS + 1) - KSTKSZ;
+ fpstate = ubase + ((char *)&u.u_fpstate - (char *)&u);
+ return (fpstate + 0x1c + 10 * (regnum - FP0_REGNUM));
+ }
+ else
+#endif
+ return (blockend + 4 * regmap[regnum]);
+}
+
+i387_to_double (from, to)
+ char *from;
+ char *to;
+{
+ long *lp;
+ /* push extended mode on 387 stack, then pop in double mode
+ *
+ * first, set exception masks so no error is generated -
+ * number will be rounded to inf or 0, if necessary
+ */
+ asm ("pushl %eax"); /* grab a stack slot */
+ asm ("fstcw (%esp)"); /* get 387 control word */
+ asm ("movl (%esp),%eax"); /* save old value */
+ asm ("orl $0x3f,%eax"); /* mask all exceptions */
+ asm ("pushl %eax");
+ asm ("fldcw (%esp)"); /* load new value into 387 */
+
+ asm ("movl 8(%ebp),%eax");
+ asm ("fldt (%eax)"); /* push extended number on 387 stack */
+ asm ("fwait");
+ asm ("movl 12(%ebp),%eax");
+ asm ("fstpl (%eax)"); /* pop double */
+ asm ("fwait");
+
+ asm ("popl %eax"); /* flush modified control word */
+ asm ("fnclex"); /* clear exceptions */
+ asm ("fldcw (%esp)"); /* restore original control word */
+ asm ("popl %eax"); /* flush saved copy */
+}
+
+double_to_i387 (from, to)
+ char *from;
+ char *to;
+{
+ /* push double mode on 387 stack, then pop in extended mode
+ * no errors are possible because every 64-bit pattern
+ * can be converted to an extended
+ */
+ asm ("movl 8(%ebp),%eax");
+ asm ("fldl (%eax)");
+ asm ("fwait");
+ asm ("movl 12(%ebp),%eax");
+ asm ("fstpt (%eax)");
+ asm ("fwait");
+}
+
+struct env387
+{
+ unsigned short control;
+ unsigned short r0;
+ unsigned short status;
+ unsigned short r1;
+ unsigned short tag;
+ unsigned short r2;
+ unsigned long eip;
+ unsigned short code_seg;
+ unsigned short opcode;
+ unsigned long operand;
+ unsigned short operand_seg;
+ unsigned short r3;
+ unsigned char regs[8][10];
+};
+
+static
+print_387_control_word (control)
+unsigned short control;
+{
+ printf ("control 0x%04x: ", control);
+ printf ("compute to ");
+ switch ((control >> 8) & 3)
+ {
+ case 0: printf ("24 bits; "); break;
+ case 1: printf ("(bad); "); break;
+ case 2: printf ("53 bits; "); break;
+ case 3: printf ("64 bits; "); break;
+ }
+ printf ("round ");
+ switch ((control >> 10) & 3)
+ {
+ case 0: printf ("NEAREST; "); break;
+ case 1: printf ("DOWN; "); break;
+ case 2: printf ("UP; "); break;
+ case 3: printf ("CHOP; "); break;
+ }
+ if (control & 0x3f)
+ {
+ printf ("mask:");
+ if (control & 0x0001) printf (" INVALID");
+ if (control & 0x0002) printf (" DENORM");
+ if (control & 0x0004) printf (" DIVZ");
+ if (control & 0x0008) printf (" OVERF");
+ if (control & 0x0010) printf (" UNDERF");
+ if (control & 0x0020) printf (" LOS");
+ printf (";");
+ }
+ printf ("\n");
+ if (control & 0xe080) printf ("warning: reserved bits on 0x%x\n",
+ control & 0xe080);
+}
+
+static
+print_387_status_word (status)
+ unsigned short status;
+{
+ printf ("status 0x%04x: ", status);
+ if (status & 0xff)
+ {
+ printf ("exceptions:");
+ if (status & 0x0001) printf (" INVALID");
+ if (status & 0x0002) printf (" DENORM");
+ if (status & 0x0004) printf (" DIVZ");
+ if (status & 0x0008) printf (" OVERF");
+ if (status & 0x0010) printf (" UNDERF");
+ if (status & 0x0020) printf (" LOS");
+ if (status & 0x0040) printf (" FPSTACK");
+ printf ("; ");
+ }
+ printf ("flags: %d%d%d%d; ",
+ (status & 0x4000) != 0,
+ (status & 0x0400) != 0,
+ (status & 0x0200) != 0,
+ (status & 0x0100) != 0);
+
+ printf ("top %d\n", (status >> 11) & 7);
+}
+
+static
+print_387_status (status, ep)
+ unsigned short status;
+ struct env387 *ep;
+{
+ int i;
+ int bothstatus;
+ int top;
+ int fpreg;
+ unsigned char *p;
+
+ bothstatus = ((status != 0) && (ep->status != 0));
+ if (status != 0)
+ {
+ if (bothstatus)
+ printf ("u: ");
+ print_387_status_word (status);
+ }
+
+ if (ep->status != 0)
+ {
+ if (bothstatus)
+ printf ("e: ");
+ print_387_status_word (ep->status);
+ }
+
+ print_387_control_word (ep->control);
+ printf ("opcode 0x%x; ", ep->opcode);
+ printf ("pc 0x%x:0x%x; ", ep->code_seg, ep->eip);
+ printf ("operand 0x%x:0x%x\n", ep->operand_seg, ep->operand);
+
+ top = (ep->status >> 11) & 7;
+
+ printf (" regno tag msb lsb value\n");
+ for (fpreg = 7; fpreg >= 0; fpreg--)
+ {
+ int st_regno;
+ double val;
+
+ /* The physical regno `fpreg' is only relevant as an index into the
+ * tag word. Logical `%st' numbers are required for indexing ep->regs.
+ */
+ st_regno = (fpreg + 8 - top) & 7;
+
+ printf ("%%st(%d) %s ", st_regno, fpreg == top ? "=>" : " ");
+
+ switch ((ep->tag >> (fpreg * 2)) & 3)
+ {
+ case 0: printf ("valid "); break;
+ case 1: printf ("zero "); break;
+ case 2: printf ("trap "); break;
+ case 3: printf ("empty "); break;
+ }
+ for (i = 9; i >= 0; i--)
+ printf ("%02x", ep->regs[st_regno][i]);
+
+ i387_to_double (ep->regs[st_regno], (char *)&val);
+ printf (" %g\n", val);
+ }
+#if 0 /* reserved fields are always 0xffff on 486's */
+ if (ep->r0)
+ printf ("warning: reserved0 is 0x%x\n", ep->r0);
+ if (ep->r1)
+ printf ("warning: reserved1 is 0x%x\n", ep->r1);
+ if (ep->r2)
+ printf ("warning: reserved2 is 0x%x\n", ep->r2);
+ if (ep->r3)
+ printf ("warning: reserved3 is 0x%x\n", ep->r3);
+#endif
+}
+
+#ifdef __FreeBSD__
+#define fpstate save87
+#define U_FPSTATE(u) u.u_pcb.pcb_savefpu
+#endif
+
+#ifndef U_FPSTATE
+#define U_FPSTATE(u) u.u_fpstate
+#endif
+
+i386_float_info ()
+{
+ struct user u; /* just for address computations */
+ int i;
+ /* fpstate defined in <sys/user.h> */
+ struct fpstate *fpstatep;
+ char buf[sizeof (struct fpstate) + 2 * sizeof (int)];
+ unsigned int uaddr;
+ char fpvalid;
+ unsigned int rounded_addr;
+ unsigned int rounded_size;
+ extern int corechan;
+ int skip;
+
+#ifndef __FreeBSD__ /* XXX - look at pcb flags */
+ uaddr = (char *)&u.u_fpvalid - (char *)&u;
+ if (have_inferior_p())
+ {
+ unsigned int data;
+ unsigned int mask;
+
+ rounded_addr = uaddr & -sizeof (int);
+ data = ptrace (PT_READ_U, inferior_pid, (caddr_t)rounded_addr, 0);
+ mask = 0xff << ((uaddr - rounded_addr) * 8);
+
+ fpvalid = ((data & mask) != 0);
+ }
+ else
+ {
+ if (lseek (corechan, uaddr, 0) < 0)
+ perror ("seek on core file");
+ if (myread (corechan, &fpvalid, 1) < 0)
+ perror ("read on core file");
+
+ }
+
+ if (fpvalid == 0)
+ {
+ printf ("no floating point status saved\n");
+ return;
+ }
+#endif /* not __FreeBSD__ */
+
+ uaddr = (char *)&U_FPSTATE(u) - (char *)&u;
+ if (have_inferior_p ())
+ {
+ int *ip;
+
+ rounded_addr = uaddr & -sizeof (int);
+ rounded_size = (((uaddr + sizeof (struct fpstate)) - uaddr) +
+ sizeof (int) - 1) / sizeof (int);
+ skip = uaddr - rounded_addr;
+
+ ip = (int *)buf;
+ for (i = 0; i < rounded_size; i++)
+ {
+ *ip++ = ptrace (PT_READ_U, inferior_pid, (caddr_t)rounded_addr, 0);
+ rounded_addr += sizeof (int);
+ }
+ }
+ else
+ {
+ if (lseek (corechan, uaddr, 0) < 0)
+ perror_with_name ("seek on core file");
+ if (myread (corechan, buf, sizeof (struct fpstate)) < 0)
+ perror_with_name ("read from core file");
+ skip = 0;
+ }
+
+ fpstatep = (struct fpstate *)(buf + skip);
+#ifdef __FreeBSD__
+ print_387_status (fpstatep->sv_ex_sw, (struct env387 *)fpstatep);
+#else
+ print_387_status (fpstatep->status, (struct env387 *)fpstatep->state);
+#endif
+}
+
+void
+_initialize_i386bsd_dep()
+{
+#ifdef KERNELDEBUG
+ add_com ("process-address", class_obscure, set_paddr_command,
+ "The process identified by (ps-style) ADDR becomes the\n\
+\"current\" process context for kernel debugging.");
+ add_com_alias ("paddr", "process-address", class_obscure, 0);
+#endif
+}
diff --git a/gnu/usr.bin/kgdb/config/m-i386-sv32.h b/gnu/usr.bin/kgdb/config/m-i386-sv32.h
new file mode 100644
index 000000000000..38fb4eb6d5b6
--- /dev/null
+++ b/gnu/usr.bin/kgdb/config/m-i386-sv32.h
@@ -0,0 +1,28 @@
+/* Macro defintions for i386, running System V 3.2.
+ Copyright (C) 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include "m-i386.h"
+
+/* Apparently there is inconsistency among various System V's about what
+ the name of this field is. */
+#define U_FPSTATE(u) u.u_fps.u_fpstate
+
+/* TIOCGETC is defined in System V 3.2 termio.h, but struct tchars
+ is not. This makes problems for inflow.c. */
+#define TIOCGETC_BROKEN
diff --git a/gnu/usr.bin/kgdb/config/m-i386.h b/gnu/usr.bin/kgdb/config/m-i386.h
new file mode 100644
index 000000000000..a6334384dd0b
--- /dev/null
+++ b/gnu/usr.bin/kgdb/config/m-i386.h
@@ -0,0 +1,394 @@
+/* Macro defintions for i386.
+ Copyright (C) 1986, 1987, 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+/* Define the bit, byte, and word ordering of the machine. */
+/* #define BITS_BIG_ENDIAN */
+/* #define BYTES_BIG_ENDIAN */
+/* #define WORDS_BIG_ENDIAN */
+
+/*
+ * Changes for 80386 by Pace Willisson (pace@prep.ai.mit.edu)
+ * July 1988
+ */
+
+
+#ifndef i386
+#define i386
+#endif
+
+/* I'm running gdb 3.4 under 386/ix 2.0.2, which is a derivative of AT&T's
+Sys V/386 3.2.
+
+On some machines, gdb crashes when it's starting up while calling the
+vendor's termio tgetent() routine. It always works when run under
+itself (actually, under 3.2, it's not an infinitely recursive bug.)
+After some poking around, it appears that depending on the environment
+size, or whether you're running YP, or the phase of the moon or something,
+the stack is not always long-aligned when main() is called, and tgetent()
+takes strong offense at that. On some machines this bug never appears, but
+on those where it does, it occurs quite reliably. */
+#define ALIGN_STACK_ON_STARTUP
+
+/* define USG if you are using sys5 /usr/include's */
+#define USG
+
+/* USG systems need these */
+#define vfork() fork()
+#define MAXPATHLEN 500
+
+/* define this if you don't have the extension to coff that allows
+ * file names to appear in the string table
+ * (aux.x_file.x_foff)
+ */
+#define COFF_NO_LONG_FILE_NAMES
+
+/* turn this on when rest of gdb is ready */
+/* #define IEEE_FLOAT */
+
+#define NBPG NBPC
+#define UPAGES USIZE
+
+#define HAVE_TERMIO
+
+/* Get rid of any system-imposed stack limit if possible. */
+
+/* #define SET_STACK_LIMIT_HUGE not in sys5 */
+
+/* Define this if the C compiler puts an underscore at the front
+ of external names before giving them to the linker. */
+
+/* #define NAMES_HAVE_UNDERSCORE */
+
+/* Specify debugger information format. */
+
+/* #define READ_DBX_FORMAT */
+#define COFF_FORMAT
+
+/* number of traps that happen between exec'ing the shell
+ * to run an inferior, and when we finally get to
+ * the inferior code. This is 2 on most implementations.
+ */
+#define START_INFERIOR_TRAPS_EXPECTED 4
+
+/* Offset from address of function to start of its code.
+ Zero on most machines. */
+
+#define FUNCTION_START_OFFSET 0
+
+/* Advance PC across any function entry prologue instructions
+ to reach some "real" code. */
+
+#define SKIP_PROLOGUE(frompc) {(frompc) = i386_skip_prologue((frompc));}
+
+/* Immediately after a function call, return the saved pc.
+ Can't always go through the frames for this because on some machines
+ the new frame is not set up until the new function executes
+ some instructions. */
+
+#define SAVED_PC_AFTER_CALL(frame) \
+ (read_memory_integer (read_register (SP_REGNUM), 4))
+
+/* This is the amount to subtract from u.u_ar0
+ to get the offset in the core file of the register values. */
+
+#define KERNEL_U_ADDR 0xe0000000
+
+/* Address of end of stack space. */
+
+#define STACK_END_ADDR 0x80000000
+
+/* Stack grows downward. */
+
+#define INNER_THAN <
+
+/* Sequence of bytes for breakpoint instruction. */
+
+#define BREAKPOINT {0xcc}
+
+/* Amount PC must be decremented by after a breakpoint.
+ This is often the number of bytes in BREAKPOINT
+ but not always. */
+
+#define DECR_PC_AFTER_BREAK 1
+
+/* Nonzero if instruction at PC is a return instruction. */
+
+#define ABOUT_TO_RETURN(pc) (read_memory_integer (pc, 1) == 0xc3)
+
+/* Return 1 if P points to an invalid floating point value.
+ LEN is the length in bytes -- not relevant on the 386. */
+
+#define INVALID_FLOAT(p, len) (0)
+
+/* code to execute to print interesting information about the
+ * floating point processor (if any)
+ * No need to define if there is nothing to do.
+ */
+#define FLOAT_INFO { i386_float_info (); }
+
+
+/* Largest integer type */
+#define LONGEST long
+
+/* Name of the builtin type for the LONGEST type above. */
+#define BUILTIN_TYPE_LONGEST builtin_type_long
+
+/* Say how long (ordinary) registers are. */
+
+#define REGISTER_TYPE long
+
+/* Number of machine registers */
+
+#define NUM_REGS 16
+
+/* Initializer for an array of names of registers.
+ There should be NUM_REGS strings in this initializer. */
+
+/* the order of the first 8 registers must match the compiler's
+ * numbering scheme (which is the same as the 386 scheme)
+ * also, this table must match regmap in i386-pinsn.c.
+ */
+#define REGISTER_NAMES { "eax", "ecx", "edx", "ebx", \
+ "esp", "ebp", "esi", "edi", \
+ "eip", "ps", "cs", "ss", \
+ "ds", "es", "fs", "gs", \
+ }
+
+/* Register numbers of various important registers.
+ Note that some of these values are "real" register numbers,
+ and correspond to the general registers of the machine,
+ and some are "phony" register numbers which are too large
+ to be actual register numbers as far as the user is concerned
+ but do serve to get the desired values when passed to read_register. */
+
+#define FP_REGNUM 5 /* Contains address of executing stack frame */
+#define SP_REGNUM 4 /* Contains address of top of stack */
+
+#define PC_REGNUM 8
+#define PS_REGNUM 9
+
+#define REGISTER_U_ADDR(addr, blockend, regno) \
+ (addr) = i386_register_u_addr ((blockend),(regno));
+
+/* Total amount of space needed to store our copies of the machine's
+ register state, the array `registers'. */
+#define REGISTER_BYTES (NUM_REGS * 4)
+
+/* Index within `registers' of the first byte of the space for
+ register N. */
+
+#define REGISTER_BYTE(N) ((N)*4)
+
+/* Number of bytes of storage in the actual machine representation
+ for register N. */
+
+#define REGISTER_RAW_SIZE(N) (4)
+
+/* Number of bytes of storage in the program's representation
+ for register N. */
+
+#define REGISTER_VIRTUAL_SIZE(N) (4)
+
+/* Largest value REGISTER_RAW_SIZE can have. */
+
+#define MAX_REGISTER_RAW_SIZE 4
+
+/* Largest value REGISTER_VIRTUAL_SIZE can have. */
+
+#define MAX_REGISTER_VIRTUAL_SIZE 4
+
+/* Nonzero if register N requires conversion
+ from raw format to virtual format. */
+
+#define REGISTER_CONVERTIBLE(N) (0)
+
+/* Convert data from raw format for register REGNUM
+ to virtual format for register REGNUM. */
+
+#define REGISTER_CONVERT_TO_VIRTUAL(REGNUM,FROM,TO) {bcopy ((FROM), (TO), 4);}
+
+/* Convert data from virtual format for register REGNUM
+ to raw format for register REGNUM. */
+
+#define REGISTER_CONVERT_TO_RAW(REGNUM,FROM,TO) {bcopy ((FROM), (TO), 4);}
+
+/* Return the GDB type object for the "standard" data type
+ of data in register N. */
+
+#define REGISTER_VIRTUAL_TYPE(N) (builtin_type_int)
+
+/* Store the address of the place in which to copy the structure the
+ subroutine will return. This is called from call_function. */
+
+#define STORE_STRUCT_RETURN(ADDR, SP) \
+ { (SP) -= sizeof (ADDR); \
+ write_memory ((SP), &(ADDR), sizeof (ADDR)); }
+
+/* Extract from an array REGBUF containing the (raw) register state
+ a function return value of type TYPE, and copy that, in virtual format,
+ into VALBUF. */
+
+#define EXTRACT_RETURN_VALUE(TYPE,REGBUF,VALBUF) \
+ bcopy (REGBUF, VALBUF, TYPE_LENGTH (TYPE))
+
+/* Write into appropriate registers a function return value
+ of type TYPE, given in virtual format. */
+
+#define STORE_RETURN_VALUE(TYPE,VALBUF) \
+ write_register_bytes (0, VALBUF, TYPE_LENGTH (TYPE))
+
+/* Extract from an array REGBUF containing the (raw) register state
+ the address in which a function should return its structure value,
+ as a CORE_ADDR (or an expression that can be used as one). */
+
+#define EXTRACT_STRUCT_VALUE_ADDRESS(REGBUF) (*(int *)(REGBUF))
+
+
+/* Describe the pointer in each stack frame to the previous stack frame
+ (its caller). */
+
+/* FRAME_CHAIN takes a frame's nominal address
+ and produces the frame's chain-pointer.
+
+ FRAME_CHAIN_COMBINE takes the chain pointer and the frame's nominal address
+ and produces the nominal address of the caller frame.
+
+ However, if FRAME_CHAIN_VALID returns zero,
+ it means the given frame is the outermost one and has no caller.
+ In that case, FRAME_CHAIN_COMBINE is not used. */
+
+#define FRAME_CHAIN(thisframe) \
+ (outside_startup_file ((thisframe)->pc) ? \
+ read_memory_integer ((thisframe)->frame, 4) :\
+ 0)
+
+#define FRAME_CHAIN_VALID(chain, thisframe) \
+ (chain != 0 && (outside_startup_file (FRAME_SAVED_PC (thisframe))))
+
+#define FRAME_CHAIN_COMBINE(chain, thisframe) (chain)
+
+/* Define other aspects of the stack frame. */
+
+/* A macro that tells us whether the function invocation represented
+ by FI does not have a frame on the stack associated with it. If it
+ does not, FRAMELESS is set to 1, else 0. */
+#define FRAMELESS_FUNCTION_INVOCATION(FI, FRAMELESS) \
+ FRAMELESS_LOOK_FOR_PROLOGUE(FI, FRAMELESS)
+
+#define FRAME_SAVED_PC(FRAME) (read_memory_integer ((FRAME)->frame + 4, 4))
+
+#define FRAME_ARGS_ADDRESS(fi) ((fi)->frame)
+
+#define FRAME_LOCALS_ADDRESS(fi) ((fi)->frame)
+
+/* Return number of args passed to a frame.
+ Can return -1, meaning no way to tell. */
+
+#define FRAME_NUM_ARGS(numargs, fi) (numargs) = i386_frame_num_args(fi)
+
+/* Return number of bytes at start of arglist that are not really args. */
+
+#define FRAME_ARGS_SKIP 8
+
+/* Put here the code to store, into a struct frame_saved_regs,
+ the addresses of the saved registers of frame described by FRAME_INFO.
+ This includes special registers such as pc and fp saved in special
+ ways in the stack frame. sp is even more special:
+ the address we return for it IS the sp for the next frame. */
+
+#define FRAME_FIND_SAVED_REGS(frame_info, frame_saved_regs) \
+{ i386_frame_find_saved_regs ((frame_info), &(frame_saved_regs)); }
+
+
+/* Things needed for making the inferior call functions. */
+
+/* Push an empty stack frame, to record the current PC, etc. */
+
+#define PUSH_DUMMY_FRAME { i386_push_dummy_frame (); }
+
+/* Discard from the stack the innermost frame, restoring all registers. */
+
+#define POP_FRAME { i386_pop_frame (); }
+
+/* this is
+ * call 11223344 (32 bit relative)
+ * int3
+ */
+
+#define CALL_DUMMY { 0x223344e8, 0xcc11 }
+
+#define CALL_DUMMY_LENGTH 8
+
+#define CALL_DUMMY_START_OFFSET 0 /* Start execution at beginning of dummy */
+
+/* Insert the specified number of args and function address
+ into a call sequence of the above form stored at DUMMYNAME. */
+
+#define FIX_CALL_DUMMY(dummyname, pc, fun, nargs, type) \
+{ \
+ int from, to, delta, loc; \
+ loc = (int)(read_register (SP_REGNUM) - CALL_DUMMY_LENGTH); \
+ from = loc + 5; \
+ to = (int)(fun); \
+ delta = to - from; \
+ *(int *)((char *)(dummyname) + 1) = delta; \
+}
+
+
+#if 0
+/* Interface definitions for kernel debugger KDB. */
+
+/* Map machine fault codes into signal numbers.
+ First subtract 0, divide by 4, then index in a table.
+ Faults for which the entry in this table is 0
+ are not handled by KDB; the program's own trap handler
+ gets to handle then. */
+
+#define FAULT_CODE_ORIGIN 0
+#define FAULT_CODE_UNITS 4
+#define FAULT_TABLE \
+{ 0, 0, 0, 0, 0, 0, 0, 0, \
+ 0, 0, 0, 0, 0, 0, 0, 0, \
+ 0, 0, 0, 0, 0, 0, 0, 0}
+
+/* Start running with a stack stretching from BEG to END.
+ BEG and END should be symbols meaningful to the assembler.
+ This is used only for kdb. */
+
+#define INIT_STACK(beg, end) {}
+
+/* Push the frame pointer register on the stack. */
+#define PUSH_FRAME_PTR {}
+
+/* Copy the top-of-stack to the frame pointer register. */
+#define POP_FRAME_PTR {}
+
+/* After KDB is entered by a fault, push all registers
+ that GDB thinks about (all NUM_REGS of them),
+ so that they appear in order of ascending GDB register number.
+ The fault code will be on the stack beyond the last register. */
+
+#define PUSH_REGISTERS {}
+
+/* Assuming the registers (including processor status) have been
+ pushed on the stack in order of ascending GDB register number,
+ restore them and return to the address in the saved PC register. */
+
+#define POP_REGISTERS {}
+#endif
diff --git a/gnu/usr.bin/kgdb/config/m-i386bsd.h b/gnu/usr.bin/kgdb/config/m-i386bsd.h
new file mode 100644
index 000000000000..99b429aaf210
--- /dev/null
+++ b/gnu/usr.bin/kgdb/config/m-i386bsd.h
@@ -0,0 +1,375 @@
+/*-
+ * This code is derived from software copyrighted by the Free Software
+ * Foundation.
+ *
+ * Modified 1991 by Donn Seeley at UUNET Technologies, Inc.
+ * Modified 1991 by William Jolitz at UUNET Technologies, Inc.
+ *
+ * @(#)m-i386bsd.h 6.7 (Berkeley) 5/8/91
+ */
+
+/* Macro definitions for i386.
+ Copyright (C) 1986, 1987, 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+/* Define the bit, byte, and word ordering of the machine. */
+/* #define BITS_BIG_ENDIAN */
+/* #define BYTES_BIG_ENDIAN */
+/* #define WORDS_BIG_ENDIAN */
+
+/*
+ * Changes for 80386 by Pace Willisson (pace@prep.ai.mit.edu)
+ * July 1988
+ * [ MODIFIED FOR 386BSD W. Jolitz ]
+ */
+
+#ifndef i386
+#define i386 1
+#define i386b 1
+#endif
+
+#define IEEE_FLOAT
+#define LONG_LONG
+
+/* Library stuff: POSIX tty (not supported yet), V7 tty (sigh), vprintf. */
+
+#define HAVE_TERMIOS 1
+#define USE_OLD_TTY 1
+#define HAVE_VPRINTF 1
+
+/* We support local and remote kernel debugging. */
+
+#define KERNELDEBUG 1
+
+/* Get rid of any system-imposed stack limit if possible. */
+
+#define SET_STACK_LIMIT_HUGE
+
+/* Define this if the C compiler puts an underscore at the front
+ of external names before giving them to the linker. */
+
+#define NAMES_HAVE_UNDERSCORE
+
+/* Specify debugger information format. */
+
+#define READ_DBX_FORMAT
+
+/* number of traps that happen between exec'ing the shell
+ * to run an inferior, and when we finally get to
+ * the inferior code. This is 2 on most implementations.
+ */
+#define START_INFERIOR_TRAPS_EXPECTED 2
+
+/* Offset from address of function to start of its code.
+ Zero on most machines. */
+
+#define FUNCTION_START_OFFSET 0
+
+/* Advance PC across any function entry prologue instructions
+ to reach some "real" code. */
+
+#define SKIP_PROLOGUE(frompc) {(frompc) = i386_skip_prologue((frompc));}
+
+/* Immediately after a function call, return the saved pc.
+ Can't always go through the frames for this because on some machines
+ the new frame is not set up until the new function executes
+ some instructions. */
+
+#define SAVED_PC_AFTER_CALL(frame) \
+ (read_memory_integer (read_register (SP_REGNUM), 4))
+
+/* This is the amount to subtract from u.u_ar0
+ to get the offset in the core file of the register values. */
+
+#ifdef NEWVM
+#include <machine/vmparam.h>
+#define KERNEL_U_ADDR USRSTACK
+#else
+#define KERNEL_U_ADDR 0xfdffd000
+#endif
+
+/* Address of end of stack space. */
+
+#define STACK_END_ADDR KERNEL_U_ADDR
+
+/* Stack grows downward. */
+
+#define INNER_THAN <
+
+/* Sequence of bytes for breakpoint instruction. */
+
+#define BREAKPOINT {0xcc}
+
+/* Amount PC must be decremented by after a breakpoint.
+ This is often the number of bytes in BREAKPOINT
+ but not always. */
+
+#define DECR_PC_AFTER_BREAK 1
+
+/* Nonzero if instruction at PC is a return instruction. */
+
+#define ABOUT_TO_RETURN(pc) \
+ strchr("\302\303\312\313\317", read_memory_integer(pc, 1))
+
+/* Return 1 if P points to an invalid floating point value.
+ LEN is the length in bytes -- not relevant on the 386. */
+
+#define INVALID_FLOAT(p, len) (0)
+
+/* code to execute to print interesting information about the
+ * floating point processor (if any)
+ * No need to define if there is nothing to do.
+ */
+#define FLOAT_INFO { i386_float_info (); }
+
+
+/* Largest integer type */
+#define LONGEST long long
+
+/* Name of the builtin type for the LONGEST type above. */
+#define BUILTIN_TYPE_LONGEST builtin_type_long_long
+
+/* Say how long (ordinary) registers are. */
+
+#define REGISTER_TYPE long
+
+/* Number of machine registers */
+
+#define NUM_REGS 16
+
+/* Initializer for an array of names of registers.
+ There should be NUM_REGS strings in this initializer. */
+
+/* the order of the first 8 registers must match the compiler's
+ * numbering scheme (which is the same as the 386 scheme)
+ * also, this table must match regmap in i386-pinsn.c.
+ */
+#define REGISTER_NAMES { "eax", "ecx", "edx", "ebx", \
+ "esp", "ebp", "esi", "edi", \
+ "eip", "ps", "cs", "ss", \
+ "ds", "es", "fs", "gs", \
+ }
+
+/* Register numbers of various important registers.
+ Note that some of these values are "real" register numbers,
+ and correspond to the general registers of the machine,
+ and some are "phony" register numbers which are too large
+ to be actual register numbers as far as the user is concerned
+ but do serve to get the desired values when passed to read_register. */
+
+#define FP_REGNUM 5 /* Contains address of executing stack frame */
+#define SP_REGNUM 4 /* Contains address of top of stack */
+
+#define PC_REGNUM 8
+#define PS_REGNUM 9
+
+#define REGISTER_U_ADDR(addr, blockend, regno) \
+ (addr) = i386_register_u_addr ((blockend),(regno));
+
+/* Total amount of space needed to store our copies of the machine's
+ register state, the array `registers'. */
+#define REGISTER_BYTES (NUM_REGS * 4)
+
+/* Index within `registers' of the first byte of the space for
+ register N. */
+
+#define REGISTER_BYTE(N) ((N)*4)
+
+/* Number of bytes of storage in the actual machine representation
+ for register N. */
+
+#define REGISTER_RAW_SIZE(N) (4)
+
+/* Number of bytes of storage in the program's representation
+ for register N. */
+
+#define REGISTER_VIRTUAL_SIZE(N) (4)
+
+/* Largest value REGISTER_RAW_SIZE can have. */
+
+#define MAX_REGISTER_RAW_SIZE 4
+
+/* Largest value REGISTER_VIRTUAL_SIZE can have. */
+
+#define MAX_REGISTER_VIRTUAL_SIZE 4
+
+/* Nonzero if register N requires conversion
+ from raw format to virtual format. */
+
+#define REGISTER_CONVERTIBLE(N) (0)
+
+/* Convert data from raw format for register REGNUM
+ to virtual format for register REGNUM. */
+
+#define REGISTER_CONVERT_TO_VIRTUAL(REGNUM,FROM,TO) {bcopy ((FROM), (TO), 4);}
+
+/* Convert data from virtual format for register REGNUM
+ to raw format for register REGNUM. */
+
+#define REGISTER_CONVERT_TO_RAW(REGNUM,FROM,TO) {bcopy ((FROM), (TO), 4);}
+
+/* Return the GDB type object for the "standard" data type
+ of data in register N. */
+
+#define REGISTER_VIRTUAL_TYPE(N) (builtin_type_int)
+
+/* Store the address of the place in which to copy the structure the
+ subroutine will return. This is called from call_function. */
+
+#define STORE_STRUCT_RETURN(ADDR, SP) \
+ { (SP) -= sizeof (ADDR); \
+ write_memory ((SP), &(ADDR), sizeof (ADDR)); }
+
+/* Extract from an array REGBUF containing the (raw) register state
+ a function return value of type TYPE, and copy that, in virtual format,
+ into VALBUF. */
+
+#define EXTRACT_RETURN_VALUE(TYPE,REGBUF,VALBUF) \
+ bcopy (REGBUF, VALBUF, TYPE_LENGTH (TYPE))
+
+/* Write into appropriate registers a function return value
+ of type TYPE, given in virtual format. */
+
+#define STORE_RETURN_VALUE(TYPE,VALBUF) \
+ write_register_bytes (0, VALBUF, TYPE_LENGTH (TYPE))
+
+/* Extract from an array REGBUF containing the (raw) register state
+ the address in which a function should return its structure value,
+ as a CORE_ADDR (or an expression that can be used as one). */
+
+#define EXTRACT_STRUCT_VALUE_ADDRESS(REGBUF) (*(int *)(REGBUF))
+
+
+/* Describe the pointer in each stack frame to the previous stack frame
+ (its caller). */
+
+/* FRAME_CHAIN takes a frame's nominal address
+ and produces the frame's chain-pointer.
+
+ FRAME_CHAIN_COMBINE takes the chain pointer and the frame's nominal address
+ and produces the nominal address of the caller frame.
+
+ However, if FRAME_CHAIN_VALID returns zero,
+ it means the given frame is the outermost one and has no caller.
+ In that case, FRAME_CHAIN_COMBINE is not used. */
+
+#define FRAME_CHAIN(thisframe) \
+ (outside_startup_file ((thisframe)->pc) ? \
+ read_memory_integer ((thisframe)->frame, 4) :\
+ 0)
+
+#ifdef KERNELDEBUG
+#define KERNTEXT_BASE 0xfe000000
+#ifdef NEWVM
+#define KERNSTACK_TOP (read_register(SP_REGNUM) + 0x2000) /* approximate */
+#else
+/* #define KERNSTACK_TOP (P1PAGES << PGSHIFT) */
+#define KERNSTACK_TOP 0xfe000000
+#endif
+extern int kernel_debugging;
+#define FRAME_CHAIN_VALID(chain, thisframe) \
+ (chain != 0 && \
+ !kernel_debugging ? outside_startup_file(FRAME_SAVED_PC(thisframe)) :\
+ (chain >= read_register(SP_REGNUM) && chain < KERNSTACK_TOP))
+#else
+#define FRAME_CHAIN_VALID(chain, thisframe) \
+ (chain != 0 && (outside_startup_file (FRAME_SAVED_PC (thisframe))))
+#endif
+
+#define FRAME_CHAIN_COMBINE(chain, thisframe) (chain)
+
+/* Define other aspects of the stack frame. */
+
+/* A macro that tells us whether the function invocation represented
+ by FI does not have a frame on the stack associated with it. If it
+ does not, FRAMELESS is set to 1, else 0. */
+#define FRAMELESS_FUNCTION_INVOCATION(FI, FRAMELESS) \
+ FRAMELESS_LOOK_FOR_PROLOGUE(FI, FRAMELESS)
+
+#define FRAME_SAVED_PC(FRAME) (read_memory_integer ((FRAME)->frame + 4, 4))
+
+#define FRAME_ARGS_ADDRESS(fi) ((fi)->frame)
+
+#define FRAME_LOCALS_ADDRESS(fi) ((fi)->frame)
+
+/* Return number of args passed to a frame.
+ Can return -1, meaning no way to tell. */
+
+#define FRAME_NUM_ARGS(numargs, fi) (numargs) = i386_frame_num_args(fi)
+
+/* Return number of bytes at start of arglist that are not really args. */
+
+#define FRAME_ARGS_SKIP 8
+
+/* Put here the code to store, into a struct frame_saved_regs,
+ the addresses of the saved registers of frame described by FRAME_INFO.
+ This includes special registers such as pc and fp saved in special
+ ways in the stack frame. sp is even more special:
+ the address we return for it IS the sp for the next frame. */
+
+#define FRAME_FIND_SAVED_REGS(frame_info, frame_saved_regs) \
+{ i386_frame_find_saved_regs ((frame_info), &(frame_saved_regs)); }
+
+
+/* Discard from the stack the innermost frame, restoring all registers. */
+
+#define POP_FRAME { i386_pop_frame (); }
+
+#define NEW_CALL_FUNCTION
+
+#if 0
+/* Interface definitions for kernel debugger KDB. */
+
+/* Map machine fault codes into signal numbers.
+ First subtract 0, divide by 4, then index in a table.
+ Faults for which the entry in this table is 0
+ are not handled by KDB; the program's own trap handler
+ gets to handle then. */
+
+#define FAULT_CODE_ORIGIN 0
+#define FAULT_CODE_UNITS 4
+#define FAULT_TABLE \
+{ 0, 0, 0, 0, 0, 0, 0, 0, \
+ 0, 0, 0, 0, 0, 0, 0, 0, \
+ 0, 0, 0, 0, 0, 0, 0, 0}
+
+/* Start running with a stack stretching from BEG to END.
+ BEG and END should be symbols meaningful to the assembler.
+ This is used only for kdb. */
+
+#define INIT_STACK(beg, end) {}
+
+/* Push the frame pointer register on the stack. */
+#define PUSH_FRAME_PTR {}
+
+/* Copy the top-of-stack to the frame pointer register. */
+#define POP_FRAME_PTR {}
+
+/* After KDB is entered by a fault, push all registers
+ that GDB thinks about (all NUM_REGS of them),
+ so that they appear in order of ascending GDB register number.
+ The fault code will be on the stack beyond the last register. */
+
+#define PUSH_REGISTERS {}
+
+/* Assuming the registers (including processor status) have been
+ pushed on the stack in order of ascending GDB register number,
+ restore them and return to the address in the saved PC register. */
+
+#define POP_REGISTERS {}
+#endif
diff --git a/gnu/usr.bin/kgdb/config/m-i386g-sv32.h b/gnu/usr.bin/kgdb/config/m-i386g-sv32.h
new file mode 100644
index 000000000000..3d69eea184e0
--- /dev/null
+++ b/gnu/usr.bin/kgdb/config/m-i386g-sv32.h
@@ -0,0 +1,28 @@
+/* Macro defintions for i386, running System V 3.2.
+ Copyright (C) 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include "m-i386gas.h"
+
+/* Apparently there is inconsistency among various System V's about what
+ the name of this field is. */
+#define U_FPSTATE(u) u.u_fps.u_fpstate
+
+/* TIOCGETC is defined in System V 3.2 termio.h, but struct tchars
+ is not. This makes problems for inflow.c. */
+#define TIOCGETC_BROKEN
diff --git a/gnu/usr.bin/kgdb/config/m-i386gas.h b/gnu/usr.bin/kgdb/config/m-i386gas.h
new file mode 100644
index 000000000000..eea51ce7d350
--- /dev/null
+++ b/gnu/usr.bin/kgdb/config/m-i386gas.h
@@ -0,0 +1,37 @@
+/* Macro definitions for i386 using the GNU object file format.
+ Copyright (C) 1986, 1987, 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+/*
+ * Changes for 80386 by Pace Willisson (pace@prep.ai.mit.edu)
+ * July 1988
+ *
+ * i386gnu: COFF_ENCAPSULATE
+ */
+
+
+#define COFF_ENCAPSULATE
+
+#include "m-i386.h"
+
+
+#define NAMES_HAVE_UNDERSCORE
+
+#undef COFF_FORMAT
+#define READ_DBX_FORMAT
+
diff --git a/gnu/usr.bin/kgdb/copying.c b/gnu/usr.bin/kgdb/copying.c
new file mode 100644
index 000000000000..b3d75198078e
--- /dev/null
+++ b/gnu/usr.bin/kgdb/copying.c
@@ -0,0 +1,215 @@
+/* Do not modify this file; it is created automatically
+ by copying.awk. */
+extern int immediate_quit;
+static void
+copying_info ()
+{
+ immediate_quit++;
+ printf_filtered ("\n");
+ printf_filtered (" GNU GENERAL PUBLIC LICENSE\n");
+ printf_filtered (" Version 1, February 1989\n");
+ printf_filtered ("\n");
+ printf_filtered (" Copyright (C) 1989 Free Software Foundation, Inc.\n");
+ printf_filtered (" 675 Mass Ave, Cambridge, MA 02139, USA\n");
+ printf_filtered (" Everyone is permitted to copy and distribute verbatim copies\n");
+ printf_filtered (" of this license document, but changing it is not allowed.\n");
+ printf_filtered ("\n");
+ printf_filtered (" Preamble\n");
+ printf_filtered ("\n");
+ printf_filtered (" The license agreements of most software companies try to keep users\n");
+ printf_filtered ("at the mercy of those companies. By contrast, our General Public\n");
+ printf_filtered ("License is intended to guarantee your freedom to share and change free\n");
+ printf_filtered ("software--to make sure the software is free for all its users. The\n");
+ printf_filtered ("General Public License applies to the Free Software Foundation's\n");
+ printf_filtered ("software and to any other program whose authors commit to using it.\n");
+ printf_filtered ("You can use it for your programs, too.\n");
+ printf_filtered ("\n");
+ printf_filtered (" When we speak of free software, we are referring to freedom, not\n");
+ printf_filtered ("price. Specifically, the General Public License is designed to make\n");
+ printf_filtered ("sure that you have the freedom to give away or sell copies of free\n");
+ printf_filtered ("software, that you receive source code or can get it if you want it,\n");
+ printf_filtered ("that you can change the software or use pieces of it in new free\n");
+ printf_filtered ("programs; and that you know you can do these things.\n");
+ printf_filtered ("\n");
+ printf_filtered (" To protect your rights, we need to make restrictions that forbid\n");
+ printf_filtered ("anyone to deny you these rights or to ask you to surrender the rights.\n");
+ printf_filtered ("These restrictions translate to certain responsibilities for you if you\n");
+ printf_filtered ("distribute copies of the software, or if you modify it.\n");
+ printf_filtered ("\n");
+ printf_filtered (" For example, if you distribute copies of a such a program, whether\n");
+ printf_filtered ("gratis or for a fee, you must give the recipients all the rights that\n");
+ printf_filtered ("you have. You must make sure that they, too, receive or can get the\n");
+ printf_filtered ("source code. And you must tell them their rights.\n");
+ printf_filtered ("\n");
+ printf_filtered (" We protect your rights with two steps: (1) copyright the software, and\n");
+ printf_filtered ("(2) offer you this license which gives you legal permission to copy,\n");
+ printf_filtered ("distribute and/or modify the software.\n");
+ printf_filtered ("\n");
+ printf_filtered (" Also, for each author's protection and ours, we want to make certain\n");
+ printf_filtered ("that everyone understands that there is no warranty for this free\n");
+ printf_filtered ("software. If the software is modified by someone else and passed on, we\n");
+ printf_filtered ("want its recipients to know that what they have is not the original, so\n");
+ printf_filtered ("that any problems introduced by others will not reflect on the original\n");
+ printf_filtered ("authors' reputations.\n");
+ printf_filtered ("\n");
+ printf_filtered (" The precise terms and conditions for copying, distribution and\n");
+ printf_filtered ("modification follow.\n");
+ printf_filtered (" \n");
+ printf_filtered (" GNU GENERAL PUBLIC LICENSE\n");
+ printf_filtered (" TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n");
+ printf_filtered ("\n");
+ printf_filtered (" 0. This License Agreement applies to any program or other work which\n");
+ printf_filtered ("contains a notice placed by the copyright holder saying it may be\n");
+ printf_filtered ("distributed under the terms of this General Public License. The\n");
+ printf_filtered ("\"Program\", below, refers to any such program or work, and a \"work based\n");
+ printf_filtered ("on the Program\" means either the Program or any work containing the\n");
+ printf_filtered ("Program or a portion of it, either verbatim or with modifications. Each\n");
+ printf_filtered ("licensee is addressed as \"you\".\n");
+ printf_filtered ("\n");
+ printf_filtered (" 1. You may copy and distribute verbatim copies of the Program's source\n");
+ printf_filtered ("code as you receive it, in any medium, provided that you conspicuously and\n");
+ printf_filtered ("appropriately publish on each copy an appropriate copyright notice and\n");
+ printf_filtered ("disclaimer of warranty; keep intact all the notices that refer to this\n");
+ printf_filtered ("General Public License and to the absence of any warranty; and give any\n");
+ printf_filtered ("other recipients of the Program a copy of this General Public License\n");
+ printf_filtered ("along with the Program. You may charge a fee for the physical act of\n");
+ printf_filtered ("transferring a copy.\n");
+ printf_filtered ("\n");
+ printf_filtered (" 2. You may modify your copy or copies of the Program or any portion of\n");
+ printf_filtered ("it, and copy and distribute such modifications under the terms of Paragraph\n");
+ printf_filtered ("1 above, provided that you also do the following:\n");
+ printf_filtered ("\n");
+ printf_filtered (" a) cause the modified files to carry prominent notices stating that\n");
+ printf_filtered (" you changed the files and the date of any change; and\n");
+ printf_filtered ("\n");
+ printf_filtered (" b) cause the whole of any work that you distribute or publish, that\n");
+ printf_filtered (" in whole or in part contains the Program or any part thereof, either\n");
+ printf_filtered (" with or without modifications, to be licensed at no charge to all\n");
+ printf_filtered (" third parties under the terms of this General Public License (except\n");
+ printf_filtered (" that you may choose to grant warranty protection to some or all\n");
+ printf_filtered (" third parties, at your option).\n");
+ printf_filtered ("\n");
+ printf_filtered (" c) If the modified program normally reads commands interactively when\n");
+ printf_filtered (" run, you must cause it, when started running for such interactive use\n");
+ printf_filtered (" in the simplest and most usual way, to print or display an\n");
+ printf_filtered (" announcement including an appropriate copyright notice and a notice\n");
+ printf_filtered (" that there is no warranty (or else, saying that you provide a\n");
+ printf_filtered (" warranty) and that users may redistribute the program under these\n");
+ printf_filtered (" conditions, and telling the user how to view a copy of this General\n");
+ printf_filtered (" Public License.\n");
+ printf_filtered ("\n");
+ printf_filtered (" d) You may charge a fee for the physical act of transferring a\n");
+ printf_filtered (" copy, and you may at your option offer warranty protection in\n");
+ printf_filtered (" exchange for a fee.\n");
+ printf_filtered ("\n");
+ printf_filtered ("Mere aggregation of another independent work with the Program (or its\n");
+ printf_filtered ("derivative) on a volume of a storage or distribution medium does not bring\n");
+ printf_filtered ("the other work under the scope of these terms.\n");
+ printf_filtered (" \n");
+ printf_filtered (" 3. You may copy and distribute the Program (or a portion or derivative of\n");
+ printf_filtered ("it, under Paragraph 2) in object code or executable form under the terms of\n");
+ printf_filtered ("Paragraphs 1 and 2 above provided that you also do one of the following:\n");
+ printf_filtered ("\n");
+ printf_filtered (" a) accompany it with the complete corresponding machine-readable\n");
+ printf_filtered (" source code, which must be distributed under the terms of\n");
+ printf_filtered (" Paragraphs 1 and 2 above; or,\n");
+ printf_filtered ("\n");
+ printf_filtered (" b) accompany it with a written offer, valid for at least three\n");
+ printf_filtered (" years, to give any third party free (except for a nominal charge\n");
+ printf_filtered (" for the cost of distribution) a complete machine-readable copy of the\n");
+ printf_filtered (" corresponding source code, to be distributed under the terms of\n");
+ printf_filtered (" Paragraphs 1 and 2 above; or,\n");
+ printf_filtered ("\n");
+ printf_filtered (" c) accompany it with the information you received as to where the\n");
+ printf_filtered (" corresponding source code may be obtained. (This alternative is\n");
+ printf_filtered (" allowed only for noncommercial distribution and only if you\n");
+ printf_filtered (" received the program in object code or executable form alone.)\n");
+ printf_filtered ("\n");
+ printf_filtered ("Source code for a work means the preferred form of the work for making\n");
+ printf_filtered ("modifications to it. For an executable file, complete source code means\n");
+ printf_filtered ("all the source code for all modules it contains; but, as a special\n");
+ printf_filtered ("exception, it need not include source code for modules which are standard\n");
+ printf_filtered ("libraries that accompany the operating system on which the executable\n");
+ printf_filtered ("file runs, or for standard header files or definitions files that\n");
+ printf_filtered ("accompany that operating system.\n");
+ printf_filtered ("\n");
+ printf_filtered (" 4. You may not copy, modify, sublicense, distribute or transfer the\n");
+ printf_filtered ("Program except as expressly provided under this General Public License.\n");
+ printf_filtered ("Any attempt otherwise to copy, modify, sublicense, distribute or transfer\n");
+ printf_filtered ("the Program is void, and will automatically terminate your rights to use\n");
+ printf_filtered ("the Program under this License. However, parties who have received\n");
+ printf_filtered ("copies, or rights to use copies, from you under this General Public\n");
+ printf_filtered ("License will not have their licenses terminated so long as such parties\n");
+ printf_filtered ("remain in full compliance.\n");
+ printf_filtered ("\n");
+ printf_filtered (" 5. By copying, distributing or modifying the Program (or any work based\n");
+ printf_filtered ("on the Program) you indicate your acceptance of this license to do so,\n");
+ printf_filtered ("and all its terms and conditions.\n");
+ printf_filtered ("\n");
+ printf_filtered (" 6. Each time you redistribute the Program (or any work based on the\n");
+ printf_filtered ("Program), the recipient automatically receives a license from the original\n");
+ printf_filtered ("licensor to copy, distribute or modify the Program subject to these\n");
+ printf_filtered ("terms and conditions. You may not impose any further restrictions on the\n");
+ printf_filtered ("recipients' exercise of the rights granted herein.\n");
+ printf_filtered (" \n");
+ printf_filtered (" 7. The Free Software Foundation may publish revised and/or new versions\n");
+ printf_filtered ("of the General Public License from time to time. Such new versions will\n");
+ printf_filtered ("be similar in spirit to the present version, but may differ in detail to\n");
+ printf_filtered ("address new problems or concerns.\n");
+ printf_filtered ("\n");
+ printf_filtered ("Each version is given a distinguishing version number. If the Program\n");
+ printf_filtered ("specifies a version number of the license which applies to it and \"any\n");
+ printf_filtered ("later version\", you have the option of following the terms and conditions\n");
+ printf_filtered ("either of that version or of any later version published by the Free\n");
+ printf_filtered ("Software Foundation. If the Program does not specify a version number of\n");
+ printf_filtered ("the license, you may choose any version ever published by the Free Software\n");
+ printf_filtered ("Foundation.\n");
+ printf_filtered ("\n");
+ printf_filtered (" 8. If you wish to incorporate parts of the Program into other free\n");
+ printf_filtered ("programs whose distribution conditions are different, write to the author\n");
+ printf_filtered ("to ask for permission. For software which is copyrighted by the Free\n");
+ printf_filtered ("Software Foundation, write to the Free Software Foundation; we sometimes\n");
+ printf_filtered ("make exceptions for this. Our decision will be guided by the two goals\n");
+ printf_filtered ("of preserving the free status of all derivatives of our free software and\n");
+ printf_filtered ("of promoting the sharing and reuse of software generally.\n");
+ printf_filtered ("\n");
+ immediate_quit--;
+}
+
+static void
+warranty_info ()
+{
+ immediate_quit++;
+ printf_filtered (" NO WARRANTY\n");
+ printf_filtered ("\n");
+ printf_filtered (" 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\n");
+ printf_filtered ("FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN\n");
+ printf_filtered ("OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES\n");
+ printf_filtered ("PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\n");
+ printf_filtered ("OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n");
+ printf_filtered ("MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS\n");
+ printf_filtered ("TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE\n");
+ printf_filtered ("PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\n");
+ printf_filtered ("REPAIR OR CORRECTION.\n");
+ printf_filtered ("\n");
+ printf_filtered (" 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\n");
+ printf_filtered ("WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\n");
+ printf_filtered ("REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\n");
+ printf_filtered ("INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\n");
+ printf_filtered ("OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\n");
+ printf_filtered ("TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\n");
+ printf_filtered ("YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\n");
+ printf_filtered ("PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\n");
+ printf_filtered ("POSSIBILITY OF SUCH DAMAGES.\n");
+ printf_filtered ("\n");
+ immediate_quit--;
+}
+
+void
+_initialize_copying ()
+{
+ add_info ("copying", copying_info,
+ "Conditions for redistributing copies of GDB.");
+ add_info ("warranty", warranty_info,
+ "Various kinds of warranty you do not have.");
+}
diff --git a/gnu/usr.bin/kgdb/core.c b/gnu/usr.bin/kgdb/core.c
new file mode 100644
index 000000000000..c717cc282ddb
--- /dev/null
+++ b/gnu/usr.bin/kgdb/core.c
@@ -0,0 +1,579 @@
+/*-
+ * This code is derived from software copyrighted by the Free Software
+ * Foundation.
+ *
+ * Modified 1991 by Donn Seeley at UUNET Technologies, Inc.
+ * Modified 1990 by Van Jacobson at Lawrence Berkeley Laboratory.
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)core.c 6.3 (Berkeley) 5/8/91";
+#endif /* not lint */
+
+/* Work with core dump and executable files, for GDB.
+ Copyright (C) 1986, 1987, 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include <stdio.h>
+#include "defs.h"
+#include "param.h"
+#include "frame.h" /* required by inferior.h */
+#include "inferior.h"
+
+#ifdef USG
+#include <sys/types.h>
+#include <fcntl.h>
+#endif
+
+#ifdef COFF_ENCAPSULATE
+#include "a.out.encap.h"
+#else
+#include <a.out.h>
+#endif
+#ifndef N_MAGIC
+#ifdef COFF_FORMAT
+#define N_MAGIC(exec) ((exec).magic)
+#else
+#define N_MAGIC(exec) ((exec).a_magic)
+#endif
+#endif
+#include <signal.h>
+#include <sys/param.h>
+#include <sys/dir.h>
+#include <sys/file.h>
+#include <sys/stat.h>
+
+#ifdef UMAX_CORE
+#include <sys/ptrace.h>
+#else
+#include <sys/user.h>
+#endif
+
+#ifndef N_TXTADDR
+#define N_TXTADDR(hdr) 0
+#endif /* no N_TXTADDR */
+
+#ifndef N_DATADDR
+#define N_DATADDR(hdr) hdr.a_text
+#endif /* no N_DATADDR */
+
+#ifndef COFF_FORMAT
+#ifndef AOUTHDR
+#define AOUTHDR struct exec
+#endif
+#endif
+
+extern core_file_command (), exec_file_command ();
+
+/* Hook for `exec_file_command' command to call. */
+
+void (*exec_file_display_hook) ();
+
+/* File names of core file and executable file. */
+
+char *corefile;
+char *execfile;
+
+/* Descriptors on which core file and executable file are open.
+ Note that the execchan is closed when an inferior is created
+ and reopened if the inferior dies or is killed. */
+
+int corechan;
+int execchan;
+
+/* Last modification time of executable file.
+ Also used in source.c to compare against mtime of a source file. */
+
+int exec_mtime;
+
+/* Virtual addresses of bounds of the two areas of memory in the core file. */
+
+CORE_ADDR data_start;
+CORE_ADDR data_end;
+CORE_ADDR stack_start;
+CORE_ADDR stack_end;
+
+#if defined (REG_STACK_SEGMENT)
+/* Start and end of the register stack segment. */
+CORE_ADDR reg_stack_start;
+CORE_ADDR reg_stack_end;
+#endif /* REG_STACK_SEGMENT */
+
+/* Virtual addresses of bounds of two areas of memory in the exec file.
+ Note that the data area in the exec file is used only when there is no core file. */
+
+CORE_ADDR text_start;
+CORE_ADDR text_end;
+
+CORE_ADDR exec_data_start;
+CORE_ADDR exec_data_end;
+
+/* Offset within executable file of start of text area data. */
+
+int text_offset;
+
+/* Offset within executable file of start of data area data. */
+
+int exec_data_offset;
+
+/* Offset within core file of start of data area data. */
+
+int data_offset;
+
+/* Offset within core file of start of stack area data. */
+
+int stack_offset;
+
+#ifdef COFF_FORMAT
+/* various coff data structures */
+
+FILHDR file_hdr;
+SCNHDR text_hdr;
+SCNHDR data_hdr;
+
+#endif /* not COFF_FORMAT */
+
+/* a.out header saved in core file. */
+
+AOUTHDR core_aouthdr;
+
+/* a.out header of exec file. */
+
+AOUTHDR exec_aouthdr;
+
+void validate_files ();
+unsigned int register_addr ();
+
+/* Call this to specify the hook for exec_file_command to call back.
+ This is called from the x-window display code. */
+
+void
+specify_exec_file_hook (hook)
+ void (*hook) ();
+{
+ exec_file_display_hook = hook;
+}
+
+/* The exec file must be closed before running an inferior.
+ If it is needed again after the inferior dies, it must
+ be reopened. */
+
+void
+close_exec_file ()
+{
+ if (execchan >= 0)
+ close (execchan);
+ execchan = -1;
+}
+
+void
+reopen_exec_file ()
+{
+ if (execchan < 0 && execfile != 0)
+ {
+ char *filename = concat (execfile, "", "");
+ exec_file_command (filename, 0);
+ free (filename);
+ }
+}
+
+/* If we have both a core file and an exec file,
+ print a warning if they don't go together.
+ This should really check that the core file came
+ from that exec file, but I don't know how to do it. */
+
+void
+validate_files ()
+{
+ if (execfile != 0 && corefile != 0)
+ {
+ struct stat st_core;
+
+ if (fstat (corechan, &st_core) < 0)
+ /* It might be a good idea to print an error message.
+ On the other hand, if the user tries to *do* anything with
+ the core file, (s)he'll find out soon enough. */
+ return;
+
+ if (N_MAGIC (core_aouthdr) != 0
+ && bcmp (&core_aouthdr, &exec_aouthdr, sizeof core_aouthdr))
+ printf ("Warning: core file does not match specified executable file.\n");
+ else if (exec_mtime > st_core.st_mtime) {
+#ifdef KERNELDEBUG
+ extern int kernel_debugging;
+ if (!kernel_debugging)
+#endif
+ printf ("Warning: exec file is newer than core file.\n");
+ }
+ }
+}
+
+/* Return the name of the executable file as a string.
+ ERR nonzero means get error if there is none specified;
+ otherwise return 0 in that case. */
+
+char *
+get_exec_file (err)
+ int err;
+{
+ if (err && execfile == 0)
+ error ("No executable file specified.\n\
+Use the \"exec-file\" and \"symbol-file\" commands.");
+ return execfile;
+}
+
+int
+have_core_file_p ()
+{
+ return corefile != 0;
+}
+
+static void
+files_info ()
+{
+ char *symfile;
+ extern char *get_sym_file ();
+
+ if (execfile)
+ printf ("Executable file \"%s\".\n", execfile);
+ else
+ printf ("No executable file\n");
+ if (corefile == 0)
+ printf ("No core dump file\n");
+ else
+ printf ("Core dump file \"%s\".\n", corefile);
+
+ if (have_inferior_p ())
+ printf ("Using the running image of the program, rather than these files.\n");
+
+ symfile = get_sym_file ();
+ if (symfile != 0)
+ printf ("Symbols from \"%s\".\n", symfile);
+
+#ifdef FILES_INFO_HOOK
+ if (FILES_INFO_HOOK ())
+ return;
+#endif
+
+ if (! have_inferior_p ())
+ {
+ if (execfile)
+ {
+ printf ("Text segment in executable from 0x%x to 0x%x.\n",
+ text_start, text_end);
+ printf ("Data segment in executable from 0x%x to 0x%x.\n",
+ exec_data_start, exec_data_end);
+ if (corefile)
+ printf ("(But since we have a core file, we're using...)\n");
+ }
+ if (corefile)
+ {
+ printf ("Data segment in core file from 0x%x to 0x%x.\n",
+ data_start, data_end);
+ printf ("Stack segment in core file from 0x%x to 0x%x.\n",
+ stack_start, stack_end);
+ }
+ }
+}
+
+/* Read "memory data" from core file and/or executable file.
+ Returns zero if successful, 1 if xfer_core_file failed, errno value if
+ ptrace failed. */
+
+int
+read_memory (memaddr, myaddr, len)
+ CORE_ADDR memaddr;
+ char *myaddr;
+ int len;
+{
+ if (len == 0)
+ return 0;
+
+ if (have_inferior_p ())
+ {
+ if (remote_debugging)
+ return remote_read_inferior_memory (memaddr, myaddr, len);
+ else
+ return read_inferior_memory (memaddr, myaddr, len);
+ }
+ else
+ return xfer_core_file (memaddr, myaddr, len);
+}
+
+/* Write LEN bytes of data starting at address MYADDR
+ into debugged program memory at address MEMADDR.
+ Returns zero if successful, or an errno value if ptrace failed. */
+
+int
+write_memory (memaddr, myaddr, len)
+ CORE_ADDR memaddr;
+ char *myaddr;
+ int len;
+{
+ if (have_inferior_p ())
+ {
+ if (remote_debugging)
+ return remote_write_inferior_memory (memaddr, myaddr, len);
+ else
+ return write_inferior_memory (memaddr, myaddr, len);
+ }
+ else
+ error ("Can write memory only when program being debugged is running.");
+}
+
+#ifndef XFER_CORE_FILE
+int (*core_file_hook)(); /* hook to handle special core files like
+ like /dev/mem and crash dumps */
+
+/* Read from the program's memory (except for inferior processes).
+ This function is misnamed, since it only reads, never writes; and
+ since it will use the core file and/or executable file as necessary.
+
+ It should be extended to write as well as read, FIXME, for patching files.
+
+ Return 0 if address could be read, 1 if not. */
+
+int
+xfer_core_file (memaddr, myaddr, len)
+ CORE_ADDR memaddr;
+ char *myaddr;
+ int len;
+{
+ register int i;
+ register int val;
+ int xferchan;
+ char **xferfile;
+ int fileptr;
+ int returnval = 0;
+
+ if (core_file_hook)
+ return ((*core_file_hook)(memaddr, myaddr, len));
+
+ while (len > 0)
+ {
+ xferfile = 0;
+ xferchan = 0;
+
+ /* Determine which file the next bunch of addresses reside in,
+ and where in the file. Set the file's read/write pointer
+ to point at the proper place for the desired address
+ and set xferfile and xferchan for the correct file.
+
+ If desired address is nonexistent, leave them zero.
+
+ i is set to the number of bytes that can be handled
+ along with the next address.
+
+ We put the most likely tests first for efficiency. */
+
+ /* Note that if there is no core file
+ data_start and data_end are equal. */
+ if (memaddr >= data_start && memaddr < data_end)
+ {
+ i = min (len, data_end - memaddr);
+ fileptr = memaddr - data_start + data_offset;
+ xferfile = &corefile;
+ xferchan = corechan;
+ }
+ /* Note that if there is no core file
+ stack_start and stack_end are equal. */
+ else if (memaddr >= stack_start && memaddr < stack_end)
+ {
+ i = min (len, stack_end - memaddr);
+ fileptr = memaddr - stack_start + stack_offset;
+ xferfile = &corefile;
+ xferchan = corechan;
+ }
+#ifdef REG_STACK_SEGMENT
+ /* Pyramids have an extra segment in the virtual address space
+ for the (control) stack of register-window frames */
+ else if (memaddr >= reg_stack_start && memaddr < reg_stack_end)
+ {
+ i = min (len, reg_stack_end - memaddr);
+ fileptr = memaddr - reg_stack_start + reg_stack_offset;
+ xferfile = &corefile;
+ xferchan = corechan;
+ }
+#endif /* REG_STACK_SEGMENT */
+
+ else if (corechan < 0
+ && memaddr >= exec_data_start && memaddr < exec_data_end)
+ {
+ i = min (len, exec_data_end - memaddr);
+ fileptr = memaddr - exec_data_start + exec_data_offset;
+ xferfile = &execfile;
+ xferchan = execchan;
+ }
+ else if (memaddr >= text_start && memaddr < text_end)
+ {
+ i = min (len, text_end - memaddr);
+ fileptr = memaddr - text_start + text_offset;
+ xferfile = &execfile;
+ xferchan = execchan;
+ }
+ else if (memaddr < text_start)
+ {
+ i = min (len, text_start - memaddr);
+ }
+ else if (memaddr >= text_end
+ && memaddr < (corechan >= 0? data_start : exec_data_start))
+ {
+ i = min (len, data_start - memaddr);
+ }
+ else if (corechan >= 0
+ && memaddr >= data_end && memaddr < stack_start)
+ {
+ i = min (len, stack_start - memaddr);
+ }
+ else if (corechan < 0 && memaddr >= exec_data_end)
+ {
+ /* Since there is nothing at higher addresses than data
+ (without a core file or an inferior, there is no
+ stack, set i to do the rest of the operation now. */
+ i = len;
+ }
+#ifdef REG_STACK_SEGMENT
+ else if (memaddr >= reg_stack_end && reg_stack_end != 0)
+ {
+ i = min (len, reg_stack_start - memaddr);
+ }
+ else if (memaddr >= stack_end && memaddr < reg_stack_start)
+#else /* no REG_STACK_SEGMENT. */
+ else if (memaddr >= stack_end && stack_end != 0)
+#endif /* no REG_STACK_SEGMENT. */
+ {
+ /* Since there is nothing at higher addresses than
+ the stack, set i to do the rest of the operation now. */
+ i = len;
+ }
+ else
+ {
+ /* Address did not classify into one of the known ranges.
+ This shouldn't happen; we catch the endpoints. */
+ fatal ("Internal: Bad case logic in xfer_core_file.");
+ }
+
+ /* Now we know which file to use.
+ Set up its pointer and transfer the data. */
+ if (xferfile)
+ {
+ if (*xferfile == 0)
+ if (xferfile == &execfile)
+ error ("No program file to examine.");
+ else
+ error ("No core dump file or running program to examine.");
+ val = lseek (xferchan, fileptr, 0);
+ if (val == -1)
+ perror_with_name (*xferfile);
+ val = myread (xferchan, myaddr, i);
+ if (val < 0)
+ perror_with_name (*xferfile);
+ }
+ /* If this address is for nonexistent memory,
+ read zeros if reading, or do nothing if writing.
+ Actually, we never right. */
+ else
+ {
+ bzero (myaddr, i);
+ returnval = 1;
+ }
+
+ memaddr += i;
+ myaddr += i;
+ len -= i;
+ }
+ return returnval;
+}
+#endif /* XFER_CORE_FILE */
+
+/* My replacement for the read system call.
+ Used like `read' but keeps going if `read' returns too soon. */
+
+int
+myread (desc, addr, len)
+ int desc;
+ char *addr;
+ int len;
+{
+ register int val;
+ int orglen = len;
+
+ while (len > 0)
+ {
+ val = read (desc, addr, len);
+ if (val < 0)
+ return val;
+ if (val == 0)
+ return orglen - len;
+ len -= val;
+ addr += val;
+ }
+ return orglen;
+}
+
+#ifdef REGISTER_U_ADDR
+
+/* Return the address in the core dump or inferior of register REGNO.
+ BLOCKEND is the address of the end of the user structure. */
+
+unsigned int
+register_addr (regno, blockend)
+ int regno;
+ int blockend;
+{
+ int addr;
+
+ if (regno < 0 || regno >= NUM_REGS)
+ error ("Invalid register number %d.", regno);
+
+ REGISTER_U_ADDR (addr, blockend, regno);
+
+ return addr;
+}
+
+#endif /* REGISTER_U_ADDR */
+
+void
+_initialize_core()
+{
+ corechan = -1;
+ execchan = -1;
+ corefile = 0;
+ execfile = 0;
+ exec_file_display_hook = 0;
+
+ text_start = 0;
+ text_end = 0;
+ data_start = 0;
+ data_end = 0;
+ exec_data_start = 0;
+ exec_data_end = 0;
+ stack_start = STACK_END_ADDR;
+ stack_end = STACK_END_ADDR;
+
+ add_com ("core-file", class_files, core_file_command,
+ "Use FILE as core dump for examining memory and registers.\n\
+No arg means have no core file.");
+ add_com ("exec-file", class_files, exec_file_command,
+ "Use FILE as program for getting contents of pure memory.\n\
+If FILE cannot be found as specified, your execution directory path\n\
+is searched for a command of that name.\n\
+No arg means have no executable file.");
+ add_info ("files", files_info, "Names of files being debugged.");
+}
+
diff --git a/gnu/usr.bin/kgdb/cplus-dem.c b/gnu/usr.bin/kgdb/cplus-dem.c
new file mode 100644
index 000000000000..ee7a32675233
--- /dev/null
+++ b/gnu/usr.bin/kgdb/cplus-dem.c
@@ -0,0 +1,996 @@
+/* Demangler for GNU C++
+ Copyright (C) 1989 Free Software Foundation, Inc.
+ written by James Clark (jjc@jclark.uucp)
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 1, or (at your option)
+ any later version.
+
+ 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. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+/* This is for g++ 1.36.1 (November 6 version). It will probably
+ require changes for any other version.
+
+ Modified for g++ 1.36.2 (November 18 version). */
+
+/* This file exports one function
+
+ char *cplus_demangle (const char *name, int mode)
+
+ If NAME is a mangled function name produced by GNU C++, then
+ a pointer to a malloced string giving a C++ representation
+ of the name will be returned; otherwise NULL will be returned.
+ It is the caller's responsibility to free the string which
+ is returned.
+
+ If MODE > 0, then ANSI qualifiers such as `const' and `void' are output.
+ Otherwise they are not.
+ If MODE >= 0, parameters are emitted; otherwise not.
+
+ For example,
+
+ cplus_demangle ("foo__1Ai", 0) => "A::foo(int)"
+ cplus_demangle ("foo__1Ai", 1) => "A::foo(int)"
+ cplus_demangle ("foo__1Ai", -1) => "A::foo"
+
+ cplus_demangle ("foo__1Afe", 0) => "A::foo(float,...)"
+ cplus_demangle ("foo__1Afe", 1) => "A::foo(float,...)"
+ cplus_demangle ("foo__1Afe", -1) => "A::foo"
+
+ This file imports xmalloc and xrealloc, which are like malloc and
+ realloc except that they generate a fatal error if there is no
+ available memory. */
+
+/* #define nounderscore 1 /* define this is names don't start with _ */
+
+#include <stdio.h>
+#include <ctype.h>
+
+#ifdef USG
+#include <memory.h>
+#include <string.h>
+#else
+#include <strings.h>
+#define memcpy(s1, s2, n) bcopy ((s2), (s1), (n))
+#define memcmp(s1, s2, n) bcmp ((s2), (s1), (n))
+#define strchr index
+#define strrchr rindex
+#endif
+
+#ifndef __STDC__
+#define const
+#endif
+
+#ifdef __STDC__
+extern char *cplus_demangle (const char *type, int mode);
+#else
+extern char *cplus_demangle ();
+#endif
+
+#ifdef __STDC__
+extern char *xmalloc (int);
+extern char *xrealloc (char *, int);
+#else
+extern char *xmalloc ();
+extern char *xrealloc ();
+#endif
+
+static char **typevec = 0;
+static int ntypes = 0;
+static int typevec_size = 0;
+
+static struct {
+ const char *in;
+ const char *out;
+} optable[] = {
+ "new", " new",
+ "delete", " delete",
+ "ne", "!=",
+ "eq", "==",
+ "ge", ">=",
+ "gt", ">",
+ "le", "<=",
+ "lt", "<",
+ "plus", "+",
+ "minus", "-",
+ "mult", "*",
+ "convert", "+", /* unary + */
+ "negate", "-", /* unary - */
+ "trunc_mod", "%",
+ "trunc_div", "/",
+ "truth_andif", "&&",
+ "truth_orif", "||",
+ "truth_not", "!",
+ "postincrement", "++",
+ "postdecrement", "--",
+ "bit_ior", "|",
+ "bit_xor", "^",
+ "bit_and", "&",
+ "bit_not", "~",
+ "call", "()",
+ "cond", "?:",
+ "alshift", "<<",
+ "arshift", ">>",
+ "component", "->",
+ "indirect", "*",
+ "method_call", "->()",
+ "addr", "&", /* unary & */
+ "array", "[]",
+ "nop", "", /* for operator= */
+};
+
+/* Beware: these aren't '\0' terminated. */
+
+typedef struct {
+ char *b; /* pointer to start of string */
+ char *p; /* pointer after last character */
+ char *e; /* pointer after end of allocated space */
+} string;
+
+#ifdef __STDC__
+static void string_need (string *s, int n);
+static void string_delete (string *s);
+static void string_init (string *s);
+static void string_clear (string *s);
+static int string_empty (string *s);
+static void string_append (string *p, const char *s);
+static void string_appends (string *p, string *s);
+static void string_appendn (string *p, const char *s, int n);
+static void string_prepend (string *p, const char *s);
+#if 0
+static void string_prepends (string *p, string *s);
+#endif
+static void string_prependn (string *p, const char *s, int n);
+static int get_count (const char **type, int *count);
+static int do_args (const char **type, string *decl, int arg_mode);
+static int do_type (const char **type, string *result, int arg_mode);
+static int do_arg (const char **type, string *result, int arg_mode);
+static void munge_function_name (string *name, int arg_mode);
+static void remember_type (const char *type, int len);
+#else
+static void string_need ();
+static void string_delete ();
+static void string_init ();
+static void string_clear ();
+static int string_empty ();
+static void string_append ();
+static void string_appends ();
+static void string_appendn ();
+static void string_prepend ();
+static void string_prepends ();
+static void string_prependn ();
+static int get_count ();
+static int do_args ();
+static int do_type ();
+static int do_arg ();
+static int do_args ();
+static void munge_function_name ();
+static void remember_type ();
+#endif
+
+char *
+cplus_demangle (type, arg_mode)
+ const char *type;
+ int arg_mode;
+{
+ string decl;
+ int n;
+ int success = 0;
+ int constructor = 0;
+ int const_flag = 0;
+ int i;
+ const char *p;
+#ifndef LONGERNAMES
+ const char *premangle;
+#endif
+
+# define print_ansi_qualifiers (arg_mode > 0)
+# define print_arg_types (arg_mode >= 0)
+
+ if (type == NULL || *type == '\0')
+ return NULL;
+#ifndef nounderscore
+ if (*type++ != '_')
+ return NULL;
+#endif
+ p = type;
+ while (*p != '\0' && !(*p == '_' && p[1] == '_'))
+ p++;
+ if (*p == '\0')
+ {
+ /* destructor */
+ if (type[0] == '_' && type[1] == '$' && type[2] == '_')
+ {
+ int n = (strlen (type) - 3)*2 + 3 + 2 + 1;
+ char *tem = (char *) xmalloc (n);
+ strcpy (tem, type + 3);
+ strcat (tem, "::~");
+ strcat (tem, type + 3);
+ strcat (tem, "()");
+ return tem;
+ }
+ /* static data member */
+ if (*type != '_' && (p = strchr (type, '$')) != NULL)
+ {
+ int n = strlen (type) + 2;
+ char *tem = (char *) xmalloc (n);
+ memcpy (tem, type, p - type);
+ strcpy (tem + (p - type), "::");
+ strcpy (tem + (p - type) + 2, p + 1);
+ return tem;
+ }
+ /* virtual table "_vt$" */
+ if (type[0] == '_' && type[1] == 'v' && type[2] == 't' && type[3] == '$')
+ {
+ int n = strlen (type + 4) + 14 + 1;
+ char *tem = (char *) xmalloc (n);
+ strcpy (tem, type + 4);
+ strcat (tem, " virtual table");
+ return tem;
+ }
+ return NULL;
+ }
+
+ string_init (&decl);
+
+ if (p == type)
+ {
+ if (!isdigit (p[2]))
+ {
+ string_delete (&decl);
+ return NULL;
+ }
+ constructor = 1;
+ }
+ else
+ {
+ string_appendn (&decl, type, p - type);
+ munge_function_name (&decl, arg_mode);
+ }
+ p += 2;
+
+#ifndef LONGERNAMES
+ premangle = p;
+#endif
+ switch (*p)
+ {
+ case 'C':
+ /* a const member function */
+ if (!isdigit (p[1]))
+ {
+ string_delete (&decl);
+ return NULL;
+ }
+ p += 1;
+ const_flag = 1;
+ /* fall through */
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ n = 0;
+ do
+ {
+ n *= 10;
+ n += *p - '0';
+ p += 1;
+ }
+ while (isdigit (*p));
+ if (strlen (p) < n)
+ {
+ string_delete (&decl);
+ return NULL;
+ }
+ if (constructor)
+ {
+ string_appendn (&decl, p, n);
+ string_append (&decl, "::");
+ string_appendn (&decl, p, n);
+ }
+ else
+ {
+ string_prepend (&decl, "::");
+ string_prependn (&decl, p, n);
+ }
+ p += n;
+#ifndef LONGERNAMES
+ remember_type (premangle, p - premangle);
+#endif
+ success = do_args (&p, &decl, arg_mode);
+ if (const_flag && print_arg_types)
+ string_append (&decl, " const");
+ break;
+ case 'F':
+ p += 1;
+ success = do_args (&p, &decl, arg_mode);
+ break;
+ }
+
+ for (i = 0; i < ntypes; i++)
+ if (typevec[i] != NULL)
+ free (typevec[i]);
+ ntypes = 0;
+ if (typevec != NULL)
+ {
+ free ((char *)typevec);
+ typevec = NULL;
+ typevec_size = 0;
+ }
+
+ if (success)
+ {
+ string_appendn (&decl, "", 1);
+ return decl.b;
+ }
+ else
+ {
+ string_delete (&decl);
+ return NULL;
+ }
+}
+
+static int
+get_count (type, count)
+ const char **type;
+ int *count;
+{
+ if (!isdigit (**type))
+ return 0;
+ *count = **type - '0';
+ *type += 1;
+ /* see flush_repeats in cplus-method.c */
+ if (isdigit (**type))
+ {
+ const char *p = *type;
+ int n = *count;
+ do
+ {
+ n *= 10;
+ n += *p - '0';
+ p += 1;
+ }
+ while (isdigit (*p));
+ if (*p == '_')
+ {
+ *type = p + 1;
+ *count = n;
+ }
+ }
+ return 1;
+}
+
+/* result will be initialised here; it will be freed on failure */
+
+static int
+do_type (type, result, arg_mode)
+ const char **type;
+ string *result;
+ int arg_mode;
+{
+ int n;
+ int done;
+ int non_empty = 0;
+ int success;
+ string decl;
+ const char *remembered_type;
+
+ string_init (&decl);
+ string_init (result);
+
+ done = 0;
+ success = 1;
+ while (success && !done)
+ {
+ int member;
+ switch (**type)
+ {
+ case 'P':
+ *type += 1;
+ string_prepend (&decl, "*");
+ break;
+
+ case 'R':
+ *type += 1;
+ string_prepend (&decl, "&");
+ break;
+
+ case 'T':
+ *type += 1;
+ if (!get_count (type, &n) || n >= ntypes)
+ success = 0;
+ else
+ {
+ remembered_type = typevec[n];
+ type = &remembered_type;
+ }
+ break;
+
+ case 'F':
+ *type += 1;
+ if (!string_empty (&decl) && decl.b[0] == '*')
+ {
+ string_prepend (&decl, "(");
+ string_append (&decl, ")");
+ }
+ if (!do_args (type, &decl, arg_mode) || **type != '_')
+ success = 0;
+ else
+ *type += 1;
+ break;
+
+ case 'M':
+ case 'O':
+ {
+ int constp = 0;
+ int volatilep = 0;
+
+ member = **type == 'M';
+ *type += 1;
+ if (!isdigit (**type))
+ {
+ success = 0;
+ break;
+ }
+ n = 0;
+ do
+ {
+ n *= 10;
+ n += **type - '0';
+ *type += 1;
+ }
+ while (isdigit (**type));
+ if (strlen (*type) < n)
+ {
+ success = 0;
+ break;
+ }
+ string_append (&decl, ")");
+ string_prepend (&decl, "::");
+ string_prependn (&decl, *type, n);
+ string_prepend (&decl, "(");
+ *type += n;
+ if (member)
+ {
+ if (**type == 'C')
+ {
+ *type += 1;
+ constp = 1;
+ }
+ if (**type == 'V')
+ {
+ *type += 1;
+ volatilep = 1;
+ }
+ if (*(*type)++ != 'F')
+ {
+ success = 0;
+ break;
+ }
+ }
+ if ((member && !do_args (type, &decl, arg_mode)) || **type != '_')
+ {
+ success = 0;
+ break;
+ }
+ *type += 1;
+ if (! print_ansi_qualifiers)
+ break;
+ if (constp)
+ {
+ if (non_empty)
+ string_append (&decl, " ");
+ else
+ non_empty = 1;
+ string_append (&decl, "const");
+ }
+ if (volatilep)
+ {
+ if (non_empty)
+ string_append (&decl, " ");
+ else
+ non_empty = 1;
+ string_append (&decl, "volatile");
+ }
+ break;
+ }
+
+ case 'C':
+ if ((*type)[1] == 'P')
+ {
+ *type += 1;
+ if (print_ansi_qualifiers)
+ {
+ if (!string_empty (&decl))
+ string_prepend (&decl, " ");
+ string_prepend (&decl, "const");
+ }
+ break;
+ }
+
+ /* fall through */
+ default:
+ done = 1;
+ break;
+ }
+ }
+
+ done = 0;
+ non_empty = 0;
+ while (success && !done)
+ {
+ switch (**type)
+ {
+ case 'C':
+ *type += 1;
+ if (print_ansi_qualifiers)
+ {
+ if (non_empty)
+ string_append (result, " ");
+ else
+ non_empty = 1;
+ string_append (result, "const");
+ }
+ break;
+ case 'U':
+ *type += 1;
+ if (non_empty)
+ string_append (result, " ");
+ else
+ non_empty = 1;
+ string_append (result, "unsigned");
+ break;
+ case 'V':
+ *type += 1;
+ if (print_ansi_qualifiers)
+ {
+ if (non_empty)
+ string_append (result, " ");
+ else
+ non_empty = 1;
+ string_append (result, "volatile");
+ }
+ break;
+ default:
+ done = 1;
+ break;
+ }
+ }
+
+ if (success)
+ switch (**type)
+ {
+ case '\0':
+ case '_':
+ break;
+ case 'v':
+ *type += 1;
+ if (non_empty)
+ string_append (result, " ");
+ string_append (result, "void");
+ break;
+ case 'x':
+ *type += 1;
+ if (non_empty)
+ string_append (result, " ");
+ string_append (result, "long long");
+ break;
+ case 'l':
+ *type += 1;
+ if (non_empty)
+ string_append (result, " ");
+ string_append (result, "long");
+ break;
+ case 'i':
+ *type += 1;
+ if (non_empty)
+ string_append (result, " ");
+ string_append (result, "int");
+ break;
+ case 's':
+ *type += 1;
+ if (non_empty)
+ string_append (result, " ");
+ string_append (result, "short");
+ break;
+ case 'c':
+ *type += 1;
+ if (non_empty)
+ string_append (result, " ");
+ string_append (result, "char");
+ break;
+ case 'r':
+ *type += 1;
+ if (non_empty)
+ string_append (result, " ");
+ string_append (result, "long double");
+ break;
+ case 'd':
+ *type += 1;
+ if (non_empty)
+ string_append (result, " ");
+ string_append (result, "double");
+ break;
+ case 'f':
+ *type += 1;
+ if (non_empty)
+ string_append (result, " ");
+ string_append (result, "float");
+ break;
+ case 'G':
+ *type += 1;
+ if (!isdigit (**type))
+ {
+ success = 0;
+ break;
+ }
+ /* fall through */
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ n = 0;
+ do
+ {
+ n *= 10;
+ n += **type - '0';
+ *type += 1;
+ }
+ while (isdigit (**type));
+ if (strlen (*type) < n)
+ {
+ success = 0;
+ break;
+ }
+ if (non_empty)
+ string_append (result, " ");
+ string_appendn (result, *type, n);
+ *type += n;
+ break;
+ default:
+ success = 0;
+ break;
+ }
+
+ if (success)
+ {
+ if (!string_empty (&decl))
+ {
+ string_append (result, " ");
+ string_appends (result, &decl);
+ }
+ string_delete (&decl);
+ return 1;
+ }
+ else
+ {
+ string_delete (&decl);
+ string_delete (result);
+ return 0;
+ }
+}
+
+/* `result' will be initialised in do_type; it will be freed on failure */
+
+static int
+do_arg (type, result, arg_mode)
+ const char **type;
+ string *result;
+ int arg_mode;
+{
+ const char *start = *type;
+
+ if (!do_type (type, result, arg_mode))
+ return 0;
+ remember_type (start, *type - start);
+ return 1;
+}
+
+static void
+remember_type (start, len)
+ const char *start;
+ int len;
+{
+ char *tem;
+
+ if (ntypes >= typevec_size)
+ {
+ if (typevec_size == 0)
+ {
+ typevec_size = 3;
+ typevec = (char **) xmalloc (sizeof (char*)*typevec_size);
+ }
+ else
+ {
+ typevec_size *= 2;
+ typevec = (char **) xrealloc ((char *)typevec, sizeof (char*)*typevec_size);
+ }
+ }
+ tem = (char *) xmalloc (len + 1);
+ memcpy (tem, start, len);
+ tem[len] = '\0';
+ typevec[ntypes++] = tem;
+}
+
+/* `decl' must be already initialised, usually non-empty;
+ it won't be freed on failure */
+
+static int
+do_args (type, decl, arg_mode)
+ const char **type;
+ string *decl;
+ int arg_mode;
+{
+ string arg;
+ int need_comma = 0;
+
+ if (print_arg_types)
+ string_append (decl, "(");
+
+ while (**type != '_' && **type != '\0' && **type != 'e' && **type != 'v')
+ {
+ if (**type == 'N')
+ {
+ int r;
+ int t;
+ *type += 1;
+ if (!get_count (type, &r) || !get_count (type, &t) || t >= ntypes)
+ return 0;
+ while (--r >= 0)
+ {
+ const char *tem = typevec[t];
+ if (need_comma && print_arg_types)
+ string_append (decl, ", ");
+ if (!do_arg (&tem, &arg, arg_mode))
+ return 0;
+ if (print_arg_types)
+ string_appends (decl, &arg);
+ string_delete (&arg);
+ need_comma = 1;
+ }
+ }
+ else
+ {
+ if (need_comma & print_arg_types)
+ string_append (decl, ", ");
+ if (!do_arg (type, &arg, arg_mode))
+ return 0;
+ if (print_arg_types)
+ string_appends (decl, &arg);
+ string_delete (&arg);
+ need_comma = 1;
+ }
+ }
+
+ if (**type == 'v')
+ *type += 1;
+ else if (**type == 'e')
+ {
+ *type += 1;
+ if (print_arg_types)
+ {
+ if (need_comma)
+ string_append (decl, ",");
+ string_append (decl, "...");
+ }
+ }
+
+ if (print_arg_types)
+ string_append (decl, ")");
+ return 1;
+}
+
+static void
+munge_function_name (name, arg_mode)
+ string *name;
+ int arg_mode;
+{
+ if (!string_empty (name) && name->p - name->b >= 3
+ && name->b[0] == 'o' && name->b[1] == 'p' && name->b[2] == '$')
+ {
+ int i;
+ /* see if it's an assignment expression */
+ if (name->p - name->b >= 10 /* op$assign_ */
+ && memcmp (name->b + 3, "assign_", 7) == 0)
+ {
+ for (i = 0; i < sizeof (optable)/sizeof (optable[0]); i++)
+ {
+ int len = name->p - name->b - 10;
+ if (strlen (optable[i].in) == len
+ && memcmp (optable[i].in, name->b + 10, len) == 0)
+ {
+ string_clear (name);
+ string_append (name, "operator");
+ string_append (name, optable[i].out);
+ string_append (name, "=");
+ return;
+ }
+ }
+ }
+ else
+ {
+ for (i = 0; i < sizeof (optable)/sizeof (optable[0]); i++)
+ {
+ int len = name->p - name->b - 3;
+ if (strlen (optable[i].in) == len
+ && memcmp (optable[i].in, name->b + 3, len) == 0)
+ {
+ string_clear (name);
+ string_append (name, "operator");
+ string_append (name, optable[i].out);
+ return;
+ }
+ }
+ }
+ return;
+ }
+ else if (!string_empty (name) && name->p - name->b >= 5
+ && memcmp (name->b, "type$", 5) == 0)
+ {
+ /* type conversion operator */
+ string type;
+ const char *tem = name->b + 5;
+ if (do_type (&tem, &type, arg_mode))
+ {
+ string_clear (name);
+ string_append (name, "operator ");
+ string_appends (name, &type);
+ string_delete (&type);
+ return;
+ }
+ }
+}
+
+/* a mini string-handling package */
+
+static void
+string_need (s, n)
+ string *s;
+ int n;
+{
+ if (s->b == NULL)
+ {
+ if (n < 32)
+ n = 32;
+ s->p = s->b = (char *) xmalloc (n);
+ s->e = s->b + n;
+ }
+ else if (s->e - s->p < n)
+ {
+ int tem = s->p - s->b;
+ n += tem;
+ n *= 2;
+ s->b = (char *) xrealloc (s->b, n);
+ s->p = s->b + tem;
+ s->e = s->b + n;
+ }
+}
+
+static void
+string_delete (s)
+ string *s;
+{
+ if (s->b != NULL)
+ {
+ free (s->b);
+ s->b = s->e = s->p = NULL;
+ }
+}
+
+static void
+string_init (s)
+ string *s;
+{
+ s->b = s->p = s->e = NULL;
+}
+
+static void
+string_clear (s)
+ string *s;
+{
+ s->p = s->b;
+}
+
+static int
+string_empty (s)
+ string *s;
+{
+ return s->b == s->p;
+}
+
+static void
+string_append (p, s)
+ string *p;
+ const char *s;
+{
+ int n;
+ if (s == NULL || *s == '\0')
+ return;
+ n = strlen (s);
+ string_need (p, n);
+ memcpy (p->p, s, n);
+ p->p += n;
+}
+
+static void
+string_appends (p, s)
+ string *p, *s;
+{
+ int n;
+ if (s->b == s->p)
+ return;
+ n = s->p - s->b;
+ string_need (p, n);
+ memcpy (p->p, s->b, n);
+ p->p += n;
+}
+
+static void
+string_appendn (p, s, n)
+ string *p;
+ const char *s;
+ int n;
+{
+ if (n == 0)
+ return;
+ string_need (p, n);
+ memcpy (p->p, s, n);
+ p->p += n;
+}
+
+static void
+string_prepend (p, s)
+ string *p;
+ const char *s;
+{
+ if (s == NULL || *s == '\0')
+ return;
+ string_prependn (p, s, strlen (s));
+}
+
+#if 0
+static void
+string_prepends (p, s)
+ string *p, *s;
+{
+ if (s->b == s->p)
+ return;
+ string_prependn (p, s->b, s->p - s->b);
+}
+#endif
+
+static void
+string_prependn (p, s, n)
+ string *p;
+ const char *s;
+ int n;
+{
+ char *q;
+
+ if (n == 0)
+ return;
+ string_need (p, n);
+ for (q = p->p - 1; q >= p->b; q--)
+ q[n] = q[0];
+ memcpy (p->b, s, n);
+ p->p += n;
+}
diff --git a/gnu/usr.bin/kgdb/dbxread.c b/gnu/usr.bin/kgdb/dbxread.c
new file mode 100644
index 000000000000..40ee061ecb68
--- /dev/null
+++ b/gnu/usr.bin/kgdb/dbxread.c
@@ -0,0 +1,5727 @@
+/*-
+ * This code is derived from software copyrighted by the Free Software
+ * Foundation.
+ *
+ * Modified 1991 by Donn Seeley at UUNET Technologies, Inc.
+ * Modified 1990 by Van Jacobson at Lawrence Berkeley Laboratory.
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)dbxread.c 6.3 (Berkeley) 5/8/91";
+#endif /* not lint */
+
+/* Read dbx symbol tables and convert to internal format, for GDB.
+ Copyright (C) 1986, 1987, 1988, 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+/* Symbol read-in occurs in two phases:
+ 1. A scan (read_dbx_symtab()) of the entire executable, whose sole
+ purpose is to make a list of symbols (partial symbol table)
+ which will cause symbols
+ to be read in if referenced. This scan happens when the
+ "symbol-file" command is given (symbol_file_command()).
+ 2. Full read-in of symbols. (psymtab_to_symtab()). This happens
+ when a symbol in a file for which symbols have not yet been
+ read in is referenced.
+ 2a. The "add-file" command. Similar to #2. */
+
+#include <stdio.h>
+#include "defs.h"
+#include "param.h"
+
+#ifdef READ_DBX_FORMAT
+
+#ifdef USG
+#include <sys/types.h>
+#include <fcntl.h>
+#define L_SET 0
+#define L_INCR 1
+#endif
+
+#ifdef COFF_ENCAPSULATE
+#include "a.out.encap.h"
+#include "stab.gnu.h"
+#else
+#include <a.out.h>
+#include <stab.h>
+#endif
+#include <ctype.h>
+
+#ifndef NO_GNU_STABS
+/*
+ * Define specifically gnu symbols here.
+ */
+
+/* The following type indicates the definition of a symbol as being
+ an indirect reference to another symbol. The other symbol
+ appears as an undefined reference, immediately following this symbol.
+
+ Indirection is asymmetrical. The other symbol's value will be used
+ to satisfy requests for the indirect symbol, but not vice versa.
+ If the other symbol does not have a definition, libraries will
+ be searched to find a definition. */
+#ifndef N_INDR
+#define N_INDR 0xa
+#endif
+
+/* The following symbols refer to set elements.
+ All the N_SET[ATDB] symbols with the same name form one set.
+ Space is allocated for the set in the text section, and each set
+ element's value is stored into one word of the space.
+ The first word of the space is the length of the set (number of elements).
+
+ The address of the set is made into an N_SETV symbol
+ whose name is the same as the name of the set.
+ This symbol acts like a N_DATA global symbol
+ in that it can satisfy undefined external references. */
+
+#ifndef N_SETA
+#define N_SETA 0x14 /* Absolute set element symbol */
+#endif /* This is input to LD, in a .o file. */
+
+#ifndef N_SETT
+#define N_SETT 0x16 /* Text set element symbol */
+#endif /* This is input to LD, in a .o file. */
+
+#ifndef N_SETD
+#define N_SETD 0x18 /* Data set element symbol */
+#endif /* This is input to LD, in a .o file. */
+
+#ifndef N_SETB
+#define N_SETB 0x1A /* Bss set element symbol */
+#endif /* This is input to LD, in a .o file. */
+
+/* Macros dealing with the set element symbols defined in a.out.h */
+#define SET_ELEMENT_P(x) ((x)>=N_SETA&&(x)<=(N_SETB|N_EXT))
+#define TYPE_OF_SET_ELEMENT(x) ((x)-N_SETA+N_ABS)
+
+#ifndef N_SETV
+#define N_SETV 0x1C /* Pointer to set vector in data area. */
+#endif /* This is output from LD. */
+
+#ifndef N_WARNING
+#define N_WARNING 0x1E /* Warning message to print if file included */
+#endif /* This is input to ld */
+
+#ifndef __GNU_STAB__
+
+/* Line number for the data section. This is to be used to describe
+ the source location of a variable declaration. */
+#ifndef N_DSLINE
+#define N_DSLINE (N_SLINE+N_DATA-N_TEXT)
+#endif
+
+/* Line number for the bss section. This is to be used to describe
+ the source location of a variable declaration. */
+#ifndef N_BSLINE
+#define N_BSLINE (N_SLINE+N_BSS-N_TEXT)
+#endif
+
+#endif /* not __GNU_STAB__ */
+#endif /* NO_GNU_STABS */
+
+#include <obstack.h>
+#include <sys/param.h>
+#include <sys/file.h>
+#include <sys/stat.h>
+
+#include "symtab.h"
+
+#ifndef COFF_FORMAT
+#ifndef AOUTHDR
+#define AOUTHDR struct exec
+#endif
+#endif
+
+static void add_symbol_to_list ();
+static void read_dbx_symtab ();
+static void process_one_symbol ();
+static void free_all_psymbols ();
+static struct type *read_type ();
+static struct type *read_range_type ();
+static struct type *read_enum_type ();
+static struct type *read_struct_type ();
+static struct type *read_array_type ();
+static long read_number ();
+static void read_huge_number ();
+static void finish_block ();
+static struct blockvector *make_blockvector ();
+static struct symbol *define_symbol ();
+static void start_subfile ();
+static int hashname ();
+static void hash_symsegs ();
+static struct pending *copy_pending ();
+static void fix_common_block ();
+
+static void add_undefined_type ();
+static void cleanup_undefined_types ();
+
+extern char *index();
+
+extern struct symtab *read_symsegs ();
+extern void free_all_symtabs ();
+extern void free_all_psymtabs ();
+extern void free_inclink_symtabs ();
+
+/* C++ */
+static struct type **read_args ();
+
+/* Macro to determine which symbols to ignore when reading the first symbol
+ of a file. Some machines override this definition. */
+#ifdef N_NSYMS
+#ifndef IGNORE_SYMBOL
+/* This code is used on Ultrix systems. Ignore it */
+#define IGNORE_SYMBOL(type) (type == N_NSYMS)
+#endif
+#else
+#ifndef IGNORE_SYMBOL
+/* Don't ignore any symbols. */
+#define IGNORE_SYMBOL(type) (0)
+#endif
+#endif /* not N_NSYMS */
+
+/* Macro for number of symbol table entries (in usual a.out format).
+ Some machines override this definition. */
+#ifndef NUMBER_OF_SYMBOLS
+#ifdef COFF_HEADER
+#define NUMBER_OF_SYMBOLS \
+ ((COFF_HEADER(hdr) ? hdr.coffhdr.filehdr.f_nsyms : hdr.a_syms) / \
+ sizeof (struct nlist))
+#else
+#define NUMBER_OF_SYMBOLS (hdr.a_syms / sizeof (struct nlist))
+#endif
+#endif
+
+/* Macro for file-offset of symbol table (in usual a.out format). */
+#ifndef SYMBOL_TABLE_OFFSET
+#define SYMBOL_TABLE_OFFSET N_SYMOFF (hdr)
+#endif
+
+/* Macro for file-offset of string table (in usual a.out format). */
+#ifndef STRING_TABLE_OFFSET
+#define STRING_TABLE_OFFSET (N_SYMOFF (hdr) + hdr.a_syms)
+#endif
+
+/* Macro to store the length of the string table data in INTO. */
+#ifndef READ_STRING_TABLE_SIZE
+#define READ_STRING_TABLE_SIZE(INTO) \
+{ val = myread (desc, &INTO, sizeof INTO); \
+ if (val < 0) perror_with_name (name); }
+#endif
+
+/* Macro to declare variables to hold the file's header data. */
+#ifndef DECLARE_FILE_HEADERS
+#define DECLARE_FILE_HEADERS AOUTHDR hdr
+#endif
+
+/* Macro to read the header data from descriptor DESC and validate it.
+ NAME is the file name, for error messages. */
+#ifndef READ_FILE_HEADERS
+#ifdef HEADER_SEEK_FD
+#define READ_FILE_HEADERS(DESC, NAME) \
+{ HEADER_SEEK_FD (DESC); \
+ val = myread (DESC, &hdr, sizeof hdr); \
+ if (val < 0) perror_with_name (NAME); \
+ if (N_BADMAG (hdr)) \
+ error ("File \"%s\" not in executable format.", NAME); }
+#else
+#define READ_FILE_HEADERS(DESC, NAME) \
+{ val = myread (DESC, &hdr, sizeof hdr); \
+ if (val < 0) perror_with_name (NAME); \
+ if (N_BADMAG (hdr)) \
+ error ("File \"%s\" not in executable format.", NAME); }
+#endif
+#endif
+
+/* Non-zero if this is an object (.o) file, rather than an executable.
+ Distinguishing between the two is rarely necessary (and seems like
+ a hack, but there is no other way to do ADDR_OF_TEXT_SEGMENT
+ right for SunOS). */
+#if !defined (IS_OBJECT_FILE)
+/* This will not work
+ if someone decides to make ld preserve relocation info. */
+#define IS_OBJECT_FILE (hdr.a_trsize != 0)
+#endif
+
+/* Macro for size of text segment */
+#ifndef SIZE_OF_TEXT_SEGMENT
+#define SIZE_OF_TEXT_SEGMENT hdr.a_text
+#endif
+
+/* Get the address in debugged memory of the start
+ of the text segment. */
+#if !defined (ADDR_OF_TEXT_SEGMENT)
+#if defined (N_TXTADDR)
+#define ADDR_OF_TEXT_SEGMENT (IS_OBJECT_FILE ? 0 : N_TXTADDR (hdr))
+#else /* no N_TXTADDR */
+#define ADDR_OF_TEXT_SEGMENT 0
+#endif /* no N_TXTADDR */
+#endif /* no ADDR_OF_TEXT_SEGMENT */
+
+/* Macro to get entry point from headers. */
+#ifndef ENTRY_POINT
+#define ENTRY_POINT hdr.a_entry
+#endif
+
+/* Macro for name of symbol to indicate a file compiled with gcc. */
+#ifndef GCC_COMPILED_FLAG_SYMBOL
+#define GCC_COMPILED_FLAG_SYMBOL "gcc_compiled."
+#endif
+
+/* Convert stab register number (from `r' declaration) to a gdb REGNUM. */
+
+#ifndef STAB_REG_TO_REGNUM
+#define STAB_REG_TO_REGNUM(VALUE) (VALUE)
+#endif
+
+/* Define this as 1 if a pcc declaration of a char or short argument
+ gives the correct address. Otherwise assume pcc gives the
+ address of the corresponding int, which is not the same on a
+ big-endian machine. */
+
+#ifndef BELIEVE_PCC_PROMOTION
+#define BELIEVE_PCC_PROMOTION 0
+#endif
+
+/* Nonzero means give verbose info on gdb action. From main.c. */
+extern int info_verbose;
+
+/* Chain of symtabs made from reading the file's symsegs.
+ These symtabs do not go into symtab_list themselves,
+ but the information is copied from them when appropriate
+ to make the symtabs that will exist permanently. */
+
+static struct symtab *symseg_chain;
+
+/* Symseg symbol table for the file whose data we are now processing.
+ It is one of those in symseg_chain. Or 0, for a compilation that
+ has no symseg. */
+
+static struct symtab *current_symseg;
+
+/* Name of source file whose symbol data we are now processing.
+ This comes from a symbol of type N_SO. */
+
+static char *last_source_file;
+
+/* Core address of start of text of current source file.
+ This too comes from the N_SO symbol. */
+
+static CORE_ADDR last_source_start_addr;
+
+/* End of the text segment of the executable file,
+ as found in the symbol _etext. */
+
+static CORE_ADDR end_of_text_addr;
+
+/* The list of sub-source-files within the current individual compilation.
+ Each file gets its own symtab with its own linetable and associated info,
+ but they all share one blockvector. */
+
+struct subfile
+{
+ struct subfile *next;
+ char *name;
+ struct linetable *line_vector;
+ int line_vector_length;
+ int line_vector_index;
+ int prev_line_number;
+};
+
+static struct subfile *subfiles;
+
+static struct subfile *current_subfile;
+
+/* Count symbols as they are processed, for error messages. */
+
+static int symnum;
+
+/* Vector of types defined so far, indexed by their dbx type numbers.
+ (In newer sun systems, dbx uses a pair of numbers in parens,
+ as in "(SUBFILENUM,NUMWITHINSUBFILE)". Then these numbers must be
+ translated through the type_translations hash table to get
+ the index into the type vector.) */
+
+static struct typevector *type_vector;
+
+/* Number of elements allocated for type_vector currently. */
+
+static int type_vector_length;
+
+/* Vector of line number information. */
+
+static struct linetable *line_vector;
+
+/* Index of next entry to go in line_vector_index. */
+
+static int line_vector_index;
+
+/* Last line number recorded in the line vector. */
+
+static int prev_line_number;
+
+/* Number of elements allocated for line_vector currently. */
+
+static int line_vector_length;
+
+/* Hash table of global symbols whose values are not known yet.
+ They are chained thru the SYMBOL_VALUE, since we don't
+ have the correct data for that slot yet. */
+/* The use of the LOC_BLOCK code in this chain is nonstandard--
+ it refers to a FORTRAN common block rather than the usual meaning. */
+
+#define HASHSIZE 127
+static struct symbol *global_sym_chain[HASHSIZE];
+
+/* Record the symbols defined for each context in a list.
+ We don't create a struct block for the context until we
+ know how long to make it. */
+
+#define PENDINGSIZE 100
+
+struct pending
+{
+ struct pending *next;
+ int nsyms;
+ struct symbol *symbol[PENDINGSIZE];
+};
+
+/* List of free `struct pending' structures for reuse. */
+struct pending *free_pendings;
+
+/* Here are the three lists that symbols are put on. */
+
+struct pending *file_symbols; /* static at top level, and types */
+
+struct pending *global_symbols; /* global functions and variables */
+
+struct pending *local_symbols; /* everything local to lexical context */
+
+/* List of symbols declared since the last BCOMM. This list is a tail
+ of local_symbols. When ECOMM is seen, the symbols on the list
+ are noted so their proper addresses can be filled in later,
+ using the common block base address gotten from the assembler
+ stabs. */
+
+struct pending *common_block;
+int common_block_i;
+
+/* Stack representing unclosed lexical contexts
+ (that will become blocks, eventually). */
+
+struct context_stack
+{
+ struct pending *locals;
+ struct pending_block *old_blocks;
+ struct symbol *name;
+ CORE_ADDR start_addr;
+ int depth;
+};
+
+struct context_stack *context_stack;
+
+/* Index of first unused entry in context stack. */
+int context_stack_depth;
+
+/* Currently allocated size of context stack. */
+
+int context_stack_size;
+
+/* Nonzero if within a function (so symbols should be local,
+ if nothing says specifically). */
+
+int within_function;
+
+/* List of blocks already made (lexical contexts already closed).
+ This is used at the end to make the blockvector. */
+
+struct pending_block
+{
+ struct pending_block *next;
+ struct block *block;
+};
+
+struct pending_block *pending_blocks;
+
+extern CORE_ADDR startup_file_start; /* From blockframe.c */
+extern CORE_ADDR startup_file_end; /* From blockframe.c */
+
+/* File name symbols were loaded from. */
+
+static char *symfile;
+
+/* Low and high symbol values (inclusive) for the global variable
+ entries in the symbol file. */
+
+static int first_global_sym, last_global_sym;
+
+/* Structures with which to manage partial symbol allocation. */
+
+struct psymbol_allocation_list global_psymbols, static_psymbols;
+
+/* Global variable which, when set, indicates that we are processing a
+ .o file compiled with gcc */
+
+static unsigned char processing_gcc_compilation;
+
+/* Make a list of forward references which haven't been defined. */
+static struct type **undef_types;
+static int undef_types_allocated, undef_types_length;
+
+ /* Setup a define to deal cleanly with the underscore problem */
+
+#ifdef NAMES_HAVE_UNDERSCORE
+#define HASH_OFFSET 1
+#else
+#define HASH_OFFSET 0
+#endif
+
+#if 0
+/* I'm not sure why this is here. To debug bugs which cause
+ an infinite loop of allocations, I suppose. In any event,
+ dumping core when out of memory isn't usually right. */
+static int
+xxmalloc (n)
+{
+ int v = malloc (n);
+ if (v == 0)
+ {
+ fprintf (stderr, "Virtual memory exhausted.\n");
+ abort ();
+ }
+ return v;
+}
+#else /* not 0 */
+#define xxmalloc xmalloc
+#endif /* not 0 */
+
+/* Make a copy of the string at PTR with SIZE characters in the symbol obstack
+ (and add a null character at the end in the copy).
+ Returns the address of the copy. */
+
+static char *
+obsavestring (ptr, size)
+ char *ptr;
+ int size;
+{
+ register char *p = (char *) obstack_alloc (symbol_obstack, size + 1);
+ /* Open-coded bcopy--saves function call time.
+ These strings are usually short. */
+ {
+ register char *p1 = ptr;
+ register char *p2 = p;
+ char *end = ptr + size;
+ while (p1 != end)
+ *p2++ = *p1++;
+ }
+ p[size] = 0;
+ return p;
+}
+
+/* Concatenate strings S1, S2 and S3; return the new string.
+ Space is found in the symbol_obstack. */
+
+static char *
+obconcat (s1, s2, s3)
+ char *s1, *s2, *s3;
+{
+ register int len = strlen (s1) + strlen (s2) + strlen (s3) + 1;
+ register char *val = (char *) obstack_alloc (symbol_obstack, len);
+ strcpy (val, s1);
+ strcat (val, s2);
+ strcat (val, s3);
+ return val;
+}
+
+/* Support for Sun changes to dbx symbol format */
+
+/* For each identified header file, we have a table of types defined
+ in that header file.
+
+ header_files maps header file names to their type tables.
+ It is a vector of n_header_files elements.
+ Each element describes one header file.
+ It contains a vector of types.
+
+ Sometimes it can happen that the same header file produces
+ different results when included in different places.
+ This can result from conditionals or from different
+ things done before including the file.
+ When this happens, there are multiple entries for the file in this table,
+ one entry for each distinct set of results.
+ The entries are distinguished by the INSTANCE field.
+ The INSTANCE field appears in the N_BINCL and N_EXCL symbol table and is
+ used to match header-file references to their corresponding data. */
+
+struct header_file
+{
+ char *name; /* Name of header file */
+ int instance; /* Numeric code distinguishing instances
+ of one header file that produced
+ different results when included.
+ It comes from the N_BINCL or N_EXCL. */
+ struct type **vector; /* Pointer to vector of types */
+ int length; /* Allocated length (# elts) of that vector */
+};
+
+static struct header_file *header_files;
+
+static int n_header_files;
+
+static int n_allocated_header_files;
+
+/* During initial symbol readin, we need to have a structure to keep
+ track of which psymtabs have which bincls in them. This structure
+ is used during readin to setup the list of dependencies within each
+ partial symbol table. */
+
+struct header_file_location
+{
+ char *name; /* Name of header file */
+ int instance; /* See above */
+ struct partial_symtab *pst; /* Partial symtab that has the
+ BINCL/EINCL defs for this file */
+};
+
+/* The actual list and controling variables */
+static struct header_file_location *bincl_list, *next_bincl;
+static int bincls_allocated;
+
+/* Within each object file, various header files are assigned numbers.
+ A type is defined or referred to with a pair of numbers
+ (FILENUM,TYPENUM) where FILENUM is the number of the header file
+ and TYPENUM is the number within that header file.
+ TYPENUM is the index within the vector of types for that header file.
+
+ FILENUM == 1 is special; it refers to the main source of the object file,
+ and not to any header file. FILENUM != 1 is interpreted by looking it up
+ in the following table, which contains indices in header_files. */
+
+static int *this_object_header_files;
+
+static int n_this_object_header_files;
+
+static int n_allocated_this_object_header_files;
+
+/* When a header file is getting special overriding definitions
+ for one source file, record here the header_files index
+ of its normal definition vector.
+ At other times, this is -1. */
+
+static int header_file_prev_index;
+
+/* At the start of reading dbx symbols, allocate our tables. */
+
+static void
+init_header_files ()
+{
+ n_allocated_header_files = 10;
+ header_files = (struct header_file *) xxmalloc (10 * sizeof (struct header_file));
+ n_header_files = 0;
+
+ n_allocated_this_object_header_files = 10;
+ this_object_header_files = (int *) xxmalloc (10 * sizeof (int));
+}
+
+/* At the end of reading dbx symbols, free our tables. */
+
+static void
+free_header_files ()
+{
+ register int i;
+ for (i = 0; i < n_header_files; i++)
+ free (header_files[i].name);
+ if (header_files) free (header_files);
+ if (this_object_header_files)
+ free (this_object_header_files);
+}
+
+/* Called at the start of each object file's symbols.
+ Clear out the mapping of header file numbers to header files. */
+
+static void
+new_object_header_files ()
+{
+ /* Leave FILENUM of 0 free for builtin types and this file's types. */
+ n_this_object_header_files = 1;
+ header_file_prev_index = -1;
+}
+
+/* Add header file number I for this object file
+ at the next successive FILENUM. */
+
+static void
+add_this_object_header_file (i)
+ int i;
+{
+ if (n_this_object_header_files == n_allocated_this_object_header_files)
+ {
+ n_allocated_this_object_header_files *= 2;
+ this_object_header_files
+ = (int *) xrealloc (this_object_header_files,
+ n_allocated_this_object_header_files * sizeof (int));
+ }
+
+ this_object_header_files[n_this_object_header_files++] = i;
+}
+
+/* Add to this file an "old" header file, one already seen in
+ a previous object file. NAME is the header file's name.
+ INSTANCE is its instance code, to select among multiple
+ symbol tables for the same header file. */
+
+static void
+add_old_header_file (name, instance)
+ char *name;
+ int instance;
+{
+ register struct header_file *p = header_files;
+ register int i;
+
+ for (i = 0; i < n_header_files; i++)
+ if (!strcmp (p[i].name, name) && instance == p[i].instance)
+ {
+ add_this_object_header_file (i);
+ return;
+ }
+ error ("Invalid symbol data: \"repeated\" header file that hasn't been seen before, at symtab pos %d.",
+ symnum);
+}
+
+/* Add to this file a "new" header file: definitions for its types follow.
+ NAME is the header file's name.
+ Most often this happens only once for each distinct header file,
+ but not necessarily. If it happens more than once, INSTANCE has
+ a different value each time, and references to the header file
+ use INSTANCE values to select among them.
+
+ dbx output contains "begin" and "end" markers for each new header file,
+ but at this level we just need to know which files there have been;
+ so we record the file when its "begin" is seen and ignore the "end". */
+
+static void
+add_new_header_file (name, instance)
+ char *name;
+ int instance;
+{
+ register int i;
+ register struct header_file *p = header_files;
+ header_file_prev_index = -1;
+
+#if 0
+ /* This code was used before I knew about the instance codes.
+ My first hypothesis is that it is not necessary now
+ that instance codes are handled. */
+
+ /* Has this header file a previous definition?
+ If so, make a new entry anyway so that this use in this source file
+ gets a separate entry. Later source files get the old entry.
+ Record here the index of the old entry, so that any type indices
+ not previously defined can get defined in the old entry as
+ well as in the new one. */
+
+ for (i = 0; i < n_header_files; i++)
+ if (!strcmp (p[i].name, name))
+ {
+ header_file_prev_index = i;
+ }
+
+#endif
+
+ /* Make sure there is room for one more header file. */
+
+ if (n_header_files == n_allocated_header_files)
+ {
+ n_allocated_header_files *= 2;
+ header_files = (struct header_file *)
+ xrealloc (header_files,
+ (n_allocated_header_files
+ * sizeof (struct header_file)));
+ }
+
+ /* Create an entry for this header file. */
+
+ i = n_header_files++;
+ header_files[i].name = savestring (name, strlen(name));
+ header_files[i].instance = instance;
+ header_files[i].length = 10;
+ header_files[i].vector
+ = (struct type **) xxmalloc (10 * sizeof (struct type *));
+ bzero (header_files[i].vector, 10 * sizeof (struct type *));
+
+ add_this_object_header_file (i);
+}
+
+/* Look up a dbx type-number pair. Return the address of the slot
+ where the type for that number-pair is stored.
+ The number-pair is in TYPENUMS.
+
+ This can be used for finding the type associated with that pair
+ or for associating a new type with the pair. */
+
+static struct type **
+dbx_lookup_type (typenums)
+ int typenums[2];
+{
+ register int filenum = typenums[0], index = typenums[1];
+
+ if (filenum < 0 || filenum >= n_this_object_header_files)
+ error ("Invalid symbol data: type number (%d,%d) out of range at symtab pos %d.",
+ filenum, index, symnum);
+
+ if (filenum == 0)
+ {
+ /* Type is defined outside of header files.
+ Find it in this object file's type vector. */
+ if (index >= type_vector_length)
+ {
+ type_vector_length *= 2;
+ type_vector = (struct typevector *)
+ xrealloc (type_vector,
+ (sizeof (struct typevector)
+ + type_vector_length * sizeof (struct type *)));
+ bzero (&type_vector->type[type_vector_length / 2],
+ type_vector_length * sizeof (struct type *) / 2);
+ }
+ return &type_vector->type[index];
+ }
+ else
+ {
+ register int real_filenum = this_object_header_files[filenum];
+ register struct header_file *f;
+
+ if (real_filenum >= n_header_files)
+ abort ();
+
+ f = &header_files[real_filenum];
+
+ if (index >= f->length)
+ {
+ f->length *= 2;
+ f->vector = (struct type **)
+ xrealloc (f->vector, f->length * sizeof (struct type *));
+ bzero (&f->vector[f->length / 2],
+ f->length * sizeof (struct type *) / 2);
+ }
+ return &f->vector[index];
+ }
+}
+
+/* Create a type object. Occaisionally used when you need a type
+ which isn't going to be given a type number. */
+
+static struct type *
+dbx_create_type ()
+{
+ register struct type *type =
+ (struct type *) obstack_alloc (symbol_obstack, sizeof (struct type));
+
+ bzero (type, sizeof (struct type));
+ TYPE_VPTR_FIELDNO (type) = -1;
+ return type;
+}
+
+/* Make sure there is a type allocated for type numbers TYPENUMS
+ and return the type object.
+ This can create an empty (zeroed) type object.
+ TYPENUMS may be (-1, -1) to return a new type object that is not
+ put into the type vector, and so may not be referred to by number. */
+
+static struct type *
+dbx_alloc_type (typenums)
+ int typenums[2];
+{
+ register struct type **type_addr;
+ register struct type *type;
+
+ if (typenums[1] != -1)
+ {
+ type_addr = dbx_lookup_type (typenums);
+ type = *type_addr;
+ }
+ else
+ {
+ type_addr = 0;
+ type = 0;
+ }
+
+ /* If we are referring to a type not known at all yet,
+ allocate an empty type for it.
+ We will fill it in later if we find out how. */
+ if (type == 0)
+ {
+ type = dbx_create_type ();
+ if (type_addr)
+ *type_addr = type;
+ }
+
+ return type;
+}
+
+#if 0
+static struct type **
+explicit_lookup_type (real_filenum, index)
+ int real_filenum, index;
+{
+ register struct header_file *f = &header_files[real_filenum];
+
+ if (index >= f->length)
+ {
+ f->length *= 2;
+ f->vector = (struct type **)
+ xrealloc (f->vector, f->length * sizeof (struct type *));
+ bzero (&f->vector[f->length / 2],
+ f->length * sizeof (struct type *) / 2);
+ }
+ return &f->vector[index];
+}
+#endif
+
+/* maintain the lists of symbols and blocks */
+
+/* Add a symbol to one of the lists of symbols. */
+static void
+add_symbol_to_list (symbol, listhead)
+ struct symbol *symbol;
+ struct pending **listhead;
+{
+ /* We keep PENDINGSIZE symbols in each link of the list.
+ If we don't have a link with room in it, add a new link. */
+ if (*listhead == 0 || (*listhead)->nsyms == PENDINGSIZE)
+ {
+ register struct pending *link;
+ if (free_pendings)
+ {
+ link = free_pendings;
+ free_pendings = link->next;
+ }
+ else
+ link = (struct pending *) xxmalloc (sizeof (struct pending));
+
+ link->next = *listhead;
+ *listhead = link;
+ link->nsyms = 0;
+ }
+
+ (*listhead)->symbol[(*listhead)->nsyms++] = symbol;
+}
+
+/* At end of reading syms, or in case of quit,
+ really free as many `struct pending's as we can easily find. */
+
+static void
+really_free_pendings ()
+{
+ struct pending *next, *next1;
+ struct pending_block *bnext, *bnext1;
+
+ for (next = free_pendings; next; next = next1)
+ {
+ next1 = next->next;
+ free (next);
+ }
+ free_pendings = 0;
+
+ for (bnext = pending_blocks; bnext; bnext = bnext1)
+ {
+ bnext1 = bnext->next;
+ free (bnext);
+ }
+ pending_blocks = 0;
+
+ for (next = file_symbols; next; next = next1)
+ {
+ next1 = next->next;
+ free (next);
+ }
+ for (next = global_symbols; next; next = next1)
+ {
+ next1 = next->next;
+ free (next);
+ }
+}
+
+/* Take one of the lists of symbols and make a block from it.
+ Keep the order the symbols have in the list (reversed from the input file).
+ Put the block on the list of pending blocks. */
+
+static void
+finish_block (symbol, listhead, old_blocks, start, end)
+ struct symbol *symbol;
+ struct pending **listhead;
+ struct pending_block *old_blocks;
+ CORE_ADDR start, end;
+{
+ register struct pending *next, *next1;
+ register struct block *block;
+ register struct pending_block *pblock;
+ struct pending_block *opblock;
+ register int i;
+
+ /* Count the length of the list of symbols. */
+
+ for (next = *listhead, i = 0; next; i += next->nsyms, next = next->next);
+
+ block = (struct block *) obstack_alloc (symbol_obstack,
+ (sizeof (struct block)
+ + ((i - 1)
+ * sizeof (struct symbol *))));
+
+ /* Copy the symbols into the block. */
+
+ BLOCK_NSYMS (block) = i;
+ for (next = *listhead; next; next = next->next)
+ {
+ register int j;
+ for (j = next->nsyms - 1; j >= 0; j--)
+ BLOCK_SYM (block, --i) = next->symbol[j];
+ }
+
+ BLOCK_START (block) = start;
+ BLOCK_END (block) = end;
+ BLOCK_SUPERBLOCK (block) = 0; /* Filled in when containing block is made */
+ BLOCK_GCC_COMPILED (block) = processing_gcc_compilation;
+
+ /* Put the block in as the value of the symbol that names it. */
+
+ if (symbol)
+ {
+ SYMBOL_BLOCK_VALUE (symbol) = block;
+ BLOCK_FUNCTION (block) = symbol;
+ }
+ else
+ BLOCK_FUNCTION (block) = 0;
+
+ /* Now "free" the links of the list, and empty the list. */
+
+ for (next = *listhead; next; next = next1)
+ {
+ next1 = next->next;
+ next->next = free_pendings;
+ free_pendings = next;
+ }
+ *listhead = 0;
+
+ /* Install this block as the superblock
+ of all blocks made since the start of this scope
+ that don't have superblocks yet. */
+
+ opblock = 0;
+ for (pblock = pending_blocks; pblock != old_blocks; pblock = pblock->next)
+ {
+ if (BLOCK_SUPERBLOCK (pblock->block) == 0)
+ BLOCK_SUPERBLOCK (pblock->block) = block;
+ opblock = pblock;
+ }
+
+ /* Record this block on the list of all blocks in the file.
+ Put it after opblock, or at the beginning if opblock is 0.
+ This puts the block in the list after all its subblocks. */
+
+ /* Allocate in the symbol_obstack to save time.
+ It wastes a little space. */
+ pblock = (struct pending_block *)
+ obstack_alloc (symbol_obstack,
+ sizeof (struct pending_block));
+ pblock->block = block;
+ if (opblock)
+ {
+ pblock->next = opblock->next;
+ opblock->next = pblock;
+ }
+ else
+ {
+ pblock->next = pending_blocks;
+ pending_blocks = pblock;
+ }
+}
+
+static struct blockvector *
+make_blockvector ()
+{
+ register struct pending_block *next, *next1;
+ register struct blockvector *blockvector;
+ register int i;
+
+ /* Count the length of the list of blocks. */
+
+ for (next = pending_blocks, i = 0; next; next = next->next, i++);
+
+ blockvector = (struct blockvector *)
+ obstack_alloc (symbol_obstack,
+ (sizeof (struct blockvector)
+ + (i - 1) * sizeof (struct block *)));
+
+ /* Copy the blocks into the blockvector.
+ This is done in reverse order, which happens to put
+ the blocks into the proper order (ascending starting address).
+ finish_block has hair to insert each block into the list
+ after its subblocks in order to make sure this is true. */
+
+ BLOCKVECTOR_NBLOCKS (blockvector) = i;
+ for (next = pending_blocks; next; next = next->next)
+ BLOCKVECTOR_BLOCK (blockvector, --i) = next->block;
+
+#if 0 /* Now we make the links in the obstack, so don't free them. */
+ /* Now free the links of the list, and empty the list. */
+
+ for (next = pending_blocks; next; next = next1)
+ {
+ next1 = next->next;
+ free (next);
+ }
+#endif
+ pending_blocks = 0;
+
+ return blockvector;
+}
+
+/* Manage the vector of line numbers. */
+
+static void
+record_line (line, pc)
+ int line;
+ CORE_ADDR pc;
+{
+ struct linetable_entry *e;
+ /* Ignore the dummy line number in libg.o */
+
+ if (line == 0xffff)
+ return;
+
+ /* Make sure line vector is big enough. */
+
+ if (line_vector_index + 1 >= line_vector_length)
+ {
+ line_vector_length *= 2;
+ line_vector = (struct linetable *)
+ xrealloc (line_vector,
+ (sizeof (struct linetable)
+ + line_vector_length * sizeof (struct linetable_entry)));
+ current_subfile->line_vector = line_vector;
+ }
+
+ e = line_vector->item + line_vector_index++;
+ e->line = line; e->pc = pc;
+}
+
+/* Start a new symtab for a new source file.
+ This is called when a dbx symbol of type N_SO is seen;
+ it indicates the start of data for one original source file. */
+
+static void
+start_symtab (name, start_addr)
+ char *name;
+ CORE_ADDR start_addr;
+{
+ register struct symtab *s;
+
+ last_source_file = name;
+ last_source_start_addr = start_addr;
+ file_symbols = 0;
+ global_symbols = 0;
+ within_function = 0;
+
+ /* Context stack is initially empty, with room for 10 levels. */
+ context_stack
+ = (struct context_stack *) xxmalloc (10 * sizeof (struct context_stack));
+ context_stack_size = 10;
+ context_stack_depth = 0;
+
+ new_object_header_files ();
+
+ for (s = symseg_chain; s; s = s->next)
+ if (s->ldsymoff == symnum * sizeof (struct nlist))
+ break;
+ current_symseg = s;
+ if (s != 0)
+ return;
+
+ type_vector_length = 160;
+ type_vector = (struct typevector *)
+ xxmalloc (sizeof (struct typevector)
+ + type_vector_length * sizeof (struct type *));
+ bzero (type_vector->type, type_vector_length * sizeof (struct type *));
+
+ /* Initialize the list of sub source files with one entry
+ for this file (the top-level source file). */
+
+ subfiles = 0;
+ current_subfile = 0;
+ start_subfile (name);
+
+#if 0 /* This is now set at the beginning of read_ofile_symtab */
+ /* Set default for compiler to pcc; assume that we aren't processing
+ a gcc compiled file until proved otherwise. */
+
+ processing_gcc_compilation = 0;
+#endif
+}
+
+/* Handle an N_SOL symbol, which indicates the start of
+ code that came from an included (or otherwise merged-in)
+ source file with a different name. */
+
+static void
+start_subfile (name)
+ char *name;
+{
+ register struct subfile *subfile;
+
+ /* Save the current subfile's line vector data. */
+
+ if (current_subfile)
+ {
+ current_subfile->line_vector_index = line_vector_index;
+ current_subfile->line_vector_length = line_vector_length;
+ current_subfile->prev_line_number = prev_line_number;
+ }
+
+ /* See if this subfile is already known as a subfile of the
+ current main source file. */
+
+ for (subfile = subfiles; subfile; subfile = subfile->next)
+ {
+ if (!strcmp (subfile->name, name))
+ {
+ line_vector = subfile->line_vector;
+ line_vector_index = subfile->line_vector_index;
+ line_vector_length = subfile->line_vector_length;
+ prev_line_number = subfile->prev_line_number;
+ current_subfile = subfile;
+ return;
+ }
+ }
+
+ /* This subfile is not known. Add an entry for it. */
+
+ line_vector_index = 0;
+ line_vector_length = 1000;
+ prev_line_number = -2; /* Force first line number to be explicit */
+ line_vector = (struct linetable *)
+ xxmalloc (sizeof (struct linetable)
+ + line_vector_length * sizeof (struct linetable_entry));
+
+ /* Make an entry for this subfile in the list of all subfiles
+ of the current main source file. */
+
+ subfile = (struct subfile *) xxmalloc (sizeof (struct subfile));
+ subfile->next = subfiles;
+ subfile->name = savestring (name, strlen (name));
+ subfile->line_vector = line_vector;
+ subfiles = subfile;
+ current_subfile = subfile;
+}
+
+/* Finish the symbol definitions for one main source file,
+ close off all the lexical contexts for that file
+ (creating struct block's for them), then make the struct symtab
+ for that file and put it in the list of all such.
+
+ END_ADDR is the address of the end of the file's text. */
+
+static void
+end_symtab (end_addr)
+ CORE_ADDR end_addr;
+{
+ register struct symtab *symtab;
+ register struct blockvector *blockvector;
+ register struct subfile *subfile;
+ register struct linetable *lv;
+ struct subfile *nextsub;
+
+ if (current_symseg != 0)
+ {
+ last_source_file = 0;
+ current_symseg = 0;
+ return;
+ }
+
+ /* Finish the lexical context of the last function in the file;
+ pop the context stack. */
+
+ if (context_stack_depth > 0)
+ {
+ register struct context_stack *cstk;
+ context_stack_depth--;
+ cstk = &context_stack[context_stack_depth];
+ /* Make a block for the local symbols within. */
+ finish_block (cstk->name, &local_symbols, cstk->old_blocks,
+ cstk->start_addr, end_addr);
+ }
+
+ /* Cleanup any undefined types that have been left hanging around
+ (this needs to be done before the finish_blocks so that
+ file_symbols is still good). */
+ cleanup_undefined_types ();
+
+ /* Finish defining all the blocks of this symtab. */
+ finish_block (0, &file_symbols, 0, last_source_start_addr, end_addr);
+ finish_block (0, &global_symbols, 0, last_source_start_addr, end_addr);
+ blockvector = make_blockvector ();
+
+ current_subfile->line_vector_index = line_vector_index;
+
+ /* Now create the symtab objects proper, one for each subfile. */
+ /* (The main file is one of them.) */
+
+ for (subfile = subfiles; subfile; subfile = nextsub)
+ {
+ symtab = (struct symtab *) xxmalloc (sizeof (struct symtab));
+ symtab->free_ptr = 0;
+
+ /* Fill in its components. */
+ symtab->blockvector = blockvector;
+ type_vector->length = type_vector_length;
+ symtab->typevector = type_vector;
+ symtab->free_code = free_linetable;
+ if (subfile->next == 0)
+ symtab->free_ptr = (char *) type_vector;
+
+ symtab->filename = subfile->name;
+ lv = subfile->line_vector;
+ lv->nitems = subfile->line_vector_index;
+ symtab->linetable = (struct linetable *)
+ xrealloc (lv, (sizeof (struct linetable)
+ + lv->nitems * sizeof (struct linetable_entry)));
+ symtab->nlines = 0;
+ symtab->line_charpos = 0;
+
+ /* Link the new symtab into the list of such. */
+ symtab->next = symtab_list;
+ symtab_list = symtab;
+
+ nextsub = subfile->next;
+ free (subfile);
+ }
+
+ type_vector = 0;
+ type_vector_length = -1;
+ line_vector = 0;
+ line_vector_length = -1;
+ last_source_file = 0;
+}
+
+#ifdef N_BINCL
+
+/* Handle the N_BINCL and N_EINCL symbol types
+ that act like N_SOL for switching source files
+ (different subfiles, as we call them) within one object file,
+ but using a stack rather than in an arbitrary order. */
+
+struct subfile_stack
+{
+ struct subfile_stack *next;
+ char *name;
+ int prev_index;
+};
+
+struct subfile_stack *subfile_stack;
+
+static void
+push_subfile ()
+{
+ register struct subfile_stack *tem
+ = (struct subfile_stack *) xxmalloc (sizeof (struct subfile_stack));
+
+ tem->next = subfile_stack;
+ subfile_stack = tem;
+ if (current_subfile == 0 || current_subfile->name == 0)
+ abort ();
+ tem->name = current_subfile->name;
+ tem->prev_index = header_file_prev_index;
+}
+
+static char *
+pop_subfile ()
+{
+ register char *name;
+ register struct subfile_stack *link = subfile_stack;
+
+ if (link == 0)
+ abort ();
+
+ name = link->name;
+ subfile_stack = link->next;
+ header_file_prev_index = link->prev_index;
+ free (link);
+
+ return name;
+}
+#endif /* Have N_BINCL */
+
+/* Accumulate the misc functions in bunches of 127.
+ At the end, copy them all into one newly allocated structure. */
+
+#define MISC_BUNCH_SIZE 127
+
+struct misc_bunch
+{
+ struct misc_bunch *next;
+ struct misc_function contents[MISC_BUNCH_SIZE];
+};
+
+/* Bunch currently being filled up.
+ The next field points to chain of filled bunches. */
+
+static struct misc_bunch *misc_bunch;
+
+/* Number of slots filled in current bunch. */
+
+static int misc_bunch_index;
+
+/* Total number of misc functions recorded so far. */
+
+static int misc_count;
+
+static void
+init_misc_functions ()
+{
+ misc_count = 0;
+ misc_bunch = 0;
+ misc_bunch_index = MISC_BUNCH_SIZE;
+}
+
+static void
+record_misc_function (name, address, type)
+ char *name;
+ CORE_ADDR address;
+ int type;
+{
+ register struct misc_bunch *new;
+ register unsigned char mtype;
+
+ if (misc_bunch_index == MISC_BUNCH_SIZE)
+ {
+ new = (struct misc_bunch *) xxmalloc (sizeof (struct misc_bunch));
+ misc_bunch_index = 0;
+ new->next = misc_bunch;
+ misc_bunch = new;
+ }
+ misc_bunch->contents[misc_bunch_index].name = name;
+ misc_bunch->contents[misc_bunch_index].address = address;
+ switch (type &~ N_EXT)
+ {
+ case N_TEXT: mtype = mf_text; break;
+ case N_DATA: mtype = mf_data; break;
+ case N_BSS: mtype = mf_bss; break;
+ case N_ABS: mtype = mf_abs; break;
+#ifdef N_SETV
+ case N_SETV: mtype = mf_data; break;
+#endif
+ default: mtype = mf_unknown; break;
+ }
+ misc_bunch->contents[misc_bunch_index].type = mtype;
+ misc_bunch_index++;
+ misc_count++;
+}
+
+static int
+compare_misc_functions (fn1, fn2)
+ struct misc_function *fn1, *fn2;
+{
+ /* Return a signed result based on unsigned comparisons
+ so that we sort into unsigned numeric order. */
+ if (fn1->address < fn2->address)
+ return -1;
+ if (fn1->address > fn2->address)
+ return 1;
+ return 0;
+}
+
+static void
+discard_misc_bunches ()
+{
+ register struct misc_bunch *next;
+
+ while (misc_bunch)
+ {
+ next = misc_bunch->next;
+ free (misc_bunch);
+ misc_bunch = next;
+ }
+}
+
+/* INCLINK nonzero means bunches are from an incrementally-linked file.
+ Add them to the existing bunches.
+ Otherwise INCLINK is zero, and we start from scratch. */
+static void
+condense_misc_bunches (inclink)
+ int inclink;
+{
+ register int i, j;
+ register struct misc_bunch *bunch;
+#ifdef NAMES_HAVE_UNDERSCORE
+ int offset = 1;
+#else
+ int offset = 0;
+#endif
+
+ if (inclink)
+ {
+ misc_function_vector
+ = (struct misc_function *)
+ xrealloc (misc_function_vector, (misc_count + misc_function_count)
+ * sizeof (struct misc_function));
+ j = misc_function_count;
+ }
+ else
+ {
+ misc_function_vector
+ = (struct misc_function *)
+ xxmalloc (misc_count * sizeof (struct misc_function));
+ j = 0;
+ }
+
+ bunch = misc_bunch;
+ while (bunch)
+ {
+ for (i = 0; i < misc_bunch_index; i++)
+ {
+ misc_function_vector[j] = bunch->contents[i];
+ misc_function_vector[j].name
+ = obconcat (misc_function_vector[j].name
+ + (misc_function_vector[j].name[0] == '_' ? offset : 0),
+ "", "");
+ j++;
+ }
+ bunch = bunch->next;
+ misc_bunch_index = MISC_BUNCH_SIZE;
+ }
+
+ if (inclink)
+ misc_function_count += misc_count;
+ else
+ misc_function_count = j;
+
+ /* Sort the misc functions by address. */
+
+ qsort (misc_function_vector, misc_function_count,
+ sizeof (struct misc_function),
+ compare_misc_functions);
+
+ /* (re)build the hash table (positions changed during the sort) */
+
+ for (i = 0; i < MISC_FUNC_HASH_SIZE; ++i)
+ misc_function_hash_tab[i] = -1;
+ for (i = 0; i < misc_function_count; ++i)
+ {
+ j = hash_symbol(misc_function_vector[i].name) & (MISC_FUNC_HASH_SIZE - 1);
+ misc_function_vector[i].next = misc_function_hash_tab[j];
+ misc_function_hash_tab[j] = i;
+ }
+}
+
+/* Call sort_syms to sort alphabetically
+ the symbols of each block of each symtab. */
+
+static int
+compare_symbols (s1, s2)
+ struct symbol **s1, **s2;
+{
+ register int namediff;
+
+ /* Compare the initial characters. */
+ namediff = SYMBOL_NAME (*s1)[0] - SYMBOL_NAME (*s2)[0];
+ if (namediff != 0) return namediff;
+
+ /* If they match, compare the rest of the names. */
+ namediff = strcmp (SYMBOL_NAME (*s1), SYMBOL_NAME (*s2));
+ if (namediff != 0) return namediff;
+
+ /* For symbols of the same name, registers should come first. */
+ return ((SYMBOL_CLASS (*s2) == LOC_REGISTER)
+ - (SYMBOL_CLASS (*s1) == LOC_REGISTER));
+}
+
+static void sort_symtab_syms ();
+
+static void
+sort_syms ()
+{
+ register struct symtab *s;
+
+ for (s = symtab_list; s; s = s->next)
+ sort_symtab_syms (s);
+}
+
+static void
+sort_symtab_syms (s)
+ register struct symtab *s;
+{
+ register struct blockvector *bv = BLOCKVECTOR (s);
+ int nbl = BLOCKVECTOR_NBLOCKS (bv);
+ int i;
+ register struct block *b;
+
+ /* Note that in the following sort, we always make sure that
+ register debug symbol declarations always come before regular
+ debug symbol declarations (as might happen when parameters are
+ then put into registers by the compiler). We do this by a
+ correct compare in compare_symbols, and by the reversal of the
+ symbols if we don't sort. This works as long as a register debug
+ symbol always comes after a parameter debug symbol. */
+
+ /* This is no longer necessary; lookup_block_symbol now always
+ prefers some other declaration over a parameter declaration. We
+ still sort the thing (that is necessary), but we don't reverse it
+ if we shouldn't sort it. */
+
+ for (i = 0; i < nbl; i++)
+ {
+ b = BLOCKVECTOR_BLOCK (bv, i);
+ if (BLOCK_SHOULD_SORT (b))
+ qsort (&BLOCK_SYM (b, 0), BLOCK_NSYMS (b),
+ sizeof (struct symbol *), compare_symbols);
+ }
+}
+
+
+extern struct symtab *psymtab_to_symtab ();
+
+/* The entry point. */
+static CORE_ADDR entry_point;
+
+static char *symfile_string_table;
+static int symfile_string_table_size;
+
+/* This is the symbol-file command. Read the file, analyze its symbols,
+ and add a struct symtab to symtab_list. */
+
+void
+symbol_file_command (name, from_tty)
+ char *name;
+ int from_tty;
+{
+ register int desc;
+ DECLARE_FILE_HEADERS;
+ struct nlist *nlist;
+
+ /* The string table. */
+ char *stringtab;
+
+ /* The size of the string table (buffer is a bizarre name...). */
+ long buffer;
+
+ register int val;
+ extern void close ();
+ struct cleanup *old_chain;
+ struct symtab *symseg;
+ struct stat statbuf;
+
+ dont_repeat ();
+
+ if (name == 0)
+ {
+ if ((symtab_list || partial_symtab_list)
+ && from_tty
+ && !query ("Discard symbol table? ", 0))
+ error ("Not confirmed.");
+ if (symfile)
+ free (symfile);
+ symfile = 0;
+ free_all_symtabs ();
+ free_all_psymtabs ();
+ return;
+ }
+
+ name = tilde_expand (name);
+ make_cleanup (free, name);
+
+ if ((symtab_list || partial_symtab_list)
+ && !query ("Load new symbol table from \"%s\"? ", name))
+ error ("Not confirmed.");
+
+ {
+ char *absolute_name;
+ desc = openp (getenv ("PATH"), 1, name, O_RDONLY, 0, &absolute_name);
+ if (desc < 0)
+ perror_with_name (name);
+ else
+ name = absolute_name;
+ }
+
+ old_chain = make_cleanup (close, desc);
+ make_cleanup (free_current_contents, &name);
+
+ READ_FILE_HEADERS (desc, name);
+
+ entry_point = ENTRY_POINT;
+
+ if (NUMBER_OF_SYMBOLS == 0)
+ {
+ if (symfile)
+ free (symfile);
+ symfile = 0;
+ free_all_symtabs ();
+ free_all_psymtabs ();
+ printf ("%s has no symbol-table; symbols discarded.\n", name);
+ fflush (stdout);
+ do_cleanups (old_chain);
+ return;
+ }
+
+ printf ("Reading symbol data from %s...", name);
+ fflush (stdout);
+
+ /* Now read the string table, all at once. */
+ val = lseek (desc, STRING_TABLE_OFFSET, 0);
+ if (val < 0)
+ perror_with_name (name);
+ if (stat (name, &statbuf) == -1)
+ perror_with_name (name);
+ READ_STRING_TABLE_SIZE (buffer);
+ if (buffer >= 0 && buffer < statbuf.st_size)
+ {
+ /* This should speed things up without consuming much
+ extra memory (because probably little of the space is going
+ to be reused anyway, whether in data or stack space).
+
+ A quick test (running GDB on itself and setting 9 breakpoints
+ in different files) showed that memory usage was almost
+ identical for the two cases. */
+#if 0
+#ifdef BROKEN_LARGE_ALLOCA
+ stringtab = (char *) xmalloc (buffer);
+ make_cleanup (free, stringtab);
+#else
+ stringtab = (char *) alloca (buffer);
+#endif
+#endif
+ stringtab = (char *) xmalloc (buffer);
+ symfile_string_table = stringtab;
+ symfile_string_table_size = buffer;
+ }
+ else
+ stringtab = NULL;
+ if (stringtab == NULL)
+ error ("ridiculous string table size: %d bytes", buffer);
+
+ /* Usually READ_STRING_TABLE_SIZE will have shifted the file pointer.
+ Occaisionally, it won't. */
+ val = lseek (desc, STRING_TABLE_OFFSET, L_SET);
+ if (val < 0)
+ perror_with_name (name);
+ val = myread (desc, stringtab, buffer);
+ if (val < 0)
+ perror_with_name (name);
+
+ /* Throw away the old symbol table. */
+
+ if (symfile)
+ free (symfile);
+ symfile = 0;
+ free_all_symtabs ();
+ free_all_psymtabs ();
+
+ /* Empty the hash table of global syms looking for values. */
+ bzero (global_sym_chain, sizeof global_sym_chain);
+
+ /* Symsegs are no longer supported by GDB. Setting symseg_chain to
+ 0 is easier than finding all the symseg code and eliminating it. */
+ symseg_chain = 0;
+
+ /* Position to read the symbol table. Do not read it all at once. */
+ val = lseek (desc, SYMBOL_TABLE_OFFSET, 0);
+ if (val < 0)
+ perror_with_name (name);
+
+ /* Don't put these on the cleanup chain; they need to stick around
+ until the next call to symbol_file_command. *Then* we'll free
+ them. */
+ free_header_files ();
+ init_header_files ();
+
+ init_misc_functions ();
+ make_cleanup (discard_misc_bunches, 0);
+
+ free_pendings = 0;
+ pending_blocks = 0;
+ file_symbols = 0;
+ global_symbols = 0;
+ make_cleanup (really_free_pendings, 0);
+
+ /* Now that the symbol table data of the executable file are all in core,
+ process them and define symbols accordingly. Closes desc. */
+
+ read_dbx_symtab (desc, stringtab, buffer, NUMBER_OF_SYMBOLS, 0,
+ ADDR_OF_TEXT_SEGMENT, SIZE_OF_TEXT_SEGMENT);
+
+ /* Go over the misc functions and install them in vector. */
+
+ condense_misc_bunches (0);
+
+ /* Don't allow char * to have a typename (else would get caddr_t.) */
+
+ TYPE_NAME (lookup_pointer_type (builtin_type_char)) = 0;
+
+ /* Make a default for file to list. */
+
+ symfile = savestring (name, strlen (name));
+
+ /* Call to select_source_symtab used to be here; it was using too
+ much time. I'll make sure that list_sources can handle the lack
+ of current_source_symtab */
+
+ do_cleanups (old_chain); /* Descriptor closed here */
+
+ /* Free the symtabs made by read_symsegs, but not their contents,
+ which have been copied into symtabs on symtab_list. */
+ while (symseg_chain)
+ {
+ register struct symtab *s = symseg_chain->next;
+ free (symseg_chain);
+ symseg_chain = s;
+ }
+
+ if (!partial_symtab_list)
+ printf ("\n(no debugging symbols found)...");
+
+ printf ("done.\n");
+ fflush (stdout);
+}
+
+/* Return name of file symbols were loaded from, or 0 if none.. */
+
+char *
+get_sym_file ()
+{
+ return symfile;
+}
+
+/* Buffer for reading the symbol table entries. */
+static struct nlist symbuf[4096];
+static int symbuf_idx;
+static int symbuf_end;
+
+/* I/O descriptor for reading the symbol table. */
+static int symtab_input_desc;
+
+/* The address of the string table
+ of the object file we are reading (as copied into core). */
+static char *stringtab_global;
+
+/* Refill the symbol table input buffer
+ and set the variables that control fetching entries from it.
+ Reports an error if no data available.
+ This function can read past the end of the symbol table
+ (into the string table) but this does no harm. */
+
+static int
+fill_symbuf ()
+{
+ int nbytes = myread (symtab_input_desc, symbuf, sizeof (symbuf));
+ if (nbytes <= 0)
+ error ("error or end of file reading symbol table");
+ symbuf_end = nbytes / sizeof (struct nlist);
+ symbuf_idx = 0;
+ return 1;
+}
+
+/* dbx allows the text of a symbol name to be continued into the
+ next symbol name! When such a continuation is encountered
+ (a \ at the end of the text of a name)
+ call this function to get the continuation. */
+
+static char *
+next_symbol_text ()
+{
+ if (symbuf_idx == symbuf_end)
+ fill_symbuf ();
+ symnum++;
+ return symbuf[symbuf_idx++].n_un.n_strx + stringtab_global;
+}
+
+/*
+ * Initializes storage for all of the partial symbols that will be
+ * created by read_dbx_symtab and subsidiaries.
+ */
+void
+init_psymbol_list (total_symbols)
+ int total_symbols;
+{
+ /* Current best guess is that there are approximately a twentieth
+ of the total symbols (in a debugging file) are global or static
+ oriented symbols */
+ global_psymbols.size = total_symbols / 10;
+ static_psymbols.size = total_symbols / 10;
+ global_psymbols.next = global_psymbols.list = (struct partial_symbol *)
+ xmalloc (global_psymbols.size * sizeof (struct partial_symbol));
+ static_psymbols.next = static_psymbols.list = (struct partial_symbol *)
+ xmalloc (static_psymbols.size * sizeof (struct partial_symbol));
+}
+
+/*
+ * Initialize the list of bincls to contain none and have some
+ * allocated.
+ */
+static void
+init_bincl_list (number)
+ int number;
+{
+ bincls_allocated = number;
+ next_bincl = bincl_list = (struct header_file_location *)
+ xmalloc (bincls_allocated * sizeof(struct header_file_location));
+}
+
+/*
+ * Add a bincl to the list.
+ */
+static void
+add_bincl_to_list (pst, name, instance)
+ struct partial_symtab *pst;
+ char *name;
+ int instance;
+{
+ if (next_bincl >= bincl_list + bincls_allocated)
+ {
+ int offset = next_bincl - bincl_list;
+ bincls_allocated *= 2;
+ bincl_list = (struct header_file_location *)
+ xrealloc (bincl_list,
+ bincls_allocated * sizeof (struct header_file_location));
+ next_bincl = bincl_list + offset;
+ }
+ next_bincl->pst = pst;
+ next_bincl->instance = instance;
+ next_bincl++->name = name;
+}
+
+/*
+ * Given a name, value pair, find the corresponding
+ * bincl in the list. Return the partial symtab associated
+ * with that header_file_location.
+ */
+struct partial_symtab *
+find_corresponding_bincl_psymtab (name, instance)
+ char *name;
+ int instance;
+{
+ struct header_file_location *bincl;
+
+ for (bincl = bincl_list; bincl < next_bincl; bincl++)
+ if (bincl->instance == instance
+ && !strcmp (name, bincl->name))
+ return bincl->pst;
+
+ return (struct partial_symtab *) 0;
+}
+
+/*
+ * Free the storage allocated for the bincl list.
+ */
+static void
+free_bincl_list ()
+{
+ free (bincl_list);
+ bincls_allocated = 0;
+}
+
+static struct partial_symtab *start_psymtab ();
+static void add_psymtab_dependency ();
+static void end_psymtab();
+
+static int
+compare_psymbols (s1, s2)
+ register struct partial_symbol *s1, *s2;
+{
+ register char
+ *st1 = SYMBOL_NAME (s1),
+ *st2 = SYMBOL_NAME (s2);
+ register int i;
+
+ if (st1[0] - st2[0])
+ return (st1[0] - st2[0]);
+ if (st1[1] - st2[1])
+ return (st1[1] - st2[1]);
+ if (i = strcmp(st1, st2))
+ return (i);
+ /* Next comparison implements policy that used to be in lookup_symbol:
+ * it would search psymtabs in psymtab_list order (reverse order of
+ * declaration) & take first occurance of symbol it found. So, we
+ * collate duplicate names in reverse psymtab order. */
+ return (s2->pst - s1->pst);
+}
+
+/* Given pointers to an a.out symbol table in core containing dbx
+ style data, setup partial_symtab's describing each source file for
+ which debugging information is available. NLISTLEN is the number
+ of symbols in the symbol table. All symbol names are given as
+ offsets relative to STRINGTAB. STRINGTAB_SIZE is the size of
+ STRINGTAB.
+
+ I have no idea whether or not this routine should be setup to deal
+ with inclinks. It seems reasonable to me that they be dealt with
+ standardly, so I am not going to make a strong effort to deal with
+ them here.
+ */
+
+static void
+read_dbx_symtab (desc, stringtab, stringtab_size, nlistlen, inclink,
+ text_addr, text_size)
+ int desc;
+ register char *stringtab;
+ register long stringtab_size;
+ register int nlistlen;
+ int inclink;
+ unsigned text_addr;
+ int text_size;
+{
+ register struct nlist *bufp;
+ register char *namestring;
+ register struct partial_symbol *psym;
+ register struct psymbol_allocation_list *psymbol_struct;
+
+ int nsl;
+ int past_first_source_file = 0;
+ CORE_ADDR last_o_file_start = 0;
+ char *last_o_file_name = "*bogus*";
+ struct cleanup *old_chain;
+ char *p;
+ enum namespace ns;
+ enum address_class class;
+
+#ifdef PROFILE_TYPES
+ int i;
+ int profile_types [256];
+ int strcmp_called = 0;
+ int autovars = 0;
+ int global_funs = 0;
+#endif
+
+ /* Current partial symtab */
+ struct partial_symtab *pst;
+
+ /* List of current psymtab's include files */
+ char **psymtab_include_list;
+ int includes_allocated;
+ int includes_used;
+
+ /* Index within current psymtab dependency list */
+ struct partial_symtab **dependency_list;
+ int dependencies_used, dependencies_allocated;
+
+#ifdef PROFILE_TYPES
+ for (i = 0; i < 256; i++)
+ profile_types[i] = 0;
+#endif
+
+ stringtab_global = stringtab;
+
+ pst = (struct partial_symtab *) 0;
+
+ includes_allocated = 30;
+ includes_used = 0;
+ psymtab_include_list = (char **) alloca (includes_allocated *
+ sizeof (char *));
+
+ dependencies_allocated = 30;
+ dependencies_used = 0;
+ dependency_list =
+ (struct partial_symtab **) alloca (dependencies_allocated *
+ sizeof (struct partial_symtab *));
+
+ old_chain = make_cleanup (free_all_psymtabs, 0);
+
+ /* Init bincl list */
+ init_bincl_list (20);
+ make_cleanup (free_bincl_list, 0);
+
+ /* Setup global partial symbol list */
+ init_psymbol_list (nlistlen);
+
+ last_source_file = 0;
+
+#ifdef END_OF_TEXT_DEFAULT
+ end_of_text_addr = END_OF_TEXT_DEFAULT;
+#else
+ end_of_text_addr = text_addr + text_size;
+#endif
+
+ symtab_input_desc = desc; /* This is needed for fill_symbuf below */
+ symbuf_end = symbuf_idx = 0;
+
+ for (symnum = 0; symnum < nlistlen; symnum++)
+ {
+ /* Get the symbol for this run and pull out some info */
+ QUIT; /* allow this to be interruptable */
+ if (symbuf_idx == symbuf_end)
+ fill_symbuf ();
+ bufp = &symbuf[symbuf_idx++];
+
+#ifdef PROFILE_TYPES
+ profile_types[bufp->n_type]++;
+#endif
+
+ /*
+ * Special case to speed up readin.
+ */
+ if (bufp->n_type == N_SLINE) continue;
+
+ /* Ok. There is a lot of code duplicated in the rest of this
+ switch statiement (for efficiency reasons). Since I don't
+ like duplicating code, I will do my penance here, and
+ describe the code which is duplicated:
+
+ *) The assignment to namestring.
+ *) The call to index.
+ *) The addition of a partial symbol the the two partial
+ symbol lists. This last is a large section of code, so
+ I've imbedded it in the following macro.
+ */
+
+/* Set namestring based on bufp. */
+#define SET_NAMESTRING()\
+ if (bufp->n_un.n_strx < 0 || bufp->n_un.n_strx >= stringtab_size) \
+ error ("Invalid symbol data: bad string table offset: %d", \
+ bufp->n_un.n_strx); \
+ namestring = bufp->n_un.n_strx + stringtab
+
+#define ADD_PSYMBOL_TO_LIST(NAME, NAMELENGTH, NAMESPACE, CLASS, LIST, VALUE)\
+ do { \
+ if ((LIST).next >= \
+ (LIST).list + (LIST).size) \
+ { \
+ (LIST).list = (struct partial_symbol *) \
+ xrealloc ((LIST).list, \
+ ((LIST).size * 2 \
+ * sizeof (struct partial_symbol))); \
+ /* Next assumes we only went one over. Should be good if \
+ program works correctly */ \
+ (LIST).next = \
+ (LIST).list + (LIST).size; \
+ (LIST).size *= 2; \
+ } \
+ psym = (LIST).next++; \
+ \
+ SYMBOL_NAME (psym) = (char *) obstack_alloc (psymbol_obstack, \
+ (NAMELENGTH) + 1); \
+ strncpy (SYMBOL_NAME (psym), (NAME), (NAMELENGTH)); \
+ SYMBOL_NAME (psym)[(NAMELENGTH)] = '\0'; \
+ SYMBOL_NAMESPACE (psym) = (NAMESPACE); \
+ SYMBOL_CLASS (psym) = (CLASS); \
+ SYMBOL_VALUE (psym) = (VALUE); \
+ } while (0);
+
+
+ switch (bufp->n_type)
+ {
+ /*
+ * Standard, non-debugger, symbols
+ */
+
+ case N_TEXT | N_EXT:
+ /* Catch etext */
+
+ SET_NAMESTRING();
+
+ if (namestring[6] == '\0' && namestring[5] == 't'
+ && namestring[4] == 'x' && namestring[3] == 'e'
+ && namestring[2] == 't' && namestring[1] == 'e'
+ && namestring[0] == '_')
+ end_of_text_addr = bufp->n_value;
+
+ /* Figure out beginning and end of global linker symbol
+ section and put non-debugger specified symbols on
+ tmp_symchain */
+
+ last_global_sym = symnum;
+ if (!first_global_sym) first_global_sym = symnum;
+
+ record_misc_function (namestring, bufp->n_value,
+ bufp->n_type); /* Always */
+
+ continue;
+
+#ifdef N_NBTEXT
+ case N_NBTEXT | N_EXT:
+#endif
+#ifdef N_NBDATA
+ case N_NBDATA | N_EXT:
+#endif
+#ifdef N_NBBSS
+ case N_NBBSS | N_EXT:
+#endif
+#ifdef N_SETV
+ case N_SETV | N_EXT:
+#endif
+ case N_ABS | N_EXT:
+ case N_DATA | N_EXT:
+ case N_BSS | N_EXT:
+ /* Figure out beginning and end of global linker symbol
+ section and put non-debugger specified symbols on
+ tmp_symchain */
+
+ SET_NAMESTRING();
+
+ last_global_sym = symnum;
+ if (!first_global_sym) first_global_sym = symnum;
+
+ /* Not really a function here, but... */
+ record_misc_function (namestring, bufp->n_value,
+ bufp->n_type); /* Always */
+
+ continue;
+
+#ifdef N_NBTEXT
+ case N_NBTEXT:
+#endif
+
+ /* We need to be able to deal with both N_FN or N_TEXT,
+ because we have no way of knowing whether the sys-supplied ld
+ or GNU ld was used to make the executable. */
+#if ! (N_FN & N_EXT)
+ case N_FN:
+#endif
+ case N_FN | N_EXT:
+ case N_TEXT:
+ SET_NAMESTRING();
+ if ((namestring[0] == '-' && namestring[1] == 'l')
+ || (namestring [(nsl = strlen (namestring)) - 1] == 'o'
+ && namestring [nsl - 2] == '.'))
+ {
+ if (entry_point < bufp->n_value
+ && entry_point >= last_o_file_start)
+ {
+ startup_file_start = last_o_file_start;
+ startup_file_end = bufp->n_value;
+ }
+ if (past_first_source_file && pst)
+ {
+ end_psymtab (pst, psymtab_include_list, includes_used,
+ symnum * sizeof (struct nlist), bufp->n_value,
+ dependency_list, dependencies_used,
+ global_psymbols.next, static_psymbols.next);
+ pst = (struct partial_symtab *) 0;
+ includes_used = 0;
+ dependencies_used = 0;
+ }
+ else
+ past_first_source_file = 1;
+ last_o_file_start = bufp->n_value;
+ last_o_file_name = namestring;
+ nsl = strlen(namestring);
+ if (namestring[nsl-2] == '.' && namestring[nsl-1] == 'o')
+ namestring[nsl-2] = 0;
+ }
+ else if (strcmp(namestring, "gcc_compiled."))
+ {
+ if (*namestring == '_')
+ ++namestring;
+ namestring = obconcat(last_o_file_name, ":", namestring);
+ last_global_sym = symnum;
+ if (!first_global_sym)
+ first_global_sym = symnum;
+ record_misc_function(namestring, bufp->n_value, bufp->n_type);
+ }
+ continue;
+
+ case N_ABS:
+ case N_DATA:
+ case N_BSS:
+ SET_NAMESTRING();
+ if (*namestring == '_')
+ ++namestring;
+ namestring = obconcat(last_o_file_name, ":", namestring);
+ last_global_sym = symnum;
+ if (!first_global_sym)
+ first_global_sym = symnum;
+ record_misc_function(namestring, bufp->n_value, bufp->n_type);
+ continue;
+
+ case N_UNDF:
+ case N_UNDF | N_EXT:
+#ifdef N_NBDATA
+ case N_NBDATA:
+#endif
+#ifdef N_NBBSS
+ case N_NBBSS:
+#endif
+
+ /* Keep going . . .*/
+
+ /*
+ * Special symbol types for GNU
+ */
+#ifdef N_INDR
+ case N_INDR:
+ case N_INDR | N_EXT:
+#endif
+#ifdef N_SETA
+ case N_SETA:
+ case N_SETA | N_EXT:
+ case N_SETT:
+ case N_SETT | N_EXT:
+ case N_SETD:
+ case N_SETD | N_EXT:
+ case N_SETB:
+ case N_SETB | N_EXT:
+ case N_SETV:
+#endif
+ continue;
+
+ /*
+ * Debugger symbols
+ */
+
+ case N_SO:
+ /* End the current partial symtab and start a new one */
+
+ SET_NAMESTRING();
+
+ if (pst && past_first_source_file)
+ {
+ end_psymtab (pst, psymtab_include_list, includes_used,
+ symnum * sizeof (struct nlist), bufp->n_value,
+ dependency_list, dependencies_used,
+ global_psymbols.next, static_psymbols.next);
+ pst = (struct partial_symtab *) 0;
+ includes_used = 0;
+ dependencies_used = 0;
+ }
+ else
+ past_first_source_file = 1;
+
+ pst = start_psymtab (namestring, bufp->n_value,
+ symnum * sizeof (struct nlist),
+ global_psymbols.next, static_psymbols.next);
+
+ continue;
+
+#ifdef N_BINCL
+ case N_BINCL:
+ /* Add this bincl to the bincl_list for future EXCLs. No
+ need to save the string; it'll be around until
+ read_dbx_symtab function return */
+
+ SET_NAMESTRING();
+
+ add_bincl_to_list (pst, namestring, bufp->n_value);
+
+ /* Mark down an include file in the current psymtab */
+
+ psymtab_include_list[includes_used++] = namestring;
+ if (includes_used >= includes_allocated)
+ {
+ char **orig = psymtab_include_list;
+
+ psymtab_include_list = (char **)
+ alloca ((includes_allocated *= 2) *
+ sizeof (char *));
+ bcopy (orig, psymtab_include_list,
+ includes_used * sizeof (char *));
+ }
+
+ continue;
+#endif
+
+ case N_SOL:
+ /* Mark down an include file in the current psymtab */
+
+ SET_NAMESTRING();
+
+ /* In C++, one may expect the same filename to come round many
+ times, when code is coming alternately from the main file
+ and from inline functions in other files. So I check to see
+ if this is a file we've seen before.
+
+ This seems to be a lot of time to be spending on N_SOL, but
+ things like "break expread.y:435" need to work (I
+ suppose the psymtab_include_list could be hashed or put
+ in a binary tree, if profiling shows this is a major hog). */
+ {
+ register int i;
+ for (i = 0; i < includes_used; i++)
+ if (!strcmp (namestring, psymtab_include_list[i]))
+ {
+ i = -1;
+ break;
+ }
+ if (i == -1)
+ continue;
+ }
+
+ psymtab_include_list[includes_used++] = namestring;
+ if (includes_used >= includes_allocated)
+ {
+ char **orig = psymtab_include_list;
+
+ psymtab_include_list = (char **)
+ alloca ((includes_allocated *= 2) *
+ sizeof (char *));
+ bcopy (orig, psymtab_include_list,
+ includes_used * sizeof (char *));
+ }
+ continue;
+
+ case N_LSYM: /* Typedef or automatic variable. */
+ SET_NAMESTRING();
+
+ p = (char *) index (namestring, ':');
+
+ /* Skip if there is no :. */
+ if (!p) continue;
+
+ switch (p[1])
+ {
+ case 'T':
+ ADD_PSYMBOL_TO_LIST (namestring, p - namestring,
+ STRUCT_NAMESPACE, LOC_TYPEDEF,
+ static_psymbols, bufp->n_value);
+ goto check_enum;
+ case 't':
+ ADD_PSYMBOL_TO_LIST (namestring, p - namestring,
+ VAR_NAMESPACE, LOC_TYPEDEF,
+ static_psymbols, bufp->n_value);
+ check_enum:
+ /* If this is an enumerated type, we need to
+ add all the enum constants to the partial symbol
+ table. This does not cover enums without names, e.g.
+ "enum {a, b} c;" in C, but fortunately those are
+ rare. There is no way for GDB to find those from the
+ enum type without spending too much time on it. Thus
+ to solve this problem, the compiler needs to put out separate
+ constant symbols ('c' N_LSYMS) for enum constants in
+ enums without names. */
+
+ /* We are looking for something of the form
+ <name> ":" ("t" | "T") [<number> "="] "e"
+ {<constant> ":" <value> ","} ";". */
+
+ /* Skip over the colon and the 't' or 'T'. */
+ p += 2;
+ /* This type may be given a number. Skip over it. */
+ while ((*p >= '0' && *p <= '9')
+ || *p == '=')
+ p++;
+
+ if (*p++ == 'e')
+ {
+ /* We have found an enumerated type. */
+ /* According to comments in read_enum_type
+ a comma could end it instead of a semicolon.
+ I don't know where that happens.
+ Accept either. */
+ while (*p && *p != ';' && *p != ',')
+ {
+ char *q;
+
+ /* Check for and handle cretinous dbx symbol name
+ continuation! */
+ if (*p == '\\')
+ p = next_symbol_text ();
+
+ /* Point to the character after the name
+ of the enum constant. */
+ for (q = p; *q && *q != ':'; q++)
+ ;
+ /* Note that the value doesn't matter for
+ enum constants in psymtabs, just in symtabs. */
+ ADD_PSYMBOL_TO_LIST (p, q - p,
+ VAR_NAMESPACE, LOC_CONST,
+ static_psymbols, 0);
+ /* Point past the name. */
+ p = q;
+ /* Skip over the value. */
+ while (*p && *p != ',')
+ p++;
+ /* Advance past the comma. */
+ if (*p)
+ p++;
+ }
+ }
+
+ continue;
+ case 'c':
+ /* Constant, e.g. from "const" in Pascal. */
+ ADD_PSYMBOL_TO_LIST (namestring, p - namestring,
+ VAR_NAMESPACE, LOC_CONST,
+ static_psymbols, bufp->n_value);
+ continue;
+ default:
+#ifdef PROFILE_TYPES
+ if (isalpha(p[1]))
+ printf ("Funny...LSYM with a letter that isn't a type\n");
+ autovars++;
+#endif
+ /* Skip if the thing following the : is
+ not a letter (which indicates declaration of a local
+ variable, which we aren't interested in). */
+ continue;
+ }
+
+ case N_FUN:
+#if 0
+ /* This special-casing of N_FUN is just wrong; N_FUN
+ does not mean "function"; it means "text segment".
+ So N_FUN can go with 'V', etc. as well as 'f' or 'F'. */
+
+ SET_NAMESTRING();
+
+ p = (char *) index (namestring, ':');
+
+ if (!p || p[1] == 'F') continue;
+
+#ifdef PROFILE_TYPES
+ if (p[1] != 'f')
+ printf ("Funny...FUN with a letter that isn't 'F' or 'f'.\n");
+ global_funs++;
+#endif
+
+ ADD_PSYMBOL_TO_LIST (namestring, p - namestring,
+ VAR_NAMESPACE, LOC_BLOCK,
+ static_psymbols, bufp->n_value);
+
+ continue;
+#endif /* 0 */
+ case N_GSYM: /* Global (extern) variable; can be
+ data or bss (sigh). */
+ case N_STSYM: /* Data seg var -- static */
+ case N_LCSYM: /* BSS " */
+
+ /* Following may probably be ignored; I'll leave them here
+ for now (until I do Pascal and Modula 2 extensions). */
+
+ case N_PC: /* I may or may not need this; I
+ suspect not. */
+#ifdef N_M2C
+ case N_M2C: /* I suspect that I can ignore this here. */
+ case N_SCOPE: /* Same. */
+#endif
+
+ SET_NAMESTRING();
+
+ p = (char *) index (namestring, ':');
+ if (!p)
+ continue; /* Not a debugging symbol. */
+
+ process_symbol_for_psymtab:
+
+ /* Main processing section for debugging symbols which
+ the initial read through the symbol tables needs to worry
+ about. If we reach this point, the symbol which we are
+ considering is definitely one we are interested in.
+ p must also contain the (valid) index into the namestring
+ which indicates the debugging type symbol. */
+
+ switch (p[1])
+ {
+ case 'c':
+ ADD_PSYMBOL_TO_LIST (namestring, p - namestring,
+ VAR_NAMESPACE, LOC_CONST,
+ static_psymbols, bufp->n_value);
+ continue;
+ case 'S':
+ ADD_PSYMBOL_TO_LIST (namestring, p - namestring,
+ VAR_NAMESPACE, LOC_STATIC,
+ static_psymbols, bufp->n_value);
+ continue;
+ case 'G':
+ ADD_PSYMBOL_TO_LIST (namestring, p - namestring,
+ VAR_NAMESPACE, LOC_EXTERNAL,
+ global_psymbols, bufp->n_value);
+ continue;
+
+ case 't':
+ ADD_PSYMBOL_TO_LIST (namestring, p - namestring,
+ VAR_NAMESPACE, LOC_TYPEDEF,
+ global_psymbols, bufp->n_value);
+ continue;
+
+ case 'f':
+ ADD_PSYMBOL_TO_LIST (namestring, p - namestring,
+ VAR_NAMESPACE, LOC_BLOCK,
+ static_psymbols, bufp->n_value);
+ continue;
+
+ /* Two things show up here (hopefully); static symbols of
+ local scope (static used inside braces) or extensions
+ of structure symbols. We can ignore both. */
+ case 'V':
+ case '(':
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ /* Global functions are ignored here. I'm not
+ sure what psymtab they go into (or just the misc
+ function vector). */
+ case 'F':
+ continue;
+
+ default:
+ fatal ("Internal error: Unexpected debugging symbol type '%c' at symnum %d.\n",
+ p[1], symnum);
+ }
+
+#ifdef N_BINCL
+ case N_EXCL:
+
+ SET_NAMESTRING();
+
+ /* Find the corresponding bincl and mark that psymtab on the
+ psymtab dependency list */
+ {
+ struct partial_symtab *needed_pst =
+ find_corresponding_bincl_psymtab (namestring, bufp->n_value);
+
+ /* If this include file was defined earlier in this file,
+ leave it alone. */
+ if (needed_pst == pst) continue;
+
+ if (needed_pst)
+ {
+ int i;
+ int found = 0;
+
+ for (i = 0; i < dependencies_used; i++)
+ if (dependency_list[i] == needed_pst)
+ {
+ found = 1;
+ break;
+ }
+
+ /* If it's already in the list, skip the rest. */
+ if (found) continue;
+
+ dependency_list[dependencies_used++] = needed_pst;
+ if (dependencies_used >= dependencies_allocated)
+ {
+ struct partial_symtab **orig = dependency_list;
+ dependency_list =
+ (struct partial_symtab **)
+ alloca ((dependencies_allocated *= 2)
+ * sizeof (struct partial_symtab *));
+ bcopy (orig, dependency_list,
+ (dependencies_used
+ * sizeof (struct partial_symtab *)));
+#ifdef DEBUG_INFO
+ fprintf (stderr, "Had to reallocate dependency list.\n");
+ fprintf (stderr, "New dependencies allocated: %d\n",
+ dependencies_allocated);
+#endif
+ }
+ }
+ else
+ error ("Invalid symbol data: \"repeated\" header file not previously seen, at symtab pos %d.",
+ symnum);
+ }
+ continue;
+
+ case N_EINCL:
+#endif
+#ifdef N_DSLINE
+ case N_DSLINE:
+#endif
+#ifdef N_BSLINE
+ case N_BSLINE:
+#endif
+ case N_SSYM: /* Claim: Structure or union element.
+ Hopefully, I can ignore this. */
+ case N_ENTRY: /* Alternate entry point; can ignore. */
+#ifdef N_MAIN
+ case N_MAIN: /* Can definitely ignore this. */
+#endif
+ case N_LENG:
+ case N_BCOMM:
+ case N_ECOMM:
+ case N_ECOML:
+ case N_FNAME:
+ case N_SLINE:
+ case N_RSYM:
+ case N_PSYM:
+ case N_LBRAC:
+ case N_RBRAC:
+ /* These symbols aren't interesting; don't worry about them */
+
+ continue;
+
+ default:
+ /* If we haven't found it yet, we've got problems */
+
+ if (IGNORE_SYMBOL (bufp->n_type))
+ continue;
+
+ fatal ("Bad symbol type 0x%x encountered in gdb scan", bufp->n_type);
+ }
+ }
+
+ /* If there's stuff to be cleaned up, clean it up. */
+ if (entry_point < bufp->n_value
+ && entry_point >= last_o_file_start)
+ {
+ startup_file_start = last_o_file_start;
+ startup_file_end = bufp->n_value;
+ }
+
+ if (pst)
+ {
+ end_psymtab (pst, psymtab_include_list, includes_used,
+ symnum * sizeof (struct nlist), end_of_text_addr,
+ dependency_list, dependencies_used,
+ global_psymbols.next, static_psymbols.next);
+ includes_used = 0;
+ dependencies_used = 0;
+ pst = (struct partial_symtab *) 0;
+ }
+
+ /* sort the global & static symtab list so we can binary search them */
+ qsort (global_psymbols.list, global_psymbols.next - global_psymbols.list,
+ sizeof (struct partial_symbol), compare_psymbols);
+ qsort (static_psymbols.list, static_psymbols.next - static_psymbols.list,
+ sizeof (struct partial_symbol), compare_psymbols);
+ free_bincl_list ();
+ discard_cleanups (old_chain);
+#ifdef PROFILE_TYPES
+ {
+ int i, j;
+#define __define_stab(SYM, NUMBER, NAME) {NUMBER, NAME},
+ static struct xyzzy {
+ unsigned char symnum;
+ char *name;
+ } tmp_list[] = {
+#include "stab.def"
+ {0x1, "eREF"},
+ {0x2, "ABS"},
+ {0x3, "eABS"},
+ {0x4, "TEXT"},
+ {0x5, "eTEXT"},
+ {0x6, "DATA"},
+ {0x7, "eDATA"},
+ {0x8, "BSS"},
+ {0x9, "eBSS"},
+ {0x12, "COMM"},
+ {0x13, "eCOMM"},
+ {0x1f, "FN"},
+ {0, "Unknown"},
+};
+ for (i = 0; i < 256; i++)
+ {
+ for (j = 0; j < (sizeof (tmp_list) / sizeof (struct xyzzy)) - 1; j++)
+ if (tmp_list[j].symnum == i)
+ break;
+ printf ("Symbol \"%s\" (0x%x) occured %d times.\n",
+ tmp_list[j].name, i, profile_types[i]);
+ }
+ printf ("Auto vars (under LSYM): %d\n", autovars);
+ printf ("Global funs (under FUN): %d\n", global_funs);
+ }
+#endif
+}
+
+/*
+ * Allocate and partially fill a partial symtab. It will be
+ * completely filled at the end of the symbol list.
+ */
+static struct partial_symtab *
+start_psymtab (filename, textlow, ldsymoff, global_syms, static_syms)
+ char *filename;
+ int textlow;
+ int ldsymoff;
+ struct partial_symbol *global_syms;
+ struct partial_symbol *static_syms;
+{
+ struct partial_symtab *result =
+ (struct partial_symtab *) obstack_alloc (psymbol_obstack,
+ sizeof (struct partial_symtab));
+
+ result->filename =
+ (char *) obstack_alloc (psymbol_obstack,
+ strlen (filename) + 1);
+ strcpy (result->filename, filename);
+
+ result->textlow = textlow;
+ result->ldsymoff = ldsymoff;
+
+ result->readin = 0;
+
+ result->globals_offset = global_syms - global_psymbols.list;
+ result->statics_offset = static_syms - static_psymbols.list;
+
+ result->n_global_syms = 0;
+ result->n_static_syms = 0;
+
+ return result;
+}
+
+
+/* Close off the current usage of a partial_symbol table entry. This
+ involves setting the correct number of includes (with a realloc),
+ setting the high text mark, setting the symbol length in the
+ executable, and setting the length of the global and static lists
+ of psymbols.
+
+ The global symbols and static symbols are then seperately sorted.
+
+ Then the partial symtab is put on the global list.
+ *** List variables and peculiarities of same. ***
+ */
+static void
+end_psymtab (pst, include_list, num_includes, capping_symbol_offset,
+ capping_text, dependency_list, number_dependencies,
+ capping_global, capping_static)
+ struct partial_symtab *pst;
+ char **include_list;
+ int num_includes;
+ int capping_symbol_offset;
+ int capping_text;
+ struct partial_symtab **dependency_list;
+ int number_dependencies;
+ struct partial_symbol *capping_global, *capping_static;
+{
+ int i;
+ register struct partial_symbol *ps;
+
+ pst->ldsymlen = capping_symbol_offset - pst->ldsymoff;
+ pst->texthigh = capping_text;
+
+ pst->n_global_syms =
+ capping_global - (global_psymbols.list + pst->globals_offset);
+ pst->n_static_syms =
+ capping_static - (static_psymbols.list + pst->statics_offset);
+
+ pst->dependencies = (struct partial_symtab **)
+ obstack_alloc (psymbol_obstack,
+ number_dependencies * sizeof (struct partial_symtab *));
+ bcopy (dependency_list, pst->dependencies,
+ number_dependencies * sizeof (struct partial_symtab *));
+ pst->number_of_dependencies = number_dependencies;
+
+ for (i = 0; i < num_includes; i++)
+ {
+ /* Eventually, put this on obstack */
+ struct partial_symtab *subpst =
+ (struct partial_symtab *)
+ obstack_alloc (psymbol_obstack,
+ sizeof (struct partial_symtab));
+
+ subpst->filename =
+ (char *) obstack_alloc (psymbol_obstack,
+ strlen (include_list[i]) + 1);
+ strcpy (subpst->filename, include_list[i]);
+
+ subpst->ldsymoff =
+ subpst->ldsymlen =
+ subpst->textlow =
+ subpst->texthigh = 0;
+ subpst->readin = 0;
+
+ subpst->dependencies = (struct partial_symtab **)
+ obstack_alloc (psymbol_obstack,
+ sizeof (struct partial_symtab *));
+ subpst->dependencies[0] = pst;
+ subpst->number_of_dependencies = 1;
+
+ subpst->globals_offset =
+ subpst->n_global_syms =
+ subpst->statics_offset =
+ subpst->n_static_syms = 0;
+
+ subpst->next = partial_symtab_list;
+ partial_symtab_list = subpst;
+ }
+
+ for (ps = global_psymbols.list + pst->globals_offset;
+ ps < capping_global; ++ps)
+ ps->pst = pst;
+ for (ps = static_psymbols.list + pst->statics_offset;
+ ps < capping_static; ++ps)
+ ps->pst = pst;
+
+ /* Put the psymtab on the psymtab list */
+ pst->next = partial_symtab_list;
+ partial_symtab_list = pst;
+}
+
+
+/* Helper routines for psymtab_to_symtab. */
+static void scan_file_globals ();
+static void read_ofile_symtab ();
+
+static void
+psymtab_to_symtab_1 (pst, desc, stringtab, stringtab_size, sym_offset)
+ struct partial_symtab *pst;
+ int desc;
+ char *stringtab;
+ int stringtab_size;
+ int sym_offset;
+{
+ struct cleanup *old_chain;
+ int i;
+
+ if (!pst)
+ return;
+
+ if (pst->readin)
+ {
+ fprintf (stderr, "Psymtab for %s already read in. Shouldn't happen.\n",
+ pst->filename);
+ return;
+ }
+
+ /* Read in all partial symbtabs on which this one is dependent */
+ for (i = 0; i < pst->number_of_dependencies; i++)
+ if (!pst->dependencies[i]->readin)
+ {
+ /* Inform about additional files that need to be read in. */
+ if (info_verbose)
+ {
+ printf_filtered (" and %s...", pst->dependencies[i]->filename);
+ fflush (stdout);
+ }
+ psymtab_to_symtab_1 (pst->dependencies[i], desc,
+ stringtab, stringtab_size, sym_offset);
+ }
+
+ if (pst->ldsymlen) /* Otherwise it's a dummy */
+ {
+ /* Init stuff necessary for reading in symbols */
+ free_pendings = 0;
+ pending_blocks = 0;
+ file_symbols = 0;
+ global_symbols = 0;
+ old_chain = make_cleanup (really_free_pendings, 0);
+
+ /* Read in this files symbols */
+ lseek (desc, sym_offset, L_SET);
+ read_ofile_symtab (desc, stringtab, stringtab_size,
+ pst->ldsymoff,
+ pst->ldsymlen, pst->textlow,
+ pst->texthigh - pst->textlow, 0);
+ sort_symtab_syms (symtab_list); /* At beginning since just added */
+
+ do_cleanups (old_chain);
+ }
+
+ pst->readin = 1;
+}
+
+/*
+ * Read in all of the symbols for a given psymtab for real. Return
+ * the value of the symtab you create. Do not free the storage
+ * allocated to the psymtab; it may have pointers to it.
+ */
+struct symtab *
+psymtab_to_symtab(pst)
+ struct partial_symtab *pst;
+{
+ int desc;
+ DECLARE_FILE_HEADERS;
+ char *stringtab;
+ struct partial_symtab **list_patch;
+ int stsize, val;
+ struct stat statbuf;
+ struct cleanup *old_chain;
+ extern void close ();
+ int i;
+ struct symtab *result;
+ char *name = symfile; /* Some of the macros require the */
+ /* variable "name" to be defined in */
+ /* the context in which they execute */
+ /* (Yech!) */
+
+ if (!pst)
+ return 0;
+
+ if (pst->readin)
+ {
+ fprintf (stderr, "Psymtab for %s already read in. Shouldn't happen.\n",
+ pst->filename);
+ return 0;
+ }
+
+ if (!name)
+ error("No symbol file currently specified; use command symbol-file");
+
+ if (pst->ldsymlen || pst->number_of_dependencies)
+ {
+ /* Print the message now, before reading the string table,
+ to avoid disconcerting pauses. */
+ if (info_verbose)
+ {
+ printf_filtered ("Reading in symbols for %s...", pst->filename);
+ fflush (stdout);
+ }
+
+ /* Open symbol file and read in string table */
+ if (stat (name, &statbuf) < 0)
+ perror_with_name (name);
+ desc = open(name, O_RDONLY, 0); /* symbol_file_command
+ guarrantees that the symbol file name
+ will be absolute, so there is no
+ need for openp */
+
+ old_chain = make_cleanup (close, desc);
+
+ if (desc < 0)
+ error("Symbol file not readable");
+
+ READ_FILE_HEADERS (desc, name);
+
+#if 0
+ /* Read in the string table */
+ lseek (desc, STRING_TABLE_OFFSET, L_SET);
+ READ_STRING_TABLE_SIZE (stsize);
+ if (stsize >= 0 && stsize < statbuf.st_size)
+ {
+#ifdef BROKEN_LARGE_ALLOCA
+ stringtab = (char *) xmalloc (stsize);
+ make_cleanup (free, stringtab);
+#else
+ stringtab = (char *) alloca (stsize);
+#endif
+ }
+ else
+ stringtab = NULL;
+ if (stringtab == NULL)
+ error ("ridiculous string table size: %d bytes", stsize);
+
+ /* Usually READ_STRING_TABLE_SIZE will have shifted the file pointer.
+ Occaisionally, it won't. */
+ val = lseek (desc, STRING_TABLE_OFFSET, L_SET);
+ if (val < 0)
+ perror_with_name (name);
+ val = myread (desc, stringtab, stsize);
+ if (val < 0)
+ perror_with_name (name);
+#endif /* 0 */
+ stringtab = symfile_string_table;
+ stsize = symfile_string_table_size;
+
+ psymtab_to_symtab_1 (pst, desc, stringtab, stsize,
+ SYMBOL_TABLE_OFFSET);
+
+ /* Match with global symbols. This only needs to be done once,
+ after all of the symtabs and dependencies have been read in. */
+ scan_file_globals ();
+
+ do_cleanups (old_chain);
+
+ /* Finish up the debug error message. */
+ if (info_verbose)
+ printf_filtered ("done.\n");
+ }
+
+ /* Search through list for correct name. */
+ for (result = symtab_list; result; result = result->next)
+ if (!strcmp (result->filename, pst->filename))
+ return result;
+
+ return 0;
+}
+
+/*
+ * Scan through all of the global symbols defined in the object file,
+ * assigning values to the debugging symbols that need to be assigned
+ * to. Get these symbols from the misc function list.
+ */
+static void
+scan_file_globals ()
+{
+ int hash;
+ int mf;
+
+ for (mf = 0; mf < misc_function_count; mf++)
+ {
+ char *namestring = misc_function_vector[mf].name;
+ struct symbol *sym, *prev;
+
+ QUIT;
+
+ prev = (struct symbol *) 0;
+
+ /* Get the hash index and check all the symbols
+ under that hash index. */
+
+ hash = hashname (namestring);
+
+ for (sym = global_sym_chain[hash]; sym;)
+ {
+ if (*namestring == SYMBOL_NAME (sym)[0]
+ && !strcmp(namestring + 1, SYMBOL_NAME (sym) + 1))
+ {
+ /* Splice this symbol out of the hash chain and
+ assign the value we have to it. */
+ if (prev)
+ SYMBOL_VALUE (prev) = SYMBOL_VALUE (sym);
+ else
+ global_sym_chain[hash]
+ = (struct symbol *) SYMBOL_VALUE (sym);
+
+ /* Check to see whether we need to fix up a common block. */
+ /* Note: this code might be executed several times for
+ the same symbol if there are multiple references. */
+ if (SYMBOL_CLASS (sym) == LOC_BLOCK)
+ fix_common_block (sym, misc_function_vector[mf].address);
+ else
+ SYMBOL_VALUE (sym) = misc_function_vector[mf].address;
+
+ if (prev)
+ sym = (struct symbol *) SYMBOL_VALUE (prev);
+ else
+ sym = global_sym_chain[hash];
+ }
+ else
+ {
+ prev = sym;
+ sym = (struct symbol *) SYMBOL_VALUE (sym);
+ }
+ }
+ }
+}
+
+/*
+ * Read in a defined section of a specific object file's symbols.
+ *
+ * DESC is the file descriptor for the file, positioned at the
+ * beginning of the symtab
+ * STRINGTAB is a pointer to the files string
+ * table, already read in
+ * SYM_OFFSET is the offset within the file of
+ * the beginning of the symbols we want to read, NUM_SUMBOLS is the
+ * number of symbols to read
+ * TEXT_OFFSET is the offset to be added to
+ * all values of symbols coming in and
+ * TEXT_SIZE is the size of the text segment read in.
+ * OFFSET is a flag which indicates that the value of all of the
+ * symbols should be offset by TEXT_OFFSET (for the purposes of
+ * incremental linking).
+ */
+
+static void
+read_ofile_symtab (desc, stringtab, stringtab_size, sym_offset,
+ sym_size, text_offset, text_size, offset)
+ int desc;
+ register char *stringtab;
+ int sym_offset;
+ int sym_size;
+ int text_offset;
+ int text_size;
+ int offset;
+{
+ register char *namestring;
+ register struct symbol *sym, *prev;
+ int hash;
+ struct cleanup *old_chain;
+ struct nlist *bufp;
+ unsigned char type;
+#ifdef N_BINCL
+ subfile_stack = 0;
+#endif
+
+ stringtab_global = stringtab;
+ last_source_file = 0;
+
+ symtab_input_desc = desc;
+ symbuf_end = symbuf_idx = 0;
+
+ /* It is necessary to actually read one symbol *before* the start
+ of this symtab's symbols, because the GCC_COMPILED_FLAG_SYMBOL
+ occurs before the N_SO symbol.
+
+ Detecting this in read_dbx_symtab
+ would slow down initial readin, so we look for it here instead. */
+ if (sym_offset >= sizeof (struct nlist))
+ {
+ lseek (desc, sym_offset - sizeof (struct nlist), L_INCR);
+ fill_symbuf ();
+ bufp = &symbuf[symbuf_idx++];
+
+ if (bufp->n_un.n_strx < 0 || bufp->n_un.n_strx >= stringtab_size)
+ error ("Invalid symbol data: bad string table offset: %d",
+ bufp->n_un.n_strx);
+ namestring = bufp->n_un.n_strx + stringtab;
+
+ processing_gcc_compilation =
+ (bufp->n_type == N_TEXT
+ && !strcmp (namestring, GCC_COMPILED_FLAG_SYMBOL));
+ }
+ else
+ {
+ /* The N_SO starting this symtab is the first symbol, so we
+ better not check the symbol before it. I'm not this can
+ happen, but it doesn't hurt to check for it. */
+ lseek(desc, sym_offset, L_INCR);
+ processing_gcc_compilation = 0;
+ }
+
+ if (symbuf_idx == symbuf_end)
+ fill_symbuf();
+ bufp = &symbuf[symbuf_idx];
+ if ((unsigned char) bufp->n_type != N_SO)
+ fatal("First symbol in segment of executable not a source symbol");
+
+ for (symnum = 0;
+ symnum < sym_size / sizeof(struct nlist);
+ symnum++)
+ {
+ QUIT; /* Allow this to be interruptable */
+ if (symbuf_idx == symbuf_end)
+ fill_symbuf();
+ bufp = &symbuf[symbuf_idx++];
+ type = bufp->n_type;
+
+ if (offset &&
+ (type == N_TEXT || type == N_DATA || type == N_BSS))
+ bufp->n_value += text_offset;
+
+ if (bufp->n_un.n_strx < 0 || bufp->n_un.n_strx >= stringtab_size)
+ error ("Invalid symbol data: bad string table offset: %d",
+ bufp->n_un.n_strx);
+ namestring = bufp->n_un.n_strx + stringtab;
+
+ if (type & N_STAB)
+ process_one_symbol(type, bufp->n_desc,
+ bufp->n_value, namestring);
+ /* We skip checking for a new .o or -l file; that should never
+ happen in this routine. */
+ else if (type == N_TEXT
+ && !strcmp (namestring, GCC_COMPILED_FLAG_SYMBOL))
+ /* I don't think this code will ever be executed, because
+ the GCC_COMPILED_FLAG_SYMBOL usually is right before
+ the N_SO symbol which starts this source file.
+ However, there is no reason not to accept
+ the GCC_COMPILED_FLAG_SYMBOL anywhere. */
+ processing_gcc_compilation = 1;
+ else if (type & N_EXT || type == N_TEXT
+#ifdef N_NBTEXT
+ || type == N_NBTEXT
+#endif
+ )
+ /* Global symbol: see if we came across a dbx defintion for
+ a corresponding symbol. If so, store the value. Remove
+ syms from the chain when their values are stored, but
+ search the whole chain, as there may be several syms from
+ different files with the same name. */
+ /* This is probably not true. Since the files will be read
+ in one at a time, each reference to a global symbol will
+ be satisfied in each file as it appears. So we skip this
+ section. */
+ &stringtab_global; /* For debugger; am I right? */
+ }
+ end_symtab (text_offset + text_size);
+}
+
+static int
+hashname (name)
+ char *name;
+{
+ register char *p = name;
+ register int total = p[0];
+ register int c;
+
+ c = p[1];
+ total += c << 2;
+ if (c)
+ {
+ c = p[2];
+ total += c << 4;
+ if (c)
+ total += p[3] << 6;
+ }
+
+ /* Ensure result is positive. */
+ if (total < 0) total += (1000 << 6);
+ return total % HASHSIZE;
+}
+
+/* Put all appropriate global symbols in the symseg data
+ onto the hash chains so that their addresses will be stored
+ when seen later in loader global symbols. */
+
+static void
+hash_symsegs ()
+{
+ /* Look at each symbol in each block in each symseg symtab. */
+ struct symtab *s;
+ for (s = symseg_chain; s; s = s->next)
+ {
+ register int n;
+ for (n = BLOCKVECTOR_NBLOCKS (BLOCKVECTOR (s)) - 1; n >= 0; n--)
+ {
+ register struct block *b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), n);
+ register int i;
+ for (i = BLOCK_NSYMS (b) - 1; i >= 0; i--)
+ {
+ register struct symbol *sym = BLOCK_SYM (b, i);
+
+ /* Put the symbol on a chain if its value is an address
+ that is figured out by the loader. */
+
+ if (SYMBOL_CLASS (sym) == LOC_EXTERNAL)
+ {
+ register int hash = hashname (SYMBOL_NAME (sym));
+ SYMBOL_VALUE (sym) = (int) global_sym_chain[hash];
+ global_sym_chain[hash] = sym;
+ SYMBOL_CLASS (sym) = LOC_STATIC;
+ }
+ }
+ }
+ }
+}
+
+static void
+process_one_symbol (type, desc, value, name)
+ int type, desc;
+ CORE_ADDR value;
+ char *name;
+{
+ register struct context_stack *new;
+ char *colon_pos;
+
+ /* Something is wrong if we see real data before
+ seeing a source file name. */
+
+ if (last_source_file == 0 && type != N_SO)
+ {
+ /* Currently this ignores N_ENTRY on Gould machines, N_NSYM on machines
+ where that code is defined. */
+ if (IGNORE_SYMBOL (type))
+ return;
+
+ error ("Invalid symbol data: does not start by identifying a source file.");
+ }
+
+ switch (type)
+ {
+ case N_FUN:
+ case N_FNAME:
+ /* Either of these types of symbols indicates the start of
+ a new function. We must process its "name" normally for dbx,
+ but also record the start of a new lexical context, and possibly
+ also the end of the lexical context for the previous function. */
+ /* This is not always true. This type of symbol may indicate a
+ text segment variable. */
+
+ colon_pos = index (name, ':');
+ if (!colon_pos++
+ || (*colon_pos != 'f' && *colon_pos != 'F'))
+ {
+ define_symbol (value, name, desc);
+ break;
+ }
+
+ within_function = 1;
+ if (context_stack_depth > 0)
+ {
+ new = &context_stack[--context_stack_depth];
+ /* Make a block for the local symbols within. */
+ finish_block (new->name, &local_symbols, new->old_blocks,
+ new->start_addr, value);
+ }
+ /* Stack must be empty now. */
+ if (context_stack_depth != 0)
+ error ("Invalid symbol data: unmatched N_LBRAC before symtab pos %d.",
+ symnum);
+
+ new = &context_stack[context_stack_depth++];
+ new->old_blocks = pending_blocks;
+ new->start_addr = value;
+ new->name = define_symbol (value, name, desc);
+ local_symbols = 0;
+ break;
+
+ case N_LBRAC:
+ /* This "symbol" just indicates the start of an inner lexical
+ context within a function. */
+
+ if (context_stack_depth == context_stack_size)
+ {
+ context_stack_size *= 2;
+ context_stack = (struct context_stack *)
+ xrealloc (context_stack,
+ (context_stack_size
+ * sizeof (struct context_stack)));
+ }
+
+ new = &context_stack[context_stack_depth++];
+ new->depth = desc;
+ new->locals = local_symbols;
+ new->old_blocks = pending_blocks;
+ new->start_addr = value;
+ new->name = 0;
+ local_symbols = 0;
+ break;
+
+ case N_RBRAC:
+ /* This "symbol" just indicates the end of an inner lexical
+ context that was started with N_LBRAC. */
+ new = &context_stack[--context_stack_depth];
+ if (desc != new->depth)
+ error ("Invalid symbol data: N_LBRAC/N_RBRAC symbol mismatch, symtab pos %d.", symnum);
+
+ /* Some native compilers put the variable decls inside of an
+ LBRAC/RBRAC block. This macro should be nonzero if this
+ is true. DESC is N_DESC from the N_RBRAC symbol. */
+#if !defined (VARIABLES_INSIDE_BLOCK)
+#define VARIABLES_INSIDE_BLOCK(desc) 0
+#endif
+
+ /* Can only use new->locals as local symbols here if we're in
+ gcc or on a machine that puts them before the lbrack. */
+ if (!VARIABLES_INSIDE_BLOCK(desc))
+ local_symbols = new->locals;
+
+ /* If this is not the outermost LBRAC...RBRAC pair in the
+ function, its local symbols preceded it, and are the ones
+ just recovered from the context stack. Defined the block for them.
+
+ If this is the outermost LBRAC...RBRAC pair, there is no
+ need to do anything; leave the symbols that preceded it
+ to be attached to the function's own block. However, if
+ it is so, we need to indicate that we just moved outside
+ of the function. */
+ if (local_symbols
+ && context_stack_depth > !VARIABLES_INSIDE_BLOCK(desc))
+ {
+ /* Muzzle a compiler bug that makes end < start. */
+ if (new->start_addr > value)
+ new->start_addr = value;
+ /* Make a block for the local symbols within. */
+ finish_block (0, &local_symbols, new->old_blocks,
+ new->start_addr + last_source_start_addr,
+ value + last_source_start_addr);
+ }
+ else
+ {
+ within_function = 0;
+ }
+ if (VARIABLES_INSIDE_BLOCK(desc))
+ /* Now pop locals of block just finished. */
+ local_symbols = new->locals;
+ break;
+
+ case N_FN | N_EXT:
+ /* This kind of symbol supposedly indicates the start
+ of an object file. In fact this type does not appear. */
+ break;
+
+ case N_SO:
+ /* This type of symbol indicates the start of data
+ for one source file.
+ Finish the symbol table of the previous source file
+ (if any) and start accumulating a new symbol table. */
+#ifdef PCC_SOL_BROKEN
+ /* pcc bug, occasionally puts out SO for SOL. */
+ if (context_stack_depth > 0)
+ {
+ start_subfile (name);
+ break;
+ }
+#endif
+ if (last_source_file)
+ end_symtab (value);
+ start_symtab (name, value);
+ break;
+
+ case N_SOL:
+ /* This type of symbol indicates the start of data for
+ a sub-source-file, one whose contents were copied or
+ included in the compilation of the main source file
+ (whose name was given in the N_SO symbol.) */
+ start_subfile (name);
+ break;
+
+#ifdef N_BINCL
+ case N_BINCL:
+ push_subfile ();
+ add_new_header_file (name, value);
+ start_subfile (name);
+ break;
+
+ case N_EINCL:
+ start_subfile (pop_subfile ());
+ break;
+
+ case N_EXCL:
+ add_old_header_file (name, value);
+ break;
+#endif /* have N_BINCL */
+
+ case N_SLINE:
+ /* This type of "symbol" really just records
+ one line-number -- core-address correspondence.
+ Enter it in the line list for this symbol table. */
+ record_line (desc, value);
+ break;
+
+ case N_BCOMM:
+ if (common_block)
+ error ("Invalid symbol data: common within common at symtab pos %d",
+ symnum);
+ common_block = local_symbols;
+ common_block_i = local_symbols ? local_symbols->nsyms : 0;
+ break;
+
+ case N_ECOMM:
+ /* Symbols declared since the BCOMM are to have the common block
+ start address added in when we know it. common_block points to
+ the first symbol after the BCOMM in the local_symbols list;
+ copy the list and hang it off the symbol for the common block name
+ for later fixup. */
+ {
+ int i;
+ struct pending *link = local_symbols;
+ struct symbol *sym =
+ (struct symbol *) xmalloc (sizeof (struct symbol));
+ bzero (sym, sizeof *sym);
+ SYMBOL_NAME (sym) = savestring (name, strlen (name));
+ SYMBOL_CLASS (sym) = LOC_BLOCK;
+ SYMBOL_NAMESPACE (sym) = (enum namespace)((long)
+ copy_pending (local_symbols, common_block_i, common_block));
+ i = hashname (SYMBOL_NAME (sym));
+ SYMBOL_VALUE (sym) = (int) global_sym_chain[i];
+ global_sym_chain[i] = sym;
+ common_block = 0;
+ break;
+ }
+
+ case N_ECOML:
+ case N_LENG:
+ break;
+
+ default:
+ if (name)
+ define_symbol (value, name, desc);
+ }
+}
+
+/* This function was added for C++ functionality. I presume that it
+ condenses the bunches formed by reading in an additional .o file
+ (incremental linking). */
+
+static void
+condense_addl_misc_bunches ()
+{
+ register int i, j;
+ register struct misc_bunch *bunch;
+#ifdef NAMES_HAVE_UNDERSCORE
+ int offset = 1;
+#else
+ int offset = 0;
+#endif
+
+ misc_function_vector
+ = (struct misc_function *) xrealloc (misc_function_vector,
+ (misc_count + misc_function_count) * sizeof (struct misc_function));
+
+ j = misc_function_count;
+ bunch = misc_bunch;
+ while (bunch)
+ {
+ for (i = 0; i < misc_bunch_index; i++)
+ {
+ misc_function_vector[j] = bunch->contents[i];
+ misc_function_vector[j].name
+ = concat (misc_function_vector[j].name
+ + (misc_function_vector[j].name[0] == '_' ? offset : 0),
+ "", "");
+ j++;
+ }
+ bunch = bunch->next;
+ misc_bunch_index = MISC_BUNCH_SIZE;
+ }
+
+ misc_function_count += misc_count;
+
+ /* Sort the misc functions by address. */
+
+ qsort (misc_function_vector, misc_function_count,
+ sizeof (struct misc_function), compare_misc_functions);
+}
+
+
+/* Read in another .o file and create a symtab entry for it.*/
+
+static void
+read_addl_syms (desc, stringtab, nlistlen, text_addr, text_size)
+ int desc;
+ register char *stringtab;
+ register int nlistlen;
+ unsigned text_addr;
+ int text_size;
+{
+ FILE *stream = fdopen (desc, "r");
+ register char *namestring;
+ register struct symbol *sym, *prev;
+ int hash;
+
+#ifdef N_BINCL
+ subfile_stack = 0;
+#endif
+
+ last_source_file = 0;
+ bzero (global_sym_chain, sizeof global_sym_chain);
+ symtab_input_desc = desc;
+ stringtab_global = stringtab;
+ fill_symbuf ();
+
+ for (symnum = 0; symnum < nlistlen; symnum++)
+ {
+ struct nlist *bufp;
+ unsigned char type;
+
+ QUIT; /* allow this to be interruptable */
+ if (symbuf_idx == symbuf_end)
+ fill_symbuf ();
+ bufp = &symbuf[symbuf_idx++];
+ type = bufp->n_type & N_TYPE;
+ namestring = bufp->n_un.n_strx + stringtab;
+
+ if( (type == N_TEXT) || (type == N_DATA) || (type == N_BSS) )
+ {
+ /* Relocate this file's symbol table information
+ to the address it has been loaded into. */
+ bufp->n_value += text_addr;
+ }
+
+ type = bufp->n_type;
+
+ if (type & N_STAB)
+ process_one_symbol (type, bufp->n_desc,
+ bufp->n_value, namestring);
+ /* A static text symbol whose name ends in ".o"
+ can only mean the start of another object file.
+ So end the symtab of the source file we have been processing.
+ This is how we avoid counting the libraries as part
+ or the last source file.
+ Also this way we find end of first object file (crt0). */
+ else if ((type == N_TEXT
+#ifdef N_NBTEXT
+ || type == N_NBTEXT
+#endif
+ )
+ && (!strcmp (namestring + strlen (namestring) - 2, ".o"))
+ || ! strncmp (namestring, "-l", 2))
+ {
+ if (last_source_file)
+ end_symtab (bufp->n_value);
+ }
+ else if (type & N_EXT || type == N_TEXT
+#ifdef N_NBTEXT
+ || type == N_NBTEXT
+#endif
+ )
+ {
+ int used_up = 0;
+
+ /* Record the location of _etext. */
+ if (type == (N_TEXT | N_EXT)
+ && !strcmp (namestring, "_etext"))
+ end_of_text_addr = bufp->n_value;
+
+#if 0
+ /* 25 Sep 89: The following seems to be stolen from
+ read_ofile_symtab, and is wrong here (i.e. there was no
+ first pass for add-file symbols). */
+ /* This shouldn't be necessary, as we now do all of this work
+ in scan_global syms and all misc functions should have been
+ recorded on the first pass. */
+ /* Global symbol: see if we came across a dbx definition
+ for a corresponding symbol. If so, store the value.
+ Remove syms from the chain when their values are stored,
+ but search the whole chain, as there may be several syms
+ from different files with the same name. */
+ if (type & N_EXT)
+ {
+ prev = 0;
+#ifdef NAMES_HAVE_UNDERSCORE
+ hash = hashname (namestring + 1);
+#else /* not NAMES_HAVE_UNDERSCORE */
+ hash = hashname (namestring);
+#endif /* not NAMES_HAVE_UNDERSCORE */
+ for (sym = global_sym_chain[hash];
+ sym;)
+ {
+ if (
+#ifdef NAMES_HAVE_UNDERSCORE
+ *namestring == '_'
+ && namestring[1] == SYMBOL_NAME (sym)[0]
+ &&
+ !strcmp (namestring + 2, SYMBOL_NAME (sym) + 1)
+#else /* NAMES_HAVE_UNDERSCORE */
+ namestring[0] == SYMBOL_NAME (sym)[0]
+ &&
+ !strcmp (namestring + 1, SYMBOL_NAME (sym) + 1)
+#endif /* NAMES_HAVE_UNDERSCORE */
+ )
+ {
+ if (prev)
+ SYMBOL_VALUE (prev) = SYMBOL_VALUE (sym);
+ else
+ global_sym_chain[hash]
+ = (struct symbol *) SYMBOL_VALUE (sym);
+ if (SYMBOL_CLASS (sym) == LOC_BLOCK)
+ fix_common_block (sym, bufp->n_value);
+ else
+ SYMBOL_VALUE (sym) = bufp->n_value;
+ if (prev)
+ sym = (struct symbol *) SYMBOL_VALUE (prev);
+ else
+ sym = global_sym_chain[hash];
+
+ used_up = 1;
+ }
+ else
+ {
+ prev = sym;
+ sym = (struct symbol *) SYMBOL_VALUE (sym);
+ }
+ }
+ }
+
+ /* Defined global or text symbol: record as a misc function
+ if it didn't give its address to a debugger symbol above. */
+ if (type <= (N_TYPE | N_EXT)
+ && type != N_EXT
+ && ! used_up)
+ record_misc_function (namestring, bufp->n_value,
+ bufp->n_type);
+#endif /* 0 */
+ }
+ }
+
+ if (last_source_file)
+ end_symtab (text_addr + text_size);
+
+ fclose (stream);
+}
+
+/* C++:
+ This function allows the addition of incrementally linked object files.
+ Since this has a fair amount of code in common with symbol_file_command,
+ it might be worthwhile to consolidate things, as was done with
+ read_dbx_symtab and condense_misc_bunches. */
+
+void
+add_file_command (arg_string)
+ char* arg_string;
+{
+ register int desc;
+ DECLARE_FILE_HEADERS;
+ struct nlist *nlist;
+ char *stringtab;
+ long buffer;
+ register int val;
+ extern void close ();
+ struct cleanup *old_chain;
+ struct symtab *symseg;
+ struct stat statbuf;
+ char *name;
+ unsigned text_addr;
+
+ if (arg_string == 0)
+ error ("add-file takes a file name and an address");
+
+ arg_string = tilde_expand (arg_string);
+ make_cleanup (free, arg_string);
+
+ for( ; *arg_string == ' '; arg_string++ );
+ name = arg_string;
+ for( ; *arg_string && *arg_string != ' ' ; arg_string++ );
+ *arg_string++ = (char) 0;
+
+ if (name[0] == 0)
+ error ("add-file takes a file name and an address");
+
+ text_addr = parse_and_eval_address (arg_string);
+
+ dont_repeat ();
+
+ if (!query ("add symbol table from filename \"%s\" at text_addr = 0x%x\n",
+ name, text_addr))
+ error ("Not confirmed.");
+
+ desc = open (name, O_RDONLY);
+ if (desc < 0)
+ perror_with_name (name);
+
+ old_chain = make_cleanup (close, desc);
+
+ READ_FILE_HEADERS (desc, name);
+
+ if (NUMBER_OF_SYMBOLS == 0)
+ {
+ printf ("%s does not have a symbol-table.\n", name);
+ fflush (stdout);
+ return;
+ }
+
+ printf ("Reading symbol data from %s...", name);
+ fflush (stdout);
+
+ /* Now read the string table, all at once. */
+ val = lseek (desc, STRING_TABLE_OFFSET, 0);
+ if (val < 0)
+ perror_with_name (name);
+ if (stat (name, &statbuf) < 0)
+ perror_with_name (name);
+ READ_STRING_TABLE_SIZE (buffer);
+ if (buffer >= 0 && buffer < statbuf.st_size)
+ {
+#ifdef BROKEN_LARGE_ALLOCA
+ stringtab = (char *) xmalloc (buffer);
+ make_cleanup (free, stringtab);
+#else
+ stringtab = (char *) alloca (buffer);
+#endif
+ }
+ else
+ stringtab = NULL;
+ if (stringtab == NULL)
+ error ("ridiculous string table size: %d bytes", buffer);
+
+ /* Usually READ_STRING_TABLE_SIZE will have shifted the file pointer.
+ Occaisionally, it won't. */
+ val = lseek (desc, STRING_TABLE_OFFSET, 0);
+ if (val < 0)
+ perror_with_name (name);
+ val = myread (desc, stringtab, buffer);
+ if (val < 0)
+ perror_with_name (name);
+
+ /* Symsegs are no longer supported by GDB. Setting symseg_chain to
+ 0 is easier than finding all the symseg code and eliminating it. */
+ symseg_chain = 0;
+
+ /* Position to read the symbol table. Do not read it all at once. */
+ val = lseek (desc, SYMBOL_TABLE_OFFSET, 0);
+ if (val < 0)
+ perror_with_name (name);
+
+ init_misc_functions ();
+ make_cleanup (discard_misc_bunches, 0);
+ init_header_files ();
+ make_cleanup (free_header_files, 0);
+ free_pendings = 0;
+ pending_blocks = 0;
+ file_symbols = 0;
+ global_symbols = 0;
+ make_cleanup (really_free_pendings, 0);
+
+ read_addl_syms (desc, stringtab, NUMBER_OF_SYMBOLS, text_addr,
+ SIZE_OF_TEXT_SEGMENT);
+
+
+ /* Sort symbols alphabetically within each block. */
+
+ sort_syms ();
+
+ /* Go over the misc functions and install them in vector. */
+
+ condense_addl_misc_bunches (1);
+
+ /* Don't allow char * to have a typename (else would get caddr_t.) */
+
+ TYPE_NAME (lookup_pointer_type (builtin_type_char)) = 0;
+
+ do_cleanups (old_chain);
+
+ /* Free the symtabs made by read_symsegs, but not their contents,
+ which have been copied into symtabs on symtab_list. */
+ while (symseg_chain)
+ {
+ register struct symtab *s = symseg_chain->next;
+ free (symseg_chain);
+ symseg_chain = s;
+ }
+
+ printf ("done.\n");
+ fflush (stdout);
+}
+
+/* Read a number by which a type is referred to in dbx data,
+ or perhaps read a pair (FILENUM, TYPENUM) in parentheses.
+ Just a single number N is equivalent to (0,N).
+ Return the two numbers by storing them in the vector TYPENUMS.
+ TYPENUMS will then be used as an argument to dbx_lookup_type. */
+
+static void
+read_type_number (pp, typenums)
+ register char **pp;
+ register int *typenums;
+{
+ if (**pp == '(')
+ {
+ (*pp)++;
+ typenums[0] = read_number (pp, ',');
+ typenums[1] = read_number (pp, ')');
+ }
+ else
+ {
+ typenums[0] = 0;
+ typenums[1] = read_number (pp, 0);
+ }
+}
+
+
+
+static struct symbol *
+define_symbol (value, string, desc)
+ int value;
+ char *string;
+ int desc;
+{
+ register struct symbol *sym
+ = (struct symbol *) obstack_alloc (symbol_obstack, sizeof (struct symbol));
+ char *p = (char *) index (string, ':');
+ int deftype;
+ register int i;
+
+ /* Ignore syms with empty names. */
+ if (string[0] == 0)
+ return 0;
+
+ /* Ignore old-style symbols from cc -go */
+ if (p == 0)
+ return 0;
+
+ SYMBOL_NAME (sym)
+ = (char *) obstack_alloc (symbol_obstack, ((p - string) + 1));
+ /* Open-coded bcopy--saves function call time. */
+ {
+ register char *p1 = string;
+ register char *p2 = SYMBOL_NAME (sym);
+ while (p1 != p)
+ *p2++ = *p1++;
+ *p2++ = '\0';
+ }
+ p++;
+ /* Determine the type of name being defined. */
+ if ((*p >= '0' && *p <= '9') || *p == '(')
+ deftype = 'l';
+ else
+ deftype = *p++;
+
+ /* c is a special case, not followed by a type-number.
+ SYMBOL:c=iVALUE for an integer constant symbol.
+ SYMBOL:c=rVALUE for a floating constant symbol.
+ SYMBOL:c=eTYPE,INTVALUE for an enum constant symbol.
+ e.g. "b:c=e6,0" for "const b = blob1"
+ (where type 6 is defined by "blobs:t6=eblob1:0,blob2:1,;"). */
+ if (deftype == 'c')
+ {
+ if (*p++ != '=')
+ error ("Invalid symbol data at symtab pos %d.", symnum);
+ switch (*p++)
+ {
+ case 'r':
+ {
+ double d = atof (p);
+ char *value;
+
+ SYMBOL_TYPE (sym) = builtin_type_double;
+ value = (char *) obstack_alloc (symbol_obstack, sizeof (double));
+ bcopy (&d, value, sizeof (double));
+ SYMBOL_VALUE_BYTES (sym) = value;
+ SYMBOL_CLASS (sym) = LOC_CONST_BYTES;
+ }
+ break;
+ case 'i':
+ {
+ SYMBOL_TYPE (sym) = builtin_type_int;
+ SYMBOL_VALUE (sym) = atoi (p);
+ SYMBOL_CLASS (sym) = LOC_CONST;
+ }
+ break;
+ case 'e':
+ /* SYMBOL:c=eTYPE,INTVALUE for an enum constant symbol.
+ e.g. "b:c=e6,0" for "const b = blob1"
+ (where type 6 is defined by "blobs:t6=eblob1:0,blob2:1,;"). */
+ {
+ int typenums[2];
+
+ read_type_number (&p, typenums);
+ if (*p++ != ',')
+ error ("Invalid symbol data: no comma in enum const symbol");
+
+ SYMBOL_TYPE (sym) = *dbx_lookup_type (typenums);
+ SYMBOL_VALUE (sym) = atoi (p);
+ SYMBOL_CLASS (sym) = LOC_CONST;
+ }
+ break;
+ default:
+ error ("Invalid symbol data at symtab pos %d.", symnum);
+ }
+ SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
+ add_symbol_to_list (sym, &file_symbols);
+ return sym;
+ }
+
+ /* Now usually comes a number that says which data type,
+ and possibly more stuff to define the type
+ (all of which is handled by read_type) */
+
+ if (deftype == 'p' && *p == 'F')
+ /* pF is a two-letter code that means a function parameter in Fortran.
+ The type-number specifies the type of the return value.
+ Translate it into a pointer-to-function type. */
+ {
+ p++;
+ SYMBOL_TYPE (sym)
+ = lookup_pointer_type (lookup_function_type (read_type (&p)));
+ }
+ else
+ {
+ struct type *type = read_type (&p);
+
+ if ((deftype == 'F' || deftype == 'f')
+ && TYPE_CODE (type) != TYPE_CODE_FUNC)
+ SYMBOL_TYPE (sym) = lookup_function_type (type);
+ else
+ SYMBOL_TYPE (sym) = type;
+ }
+
+ switch (deftype)
+ {
+ case 'f':
+ SYMBOL_CLASS (sym) = LOC_BLOCK;
+ SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
+ add_symbol_to_list (sym, &file_symbols);
+ break;
+
+ case 'F':
+ SYMBOL_CLASS (sym) = LOC_BLOCK;
+ SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
+ add_symbol_to_list (sym, &global_symbols);
+ break;
+
+ case 'G':
+ /* For a class G (global) symbol, it appears that the
+ value is not correct. It is necessary to search for the
+ corresponding linker definition to find the value.
+ These definitions appear at the end of the namelist. */
+ i = hashname (SYMBOL_NAME (sym));
+ SYMBOL_VALUE (sym) = (int) global_sym_chain[i];
+ global_sym_chain[i] = sym;
+ SYMBOL_CLASS (sym) = LOC_STATIC;
+ SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
+ add_symbol_to_list (sym, &global_symbols);
+ break;
+
+ /* This case is faked by a conditional above,
+ when there is no code letter in the dbx data.
+ Dbx data never actually contains 'l'. */
+ case 'l':
+ SYMBOL_CLASS (sym) = LOC_LOCAL;
+ SYMBOL_VALUE (sym) = value;
+ SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
+ add_symbol_to_list (sym, &local_symbols);
+ break;
+
+ case 'p':
+ SYMBOL_CLASS (sym) = LOC_ARG;
+ SYMBOL_VALUE (sym) = value;
+ SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
+ add_symbol_to_list (sym, &local_symbols);
+
+ /* If it's gcc compiled, if it says `short', believe it. */
+ if (processing_gcc_compilation || BELIEVE_PCC_PROMOTION)
+ break;
+
+#if defined(BELIEVE_PCC_PROMOTION_TYPE)
+ /* This macro is defined on machines (e.g. sparc) where
+ we should believe the type of a PCC 'short' argument,
+ but shouldn't believe the address (the address is
+ the address of the corresponding int). Note that
+ this is only different from the BELIEVE_PCC_PROMOTION
+ case on big-endian machines.
+
+ My guess is that this correction, as opposed to changing
+ the parameter to an 'int' (as done below, for PCC
+ on most machines), is the right thing to do
+ on all machines, but I don't want to risk breaking
+ something that already works. On most PCC machines,
+ the sparc problem doesn't come up because the calling
+ function has to zero the top bytes (not knowing whether
+ the called function wants an int or a short), so there
+ is no practical difference between an int and a short
+ (except perhaps what happens when the GDB user types
+ "print short_arg = 0x10000;").
+ Hacked for SunOS 4.1 by gnu@cygnus.com. In 4.1, the compiler
+ actually produces the correct address (we don't need to fix it
+ up). I made this code adapt so that it will offset the symbol
+ if it was pointing at an int-aligned location and not
+ otherwise. This way you can use the same gdb for 4.0.x and
+ 4.1 systems. */
+
+ if (0 == SYMBOL_VALUE (sym) % sizeof (int))
+ {
+ if (SYMBOL_TYPE (sym) == builtin_type_char
+ || SYMBOL_TYPE (sym) == builtin_type_unsigned_char)
+ SYMBOL_VALUE (sym) += 3;
+ else if (SYMBOL_TYPE (sym) == builtin_type_short
+ || SYMBOL_TYPE (sym) == builtin_type_unsigned_short)
+ SYMBOL_VALUE (sym) += 2;
+ }
+ break;
+
+#else /* no BELIEVE_PCC_PROMOTION_TYPE. */
+
+ /* If PCC says a parameter is a short or a char,
+ it is really an int. */
+ if (SYMBOL_TYPE (sym) == builtin_type_char
+ || SYMBOL_TYPE (sym) == builtin_type_short)
+ SYMBOL_TYPE (sym) = builtin_type_int;
+ else if (SYMBOL_TYPE (sym) == builtin_type_unsigned_char
+ || SYMBOL_TYPE (sym) == builtin_type_unsigned_short)
+ SYMBOL_TYPE (sym) = builtin_type_unsigned_int;
+ break;
+
+#endif /* no BELIEVE_PCC_PROMOTION_TYPE. */
+
+ case 'P':
+ SYMBOL_CLASS (sym) = LOC_REGPARM;
+ SYMBOL_VALUE (sym) = STAB_REG_TO_REGNUM (value);
+ SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
+ add_symbol_to_list (sym, &local_symbols);
+ break;
+
+ case 'r':
+/* XXX */
+#ifdef sparc
+{
+ struct symbol *s0;
+
+ /*
+ * If we see a parm decl immediately followed by a reg decl of
+ * the same name (and in the same block), we change it to a single
+ * instance of a reg parm. Sun's cc will generate these.
+ */
+ if (local_symbols &&
+ (s0 = local_symbols->symbol[local_symbols->nsyms - 1]) &&
+ SYMBOL_CLASS(s0) == LOC_ARG &&
+ strcmp(SYMBOL_NAME(s0), SYMBOL_NAME(sym)) == 0) {
+ SYMBOL_CLASS (s0) = LOC_REGPARM;
+ SYMBOL_VALUE (s0) = STAB_REG_TO_REGNUM (value);
+ SYMBOL_NAMESPACE (s0) = VAR_NAMESPACE;
+ return s0;
+ }
+}
+#endif
+ SYMBOL_CLASS (sym) = LOC_REGISTER;
+ SYMBOL_VALUE (sym) = STAB_REG_TO_REGNUM (value);
+ SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
+ add_symbol_to_list (sym, &local_symbols);
+ break;
+
+ case 'S':
+ /* Static symbol at top level of file */
+ SYMBOL_CLASS (sym) = LOC_STATIC;
+ SYMBOL_VALUE (sym) = value;
+ SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
+ add_symbol_to_list (sym, &file_symbols);
+ break;
+
+ case 't':
+ SYMBOL_CLASS (sym) = LOC_TYPEDEF;
+ SYMBOL_VALUE (sym) = value;
+ SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
+ if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0
+ && (TYPE_FLAGS (SYMBOL_TYPE (sym)) & TYPE_FLAG_PERM) == 0)
+ TYPE_NAME (SYMBOL_TYPE (sym)) =
+ obsavestring (SYMBOL_NAME (sym),
+ strlen (SYMBOL_NAME (sym)));
+ /* C++ vagaries: we may have a type which is derived from
+ a base type which did not have its name defined when the
+ derived class was output. We fill in the derived class's
+ base part member's name here in that case. */
+ else if ((TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_STRUCT
+ || TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_UNION)
+ && TYPE_N_BASECLASSES (SYMBOL_TYPE (sym)))
+ {
+ int i;
+ for (i = TYPE_N_BASECLASSES (SYMBOL_TYPE (sym)); i > 0; i--)
+ if (TYPE_FIELD_NAME (SYMBOL_TYPE (sym), i - 1) == 0)
+ TYPE_FIELD_NAME (SYMBOL_TYPE (sym), i - 1) =
+ TYPE_NAME (TYPE_BASECLASS (SYMBOL_TYPE (sym), i));
+ }
+
+ add_symbol_to_list (sym, &file_symbols);
+ break;
+
+ case 'T':
+ SYMBOL_CLASS (sym) = LOC_TYPEDEF;
+ SYMBOL_VALUE (sym) = value;
+ SYMBOL_NAMESPACE (sym) = STRUCT_NAMESPACE;
+ if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0
+ && (TYPE_FLAGS (SYMBOL_TYPE (sym)) & TYPE_FLAG_PERM) == 0)
+ TYPE_NAME (SYMBOL_TYPE (sym))
+ = obconcat ("",
+ (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_ENUM
+ ? "enum "
+ : (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_STRUCT
+ ? "struct " : "union ")),
+ SYMBOL_NAME (sym));
+ add_symbol_to_list (sym, &file_symbols);
+ break;
+
+ case 'V':
+ /* Static symbol of local scope */
+ SYMBOL_CLASS (sym) = LOC_STATIC;
+ SYMBOL_VALUE (sym) = value;
+ SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
+ add_symbol_to_list (sym, &local_symbols);
+ break;
+
+ case 'v':
+ /* Reference parameter */
+ SYMBOL_CLASS (sym) = LOC_REF_ARG;
+ SYMBOL_VALUE (sym) = value;
+ SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
+ add_symbol_to_list (sym, &local_symbols);
+ break;
+
+ case 'X':
+ /* This is used by Sun FORTRAN for "function result value".
+ Sun claims ("dbx and dbxtool interfaces", 2nd ed)
+ that Pascal uses it too, but when I tried it Pascal used
+ "x:3" (local symbol) instead. */
+ SYMBOL_CLASS (sym) = LOC_LOCAL;
+ SYMBOL_VALUE (sym) = value;
+ SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
+ add_symbol_to_list (sym, &local_symbols);
+ break;
+
+ default:
+ error ("Invalid symbol data: unknown symbol-type code `%c' at symtab pos %d.", deftype, symnum);
+ }
+ return sym;
+}
+
+/* What about types defined as forward references inside of a small lexical
+ scope? */
+/* Add a type to the list of undefined types to be checked through
+ once this file has been read in. */
+static void
+add_undefined_type (type)
+ struct type *type;
+{
+ if (undef_types_length == undef_types_allocated)
+ {
+ undef_types_allocated *= 2;
+ undef_types = (struct type **)
+ xrealloc (undef_types,
+ undef_types_allocated * sizeof (struct type *));
+ }
+ undef_types[undef_types_length++] = type;
+}
+
+/* Add here something to go through each undefined type, see if it's
+ still undefined, and do a full lookup if so. */
+static void
+cleanup_undefined_types ()
+{
+ struct type **type, *ntype;
+ struct symbol *sym;
+
+ for (type = undef_types; type < undef_types + undef_types_length; type++)
+ {
+ struct type *ntype = 0;
+ /* Reasonable test to see if it's been defined since. */
+ if (TYPE_NFIELDS (*type) == 0)
+ {
+ struct pending *ppt;
+ int i;
+ /* Name of the type, without "struct" or "union" */
+ char *typename = TYPE_NAME (*type);
+
+ if (!strncmp (typename, "struct ", 7))
+ typename += 7;
+ if (!strncmp (typename, "union ", 6))
+ typename += 6;
+
+ for (ppt = file_symbols; ppt; ppt = ppt->next)
+ for (i = 0; i < ppt->nsyms; i++)
+ {
+ struct symbol *sym = ppt->symbol[i];
+
+ if (SYMBOL_CLASS (sym) == LOC_TYPEDEF
+ && SYMBOL_NAMESPACE (sym) == STRUCT_NAMESPACE
+ && (TYPE_CODE (SYMBOL_TYPE (sym)) ==
+ TYPE_CODE (*type))
+ && !strcmp (SYMBOL_NAME (sym), typename))
+ bcopy (SYMBOL_TYPE (sym), *type, sizeof (struct type));
+ }
+ }
+ else
+ /* It has been defined; don't mark it as a stub. */
+ TYPE_FLAGS (*type) &= ~TYPE_FLAG_STUB;
+ }
+ undef_types_length = 0;
+}
+
+
+
+/* Read a dbx type reference or definition;
+ return the type that is meant.
+ This can be just a number, in which case it references
+ a type already defined and placed in type_vector.
+ Or the number can be followed by an =, in which case
+ it means to define a new type according to the text that
+ follows the =. */
+
+static
+struct type *
+read_type (pp)
+ register char **pp;
+{
+ register struct type *type = 0;
+ register int n;
+ struct type *type1;
+ int typenums[2];
+ int xtypenums[2];
+ char *tmpc;
+
+ /* Read type number if present. The type number may be omitted.
+ for instance in a two-dimensional array declared with type
+ "ar1;1;10;ar1;1;10;4". */
+ if ((**pp >= '0' && **pp <= '9')
+ || **pp == '(')
+ {
+ read_type_number (pp, typenums);
+
+ /* Detect random reference to type not yet defined.
+ Allocate a type object but leave it zeroed. */
+ if (**pp != '=')
+ return dbx_alloc_type (typenums);
+
+ *pp += 2;
+ }
+ else
+ {
+ /* 'typenums=' not present, type is anonymous. Read and return
+ the definition, but don't put it in the type vector. */
+ typenums[0] = typenums[1] = -1;
+ *pp += 1;
+ }
+
+ switch ((*pp)[-1])
+ {
+ case 'x':
+ {
+ enum type_code code;
+
+ /* Used to index through file_symbols. */
+ struct pending *ppt;
+ int i;
+
+ /* Name including "struct", etc. */
+ char *type_name;
+
+ /* Name without "struct", etc. */
+ char *type_name_only;
+
+ {
+ char *prefix;
+ char *from, *to;
+
+ /* Set the type code according to the following letter. */
+ switch ((*pp)[0])
+ {
+ case 's':
+ code = TYPE_CODE_STRUCT;
+ prefix = "struct ";
+ break;
+ case 'u':
+ code = TYPE_CODE_UNION;
+ prefix = "union ";
+ break;
+ case 'e':
+ code = TYPE_CODE_ENUM;
+ prefix = "enum ";
+ break;
+ default:
+ error ("Bad type cross reference at symnum: %d.", symnum);
+ }
+
+ to = type_name = (char *)
+ obstack_alloc (symbol_obstack,
+ (strlen (prefix) +
+ ((char *) index (*pp, ':') - (*pp)) + 1));
+
+ /* Copy the prefix. */
+ from = prefix;
+ while (*to++ = *from++)
+ ;
+ to--;
+
+ type_name_only = to;
+
+ /* Copy the name. */
+ from = *pp + 1;
+ while ((*to++ = *from++) != ':')
+ ;
+ *--to = '\0';
+
+ /* Set the pointer ahead of the name which we just read. */
+ *pp = from;
+
+#if 0
+ /* The following hack is clearly wrong, because it doesn't
+ check whether we are in a baseclass. I tried to reproduce
+ the case that it is trying to fix, but I couldn't get
+ g++ to put out a cross reference to a basetype. Perhaps
+ it doesn't do it anymore. */
+ /* Note: for C++, the cross reference may be to a base type which
+ has not yet been seen. In this case, we skip to the comma,
+ which will mark the end of the base class name. (The ':'
+ at the end of the base class name will be skipped as well.)
+ But sometimes (ie. when the cross ref is the last thing on
+ the line) there will be no ','. */
+ from = (char *) index (*pp, ',');
+ if (from)
+ *pp = from;
+#endif /* 0 */
+ }
+
+ /* Now check to see whether the type has already been declared. */
+ /* This is necessary at least in the case where the
+ program says something like
+ struct foo bar[5];
+ The compiler puts out a cross-reference; we better find
+ set the length of the structure correctly so we can
+ set the length of the array. */
+ for (ppt = file_symbols; ppt; ppt = ppt->next)
+ for (i = 0; i < ppt->nsyms; i++)
+ {
+ struct symbol *sym = ppt->symbol[i];
+
+ if (SYMBOL_CLASS (sym) == LOC_TYPEDEF
+ && SYMBOL_NAMESPACE (sym) == STRUCT_NAMESPACE
+ && (TYPE_CODE (SYMBOL_TYPE (sym)) == code)
+ && !strcmp (SYMBOL_NAME (sym), type_name_only))
+ {
+ obstack_free (symbol_obstack, type_name);
+ type = SYMBOL_TYPE (sym);
+ return type;
+ }
+ }
+
+ /* Didn't find the type to which this refers, so we must
+ be dealing with a forward reference. Allocate a type
+ structure for it, and keep track of it so we can
+ fill in the rest of the fields when we get the full
+ type. */
+ type = dbx_alloc_type (typenums);
+ TYPE_CODE (type) = code;
+ TYPE_NAME (type) = type_name;
+
+ TYPE_FLAGS (type) |= TYPE_FLAG_STUB;
+
+ add_undefined_type (type);
+ return type;
+ }
+
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case '(':
+ (*pp)--;
+ read_type_number (pp, xtypenums);
+ type = *dbx_lookup_type (xtypenums);
+ if (type == 0)
+ type = builtin_type_void;
+ if (typenums[0] != -1)
+ *dbx_lookup_type (typenums) = type;
+ break;
+
+ case '*':
+ type1 = read_type (pp);
+ if (TYPE_POINTER_TYPE (type1))
+ {
+ type = TYPE_POINTER_TYPE (type1);
+ if (typenums[0] != -1)
+ *dbx_lookup_type (typenums) = type;
+ }
+ else
+ {
+ type = dbx_alloc_type (typenums);
+ smash_to_pointer_type (type, type1);
+ }
+ break;
+
+ case '@':
+ {
+ struct type *domain = read_type (pp);
+ char c;
+ struct type *memtype;
+
+ if (*(*pp)++ != ',')
+ error ("invalid member type data format, at symtab pos %d.",
+ symnum);
+
+ memtype = read_type (pp);
+ type = dbx_alloc_type (typenums);
+ smash_to_member_type (type, domain, memtype);
+ }
+ break;
+
+ case '#':
+ {
+ struct type *domain = read_type (pp);
+ char c;
+ struct type *return_type;
+ struct type **args;
+
+ if (*(*pp)++ != ',')
+ error ("invalid member type data format, at symtab pos %d.",
+ symnum);
+
+ return_type = read_type (pp);
+ args = read_args (pp, ';');
+ type = dbx_alloc_type (typenums);
+ smash_to_method_type (type, domain, return_type, args);
+ }
+ break;
+
+ case '&':
+ type1 = read_type (pp);
+ if (TYPE_REFERENCE_TYPE (type1))
+ {
+ type = TYPE_REFERENCE_TYPE (type1);
+ if (typenums[0] != -1)
+ *dbx_lookup_type (typenums) = type;
+ }
+ else
+ {
+ type = dbx_alloc_type (typenums);
+ smash_to_reference_type (type, type1);
+ }
+ break;
+
+ case 'f':
+ type1 = read_type (pp);
+ if (TYPE_FUNCTION_TYPE (type1))
+ {
+ type = TYPE_FUNCTION_TYPE (type1);
+ if (typenums[0] != -1)
+ *dbx_lookup_type (typenums) = type;
+ }
+ else
+ {
+ type = dbx_alloc_type (typenums);
+ smash_to_function_type (type, type1);
+ }
+ break;
+
+ case 'r':
+ type = read_range_type (pp, typenums);
+ if (typenums[0] != -1)
+ *dbx_lookup_type (typenums) = type;
+ break;
+
+ case 'e':
+ type = dbx_alloc_type (typenums);
+ type = read_enum_type (pp, type);
+ *dbx_lookup_type (typenums) = type;
+ break;
+
+ case 's':
+ type = dbx_alloc_type (typenums);
+ type = read_struct_type (pp, type);
+ break;
+
+ case 'u':
+ type = dbx_alloc_type (typenums);
+ type = read_struct_type (pp, type);
+ TYPE_CODE (type) = TYPE_CODE_UNION;
+ break;
+
+ case 'a':
+ if (*(*pp)++ != 'r')
+ error ("Invalid symbol data: unrecognized type-code `a%c' %s %d.",
+ (*pp)[-1], "at symtab position", symnum);
+
+ type = dbx_alloc_type (typenums);
+ type = read_array_type (pp, type);
+ break;
+
+ default:
+ error ("Invalid symbol data: unrecognized type-code `%c' at symtab pos %d.",
+ (*pp)[-1], symnum);
+ }
+
+ if (type == 0)
+ abort ();
+
+#if 0
+ /* If this is an overriding temporary alteration for a header file's
+ contents, and this type number is unknown in the global definition,
+ put this type into the global definition at this type number. */
+ if (header_file_prev_index >= 0)
+ {
+ register struct type **tp
+ = explicit_lookup_type (header_file_prev_index, typenums[1]);
+ if (*tp == 0)
+ *tp = type;
+ }
+#endif
+ return type;
+}
+
+/* This page contains subroutines of read_type. */
+
+/* Read the description of a structure (or union type)
+ and return an object describing the type. */
+
+static struct type *
+read_struct_type (pp, type)
+ char **pp;
+ register struct type *type;
+{
+ struct nextfield
+ {
+ struct nextfield *next;
+ int visibility;
+ struct field field;
+ };
+
+ struct next_fnfield
+ {
+ struct next_fnfield *next;
+ int visibility;
+ struct fn_field fn_field;
+ };
+
+ struct next_fnfieldlist
+ {
+ struct next_fnfieldlist *next;
+ struct fn_fieldlist fn_fieldlist;
+ };
+
+ register struct nextfield *list = 0;
+ struct nextfield *new;
+ int totalsize;
+ char *name;
+ register char *p;
+ int nfields = 0;
+ register int n;
+
+ register struct next_fnfieldlist *mainlist = 0;
+ int nfn_fields = 0;
+ int read_possible_virtual_info = 0;
+
+ if (TYPE_MAIN_VARIANT (type) == 0)
+ {
+ TYPE_MAIN_VARIANT (type) = type;
+ }
+
+ TYPE_CODE (type) = TYPE_CODE_STRUCT;
+
+ /* First comes the total size in bytes. */
+
+ TYPE_LENGTH (type) = read_number (pp, 0);
+
+ /* C++: Now, if the class is a derived class, then the next character
+ will be a '!', followed by the number of base classes derived from.
+ Each element in the list contains visibility information,
+ the offset of this base class in the derived structure,
+ and then the base type. */
+ if (**pp == '!')
+ {
+ int i, n_baseclasses, offset;
+ struct type **baseclass_vec;
+ struct type *baseclass;
+ int via_public;
+
+ /* Nonzero if it is a virtual baseclass, i.e.,
+
+ struct A{};
+ struct B{};
+ struct C : public B, public virtual A {};
+
+ B is a baseclass of C; A is a virtual baseclass for C. This is a C++
+ 2.0 language feature. */
+ int via_virtual;
+
+ *pp += 1;
+
+ n_baseclasses = read_number (pp, ',');
+ baseclass_vec = (struct type **)
+ obstack_alloc (symbol_obstack,
+ (n_baseclasses) * sizeof (struct type **)) - 1;
+
+ for (i = 1; i <= n_baseclasses; i++)
+ {
+ if (**pp == '\\')
+ *pp = next_symbol_text ();
+
+ switch (*(*pp)++)
+ {
+ case '0':
+ via_virtual = 0;
+ break;
+ case '1':
+ via_virtual = 1;
+ break;
+ default:
+ error ("Invalid symbol data: bad visibility format at symtab pos %d",
+ symnum);
+ }
+
+ switch (*(*pp)++)
+ {
+ case '0':
+ via_public = 0;
+ break;
+ case '2':
+ via_public = 1;
+ break;
+ default:
+ error ("Invalid symbol data: bad visibility format at symtab pos %d.",
+ symnum);
+ }
+
+ /* Offset of the portion of the object corresponding to
+ this baseclass. Always zero in the absence of
+ multiple inheritance. */
+ offset = read_number (pp, ',');
+ baseclass = read_type (pp);
+ *pp += 1; /* skip trailing ';' */
+
+ if (offset != 0)
+ {
+ static int error_printed = 0;
+
+ if (!error_printed)
+ {
+ fprintf (stderr,
+"\nWarning: GDB has limited understanding of multiple inheritance...");
+ error_printed = 1;
+ }
+ offset = 0;
+ }
+
+ baseclass_vec[i] = lookup_basetype_type (baseclass, offset, via_virtual, via_public);
+
+ /* Since lookup_basetype_type can copy the type,
+ it might copy a stub type (complete with stub flag).
+ If so, we need to add it to the list of undefined types
+ to clean up later. Even if lookup_basetype_type
+ didn't copy the type, adding it to the undefined list
+ will not do any harm. */
+ if (TYPE_FLAGS(baseclass_vec[i]) & TYPE_FLAG_STUB)
+ add_undefined_type (baseclass_vec[i]);
+
+ /* Make this baseclass visible for structure-printing purposes. */
+ new = (struct nextfield *) alloca (sizeof (struct nextfield));
+ new->next = list;
+ list = new;
+ list->field.type = baseclass_vec[i];
+ list->field.name = TYPE_NAME (baseclass_vec[i]);
+ list->field.bitpos = offset;
+ list->field.bitsize = 0; /* this should be an unpacked field! */
+ nfields++;
+ }
+ TYPE_N_BASECLASSES (type) = n_baseclasses;
+ TYPE_BASECLASSES (type) = baseclass_vec;
+ }
+
+ /* Now come the fields, as NAME:?TYPENUM,BITPOS,BITSIZE; for each one.
+ At the end, we see a semicolon instead of a field.
+
+ In C++, this may wind up being NAME:?TYPENUM:PHYSNAME; for
+ a static field.
+
+ The `?' is a placeholder for one of '+' (public visibility),
+ '0' (protected visibility), and '-' (private visibility). */
+
+ /* We better set p right now, in case there are no fields at all... */
+ p = *pp;
+
+ while (**pp != ';')
+ {
+ int visibility;
+
+ /* Check for and handle cretinous dbx symbol name continuation! */
+ if (**pp == '\\') *pp = next_symbol_text ();
+
+ /* Get space to record the next field's data. */
+ new = (struct nextfield *) alloca (sizeof (struct nextfield));
+ new->next = list;
+ list = new;
+
+ /* Get the field name. */
+ p = *pp;
+ while (*p != ':') p++;
+ list->field.name = obsavestring (*pp, p - *pp);
+
+ /* C++: Check to see if we have hit the methods yet. */
+ if (p[1] == ':')
+ break;
+
+ *pp = p + 1;
+
+ /* This means we have a visibility for a field coming. */
+ if (**pp == '/')
+ {
+ switch (*++*pp)
+ {
+ case '0':
+ visibility = 0;
+ *pp += 1;
+ break;
+
+ case '1':
+ visibility = 1;
+ *pp += 1;
+ break;
+
+ case '2':
+ visibility = 2;
+ *pp += 1;
+ break;
+ }
+ }
+ /* else normal dbx-style format. */
+
+ list->field.type = read_type (pp);
+ if (**pp == ':')
+ {
+ list->field.bitpos = (long)-1;
+ p = ++(*pp);
+ while (*p != ';') p++;
+ list->field.bitsize = (long) savestring (*pp, p - *pp);
+ *pp = p + 1;
+ nfields++;
+ continue;
+ }
+ else if (**pp != ',')
+ error ("Invalid symbol data: bad structure-type format at symtab pos %d.",
+ symnum);
+ (*pp)++; /* Skip the comma. */
+ list->field.bitpos = read_number (pp, ',');
+ list->field.bitsize = read_number (pp, ';');
+
+#if 0
+ /* This is wrong because this is identical to the symbols
+ produced for GCC 0-size arrays. For example:
+ typedef union {
+ int num;
+ char str[0];
+ } foo;
+ The code which dumped core in such circumstances should be
+ fixed not to dump core. */
+
+ /* g++ -g0 can put out bitpos & bitsize zero for a static
+ field. This does not give us any way of getting its
+ class, so we can't know its name. But we can just
+ ignore the field so we don't dump core and other nasty
+ stuff. */
+ if (list->field.bitpos == 0
+ && list->field.bitsize == 0)
+ {
+ /* Have we given the warning yet? */
+ static int warning_given = 0;
+
+ /* Only give the warning once, no matter how many class
+ variables there are. */
+ if (!warning_given)
+ {
+ warning_given = 1;
+ fprintf_filtered (stderr, "\n\
+Warning: DBX-style class variable debugging information encountered.\n\
+You seem to have compiled your program with \
+\"g++ -g0\" instead of \"g++ -g\".\n\
+Therefore GDB will not know about your class variables.\n\
+");
+ }
+
+ /* Ignore this field. */
+ list = list->next;
+ }
+ else
+#endif /* 0 */
+ {
+ /* Detect an unpacked field and mark it as such.
+ dbx gives a bit size for all fields.
+ Note that forward refs cannot be packed,
+ and treat enums as if they had the width of ints. */
+ if (TYPE_CODE (list->field.type) != TYPE_CODE_INT
+ && TYPE_CODE (list->field.type) != TYPE_CODE_ENUM)
+ list->field.bitsize = 0;
+ if ((list->field.bitsize == 8 * TYPE_LENGTH (list->field.type)
+ || (TYPE_CODE (list->field.type) == TYPE_CODE_ENUM
+ && (list->field.bitsize
+ == 8 * TYPE_LENGTH (builtin_type_int))
+ )
+ )
+ &&
+ list->field.bitpos % 8 == 0)
+ list->field.bitsize = 0;
+ nfields++;
+ }
+ }
+
+ /* Now come the method fields, as NAME::methods
+ where each method is of the form TYPENUM,ARGS,...:PHYSNAME;
+ At the end, we see a semicolon instead of a field.
+
+ For the case of overloaded operators, the format is
+ OPERATOR::*.methods, where OPERATOR is the string "operator",
+ `*' holds the place for an operator name (such as `+=')
+ and `.' marks the end of the operator name. */
+ if (p[1] == ':')
+ {
+ /* Now, read in the methods. To simplify matters, we
+ "unread" the name that has been read, so that we can
+ start from the top. */
+
+ p = *pp;
+
+ /* chill the list of fields: the last entry (at the head)
+ is a partially constructed entry which we now scrub. */
+ list = list->next;
+
+ /* For each list of method lists... */
+ do
+ {
+ int i;
+ struct next_fnfield *sublist = 0;
+ struct fn_field *fn_fields = 0;
+ int length = 0;
+ struct next_fnfieldlist *new_mainlist =
+ (struct next_fnfieldlist *)alloca (sizeof (struct next_fnfieldlist));
+
+ /* read in the name. */
+ while (*p != ':') p++;
+ if ((*pp)[0] == 'o' && (*pp)[1] == 'p' && (*pp)[2] == '$')
+ {
+ static char opname[] = "operator";
+ char *o = opname + strlen(opname);
+
+ /* Skip past '::'. */
+ p += 2;
+ while (*p != '.')
+ *o++ = *p++;
+ new_mainlist->fn_fieldlist.name = savestring (opname, o - opname);
+ /* Skip past '.' */
+ *pp = p + 1;
+ }
+ else
+ {
+ i = 0;
+ new_mainlist->fn_fieldlist.name = savestring (*pp, p - *pp);
+ /* Skip past '::'. */
+ *pp = p + 2;
+ }
+
+ do
+ {
+ struct next_fnfield *new_sublist =
+ (struct next_fnfield *)alloca (sizeof (struct next_fnfield));
+
+ /* Check for and handle cretinous dbx symbol name continuation! */
+ if (**pp == '\\') *pp = next_symbol_text ();
+
+ new_sublist->fn_field.type = read_type (pp);
+ if (**pp != ':')
+ error ("invalid symtab info for method at symbol number %d.",
+ symnum);
+ *pp += 1;
+ new_sublist->fn_field.args =
+ TYPE_ARG_TYPES (new_sublist->fn_field.type);
+ p = *pp;
+ while (*p != ';') p++;
+ new_sublist->fn_field.physname = savestring (*pp, p - *pp);
+ *pp = p + 1;
+ new_sublist->visibility = *(*pp)++ - '0';
+ if (**pp == '\\') *pp = next_symbol_text ();
+
+ switch (*(*pp)++)
+ {
+ case '*':
+ /* virtual member function, followed by index. */
+ new_sublist->fn_field.voffset = read_number (pp, ';') + 1;
+ break;
+ case '?':
+ /* static member function. */
+ new_sublist->fn_field.voffset = 1;
+ break;
+ default:
+ /* **pp == '.'. */
+ /* normal member function. */
+ new_sublist->fn_field.voffset = 0;
+ break;
+ }
+
+ new_sublist->next = sublist;
+ sublist = new_sublist;
+ length++;
+ }
+ while (**pp != ';');
+
+ *pp += 1;
+
+ new_mainlist->fn_fieldlist.fn_fields =
+ (struct fn_field *) obstack_alloc (symbol_obstack,
+ sizeof (struct fn_field) * length);
+ TYPE_FN_PRIVATE_BITS (new_mainlist->fn_fieldlist) =
+ (int *) obstack_alloc (symbol_obstack,
+ sizeof (int) * (1 + (length >> 5)));
+
+ TYPE_FN_PROTECTED_BITS (new_mainlist->fn_fieldlist) =
+ (int *) obstack_alloc (symbol_obstack,
+ sizeof (int) * (1 + (length >> 5)));
+
+ for (i = length; sublist; sublist = sublist->next)
+ {
+ new_mainlist->fn_fieldlist.fn_fields[--i] = sublist->fn_field;
+ if (sublist->visibility == 0)
+ B_SET (new_mainlist->fn_fieldlist.private_fn_field_bits, i);
+ else if (sublist->visibility == 1)
+ B_SET (new_mainlist->fn_fieldlist.protected_fn_field_bits, i);
+ }
+
+ new_mainlist->fn_fieldlist.length = length;
+ new_mainlist->next = mainlist;
+ mainlist = new_mainlist;
+ nfn_fields++;
+ }
+ while (**pp != ';');
+ }
+
+ *pp += 1;
+
+ /* Now create the vector of fields, and record how big it is. */
+
+ TYPE_NFIELDS (type) = nfields;
+ TYPE_FIELDS (type) = (struct field *) obstack_alloc (symbol_obstack,
+ sizeof (struct field) * nfields);
+ TYPE_FIELD_PRIVATE_BITS (type) =
+ (int *) obstack_alloc (symbol_obstack,
+ sizeof (int) * (1 + (nfields >> 5)));
+ TYPE_FIELD_PROTECTED_BITS (type) =
+ (int *) obstack_alloc (symbol_obstack,
+ sizeof (int) * (1 + (nfields >> 5)));
+
+ TYPE_NFN_FIELDS (type) = nfn_fields;
+ TYPE_NFN_FIELDS_TOTAL (type) = nfn_fields;
+
+ {
+ int i;
+ for (i = 1; i <= TYPE_N_BASECLASSES (type); ++i)
+ TYPE_NFN_FIELDS_TOTAL (type) +=
+ TYPE_NFN_FIELDS_TOTAL (TYPE_BASECLASS (type, i));
+ }
+
+ TYPE_FN_FIELDLISTS (type) =
+ (struct fn_fieldlist *) obstack_alloc (symbol_obstack,
+ sizeof (struct fn_fieldlist) * nfn_fields);
+
+ /* Copy the saved-up fields into the field vector. */
+
+ for (n = nfields; list; list = list->next)
+ {
+ TYPE_FIELD (type, --n) = list->field;
+ if (list->visibility == 0)
+ SET_TYPE_FIELD_PRIVATE (type, n);
+ else if (list->visibility == 1)
+ SET_TYPE_FIELD_PROTECTED (type, n);
+ }
+
+ for (n = nfn_fields; mainlist; mainlist = mainlist->next)
+ TYPE_FN_FIELDLISTS (type)[--n] = mainlist->fn_fieldlist;
+
+ if (**pp == '~')
+ {
+ *pp += 1;
+
+ if (**pp == '=')
+ {
+ TYPE_FLAGS (type)
+ |= TYPE_FLAG_HAS_CONSTRUCTOR | TYPE_FLAG_HAS_DESTRUCTOR;
+ *pp += 1;
+ }
+ else if (**pp == '+')
+ {
+ TYPE_FLAGS (type) |= TYPE_FLAG_HAS_CONSTRUCTOR;
+ *pp += 1;
+ }
+ else if (**pp == '-')
+ {
+ TYPE_FLAGS (type) |= TYPE_FLAG_HAS_DESTRUCTOR;
+ *pp += 1;
+ }
+
+ /* Read either a '%' or the final ';'. */
+ if (*(*pp)++ == '%')
+ {
+ /* Now we must record the virtual function table pointer's
+ field information. */
+
+ struct type *t;
+ int i;
+
+ t = read_type (pp);
+ p = (*pp)++;
+ while (*p != ';') p++;
+ TYPE_VPTR_BASETYPE (type) = t;
+ if (type == t)
+ {
+ if (TYPE_FIELD_NAME (t, 0) == 0)
+ TYPE_VPTR_FIELDNO (type) = i = 0;
+ else for (i = TYPE_NFIELDS (t) - 1; i >= 0; --i)
+ if (! strncmp (TYPE_FIELD_NAME (t, i), *pp,
+ strlen (TYPE_FIELD_NAME (t, i))))
+ {
+ TYPE_VPTR_FIELDNO (type) = i;
+ break;
+ }
+ if (i < 0)
+ error ("virtual function table field not found");
+ }
+ else
+ TYPE_VPTR_FIELDNO (type) = TYPE_VPTR_FIELDNO (TYPE_BASECLASS (type, 1));
+ *pp = p + 1;
+ }
+ else
+ {
+ TYPE_VPTR_BASETYPE (type) = 0;
+ TYPE_VPTR_FIELDNO (type) = -1;
+ }
+ }
+ else
+ {
+ TYPE_VPTR_BASETYPE (type) = 0;
+ TYPE_VPTR_FIELDNO (type) = -1;
+ }
+
+ return type;
+}
+
+/* Read a definition of an array type,
+ and create and return a suitable type object.
+ Also creates a range type which represents the bounds of that
+ array. */
+static struct type *
+read_array_type (pp, type)
+ register char **pp;
+ register struct type *type;
+{
+ struct type *index_type, *element_type, *range_type;
+ int lower, upper;
+ int adjustable = 0;
+
+ /* Format of an array type:
+ "ar<index type>;lower;upper;<array_contents_type>". Put code in
+ to handle this.
+
+ Fortran adjustable arrays use Adigits or Tdigits for lower or upper;
+ for these, produce a type like float[][]. */
+
+ index_type = read_type (pp);
+ if (*(*pp)++ != ';')
+ error ("Invalid symbol data; improper format of array type decl.");
+
+ if (!(**pp >= '0' && **pp <= '9'))
+ {
+ *pp += 1;
+ adjustable = 1;
+ }
+ lower = read_number (pp, ';');
+
+ if (!(**pp >= '0' && **pp <= '9'))
+ {
+ *pp += 1;
+ adjustable = 1;
+ }
+ upper = read_number (pp, ';');
+
+ element_type = read_type (pp);
+
+ if (adjustable)
+ {
+ lower = 0;
+ upper = -1;
+ }
+
+ {
+ /* Create range type. */
+ range_type = (struct type *) obstack_alloc (symbol_obstack,
+ sizeof (struct type));
+ TYPE_CODE (range_type) = TYPE_CODE_RANGE;
+ TYPE_TARGET_TYPE (range_type) = index_type;
+
+ /* This should never be needed. */
+ TYPE_LENGTH (range_type) = sizeof (int);
+
+ TYPE_NFIELDS (range_type) = 2;
+ TYPE_FIELDS (range_type) =
+ (struct field *) obstack_alloc (symbol_obstack,
+ 2 * sizeof (struct field));
+ TYPE_FIELD_BITPOS (range_type, 0) = lower;
+ TYPE_FIELD_BITPOS (range_type, 1) = upper;
+ }
+
+ TYPE_CODE (type) = TYPE_CODE_ARRAY;
+ TYPE_TARGET_TYPE (type) = element_type;
+ TYPE_LENGTH (type) = (upper - lower + 1) * TYPE_LENGTH (element_type);
+ TYPE_NFIELDS (type) = 1;
+ TYPE_FIELDS (type) =
+ (struct field *) obstack_alloc (symbol_obstack,
+ sizeof (struct field));
+ TYPE_FIELD_TYPE (type, 0) = range_type;
+
+ return type;
+}
+
+
+/* Read a definition of an enumeration type,
+ and create and return a suitable type object.
+ Also defines the symbols that represent the values of the type. */
+
+static struct type *
+read_enum_type (pp, type)
+ register char **pp;
+ register struct type *type;
+{
+ register char *p;
+ char *name;
+ register long n;
+ register struct symbol *sym;
+ int nsyms = 0;
+ struct pending **symlist;
+ struct pending *osyms, *syms;
+ int o_nsyms;
+
+ if (within_function)
+ symlist = &local_symbols;
+ else
+ symlist = &file_symbols;
+ osyms = *symlist;
+ o_nsyms = osyms ? osyms->nsyms : 0;
+
+ /* Read the value-names and their values.
+ The input syntax is NAME:VALUE,NAME:VALUE, and so on.
+ A semicolon or comman instead of a NAME means the end. */
+ while (**pp && **pp != ';' && **pp != ',')
+ {
+ /* Check for and handle cretinous dbx symbol name continuation! */
+ if (**pp == '\\') *pp = next_symbol_text ();
+
+ p = *pp;
+ while (*p != ':') p++;
+ name = obsavestring (*pp, p - *pp);
+ *pp = p + 1;
+ n = read_number (pp, ',');
+
+ sym = (struct symbol *) obstack_alloc (symbol_obstack, sizeof (struct symbol));
+ bzero (sym, sizeof (struct symbol));
+ SYMBOL_NAME (sym) = name;
+ SYMBOL_CLASS (sym) = LOC_CONST;
+ SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
+ SYMBOL_VALUE (sym) = n;
+ add_symbol_to_list (sym, symlist);
+ nsyms++;
+ }
+
+ if (**pp == ';')
+ (*pp)++; /* Skip the semicolon. */
+
+ /* Now fill in the fields of the type-structure. */
+
+ TYPE_LENGTH (type) = sizeof (int);
+ TYPE_CODE (type) = TYPE_CODE_ENUM;
+ TYPE_NFIELDS (type) = nsyms;
+ TYPE_FIELDS (type) = (struct field *) obstack_alloc (symbol_obstack, sizeof (struct field) * nsyms);
+
+ /* Find the symbols for the values and put them into the type.
+ The symbols can be found in the symlist that we put them on
+ to cause them to be defined. osyms contains the old value
+ of that symlist; everything up to there was defined by us. */
+ /* Note that we preserve the order of the enum constants, so
+ that in something like "enum {FOO, LAST_THING=FOO}" we print
+ FOO, not LAST_THING. */
+
+ for (syms = *symlist, n = 0; syms; syms = syms->next)
+ {
+ int j = 0;
+ if (syms == osyms)
+ j = o_nsyms;
+ for (; j < syms->nsyms; j++)
+ {
+ struct symbol *sym = syms->symbol[j];
+ SYMBOL_TYPE (sym) = type;
+ TYPE_FIELD_NAME (type, n) = SYMBOL_NAME (sym);
+ TYPE_FIELD_VALUE (type, n) = 0;
+ TYPE_FIELD_BITPOS (type, n) = SYMBOL_VALUE (sym);
+ TYPE_FIELD_BITSIZE (type, n++) = 0;
+ }
+ if (syms == osyms)
+ break;
+ }
+
+ return type;
+}
+
+#define MAX_OF_TYPE(t) ((1 << (sizeof (t) - 1)) - 1)
+#define MIN_OF_TYPE(t) (-(1 << (sizeof (t) - 1)))
+
+static struct type *
+read_range_type (pp, typenums)
+ char **pp;
+ int typenums[2];
+{
+ int rangenums[2];
+ long n2, n3;
+ int n2bits, n3bits;
+ int self_subrange;
+ struct type *result_type;
+ struct type *index_type;
+
+ /* First comes a type we are a subrange of.
+ In C it is usually 0, 1 or the type being defined. */
+ read_type_number (pp, rangenums);
+ self_subrange = (rangenums[0] == typenums[0] &&
+ rangenums[1] == typenums[1]);
+
+ /* A semicolon should now follow; skip it. */
+ if (**pp == ';')
+ (*pp)++;
+
+ /* The remaining two operands are usually lower and upper bounds
+ of the range. But in some special cases they mean something else. */
+ read_huge_number (pp, ';', &n2, &n2bits);
+ read_huge_number (pp, ';', &n3, &n3bits);
+
+ if (n2bits == -1 || n3bits == -1)
+ error ("Unrecognized type range %s.", pp);
+
+ if (n2bits != 0 || n3bits != 0)
+#ifdef LONG_LONG
+ {
+ char got_signed = 0;
+ char got_unsigned = 0;
+ /* Number of bits in the type. */
+ int nbits;
+
+ /* Range from 0 to <large number> is an unsigned large integral type. */
+ if ((n2bits == 0 && n2 == 0) && n3bits != 0)
+ {
+ got_unsigned = 1;
+ nbits = n3bits;
+ }
+ /* Range fro <large number> to <large number>-1 is a large signed
+ integral type. */
+ else if (n2bits != 0 && n3bits != 0 && n2bits == n3bits + 1)
+ {
+ got_signed = 1;
+ nbits = n2bits;
+ }
+
+ /* Check for "long long". */
+ if (got_signed && nbits == CHAR_BIT * sizeof (long long))
+ return builtin_type_long_long;
+ if (got_unsigned && nbits == CHAR_BIT * sizeof (long long))
+ return builtin_type_unsigned_long_long;
+
+ error ("Large type isn't a long long.");
+ }
+#else /* LONG_LONG */
+ error ("Type long long not supported on this machine.");
+#endif
+
+ /* A type defined as a subrange of itself, with bounds both 0, is void. */
+ if (self_subrange && n2 == 0 && n3 == 0)
+ return builtin_type_void;
+
+ /* If n3 is zero and n2 is not, we want a floating type,
+ and n2 is the width in bytes.
+
+ Fortran programs appear to use this for complex types also,
+ and they give no way to distinguish between double and single-complex!
+ We don't have complex types, so we would lose on all fortran files!
+ So return type `double' for all of those. It won't work right
+ for the complex values, but at least it makes the file loadable. */
+
+ if (n3 == 0 && n2 > 0)
+ {
+ if (n2 == sizeof (float))
+ return builtin_type_float;
+ return builtin_type_double;
+ }
+
+ /* If the upper bound is -1, it must really be an unsigned int. */
+
+ else if (n2 == 0 && n3 == -1)
+ {
+ if (sizeof (int) == sizeof (long))
+ return builtin_type_unsigned_int;
+ else
+ return builtin_type_unsigned_long;
+ }
+
+ /* Special case: char is defined (Who knows why) as a subrange of
+ itself with range 0-127. */
+ else if (self_subrange && n2 == 0 && n3 == 127)
+ return builtin_type_char;
+
+ /* Assumptions made here: Subrange of self is equivalent to subrange
+ of int. */
+ else if (n2 == 0
+ && (self_subrange ||
+ *dbx_lookup_type (rangenums) == builtin_type_int))
+ {
+ /* an unsigned type */
+ if (n3 == UINT_MAX)
+ return builtin_type_unsigned_int;
+ if (n3 == ULONG_MAX)
+ return builtin_type_unsigned_long;
+ if (n3 == USHRT_MAX)
+ return builtin_type_unsigned_short;
+ if (n3 == UCHAR_MAX)
+ return builtin_type_unsigned_char;
+ }
+#ifdef LONG_LONG
+ else if (n3 == 0 && n2 == -sizeof (long long))
+ return builtin_type_long_long;
+#endif
+ else if (n2 == -n3 -1)
+ {
+ /* a signed type */
+ if (n3 == INT_MAX)
+ return builtin_type_int;
+ if (n3 == LONG_MAX)
+ return builtin_type_long;
+ if (n3 == SHRT_MAX)
+ return builtin_type_short;
+ if (n3 == CHAR_MAX)
+ return builtin_type_char;
+ }
+
+ /* We have a real range type on our hands. Allocate space and
+ return a real pointer. */
+
+ /* At this point I don't have the faintest idea how to deal with
+ a self_subrange type; I'm going to assume that this is used
+ as an idiom, and that all of them are special cases. So . . . */
+ if (self_subrange)
+ error ("Type defined as subrange of itself: %s.", pp);
+
+ result_type = (struct type *) obstack_alloc (symbol_obstack,
+ sizeof (struct type));
+ bzero (result_type, sizeof (struct type));
+
+ TYPE_TARGET_TYPE (result_type) = (self_subrange ?
+ builtin_type_int :
+ *dbx_lookup_type(rangenums));
+
+ /* We have to figure out how many bytes it takes to hold this
+ range type. I'm going to assume that anything that is pushing
+ the bounds of a long was taken care of above. */
+ if (n2 >= MIN_OF_TYPE(char) && n3 <= MAX_OF_TYPE(char))
+ TYPE_LENGTH (result_type) = 1;
+ else if (n2 >= MIN_OF_TYPE(short) && n3 <= MAX_OF_TYPE(short))
+ TYPE_LENGTH (result_type) = sizeof (short);
+ else if (n2 >= MIN_OF_TYPE(int) && n3 <= MAX_OF_TYPE(int))
+ TYPE_LENGTH (result_type) = sizeof (int);
+ else if (n2 >= MIN_OF_TYPE(long) && n3 <= MAX_OF_TYPE(long))
+ TYPE_LENGTH (result_type) = sizeof (long);
+ else
+ error ("Ranged type doesn't fit within known sizes.");
+
+ TYPE_LENGTH (result_type) = TYPE_LENGTH (TYPE_TARGET_TYPE (result_type));
+ TYPE_CODE (result_type) = TYPE_CODE_RANGE;
+ TYPE_NFIELDS (result_type) = 2;
+ TYPE_FIELDS (result_type) =
+ (struct field *) obstack_alloc (symbol_obstack,
+ 2 * sizeof (struct field));
+ bzero (TYPE_FIELDS (result_type), 2 * sizeof (struct field));
+ TYPE_FIELD_BITPOS (result_type, 0) = n2;
+ TYPE_FIELD_BITPOS (result_type, 1) = n3;
+
+ return result_type;
+}
+
+/* Read a number from the string pointed to by *PP.
+ The value of *PP is advanced over the number.
+ If END is nonzero, the character that ends the
+ number must match END, or an error happens;
+ and that character is skipped if it does match.
+ If END is zero, *PP is left pointing to that character. */
+
+static long
+read_number (pp, end)
+ char **pp;
+ int end;
+{
+ register char *p = *pp;
+ register long n = 0;
+ register int c;
+ int sign = 1;
+
+ /* Handle an optional leading minus sign. */
+
+ if (*p == '-')
+ {
+ sign = -1;
+ p++;
+ }
+
+ /* Read the digits, as far as they go. */
+
+ while ((c = *p++) >= '0' && c <= '9')
+ {
+ n *= 10;
+ n += c - '0';
+ }
+ if (end)
+ {
+ if (c && c != end)
+ error ("Invalid symbol data: invalid character \\%03o at symbol pos %d.", c, symnum);
+ }
+ else
+ --p;
+
+ *pp = p;
+ return n * sign;
+}
+
+static void
+read_huge_number (pp, end, valu, bits)
+ char **pp;
+ int end;
+ long *valu;
+ int *bits;
+{
+ char *p = *pp;
+ int sign = 1;
+ long n = 0;
+ int radix = 10;
+ char overflow = 0;
+ int nbits = 0;
+ int c;
+ long upper_limit;
+
+ /* Handle an optional leading minus sign. */
+
+ if (*p == '-')
+ {
+ sign = -1;
+ p++;
+ }
+
+ /* Leading zero means octal. GCC uses this to output values larger
+ than an int (because that would be hard in decimal). */
+ if (*p == '0')
+ {
+ radix = 8;
+ p++;
+ }
+
+ upper_limit = LONG_MAX / radix;
+ while ((c = *p++) >= '0' && c <= '9')
+ {
+ if (n <= upper_limit)
+ {
+ n *= radix;
+ n += c - '0';
+ }
+ else
+ overflow = 1;
+
+ /* This depends on large values being output in octal, which is
+ what GCC does. */
+ if (radix == 8)
+ {
+ if (nbits == 0)
+ {
+ if (c == '0')
+ /* Ignore leading zeroes. */
+ ;
+ else if (c == '1')
+ nbits = 1;
+ else if (c == '2' || c == '3')
+ nbits = 2;
+ else
+ nbits = 3;
+ }
+ else
+ nbits += 3;
+ }
+ }
+ if (end)
+ {
+ if (c && c != end)
+ {
+ if (bits != NULL)
+ *bits = -1;
+ return;
+ }
+ }
+ else
+ --p;
+
+ *pp = p;
+ if (overflow)
+ {
+ if (nbits == 0)
+ {
+ /* Large decimal constants are an error (because it is hard to
+ count how many bits are in them). */
+ if (bits != NULL)
+ *bits = -1;
+ return;
+ }
+
+ /* -0x7f is the same as 0x80. So deal with it by adding one to
+ the number of bits. */
+ if (sign == -1)
+ ++nbits;
+ if (bits)
+ *bits = nbits;
+ }
+ else
+ {
+ if (valu)
+ *valu = n * sign;
+ if (bits)
+ *bits = 0;
+ }
+}
+
+/* Read in an argument list. This is a list of types. It is terminated with
+ a ':', FYI. Return the list of types read in. */
+static struct type **
+read_args (pp, end)
+ char **pp;
+ int end;
+{
+ struct type *types[1024], **rval; /* allow for fns of 1023 parameters */
+ int n = 0;
+
+ while (**pp != end)
+ {
+ if (**pp != ',')
+ error ("Invalid argument list: no ',', at symtab pos %d", symnum);
+ *pp += 1;
+
+ /* Check for and handle cretinous dbx symbol name continuation! */
+ if (**pp == '\\')
+ *pp = next_symbol_text ();
+
+ types[n++] = read_type (pp);
+ }
+ *pp += 1; /* get past `end' (the ':' character) */
+
+ if (n == 1)
+ {
+ rval = (struct type **) xmalloc (2 * sizeof (struct type *));
+ }
+ else if (TYPE_CODE (types[n-1]) != TYPE_CODE_VOID)
+ {
+ rval = (struct type **) xmalloc ((n + 1) * sizeof (struct type *));
+ bzero (rval + n, sizeof (struct type *));
+ }
+ else
+ {
+ rval = (struct type **) xmalloc (n * sizeof (struct type *));
+ }
+ bcopy (types, rval, n * sizeof (struct type *));
+ return rval;
+}
+
+/* This function is really horrible, but to avoid it, there would need
+ to be more filling in of forward references. THIS SHOULD BE MOVED OUT
+ OF COFFREAD.C AND DBXREAD.C TO SOME PLACE WHERE IT CAN BE SHARED */
+int
+fill_in_vptr_fieldno (type)
+ struct type *type;
+{
+ if (TYPE_VPTR_FIELDNO (type) < 0)
+ TYPE_VPTR_FIELDNO (type) =
+ fill_in_vptr_fieldno (TYPE_BASECLASS (type, 1));
+ return TYPE_VPTR_FIELDNO (type);
+}
+
+/* Copy a pending list, used to record the contents of a common
+ block for later fixup. BUG FIX by rde@topexpress.co.uk */
+static struct pending *
+copy_pending (beg, begi, end)
+ struct pending *beg, *end;
+ int begi;
+{
+ struct pending *new = 0;
+ struct pending *next;
+
+ /* rde note: `begi' is an offset in block `end', NOT `beg' */
+ for (next = beg; next != 0; next = next->next)
+ {
+ register int j;
+ for (j = next == end ? begi : 0; j < next->nsyms; j++)
+ add_symbol_to_list (next->symbol[j], &new);
+
+ if (next == end)
+ break;
+ }
+ return new;
+}
+
+/* Add a common block's start address to the offset of each symbol
+ declared to be in it (by being between a BCOMM/ECOMM pair that uses
+ the common block name). */
+
+static void
+fix_common_block (sym, value)
+ struct symbol *sym;
+ int value;
+{
+ struct pending *next = (struct pending *) SYMBOL_NAMESPACE (sym);
+ for ( ; next; next = next->next)
+ {
+ register int j;
+ for (j = next->nsyms - 1; j >= 0; j--)
+ SYMBOL_VALUE (next->symbol[j]) += value;
+ }
+}
+
+void
+_initialize_dbxread ()
+{
+ symfile = 0;
+ header_files = (struct header_file *) 0;
+ this_object_header_files = (int *) 0;
+
+ undef_types_allocated = 20;
+ undef_types_length = 0;
+ undef_types = (struct type **) xmalloc (undef_types_allocated *
+ sizeof (struct type *));
+
+ add_com ("symbol-file", class_files, symbol_file_command,
+ "Load symbol table (in dbx format) from executable file FILE.");
+
+ add_com ("add-file", class_files, add_file_command,
+ "Load the symbols from FILE, assuming its code is at TEXT_START.") ;
+}
+
+#endif /* READ_DBX_FORMAT */
diff --git a/gnu/usr.bin/kgdb/defs.h b/gnu/usr.bin/kgdb/defs.h
new file mode 100644
index 000000000000..de744fce78a6
--- /dev/null
+++ b/gnu/usr.bin/kgdb/defs.h
@@ -0,0 +1,122 @@
+/*-
+ * This code is derived from software copyrighted by the Free Software
+ * Foundation.
+ *
+ * Modified 1991 by Donn Seeley at UUNET Technologies, Inc.
+ * Modified 1990 by Van Jacobson at Lawrence Berkeley Laboratory.
+ *
+ * @(#)defs.h 6.3 (Berkeley) 5/8/91
+ */
+
+/* Basic definitions for GDB, the GNU debugger.
+ Copyright (C) 1986, 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#define CORE_ADDR unsigned int
+
+#define min(a, b) ((a) < (b) ? (a) : (b))
+#define max(a, b) ((a) > (b) ? (a) : (b))
+
+extern char *savestring ();
+extern char *concat ();
+extern char *xmalloc (), *xrealloc ();
+extern int parse_escape ();
+extern char *reg_names[];
+
+/* Various possibilities for alloca. */
+#ifdef sparc
+#include <alloca.h>
+#else
+#ifdef __GNUC__
+#define alloca __builtin_alloca
+#else
+extern char *alloca ();
+#endif
+#endif
+
+extern int quit_flag;
+
+extern int immediate_quit;
+
+#define QUIT { if (quit_flag) quit (); }
+
+/* Notes on classes: class_alias is for alias commands which are not
+ abbreviations of the original command. */
+
+enum command_class
+{
+ no_class = -1, class_run = 0, class_vars, class_stack,
+ class_files, class_support, class_info, class_breakpoint,
+ class_alias, class_obscure, class_user,
+};
+
+/* the cleanup list records things that have to be undone
+ if an error happens (descriptors to be closed, memory to be freed, etc.)
+ Each link in the chain records a function to call and an
+ argument to give it.
+
+ Use make_cleanup to add an element to the cleanup chain.
+ Use do_cleanups to do all cleanup actions back to a given
+ point in the chain. Use discard_cleanups to remove cleanups
+ from the chain back to a given point, not doing them. */
+
+struct cleanup
+{
+ struct cleanup *next;
+ void (*function) ();
+ int arg;
+};
+
+extern void do_cleanups ();
+extern void discard_cleanups ();
+extern struct cleanup *make_cleanup ();
+extern struct cleanup *save_cleanups ();
+extern void restore_cleanups ();
+extern void free_current_contents ();
+extern void reinitialize_more_filter ();
+extern void fputs_filtered ();
+extern void fprintf_filtered ();
+extern void printf_filtered ();
+extern void print_spaces_filtered ();
+extern char *tilde_expand ();
+
+/* Structure for saved commands lines
+ (for breakpoints, defined commands, etc). */
+
+struct command_line
+{
+ struct command_line *next;
+ char *line;
+ int type; /* statement type */
+#define CL_END 0
+#define CL_NORMAL 1
+#define CL_WHILE 2
+#define CL_IF 3
+#define CL_EXITLOOP 4
+#define CL_NOP 5
+ struct command_line *body; /* body of loop for while, body of if */
+ struct command_line *elsebody; /* body of else part of if */
+};
+
+extern struct command_line *read_command_lines ();
+extern void do_command_lines();
+
+/* String containing the current directory (what getwd would return). */
+
+char *current_directory;
+
diff --git a/gnu/usr.bin/kgdb/environ.c b/gnu/usr.bin/kgdb/environ.c
new file mode 100644
index 000000000000..022016631331
--- /dev/null
+++ b/gnu/usr.bin/kgdb/environ.c
@@ -0,0 +1,185 @@
+/*-
+ * This code is derived from software copyrighted by the Free Software
+ * Foundation.
+ *
+ * Modified 1991 by Donn Seeley at UUNET Technologies, Inc.
+ * Modified 1990 by Van Jacobson at Lawrence Berkeley Laboratory.
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)environ.c 6.3 (Berkeley) 5/8/91";
+#endif /* not lint */
+
+/* environ.c -- library for manipulating environments for GNU.
+ Copyright (C) 1986, 1989 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 1, or (at your option)
+ any later version.
+
+ 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. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#define min(a, b) ((a) < (b) ? (a) : (b))
+#define max(a, b) ((a) > (b) ? (a) : (b))
+
+#include "environ.h"
+
+/* Return a new environment object. */
+
+struct environ *
+make_environ ()
+{
+ register struct environ *e;
+
+ e = (struct environ *) xmalloc (sizeof (struct environ));
+
+ e->allocated = 10;
+ e->vector = (char **) xmalloc ((e->allocated + 1) * sizeof (char *));
+ e->vector[0] = 0;
+ return e;
+}
+
+/* Free an environment and all the strings in it. */
+
+void
+free_environ (e)
+ register struct environ *e;
+{
+ register char **vector = e->vector;
+
+ while (*vector)
+ free (*vector++);
+
+ free (e);
+}
+
+/* Copy the environment given to this process into E.
+ Also copies all the strings in it, so we can be sure
+ that all strings in these environments are safe to free. */
+
+void
+init_environ (e)
+ register struct environ *e;
+{
+ extern char **environ;
+ register int i;
+
+ for (i = 0; environ[i]; i++);
+
+ if (e->allocated < i)
+ {
+ e->allocated = max (i, e->allocated + 10);
+ e->vector = (char **) xrealloc (e->vector,
+ (e->allocated + 1) * sizeof (char *));
+ }
+
+ bcopy (environ, e->vector, (i + 1) * sizeof (char *));
+
+ while (--i >= 0)
+ {
+ register int len = strlen (e->vector[i]) + 1;
+ register char *new = (char *) xmalloc (len);
+ bcopy (e->vector[i], new, len);
+ e->vector[i] = new;
+ }
+}
+
+/* Return the vector of environment E.
+ This is used to get something to pass to execve. */
+
+char **
+environ_vector (e)
+ struct environ *e;
+{
+ return e->vector;
+}
+
+/* Return the value in environment E of variable VAR. */
+
+char *
+get_in_environ (e, var)
+ struct environ *e;
+ char *var;
+{
+ register int len = strlen (var);
+ register char **vector = e->vector;
+ register char *s;
+
+ for (; s = *vector; vector++)
+ if (!strncmp (s, var, len)
+ && s[len] == '=')
+ return &s[len + 1];
+
+ return 0;
+}
+
+/* Store the value in E of VAR as VALUE. */
+
+void
+set_in_environ (e, var, value)
+ struct environ *e;
+ char *var;
+ char *value;
+{
+ register int i;
+ register int len = strlen (var);
+ register char **vector = e->vector;
+ register char *s;
+
+ for (i = 0; s = vector[i]; i++)
+ if (!strncmp (s, var, len)
+ && s[len] == '=')
+ break;
+
+ if (s == 0)
+ {
+ if (i == e->allocated)
+ {
+ e->allocated += 10;
+ vector = (char **) xrealloc (vector,
+ (e->allocated + 1) * sizeof (char *));
+ e->vector = vector;
+ }
+ vector[i + 1] = 0;
+ }
+ else
+ free (s);
+
+ s = (char *) xmalloc (len + strlen (value) + 2);
+ strcpy (s, var);
+ strcat (s, "=");
+ strcat (s, value);
+ vector[i] = s;
+ return;
+}
+
+/* Remove the setting for variable VAR from environment E. */
+
+void
+unset_in_environ (e, var)
+ struct environ *e;
+ char *var;
+{
+ register int len = strlen (var);
+ register char **vector = e->vector;
+ register char *s;
+
+ for (; s = *vector; vector++)
+ if (!strncmp (s, var, len)
+ && s[len] == '=')
+ {
+ free (s);
+ bcopy (vector + 1, vector,
+ (e->allocated - (vector - e->vector)) * sizeof (char *));
+ e->vector[e->allocated - 1] = 0;
+ return;
+ }
+}
diff --git a/gnu/usr.bin/kgdb/environ.h b/gnu/usr.bin/kgdb/environ.h
new file mode 100644
index 000000000000..13f31f470a5e
--- /dev/null
+++ b/gnu/usr.bin/kgdb/environ.h
@@ -0,0 +1,39 @@
+/* Header for environment manipulation library.
+ Copyright (C) 1989, Free Software Foundation.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 1, or (at your option)
+ any later version.
+
+ 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. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+/* We manipulate environments represented as these structures. */
+
+struct environ
+{
+ /* Number of usable slots allocated in VECTOR.
+ VECTOR always has one slot not counted here,
+ to hold the terminating zero. */
+ int allocated;
+ /* A vector of slots, ALLOCATED + 1 of them.
+ The first few slots contain strings "VAR=VALUE"
+ and the next one contains zero.
+ Then come some unused slots. */
+ char **vector;
+};
+
+struct environ *make_environ ();
+void free_environ ();
+void init_environ ();
+char *get_in_environ ();
+void set_in_environ ();
+void unset_in_environ ();
+char **environ_vector ();
diff --git a/gnu/usr.bin/kgdb/eval.c b/gnu/usr.bin/kgdb/eval.c
new file mode 100644
index 000000000000..5b3b0ba1a980
--- /dev/null
+++ b/gnu/usr.bin/kgdb/eval.c
@@ -0,0 +1,1065 @@
+/*-
+ * This code is derived from software copyrighted by the Free Software
+ * Foundation.
+ *
+ * Modified 1991 by Donn Seeley at UUNET Technologies, Inc.
+ * Modified 1990 by Van Jacobson at Lawrence Berkeley Laboratory.
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)eval.c 6.3 (Berkeley) 5/8/91";
+#endif /* not lint */
+
+/* Evaluate expressions for GDB.
+ Copyright (C) 1986, 1987, 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include "defs.h"
+#include "param.h"
+#include "symtab.h"
+#include "value.h"
+#include "expression.h"
+
+
+/* Parse the string EXP as a C expression, evaluate it,
+ and return the result as a number. */
+
+CORE_ADDR
+parse_and_eval_address (exp)
+ char *exp;
+{
+ struct expression *expr = parse_c_expression (exp);
+ register CORE_ADDR addr;
+ register struct cleanup *old_chain
+ = make_cleanup (free_current_contents, &expr);
+
+ addr = (CORE_ADDR) value_as_long (evaluate_expression (expr));
+ do_cleanups (old_chain);
+ return addr;
+}
+
+/* Like parse_and_eval_address but takes a pointer to a char * variable
+ and advanced that variable across the characters parsed. */
+
+CORE_ADDR
+parse_and_eval_address_1 (expptr)
+ char **expptr;
+{
+ struct expression *expr = parse_c_1 (expptr, 0, 0);
+ register CORE_ADDR addr;
+ register struct cleanup *old_chain
+ = make_cleanup (free_current_contents, &expr);
+
+ addr = value_as_long (evaluate_expression (expr));
+ do_cleanups (old_chain);
+ return addr;
+}
+
+value
+parse_and_eval (exp)
+ char *exp;
+{
+ struct expression *expr = parse_c_expression (exp);
+ register value val;
+ register struct cleanup *old_chain
+ = make_cleanup (free_current_contents, &expr);
+
+ val = evaluate_expression (expr);
+ do_cleanups (old_chain);
+ return val;
+}
+
+/* Parse up to a comma (or to a closeparen)
+ in the string EXPP as an expression, evaluate it, and return the value.
+ EXPP is advanced to point to the comma. */
+
+value
+parse_to_comma_and_eval (expp)
+ char **expp;
+{
+ struct expression *expr = parse_c_1 (expp, 0, 1);
+ register value val;
+ register struct cleanup *old_chain
+ = make_cleanup (free_current_contents, &expr);
+
+ val = evaluate_expression (expr);
+ do_cleanups (old_chain);
+ return val;
+}
+
+/* Evaluate an expression in internal prefix form
+ such as is constructed by expread.y.
+
+ See expression.h for info on the format of an expression. */
+
+static value evaluate_subexp ();
+static value evaluate_subexp_for_address ();
+static value evaluate_subexp_for_sizeof ();
+static value evaluate_subexp_with_coercion ();
+
+/* return true if 'var' has an address in inferior's memory. */
+static int
+value_has_lval(var)
+ register struct symbol *var;
+{
+ switch (SYMBOL_CLASS(var))
+ {
+ case LOC_STATIC:
+ case LOC_LABEL:
+ case LOC_ARG:
+ case LOC_REF_ARG:
+ case LOC_LOCAL:
+ case LOC_BLOCK:
+ return (1);
+ }
+ return (0);
+}
+
+/* Values of NOSIDE argument to eval_subexp. */
+enum noside
+{ EVAL_NORMAL,
+ EVAL_SKIP, /* Only effect is to increment pos. */
+ EVAL_AVOID_SIDE_EFFECTS, /* Don't modify any variables or
+ call any functions. The value
+ returned will have the correct
+ type, and will have an
+ approximately correct lvalue
+ type (inaccuracy: anything that is
+ listed as being in a register in
+ the function in which it was
+ declared will be lval_register). */
+};
+
+value
+evaluate_expression (exp)
+ struct expression *exp;
+{
+ int pc = 0;
+ return evaluate_subexp (0, exp, &pc, EVAL_NORMAL);
+}
+
+/* Evaluate an expression, avoiding all memory references
+ and getting a value whose type alone is correct. */
+
+value
+evaluate_type (exp)
+ struct expression *exp;
+{
+ int pc = 0;
+ return evaluate_subexp (0, exp, &pc, EVAL_AVOID_SIDE_EFFECTS);
+}
+
+static value
+evaluate_subexp (expect_type, exp, pos, noside)
+ struct type *expect_type;
+ register struct expression *exp;
+ register int *pos;
+ enum noside noside;
+{
+ enum exp_opcode op;
+ int tem;
+ register int pc, pc2, oldpos;
+ register value arg1, arg2, arg3;
+ int nargs;
+ value *argvec;
+
+ pc = (*pos)++;
+ op = exp->elts[pc].opcode;
+
+ switch (op)
+ {
+ case OP_SCOPE:
+ tem = strlen (&exp->elts[pc + 2].string);
+ (*pos) += 3 + ((tem + sizeof (union exp_element))
+ / sizeof (union exp_element));
+ return value_static_field (exp->elts[pc + 1].type,
+ &exp->elts[pc + 2].string, -1);
+
+ case OP_LONG:
+ (*pos) += 3;
+ return value_from_long (exp->elts[pc + 1].type,
+ exp->elts[pc + 2].longconst);
+
+ case OP_DOUBLE:
+ (*pos) += 3;
+ return value_from_double (exp->elts[pc + 1].type,
+ exp->elts[pc + 2].doubleconst);
+
+ case OP_VAR_VALUE:
+ (*pos) += 2;
+ if (noside == EVAL_SKIP)
+ goto nosideret;
+ if (noside == EVAL_AVOID_SIDE_EFFECTS)
+ {
+ struct symbol * sym = exp->elts[pc + 1].symbol;
+ enum lval_type lv;
+
+ switch (SYMBOL_CLASS (sym))
+ {
+ case LOC_CONST:
+ case LOC_LABEL:
+ case LOC_CONST_BYTES:
+ lv = not_lval;
+ case LOC_REGISTER:
+ case LOC_REGPARM:
+ lv = lval_register;
+ default:
+ lv = lval_memory;
+ }
+
+ return value_zero (SYMBOL_TYPE (sym), lv);
+ }
+ else
+ return value_of_variable (exp->elts[pc + 1].symbol);
+
+ case OP_LAST:
+ (*pos) += 2;
+ return access_value_history ((int) exp->elts[pc + 1].longconst);
+
+ case OP_REGISTER:
+ (*pos) += 2;
+ return value_of_register ((int) exp->elts[pc + 1].longconst);
+
+ case OP_INTERNALVAR:
+ (*pos) += 2;
+ return value_of_internalvar (exp->elts[pc + 1].internalvar);
+
+ case OP_STRING:
+ tem = strlen (&exp->elts[pc + 1].string);
+ (*pos) += 2 + ((tem + sizeof (union exp_element))
+ / sizeof (union exp_element));
+ if (noside == EVAL_SKIP)
+ goto nosideret;
+ return value_string (&exp->elts[pc + 1].string, tem);
+
+ case TERNOP_COND:
+ /* Skip third and second args to evaluate the first one. */
+ arg1 = evaluate_subexp (0, exp, pos, noside);
+ if (value_zerop (arg1))
+ {
+ evaluate_subexp (0, exp, pos, EVAL_SKIP);
+ return evaluate_subexp (0, exp, pos, noside);
+ }
+ else
+ {
+ arg2 = evaluate_subexp (0, exp, pos, noside);
+ evaluate_subexp (0, exp, pos, EVAL_SKIP);
+ return arg2;
+ }
+
+ case OP_FUNCALL:
+ (*pos) += 2;
+ op = exp->elts[*pos].opcode;
+ if (op == STRUCTOP_MEMBER || op == STRUCTOP_MPTR)
+ {
+ int fnptr;
+ int tem2;
+
+ nargs = (int) exp->elts[pc + 1].longconst + 1;
+ /* First, evaluate the structure into arg2 */
+ pc2 = (*pos)++;
+
+ if (noside == EVAL_SKIP)
+ goto nosideret;
+
+ if (op == STRUCTOP_MEMBER)
+ {
+ arg2 = evaluate_subexp_for_address (exp, pos, noside);
+ }
+ else
+ {
+ arg2 = evaluate_subexp (0, exp, pos, noside);
+ }
+
+ /* If the function is a virtual function, then the
+ aggregate value (providing the structure) plays
+ its part by providing the vtable. Otherwise,
+ it is just along for the ride: call the function
+ directly. */
+
+ arg1 = evaluate_subexp (0, exp, pos, noside);
+
+ fnptr = (int) value_as_long (arg1);
+ if (fnptr < 128)
+ {
+ struct type *basetype;
+ int i, j;
+ basetype = TYPE_TARGET_TYPE (VALUE_TYPE (arg2));
+ basetype = TYPE_VPTR_BASETYPE (basetype);
+ for (i = TYPE_NFN_FIELDS (basetype) - 1; i >= 0; i--)
+ {
+ struct fn_field *f = TYPE_FN_FIELDLIST1 (basetype, i);
+ /* If one is virtual, then all are virtual. */
+ if (TYPE_FN_FIELD_VIRTUAL_P (f, 0))
+ for (j = TYPE_FN_FIELDLIST_LENGTH (basetype, i) - 1; j >= 0; --j)
+ if (TYPE_FN_FIELD_VOFFSET (f, j) == fnptr)
+ {
+ value vtbl;
+ value base = value_ind (arg2);
+ struct type *fntype = lookup_pointer_type (TYPE_FN_FIELD_TYPE (f, j));
+
+ if (TYPE_VPTR_FIELDNO (basetype) < 0)
+ TYPE_VPTR_FIELDNO (basetype)
+ = fill_in_vptr_fieldno (basetype);
+
+ VALUE_TYPE (base) = basetype;
+ vtbl = value_field (base, TYPE_VPTR_FIELDNO (basetype));
+ VALUE_TYPE (vtbl) = lookup_pointer_type (fntype);
+ VALUE_TYPE (arg1) = builtin_type_int;
+ arg1 = value_subscript (vtbl, arg1);
+ VALUE_TYPE (arg1) = fntype;
+ goto got_it;
+ }
+ }
+ if (i < 0)
+ error ("virtual function at index %d not found", fnptr);
+ }
+ else
+ {
+ VALUE_TYPE (arg1) = lookup_pointer_type (TYPE_TARGET_TYPE (VALUE_TYPE (arg1)));
+ }
+ got_it:
+
+ /* Now, say which argument to start evaluating from */
+ tem = 2;
+ }
+ else if (op == STRUCTOP_STRUCT || op == STRUCTOP_PTR)
+ {
+ /* Hair for method invocations */
+ int tem2;
+
+ nargs = (int) exp->elts[pc + 1].longconst + 1;
+ /* First, evaluate the structure into arg2 */
+ pc2 = (*pos)++;
+ tem2 = strlen (&exp->elts[pc2 + 1].string);
+ *pos += 2 + (tem2 + sizeof (union exp_element)) / sizeof (union exp_element);
+ if (noside == EVAL_SKIP)
+ goto nosideret;
+
+ if (op == STRUCTOP_STRUCT)
+ {
+ arg2 = evaluate_subexp_for_address (exp, pos, noside);
+ }
+ else
+ {
+ arg2 = evaluate_subexp (0, exp, pos, noside);
+ }
+ /* Now, say which argument to start evaluating from */
+ tem = 2;
+ }
+ else
+ {
+ nargs = (int) exp->elts[pc + 1].longconst;
+ tem = 0;
+ }
+ argvec = (value *) alloca (sizeof (value) * (nargs + 2));
+ for (; tem <= nargs; tem++)
+ /* Ensure that array expressions are coerced into pointer objects. */
+ argvec[tem] = evaluate_subexp_with_coercion (exp, pos, noside);
+
+ /* signal end of arglist */
+ argvec[tem] = 0;
+
+ if (op == STRUCTOP_STRUCT || op == STRUCTOP_PTR)
+ {
+ int static_memfuncp;
+
+ argvec[1] = arg2;
+ argvec[0] =
+ value_struct_elt (arg2, argvec+1, &exp->elts[pc2 + 1].string,
+ &static_memfuncp,
+ op == STRUCTOP_STRUCT
+ ? "structure" : "structure pointer");
+ if (static_memfuncp)
+ {
+ argvec[1] = argvec[0];
+ nargs--;
+ argvec++;
+ }
+ }
+ else if (op == STRUCTOP_MEMBER || op == STRUCTOP_MPTR)
+ {
+ argvec[1] = arg2;
+ argvec[0] = arg1;
+ }
+
+ if (noside == EVAL_SKIP)
+ goto nosideret;
+ if (noside == EVAL_AVOID_SIDE_EFFECTS)
+ {
+ /* If the return type doesn't look like a function type, call an
+ error. This can happen if somebody tries to turn a variable into
+ a function call. This is here because people often want to
+ call, eg, strcmp, which gdb doesn't know is a function. If
+ gdb isn't asked for it's opinion (ie. through "whatis"),
+ it won't offer it. */
+
+ struct type *ftype =
+ TYPE_TARGET_TYPE (VALUE_TYPE (argvec[0]));
+
+ if (ftype)
+ return allocate_value (TYPE_TARGET_TYPE (VALUE_TYPE (argvec[0])));
+ else
+ error ("Expression of type other than \"Function returning ...\" used as function");
+ }
+ return call_function (argvec[0], nargs, argvec + 1);
+
+ case STRUCTOP_STRUCT:
+ tem = strlen (&exp->elts[pc + 1].string);
+ (*pos) += 2 + ((tem + sizeof (union exp_element))
+ / sizeof (union exp_element));
+
+ /* Try to convert "foo.bar" into "(&foo)->bar" so we won't copy
+ * the entire contents of a large struct just to extract one
+ * value from it. */
+ if (noside == EVAL_NORMAL && exp->elts[*pos].opcode == OP_VAR_VALUE
+ && value_has_lval(exp->elts[*pos + 1].symbol))
+ arg1 = evaluate_subexp_for_address(exp, pos, noside);
+ else
+ arg1 = evaluate_subexp (0, exp, pos, noside);
+
+ if (noside == EVAL_SKIP)
+ goto nosideret;
+ if (noside == EVAL_AVOID_SIDE_EFFECTS)
+ {
+ register struct type *type = VALUE_TYPE (arg1);
+ if (TYPE_CODE (type) == TYPE_CODE_PTR)
+ type = TYPE_TARGET_TYPE (type);
+ return value_zero (lookup_struct_elt_type (type,
+ &exp->elts[pc + 1].string),
+ lval_memory);
+ }
+ else
+ return value_struct_elt (arg1, 0, &exp->elts[pc + 1].string, 0,
+ "structure");
+
+ case STRUCTOP_PTR:
+ tem = strlen (&exp->elts[pc + 1].string);
+ (*pos) += 2 + (tem + sizeof (union exp_element)) / sizeof (union exp_element);
+ arg1 = evaluate_subexp (0, exp, pos, noside);
+ if (noside == EVAL_SKIP)
+ goto nosideret;
+ if (noside == EVAL_AVOID_SIDE_EFFECTS)
+ return value_zero (lookup_struct_elt_type (TYPE_TARGET_TYPE
+ (VALUE_TYPE (arg1)),
+ &exp->elts[pc + 1].string),
+ lval_memory);
+ else
+ return value_struct_elt (arg1, 0, &exp->elts[pc + 1].string, 0,
+ "structure pointer");
+
+ case STRUCTOP_MEMBER:
+ arg1 = evaluate_subexp_for_address (exp, pos, noside);
+ arg2 = evaluate_subexp (0, exp, pos, noside);
+ if (noside == EVAL_SKIP)
+ goto nosideret;
+ /* Now, convert these values to an address. */
+ if (TYPE_CODE (VALUE_TYPE (arg2)) != TYPE_CODE_PTR
+ || ((TYPE_CODE (TYPE_TARGET_TYPE (VALUE_TYPE (arg2)))
+ != TYPE_CODE_MEMBER)
+ && (TYPE_CODE (TYPE_TARGET_TYPE (VALUE_TYPE (arg2)))
+ != TYPE_CODE_METHOD)))
+ error ("non-pointer-to-member value used in pointer-to-member construct");
+ arg3 = value_from_long (builtin_type_long,
+ value_as_long (arg1) + value_as_long (arg2));
+ VALUE_TYPE (arg3) =
+ lookup_pointer_type (TYPE_TARGET_TYPE (TYPE_TARGET_TYPE (VALUE_TYPE (arg2))));
+ return value_ind (arg3);
+
+ case STRUCTOP_MPTR:
+ arg1 = evaluate_subexp (0, exp, pos, noside);
+ arg2 = evaluate_subexp (0, exp, pos, noside);
+ if (noside == EVAL_SKIP)
+ goto nosideret;
+ /* Now, convert these values to an address. */
+ if (TYPE_CODE (VALUE_TYPE (arg2)) != TYPE_CODE_PTR
+ || (TYPE_CODE (TYPE_TARGET_TYPE (VALUE_TYPE (arg2))) != TYPE_CODE_MEMBER
+ && TYPE_CODE (TYPE_TARGET_TYPE (VALUE_TYPE (arg2))) != TYPE_CODE_METHOD))
+ error ("non-pointer-to-member value used in pointer-to-member construct");
+ arg3 = value_from_long (builtin_type_long,
+ value_as_long (arg1) + value_as_long (arg2));
+ VALUE_TYPE (arg3) =
+ lookup_pointer_type (TYPE_TARGET_TYPE (TYPE_TARGET_TYPE (VALUE_TYPE (arg2))));
+ return value_ind (arg3);
+
+ case BINOP_ASSIGN:
+ arg1 = evaluate_subexp (0, exp, pos, noside);
+ arg2 = evaluate_subexp (VALUE_TYPE (arg1), exp, pos, noside);
+ if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
+ return arg1;
+ if (binop_user_defined_p (op, arg1, arg2))
+ return value_x_binop (arg1, arg2, op, 0);
+ else
+ return value_assign (arg1, arg2);
+
+ case BINOP_ASSIGN_MODIFY:
+ (*pos) += 2;
+ arg1 = evaluate_subexp (0, exp, pos, noside);
+ arg2 = evaluate_subexp (VALUE_TYPE (arg1), exp, pos, noside);
+ if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
+ return arg1;
+ op = exp->elts[pc + 1].opcode;
+ if (binop_user_defined_p (op, arg1, arg2))
+ return value_x_binop (arg1, arg2, BINOP_ASSIGN_MODIFY, op);
+ else if (op == BINOP_ADD)
+ arg2 = value_add (arg1, arg2);
+ else if (op == BINOP_SUB)
+ arg2 = value_sub (arg1, arg2);
+ else
+ arg2 = value_binop (arg1, arg2, op);
+ return value_assign (arg1, arg2);
+
+ case BINOP_ADD:
+ arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
+ arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
+ if (noside == EVAL_SKIP)
+ goto nosideret;
+ if (binop_user_defined_p (op, arg1, arg2))
+ return value_x_binop (arg1, arg2, op, 0);
+ else
+ return value_add (arg1, arg2);
+
+ case BINOP_SUB:
+ arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
+ arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
+ if (noside == EVAL_SKIP)
+ goto nosideret;
+ if (binop_user_defined_p (op, arg1, arg2))
+ return value_x_binop (arg1, arg2, op, 0);
+ else
+ return value_sub (arg1, arg2);
+
+ case BINOP_MUL:
+ case BINOP_DIV:
+ case BINOP_REM:
+ case BINOP_LSH:
+ case BINOP_RSH:
+ case BINOP_LOGAND:
+ case BINOP_LOGIOR:
+ case BINOP_LOGXOR:
+ arg1 = evaluate_subexp (0, exp, pos, noside);
+ arg2 = evaluate_subexp (0, exp, pos, noside);
+ if (noside == EVAL_SKIP)
+ goto nosideret;
+ if (binop_user_defined_p (op, arg1, arg2))
+ return value_x_binop (arg1, arg2, op, 0);
+ else
+ if (noside == EVAL_AVOID_SIDE_EFFECTS
+ && op == BINOP_DIV)
+ return value_zero (VALUE_TYPE (arg1), not_lval);
+ else
+ return value_binop (arg1, arg2, op);
+
+ case BINOP_SUBSCRIPT:
+ arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
+ arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
+ if (noside == EVAL_SKIP)
+ goto nosideret;
+ if (noside == EVAL_AVOID_SIDE_EFFECTS)
+ return value_zero (TYPE_TARGET_TYPE (VALUE_TYPE (arg1)),
+ VALUE_LVAL (arg1));
+
+ if (binop_user_defined_p (op, arg1, arg2))
+ return value_x_binop (arg1, arg2, op, 0);
+ else
+ return value_subscript (arg1, arg2);
+
+ case BINOP_AND:
+ arg1 = evaluate_subexp (0, exp, pos, noside);
+ if (noside == EVAL_SKIP)
+ {
+ arg2 = evaluate_subexp (0, exp, pos, noside);
+ goto nosideret;
+ }
+
+ oldpos = *pos;
+ arg2 = evaluate_subexp (0, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
+ *pos = oldpos;
+
+ if (binop_user_defined_p (op, arg1, arg2))
+ {
+ arg2 = evaluate_subexp (0, exp, pos, noside);
+ return value_x_binop (arg1, arg2, op, 0);
+ }
+ else
+ {
+ tem = value_zerop (arg1);
+ arg2 = evaluate_subexp (0, exp, pos,
+ (tem ? EVAL_SKIP : noside));
+ return value_from_long (builtin_type_int,
+ (LONGEST) (!tem && !value_zerop (arg2)));
+ }
+
+ case BINOP_OR:
+ arg1 = evaluate_subexp (0, exp, pos, noside);
+ if (noside == EVAL_SKIP)
+ {
+ arg2 = evaluate_subexp (0, exp, pos, noside);
+ goto nosideret;
+ }
+
+ oldpos = *pos;
+ arg2 = evaluate_subexp (0, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
+ *pos = oldpos;
+
+ if (binop_user_defined_p (op, arg1, arg2))
+ {
+ arg2 = evaluate_subexp (0, exp, pos, noside);
+ return value_x_binop (arg1, arg2, op, 0);
+ }
+ else
+ {
+ tem = value_zerop (arg1);
+ arg2 = evaluate_subexp (0, exp, pos,
+ (!tem ? EVAL_SKIP : noside));
+ return value_from_long (builtin_type_int,
+ (LONGEST) (!tem || !value_zerop (arg2)));
+ }
+
+ case BINOP_EQUAL:
+ arg1 = evaluate_subexp (0, exp, pos, noside);
+ arg2 = evaluate_subexp (VALUE_TYPE (arg1), exp, pos, noside);
+ if (noside == EVAL_SKIP)
+ goto nosideret;
+ if (binop_user_defined_p (op, arg1, arg2))
+ {
+ return value_x_binop (arg1, arg2, op, 0);
+ }
+ else
+ {
+ tem = value_equal (arg1, arg2);
+ return value_from_long (builtin_type_int, (LONGEST) tem);
+ }
+
+ case BINOP_NOTEQUAL:
+ arg1 = evaluate_subexp (0, exp, pos, noside);
+ arg2 = evaluate_subexp (VALUE_TYPE (arg1), exp, pos, noside);
+ if (noside == EVAL_SKIP)
+ goto nosideret;
+ if (binop_user_defined_p (op, arg1, arg2))
+ {
+ return value_x_binop (arg1, arg2, op, 0);
+ }
+ else
+ {
+ tem = value_equal (arg1, arg2);
+ return value_from_long (builtin_type_int, (LONGEST) ! tem);
+ }
+
+ case BINOP_LESS:
+ arg1 = evaluate_subexp (0, exp, pos, noside);
+ arg2 = evaluate_subexp (VALUE_TYPE (arg1), exp, pos, noside);
+ if (noside == EVAL_SKIP)
+ goto nosideret;
+ if (binop_user_defined_p (op, arg1, arg2))
+ {
+ return value_x_binop (arg1, arg2, op, 0);
+ }
+ else
+ {
+ tem = value_less (arg1, arg2);
+ return value_from_long (builtin_type_int, (LONGEST) tem);
+ }
+
+ case BINOP_GTR:
+ arg1 = evaluate_subexp (0, exp, pos, noside);
+ arg2 = evaluate_subexp (VALUE_TYPE (arg1), exp, pos, noside);
+ if (noside == EVAL_SKIP)
+ goto nosideret;
+ if (binop_user_defined_p (op, arg1, arg2))
+ {
+ return value_x_binop (arg1, arg2, op, 0);
+ }
+ else
+ {
+ tem = value_less (arg2, arg1);
+ return value_from_long (builtin_type_int, (LONGEST) tem);
+ }
+
+ case BINOP_GEQ:
+ arg1 = evaluate_subexp (0, exp, pos, noside);
+ arg2 = evaluate_subexp (VALUE_TYPE (arg1), exp, pos, noside);
+ if (noside == EVAL_SKIP)
+ goto nosideret;
+ if (binop_user_defined_p (op, arg1, arg2))
+ {
+ return value_x_binop (arg1, arg2, op, 0);
+ }
+ else
+ {
+ tem = value_less (arg1, arg2);
+ return value_from_long (builtin_type_int, (LONGEST) ! tem);
+ }
+
+ case BINOP_LEQ:
+ arg1 = evaluate_subexp (0, exp, pos, noside);
+ arg2 = evaluate_subexp (VALUE_TYPE (arg1), exp, pos, noside);
+ if (noside == EVAL_SKIP)
+ goto nosideret;
+ if (binop_user_defined_p (op, arg1, arg2))
+ {
+ return value_x_binop (arg1, arg2, op, 0);
+ }
+ else
+ {
+ tem = value_less (arg2, arg1);
+ return value_from_long (builtin_type_int, (LONGEST) ! tem);
+ }
+
+ case BINOP_REPEAT:
+ arg1 = evaluate_subexp (0, exp, pos, noside);
+ arg2 = evaluate_subexp (0, exp, pos, noside);
+ if (noside == EVAL_SKIP)
+ goto nosideret;
+ if (TYPE_CODE (VALUE_TYPE (arg2)) != TYPE_CODE_INT)
+ error ("Non-integral right operand for \"@\" operator.");
+ if (noside == EVAL_AVOID_SIDE_EFFECTS)
+ return allocate_repeat_value (VALUE_TYPE (arg1),
+ (int) value_as_long (arg2));
+ else
+ return value_repeat (arg1, (int) value_as_long (arg2));
+
+ case BINOP_COMMA:
+ evaluate_subexp (0, exp, pos, noside);
+ return evaluate_subexp (0, exp, pos, noside);
+
+ case UNOP_NEG:
+ arg1 = evaluate_subexp (0, exp, pos, noside);
+ if (noside == EVAL_SKIP)
+ goto nosideret;
+ if (unop_user_defined_p (op, arg1))
+ return value_x_unop (arg1, op);
+ else
+ return value_neg (arg1);
+
+ case UNOP_LOGNOT:
+ arg1 = evaluate_subexp (0, exp, pos, noside);
+ if (noside == EVAL_SKIP)
+ goto nosideret;
+ if (unop_user_defined_p (op, arg1))
+ return value_x_unop (arg1, op);
+ else
+ return value_lognot (arg1);
+
+ case UNOP_ZEROP:
+ arg1 = evaluate_subexp (0, exp, pos, noside);
+ if (noside == EVAL_SKIP)
+ goto nosideret;
+ if (unop_user_defined_p (op, arg1))
+ return value_x_unop (arg1, op);
+ else
+ return value_from_long (builtin_type_int,
+ (LONGEST) value_zerop (arg1));
+
+ case UNOP_IND:
+ if (expect_type && TYPE_CODE (expect_type) == TYPE_CODE_PTR)
+ expect_type = TYPE_TARGET_TYPE (expect_type);
+ arg1 = evaluate_subexp (expect_type, exp, pos, noside);
+ if (noside == EVAL_SKIP)
+ goto nosideret;
+ if (noside == EVAL_AVOID_SIDE_EFFECTS)
+ {
+ if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_PTR
+ || TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_REF
+ /* In C you can dereference an array to get the 1st elt. */
+ || TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_ARRAY
+ )
+ return value_zero (TYPE_TARGET_TYPE (VALUE_TYPE (arg1)),
+ lval_memory);
+ else if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_INT)
+ /* GDB allows dereferencing an int. */
+ return value_zero (builtin_type_int, lval_memory);
+ else
+ error ("Attempt to take contents of a non-pointer value.");
+ }
+ return value_ind (arg1);
+
+ case UNOP_ADDR:
+ /* C++: check for and handle pointer to members. */
+
+ op = exp->elts[*pos].opcode;
+
+ if (noside == EVAL_SKIP)
+ {
+ if (op == OP_SCOPE)
+ {
+ char *name = &exp->elts[pc+3].string;
+ int tem = strlen (name);
+ (*pos) += 2 + (tem + sizeof (union exp_element)) / sizeof (union exp_element);
+ }
+ else
+ evaluate_subexp (expect_type, exp, pos, EVAL_SKIP);
+ goto nosideret;
+ }
+
+ if (op == OP_SCOPE)
+ {
+ char *name = &exp->elts[pc+3].string;
+ int tem = strlen (name);
+ struct type *domain = exp->elts[pc+2].type;
+ (*pos) += 2 + (tem + sizeof (union exp_element)) / sizeof (union exp_element);
+ arg1 = value_struct_elt_for_address (domain, expect_type, name);
+ if (arg1)
+ return arg1;
+ error ("no field `%s' in structure", name);
+ }
+ else
+ return evaluate_subexp_for_address (exp, pos, noside);
+
+ case UNOP_SIZEOF:
+ if (noside == EVAL_SKIP)
+ {
+ evaluate_subexp (0, exp, pos, EVAL_SKIP);
+ goto nosideret;
+ }
+ return evaluate_subexp_for_sizeof (exp, pos);
+
+ case UNOP_CAST:
+ (*pos) += 2;
+ arg1 = evaluate_subexp (expect_type, exp, pos, noside);
+ if (noside == EVAL_SKIP)
+ goto nosideret;
+ return value_cast (exp->elts[pc + 1].type, arg1);
+
+ case UNOP_MEMVAL:
+ (*pos) += 2;
+ arg1 = evaluate_subexp (expect_type, exp, pos, noside);
+ if (noside == EVAL_SKIP)
+ goto nosideret;
+ if (noside == EVAL_AVOID_SIDE_EFFECTS)
+ return value_zero (exp->elts[pc + 1].type, lval_memory);
+ else
+ return value_at (exp->elts[pc + 1].type,
+ (CORE_ADDR) value_as_long (arg1));
+
+ case UNOP_PREINCREMENT:
+ arg1 = evaluate_subexp (expect_type, exp, pos, noside);
+ if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
+ return arg1;
+ else if (unop_user_defined_p (op, arg1))
+ {
+ return value_x_unop (arg1, op);
+ }
+ else
+ {
+ arg2 = value_add (arg1, value_from_long (builtin_type_char,
+ (LONGEST) 1));
+ return value_assign (arg1, arg2);
+ }
+
+ case UNOP_PREDECREMENT:
+ arg1 = evaluate_subexp (expect_type, exp, pos, noside);
+ if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
+ return arg1;
+ else if (unop_user_defined_p (op, arg1))
+ {
+ return value_x_unop (arg1, op);
+ }
+ else
+ {
+ arg2 = value_sub (arg1, value_from_long (builtin_type_char,
+ (LONGEST) 1));
+ return value_assign (arg1, arg2);
+ }
+
+ case UNOP_POSTINCREMENT:
+ arg1 = evaluate_subexp (expect_type, exp, pos, noside);
+ if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
+ return arg1;
+ else if (unop_user_defined_p (op, arg1))
+ {
+ return value_x_unop (arg1, op);
+ }
+ else
+ {
+ arg2 = value_add (arg1, value_from_long (builtin_type_char,
+ (LONGEST) 1));
+ value_assign (arg1, arg2);
+ return arg1;
+ }
+
+ case UNOP_POSTDECREMENT:
+ arg1 = evaluate_subexp (expect_type, exp, pos, noside);
+ if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
+ return arg1;
+ else if (unop_user_defined_p (op, arg1))
+ {
+ return value_x_unop (arg1, op);
+ }
+ else
+ {
+ arg2 = value_sub (arg1, value_from_long (builtin_type_char,
+ (LONGEST) 1));
+ value_assign (arg1, arg2);
+ return arg1;
+ }
+
+ case OP_THIS:
+ (*pos) += 1;
+ return value_of_this (1);
+
+ default:
+ error ("internal error: I do not know how to evaluate what you gave me");
+ }
+
+ nosideret:
+ return value_from_long (builtin_type_long, (LONGEST) 1);
+}
+
+/* Evaluate a subexpression of EXP, at index *POS,
+ and return the address of that subexpression.
+ Advance *POS over the subexpression.
+ If the subexpression isn't an lvalue, get an error.
+ NOSIDE may be EVAL_AVOID_SIDE_EFFECTS;
+ then only the type of the result need be correct. */
+
+static value
+evaluate_subexp_for_address (exp, pos, noside)
+ register struct expression *exp;
+ register int *pos;
+ enum noside noside;
+{
+ enum exp_opcode op;
+ register int pc;
+
+ pc = (*pos);
+ op = exp->elts[pc].opcode;
+
+ switch (op)
+ {
+ case UNOP_IND:
+ (*pos)++;
+ return evaluate_subexp (0, exp, pos, noside);
+
+ case UNOP_MEMVAL:
+ (*pos) += 3;
+ return value_cast (lookup_pointer_type (exp->elts[pc + 1].type),
+ evaluate_subexp (0, exp, pos, noside));
+
+ case OP_VAR_VALUE:
+ (*pos) += 3;
+ if (noside == EVAL_AVOID_SIDE_EFFECTS)
+ {
+ struct type *type =
+ lookup_pointer_type (SYMBOL_TYPE (exp->elts[pc + 1].symbol));
+ enum address_class sym_class =
+ SYMBOL_CLASS (exp->elts[pc + 1].symbol);
+
+ if (sym_class == LOC_CONST
+ || sym_class == LOC_CONST_BYTES
+ || sym_class == LOC_REGISTER
+ || sym_class == LOC_REGPARM)
+ error ("Attempt to take address of register or constant.");
+
+ return
+ value_zero (type, not_lval);
+ }
+ else
+ return locate_var_value (exp->elts[pc + 1].symbol, (CORE_ADDR) 0);
+
+ default:
+ if (noside == EVAL_AVOID_SIDE_EFFECTS)
+ {
+ value x = evaluate_subexp (0, exp, pos, noside);
+ if (VALUE_LVAL (x) == lval_memory)
+ return value_zero (TYPE_POINTER_TYPE (VALUE_TYPE (x)),
+ not_lval);
+ else
+ error ("Attempt to take address of non-lval");
+ }
+ return value_addr (evaluate_subexp (0, exp, pos, noside));
+ }
+}
+
+/* Evaluate like `evaluate_subexp' except coercing arrays to pointers.
+ When used in contexts where arrays will be coerced anyway,
+ this is equivalent to `evaluate_subexp'
+ but much faster because it avoids actually fetching array contents. */
+
+static value
+evaluate_subexp_with_coercion (exp, pos, noside)
+ register struct expression *exp;
+ register int *pos;
+ enum noside noside;
+{
+ register enum exp_opcode op;
+ register int pc;
+ register value val;
+
+ pc = (*pos);
+ op = exp->elts[pc].opcode;
+
+ switch (op)
+ {
+ case OP_VAR_VALUE:
+ if (TYPE_CODE (SYMBOL_TYPE (exp->elts[pc + 1].symbol)) == TYPE_CODE_ARRAY)
+ {
+ (*pos) += 3;
+ val = locate_var_value (exp->elts[pc + 1].symbol, (CORE_ADDR) 0);
+ return value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (SYMBOL_TYPE (exp->elts[pc + 1].symbol))),
+ val);
+ }
+ }
+
+ return evaluate_subexp (0, exp, pos, noside);
+}
+
+/* Evaluate a subexpression of EXP, at index *POS,
+ and return a value for the size of that subexpression.
+ Advance *POS over the subexpression. */
+
+static value
+evaluate_subexp_for_sizeof (exp, pos)
+ register struct expression *exp;
+ register int *pos;
+{
+ enum exp_opcode op;
+ register int pc;
+ value val;
+
+ pc = (*pos);
+ op = exp->elts[pc].opcode;
+
+ switch (op)
+ {
+ /* This case is handled specially
+ so that we avoid creating a value for the result type.
+ If the result type is very big, it's desirable not to
+ create a value unnecessarily. */
+ case UNOP_IND:
+ (*pos)++;
+ val = evaluate_subexp (0, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
+ return value_from_long (builtin_type_int, (LONGEST)
+ TYPE_LENGTH (TYPE_TARGET_TYPE (VALUE_TYPE (val))));
+
+ case UNOP_MEMVAL:
+ (*pos) += 3;
+ return value_from_long (builtin_type_int,
+ (LONGEST) TYPE_LENGTH (exp->elts[pc + 1].type));
+
+ case OP_VAR_VALUE:
+ (*pos) += 3;
+ return value_from_long (builtin_type_int,
+ (LONGEST) TYPE_LENGTH (SYMBOL_TYPE (exp->elts[pc + 1].symbol)));
+
+ default:
+ val = evaluate_subexp (0, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
+ return value_from_long (builtin_type_int,
+ (LONGEST) TYPE_LENGTH (VALUE_TYPE (val)));
+ }
+}
diff --git a/gnu/usr.bin/kgdb/expprint.c b/gnu/usr.bin/kgdb/expprint.c
new file mode 100644
index 000000000000..2c63cf8928cb
--- /dev/null
+++ b/gnu/usr.bin/kgdb/expprint.c
@@ -0,0 +1,324 @@
+/* Print in infix form a struct expression.
+ Copyright (C) 1986, 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include <stdio.h>
+#include "defs.h"
+#include "param.h"
+#include "symtab.h"
+#include "expression.h"
+#include "value.h"
+
+
+/* These codes indicate operator precedences, least tightly binding first. */
+/* Adding 1 to a precedence value is done for binary operators,
+ on the operand which is more tightly bound, so that operators
+ of equal precedence within that operand will get parentheses. */
+/* PREC_HYPER and PREC_ABOVE_COMMA are not the precedence of any operator;
+ they are used as the "surrounding precedence" to force
+ various kinds of things to be parenthesized. */
+enum precedence
+{ PREC_NULL, PREC_COMMA, PREC_ABOVE_COMMA, PREC_ASSIGN, PREC_OR, PREC_AND,
+ PREC_LOGIOR, PREC_LOGAND, PREC_LOGXOR, PREC_EQUAL, PREC_ORDER,
+ PREC_SHIFT, PREC_ADD, PREC_MUL, PREC_REPEAT,
+ PREC_HYPER, PREC_PREFIX, PREC_SUFFIX };
+
+/* Table mapping opcodes into strings for printing operators
+ and precedences of the operators. */
+
+struct op_print
+{
+ char *string;
+ enum exp_opcode opcode;
+ /* Precedence of operator. These values are used only by comparisons. */
+ enum precedence precedence;
+ int right_assoc;
+};
+
+static struct op_print op_print_tab[] =
+ {
+ {",", BINOP_COMMA, PREC_COMMA, 0},
+ {"=", BINOP_ASSIGN, PREC_ASSIGN, 1},
+ {"||", BINOP_OR, PREC_OR, 0},
+ {"&&", BINOP_AND, PREC_AND, 0},
+ {"|", BINOP_LOGIOR, PREC_LOGIOR, 0},
+ {"&", BINOP_LOGAND, PREC_LOGAND, 0},
+ {"^", BINOP_LOGXOR, PREC_LOGXOR, 0},
+ {"==", BINOP_EQUAL, PREC_EQUAL, 0},
+ {"!=", BINOP_NOTEQUAL, PREC_EQUAL, 0},
+ {"<=", BINOP_LEQ, PREC_ORDER, 0},
+ {">=", BINOP_GEQ, PREC_ORDER, 0},
+ {">", BINOP_GTR, PREC_ORDER, 0},
+ {"<", BINOP_LESS, PREC_ORDER, 0},
+ {">>", BINOP_RSH, PREC_SHIFT, 0},
+ {"<<", BINOP_LSH, PREC_SHIFT, 0},
+ {"+", BINOP_ADD, PREC_ADD, 0},
+ {"-", BINOP_SUB, PREC_ADD, 0},
+ {"*", BINOP_MUL, PREC_MUL, 0},
+ {"/", BINOP_DIV, PREC_MUL, 0},
+ {"%", BINOP_REM, PREC_MUL, 0},
+ {"@", BINOP_REPEAT, PREC_REPEAT, 0},
+ {"-", UNOP_NEG, PREC_PREFIX, 0},
+ {"!", UNOP_ZEROP, PREC_PREFIX, 0},
+ {"~", UNOP_LOGNOT, PREC_PREFIX, 0},
+ {"*", UNOP_IND, PREC_PREFIX, 0},
+ {"&", UNOP_ADDR, PREC_PREFIX, 0},
+ {"sizeof ", UNOP_SIZEOF, PREC_PREFIX, 0},
+ {"++", UNOP_PREINCREMENT, PREC_PREFIX, 0},
+ {"--", UNOP_PREDECREMENT, PREC_PREFIX, 0},
+ /* C++ */
+ {"::", BINOP_SCOPE, PREC_PREFIX, 0},
+ };
+
+static void print_subexp ();
+
+void
+print_expression (exp, stream)
+ struct expression *exp;
+ FILE *stream;
+{
+ int pc = 0;
+ print_subexp (exp, &pc, stream, PREC_NULL);
+}
+
+/* Print the subexpression of EXP that starts in position POS, on STREAM.
+ PREC is the precedence of the surrounding operator;
+ if the precedence of the main operator of this subexpression is less,
+ parentheses are needed here. */
+
+static void
+print_subexp (exp, pos, stream, prec)
+ register struct expression *exp;
+ register int *pos;
+ FILE *stream;
+ enum precedence prec;
+{
+ register int tem;
+ register int pc;
+ int nargs;
+ register char *op_str;
+ int assign_modify = 0;
+ enum exp_opcode opcode;
+ enum precedence myprec;
+ /* Set to 1 for a right-associative operator. */
+ int assoc;
+
+ pc = (*pos)++;
+ opcode = exp->elts[pc].opcode;
+ switch (opcode)
+ {
+ case OP_SCOPE:
+ myprec = PREC_PREFIX;
+ assoc = 0;
+ (*pos) += 2;
+ print_subexp (exp, pos, stream, (int) myprec + assoc);
+ fprintf (stream, " :: ");
+ nargs = strlen (&exp->elts[pc + 2].string);
+ (*pos) += 1 + (nargs + sizeof (union exp_element)) / sizeof (union exp_element);
+
+ fprintf (stream, &exp->elts[pc + 2].string);
+ return;
+
+ case OP_LONG:
+ (*pos) += 3;
+ value_print (value_from_long (exp->elts[pc + 1].type,
+ exp->elts[pc + 2].longconst),
+ stream, 0, Val_no_prettyprint);
+ return;
+
+ case OP_DOUBLE:
+ (*pos) += 3;
+ value_print (value_from_double (exp->elts[pc + 1].type,
+ exp->elts[pc + 2].doubleconst),
+ stream, 0, Val_no_prettyprint);
+ return;
+
+ case OP_VAR_VALUE:
+ (*pos) += 2;
+ fprintf (stream, "%s", SYMBOL_NAME (exp->elts[pc + 1].symbol));
+ return;
+
+ case OP_LAST:
+ (*pos) += 2;
+ fprintf (stream, "$%d", (int) exp->elts[pc + 1].longconst);
+ return;
+
+ case OP_REGISTER:
+ (*pos) += 2;
+ fprintf (stream, "$%s", reg_names[exp->elts[pc + 1].longconst]);
+ return;
+
+ case OP_INTERNALVAR:
+ (*pos) += 2;
+ fprintf (stream, "$%s",
+ internalvar_name (exp->elts[pc + 1].internalvar));
+ return;
+
+ case OP_FUNCALL:
+ (*pos) += 2;
+ nargs = exp->elts[pc + 1].longconst;
+ print_subexp (exp, pos, stream, PREC_SUFFIX);
+ fprintf (stream, " (");
+ for (tem = 0; tem < nargs; tem++)
+ {
+ if (tem > 0)
+ fprintf (stream, ", ");
+ print_subexp (exp, pos, stream, PREC_ABOVE_COMMA);
+ }
+ fprintf (stream, ")");
+ return;
+
+ case OP_STRING:
+ nargs = strlen (&exp->elts[pc + 1].string);
+ (*pos) += 2 + (nargs + sizeof (union exp_element)) / sizeof (union exp_element);
+ fprintf (stream, "\"");
+ for (tem = 0; tem < nargs; tem++)
+ printchar ((&exp->elts[pc + 1].string)[tem], stream, '"');
+ fprintf (stream, "\"");
+ return;
+
+ case TERNOP_COND:
+ if ((int) prec > (int) PREC_COMMA)
+ fprintf (stream, "(");
+ /* Print the subexpressions, forcing parentheses
+ around any binary operations within them.
+ This is more parentheses than are strictly necessary,
+ but it looks clearer. */
+ print_subexp (exp, pos, stream, PREC_HYPER);
+ fprintf (stream, " ? ");
+ print_subexp (exp, pos, stream, PREC_HYPER);
+ fprintf (stream, " : ");
+ print_subexp (exp, pos, stream, PREC_HYPER);
+ if ((int) prec > (int) PREC_COMMA)
+ fprintf (stream, ")");
+ return;
+
+ case STRUCTOP_STRUCT:
+ tem = strlen (&exp->elts[pc + 1].string);
+ (*pos) += 2 + (tem + sizeof (union exp_element)) / sizeof (union exp_element);
+ print_subexp (exp, pos, stream, PREC_SUFFIX);
+ fprintf (stream, ".%s", &exp->elts[pc + 1].string);
+ return;
+
+ case STRUCTOP_PTR:
+ tem = strlen (&exp->elts[pc + 1].string);
+ (*pos) += 2 + (tem + sizeof (union exp_element)) / sizeof (union exp_element);
+ print_subexp (exp, pos, stream, PREC_SUFFIX);
+ fprintf (stream, "->%s", &exp->elts[pc + 1].string);
+ return;
+
+ case BINOP_SUBSCRIPT:
+ print_subexp (exp, pos, stream, PREC_SUFFIX);
+ fprintf (stream, "[");
+ print_subexp (exp, pos, stream, PREC_ABOVE_COMMA);
+ fprintf (stream, "]");
+ return;
+
+ case UNOP_POSTINCREMENT:
+ print_subexp (exp, pos, stream, PREC_SUFFIX);
+ fprintf (stream, "++");
+ return;
+
+ case UNOP_POSTDECREMENT:
+ print_subexp (exp, pos, stream, PREC_SUFFIX);
+ fprintf (stream, "--");
+ return;
+
+ case UNOP_CAST:
+ (*pos) += 2;
+ if ((int) prec > (int) PREC_PREFIX)
+ fprintf (stream, "(");
+ fprintf (stream, "(");
+ type_print (exp->elts[pc + 1].type, "", stream, 0);
+ fprintf (stream, ") ");
+ print_subexp (exp, pos, stream, PREC_PREFIX);
+ if ((int) prec > (int) PREC_PREFIX)
+ fprintf (stream, ")");
+ return;
+
+ case UNOP_MEMVAL:
+ (*pos) += 2;
+ if ((int) prec > (int) PREC_PREFIX)
+ fprintf (stream, "(");
+ fprintf (stream, "{");
+ type_print (exp->elts[pc + 1].type, "", stream, 0);
+ fprintf (stream, "} ");
+ print_subexp (exp, pos, stream, PREC_PREFIX);
+ if ((int) prec > (int) PREC_PREFIX)
+ fprintf (stream, ")");
+ return;
+
+ case BINOP_ASSIGN_MODIFY:
+ opcode = exp->elts[pc + 1].opcode;
+ (*pos) += 2;
+ myprec = PREC_ASSIGN;
+ assoc = 1;
+ assign_modify = 1;
+ for (tem = 0; tem < sizeof op_print_tab / sizeof op_print_tab[0]; tem++)
+ if (op_print_tab[tem].opcode == opcode)
+ {
+ op_str = op_print_tab[tem].string;
+ break;
+ }
+
+ case OP_THIS:
+ ++(*pos);
+ fprintf (stream, "this");
+ return;
+
+ default:
+ for (tem = 0; tem < sizeof op_print_tab / sizeof op_print_tab[0]; tem++)
+ if (op_print_tab[tem].opcode == opcode)
+ {
+ op_str = op_print_tab[tem].string;
+ myprec = op_print_tab[tem].precedence;
+ assoc = op_print_tab[tem].right_assoc;
+ break;
+ }
+ }
+
+ if ((int) myprec < (int) prec)
+ fprintf (stream, "(");
+ if ((int) opcode > (int) BINOP_END)
+ {
+ /* Unary prefix operator. */
+ fprintf (stream, "%s", op_str);
+ print_subexp (exp, pos, stream, PREC_PREFIX);
+ }
+ else
+ {
+ /* Binary operator. */
+ /* Print left operand.
+ If operator is right-associative,
+ increment precedence for this operand. */
+ print_subexp (exp, pos, stream, (int) myprec + assoc);
+ /* Print the operator itself. */
+ if (assign_modify)
+ fprintf (stream, " %s= ", op_str);
+ else if (op_str[0] == ',')
+ fprintf (stream, "%s ", op_str);
+ else
+ fprintf (stream, " %s ", op_str);
+ /* Print right operand.
+ If operator is left-associative,
+ increment precedence for this operand. */
+ print_subexp (exp, pos, stream, (int) myprec + !assoc);
+ }
+ if ((int) myprec < (int) prec)
+ fprintf (stream, ")");
+}
diff --git a/gnu/usr.bin/kgdb/expread.y b/gnu/usr.bin/kgdb/expread.y
new file mode 100644
index 000000000000..96a12c48c064
--- /dev/null
+++ b/gnu/usr.bin/kgdb/expread.y
@@ -0,0 +1,1782 @@
+/*-
+ * This code is derived from software copyrighted by the Free Software
+ * Foundation.
+ *
+ * Modified 1991 by Donn Seeley at UUNET Technologies, Inc.
+ * Modified 1990 by Van Jacobson at Lawrence Berkeley Laboratory.
+ */
+
+/* Parse C expressions for GDB.
+ Copyright (C) 1986, 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+/* Parse a C expression from text in a string,
+ and return the result as a struct expression pointer.
+ That structure contains arithmetic operations in reverse polish,
+ with constants represented by operations that are followed by special data.
+ See expression.h for the details of the format.
+ What is important here is that it can be built up sequentially
+ during the process of parsing; the lower levels of the tree always
+ come first in the result. */
+
+%{
+#ifndef lint
+static char sccsid[] = "@(#)expread.y 6.3 (Berkeley) 5/8/91";
+#endif /* not lint */
+
+#include <stdio.h>
+#include "defs.h"
+#include "param.h"
+#include "symtab.h"
+#include "frame.h"
+#include "expression.h"
+
+#include <a.out.h>
+
+static struct expression *expout;
+static int expout_size;
+static int expout_ptr;
+
+static int yylex ();
+static void yyerror ();
+static void write_exp_elt ();
+static void write_exp_elt_opcode ();
+static void write_exp_elt_sym ();
+static void write_exp_elt_longcst ();
+static void write_exp_elt_dblcst ();
+static void write_exp_elt_type ();
+static void write_exp_elt_intern ();
+static void write_exp_string ();
+static void start_arglist ();
+static int end_arglist ();
+static void free_funcalls ();
+static char *copy_name ();
+
+/* If this is nonzero, this block is used as the lexical context
+ for symbol names. */
+
+static struct block *expression_context_block;
+
+/* The innermost context required by the stack and register variables
+ we've encountered so far. */
+struct block *innermost_block;
+
+/* The block in which the most recently discovered symbol was found. */
+struct block *block_found;
+
+/* Number of arguments seen so far in innermost function call. */
+static int arglist_len;
+
+/* Data structure for saving values of arglist_len
+ for function calls whose arguments contain other function calls. */
+
+struct funcall
+ {
+ struct funcall *next;
+ int arglist_len;
+ };
+
+struct funcall *funcall_chain;
+
+/* This kind of datum is used to represent the name
+ of a symbol token. */
+
+struct stoken
+ {
+ char *ptr;
+ int length;
+ };
+
+/* For parsing of complicated types.
+ An array should be preceded in the list by the size of the array. */
+enum type_pieces
+ {tp_end = -1, tp_pointer, tp_reference, tp_array, tp_function};
+static enum type_pieces *type_stack;
+static int type_stack_depth, type_stack_size;
+
+static void push_type ();
+static enum type_pieces pop_type ();
+
+/* Allow debugging of parsing. */
+#define YYDEBUG 1
+%}
+
+/* Although the yacc "value" of an expression is not used,
+ since the result is stored in the structure being created,
+ other node types do have values. */
+
+%union
+ {
+ LONGEST lval;
+ unsigned LONGEST ulval;
+ double dval;
+ struct symbol *sym;
+ struct type *tval;
+ struct stoken sval;
+ int voidval;
+ struct block *bval;
+ enum exp_opcode opcode;
+ struct internalvar *ivar;
+
+ struct type **tvec;
+ int *ivec;
+ }
+
+%type <voidval> exp exp1 start variable
+%type <tval> type typebase
+%type <tvec> nonempty_typelist
+%type <bval> block
+
+/* Fancy type parsing. */
+%type <voidval> func_mod direct_abs_decl abs_decl
+%type <tval> ptype
+%type <lval> array_mod
+
+%token <lval> INT CHAR
+%token <ulval> UINT
+%token <dval> FLOAT
+
+/* Both NAME and TYPENAME tokens represent symbols in the input,
+ and both convey their data as strings.
+ But a TYPENAME is a string that happens to be defined as a typedef
+ or builtin type name (such as int or char)
+ and a NAME is any other symbol.
+
+ Contexts where this distinction is not important can use the
+ nonterminal "name", which matches either NAME or TYPENAME. */
+
+%token <sval> NAME TYPENAME BLOCKNAME STRING
+%type <sval> name name_not_typename typename
+
+%token STRUCT UNION ENUM SIZEOF UNSIGNED COLONCOLON
+
+/* Special type cases, put in to allow the parser to distinguish different
+ legal basetypes. */
+%token SIGNED LONG SHORT INT_KEYWORD
+
+%token <lval> LAST REGNAME
+
+%token <ivar> VARIABLE
+
+%token <opcode> ASSIGN_MODIFY
+
+/* C++ */
+%token THIS
+
+%left ','
+%left ABOVE_COMMA
+%right '=' ASSIGN_MODIFY
+%right '?'
+%left OR
+%left AND
+%left '|'
+%left '^'
+%left '&'
+%left EQUAL NOTEQUAL
+%left '<' '>' LEQ GEQ
+%left LSH RSH
+%left '@'
+%left '+' '-'
+%left '*' '/' '%'
+%right UNARY INCREMENT DECREMENT
+%right ARROW '.' '[' '('
+%left COLONCOLON
+
+%%
+
+start : exp1
+ ;
+
+/* Expressions, including the comma operator. */
+exp1 : exp
+ | exp1 ',' exp
+ { write_exp_elt_opcode (BINOP_COMMA); }
+ ;
+
+/* Expressions, not including the comma operator. */
+exp : '*' exp %prec UNARY
+ { write_exp_elt_opcode (UNOP_IND); }
+
+exp : '&' exp %prec UNARY
+ { write_exp_elt_opcode (UNOP_ADDR); }
+
+exp : '-' exp %prec UNARY
+ { write_exp_elt_opcode (UNOP_NEG); }
+ ;
+
+exp : '!' exp %prec UNARY
+ { write_exp_elt_opcode (UNOP_ZEROP); }
+ ;
+
+exp : '~' exp %prec UNARY
+ { write_exp_elt_opcode (UNOP_LOGNOT); }
+ ;
+
+exp : INCREMENT exp %prec UNARY
+ { write_exp_elt_opcode (UNOP_PREINCREMENT); }
+ ;
+
+exp : DECREMENT exp %prec UNARY
+ { write_exp_elt_opcode (UNOP_PREDECREMENT); }
+ ;
+
+exp : exp INCREMENT %prec UNARY
+ { write_exp_elt_opcode (UNOP_POSTINCREMENT); }
+ ;
+
+exp : exp DECREMENT %prec UNARY
+ { write_exp_elt_opcode (UNOP_POSTDECREMENT); }
+ ;
+
+exp : SIZEOF exp %prec UNARY
+ { write_exp_elt_opcode (UNOP_SIZEOF); }
+ ;
+
+exp : exp ARROW name
+ { write_exp_elt_opcode (STRUCTOP_PTR);
+ write_exp_string ($3);
+ write_exp_elt_opcode (STRUCTOP_PTR); }
+ ;
+
+exp : exp ARROW '*' exp
+ { write_exp_elt_opcode (STRUCTOP_MPTR); }
+ ;
+
+exp : exp '.' name
+ { write_exp_elt_opcode (STRUCTOP_STRUCT);
+ write_exp_string ($3);
+ write_exp_elt_opcode (STRUCTOP_STRUCT); }
+ ;
+
+exp : exp '.' '*' exp
+ { write_exp_elt_opcode (STRUCTOP_MEMBER); }
+ ;
+
+exp : exp '[' exp1 ']'
+ { write_exp_elt_opcode (BINOP_SUBSCRIPT); }
+ ;
+
+exp : exp '('
+ /* This is to save the value of arglist_len
+ being accumulated by an outer function call. */
+ { start_arglist (); }
+ arglist ')' %prec ARROW
+ { write_exp_elt_opcode (OP_FUNCALL);
+ write_exp_elt_longcst ((LONGEST) end_arglist ());
+ write_exp_elt_opcode (OP_FUNCALL); }
+ ;
+
+arglist :
+ ;
+
+arglist : exp
+ { arglist_len = 1; }
+ ;
+
+arglist : arglist ',' exp %prec ABOVE_COMMA
+ { arglist_len++; }
+ ;
+
+exp : '{' type '}' exp %prec UNARY
+ { write_exp_elt_opcode (UNOP_MEMVAL);
+ write_exp_elt_type ($2);
+ write_exp_elt_opcode (UNOP_MEMVAL); }
+ ;
+
+exp : '(' type ')' exp %prec UNARY
+ { write_exp_elt_opcode (UNOP_CAST);
+ write_exp_elt_type ($2);
+ write_exp_elt_opcode (UNOP_CAST); }
+ ;
+
+exp : '(' exp1 ')'
+ { }
+ ;
+
+/* Binary operators in order of decreasing precedence. */
+
+exp : exp '@' exp
+ { write_exp_elt_opcode (BINOP_REPEAT); }
+ ;
+
+exp : exp '*' exp
+ { write_exp_elt_opcode (BINOP_MUL); }
+ ;
+
+exp : exp '/' exp
+ { write_exp_elt_opcode (BINOP_DIV); }
+ ;
+
+exp : exp '%' exp
+ { write_exp_elt_opcode (BINOP_REM); }
+ ;
+
+exp : exp '+' exp
+ { write_exp_elt_opcode (BINOP_ADD); }
+ ;
+
+exp : exp '-' exp
+ { write_exp_elt_opcode (BINOP_SUB); }
+ ;
+
+exp : exp LSH exp
+ { write_exp_elt_opcode (BINOP_LSH); }
+ ;
+
+exp : exp RSH exp
+ { write_exp_elt_opcode (BINOP_RSH); }
+ ;
+
+exp : exp EQUAL exp
+ { write_exp_elt_opcode (BINOP_EQUAL); }
+ ;
+
+exp : exp NOTEQUAL exp
+ { write_exp_elt_opcode (BINOP_NOTEQUAL); }
+ ;
+
+exp : exp LEQ exp
+ { write_exp_elt_opcode (BINOP_LEQ); }
+ ;
+
+exp : exp GEQ exp
+ { write_exp_elt_opcode (BINOP_GEQ); }
+ ;
+
+exp : exp '<' exp
+ { write_exp_elt_opcode (BINOP_LESS); }
+ ;
+
+exp : exp '>' exp
+ { write_exp_elt_opcode (BINOP_GTR); }
+ ;
+
+exp : exp '&' exp
+ { write_exp_elt_opcode (BINOP_LOGAND); }
+ ;
+
+exp : exp '^' exp
+ { write_exp_elt_opcode (BINOP_LOGXOR); }
+ ;
+
+exp : exp '|' exp
+ { write_exp_elt_opcode (BINOP_LOGIOR); }
+ ;
+
+exp : exp AND exp
+ { write_exp_elt_opcode (BINOP_AND); }
+ ;
+
+exp : exp OR exp
+ { write_exp_elt_opcode (BINOP_OR); }
+ ;
+
+exp : exp '?' exp ':' exp %prec '?'
+ { write_exp_elt_opcode (TERNOP_COND); }
+ ;
+
+exp : exp '=' exp
+ { write_exp_elt_opcode (BINOP_ASSIGN); }
+ ;
+
+exp : exp ASSIGN_MODIFY exp
+ { write_exp_elt_opcode (BINOP_ASSIGN_MODIFY);
+ write_exp_elt_opcode ($2);
+ write_exp_elt_opcode (BINOP_ASSIGN_MODIFY); }
+ ;
+
+exp : INT
+ { write_exp_elt_opcode (OP_LONG);
+ if ($1 == (int) $1 || $1 == (unsigned int) $1)
+ write_exp_elt_type (builtin_type_int);
+ else
+ write_exp_elt_type (BUILTIN_TYPE_LONGEST);
+ write_exp_elt_longcst ((LONGEST) $1);
+ write_exp_elt_opcode (OP_LONG); }
+ ;
+
+exp : UINT
+ {
+ write_exp_elt_opcode (OP_LONG);
+ if ($1 == (unsigned int) $1)
+ write_exp_elt_type (builtin_type_unsigned_int);
+ else
+ write_exp_elt_type (BUILTIN_TYPE_UNSIGNED_LONGEST);
+ write_exp_elt_longcst ((LONGEST) $1);
+ write_exp_elt_opcode (OP_LONG);
+ }
+ ;
+
+exp : CHAR
+ { write_exp_elt_opcode (OP_LONG);
+ write_exp_elt_type (builtin_type_char);
+ write_exp_elt_longcst ((LONGEST) $1);
+ write_exp_elt_opcode (OP_LONG); }
+ ;
+
+exp : FLOAT
+ { write_exp_elt_opcode (OP_DOUBLE);
+ write_exp_elt_type (builtin_type_double);
+ write_exp_elt_dblcst ($1);
+ write_exp_elt_opcode (OP_DOUBLE); }
+ ;
+
+exp : variable
+ ;
+
+exp : LAST
+ { write_exp_elt_opcode (OP_LAST);
+ write_exp_elt_longcst ((LONGEST) $1);
+ write_exp_elt_opcode (OP_LAST); }
+ ;
+
+exp : REGNAME
+ { write_exp_elt_opcode (OP_REGISTER);
+ write_exp_elt_longcst ((LONGEST) $1);
+ write_exp_elt_opcode (OP_REGISTER); }
+ ;
+
+exp : VARIABLE
+ { write_exp_elt_opcode (OP_INTERNALVAR);
+ write_exp_elt_intern ($1);
+ write_exp_elt_opcode (OP_INTERNALVAR); }
+ ;
+
+exp : SIZEOF '(' type ')' %prec UNARY
+ { write_exp_elt_opcode (OP_LONG);
+ write_exp_elt_type (builtin_type_int);
+ write_exp_elt_longcst ((LONGEST) TYPE_LENGTH ($3));
+ write_exp_elt_opcode (OP_LONG); }
+ ;
+
+exp : STRING
+ { write_exp_elt_opcode (OP_STRING);
+ write_exp_string ($1);
+ write_exp_elt_opcode (OP_STRING); }
+ ;
+
+/* C++. */
+exp : THIS
+ { write_exp_elt_opcode (OP_THIS);
+ write_exp_elt_opcode (OP_THIS); }
+ ;
+
+/* end of C++. */
+
+block : BLOCKNAME
+ {
+ struct symtab *tem = lookup_symtab (copy_name ($1));
+ struct symbol *sym;
+
+ if (tem)
+ $$ = BLOCKVECTOR_BLOCK (BLOCKVECTOR (tem), 1);
+ else
+ {
+ sym = lookup_symbol (copy_name ($1),
+ expression_context_block,
+ VAR_NAMESPACE, 0);
+ if (sym && SYMBOL_CLASS (sym) == LOC_BLOCK)
+ $$ = SYMBOL_BLOCK_VALUE (sym);
+ else
+ error ("No file or function \"%s\".",
+ copy_name ($1));
+ }
+ }
+ ;
+
+block : block COLONCOLON name
+ { struct symbol *tem
+ = lookup_symbol (copy_name ($3), $1, VAR_NAMESPACE, 0);
+ if (!tem || SYMBOL_CLASS (tem) != LOC_BLOCK)
+ error ("No function \"%s\" in specified context.",
+ copy_name ($3));
+ $$ = SYMBOL_BLOCK_VALUE (tem); }
+ ;
+
+variable: block COLONCOLON name
+ { struct symbol *sym;
+ sym = lookup_symbol (copy_name ($3), $1, VAR_NAMESPACE, 0);
+ if (sym == 0)
+ error ("No symbol \"%s\" in specified context.",
+ copy_name ($3));
+ write_exp_elt_opcode (OP_VAR_VALUE);
+ write_exp_elt_sym (sym);
+ write_exp_elt_opcode (OP_VAR_VALUE); }
+ ;
+
+variable: typebase COLONCOLON name
+ {
+ struct type *type = $1;
+ if (TYPE_CODE (type) != TYPE_CODE_STRUCT
+ && TYPE_CODE (type) != TYPE_CODE_UNION)
+ error ("`%s' is not defined as an aggregate type.",
+ TYPE_NAME (type));
+
+ write_exp_elt_opcode (OP_SCOPE);
+ write_exp_elt_type (type);
+ write_exp_string ($3);
+ write_exp_elt_opcode (OP_SCOPE);
+ }
+ | COLONCOLON name
+ {
+ char *name = copy_name ($2);
+ struct symbol *sym;
+ int i;
+
+ sym = lookup_symbol (name, 0, VAR_NAMESPACE, 0);
+ if (sym)
+ {
+ write_exp_elt_opcode (OP_VAR_VALUE);
+ write_exp_elt_sym (sym);
+ write_exp_elt_opcode (OP_VAR_VALUE);
+ break;
+ }
+ for (i = 0; i < misc_function_count; i++)
+ if (!strcmp (misc_function_vector[i].name, name))
+ break;
+
+ if (i < misc_function_count)
+ {
+ enum misc_function_type mft =
+ (enum misc_function_type)
+ misc_function_vector[i].type;
+
+ write_exp_elt_opcode (OP_LONG);
+ write_exp_elt_type (builtin_type_int);
+ write_exp_elt_longcst ((LONGEST) misc_function_vector[i].address);
+ write_exp_elt_opcode (OP_LONG);
+ write_exp_elt_opcode (UNOP_MEMVAL);
+ if (mft == mf_data || mft == mf_bss)
+ write_exp_elt_type (builtin_type_int);
+ else if (mft == mf_text)
+ write_exp_elt_type (lookup_function_type (builtin_type_int));
+ else
+ write_exp_elt_type (builtin_type_char);
+ write_exp_elt_opcode (UNOP_MEMVAL);
+ }
+ else
+ if (symtab_list == 0
+ && partial_symtab_list == 0)
+ error ("No symbol table is loaded. Use the \"symbol-file\" command.");
+ else
+ error ("No symbol \"%s\" in current context.", name);
+ }
+ ;
+
+variable: name_not_typename
+ { struct symbol *sym;
+ int is_a_field_of_this;
+
+ sym = lookup_symbol (copy_name ($1),
+ expression_context_block,
+ VAR_NAMESPACE,
+ &is_a_field_of_this);
+ if (sym)
+ {
+ switch (sym->class)
+ {
+ case LOC_REGISTER:
+ case LOC_ARG:
+ case LOC_LOCAL:
+ if (innermost_block == 0 ||
+ contained_in (block_found,
+ innermost_block))
+ innermost_block = block_found;
+ }
+ write_exp_elt_opcode (OP_VAR_VALUE);
+ write_exp_elt_sym (sym);
+ write_exp_elt_opcode (OP_VAR_VALUE);
+ }
+ else if (is_a_field_of_this)
+ {
+ /* C++: it hangs off of `this'. Must
+ not inadvertently convert from a method call
+ to data ref. */
+ if (innermost_block == 0 ||
+ contained_in (block_found, innermost_block))
+ innermost_block = block_found;
+ write_exp_elt_opcode (OP_THIS);
+ write_exp_elt_opcode (OP_THIS);
+ write_exp_elt_opcode (STRUCTOP_PTR);
+ write_exp_string ($1);
+ write_exp_elt_opcode (STRUCTOP_PTR);
+ }
+ else
+ {
+ register int i;
+ register char *arg = copy_name ($1);
+
+ for (i = 0; i < misc_function_count; i++)
+ if (!strcmp (misc_function_vector[i].name, arg))
+ break;
+
+ if (i < misc_function_count)
+ {
+ enum misc_function_type mft =
+ (enum misc_function_type)
+ misc_function_vector[i].type;
+
+ write_exp_elt_opcode (OP_LONG);
+ write_exp_elt_type (builtin_type_int);
+ write_exp_elt_longcst ((LONGEST) misc_function_vector[i].address);
+ write_exp_elt_opcode (OP_LONG);
+ write_exp_elt_opcode (UNOP_MEMVAL);
+ if (mft == mf_data || mft == mf_bss)
+ write_exp_elt_type (builtin_type_int);
+ else if (mft == mf_text)
+ write_exp_elt_type (lookup_function_type (builtin_type_int));
+ else
+ write_exp_elt_type (builtin_type_char);
+ write_exp_elt_opcode (UNOP_MEMVAL);
+ }
+ else if (symtab_list == 0
+ && partial_symtab_list == 0)
+ error ("No symbol table is loaded. Use the \"symbol-file\" command.");
+ else
+ error ("No symbol \"%s\" in current context.",
+ copy_name ($1));
+ }
+ }
+ ;
+
+
+ptype : typebase
+ | typebase abs_decl
+ {
+ /* This is where the interesting stuff happens. */
+ int done = 0;
+ int array_size;
+ struct type *follow_type = $1;
+
+ while (!done)
+ switch (pop_type ())
+ {
+ case tp_end:
+ done = 1;
+ break;
+ case tp_pointer:
+ follow_type = lookup_pointer_type (follow_type);
+ break;
+ case tp_reference:
+ follow_type = lookup_reference_type (follow_type);
+ break;
+ case tp_array:
+ array_size = (int) pop_type ();
+ if (array_size != -1)
+ follow_type = create_array_type (follow_type,
+ array_size);
+ else
+ follow_type = lookup_pointer_type (follow_type);
+ break;
+ case tp_function:
+ follow_type = lookup_function_type (follow_type);
+ break;
+ }
+ $$ = follow_type;
+ }
+ ;
+
+abs_decl: '*'
+ { push_type (tp_pointer); $$ = 0; }
+ | '*' abs_decl
+ { push_type (tp_pointer); $$ = $2; }
+ | direct_abs_decl
+ ;
+
+direct_abs_decl: '(' abs_decl ')'
+ { $$ = $2; }
+ | direct_abs_decl array_mod
+ {
+ push_type ((enum type_pieces) $2);
+ push_type (tp_array);
+ }
+ | array_mod
+ {
+ push_type ((enum type_pieces) $1);
+ push_type (tp_array);
+ $$ = 0;
+ }
+ | direct_abs_decl func_mod
+ { push_type (tp_function); }
+ | func_mod
+ { push_type (tp_function); }
+ ;
+
+array_mod: '[' ']'
+ { $$ = -1; }
+ | '[' INT ']'
+ { $$ = $2; }
+ ;
+
+func_mod: '(' ')'
+ { $$ = 0; }
+ ;
+
+type : ptype
+ | typebase COLONCOLON '*'
+ { $$ = lookup_member_type (builtin_type_int, $1); }
+ | type '(' typebase COLONCOLON '*' ')'
+ { $$ = lookup_member_type ($1, $3); }
+ | type '(' typebase COLONCOLON '*' ')' '(' ')'
+ { $$ = lookup_member_type
+ (lookup_function_type ($1), $3); }
+ | type '(' typebase COLONCOLON '*' ')' '(' nonempty_typelist ')'
+ { $$ = lookup_member_type
+ (lookup_function_type ($1), $3);
+ free ($8); }
+ ;
+
+typebase
+ : TYPENAME
+ { $$ = lookup_typename (copy_name ($1),
+ expression_context_block, 0); }
+ | INT_KEYWORD
+ { $$ = builtin_type_int; }
+ | LONG
+ { $$ = builtin_type_long; }
+ | SHORT
+ { $$ = builtin_type_short; }
+ | LONG INT_KEYWORD
+ { $$ = builtin_type_long; }
+ | UNSIGNED LONG INT_KEYWORD
+ { $$ = builtin_type_unsigned_long; }
+ | SHORT INT_KEYWORD
+ { $$ = builtin_type_short; }
+ | UNSIGNED SHORT INT_KEYWORD
+ { $$ = builtin_type_unsigned_short; }
+ | STRUCT name
+ { $$ = lookup_struct (copy_name ($2),
+ expression_context_block); }
+ | UNION name
+ { $$ = lookup_union (copy_name ($2),
+ expression_context_block); }
+ | ENUM name
+ { $$ = lookup_enum (copy_name ($2),
+ expression_context_block); }
+ | UNSIGNED typename
+ { $$ = lookup_unsigned_typename (copy_name ($2)); }
+ | UNSIGNED
+ { $$ = builtin_type_unsigned_int; }
+ | SIGNED typename
+ { $$ = lookup_typename (copy_name ($2),
+ expression_context_block, 0); }
+ | SIGNED
+ { $$ = builtin_type_int; }
+ ;
+
+typename: TYPENAME
+ | INT_KEYWORD
+ {
+ $$.ptr = "int";
+ $$.length = 3;
+ }
+ | LONG
+ {
+ $$.ptr = "long";
+ $$.length = 4;
+ }
+ | SHORT
+ {
+ $$.ptr = "short";
+ $$.length = 5;
+ }
+ ;
+
+nonempty_typelist
+ : type
+ { $$ = (struct type **)xmalloc (sizeof (struct type *) * 2);
+ $$[0] = (struct type *)0;
+ $$[1] = $1;
+ }
+ | nonempty_typelist ',' type
+ { int len = sizeof (struct type *) * ++($<ivec>1[0]);
+ $$ = (struct type **)xrealloc ($1, len);
+ $$[$<ivec>$[0]] = $3;
+ }
+ ;
+
+name : NAME
+ | BLOCKNAME
+ | TYPENAME
+ ;
+
+name_not_typename : NAME
+ | BLOCKNAME
+ ;
+
+%%
+
+/* Begin counting arguments for a function call,
+ saving the data about any containing call. */
+
+static void
+start_arglist ()
+{
+ register struct funcall *new = (struct funcall *) xmalloc (sizeof (struct funcall));
+
+ new->next = funcall_chain;
+ new->arglist_len = arglist_len;
+ arglist_len = 0;
+ funcall_chain = new;
+}
+
+/* Return the number of arguments in a function call just terminated,
+ and restore the data for the containing function call. */
+
+static int
+end_arglist ()
+{
+ register int val = arglist_len;
+ register struct funcall *call = funcall_chain;
+ funcall_chain = call->next;
+ arglist_len = call->arglist_len;
+ free (call);
+ return val;
+}
+
+/* Free everything in the funcall chain.
+ Used when there is an error inside parsing. */
+
+static void
+free_funcalls ()
+{
+ register struct funcall *call, *next;
+
+ for (call = funcall_chain; call; call = next)
+ {
+ next = call->next;
+ free (call);
+ }
+}
+
+/* This page contains the functions for adding data to the struct expression
+ being constructed. */
+
+/* Add one element to the end of the expression. */
+
+/* To avoid a bug in the Sun 4 compiler, we pass things that can fit into
+ a register through here */
+
+static void
+write_exp_elt (expelt)
+ union exp_element expelt;
+{
+ if (expout_ptr >= expout_size)
+ {
+ expout_size *= 2;
+ expout = (struct expression *) xrealloc (expout,
+ sizeof (struct expression)
+ + expout_size * sizeof (union exp_element));
+ }
+ expout->elts[expout_ptr++] = expelt;
+}
+
+static void
+write_exp_elt_opcode (expelt)
+ enum exp_opcode expelt;
+{
+ union exp_element tmp;
+
+ tmp.opcode = expelt;
+
+ write_exp_elt (tmp);
+}
+
+static void
+write_exp_elt_sym (expelt)
+ struct symbol *expelt;
+{
+ union exp_element tmp;
+
+ tmp.symbol = expelt;
+
+ write_exp_elt (tmp);
+}
+
+static void
+write_exp_elt_longcst (expelt)
+ LONGEST expelt;
+{
+ union exp_element tmp;
+
+ tmp.longconst = expelt;
+
+ write_exp_elt (tmp);
+}
+
+static void
+write_exp_elt_dblcst (expelt)
+ double expelt;
+{
+ union exp_element tmp;
+
+ tmp.doubleconst = expelt;
+
+ write_exp_elt (tmp);
+}
+
+static void
+write_exp_elt_type (expelt)
+ struct type *expelt;
+{
+ union exp_element tmp;
+
+ tmp.type = expelt;
+
+ write_exp_elt (tmp);
+}
+
+static void
+write_exp_elt_intern (expelt)
+ struct internalvar *expelt;
+{
+ union exp_element tmp;
+
+ tmp.internalvar = expelt;
+
+ write_exp_elt (tmp);
+}
+
+/* Add a string constant to the end of the expression.
+ Follow it by its length in bytes, as a separate exp_element. */
+
+static void
+write_exp_string (str)
+ struct stoken str;
+{
+ register int len = str.length;
+ register int lenelt
+ = (len + sizeof (union exp_element)) / sizeof (union exp_element);
+
+ expout_ptr += lenelt;
+
+ if (expout_ptr >= expout_size)
+ {
+ expout_size = max (expout_size * 2, expout_ptr + 10);
+ expout = (struct expression *)
+ xrealloc (expout, (sizeof (struct expression)
+ + (expout_size * sizeof (union exp_element))));
+ }
+ bcopy (str.ptr, (char *) &expout->elts[expout_ptr - lenelt], len);
+ ((char *) &expout->elts[expout_ptr - lenelt])[len] = 0;
+ write_exp_elt_longcst ((LONGEST) len);
+}
+
+/* During parsing of a C expression, the pointer to the next character
+ is in this variable. */
+
+static char *lexptr;
+
+/* Tokens that refer to names do so with explicit pointer and length,
+ so they can share the storage that lexptr is parsing.
+
+ When it is necessary to pass a name to a function that expects
+ a null-terminated string, the substring is copied out
+ into a block of storage that namecopy points to.
+
+ namecopy is allocated once, guaranteed big enough, for each parsing. */
+
+static char *namecopy;
+
+/* Current depth in parentheses within the expression. */
+
+static int paren_depth;
+
+/* Nonzero means stop parsing on first comma (if not within parentheses). */
+
+static int comma_terminates;
+
+/* Take care of parsing a number (anything that starts with a digit).
+ Set yylval and return the token type; update lexptr.
+ LEN is the number of characters in it. */
+
+/*** Needs some error checking for the float case ***/
+
+static int
+parse_number (olen)
+ int olen;
+{
+ register char *p = lexptr;
+ register LONGEST n = 0;
+ register int c;
+ register int base = 10;
+ register int len = olen;
+ char *err_copy;
+ int unsigned_p = 0;
+
+ extern double atof ();
+
+ for (c = 0; c < len; c++)
+ if (p[c] == '.')
+ {
+ /* It's a float since it contains a point. */
+ yylval.dval = atof (p);
+ lexptr += len;
+ return FLOAT;
+ }
+
+ if (len >= 3 && (!strncmp (p, "0x", 2) || !strncmp (p, "0X", 2)))
+ {
+ p += 2;
+ base = 16;
+ len -= 2;
+ }
+ else if (*p == '0')
+ base = 8;
+
+ while (len-- > 0)
+ {
+ c = *p++;
+ if (c >= 'A' && c <= 'Z') c += 'a' - 'A';
+ if (c != 'l' && c != 'u')
+ n *= base;
+ if (c >= '0' && c <= '9')
+ n += c - '0';
+ else
+ {
+ if (base == 16 && c >= 'a' && c <= 'f')
+ n += c - 'a' + 10;
+ else if (len == 0 && c == 'l')
+ ;
+ else if (len == 0 && c == 'u')
+ unsigned_p = 1;
+ else if (base == 10 && len != 0 && (c == 'e' || c == 'E'))
+ {
+ /* Scientific notation, where we are unlucky enough not
+ to have a '.' in the string. */
+ yylval.dval = atof (lexptr);
+ lexptr += olen;
+ return FLOAT;
+ }
+ else
+ {
+ err_copy = (char *) alloca (olen + 1);
+ bcopy (lexptr, err_copy, olen);
+ err_copy[olen] = 0;
+ error ("Invalid number \"%s\".", err_copy);
+ }
+ }
+ }
+
+ lexptr = p;
+ if (unsigned_p)
+ {
+ yylval.ulval = n;
+ return UINT;
+ }
+ else
+ {
+ yylval.lval = n;
+ return INT;
+ }
+}
+
+struct token
+{
+ char *operator;
+ int token;
+ enum exp_opcode opcode;
+};
+
+static struct token tokentab3[] =
+ {
+ {">>=", ASSIGN_MODIFY, BINOP_RSH},
+ {"<<=", ASSIGN_MODIFY, BINOP_LSH}
+ };
+
+static struct token tokentab2[] =
+ {
+ {"+=", ASSIGN_MODIFY, BINOP_ADD},
+ {"-=", ASSIGN_MODIFY, BINOP_SUB},
+ {"*=", ASSIGN_MODIFY, BINOP_MUL},
+ {"/=", ASSIGN_MODIFY, BINOP_DIV},
+ {"%=", ASSIGN_MODIFY, BINOP_REM},
+ {"|=", ASSIGN_MODIFY, BINOP_LOGIOR},
+ {"&=", ASSIGN_MODIFY, BINOP_LOGAND},
+ {"^=", ASSIGN_MODIFY, BINOP_LOGXOR},
+ {"++", INCREMENT, BINOP_END},
+ {"--", DECREMENT, BINOP_END},
+ {"->", ARROW, BINOP_END},
+ {"&&", AND, BINOP_END},
+ {"||", OR, BINOP_END},
+ {"::", COLONCOLON, BINOP_END},
+ {"<<", LSH, BINOP_END},
+ {">>", RSH, BINOP_END},
+ {"==", EQUAL, BINOP_END},
+ {"!=", NOTEQUAL, BINOP_END},
+ {"<=", LEQ, BINOP_END},
+ {">=", GEQ, BINOP_END}
+ };
+
+/* assign machine-independent names to certain registers
+ * (unless overridden by the REGISTER_NAMES table)
+ */
+struct std_regs {
+ char *name;
+ int regnum;
+} std_regs[] = {
+#ifdef PC_REGNUM
+ { "pc", PC_REGNUM },
+#endif
+#ifdef FP_REGNUM
+ { "fp", FP_REGNUM },
+#endif
+#ifdef SP_REGNUM
+ { "sp", SP_REGNUM },
+#endif
+#ifdef PS_REGNUM
+ { "ps", PS_REGNUM },
+#endif
+};
+
+#define NUM_STD_REGS (sizeof std_regs / sizeof std_regs[0])
+
+/* Read one token, getting characters through lexptr. */
+
+static int
+yylex ()
+{
+ register int c;
+ register int namelen;
+ register int i;
+ register char *tokstart;
+
+ retry:
+
+ tokstart = lexptr;
+ /* See if it is a special token of length 3. */
+ for (i = 0; i < sizeof tokentab3 / sizeof tokentab3[0]; i++)
+ if (!strncmp (tokstart, tokentab3[i].operator, 3))
+ {
+ lexptr += 3;
+ yylval.opcode = tokentab3[i].opcode;
+ return tokentab3[i].token;
+ }
+
+ /* See if it is a special token of length 2. */
+ for (i = 0; i < sizeof tokentab2 / sizeof tokentab2[0]; i++)
+ if (!strncmp (tokstart, tokentab2[i].operator, 2))
+ {
+ lexptr += 2;
+ yylval.opcode = tokentab2[i].opcode;
+ return tokentab2[i].token;
+ }
+
+ switch (c = *tokstart)
+ {
+ case 0:
+ return 0;
+
+ case ' ':
+ case '\t':
+ case '\n':
+ lexptr++;
+ goto retry;
+
+ case '\'':
+ lexptr++;
+ c = *lexptr++;
+ if (c == '\\')
+ c = parse_escape (&lexptr);
+ yylval.lval = c;
+ c = *lexptr++;
+ if (c != '\'')
+ error ("Invalid character constant.");
+ return CHAR;
+
+ case '(':
+ paren_depth++;
+ lexptr++;
+ return c;
+
+ case ')':
+ if (paren_depth == 0)
+ return 0;
+ paren_depth--;
+ lexptr++;
+ return c;
+
+ case ',':
+ if (comma_terminates && paren_depth == 0)
+ return 0;
+ lexptr++;
+ return c;
+
+ case '.':
+ /* Might be a floating point number. */
+ if (lexptr[1] >= '0' && lexptr[1] <= '9')
+ break; /* Falls into number code. */
+
+ case '+':
+ case '-':
+ case '*':
+ case '/':
+ case '%':
+ case '|':
+ case '&':
+ case '^':
+ case '~':
+ case '!':
+ case '@':
+ case '<':
+ case '>':
+ case '[':
+ case ']':
+ case '?':
+ case ':':
+ case '=':
+ case '{':
+ case '}':
+ lexptr++;
+ return c;
+
+ case '"':
+ for (namelen = 1; (c = tokstart[namelen]) != '"'; namelen++)
+ if (c == '\\')
+ {
+ c = tokstart[++namelen];
+ if (c >= '0' && c <= '9')
+ {
+ c = tokstart[++namelen];
+ if (c >= '0' && c <= '9')
+ c = tokstart[++namelen];
+ }
+ }
+ yylval.sval.ptr = tokstart + 1;
+ yylval.sval.length = namelen - 1;
+ lexptr += namelen + 1;
+ return STRING;
+ }
+
+ /* Is it a number? */
+ /* Note: We have already dealt with the case of the token '.'.
+ See case '.' above. */
+ if ((c >= '0' && c <= '9') || c == '.')
+ {
+ /* It's a number. */
+ int got_dot = 0, got_e = 0;
+ register char *p = tokstart;
+ int hex = c == '0' && (p[1] == 'x' || p[1] == 'X');
+ if (hex)
+ p += 2;
+ for (;; ++p)
+ {
+ if (!hex && !got_e && (*p == 'e' || *p == 'E'))
+ got_dot = got_e = 1;
+ else if (!hex && !got_dot && *p == '.')
+ got_dot = 1;
+ else if (got_e && (p[-1] == 'e' || p[-1] == 'E')
+ && (*p == '-' || *p == '+'))
+ /* This is the sign of the exponent, not the end of the
+ number. */
+ continue;
+ else if (!got_dot && !got_e && (*p=='l'||*p=='L')){
+ ++p; break;
+ }
+ else if (!got_dot && !got_e && !hex && (*p=='u'||*p=='U')){
+ ++p; break;
+ }
+ else if (*p < '0' || *p > '9'
+ && (!hex || ((*p < 'a' || *p > 'f')
+ && (*p < 'A' || *p > 'F'))))
+ break;
+ }
+ return parse_number (p - tokstart);
+ }
+
+ if (!(c == '_' || c == '$'
+ || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')))
+ /* We must have come across a bad character (e.g. ';'). */
+ error ("Invalid character '%c' in expression.", c);
+
+ /* It's a name. See how long it is. */
+ namelen = 0;
+ for (c = tokstart[namelen];
+ (c == '_' || c == '$' || (c >= '0' && c <= '9')
+ || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'));
+ c = tokstart[++namelen])
+ ;
+
+ /* The token "if" terminates the expression and is NOT
+ removed from the input stream. */
+ if (namelen == 2 && tokstart[0] == 'i' && tokstart[1] == 'f')
+ {
+ return 0;
+ }
+
+ lexptr += namelen;
+
+ /* Handle the tokens $digits; also $ (short for $0) and $$ (short for $$1)
+ and $$digits (equivalent to $<-digits> if you could type that).
+ Make token type LAST, and put the number (the digits) in yylval. */
+
+ if (*tokstart == '$')
+ {
+ register int negate = 0;
+ c = 1;
+ /* Double dollar means negate the number and add -1 as well.
+ Thus $$ alone means -1. */
+ if (namelen >= 2 && tokstart[1] == '$')
+ {
+ negate = 1;
+ c = 2;
+ }
+ if (c == namelen)
+ {
+ /* Just dollars (one or two) */
+ yylval.lval = - negate;
+ return LAST;
+ }
+ /* Is the rest of the token digits? */
+ for (; c < namelen; c++)
+ if (!(tokstart[c] >= '0' && tokstart[c] <= '9'))
+ break;
+ if (c == namelen)
+ {
+ yylval.lval = atoi (tokstart + 1 + negate);
+ if (negate)
+ yylval.lval = - yylval.lval;
+ return LAST;
+ }
+ }
+
+ /* Handle tokens that refer to machine registers:
+ $ followed by a register name. */
+
+ if (*tokstart == '$') {
+ for (c = 0; c < NUM_REGS; c++)
+ if (namelen - 1 == strlen (reg_names[c])
+ && !strncmp (tokstart + 1, reg_names[c], namelen - 1))
+ {
+ yylval.lval = c;
+ return REGNAME;
+ }
+ for (c = 0; c < NUM_STD_REGS; c++)
+ if (namelen - 1 == strlen (std_regs[c].name)
+ && !strncmp (tokstart + 1, std_regs[c].name, namelen - 1))
+ {
+ yylval.lval = std_regs[c].regnum;
+ return REGNAME;
+ }
+ }
+ /* Catch specific keywords. Should be done with a data structure. */
+ switch (namelen)
+ {
+ case 8:
+ if (!strncmp (tokstart, "unsigned", 8))
+ return UNSIGNED;
+ break;
+ case 6:
+ if (!strncmp (tokstart, "struct", 6))
+ return STRUCT;
+ if (!strncmp (tokstart, "signed", 6))
+ return SIGNED;
+ if (!strncmp (tokstart, "sizeof", 6))
+ return SIZEOF;
+ break;
+ case 5:
+ if (!strncmp (tokstart, "union", 5))
+ return UNION;
+ if (!strncmp (tokstart, "short", 5))
+ return SHORT;
+ break;
+ case 4:
+ if (!strncmp (tokstart, "enum", 4))
+ return ENUM;
+ if (!strncmp (tokstart, "long", 4))
+ return LONG;
+ if (!strncmp (tokstart, "this", 4)
+ && lookup_symbol ("$this", expression_context_block,
+ VAR_NAMESPACE, 0))
+ return THIS;
+ break;
+ case 3:
+ if (!strncmp (tokstart, "int", 3))
+ return INT_KEYWORD;
+ break;
+ default:
+ break;
+ }
+
+ yylval.sval.ptr = tokstart;
+ yylval.sval.length = namelen;
+
+ /* Any other names starting in $ are debugger internal variables. */
+
+ if (*tokstart == '$')
+ {
+ yylval.ivar = (struct internalvar *) lookup_internalvar (copy_name (yylval.sval) + 1);
+ return VARIABLE;
+ }
+
+ /* Use token-type BLOCKNAME for symbols that happen to be defined as
+ functions or symtabs. If this is not so, then ...
+ Use token-type TYPENAME for symbols that happen to be defined
+ currently as names of types; NAME for other symbols.
+ The caller is not constrained to care about the distinction. */
+ {
+ char *tmp = copy_name (yylval.sval);
+ struct symbol *sym;
+
+ if (lookup_partial_symtab (tmp))
+ return BLOCKNAME;
+ sym = lookup_symbol (tmp, expression_context_block,
+ VAR_NAMESPACE, 0);
+ if (sym && SYMBOL_CLASS (sym) == LOC_BLOCK)
+ return BLOCKNAME;
+ if (lookup_typename (copy_name (yylval.sval), expression_context_block, 1))
+ return TYPENAME;
+ return NAME;
+ }
+}
+
+static void
+yyerror ()
+{
+ error ("Invalid syntax in expression.");
+}
+
+/* Return a null-terminated temporary copy of the name
+ of a string token. */
+
+static char *
+copy_name (token)
+ struct stoken token;
+{
+ bcopy (token.ptr, namecopy, token.length);
+ namecopy[token.length] = 0;
+ return namecopy;
+}
+
+/* Reverse an expression from suffix form (in which it is constructed)
+ to prefix form (in which we can conveniently print or execute it). */
+
+static void prefixify_subexp ();
+
+static void
+prefixify_expression (expr)
+ register struct expression *expr;
+{
+ register int len = sizeof (struct expression) +
+ expr->nelts * sizeof (union exp_element);
+ register struct expression *temp;
+ register int inpos = expr->nelts, outpos = 0;
+
+ temp = (struct expression *) alloca (len);
+
+ /* Copy the original expression into temp. */
+ bcopy (expr, temp, len);
+
+ prefixify_subexp (temp, expr, inpos, outpos);
+}
+
+/* Return the number of exp_elements in the subexpression of EXPR
+ whose last exp_element is at index ENDPOS - 1 in EXPR. */
+
+static int
+length_of_subexp (expr, endpos)
+ register struct expression *expr;
+ register int endpos;
+{
+ register int oplen = 1;
+ register int args = 0;
+ register int i;
+
+ if (endpos < 0)
+ error ("?error in length_of_subexp");
+
+ i = (int) expr->elts[endpos - 1].opcode;
+
+ switch (i)
+ {
+ /* C++ */
+ case OP_SCOPE:
+ oplen = 4 + ((expr->elts[endpos - 2].longconst
+ + sizeof (union exp_element))
+ / sizeof (union exp_element));
+ break;
+
+ case OP_LONG:
+ case OP_DOUBLE:
+ oplen = 4;
+ break;
+
+ case OP_VAR_VALUE:
+ case OP_LAST:
+ case OP_REGISTER:
+ case OP_INTERNALVAR:
+ oplen = 3;
+ break;
+
+ case OP_FUNCALL:
+ oplen = 3;
+ args = 1 + expr->elts[endpos - 2].longconst;
+ break;
+
+ case UNOP_CAST:
+ case UNOP_MEMVAL:
+ oplen = 3;
+ args = 1;
+ break;
+
+ case STRUCTOP_STRUCT:
+ case STRUCTOP_PTR:
+ args = 1;
+ case OP_STRING:
+ oplen = 3 + ((expr->elts[endpos - 2].longconst
+ + sizeof (union exp_element))
+ / sizeof (union exp_element));
+ break;
+
+ case TERNOP_COND:
+ args = 3;
+ break;
+
+ case BINOP_ASSIGN_MODIFY:
+ oplen = 3;
+ args = 2;
+ break;
+
+ /* C++ */
+ case OP_THIS:
+ oplen = 2;
+ break;
+
+ default:
+ args = 1 + (i < (int) BINOP_END);
+ }
+
+ while (args > 0)
+ {
+ oplen += length_of_subexp (expr, endpos - oplen);
+ args--;
+ }
+
+ return oplen;
+}
+
+/* Copy the subexpression ending just before index INEND in INEXPR
+ into OUTEXPR, starting at index OUTBEG.
+ In the process, convert it from suffix to prefix form. */
+
+static void
+prefixify_subexp (inexpr, outexpr, inend, outbeg)
+ register struct expression *inexpr;
+ struct expression *outexpr;
+ register int inend;
+ int outbeg;
+{
+ register int oplen = 1;
+ register int args = 0;
+ register int i;
+ int *arglens;
+ enum exp_opcode opcode;
+
+ /* Compute how long the last operation is (in OPLEN),
+ and also how many preceding subexpressions serve as
+ arguments for it (in ARGS). */
+
+ opcode = inexpr->elts[inend - 1].opcode;
+ switch (opcode)
+ {
+ /* C++ */
+ case OP_SCOPE:
+ oplen = 4 + ((inexpr->elts[inend - 2].longconst
+ + sizeof (union exp_element))
+ / sizeof (union exp_element));
+ break;
+
+ case OP_LONG:
+ case OP_DOUBLE:
+ oplen = 4;
+ break;
+
+ case OP_VAR_VALUE:
+ case OP_LAST:
+ case OP_REGISTER:
+ case OP_INTERNALVAR:
+ oplen = 3;
+ break;
+
+ case OP_FUNCALL:
+ oplen = 3;
+ args = 1 + inexpr->elts[inend - 2].longconst;
+ break;
+
+ case UNOP_CAST:
+ case UNOP_MEMVAL:
+ oplen = 3;
+ args = 1;
+ break;
+
+ case STRUCTOP_STRUCT:
+ case STRUCTOP_PTR:
+ args = 1;
+ case OP_STRING:
+ oplen = 3 + ((inexpr->elts[inend - 2].longconst
+ + sizeof (union exp_element))
+ / sizeof (union exp_element));
+
+ break;
+
+ case TERNOP_COND:
+ args = 3;
+ break;
+
+ case BINOP_ASSIGN_MODIFY:
+ oplen = 3;
+ args = 2;
+ break;
+
+ /* C++ */
+ case OP_THIS:
+ oplen = 2;
+ break;
+
+ default:
+ args = 1 + ((int) opcode < (int) BINOP_END);
+ }
+
+ /* Copy the final operator itself, from the end of the input
+ to the beginning of the output. */
+ inend -= oplen;
+ bcopy (&inexpr->elts[inend], &outexpr->elts[outbeg],
+ oplen * sizeof (union exp_element));
+ outbeg += oplen;
+
+ /* Find the lengths of the arg subexpressions. */
+ arglens = (int *) alloca (args * sizeof (int));
+ for (i = args - 1; i >= 0; i--)
+ {
+ oplen = length_of_subexp (inexpr, inend);
+ arglens[i] = oplen;
+ inend -= oplen;
+ }
+
+ /* Now copy each subexpression, preserving the order of
+ the subexpressions, but prefixifying each one.
+ In this loop, inend starts at the beginning of
+ the expression this level is working on
+ and marches forward over the arguments.
+ outbeg does similarly in the output. */
+ for (i = 0; i < args; i++)
+ {
+ oplen = arglens[i];
+ inend += oplen;
+ prefixify_subexp (inexpr, outexpr, inend, outbeg);
+ outbeg += oplen;
+ }
+}
+
+/* This page contains the two entry points to this file. */
+
+/* Read a C expression from the string *STRINGPTR points to,
+ parse it, and return a pointer to a struct expression that we malloc.
+ Use block BLOCK as the lexical context for variable names;
+ if BLOCK is zero, use the block of the selected stack frame.
+ Meanwhile, advance *STRINGPTR to point after the expression,
+ at the first nonwhite character that is not part of the expression
+ (possibly a null character).
+
+ If COMMA is nonzero, stop if a comma is reached. */
+
+struct expression *
+parse_c_1 (stringptr, block, comma)
+ char **stringptr;
+ struct block *block;
+{
+ struct cleanup *old_chain;
+
+ lexptr = *stringptr;
+
+ paren_depth = 0;
+ type_stack_depth = 0;
+
+ comma_terminates = comma;
+
+ if (lexptr == 0 || *lexptr == 0)
+ error_no_arg ("expression to compute");
+
+ old_chain = make_cleanup (free_funcalls, 0);
+ funcall_chain = 0;
+
+ expression_context_block = block ? block : get_selected_block ();
+
+ namecopy = (char *) alloca (strlen (lexptr) + 1);
+ expout_size = 10;
+ expout_ptr = 0;
+ expout = (struct expression *)
+ xmalloc (sizeof (struct expression)
+ + expout_size * sizeof (union exp_element));
+ make_cleanup (free_current_contents, &expout);
+ if (yyparse ())
+ yyerror ();
+ discard_cleanups (old_chain);
+ expout->nelts = expout_ptr;
+ expout = (struct expression *)
+ xrealloc (expout,
+ sizeof (struct expression)
+ + expout_ptr * sizeof (union exp_element));
+ prefixify_expression (expout);
+ *stringptr = lexptr;
+ return expout;
+}
+
+/* Parse STRING as an expression, and complain if this fails
+ to use up all of the contents of STRING. */
+
+struct expression *
+parse_c_expression (string)
+ char *string;
+{
+ register struct expression *exp;
+ exp = parse_c_1 (&string, 0, 0);
+ if (*string)
+ error ("Junk after end of expression.");
+ return exp;
+}
+
+static void
+push_type (tp)
+ enum type_pieces tp;
+{
+ if (type_stack_depth == type_stack_size)
+ {
+ type_stack_size *= 2;
+ type_stack = (enum type_pieces *)
+ xrealloc (type_stack, type_stack_size * sizeof (enum type_pieces));
+ }
+ type_stack[type_stack_depth++] = tp;
+}
+
+static enum type_pieces
+pop_type ()
+{
+ if (type_stack_depth)
+ return type_stack[--type_stack_depth];
+ return tp_end;
+}
+
+void
+_initialize_expread ()
+{
+ type_stack_size = 80;
+ type_stack_depth = 0;
+ type_stack = (enum type_pieces *)
+ xmalloc (type_stack_size * sizeof (enum type_pieces));
+}
diff --git a/gnu/usr.bin/kgdb/expression.h b/gnu/usr.bin/kgdb/expression.h
new file mode 100644
index 000000000000..5a5e20e0606c
--- /dev/null
+++ b/gnu/usr.bin/kgdb/expression.h
@@ -0,0 +1,191 @@
+/* Definitions for expressions stored in reversed prefix form, for GDB.
+ Copyright (C) 1986, 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+/* Definitions for saved C expressions. */
+
+/* An expression is represented as a vector of union exp_element's.
+ Each exp_element is an opcode, except that some opcodes cause
+ the following exp_element to be treated as a long or double constant
+ or as a variable. The opcodes are obeyed, using a stack for temporaries.
+ The value is left on the temporary stack at the end. */
+
+/* When it is necessary to include a string,
+ it can occupy as many exp_elements as it needs.
+ We find the length of the string using strlen,
+ divide to find out how many exp_elements are used up,
+ and skip that many. Strings, like numbers, are indicated
+ by the preceding opcode. */
+
+enum exp_opcode
+{
+/* BINOP_... operate on two values computed by following subexpressions,
+ replacing them by one result value. They take no immediate arguments. */
+ BINOP_ADD, /* + */
+ BINOP_SUB, /* - */
+ BINOP_MUL, /* * */
+ BINOP_DIV, /* / */
+ BINOP_REM, /* % */
+ BINOP_LSH, /* << */
+ BINOP_RSH, /* >> */
+ BINOP_AND, /* && */
+ BINOP_OR, /* || */
+ BINOP_LOGAND, /* & */
+ BINOP_LOGIOR, /* | */
+ BINOP_LOGXOR, /* ^ */
+ BINOP_EQUAL, /* == */
+ BINOP_NOTEQUAL, /* != */
+ BINOP_LESS, /* < */
+ BINOP_GTR, /* > */
+ BINOP_LEQ, /* <= */
+ BINOP_GEQ, /* >= */
+ BINOP_REPEAT, /* @ */
+ BINOP_ASSIGN, /* = */
+ BINOP_COMMA, /* , */
+ BINOP_SUBSCRIPT, /* x[y] */
+ BINOP_EXP, /* Exponentiation */
+
+/* C++. */
+ BINOP_MIN, /* <? */
+ BINOP_MAX, /* >? */
+ BINOP_SCOPE, /* :: */
+
+ /* STRUCTOP_MEMBER is used for pointer-to-member constructs.
+ X . * Y translates into X STRUCTOP_MEMBER Y. */
+ STRUCTOP_MEMBER,
+ /* STRUCTOP_MPTR is used for pointer-to-member constructs
+ when X is a pointer instead of an aggregate. */
+ STRUCTOP_MPTR,
+/* end of C++. */
+
+ BINOP_END,
+
+ BINOP_ASSIGN_MODIFY, /* +=, -=, *=, and so on.
+ The following exp_element is another opcode,
+ a BINOP_, saying how to modify.
+ Then comes another BINOP_ASSIGN_MODIFY,
+ making three exp_elements in total. */
+
+/* Operates on three values computed by following subexpressions. */
+ TERNOP_COND, /* ?: */
+
+/* The OP_... series take immediate following arguments.
+ After the arguments come another OP_... (the same one)
+ so that the grouping can be recognized from the end. */
+
+/* OP_LONG is followed by a type pointer in the next exp_element
+ and the long constant value in the following exp_element.
+ Then comes another OP_LONG.
+ Thus, the operation occupies four exp_elements. */
+
+ OP_LONG,
+/* OP_DOUBLE is similar but takes a double constant instead of a long one. */
+ OP_DOUBLE,
+/* OP_VAR_VALUE takes one struct symbol * in the following exp_element,
+ followed by another OP_VAR_VALUE, making three exp_elements. */
+ OP_VAR_VALUE,
+/* OP_LAST is followed by an integer in the next exp_element.
+ The integer is zero for the last value printed,
+ or it is the absolute number of a history element.
+ With another OP_LAST at the end, this makes three exp_elements. */
+ OP_LAST,
+/* OP_REGISTER is followed by an integer in the next exp_element.
+ This is the number of a register to fetch (as an int).
+ With another OP_REGISTER at the end, this makes three exp_elements. */
+ OP_REGISTER,
+/* OP_INTERNALVAR is followed by an internalvar ptr in the next exp_element.
+ With another OP_INTERNALVAR at the end, this makes three exp_elements. */
+ OP_INTERNALVAR,
+/* OP_FUNCALL is followed by an integer in the next exp_element.
+ The integer is the number of args to the function call.
+ That many plus one values from following subexpressions
+ are used, the first one being the function.
+ The integer is followed by a repeat of OP_FUNCALL,
+ making three exp_elements. */
+ OP_FUNCALL,
+/* OP_STRING represents a string constant.
+ Its format is the same as that of a STRUCTOP, but the string
+ data is just made into a string constant when the operation
+ is executed. */
+ OP_STRING,
+
+/* UNOP_CAST is followed by a type pointer in the next exp_element.
+ With another UNOP_CAST at the end, this makes three exp_elements.
+ It casts the value of the following subexpression. */
+ UNOP_CAST,
+/* UNOP_MEMVAL is followed by a type pointer in the next exp_element
+ With another UNOP_MEMVAL at the end, this makes three exp_elements.
+ It casts the contents of the word addressed by the value of the
+ following subexpression. */
+ UNOP_MEMVAL,
+/* UNOP_... operate on one value from a following subexpression
+ and replace it with a result. They take no immediate arguments. */
+ UNOP_NEG, /* Unary - */
+ UNOP_ZEROP, /* Unary ! */
+ UNOP_LOGNOT, /* Unary ~ */
+ UNOP_IND, /* Unary * */
+ UNOP_ADDR, /* Unary & */
+ UNOP_PREINCREMENT, /* ++ before an expression */
+ UNOP_POSTINCREMENT, /* ++ after an expression */
+ UNOP_PREDECREMENT, /* -- before an expression */
+ UNOP_POSTDECREMENT, /* -- after an expression */
+ UNOP_SIZEOF, /* Unary sizeof (followed by expression) */
+
+/* STRUCTOP_... operate on a value from a following subexpression
+ by extracting a structure component specified by a string
+ that appears in the following exp_elements (as many as needed).
+ STRUCTOP_STRUCT is used for "." and STRUCTOP_PTR for "->".
+ They differ only in the error message given in case the value is
+ not suitable or the structure component specified is not found.
+
+ The length of the string follows in the next exp_element,
+ (after the string), followed by another STRUCTOP_... code. */
+ STRUCTOP_STRUCT,
+ STRUCTOP_PTR,
+
+/* C++ */
+ /* OP_THIS is just a placeholder for the class instance variable.
+ It just comes in a tight (OP_THIS, OP_THIS) pair. */
+ OP_THIS,
+
+ /* OP_SCOPE surrounds a type name and a field name. The type
+ name is encoded as one element, but the field name stays as
+ a string, which, of course, is variable length. */
+ OP_SCOPE,
+
+};
+
+union exp_element
+{
+ enum exp_opcode opcode;
+ struct symbol *symbol;
+ LONGEST longconst;
+ double doubleconst;
+ char string;
+ struct type *type;
+ struct internalvar *internalvar;
+};
+
+struct expression
+{
+ int nelts;
+ union exp_element elts[1];
+};
+
+struct expression *parse_c_expression ();
+struct expression *parse_c_1 ();
diff --git a/gnu/usr.bin/kgdb/findvar.c b/gnu/usr.bin/kgdb/findvar.c
new file mode 100644
index 000000000000..5c288066607a
--- /dev/null
+++ b/gnu/usr.bin/kgdb/findvar.c
@@ -0,0 +1,579 @@
+/* Find a variable's value in memory, for GDB, the GNU debugger.
+ Copyright (C) 1986, 1987, 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include "defs.h"
+#include "param.h"
+#include "symtab.h"
+#include "frame.h"
+#include "value.h"
+
+CORE_ADDR read_register ();
+
+/* Return the address in which frame FRAME's value of register REGNUM
+ has been saved in memory. Or return zero if it has not been saved.
+ If REGNUM specifies the SP, the value we return is actually
+ the SP value, not an address where it was saved. */
+
+CORE_ADDR
+find_saved_register (frame, regnum)
+ FRAME frame;
+ int regnum;
+{
+ struct frame_info *fi;
+ struct frame_saved_regs saved_regs;
+
+ register FRAME frame1 = 0;
+ register CORE_ADDR addr = 0;
+
+#ifdef HAVE_REGISTER_WINDOWS
+ /* We assume that a register in a register window will only be saved
+ in one place (since the name changes and disappears as you go
+ towards inner frames), so we only call get_frame_saved_regs on
+ the current frame. This is directly in contradiction to the
+ usage below, which assumes that registers used in a frame must be
+ saved in a lower (more interior) frame. This change is a result
+ of working on a register window machine; get_frame_saved_regs
+ always returns the registers saved within a frame, within the
+ context (register namespace) of that frame. */
+
+ /* However, note that we don't want this to return anything if
+ nothing is saved (if there's a frame inside of this one). Also,
+ callers to this routine asking for the stack pointer want the
+ stack pointer saved for *this* frame; this is returned from the
+ next frame. */
+
+
+ if (REGISTER_IN_WINDOW_P(regnum))
+ {
+ frame1 = get_next_frame (frame);
+ if (!frame1) return 0; /* Registers of this frame are
+ active. */
+
+ /* Get the SP from the next frame in; it will be this
+ current frame. */
+ if (regnum != SP_REGNUM)
+ frame1 = frame;
+
+ fi = get_frame_info (frame1);
+ get_frame_saved_regs (fi, &saved_regs);
+ return (saved_regs.regs[regnum] ?
+ saved_regs.regs[regnum] : 0);
+ }
+#endif /* HAVE_REGISTER_WINDOWS */
+
+ /* Note that this next routine assumes that registers used in
+ frame x will be saved only in the frame that x calls and
+ frames interior to it. This is not true on the sparc, but the
+ above macro takes care of it, so we should be all right. */
+ while (1)
+ {
+ QUIT;
+ frame1 = get_prev_frame (frame1);
+ if (frame1 == 0 || frame1 == frame)
+ break;
+ fi = get_frame_info (frame1);
+ get_frame_saved_regs (fi, &saved_regs);
+ if (saved_regs.regs[regnum])
+ addr = saved_regs.regs[regnum];
+ }
+
+ return addr;
+}
+
+/* Copy the bytes of register REGNUM, relative to the current stack frame,
+ into our memory at MYADDR.
+ The number of bytes copied is REGISTER_RAW_SIZE (REGNUM). */
+
+void
+read_relative_register_raw_bytes (regnum, myaddr)
+ int regnum;
+ char *myaddr;
+{
+ register CORE_ADDR addr;
+
+ if (regnum == FP_REGNUM)
+ {
+ bcopy (&FRAME_FP(selected_frame), myaddr, sizeof (CORE_ADDR));
+ return;
+ }
+
+ addr = find_saved_register (selected_frame, regnum);
+
+ if (addr)
+ {
+ if (regnum == SP_REGNUM)
+ {
+ CORE_ADDR buffer = addr;
+ bcopy (&buffer, myaddr, sizeof (CORE_ADDR));
+ }
+ else
+ read_memory (addr, myaddr, REGISTER_RAW_SIZE (regnum));
+ return;
+ }
+ read_register_bytes (REGISTER_BYTE (regnum),
+ myaddr, REGISTER_RAW_SIZE (regnum));
+}
+
+/* Return a `value' with the contents of register REGNUM
+ in its virtual format, with the type specified by
+ REGISTER_VIRTUAL_TYPE. */
+
+value
+value_of_register (regnum)
+ int regnum;
+{
+ register CORE_ADDR addr;
+ register value val;
+ char raw_buffer[MAX_REGISTER_RAW_SIZE];
+ char virtual_buffer[MAX_REGISTER_VIRTUAL_SIZE];
+
+ if (! (have_inferior_p () || have_core_file_p ()))
+ error ("Can't get value of register without inferior or core file");
+
+ addr = find_saved_register (selected_frame, regnum);
+ if (addr)
+ {
+ if (regnum == SP_REGNUM)
+ return value_from_long (builtin_type_int, (LONGEST) addr);
+ read_memory (addr, raw_buffer, REGISTER_RAW_SIZE (regnum));
+ }
+ else
+ read_register_bytes (REGISTER_BYTE (regnum), raw_buffer,
+ REGISTER_RAW_SIZE (regnum));
+
+ REGISTER_CONVERT_TO_VIRTUAL (regnum, raw_buffer, virtual_buffer);
+ val = allocate_value (REGISTER_VIRTUAL_TYPE (regnum));
+ bcopy (virtual_buffer, VALUE_CONTENTS (val), REGISTER_VIRTUAL_SIZE (regnum));
+ VALUE_LVAL (val) = addr ? lval_memory : lval_register;
+ VALUE_ADDRESS (val) = addr ? addr : REGISTER_BYTE (regnum);
+ VALUE_REGNO (val) = regnum;
+ return val;
+}
+
+/* Low level examining and depositing of registers.
+
+ Note that you must call `fetch_registers' once
+ before examining or depositing any registers. */
+
+char registers[REGISTER_BYTES];
+
+/* Copy LEN bytes of consecutive data from registers
+ starting with the REGBYTE'th byte of register data
+ into memory at MYADDR. */
+
+void
+read_register_bytes (regbyte, myaddr, len)
+ int regbyte;
+ char *myaddr;
+ int len;
+{
+ bcopy (&registers[regbyte], myaddr, len);
+}
+
+/* Copy LEN bytes of consecutive data from memory at MYADDR
+ into registers starting with the REGBYTE'th byte of register data. */
+
+void
+write_register_bytes (regbyte, myaddr, len)
+ int regbyte;
+ char *myaddr;
+ int len;
+{
+ bcopy (myaddr, &registers[regbyte], len);
+ if (have_inferior_p ())
+ store_inferior_registers (-1);
+}
+
+/* Return the contents of register REGNO,
+ regarding it as an integer. */
+
+CORE_ADDR
+read_register (regno)
+ int regno;
+{
+ /* This loses when REGISTER_RAW_SIZE (regno) != sizeof (int) */
+ return *(int *) &registers[REGISTER_BYTE (regno)];
+}
+
+/* Store VALUE in the register number REGNO, regarded as an integer. */
+
+void
+write_register (regno, val)
+ int regno, val;
+{
+ /* This loses when REGISTER_RAW_SIZE (regno) != sizeof (int) */
+#if defined(sun4)
+ /* This is a no-op on a Sun 4. */
+ if (regno == 0)
+ return;
+#endif
+
+ *(int *) &registers[REGISTER_BYTE (regno)] = val;
+
+ if (have_inferior_p ())
+ store_inferior_registers (regno);
+}
+
+/* Record that register REGNO contains VAL.
+ This is used when the value is obtained from the inferior or core dump,
+ so there is no need to store the value there. */
+
+void
+supply_register (regno, val)
+ int regno;
+ char *val;
+{
+ bcopy (val, &registers[REGISTER_BYTE (regno)], REGISTER_RAW_SIZE (regno));
+}
+
+/* Given a struct symbol for a variable,
+ and a stack frame id, read the value of the variable
+ and return a (pointer to a) struct value containing the value. */
+
+value
+read_var_value (var, frame)
+ register struct symbol *var;
+ FRAME frame;
+{
+ register value v;
+
+ struct frame_info *fi;
+
+ struct type *type = SYMBOL_TYPE (var);
+ register CORE_ADDR addr = 0;
+ int val = SYMBOL_VALUE (var);
+ register int len;
+
+ v = allocate_value (type);
+ VALUE_LVAL (v) = lval_memory; /* The most likely possibility. */
+ len = TYPE_LENGTH (type);
+
+ if (frame == 0) frame = selected_frame;
+
+ switch (SYMBOL_CLASS (var))
+ {
+ case LOC_CONST:
+ case LOC_LABEL:
+ bcopy (&val, VALUE_CONTENTS (v), len);
+ VALUE_LVAL (v) = not_lval;
+ return v;
+
+ case LOC_CONST_BYTES:
+ bcopy (val, VALUE_CONTENTS (v), len);
+ VALUE_LVAL (v) = not_lval;
+ return v;
+
+ case LOC_STATIC:
+ addr = val;
+ break;
+
+/* Nonzero if a struct which is located in a register or a LOC_ARG
+ really contains
+ the address of the struct, not the struct itself. GCC_P is nonzero
+ if the function was compiled with GCC. */
+#if !defined (REG_STRUCT_HAS_ADDR)
+#define REG_STRUCT_HAS_ADDR(gcc_p) 0
+#endif
+
+ case LOC_ARG:
+ fi = get_frame_info (frame);
+ addr = val + FRAME_ARGS_ADDRESS (fi);
+ break;
+
+ case LOC_REF_ARG:
+ fi = get_frame_info (frame);
+ addr = val + FRAME_ARGS_ADDRESS (fi);
+ addr = read_memory_integer (addr, sizeof (CORE_ADDR));
+ break;
+
+ case LOC_LOCAL:
+ fi = get_frame_info (frame);
+ addr = val + FRAME_LOCALS_ADDRESS (fi);
+ break;
+
+ case LOC_TYPEDEF:
+ error ("Cannot look up value of a typedef");
+
+ case LOC_BLOCK:
+ VALUE_ADDRESS (v) = BLOCK_START (SYMBOL_BLOCK_VALUE (var));
+ return v;
+
+ case LOC_REGISTER:
+ case LOC_REGPARM:
+ {
+ struct block *b = get_frame_block (frame);
+
+ v = value_from_register (type, val, frame);
+
+ if (REG_STRUCT_HAS_ADDR(b->gcc_compile_flag)
+ && TYPE_CODE (type) == TYPE_CODE_STRUCT)
+ addr = *(CORE_ADDR *)VALUE_CONTENTS (v);
+ else
+ return v;
+ }
+ }
+
+ read_memory (addr, VALUE_CONTENTS (v), len);
+ VALUE_ADDRESS (v) = addr;
+ return v;
+}
+
+/* Return a value of type TYPE, stored in register REGNUM, in frame
+ FRAME. */
+
+value
+value_from_register (type, regnum, frame)
+ struct type *type;
+ int regnum;
+ FRAME frame;
+{
+ char raw_buffer [MAX_REGISTER_RAW_SIZE];
+ char virtual_buffer[MAX_REGISTER_VIRTUAL_SIZE];
+ CORE_ADDR addr;
+ value v = allocate_value (type);
+ int len = TYPE_LENGTH (type);
+ char *value_bytes = 0;
+ int value_bytes_copied = 0;
+ int num_storage_locs;
+
+ VALUE_REGNO (v) = regnum;
+
+ num_storage_locs = (len > REGISTER_VIRTUAL_SIZE (regnum) ?
+ ((len - 1) / REGISTER_RAW_SIZE (regnum)) + 1 :
+ 1);
+
+ if (num_storage_locs > 1)
+ {
+ /* Value spread across multiple storage locations. */
+
+ int local_regnum;
+ int mem_stor = 0, reg_stor = 0;
+ int mem_tracking = 1;
+ CORE_ADDR last_addr = 0;
+
+ value_bytes = (char *) alloca (len + MAX_REGISTER_RAW_SIZE);
+
+ /* Copy all of the data out, whereever it may be. */
+
+ for (local_regnum = regnum;
+ value_bytes_copied < len;
+ (value_bytes_copied += REGISTER_RAW_SIZE (local_regnum),
+ ++local_regnum))
+ {
+ int register_index = local_regnum - regnum;
+ addr = find_saved_register (frame, local_regnum);
+ if (addr == 0)
+ {
+ read_register_bytes (REGISTER_BYTE (local_regnum),
+ value_bytes + value_bytes_copied,
+ REGISTER_RAW_SIZE (local_regnum));
+ reg_stor++;
+ }
+ else
+ {
+ read_memory (addr, value_bytes + value_bytes_copied,
+ REGISTER_RAW_SIZE (local_regnum));
+ mem_stor++;
+ mem_tracking =
+ (mem_tracking
+ && (regnum == local_regnum
+ || addr == last_addr));
+ }
+ last_addr = addr;
+ }
+
+ if ((reg_stor && mem_stor)
+ || (mem_stor && !mem_tracking))
+ /* Mixed storage; all of the hassle we just went through was
+ for some good purpose. */
+ {
+ VALUE_LVAL (v) = lval_reg_frame_relative;
+ VALUE_FRAME (v) = FRAME_FP (frame);
+ VALUE_FRAME_REGNUM (v) = regnum;
+ }
+ else if (mem_stor)
+ {
+ VALUE_LVAL (v) = lval_memory;
+ VALUE_ADDRESS (v) = find_saved_register (frame, regnum);
+ }
+ else if (reg_stor)
+ {
+ VALUE_LVAL (v) = lval_register;
+ VALUE_ADDRESS (v) = REGISTER_BYTE (regnum);
+ }
+ else
+ fatal ("value_from_register: Value not stored anywhere!");
+
+ /* Any structure stored in more than one register will always be
+ an inegral number of registers. Otherwise, you'd need to do
+ some fiddling with the last register copied here for little
+ endian machines. */
+
+ /* Copy into the contents section of the value. */
+ bcopy (value_bytes, VALUE_CONTENTS (v), len);
+
+ return v;
+ }
+
+ /* Data is completely contained within a single register. Locate the
+ register's contents in a real register or in core;
+ read the data in raw format. */
+
+ addr = find_saved_register (frame, regnum);
+ if (addr == 0)
+ {
+ /* Value is really in a register. */
+
+ VALUE_LVAL (v) = lval_register;
+ VALUE_ADDRESS (v) = REGISTER_BYTE (regnum);
+
+ read_register_bytes (REGISTER_BYTE (regnum),
+ raw_buffer, REGISTER_RAW_SIZE (regnum));
+ }
+ else
+ {
+ /* Value was in a register that has been saved in memory. */
+
+ read_memory (addr, raw_buffer, REGISTER_RAW_SIZE (regnum));
+ VALUE_LVAL (v) = lval_memory;
+ VALUE_ADDRESS (v) = addr;
+ }
+
+ /* Convert the raw contents to virtual contents.
+ (Just copy them if the formats are the same.) */
+
+ REGISTER_CONVERT_TO_VIRTUAL (regnum, raw_buffer, virtual_buffer);
+
+ if (REGISTER_CONVERTIBLE (regnum))
+ {
+ /* When the raw and virtual formats differ, the virtual format
+ corresponds to a specific data type. If we want that type,
+ copy the data into the value.
+ Otherwise, do a type-conversion. */
+
+ if (type != REGISTER_VIRTUAL_TYPE (regnum))
+ {
+ /* eg a variable of type `float' in a 68881 register
+ with raw type `extended' and virtual type `double'.
+ Fetch it as a `double' and then convert to `float'. */
+ v = allocate_value (REGISTER_VIRTUAL_TYPE (regnum));
+ bcopy (virtual_buffer, VALUE_CONTENTS (v), len);
+ v = value_cast (type, v);
+ }
+ else
+ bcopy (virtual_buffer, VALUE_CONTENTS (v), len);
+ }
+ else
+ {
+ /* Raw and virtual formats are the same for this register. */
+
+#ifdef BYTES_BIG_ENDIAN
+ if (len < REGISTER_RAW_SIZE (regnum))
+ {
+ /* Big-endian, and we want less than full size. */
+ VALUE_OFFSET (v) = REGISTER_RAW_SIZE (regnum) - len;
+ }
+#endif
+
+ bcopy (virtual_buffer + VALUE_OFFSET (v),
+ VALUE_CONTENTS (v), len);
+ }
+
+ return v;
+}
+
+/* Given a struct symbol for a variable,
+ and a stack frame id,
+ return a (pointer to a) struct value containing the variable's address. */
+
+value
+locate_var_value (var, frame)
+ register struct symbol *var;
+ FRAME frame;
+{
+ register CORE_ADDR addr = 0;
+ int val = SYMBOL_VALUE (var);
+ struct frame_info *fi;
+ struct type *type = SYMBOL_TYPE (var);
+ struct type *result_type;
+
+ if (frame == 0) frame = selected_frame;
+
+ switch (SYMBOL_CLASS (var))
+ {
+ case LOC_CONST:
+ case LOC_CONST_BYTES:
+ error ("Address requested for identifier \"%s\" which is a constant.",
+ SYMBOL_NAME (var));
+
+ case LOC_REGISTER:
+ case LOC_REGPARM:
+ addr = find_saved_register (frame, val);
+ if (addr != 0)
+ {
+ int len = TYPE_LENGTH (type);
+#ifdef BYTES_BIG_ENDIAN
+ if (len < REGISTER_RAW_SIZE (val))
+ /* Big-endian, and we want less than full size. */
+ addr += REGISTER_RAW_SIZE (val) - len;
+#endif
+ break;
+ }
+ error ("Address requested for identifier \"%s\" which is in a register.",
+ SYMBOL_NAME (var));
+
+ case LOC_STATIC:
+ case LOC_LABEL:
+ addr = val;
+ break;
+
+ case LOC_ARG:
+ fi = get_frame_info (frame);
+ addr = val + FRAME_ARGS_ADDRESS (fi);
+ break;
+
+ case LOC_REF_ARG:
+ fi = get_frame_info (frame);
+ addr = val + FRAME_ARGS_ADDRESS (fi);
+ addr = read_memory_integer (addr, sizeof (CORE_ADDR));
+ break;
+
+ case LOC_LOCAL:
+ fi = get_frame_info (frame);
+ addr = val + FRAME_LOCALS_ADDRESS (fi);
+ break;
+
+ case LOC_TYPEDEF:
+ error ("Address requested for identifier \"%s\" which is a typedef.",
+ SYMBOL_NAME (var));
+
+ case LOC_BLOCK:
+ addr = BLOCK_START (SYMBOL_BLOCK_VALUE (var));
+ break;
+ }
+
+ /* Address of an array is of the type of address of it's elements. */
+ result_type =
+ lookup_pointer_type (TYPE_CODE (type) == TYPE_CODE_ARRAY ?
+ TYPE_TARGET_TYPE (type) : type);
+
+ return value_cast (result_type,
+ value_from_long (builtin_type_long, (LONGEST) addr));
+}
+
diff --git a/gnu/usr.bin/kgdb/frame.h b/gnu/usr.bin/kgdb/frame.h
new file mode 100644
index 000000000000..322ddbae04b9
--- /dev/null
+++ b/gnu/usr.bin/kgdb/frame.h
@@ -0,0 +1,115 @@
+/* Definitions for dealing with stack frames, for GDB, the GNU debugger.
+ Copyright (C) 1986, 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+/* Note that frame.h requires param.h! */
+
+/*
+ * FRAME is the type of the identifier of a specific stack frame. It
+ * is a pointer to the frame cache item corresponding to this frame.
+ * Please note that frame id's are *not* constant over calls to the
+ * inferior. Use frame addresses, which are.
+ *
+ * FRAME_ADDR is the type of the address of a specific frame. I
+ * cannot imagine a case in which this would not be CORE_ADDR, so
+ * maybe it's silly to give it it's own type. Life's rough.
+ *
+ * FRAME_FP is a macro which converts from a frame identifier into a
+ * frame_address.
+ *
+ * FRAME_INFO_ID is a macro which "converts" from a frame info pointer
+ * to a frame id. This is here in case I or someone else decides to
+ * change the FRAME type again.
+ *
+ * This file and blockframe.c are the only places which are allowed to
+ * use the equivalence between FRAME and struct frame_info *. EXCEPTION:
+ * value.h uses CORE_ADDR instead of FRAME_ADDR because the compiler
+ * will accept that in the absense of this file.
+ */
+typedef struct frame_info *FRAME;
+typedef CORE_ADDR FRAME_ADDR;
+#define FRAME_FP(fr) ((fr)->frame)
+#define FRAME_INFO_ID(f) (f)
+
+/*
+ * Caching structure for stack frames. This is also the structure
+ * used for extended info about stack frames. May add more to this
+ * structure as it becomes necessary.
+ *
+ * Note that the first entry in the cache will always refer to the
+ * innermost executing frame. This value should be set (is it?
+ * Check) in something like normal_stop.
+ */
+struct frame_info
+ {
+ /* Nominal address of the frame described. */
+ FRAME_ADDR frame;
+ /* Address at which execution is occurring in this frame.
+ For the innermost frame, it's the current pc.
+ For other frames, it is a pc saved in the next frame. */
+ CORE_ADDR pc;
+ /* The frame called by the frame we are describing, or 0.
+ This may be set even if there isn't a frame called by the one
+ we are describing (.->next == 0); in that case it is simply the
+ bottom of this frame */
+ FRAME_ADDR next_frame;
+ /* Anything extra for this structure that may have been defined
+ in the machine depedent files. */
+#ifdef EXTRA_FRAME_INFO
+ EXTRA_FRAME_INFO
+#endif
+ /* Pointers to the next and previous frame_info's in this stack. */
+ FRAME next, prev;
+ };
+
+/* Describe the saved registers of a frame. */
+
+struct frame_saved_regs
+ {
+ /* For each register, address of where it was saved on entry to the frame,
+ or zero if it was not saved on entry to this frame. */
+ CORE_ADDR regs[NUM_REGS];
+ };
+
+/* The stack frame that the user has specified for commands to act on.
+ Note that one cannot assume this is the address of valid data. */
+
+extern FRAME selected_frame;
+
+extern struct frame_info *get_frame_info ();
+extern struct frame_info *get_prev_frame_info ();
+
+extern FRAME create_new_frame ();
+
+extern void get_frame_saved_regs ();
+
+extern FRAME get_prev_frame ();
+extern FRAME get_current_frame ();
+extern FRAME get_next_frame ();
+
+extern struct block *get_frame_block ();
+extern struct block *get_current_block ();
+extern struct block *get_selected_block ();
+extern struct symbol *get_frame_function ();
+extern struct symbol *get_pc_function ();
+
+/* In stack.c */
+extern FRAME find_relative_frame ();
+
+/* Generic pointer value indicating "I don't know." */
+#define Frame_unknown (CORE_ADDR)-1
diff --git a/gnu/usr.bin/kgdb/getpagesize.h b/gnu/usr.bin/kgdb/getpagesize.h
new file mode 100644
index 000000000000..32adae61efa2
--- /dev/null
+++ b/gnu/usr.bin/kgdb/getpagesize.h
@@ -0,0 +1,25 @@
+#ifdef BSD
+#ifndef BSD4_1
+#define HAVE_GETPAGESIZE
+#endif
+#endif
+
+#ifndef HAVE_GETPAGESIZE
+
+#include <sys/param.h>
+
+#ifdef EXEC_PAGESIZE
+#define getpagesize() EXEC_PAGESIZE
+#else
+#ifdef NBPG
+#define getpagesize() NBPG * CLSIZE
+#ifndef CLSIZE
+#define CLSIZE 1
+#endif /* no CLSIZE */
+#else /* no NBPG */
+#define getpagesize() NBPC
+#endif /* no NBPG */
+#endif /* no EXEC_PAGESIZE */
+
+#endif /* not HAVE_GETPAGESIZE */
+
diff --git a/gnu/usr.bin/kgdb/infcmd.c b/gnu/usr.bin/kgdb/infcmd.c
new file mode 100644
index 000000000000..d37275d3b12a
--- /dev/null
+++ b/gnu/usr.bin/kgdb/infcmd.c
@@ -0,0 +1,1200 @@
+/*-
+ * This code is derived from software copyrighted by the Free Software
+ * Foundation.
+ *
+ * Modified 1991 by Donn Seeley at UUNET Technologies, Inc.
+ * Modified 1990 by Van Jacobson at Lawrence Berkeley Laboratory.
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)infcmd.c 6.4 (Berkeley) 5/8/91";
+#endif /* not lint */
+
+/* Memory-access and commands for inferior process, for GDB.
+ Copyright (C) 1986, 1987, 1988, 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include <stdio.h>
+#include "defs.h"
+#include "param.h"
+#include "symtab.h"
+#include "frame.h"
+#include "inferior.h"
+#include "environ.h"
+#include "value.h"
+
+#include <signal.h>
+#include <sys/param.h>
+
+#define ERROR_NO_INFERIOR \
+ if (inferior_pid == 0) error ("The program is not being run.");
+
+/* String containing arguments to give to the program,
+ with a space added at the front. Just a space means no args. */
+
+static char *inferior_args;
+
+/* File name for default use for standard in/out in the inferior. */
+
+char *inferior_io_terminal;
+
+/* Pid of our debugged inferior, or 0 if no inferior now. */
+
+int inferior_pid;
+
+/* Last signal that the inferior received (why it stopped). */
+
+int stop_signal;
+
+/* Address at which inferior stopped. */
+
+CORE_ADDR stop_pc;
+
+/* Stack frame when program stopped. */
+
+FRAME_ADDR stop_frame_address;
+
+/* Number of breakpoint it stopped at, or 0 if none. */
+
+int stop_breakpoint;
+
+/* Nonzero if stopped due to a step command. */
+
+int stop_step;
+
+/* Nonzero if stopped due to completion of a stack dummy routine. */
+
+int stop_stack_dummy;
+
+/* Nonzero if stopped due to a random (unexpected) signal in inferior
+ process. */
+
+int stopped_by_random_signal;
+
+/* Range to single step within.
+ If this is nonzero, respond to a single-step signal
+ by continuing to step if the pc is in this range. */
+
+CORE_ADDR step_range_start; /* Inclusive */
+CORE_ADDR step_range_end; /* Exclusive */
+
+/* Stack frame address as of when stepping command was issued.
+ This is how we know when we step into a subroutine call,
+ and how to set the frame for the breakpoint used to step out. */
+
+FRAME_ADDR step_frame_address;
+
+/* 1 means step over all subroutine calls.
+ -1 means step over calls to undebuggable functions. */
+
+int step_over_calls;
+
+/* If stepping, nonzero means step count is > 1
+ so don't print frame next time inferior stops
+ if it stops due to stepping. */
+
+int step_multi;
+
+/* Environment to use for running inferior,
+ in format described in environ.h. */
+
+struct environ *inferior_environ;
+
+CORE_ADDR read_pc ();
+struct command_line *get_breakpoint_commands ();
+void breakpoint_clear_ignore_counts ();
+
+
+int
+have_inferior_p ()
+{
+ return inferior_pid != 0;
+}
+
+static void
+set_args_command (args)
+ char *args;
+{
+ free (inferior_args);
+ if (!args) args = "";
+ inferior_args = concat (" ", args, "");
+}
+
+void
+tty_command (file, from_tty)
+ char *file;
+ int from_tty;
+{
+ if (file == 0)
+ error_no_arg ("terminal name for running target process");
+
+ inferior_io_terminal = savestring (file, strlen (file));
+}
+
+static void
+run_command (args, from_tty)
+ char *args;
+ int from_tty;
+{
+ extern char **environ;
+ register int i;
+ char *exec_file;
+ char *allargs;
+
+ extern int sys_nerr;
+ extern int errno;
+
+ dont_repeat ();
+
+ if (inferior_pid)
+ {
+ extern int inhibit_confirm;
+ if (!(inhibit_confirm ||
+ query ("The program being debugged has been started already.\n\
+Start it from the beginning? ")))
+ error ("Program not restarted.");
+ kill_inferior ();
+ }
+
+#if 0
+ /* On the other hand, some users want to do
+ break open
+ ignore 1 40
+ run
+ So it's not clear what is best. */
+
+ /* It is confusing to the user for ignore counts to stick around
+ from previous runs of the inferior. So clear them. */
+ breakpoint_clear_ignore_counts ();
+#endif
+
+ exec_file = (char *) get_exec_file (1);
+
+ if (remote_debugging)
+ {
+ if (from_tty)
+ {
+ printf ("Starting program: %s\n", exec_file);
+ fflush (stdout);
+ }
+ }
+ else
+ {
+ if (args)
+ set_args_command (args);
+
+ if (from_tty)
+ {
+ printf ("Starting program: %s%s\n",
+ exec_file, inferior_args);
+ fflush (stdout);
+ }
+
+ allargs = concat ("exec ", exec_file, inferior_args);
+ inferior_pid = create_inferior (allargs, environ_vector (inferior_environ));
+ }
+
+ clear_proceed_status ();
+
+ start_inferior ();
+}
+
+void
+cont_command (proc_count_exp, from_tty)
+ char *proc_count_exp;
+ int from_tty;
+{
+ ERROR_NO_INFERIOR;
+
+ clear_proceed_status ();
+
+ /* If have argument, set proceed count of breakpoint we stopped at. */
+
+ if (stop_breakpoint > 0 && proc_count_exp)
+ {
+ set_ignore_count (stop_breakpoint,
+ parse_and_eval_address (proc_count_exp) - 1,
+ from_tty);
+ if (from_tty)
+ printf (" ");
+ }
+
+ if (from_tty)
+ printf ("Continuing.\n");
+
+ proceed (-1, -1, 0);
+}
+
+/* Step until outside of current statement. */
+static void step_1 ();
+
+static void
+step_command (count_string)
+{
+ step_1 (0, 0, count_string);
+}
+
+/* Likewise, but skip over subroutine calls as if single instructions. */
+
+static void
+next_command (count_string)
+{
+ step_1 (1, 0, count_string);
+}
+
+/* Likewise, but step only one instruction. */
+
+static void
+stepi_command (count_string)
+{
+ step_1 (0, 1, count_string);
+}
+
+static void
+nexti_command (count_string)
+{
+ step_1 (1, 1, count_string);
+}
+
+static void
+step_1 (skip_subroutines, single_inst, count_string)
+ int skip_subroutines;
+ int single_inst;
+ char *count_string;
+{
+ register int count = 1;
+
+ ERROR_NO_INFERIOR;
+ count = count_string ? parse_and_eval_address (count_string) : 1;
+
+ for (; count > 0; count--)
+ {
+ clear_proceed_status ();
+
+ step_frame_address = FRAME_FP (get_current_frame ());
+
+ if (! single_inst)
+ {
+ find_pc_line_pc_range (stop_pc, &step_range_start, &step_range_end);
+ if (step_range_end == 0)
+ {
+ int misc;
+
+ misc = find_pc_misc_function (stop_pc);
+ terminal_ours ();
+ printf ("Current function has no line number information.\n");
+ fflush (stdout);
+
+ /* No info or after _etext ("Can't happen") */
+ if (misc == -1 || misc == misc_function_count - 1)
+ error ("No data available on pc function.");
+
+ printf ("Single stepping until function exit.\n");
+ fflush (stdout);
+
+ step_range_start = misc_function_vector[misc].address;
+ step_range_end = misc_function_vector[misc + 1].address;
+ }
+ }
+ else
+ {
+ /* Say we are stepping, but stop after one insn whatever it does.
+ Don't step through subroutine calls even to undebuggable
+ functions. */
+ step_range_start = step_range_end = 1;
+ if (!skip_subroutines)
+ step_over_calls = 0;
+ }
+
+ if (skip_subroutines)
+ step_over_calls = 1;
+
+ step_multi = (count > 1);
+ proceed (-1, -1, 1);
+ if (! stop_step)
+ break;
+ }
+}
+
+/* Continue program at specified address. */
+
+static void
+jump_command (arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ register CORE_ADDR addr;
+ struct symtabs_and_lines sals;
+ struct symtab_and_line sal;
+
+ ERROR_NO_INFERIOR;
+
+ if (!arg)
+ error_no_arg ("starting address");
+
+ sals = decode_line_spec_1 (arg, 1);
+ if (sals.nelts != 1)
+ {
+ error ("Unreasonable jump request");
+ }
+
+ sal = sals.sals[0];
+ free (sals.sals);
+
+ if (sal.symtab == 0 && sal.pc == 0)
+ error ("No source file has been specified.");
+
+ if (sal.pc == 0)
+ sal.pc = find_line_pc (sal.symtab, sal.line);
+
+ {
+ struct symbol *fn = get_frame_function (get_current_frame ());
+ struct symbol *sfn = find_pc_function (sal.pc);
+ if (fn != 0 && sfn != fn
+ && ! query ("Line %d is not in `%s'. Jump anyway? ",
+ sal.line, SYMBOL_NAME (fn)))
+ error ("Not confirmed.");
+ }
+
+ if (sal.pc == 0)
+ error ("No line %d in file \"%s\".", sal.line, sal.symtab->filename);
+
+ addr = sal.pc;
+
+ clear_proceed_status ();
+
+ if (from_tty)
+ printf ("Continuing at 0x%x.\n", addr);
+
+ proceed (addr, 0, 0);
+}
+
+/* Continue program giving it specified signal. */
+
+static void
+signal_command (signum_exp, from_tty)
+ char *signum_exp;
+ int from_tty;
+{
+ register int signum;
+
+ dont_repeat (); /* Too dangerous. */
+ ERROR_NO_INFERIOR;
+
+ if (!signum_exp)
+ error_no_arg ("signal number");
+
+ signum = parse_and_eval_address (signum_exp);
+
+ clear_proceed_status ();
+
+ if (from_tty)
+ printf ("Continuing with signal %d.\n", signum);
+
+ proceed (stop_pc, signum, 0);
+}
+
+/* Execute a "stack dummy", a piece of code stored in the stack
+ by the debugger to be executed in the inferior.
+
+ To call: first, do PUSH_DUMMY_FRAME.
+ Then push the contents of the dummy. It should end with a breakpoint insn.
+ Then call here, passing address at which to start the dummy.
+
+ The contents of all registers are saved before the dummy frame is popped
+ and copied into the buffer BUFFER.
+
+ The dummy's frame is automatically popped whenever that break is hit.
+ If that is the first time the program stops, run_stack_dummy
+ returns to its caller with that frame already gone.
+ Otherwise, the caller never gets returned to. */
+
+/* 4 => return instead of letting the stack dummy run. */
+
+static int stack_dummy_testing = 0;
+
+void
+run_stack_dummy (addr, buffer)
+ CORE_ADDR addr;
+ REGISTER_TYPE *buffer;
+{
+ /* Now proceed, having reached the desired place. */
+ clear_proceed_status ();
+#ifdef notdef
+ if (stack_dummy_testing & 4)
+ {
+ POP_FRAME;
+ return;
+ }
+#endif
+ proceed (addr, 0, 0);
+
+ if (!stop_stack_dummy)
+ error ("Cannot continue previously requested operation.");
+
+ /* On return, the stack dummy has been popped already. */
+
+ read_register_bytes(0, buffer, REGISTER_BYTES);
+}
+
+/* Proceed until we reach the given line as argument or exit the
+ function. When called with no argument, proceed until we reach a
+ different source line with pc greater than our current one or exit
+ the function. We skip calls in both cases.
+
+ The effect of this command with an argument is identical to setting
+ a momentary breakpoint at the line specified and executing
+ "finish".
+
+ Note that eventually this command should probably be changed so
+ that only source lines are printed out when we hit the breakpoint
+ we set. I'm going to postpone this until after a hopeful rewrite
+ of wait_for_inferior and the proceed status code. -- randy */
+
+void
+until_next_command (arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ FRAME frame;
+ CORE_ADDR pc;
+ struct symbol *func;
+ struct symtab_and_line sal;
+
+ clear_proceed_status ();
+
+ frame = get_current_frame ();
+
+ /* Step until either exited from this function or greater
+ than the current line (if in symbolic section) or pc (if
+ not). */
+
+ pc = read_pc ();
+ func = find_pc_function (pc);
+
+ if (!func)
+ {
+ int misc_func = find_pc_misc_function (pc);
+
+ if (misc_func != -1)
+ error ("Execution is not within a known function.");
+
+ step_range_start = misc_function_vector[misc_func].address;
+ step_range_end = pc;
+ }
+ else
+ {
+ sal = find_pc_line (pc, 0);
+
+ step_range_start = BLOCK_START (SYMBOL_BLOCK_VALUE (func));
+ step_range_end = sal.end;
+ }
+
+ step_over_calls = 1;
+ step_frame_address = FRAME_FP (frame);
+
+ step_multi = 0; /* Only one call to proceed */
+
+ proceed (-1, -1, 1);
+}
+
+void
+until_command (arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ if (!have_inferior_p ())
+ error ("The program is not being run.");
+
+ if (arg)
+ until_break_command (arg, from_tty);
+ else
+ until_next_command (arg, from_tty);
+}
+
+/* "finish": Set a temporary breakpoint at the place
+ the selected frame will return to, then continue. */
+
+static void
+finish_command (arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ struct symtab_and_line sal;
+ register FRAME frame;
+ struct frame_info *fi;
+ register struct symbol *function;
+
+ if (!have_inferior_p ())
+ error ("The program is not being run.");
+ if (arg)
+ error ("The \"finish\" command does not take any arguments.");
+
+ frame = get_prev_frame (selected_frame);
+ if (frame == 0)
+ error ("\"finish\" not meaningful in the outermost frame.");
+
+ clear_proceed_status ();
+
+ fi = get_frame_info (frame);
+ sal = find_pc_line (fi->pc, 0);
+ sal.pc = fi->pc;
+ set_momentary_breakpoint (sal, frame);
+
+ /* Find the function we will return from. */
+
+ fi = get_frame_info (selected_frame);
+ function = find_pc_function (fi->pc);
+
+ if (from_tty)
+ {
+ printf ("Run till exit from ");
+ print_selected_frame ();
+ }
+
+ proceed (-1, -1, 0);
+
+ if (stop_breakpoint == -3 && function != 0)
+ {
+ struct type *value_type;
+ register value val;
+ CORE_ADDR funcaddr;
+ extern char registers[];
+
+ value_type = TYPE_TARGET_TYPE (SYMBOL_TYPE (function));
+ if (!value_type)
+ fatal ("internal: finish_command: function has no target type");
+
+ if (TYPE_CODE (value_type) == TYPE_CODE_VOID)
+ return;
+
+ funcaddr = BLOCK_START (SYMBOL_BLOCK_VALUE (function));
+
+ val = value_being_returned (value_type, registers,
+ using_struct_return (function,
+ funcaddr,
+ value_type));
+
+ printf ("Value returned is $%d = ", record_latest_value (val));
+ value_print (val, stdout, 0, Val_no_prettyprint);
+ putchar ('\n');
+ }
+}
+
+static void
+program_info ()
+{
+ if (inferior_pid == 0)
+ {
+ printf ("The program being debugged is not being run.\n");
+ return;
+ }
+
+ printf ("Program being debugged is in process %d, stopped at 0x%x.\n",
+ inferior_pid, stop_pc);
+ if (stop_step)
+ printf ("It stopped after being stepped.\n");
+ else if (stop_breakpoint > 0)
+ printf ("It stopped at breakpoint %d.\n", stop_breakpoint);
+ else if (stop_signal)
+ printf ("It stopped with signal %d (%s).\n",
+ stop_signal, sys_siglist[stop_signal]);
+
+ printf ("\nType \"info stack\" or \"info reg\" for more information.\n");
+}
+
+static void
+environment_info (var)
+ char *var;
+{
+ if (var)
+ {
+ register char *val = get_in_environ (inferior_environ, var);
+ if (val)
+ printf ("%s = %s\n", var, val);
+ else
+ printf ("Environment variable \"%s\" not defined.\n", var);
+ }
+ else
+ {
+ register char **vector = environ_vector (inferior_environ);
+ while (*vector)
+ printf ("%s\n", *vector++);
+ }
+}
+
+static void
+set_environment_command (arg)
+ char *arg;
+{
+ register char *p, *val, *var;
+ int nullset = 0;
+
+ if (arg == 0)
+ error_no_arg ("environment variable and value");
+
+ /* Find seperation between variable name and value */
+ p = (char *) index (arg, '=');
+ val = (char *) index (arg, ' ');
+
+ if (p != 0 && val != 0)
+ {
+ /* We have both a space and an equals. If the space is before the
+ equals and the only thing between the two is more space, use
+ the equals */
+ if (p > val)
+ while (*val == ' ')
+ val++;
+
+ /* Take the smaller of the two. If there was space before the
+ "=", they will be the same right now. */
+ p = arg + min (p - arg, val - arg);
+ }
+ else if (val != 0 && p == 0)
+ p = val;
+
+ if (p == arg)
+ error_no_arg ("environment variable to set");
+
+ if (p == 0 || p[1] == 0)
+ {
+ nullset = 1;
+ if (p == 0)
+ p = arg + strlen (arg); /* So that savestring below will work */
+ }
+ else
+ {
+ /* Not setting variable value to null */
+ val = p + 1;
+ while (*val == ' ' || *val == '\t')
+ val++;
+ }
+
+ while (p != arg && (p[-1] == ' ' || p[-1] == '\t')) p--;
+
+ var = savestring (arg, p - arg);
+ if (nullset)
+ {
+ printf ("Setting environment variable \"%s\" to null value.\n", var);
+ set_in_environ (inferior_environ, var, "");
+ }
+ else
+ set_in_environ (inferior_environ, var, val);
+ free (var);
+}
+
+static void
+unset_environment_command (var, from_tty)
+ char *var;
+ int from_tty;
+{
+ if (var == 0)
+ /* If there is no argument, delete all environment variables.
+ Ask for confirmation if reading from the terminal. */
+ if (!from_tty || query ("Delete all environment variables? "))
+ {
+ free_environ (inferior_environ);
+ inferior_environ = make_environ ();
+ }
+
+ unset_in_environ (inferior_environ, var);
+}
+
+/* Read an integer from debugged memory, given address and number of bytes. */
+
+long
+read_memory_integer (memaddr, len)
+ CORE_ADDR memaddr;
+ int len;
+{
+ char cbuf;
+ short sbuf;
+ int ibuf;
+ long lbuf;
+ int result_err;
+ extern int sys_nerr;
+
+ if (len == sizeof (char))
+ {
+ result_err = read_memory (memaddr, &cbuf, len);
+ if (result_err)
+ error ("Error reading memory address 0x%x: %s (%d).",
+ memaddr, (result_err < sys_nerr ?
+ sys_errlist[result_err] :
+ "uknown error"), result_err);
+ return cbuf;
+ }
+ if (len == sizeof (short))
+ {
+ result_err = read_memory (memaddr, &sbuf, len);
+ if (result_err)
+ error ("Error reading memory address 0x%x: %s (%d).",
+ memaddr, (result_err < sys_nerr ?
+ sys_errlist[result_err] :
+ "uknown error"), result_err);
+ return sbuf;
+ }
+ if (len == sizeof (int))
+ {
+ result_err = read_memory (memaddr, &ibuf, len);
+ if (result_err)
+ error ("Error reading memory address 0x%x: %s (%d).",
+ memaddr, (result_err < sys_nerr ?
+ sys_errlist[result_err] :
+ "uknown error"), result_err);
+ return ibuf;
+ }
+ if (len == sizeof (lbuf))
+ {
+ result_err = read_memory (memaddr, &lbuf, len);
+ if (result_err)
+ error ("Error reading memory address 0x%x: %s (%d).",
+ memaddr, (result_err < sys_nerr ?
+ sys_errlist[result_err] :
+ "uknown error"), result_err);
+ return lbuf;
+ }
+ error ("Cannot handle integers of %d bytes.", len);
+}
+
+CORE_ADDR
+read_pc ()
+{
+ return (CORE_ADDR) read_register (PC_REGNUM);
+}
+
+void
+write_pc (val)
+ CORE_ADDR val;
+{
+ write_register (PC_REGNUM, (long) val);
+#ifdef NPC_REGNUM
+ write_register (NPC_REGNUM, (long) val+4);
+#endif
+}
+
+char *reg_names[] = REGISTER_NAMES;
+
+#if !defined (DO_REGISTERS_INFO)
+static void
+print_one_register(i)
+ int i;
+{
+ unsigned char raw_buffer[MAX_REGISTER_RAW_SIZE];
+ unsigned char virtual_buffer[MAX_REGISTER_VIRTUAL_SIZE];
+ REGISTER_TYPE val;
+
+ /* Get the data in raw format, then convert also to virtual format. */
+ read_relative_register_raw_bytes (i, raw_buffer);
+ REGISTER_CONVERT_TO_VIRTUAL (i, raw_buffer, virtual_buffer);
+
+ fputs_filtered (reg_names[i], stdout);
+ print_spaces_filtered (15 - strlen (reg_names[i]), stdout);
+
+ /* If virtual format is floating, print it that way. */
+ if (TYPE_CODE (REGISTER_VIRTUAL_TYPE (i)) == TYPE_CODE_FLT
+ && ! INVALID_FLOAT (virtual_buffer, REGISTER_VIRTUAL_SIZE (i)))
+ val_print (REGISTER_VIRTUAL_TYPE (i), virtual_buffer, 0,
+ stdout, 0, 1, 0, Val_pretty_default);
+ /* Else if virtual format is too long for printf,
+ print in hex a byte at a time. */
+ else if (REGISTER_VIRTUAL_SIZE (i) > sizeof (long))
+ {
+ register int j;
+ printf_filtered ("0x");
+ for (j = 0; j < REGISTER_VIRTUAL_SIZE (i); j++)
+ printf_filtered ("%02x", virtual_buffer[j]);
+ }
+ /* Else print as integer in hex and in decimal. */
+ else
+ {
+ long val;
+
+ bcopy (virtual_buffer, &val, sizeof (long));
+ if (val == 0)
+ printf_filtered ("0");
+ else
+ printf_filtered ("0x%08x %d", val, val);
+ }
+
+ /* If register has different raw and virtual formats,
+ print the raw format in hex now. */
+
+ if (REGISTER_CONVERTIBLE (i))
+ {
+ register int j;
+
+ printf_filtered (" (raw 0x");
+ for (j = 0; j < REGISTER_RAW_SIZE (i); j++)
+ printf_filtered ("%02x", raw_buffer[j]);
+ printf_filtered (")");
+ }
+ printf_filtered ("\n");
+}
+
+
+/* Print out the machine register regnum. If regnum is -1,
+ print all registers.
+ For most machines, having all_registers_info() print the
+ register(s) one per line is good enough. If a different format
+ is required, (eg, for SPARC or Pyramid 90x, which both have
+ lots of regs), or there is an existing convention for showing
+ all the registers, define the macro DO_REGISTERS_INFO(regnum)
+ to provide that format. */
+static void
+do_registers_info (regnum, fpregs)
+ int regnum;
+ int fpregs;
+{
+ register int i;
+
+ if (regnum >= 0) {
+ print_one_register(regnum);
+ return;
+ }
+#ifdef notdef
+ printf_filtered (
+"Register Contents (relative to selected stack frame)\n\n");
+#endif
+ for (i = 0; i < NUM_REGS; i++)
+ if (TYPE_CODE(REGISTER_VIRTUAL_TYPE(i)) != TYPE_CODE_FLT ||
+ fpregs)
+ print_one_register(i);
+}
+#endif /* no DO_REGISTERS_INFO. */
+
+static void
+registers_info (addr_exp, fpregs)
+ char *addr_exp;
+ int fpregs;
+{
+ int regnum;
+
+ if (!have_inferior_p () && !have_core_file_p ())
+ error ("No inferior or core file");
+
+ if (addr_exp)
+ {
+ if (*addr_exp >= '0' && *addr_exp <= '9')
+ regnum = atoi (addr_exp);
+ else
+ {
+ register char *p = addr_exp;
+ if (p[0] == '$')
+ p++;
+ for (regnum = 0; regnum < NUM_REGS; regnum++)
+ if (!strcmp (p, reg_names[regnum]))
+ break;
+ if (regnum == NUM_REGS)
+ error ("%s: invalid register name.", addr_exp);
+ }
+ }
+ else
+ regnum = -1;
+
+#ifdef DO_REGISTERS_INFO
+ DO_REGISTERS_INFO(regnum);
+#else
+ do_registers_info(regnum, fpregs);
+#endif
+}
+
+static void
+all_registers_info (addr_exp)
+ char *addr_exp;
+{
+ registers_info(addr_exp, 1);
+}
+
+static void
+nofp_registers_info (addr_exp)
+ char *addr_exp;
+{
+ registers_info(addr_exp, 0);
+}
+
+
+#ifdef ATTACH_DETACH
+#define PROCESS_ATTACH_ALLOWED 1
+#else
+#define PROCESS_ATTACH_ALLOWED 0
+#endif
+/*
+ * TODO:
+ * Should save/restore the tty state since it might be that the
+ * program to be debugged was started on this tty and it wants
+ * the tty in some state other than what we want. If it's running
+ * on another terminal or without a terminal, then saving and
+ * restoring the tty state is a harmless no-op.
+ * This only needs to be done if we are attaching to a process.
+ */
+
+/*
+ * attach_command --
+ * takes a program started up outside of gdb and ``attaches'' to it.
+ * This stops it cold in its tracks and allows us to start tracing it.
+ * For this to work, we must be able to send the process a
+ * signal and we must have the same effective uid as the program.
+ */
+static void
+attach_command (args, from_tty)
+ char *args;
+ int from_tty;
+{
+ char *exec_file;
+ int pid;
+ int remote = 0;
+
+ dont_repeat();
+
+ if (!args)
+ error_no_arg ("process-id or device file to attach");
+
+ while (*args == ' ' || *args == '\t') args++;
+
+ if (args[0] < '0' || args[0] > '9')
+ remote = 1;
+ else
+#ifndef ATTACH_DETACH
+ error ("Can't attach to a process on this machine.");
+#else
+ pid = atoi (args);
+#endif
+
+ if (inferior_pid)
+ {
+ if (query ("A program is being debugged already. Kill it? "))
+ kill_inferior ();
+ else
+ error ("Inferior not killed.");
+ }
+
+ exec_file = (char *) get_exec_file (1);
+
+ if (from_tty)
+ {
+ if (remote)
+ printf ("Attaching remote machine\n");
+ else
+ printf ("Attaching program: %s pid %d\n",
+ exec_file, pid);
+ fflush (stdout);
+ }
+
+ if (remote)
+ {
+ remote_open (args, from_tty);
+ start_remote ();
+ }
+#ifdef ATTACH_DETACH
+ else
+ attach_program (pid);
+#endif
+}
+
+/*
+ * detach_command --
+ * takes a program previously attached to and detaches it.
+ * The program resumes execution and will no longer stop
+ * on signals, etc. We better not have left any breakpoints
+ * in the program or it'll die when it hits one. For this
+ * to work, it may be necessary for the process to have been
+ * previously attached. It *might* work if the program was
+ * started via the normal ptrace (PTRACE_TRACEME).
+ */
+
+static void
+detach_command (args, from_tty)
+ char *args;
+ int from_tty;
+{
+ int signal = 0;
+
+#ifdef ATTACH_DETACH
+ if (inferior_pid && !remote_debugging)
+ {
+ if (from_tty)
+ {
+ char *exec_file = (char *)get_exec_file (0);
+ if (exec_file == 0)
+ exec_file = "";
+ printf ("Detaching program: %s pid %d\n",
+ exec_file, inferior_pid);
+ fflush (stdout);
+ }
+ if (args)
+ signal = atoi (args);
+
+ detach (signal);
+ inferior_pid = 0;
+ }
+ else
+#endif
+ {
+ if (!remote_debugging)
+ error ("Not currently attached to subsidiary or remote process.");
+
+ if (args)
+ error ("Argument given to \"detach\" when remotely debugging.");
+
+ inferior_pid = 0;
+ remote_close (from_tty);
+ }
+}
+
+/* ARGSUSED */
+static void
+float_info (addr_exp)
+ char *addr_exp;
+{
+#ifdef FLOAT_INFO
+ FLOAT_INFO;
+#else
+ printf ("No floating point info available for this processor.\n");
+#endif
+}
+
+extern struct cmd_list_element *setlist, *deletelist;
+
+void
+_initialize_infcmd ()
+{
+ add_com ("tty", class_run, tty_command,
+ "Set terminal for future runs of program being debugged.");
+
+ add_cmd ("args", class_run, set_args_command,
+ "Specify arguments to give program being debugged when it is started.\n\
+Follow this command with any number of args, to be passed to the program.",
+ &setlist);
+
+ add_info ("environment", environment_info,
+ "The environment to give the program, or one variable's value.\n\
+With an argument VAR, prints the value of environment variable VAR to\n\
+give the program being debugged. With no arguments, prints the entire\n\
+environment to be given to the program.");
+
+ add_cmd ("environment", class_run, unset_environment_command,
+ "Cancel environment variable VAR for the program.\n\
+This does not affect the program until the next \"run\" command.",
+ &deletelist);
+
+ add_cmd ("environment", class_run, set_environment_command,
+ "Set environment variable value to give the program.\n\
+Arguments are VAR VALUE where VAR is variable name and VALUE is value.\n\
+VALUES of environment variables are uninterpreted strings.\n\
+This does not affect the program until the next \"run\" command.",
+ &setlist);
+
+#ifdef ATTACH_DETACH
+ add_com ("attach", class_run, attach_command,
+ "Attach to a process that was started up outside of GDB.\n\
+This command may take as argument a process id or a device file.\n\
+For a process id, you must have permission to send the process a signal,\n\
+and it must have the same effective uid as the debugger.\n\
+For a device file, the file must be a connection to a remote debug server.\n\n\
+Before using \"attach\", you must use the \"exec-file\" command\n\
+to specify the program running in the process,\n\
+and the \"symbol-file\" command to load its symbol table.");
+#else
+ add_com ("attach", class_run, attach_command,
+ "Attach to a process that was started up outside of GDB.\n\
+This commands takes as an argument the name of a device file.\n\
+This file must be a connection to a remote debug server.\n\n\
+Before using \"attach\", you must use the \"exec-file\" command\n\
+to specify the program running in the process,\n\
+and the \"symbol-file\" command to load its symbol table.");
+#endif
+ add_com ("detach", class_run, detach_command,
+ "Detach the process previously attached.\n\
+The process is no longer traced and continues its execution.");
+
+ add_com ("signal", class_run, signal_command,
+ "Continue program giving it signal number SIGNUMBER.");
+
+ add_com ("stepi", class_run, stepi_command,
+ "Step one instruction exactly.\n\
+Argument N means do this N times (or till program stops for another reason).");
+ add_com_alias ("si", "stepi", class_alias, 0);
+
+ add_com ("nexti", class_run, nexti_command,
+ "Step one instruction, but proceed through subroutine calls.\n\
+Argument N means do this N times (or till program stops for another reason).");
+ add_com_alias ("ni", "nexti", class_alias, 0);
+
+ add_com ("finish", class_run, finish_command,
+ "Execute until selected stack frame returns.\n\
+Upon return, the value returned is printed and put in the value history.");
+
+ add_com ("next", class_run, next_command,
+ "Step program, proceeding through subroutine calls.\n\
+Like the \"step\" command as long as subroutine calls do not happen;\n\
+when they do, the call is treated as one instruction.\n\
+Argument N means do this N times (or till program stops for another reason).");
+ add_com_alias ("n", "next", class_run, 1);
+
+ add_com ("step", class_run, step_command,
+ "Step program until it reaches a different source line.\n\
+Argument N means do this N times (or till program stops for another reason).");
+ add_com_alias ("s", "step", class_run, 1);
+
+ add_com ("until", class_run, until_command,
+ "Execute until the program reaches a source line greater than the current\n\
+or a specified line or address or function (same args as break command).\n\
+Execution will also stop upon exit from the current stack frame.");
+ add_com_alias ("u", "until", class_run, 1);
+
+ add_com ("jump", class_run, jump_command,
+ "Continue program being debugged at specified line or address.\n\
+Give as argument either LINENUM or *ADDR, where ADDR is an expression\n\
+for an address to start at.");
+
+ add_com ("cont", class_run, cont_command,
+ "Continue program being debugged, after signal or breakpoint.\n\
+If proceeding from breakpoint, a number N may be used as an argument:\n\
+then the same breakpoint won't break until the Nth time it is reached.");
+ add_com_alias ("c", "cont", class_run, 1);
+
+ add_com ("run", class_run, run_command,
+ "Start debugged program. You may specify arguments to give it.\n\
+Args may include \"*\", or \"[...]\"; they are expanded using \"sh\".\n\
+Input and output redirection with \">\", \"<\", or \">>\" are also allowed.\n\n\
+With no arguments, uses arguments last specified (with \"run\" or \"set args\".\n\
+To cancel previous arguments and run with no arguments,\n\
+use \"set args\" without arguments.");
+ add_com_alias ("r", "run", class_run, 1);
+
+ add_info ("registers", nofp_registers_info,
+ "List of registers and their contents, for selected stack frame.\n\
+Register name as argument means describe only that register.\n\
+(Doesn't display floating point registers; use 'info all-registers'.)\n");
+
+ add_info ("all-registers", all_registers_info,
+ "List of registers and their contents, for selected stack frame.\n\
+Register name as argument means describe only that register.");
+
+ add_info ("program", program_info,
+ "Execution status of the program.");
+
+ add_info ("float", float_info,
+ "Print the status of the floating point unit\n");
+
+ inferior_args = savestring (" ", 1); /* By default, no args. */
+ inferior_environ = make_environ ();
+ init_environ (inferior_environ);
+}
+
diff --git a/gnu/usr.bin/kgdb/inferior.h b/gnu/usr.bin/kgdb/inferior.h
new file mode 100644
index 000000000000..04c662e4626c
--- /dev/null
+++ b/gnu/usr.bin/kgdb/inferior.h
@@ -0,0 +1,142 @@
+/*-
+ * This code is derived from software copyrighted by the Free Software
+ * Foundation.
+ *
+ * Modified 1991 by Donn Seeley at UUNET Technologies, Inc.
+ * Modified 1990 by Van Jacobson at Lawrence Berkeley Laboratory.
+ *
+ * @(#)inferior.h 6.3 (Berkeley) 5/8/91
+ */
+
+/* Variables that describe the inferior process running under GDB:
+ Where it is, why it stopped, and how to step it.
+ Copyright (C) 1986, 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+/*
+ * Structure in which to save the status of the inferior. Save
+ * through "save_inferior_status", restore through
+ * "restore_inferior_status".
+ * This pair of routines should be called around any transfer of
+ * control to the inferior which you don't want showing up in your
+ * control variables.
+ */
+struct inferior_status {
+ int pc_changed;
+ int stop_signal;
+ int stop_pc;
+ int stop_frame_address;
+ int stop_breakpoint;
+ int stop_step;
+ int stop_stack_dummy;
+ int stopped_by_random_signal;
+ int trap_expected;
+ CORE_ADDR step_range_start;
+ CORE_ADDR step_range_end;
+ FRAME_ADDR step_frame_address;
+ int step_over_calls;
+ CORE_ADDR step_resume_break_address;
+ int stop_after_trap;
+ int stop_after_attach;
+ FRAME_ADDR selected_frame_address;
+ int selected_level;
+ struct command_line *breakpoint_commands;
+ char register_context[REGISTER_BYTES];
+ int restore_stack_info;
+};
+
+void save_inferior_status (), restore_inferior_status ();
+
+/* File name for default use for standard in/out in the inferior. */
+
+extern char *inferior_io_terminal;
+
+/* Pid of our debugged inferior, or 0 if no inferior now. */
+
+extern int inferior_pid;
+
+/* Nonzero if debugging a remote machine via a serial link or ethernet. */
+extern int remote_debugging;
+
+/* Routines for use in remote debugging. Documented in remote.c. */
+int remote_read_inferior_memory ();
+int remote_write_inferior_memory ();
+
+/* Last signal that the inferior received (why it stopped). */
+
+extern int stop_signal;
+
+/* Address at which inferior stopped. */
+
+extern CORE_ADDR stop_pc;
+
+/* Stack frame when program stopped. */
+
+extern FRAME_ADDR stop_frame_address;
+
+/* Number of breakpoint it stopped at, or 0 if none. */
+
+extern int stop_breakpoint;
+
+/* Nonzero if stopped due to a step command. */
+
+extern int stop_step;
+
+/* Nonzero if stopped due to completion of a stack dummy routine. */
+
+extern int stop_stack_dummy;
+
+/* Nonzero if program stopped due to a random (unexpected) signal in
+ inferior process. */
+
+extern int stopped_by_random_signal;
+
+/* Range to single step within.
+ If this is nonzero, respond to a single-step signal
+ by continuing to step if the pc is in this range. */
+
+extern CORE_ADDR step_range_start; /* Inclusive */
+extern CORE_ADDR step_range_end; /* Exclusive */
+
+/* Stack frame address as of when stepping command was issued.
+ This is how we know when we step into a subroutine call,
+ and how to set the frame for the breakpoint used to step out. */
+
+extern FRAME_ADDR step_frame_address;
+
+/* 1 means step over all subroutine calls.
+ -1 means step over calls to undebuggable functions. */
+
+extern int step_over_calls;
+
+/* If stepping, nonzero means step count is > 1
+ so don't print frame next time inferior stops
+ if it stops due to stepping. */
+
+extern int step_multi;
+
+/* Save register contents here when about to pop a stack dummy frame. */
+
+extern char stop_registers[REGISTER_BYTES];
+
+/* Nonzero if pc has been changed by the debugger
+ since the inferior stopped. */
+
+extern int pc_changed;
+
+long read_memory_integer ();
diff --git a/gnu/usr.bin/kgdb/inflow.c b/gnu/usr.bin/kgdb/inflow.c
new file mode 100644
index 000000000000..939e5936e0da
--- /dev/null
+++ b/gnu/usr.bin/kgdb/inflow.c
@@ -0,0 +1,568 @@
+/*-
+ * This code is derived from software copyrighted by the Free Software
+ * Foundation.
+ *
+ * Modified 1991 by Donn Seeley at UUNET Technologies, Inc.
+ * Modified 1990 by Van Jacobson at Lawrence Berkeley Laboratory.
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)inflow.c 6.5 (Berkeley) 5/8/91";
+#endif /* not lint */
+
+/* Low level interface to ptrace, for GDB when running under Unix.
+ Copyright (C) 1986, 1987, 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include <stdio.h>
+#include "defs.h"
+#include "param.h"
+#include "frame.h"
+#include "inferior.h"
+
+#ifdef USG
+#include <sys/types.h>
+#endif
+
+/* Some USG-esque systems (some of which are BSD-esque enough so that USG
+ is not defined) want this header, and it won't do any harm. */
+#include <fcntl.h>
+
+#include <sys/param.h>
+#include <sys/dir.h>
+#include <signal.h>
+
+#ifdef HAVE_TERMIO
+#include <termio.h>
+#undef TIOCGETP
+#define TIOCGETP TCGETA
+#undef TIOCSETN
+#define TIOCSETN TCSETA
+#undef TIOCSETP
+#define TIOCSETP TCSETAF
+#define TERMINAL struct termio
+#else
+#include <sys/ioctl.h>
+#include <fcntl.h>
+#include <sgtty.h>
+#define TERMINAL struct sgttyb
+#endif
+
+#ifdef SET_STACK_LIMIT_HUGE
+#include <sys/time.h>
+#include <sys/resource.h>
+extern int original_stack_limit;
+#endif /* SET_STACK_LIMIT_HUGE */
+
+extern int errno;
+
+/* Nonzero if we are debugging an attached outside process
+ rather than an inferior. */
+
+int attach_flag;
+
+
+/* Record terminal status separately for debugger and inferior. */
+
+static TERMINAL sg_inferior;
+static TERMINAL sg_ours;
+
+static int tflags_inferior;
+static int tflags_ours;
+
+#if defined(TIOCGETC) && !defined(TIOCGETC_BROKEN)
+static struct tchars tc_inferior;
+static struct tchars tc_ours;
+#endif
+
+#ifdef TIOCGLTC
+static struct ltchars ltc_inferior;
+static struct ltchars ltc_ours;
+#endif
+
+#ifdef TIOCLGET
+static int lmode_inferior;
+static int lmode_ours;
+#endif
+
+#ifdef TIOCGPGRP
+static int pgrp_inferior;
+static int pgrp_ours;
+#else
+static int (*sigint_ours) ();
+static int (*sigquit_ours) ();
+#endif /* TIOCGPGRP */
+
+/* Copy of inferior_io_terminal when inferior was last started. */
+static char *inferior_thisrun_terminal;
+
+static void terminal_ours_1 ();
+
+/* Nonzero if our terminal settings are in effect.
+ Zero if the inferior's settings are in effect. */
+static int terminal_is_ours;
+
+/* Initialize the terminal settings we record for the inferior,
+ before we actually run the inferior. */
+
+void
+terminal_init_inferior ()
+{
+ if (remote_debugging)
+ return;
+
+ sg_inferior = sg_ours;
+ tflags_inferior = tflags_ours;
+
+#if defined(TIOCGETC) && !defined(TIOCGETC_BROKEN)
+ tc_inferior = tc_ours;
+#endif
+
+#ifdef TIOCGLTC
+ ltc_inferior = ltc_ours;
+#endif
+
+#ifdef TIOCLGET
+ lmode_inferior = lmode_ours;
+#endif
+
+#ifdef TIOCGPGRP
+ pgrp_inferior = inferior_pid;
+#endif /* TIOCGPGRP */
+
+ terminal_is_ours = 1;
+}
+
+/* Put the inferior's terminal settings into effect.
+ This is preparation for starting or resuming the inferior. */
+
+void
+terminal_inferior ()
+{
+ if (remote_debugging)
+ return;
+
+ if (terminal_is_ours) /* && inferior_thisrun_terminal == 0) */
+ {
+ fcntl (0, F_SETFL, tflags_inferior);
+ fcntl (0, F_SETFL, tflags_inferior);
+ ioctl (0, TIOCSETN, &sg_inferior);
+
+#if defined(TIOCGETC) && !defined(TIOCGETC_BROKEN)
+ ioctl (0, TIOCSETC, &tc_inferior);
+#endif
+#ifdef TIOCGLTC
+ ioctl (0, TIOCSLTC, &ltc_inferior);
+#endif
+#ifdef TIOCLGET
+ ioctl (0, TIOCLSET, &lmode_inferior);
+#endif
+
+#ifdef TIOCGPGRP
+ ioctl (0, TIOCSPGRP, &pgrp_inferior);
+#else
+ sigint_ours = (int (*) ()) signal (SIGINT, SIG_IGN);
+ sigquit_ours = (int (*) ()) signal (SIGQUIT, SIG_IGN);
+#endif /* TIOCGPGRP */
+ }
+ terminal_is_ours = 0;
+}
+
+/* Put some of our terminal settings into effect,
+ enough to get proper results from our output,
+ but do not change into or out of RAW mode
+ so that no input is discarded.
+
+ After doing this, either terminal_ours or terminal_inferior
+ should be called to get back to a normal state of affairs. */
+
+void
+terminal_ours_for_output ()
+{
+ if (remote_debugging)
+ return;
+
+ terminal_ours_1 (1);
+}
+
+/* Put our terminal settings into effect.
+ First record the inferior's terminal settings
+ so they can be restored properly later. */
+
+void
+terminal_ours ()
+{
+ if (remote_debugging)
+ return;
+
+ terminal_ours_1 (0);
+}
+
+static void
+terminal_ours_1 (output_only)
+ int output_only;
+{
+#ifdef TIOCGPGRP
+ /* Ignore this signal since it will happen when we try to set the pgrp. */
+ void (*osigttou) ();
+#endif /* TIOCGPGRP */
+
+ if (!terminal_is_ours) /* && inferior_thisrun_terminal == 0) */
+ {
+ terminal_is_ours = 1;
+
+#ifdef TIOCGPGRP
+ osigttou = signal (SIGTTOU, SIG_IGN);
+
+ ioctl (0, TIOCGPGRP, &pgrp_inferior);
+ ioctl (0, TIOCSPGRP, &pgrp_ours);
+
+ signal (SIGTTOU, osigttou);
+#else
+ signal (SIGINT, sigint_ours);
+ signal (SIGQUIT, sigquit_ours);
+#endif /* TIOCGPGRP */
+
+ tflags_inferior = fcntl (0, F_GETFL, 0);
+ ioctl (0, TIOCGETP, &sg_inferior);
+
+#if defined(TIOCGETC) && !defined(TIOCGETC_BROKEN)
+ ioctl (0, TIOCGETC, &tc_inferior);
+#endif
+#ifdef TIOCGLTC
+ ioctl (0, TIOCGLTC, &ltc_inferior);
+#endif
+#ifdef TIOCLGET
+ ioctl (0, TIOCLGET, &lmode_inferior);
+#endif
+ }
+
+#ifdef HAVE_TERMIO
+ sg_ours.c_lflag |= ICANON;
+ if (output_only && !(sg_inferior.c_lflag & ICANON))
+ sg_ours.c_lflag &= ~ICANON;
+#else /* not HAVE_TERMIO */
+ sg_ours.sg_flags &= ~RAW & ~CBREAK;
+ if (output_only)
+ sg_ours.sg_flags |= (RAW | CBREAK) & sg_inferior.sg_flags;
+#endif /* not HAVE_TERMIO */
+
+ fcntl (0, F_SETFL, tflags_ours);
+ fcntl (0, F_SETFL, tflags_ours);
+ ioctl (0, TIOCSETN, &sg_ours);
+
+#if defined(TIOCGETC) && !defined(TIOCGETC_BROKEN)
+ ioctl (0, TIOCSETC, &tc_ours);
+#endif
+#ifdef TIOCGLTC
+ ioctl (0, TIOCSLTC, &ltc_ours);
+#endif
+#ifdef TIOCLGET
+ ioctl (0, TIOCLSET, &lmode_ours);
+#endif
+
+#ifdef HAVE_TERMIO
+ sg_ours.c_lflag |= ICANON;
+#else /* not HAVE_TERMIO */
+ sg_ours.sg_flags &= ~RAW & ~CBREAK;
+#endif /* not HAVE_TERMIO */
+}
+
+static void
+term_status_command ()
+{
+ register int i;
+
+ if (remote_debugging)
+ {
+ printf_filtered ("No terminal status when remote debugging.\n");
+ return;
+ }
+
+ printf_filtered ("Inferior's terminal status (currently saved by GDB):\n");
+
+#ifdef HAVE_TERMIO
+
+ printf_filtered ("fcntl flags = 0x%x, c_iflag = 0x%x, c_oflag = 0x%x,\n",
+ tflags_inferior, sg_inferior.c_iflag, sg_inferior.c_oflag);
+ printf_filtered ("c_cflag = 0x%x, c_lflag = 0x%x, c_line = 0x%x.\n",
+ sg_inferior.c_cflag, sg_inferior.c_lflag, sg_inferior.c_line);
+ printf_filtered ("c_cc: ");
+ for (i = 0; (i < NCC); i += 1)
+ printf_filtered ("0x%x ", sg_inferior.c_cc[i]);
+ printf_filtered ("\n");
+
+#else /* not HAVE_TERMIO */
+
+ printf_filtered ("fcntl flags = 0x%x, sgttyb.sg_flags = 0x%x, owner pid = %d.\n",
+ tflags_inferior, sg_inferior.sg_flags, pgrp_inferior);
+
+#endif /* not HAVE_TERMIO */
+
+#if defined(TIOCGETC) && !defined(TIOCGETC_BROKEN)
+ printf_filtered ("tchars: ");
+ for (i = 0; i < sizeof (struct tchars); i++)
+ printf_filtered ("0x%x ", ((char *)&tc_inferior)[i]);
+ printf_filtered ("\n");
+#endif
+
+#ifdef TIOCGLTC
+ printf_filtered ("ltchars: ");
+ for (i = 0; i < sizeof (struct ltchars); i++)
+ printf_filtered ("0x%x ", ((char *)&ltc_inferior)[i]);
+ printf_filtered ("\n");
+ ioctl (0, TIOCSLTC, &ltc_ours);
+#endif
+
+#ifdef TIOCLGET
+ printf_filtered ("lmode: %x\n", lmode_inferior);
+#endif
+}
+
+static void
+new_tty (ttyname)
+ char *ttyname;
+{
+ register int tty;
+ register int fd;
+
+#ifdef TIOCNOTTY
+ /* Disconnect the child process from our controlling terminal. */
+ tty = open("/dev/tty", O_RDWR);
+ if (tty > 0)
+ {
+ ioctl(tty, TIOCNOTTY, 0);
+ close(tty);
+ }
+#endif
+
+ /* Now open the specified new terminal. */
+
+ tty = open(ttyname, O_RDWR);
+ if (tty == -1)
+ _exit(1);
+
+ /* Avoid use of dup2; doesn't exist on all systems. */
+ if (tty != 0)
+ { close (0); dup (tty); }
+ if (tty != 1)
+ { close (1); dup (tty); }
+ if (tty != 2)
+ { close (2); dup (tty); }
+ if (tty > 2)
+ close(tty);
+}
+
+/* Start an inferior process and returns its pid.
+ ALLARGS is a string containing shell command to run the program.
+ ENV is the environment vector to pass. */
+
+#ifndef SHELL_FILE
+#define SHELL_FILE "/bin/sh"
+#endif
+
+int
+create_inferior (allargs, env)
+ char *allargs;
+ char **env;
+{
+ int pid;
+ char *shell_command;
+ extern int sys_nerr;
+ extern int errno;
+
+ /* If desired, concat something onto the front of ALLARGS.
+ SHELL_COMMAND is the result. */
+#ifdef SHELL_COMMAND_CONCAT
+ shell_command = (char *) alloca (strlen (SHELL_COMMAND_CONCAT) + strlen (allargs) + 1);
+ strcpy (shell_command, SHELL_COMMAND_CONCAT);
+ strcat (shell_command, allargs);
+#else
+ shell_command = allargs;
+#endif
+
+ /* exec is said to fail if the executable is open. */
+ close_exec_file ();
+
+#if defined(USG) && !defined(HAVE_VFORK)
+ pid = fork ();
+#else
+ pid = vfork ();
+#endif
+
+ if (pid < 0)
+ perror_with_name ("vfork");
+
+ if (pid == 0)
+ {
+#ifdef TIOCGPGRP
+ /* Run inferior in a separate process group. */
+ setpgrp (getpid (), getpid ());
+#endif /* TIOCGPGRP */
+
+#ifdef SET_STACK_LIMIT_HUGE
+ /* Reset the stack limit back to what it was. */
+ {
+ struct rlimit rlim;
+
+ getrlimit (RLIMIT_STACK, &rlim);
+ rlim.rlim_cur = original_stack_limit;
+ setrlimit (RLIMIT_STACK, &rlim);
+ }
+#endif /* SET_STACK_LIMIT_HUGE */
+
+
+ inferior_thisrun_terminal = inferior_io_terminal;
+ if (inferior_io_terminal != 0)
+ new_tty (inferior_io_terminal);
+
+/* It seems that changing the signal handlers for the inferior after
+ a vfork also changes them for the superior. See comments in
+ initialize_signals for how we get the right signal handlers
+ for the inferior. */
+/* Not needed on Sun, at least, and loses there
+ because it clobbers the superior. */
+/*??? signal (SIGQUIT, SIG_DFL);
+ signal (SIGINT, SIG_DFL); */
+
+ call_ptrace (0);
+ execle (SHELL_FILE, "sh", "-c", shell_command, 0, env);
+
+ fprintf (stderr, "Cannot exec %s: %s.\n", SHELL_FILE,
+ errno < sys_nerr ? sys_errlist[errno] : "unknown error");
+ fflush (stderr);
+ _exit (0177);
+ }
+
+#ifdef TIOCGPGRP
+ /* Avoid race with TIOCSPGRP: guarantee that inferior's pgrp exists. */
+ setpgrp (pid, pid);
+#endif /* TIOCGPGRP */
+
+#ifdef CREATE_INFERIOR_HOOK
+ CREATE_INFERIOR_HOOK (pid);
+#endif
+ return pid;
+}
+
+/* Kill the inferior process. Make us have no inferior. */
+
+static void
+kill_command ()
+{
+ if (remote_debugging)
+ {
+ inferior_pid = 0;
+ return;
+ }
+ if (inferior_pid == 0)
+ error ("The program is not being run.");
+ if (!query ("Kill the inferior process? "))
+ error ("Not confirmed.");
+ kill_inferior ();
+}
+
+void
+inferior_died ()
+{
+ inferior_pid = 0;
+ attach_flag = 0;
+ mark_breakpoints_out ();
+ select_frame ((FRAME) 0, -1);
+ reopen_exec_file ();
+ if (have_core_file_p ())
+ set_current_frame ( create_new_frame (read_register (FP_REGNUM),
+ read_pc ()));
+ else
+ set_current_frame (0);
+}
+
+#if 0
+/* This function is just for testing, and on some systems (Sony NewsOS
+ 3.2) <sys/user.h> also includes <sys/time.h> which leads to errors
+ (since on this system at least sys/time.h is not protected against
+ multiple inclusion). */
+static void
+try_writing_regs_command ()
+{
+ register int i;
+ register int value;
+ extern int errno;
+
+ if (inferior_pid == 0)
+ error ("There is no inferior process now.");
+
+ /* A Sun 3/50 or 3/60 (at least) running SunOS 4.0.3 will have a
+ kernel panic if we try to write past the end of the user area.
+ Presumably Sun will fix this bug (it has been reported), but it
+ is tacky to crash the system, so at least on SunOS4 we need to
+ stop writing when we hit the end of the user area. */
+ for (i = 0; i < sizeof (struct user); i += 2)
+ {
+ QUIT;
+ errno = 0;
+ value = call_ptrace (3, inferior_pid, i, 0);
+ call_ptrace (6, inferior_pid, i, value);
+ if (errno == 0)
+ {
+ printf (" Succeeded with address 0x%x; value 0x%x (%d).\n",
+ i, value, value);
+ }
+ else if ((i & 0377) == 0)
+ printf (" Failed at 0x%x.\n", i);
+ }
+}
+#endif
+
+void
+_initialize_inflow ()
+{
+ add_com ("term-status", class_obscure, term_status_command,
+ "Print info on inferior's saved terminal status.");
+
+#if 0
+ add_com ("try-writing-regs", class_obscure, try_writing_regs_command,
+ "Try writing all locations in inferior's system block.\n\
+Report which ones can be written.");
+#endif
+
+ add_com ("kill", class_run, kill_command,
+ "Kill execution of program being debugged.");
+
+ inferior_pid = 0;
+
+ ioctl (0, TIOCGETP, &sg_ours);
+ tflags_ours = fcntl (0, F_GETFL, 0);
+
+#if defined(TIOCGETC) && !defined(TIOCGETC_BROKEN)
+ ioctl (0, TIOCGETC, &tc_ours);
+#endif
+#ifdef TIOCGLTC
+ ioctl (0, TIOCGLTC, &ltc_ours);
+#endif
+#ifdef TIOCLGET
+ ioctl (0, TIOCLGET, &lmode_ours);
+#endif
+
+#ifdef TIOCGPGRP
+ ioctl (0, TIOCGPGRP, &pgrp_ours);
+#endif /* TIOCGPGRP */
+
+ terminal_is_ours = 1;
+}
+
diff --git a/gnu/usr.bin/kgdb/infrun.c b/gnu/usr.bin/kgdb/infrun.c
new file mode 100644
index 000000000000..07fed12ebc77
--- /dev/null
+++ b/gnu/usr.bin/kgdb/infrun.c
@@ -0,0 +1,1458 @@
+/*-
+ * This code is derived from software copyrighted by the Free Software
+ * Foundation.
+ *
+ * Modified 1991 by Donn Seeley at UUNET Technologies, Inc.
+ * Modified 1990 by Van Jacobson at Lawrence Berkeley Laboratory.
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)infrun.c 6.4 (Berkeley) 5/8/91";
+#endif /* not lint */
+
+/* Start and stop the inferior process, for GDB.
+ Copyright (C) 1986, 1987, 1988, 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+/* Notes on the algorithm used in wait_for_inferior to determine if we
+ just did a subroutine call when stepping. We have the following
+ information at that point:
+
+ Current and previous (just before this step) pc.
+ Current and previous sp.
+ Current and previous start of current function.
+
+ If the start's of the functions don't match, then
+
+ a) We did a subroutine call.
+
+ In this case, the pc will be at the beginning of a function.
+
+ b) We did a subroutine return.
+
+ Otherwise.
+
+ c) We did a longjmp.
+
+ If we did a longjump, we were doing "nexti", since a next would
+ have attempted to skip over the assembly language routine in which
+ the longjmp is coded and would have simply been the equivalent of a
+ continue. I consider this ok behaivior. We'd like one of two
+ things to happen if we are doing a nexti through the longjmp()
+ routine: 1) It behaves as a stepi, or 2) It acts like a continue as
+ above. Given that this is a special case, and that anybody who
+ thinks that the concept of sub calls is meaningful in the context
+ of a longjmp, I'll take either one. Let's see what happens.
+
+ Acts like a subroutine return. I can handle that with no problem
+ at all.
+
+ -->So: If the current and previous beginnings of the current
+ function don't match, *and* the pc is at the start of a function,
+ we've done a subroutine call. If the pc is not at the start of a
+ function, we *didn't* do a subroutine call.
+
+ -->If the beginnings of the current and previous function do match,
+ either:
+
+ a) We just did a recursive call.
+
+ In this case, we would be at the very beginning of a
+ function and 1) it will have a prologue (don't jump to
+ before prologue, or 2) (we assume here that it doesn't have
+ a prologue) there will have been a change in the stack
+ pointer over the last instruction. (Ie. it's got to put
+ the saved pc somewhere. The stack is the usual place. In
+ a recursive call a register is only an option if there's a
+ prologue to do something with it. This is even true on
+ register window machines; the prologue sets up the new
+ window. It might not be true on a register window machine
+ where the call instruction moved the register window
+ itself. Hmmm. One would hope that the stack pointer would
+ also change. If it doesn't, somebody send me a note, and
+ I'll work out a more general theory.
+ randy@wheaties.ai.mit.edu). This is true (albeit slipperly
+ so) on all machines I'm aware of:
+
+ m68k: Call changes stack pointer. Regular jumps don't.
+
+ sparc: Recursive calls must have frames and therefor,
+ prologues.
+
+ vax: All calls have frames and hence change the
+ stack pointer.
+
+ b) We did a return from a recursive call. I don't see that we
+ have either the ability or the need to distinguish this
+ from an ordinary jump. The stack frame will be printed
+ when and if the frame pointer changes; if we are in a
+ function without a frame pointer, it's the users own
+ lookout.
+
+ c) We did a jump within a function. We assume that this is
+ true if we didn't do a recursive call.
+
+ d) We are in no-man's land ("I see no symbols here"). We
+ don't worry about this; it will make calls look like simple
+ jumps (and the stack frames will be printed when the frame
+ pointer moves), which is a reasonably non-violent response.
+
+#if 0
+ We skip this; it causes more problems than it's worth.
+#ifdef SUN4_COMPILER_FEATURE
+ We do a special ifdef for the sun 4, forcing it to single step
+ into calls which don't have prologues. This means that we can't
+ nexti over leaf nodes, we can probably next over them (since they
+ won't have debugging symbols, usually), and we can next out of
+ functions returning structures (with a "call .stret4" at the end).
+#endif
+#endif
+*/
+
+
+
+
+
+#include <stdio.h>
+#include "defs.h"
+#include "param.h"
+#include "symtab.h"
+#include "frame.h"
+#include "inferior.h"
+#include "wait.h"
+
+#include <signal.h>
+
+/* unistd.h is needed to #define X_OK */
+#ifdef USG
+#include <unistd.h>
+#else
+#include <sys/file.h>
+#endif
+
+#ifdef UMAX_PTRACE
+#include <aouthdr.h>
+#include <sys/param.h>
+#include <sys/ptrace.h>
+#endif /* UMAX_PTRACE */
+
+/* Required by <sys/user.h>. */
+#include <sys/types.h>
+/* Required by <sys/user.h>, at least on system V. */
+#include <sys/dir.h>
+/* Needed by IN_SIGTRAMP on some machines (e.g. vax). */
+#include <sys/param.h>
+/* Needed by IN_SIGTRAMP on some machines (e.g. vax). */
+#include <sys/user.h>
+
+extern int errno;
+
+/* Sigtramp is a routine that the kernel calls (which then calls the
+ signal handler). On most machines it is a library routine that
+ is linked into the executable.
+
+ This macro, given a program counter value and the name of the
+ function in which that PC resides (which can be null if the
+ name is not known), returns nonzero if the PC and name show
+ that we are in sigtramp.
+
+ On most machines just see if the name is sigtramp (and if we have
+ no name, assume we are not in sigtramp). */
+#if !defined (IN_SIGTRAMP)
+#define IN_SIGTRAMP(pc, name) \
+ name && !strcmp ("_sigtramp", name)
+#endif
+
+/* Tables of how to react to signals; the user sets them. */
+
+static char signal_stop[NSIG];
+static char signal_print[NSIG];
+static char signal_program[NSIG];
+
+/* Nonzero if breakpoints are now inserted in the inferior. */
+
+static int breakpoints_inserted;
+
+/* Function inferior was in as of last step command. */
+
+static struct symbol *step_start_function;
+
+/* This is the sequence of bytes we insert for a breakpoint. */
+
+static char break_insn[] = BREAKPOINT;
+
+/* Nonzero => address for special breakpoint for resuming stepping. */
+
+static CORE_ADDR step_resume_break_address;
+
+/* Original contents of the byte where the special breakpoint is. */
+
+static char step_resume_break_shadow[sizeof break_insn];
+
+/* Nonzero means the special breakpoint is a duplicate
+ so it has not itself been inserted. */
+
+static int step_resume_break_duplicate;
+
+/* Nonzero if we are expecting a trace trap and should proceed from it.
+ 2 means expecting 2 trace traps and should continue both times.
+ That occurs when we tell sh to exec the program: we will get
+ a trap after the exec of sh and a second when the program is exec'd. */
+
+static int trap_expected;
+
+/* Nonzero if the next time we try to continue the inferior, it will
+ step one instruction and generate a spurious trace trap.
+ This is used to compensate for a bug in HP-UX. */
+
+static int trap_expected_after_continue;
+
+/* Nonzero means expecting a trace trap
+ and should stop the inferior and return silently when it happens. */
+
+int stop_after_trap;
+
+/* Nonzero means expecting a trace trap due to attaching to a process. */
+
+int stop_after_attach;
+
+/* Nonzero if pc has been changed by the debugger
+ since the inferior stopped. */
+
+int pc_changed;
+
+/* Nonzero if debugging a remote machine via a serial link or ethernet. */
+
+int remote_debugging;
+
+/* Nonzero if program stopped due to error trying to insert breakpoints. */
+
+static int breakpoints_failed;
+
+/* Nonzero if inferior is in sh before our program got exec'd. */
+
+static int running_in_shell;
+
+/* Nonzero after stop if current stack frame should be printed. */
+
+static int stop_print_frame;
+
+#ifdef NO_SINGLE_STEP
+extern int one_stepped; /* From machine dependent code */
+extern void single_step (); /* Same. */
+#endif /* NO_SINGLE_STEP */
+
+static void insert_step_breakpoint ();
+static void remove_step_breakpoint ();
+static void wait_for_inferior ();
+static void normal_stop ();
+
+
+/* Clear out all variables saying what to do when inferior is continued.
+ First do this, then set the ones you want, then call `proceed'. */
+
+void
+clear_proceed_status ()
+{
+ trap_expected = 0;
+ step_range_start = 0;
+ step_range_end = 0;
+ step_frame_address = 0;
+ step_over_calls = -1;
+ step_resume_break_address = 0;
+ stop_after_trap = 0;
+ stop_after_attach = 0;
+
+ /* Discard any remaining commands left by breakpoint we had stopped at. */
+ clear_breakpoint_commands ();
+}
+
+/* Basic routine for continuing the program in various fashions.
+
+ ADDR is the address to resume at, or -1 for resume where stopped.
+ SIGNAL is the signal to give it, or 0 for none,
+ or -1 for act according to how it stopped.
+ STEP is nonzero if should trap after one instruction.
+ -1 means return after that and print nothing.
+ You should probably set various step_... variables
+ before calling here, if you are stepping.
+
+ You should call clear_proceed_status before calling proceed. */
+
+void
+proceed (addr, signal, step)
+ CORE_ADDR addr;
+ int signal;
+ int step;
+{
+ int oneproc = 0;
+
+ if (step > 0)
+ step_start_function = find_pc_function (read_pc ());
+ if (step < 0)
+ stop_after_trap = 1;
+
+ if (addr == -1)
+ {
+ /* If there is a breakpoint at the address we will resume at,
+ step one instruction before inserting breakpoints
+ so that we do not stop right away. */
+
+ if (!pc_changed && breakpoint_here_p (read_pc ()))
+ oneproc = 1;
+ }
+ else
+ {
+ write_register (PC_REGNUM, addr);
+#ifdef NPC_REGNUM
+ write_register (NPC_REGNUM, addr + 4);
+#endif
+ }
+
+ if (trap_expected_after_continue)
+ {
+ /* If (step == 0), a trap will be automatically generated after
+ the first instruction is executed. Force step one
+ instruction to clear this condition. This should not occur
+ if step is nonzero, but it is harmless in that case. */
+ oneproc = 1;
+ trap_expected_after_continue = 0;
+ }
+
+ if (oneproc)
+ /* We will get a trace trap after one instruction.
+ Continue it automatically and insert breakpoints then. */
+ trap_expected = 1;
+ else
+ {
+ int temp = insert_breakpoints ();
+ if (temp)
+ {
+ print_sys_errmsg ("ptrace", temp);
+ error ("Cannot insert breakpoints.\n\
+The same program may be running in another process.");
+ }
+ breakpoints_inserted = 1;
+ }
+
+ /* Install inferior's terminal modes. */
+ terminal_inferior ();
+
+ if (signal >= 0)
+ stop_signal = signal;
+ /* If this signal should not be seen by program,
+ give it zero. Used for debugging signals. */
+ else if (stop_signal < NSIG && !signal_program[stop_signal])
+ stop_signal= 0;
+
+ /* Resume inferior. */
+ resume (oneproc || step, stop_signal);
+
+ /* Wait for it to stop (if not standalone)
+ and in any case decode why it stopped, and act accordingly. */
+
+ wait_for_inferior ();
+ normal_stop ();
+}
+
+/* Writing the inferior pc as a register calls this function
+ to inform infrun that the pc has been set in the debugger. */
+
+void
+writing_pc (val)
+ CORE_ADDR val;
+{
+ stop_pc = val;
+ pc_changed = 1;
+}
+
+/* Start an inferior process for the first time.
+ Actually it was started by the fork that created it,
+ but it will have stopped one instruction after execing sh.
+ Here we must get it up to actual execution of the real program. */
+
+void
+start_inferior ()
+{
+ /* We will get a trace trap after one instruction.
+ Continue it automatically. Eventually (after shell does an exec)
+ it will get another trace trap. Then insert breakpoints and continue. */
+
+#ifdef START_INFERIOR_TRAPS_EXPECTED
+ trap_expected = START_INFERIOR_TRAPS_EXPECTED;
+#else
+ trap_expected = 2;
+#endif
+
+ running_in_shell = 0; /* Set to 1 at first SIGTRAP, 0 at second. */
+ trap_expected_after_continue = 0;
+ breakpoints_inserted = 0;
+ mark_breakpoints_out ();
+
+ /* Set up the "saved terminal modes" of the inferior
+ based on what modes we are starting it with. */
+ terminal_init_inferior ();
+
+ /* Install inferior's terminal modes. */
+ terminal_inferior ();
+
+ if (remote_debugging)
+ {
+ trap_expected = 0;
+ fetch_inferior_registers();
+ set_current_frame (create_new_frame (read_register (FP_REGNUM),
+ read_pc ()));
+ stop_frame_address = FRAME_FP (get_current_frame());
+ inferior_pid = 3;
+ if (insert_breakpoints())
+ fatal("Can't insert breakpoints");
+ breakpoints_inserted = 1;
+ proceed(-1, -1, 0);
+ }
+ else
+ {
+ wait_for_inferior ();
+ normal_stop ();
+ }
+}
+
+/* Start or restart remote-debugging of a machine over a serial link. */
+
+void
+restart_remote ()
+{
+ clear_proceed_status ();
+ running_in_shell = 0;
+ trap_expected = 0;
+ stop_after_attach = 1;
+ inferior_pid = 3;
+ wait_for_inferior ();
+ normal_stop();
+}
+
+void
+start_remote ()
+{
+ breakpoints_inserted = 0;
+ mark_breakpoints_out ();
+ restart_remote();
+}
+
+#ifdef ATTACH_DETACH
+
+/* Attach to process PID, then initialize for debugging it
+ and wait for the trace-trap that results from attaching. */
+
+void
+attach_program (pid)
+ int pid;
+{
+ attach (pid);
+ inferior_pid = pid;
+
+ mark_breakpoints_out ();
+ terminal_init_inferior ();
+ clear_proceed_status ();
+ stop_after_attach = 1;
+ /*proceed (-1, 0, -2);*/
+ terminal_inferior ();
+ wait_for_inferior ();
+ normal_stop ();
+}
+#endif /* ATTACH_DETACH */
+
+/* Wait for control to return from inferior to debugger.
+ If inferior gets a signal, we may decide to start it up again
+ instead of returning. That is why there is a loop in this function.
+ When this function actually returns it means the inferior
+ should be left stopped and GDB should read more commands. */
+
+static void
+wait_for_inferior ()
+{
+ register int pid;
+ WAITTYPE w;
+ CORE_ADDR pc;
+ int tem;
+ int another_trap;
+ int random_signal;
+ CORE_ADDR stop_sp, prev_sp;
+ CORE_ADDR prev_func_start, stop_func_start;
+ char *prev_func_name, *stop_func_name;
+ CORE_ADDR prologue_pc;
+ int stop_step_resume_break;
+ CORE_ADDR step_resume_break_sp;
+ int newmisc;
+ int newfun_pc;
+ struct symtab_and_line sal;
+ int prev_pc;
+ extern CORE_ADDR text_end;
+ int remove_breakpoints_on_following_step = 0;
+
+ prev_pc = read_pc ();
+ (void) find_pc_partial_function (prev_pc, &prev_func_name,
+ &prev_func_start);
+ prev_func_start += FUNCTION_START_OFFSET;
+ prev_sp = read_register (SP_REGNUM);
+
+ while (1)
+ {
+ /* Clean up saved state that will become invalid. */
+ pc_changed = 0;
+ flush_cached_frames ();
+
+ if (remote_debugging)
+ remote_wait (&w);
+ else
+ {
+ pid = wait (&w);
+ if (pid != inferior_pid)
+ continue;
+ }
+
+ /* See if the process still exists; clean up if it doesn't. */
+ if (WIFEXITED (w))
+ {
+ terminal_ours_for_output ();
+ if (WEXITSTATUS (w))
+ printf ("\nProgram exited with code 0%o.\n", WEXITSTATUS (w));
+ else
+ printf ("\nProgram exited normally.\n");
+ fflush (stdout);
+ inferior_died ();
+#ifdef NO_SINGLE_STEP
+ one_stepped = 0;
+#endif
+ stop_print_frame = 0;
+ break;
+ }
+ else if (!WIFSTOPPED (w))
+ {
+ kill_inferior ();
+ stop_print_frame = 0;
+ stop_signal = WTERMSIG (w);
+ terminal_ours_for_output ();
+ printf ("\nProgram terminated with signal %d, %s\n",
+ stop_signal,
+ stop_signal < NSIG
+ ? sys_siglist[stop_signal]
+ : "(undocumented)");
+ printf ("The inferior process no longer exists.\n");
+ fflush (stdout);
+#ifdef NO_SINGLE_STEP
+ one_stepped = 0;
+#endif
+ break;
+ }
+
+#ifdef NO_SINGLE_STEP
+ if (one_stepped)
+ single_step (0); /* This actually cleans up the ss */
+#endif /* NO_SINGLE_STEP */
+
+ fetch_inferior_registers ();
+ stop_pc = read_pc ();
+ set_current_frame ( create_new_frame (read_register (FP_REGNUM),
+ read_pc ()));
+
+ stop_frame_address = FRAME_FP (get_current_frame ());
+ stop_sp = read_register (SP_REGNUM);
+ stop_func_start = 0;
+ stop_func_name = 0;
+ /* Don't care about return value; stop_func_start and stop_func_name
+ will both be 0 if it doesn't work. */
+ (void) find_pc_partial_function (stop_pc, &stop_func_name,
+ &stop_func_start);
+ stop_func_start += FUNCTION_START_OFFSET;
+ another_trap = 0;
+ stop_breakpoint = 0;
+ stop_step = 0;
+ stop_stack_dummy = 0;
+ stop_print_frame = 1;
+ stop_step_resume_break = 0;
+ random_signal = 0;
+ stopped_by_random_signal = 0;
+ breakpoints_failed = 0;
+
+ /* Look at the cause of the stop, and decide what to do.
+ The alternatives are:
+ 1) break; to really stop and return to the debugger,
+ 2) drop through to start up again
+ (set another_trap to 1 to single step once)
+ 3) set random_signal to 1, and the decision between 1 and 2
+ will be made according to the signal handling tables. */
+
+ stop_signal = WSTOPSIG (w);
+
+ /* First, distinguish signals caused by the debugger from signals
+ that have to do with the program's own actions.
+ Note that breakpoint insns may cause SIGTRAP or SIGILL
+ or SIGEMT, depending on the operating system version.
+ Here we detect when a SIGILL or SIGEMT is really a breakpoint
+ and change it to SIGTRAP. */
+
+ if (stop_signal == SIGTRAP
+ || (breakpoints_inserted &&
+ (stop_signal == SIGILL
+ || stop_signal == SIGEMT))
+ || stop_after_attach)
+ {
+ if (stop_signal == SIGTRAP && stop_after_trap)
+ {
+ stop_print_frame = 0;
+ break;
+ }
+ if (stop_after_attach)
+ break;
+ /* Don't even think about breakpoints
+ if still running the shell that will exec the program
+ or if just proceeded over a breakpoint. */
+ if (stop_signal == SIGTRAP && trap_expected)
+ stop_breakpoint = 0;
+ else
+ {
+ /* See if there is a breakpoint at the current PC. */
+#if DECR_PC_AFTER_BREAK
+ /* Notice the case of stepping through a jump
+ that leads just after a breakpoint.
+ Don't confuse that with hitting the breakpoint.
+ What we check for is that 1) stepping is going on
+ and 2) the pc before the last insn does not match
+ the address of the breakpoint before the current pc. */
+ if (!(prev_pc != stop_pc - DECR_PC_AFTER_BREAK
+ && step_range_end && !step_resume_break_address))
+#endif /* DECR_PC_AFTER_BREAK not zero */
+ {
+ /* See if we stopped at the special breakpoint for
+ stepping over a subroutine call. */
+ if (stop_pc - DECR_PC_AFTER_BREAK
+ == step_resume_break_address)
+ {
+ stop_step_resume_break = 1;
+ if (DECR_PC_AFTER_BREAK)
+ {
+ stop_pc -= DECR_PC_AFTER_BREAK;
+ write_register (PC_REGNUM, stop_pc);
+ pc_changed = 0;
+ }
+ }
+ else
+ {
+ stop_breakpoint =
+ breakpoint_stop_status (stop_pc, stop_frame_address);
+ /* Following in case break condition called a
+ function. */
+ stop_print_frame = 1;
+ if (stop_breakpoint && DECR_PC_AFTER_BREAK)
+ {
+ stop_pc -= DECR_PC_AFTER_BREAK;
+ write_register (PC_REGNUM, stop_pc);
+#ifdef NPC_REGNUM
+ write_register (NPC_REGNUM, stop_pc + 4);
+#endif
+ pc_changed = 0;
+ }
+ }
+ }
+ }
+
+ if (stop_signal == SIGTRAP)
+ random_signal
+ = !(stop_breakpoint || trap_expected
+ || stop_step_resume_break
+#ifndef CANNOT_EXECUTE_STACK
+ || (stop_sp INNER_THAN stop_pc
+ && stop_pc INNER_THAN stop_frame_address)
+#else
+ || stop_pc == text_end - 2
+#endif
+ || (step_range_end && !step_resume_break_address));
+ else
+ {
+ random_signal
+ = !(stop_breakpoint
+ || stop_step_resume_break
+#ifdef sony_news
+ || (stop_sp INNER_THAN stop_pc
+ && stop_pc INNER_THAN stop_frame_address)
+#endif
+
+ );
+ if (!random_signal)
+ stop_signal = SIGTRAP;
+ }
+ }
+ else
+ random_signal = 1;
+
+ /* For the program's own signals, act according to
+ the signal handling tables. */
+
+ if (random_signal
+ && !(running_in_shell && stop_signal == SIGSEGV))
+ {
+ /* Signal not for debugging purposes. */
+ int printed = 0;
+
+ stopped_by_random_signal = 1;
+
+ if (stop_signal >= NSIG
+ || signal_print[stop_signal])
+ {
+ printed = 1;
+ terminal_ours_for_output ();
+ printf ("\nProgram received signal %d, %s\n",
+ stop_signal,
+ stop_signal < NSIG
+ ? sys_siglist[stop_signal]
+ : "(undocumented)");
+ fflush (stdout);
+ }
+ if (stop_signal >= NSIG
+ || signal_stop[stop_signal])
+ break;
+ /* If not going to stop, give terminal back
+ if we took it away. */
+ else if (printed)
+ terminal_inferior ();
+ }
+
+ /* Handle cases caused by hitting a breakpoint. */
+
+ if (!random_signal
+ && (stop_breakpoint || stop_step_resume_break))
+ {
+ /* Does a breakpoint want us to stop? */
+ if (stop_breakpoint && stop_breakpoint != -1
+ && stop_breakpoint != -0x1000001)
+ {
+ /* 0x1000000 is set in stop_breakpoint as returned by
+ breakpoint_stop_status to indicate a silent
+ breakpoint. */
+ if ((stop_breakpoint > 0 ? stop_breakpoint :
+ -stop_breakpoint)
+ & 0x1000000)
+ {
+ stop_print_frame = 0;
+ if (stop_breakpoint > 0)
+ stop_breakpoint -= 0x1000000;
+ else
+ stop_breakpoint += 0x1000000;
+ }
+ break;
+ }
+ /* But if we have hit the step-resumption breakpoint,
+ remove it. It has done its job getting us here.
+ The sp test is to make sure that we don't get hung
+ up in recursive calls in functions without frame
+ pointers. If the stack pointer isn't outside of
+ where the breakpoint was set (within a routine to be
+ stepped over), we're in the middle of a recursive
+ call. Not true for reg window machines (sparc)
+ because the must change frames to call things and
+ the stack pointer doesn't have to change if it
+ the bp was set in a routine without a frame (pc can
+ be stored in some other window).
+
+ The removal of the sp test is to allow calls to
+ alloca. Nasty things were happening. Oh, well,
+ gdb can only handle one level deep of lack of
+ frame pointer. */
+ if (stop_step_resume_break
+ && (step_frame_address == 0
+ || (stop_frame_address == step_frame_address)))
+ {
+ remove_step_breakpoint ();
+ step_resume_break_address = 0;
+ }
+ /* Otherwise, must remove breakpoints and single-step
+ to get us past the one we hit. */
+ else
+ {
+ remove_breakpoints ();
+ remove_step_breakpoint ();
+ breakpoints_inserted = 0;
+ another_trap = 1;
+ }
+
+ /* We come here if we hit a breakpoint but should not
+ stop for it. Possibly we also were stepping
+ and should stop for that. So fall through and
+ test for stepping. But, if not stepping,
+ do not stop. */
+ }
+
+ /* If this is the breakpoint at the end of a stack dummy,
+ just stop silently. */
+#ifndef CANNOT_EXECUTE_STACK
+ if (stop_sp INNER_THAN stop_pc
+ && stop_pc INNER_THAN stop_frame_address)
+#else
+ if (stop_pc == text_end - 2)
+#endif
+ {
+ stop_print_frame = 0;
+ stop_stack_dummy = 1;
+#ifdef HP_OS_BUG
+ trap_expected_after_continue = 1;
+#endif
+ break;
+ }
+
+ if (step_resume_break_address)
+ /* Having a step-resume breakpoint overrides anything
+ else having to do with stepping commands until
+ that breakpoint is reached. */
+ ;
+ /* If stepping through a line, keep going if still within it. */
+ else if (!random_signal
+ && step_range_end
+ && stop_pc >= step_range_start
+ && stop_pc < step_range_end
+ /* The step range might include the start of the
+ function, so if we are at the start of the
+ step range and either the stack or frame pointers
+ just changed, we've stepped outside */
+ && !(stop_pc == step_range_start
+ && stop_frame_address
+ && (stop_sp INNER_THAN prev_sp
+ || stop_frame_address != step_frame_address)))
+ {
+ /* Don't step through the return from a function
+ unless that is the first instruction stepped through. */
+ if (ABOUT_TO_RETURN (stop_pc))
+ {
+ stop_step = 1;
+ break;
+ }
+ }
+
+ /* We stepped out of the stepping range. See if that was due
+ to a subroutine call that we should proceed to the end of. */
+ else if (!random_signal && step_range_end)
+ {
+ if (stop_func_start)
+ {
+ prologue_pc = stop_func_start;
+ SKIP_PROLOGUE (prologue_pc);
+ }
+
+ /* Did we just take a signal? */
+ if (IN_SIGTRAMP (stop_pc, stop_func_name)
+ && !IN_SIGTRAMP (prev_pc, prev_func_name))
+ {
+ /* This code is needed at least in the following case:
+ The user types "next" and then a signal arrives (before
+ the "next" is done). */
+ /* We've just taken a signal; go until we are back to
+ the point where we took it and one more. */
+ step_resume_break_address = prev_pc;
+ step_resume_break_duplicate =
+ breakpoint_here_p (step_resume_break_address);
+ step_resume_break_sp = stop_sp;
+ if (breakpoints_inserted)
+ insert_step_breakpoint ();
+ /* Make sure that the stepping range gets us past
+ that instruction. */
+ if (step_range_end == 1)
+ step_range_end = (step_range_start = prev_pc) + 1;
+ remove_breakpoints_on_following_step = 1;
+ }
+
+ /* ==> See comments at top of file on this algorithm. <==*/
+
+ else if (stop_pc == stop_func_start
+ && (stop_func_start != prev_func_start
+ || prologue_pc != stop_func_start
+ || stop_sp != prev_sp))
+ {
+ /* It's a subroutine call */
+ if (step_over_calls > 0
+ || (step_over_calls && find_pc_function (stop_pc) == 0))
+ {
+ /* A subroutine call has happened. */
+ /* Set a special breakpoint after the return */
+ step_resume_break_address =
+ SAVED_PC_AFTER_CALL (get_current_frame ());
+ step_resume_break_duplicate
+ = breakpoint_here_p (step_resume_break_address);
+ step_resume_break_sp = stop_sp;
+ if (breakpoints_inserted)
+ insert_step_breakpoint ();
+ }
+ /* Subroutine call with source code we should not step over.
+ Do step to the first line of code in it. */
+ else if (step_over_calls)
+ {
+ SKIP_PROLOGUE (stop_func_start);
+ sal = find_pc_line (stop_func_start, 0);
+ /* Use the step_resume_break to step until
+ the end of the prologue, even if that involves jumps
+ (as it seems to on the vax under 4.2). */
+ /* If the prologue ends in the middle of a source line,
+ continue to the end of that source line.
+ Otherwise, just go to end of prologue. */
+#ifdef PROLOGUE_FIRSTLINE_OVERLAP
+ /* no, don't either. It skips any code that's
+ legitimately on the first line. */
+#else
+ if (sal.end && sal.pc != stop_func_start)
+ stop_func_start = sal.end;
+#endif
+
+ if (stop_func_start == stop_pc)
+ {
+ /* We are already there: stop now. */
+ stop_step = 1;
+ break;
+ }
+ else
+ /* Put the step-breakpoint there and go until there. */
+ {
+ step_resume_break_address = stop_func_start;
+ step_resume_break_sp = stop_sp;
+
+ step_resume_break_duplicate
+ = breakpoint_here_p (step_resume_break_address);
+ if (breakpoints_inserted)
+ insert_step_breakpoint ();
+ /* Do not specify what the fp should be when we stop
+ since on some machines the prologue
+ is where the new fp value is established. */
+ step_frame_address = 0;
+ /* And make sure stepping stops right away then. */
+ step_range_end = step_range_start;
+ }
+ }
+ else
+ {
+ /* We get here only if step_over_calls is 0 and we
+ just stepped into a subroutine. I presume
+ that step_over_calls is only 0 when we're
+ supposed to be stepping at the assembly
+ language level.*/
+ stop_step = 1;
+ break;
+ }
+ }
+ /* No subroutince call; stop now. */
+ else
+ {
+ stop_step = 1;
+ break;
+ }
+ }
+
+ /* Save the pc before execution, to compare with pc after stop. */
+ prev_pc = read_pc (); /* Might have been DECR_AFTER_BREAK */
+ prev_func_start = stop_func_start; /* Ok, since if DECR_PC_AFTER
+ BREAK is defined, the
+ original pc would not have
+ been at the start of a
+ function. */
+ prev_func_name = stop_func_name;
+ prev_sp = stop_sp;
+
+ /* If we did not do break;, it means we should keep
+ running the inferior and not return to debugger. */
+
+ /* If trap_expected is 2, it means continue once more
+ and insert breakpoints at the next trap.
+ If trap_expected is 1 and the signal was SIGSEGV, it means
+ the shell is doing some memory allocation--just resume it
+ with SIGSEGV.
+ Otherwise insert breakpoints now, and possibly single step. */
+
+ if (trap_expected > 1)
+ {
+ trap_expected--;
+ running_in_shell = 1;
+ resume (0, 0);
+ }
+ else if (running_in_shell && stop_signal == SIGSEGV)
+ {
+ resume (0, SIGSEGV);
+ }
+ else if (trap_expected && stop_signal != SIGTRAP)
+ {
+ /* We took a signal which we are supposed to pass through to
+ the inferior and we haven't yet gotten our trap. Simply
+ continue. */
+ resume ((step_range_end && !step_resume_break_address)
+ || trap_expected,
+ stop_signal);
+ }
+ else
+ {
+ /* Here, we are not awaiting another exec to get
+ the program we really want to debug.
+ Insert breakpoints now, unless we are trying
+ to one-proceed past a breakpoint. */
+ running_in_shell = 0;
+ /* If we've just finished a special step resume and we don't
+ want to hit a breakpoint, pull em out. */
+ if (!step_resume_break_address &&
+ remove_breakpoints_on_following_step)
+ {
+ remove_breakpoints_on_following_step = 0;
+ remove_breakpoints ();
+ breakpoints_inserted = 0;
+ }
+ else if (!breakpoints_inserted && !another_trap)
+ {
+ insert_step_breakpoint ();
+ breakpoints_failed = insert_breakpoints ();
+ if (breakpoints_failed)
+ break;
+ breakpoints_inserted = 1;
+ }
+
+ trap_expected = another_trap;
+
+ if (stop_signal == SIGTRAP)
+ stop_signal = 0;
+
+ resume ((step_range_end && !step_resume_break_address)
+ || trap_expected,
+ stop_signal);
+ }
+ }
+}
+
+/* Here to return control to GDB when the inferior stops for real.
+ Print appropriate messages, remove breakpoints, give terminal our modes.
+
+ RUNNING_IN_SHELL nonzero means the shell got a signal before
+ exec'ing the program we wanted to run.
+ STOP_PRINT_FRAME nonzero means print the executing frame
+ (pc, function, args, file, line number and line text).
+ BREAKPOINTS_FAILED nonzero means stop was due to error
+ attempting to insert breakpoints. */
+
+static void
+normal_stop ()
+{
+ /* Make sure that the current_frame's pc is correct. This
+ is a correction for setting up the frame info before doing
+ DECR_PC_AFTER_BREAK */
+ if (inferior_pid)
+ (get_current_frame ())->pc = read_pc ();
+
+ if (breakpoints_failed)
+ {
+ terminal_ours_for_output ();
+ print_sys_errmsg ("ptrace", breakpoints_failed);
+ printf ("Stopped; cannot insert breakpoints.\n\
+The same program may be running in another process.\n");
+ }
+
+ if (inferior_pid)
+ remove_step_breakpoint ();
+
+ if (inferior_pid && breakpoints_inserted)
+ if (remove_breakpoints ())
+ {
+ terminal_ours_for_output ();
+ printf ("Cannot remove breakpoints because program is no longer writable.\n\
+It must be running in another process.\n\
+Further execution is probably impossible.\n");
+ }
+
+ breakpoints_inserted = 0;
+
+ /* Delete the breakpoint we stopped at, if it wants to be deleted.
+ Delete any breakpoint that is to be deleted at the next stop. */
+
+ breakpoint_auto_delete (stop_breakpoint);
+
+ /* If an auto-display called a function and that got a signal,
+ delete that auto-display to avoid an infinite recursion. */
+
+ if (stopped_by_random_signal)
+ disable_current_display ();
+
+ if (step_multi && stop_step)
+ return;
+
+ terminal_ours ();
+
+ if (running_in_shell)
+ {
+ if (stop_signal == SIGSEGV)
+ {
+ char *exec_file = (char *) get_exec_file (1);
+
+ if (access (exec_file, X_OK) != 0)
+ printf ("The file \"%s\" is not executable.\n", exec_file);
+ else
+ /* I don't think we should ever get here.
+ wait_for_inferior now ignores SIGSEGV's which happen in
+ the shell (since the Bourne shell (/bin/sh) has some
+ rather, er, uh, *unorthodox* memory management
+ involving catching SIGSEGV). */
+ printf ("\
+You have just encountered a bug in \"sh\". GDB starts your program\n\
+by running \"sh\" with a command to exec your program.\n\
+This is so that \"sh\" will process wildcards and I/O redirection.\n\
+This time, \"sh\" crashed.\n\
+\n\
+One known bug in \"sh\" bites when the environment takes up a lot of space.\n\
+Try \"info env\" to see the environment; then use \"delete env\" to kill\n\
+some variables whose values are large; then do \"run\" again.\n\
+\n\
+If that works, you might want to put those \"delete env\" commands\n\
+into a \".gdbinit\" file in this directory so they will happen every time.\n");
+ }
+ /* Don't confuse user with his program's symbols on sh's data. */
+ stop_print_frame = 0;
+ }
+
+ if (inferior_pid == 0)
+ return;
+
+ /* Select innermost stack frame except on return from a stack dummy routine,
+ or if the program has exited. */
+ if (!stop_stack_dummy)
+ {
+ select_frame (get_current_frame (), 0);
+
+ if (stop_print_frame)
+ {
+ if (stop_breakpoint > 0)
+ printf ("\nBpt %d, ", stop_breakpoint);
+ print_sel_frame (stop_step
+ && step_frame_address == stop_frame_address
+ && step_start_function == find_pc_function (stop_pc));
+ /* Display the auto-display expressions. */
+ do_displays ();
+ }
+ }
+
+ if (stop_stack_dummy)
+ {
+ /* Pop the empty frame that contains the stack dummy.
+ POP_FRAME ends with a setting of the current frame, so we
+ can use that next. */
+#ifndef NEW_CALL_FUNCTION
+ POP_FRAME;
+#endif
+ select_frame (get_current_frame (), 0);
+ }
+}
+
+static void
+insert_step_breakpoint ()
+{
+ if (step_resume_break_address && !step_resume_break_duplicate)
+ {
+ read_memory (step_resume_break_address,
+ step_resume_break_shadow, sizeof break_insn);
+ write_memory (step_resume_break_address,
+ break_insn, sizeof break_insn);
+ }
+}
+
+static void
+remove_step_breakpoint ()
+{
+ if (step_resume_break_address && !step_resume_break_duplicate)
+ write_memory (step_resume_break_address, step_resume_break_shadow,
+ sizeof break_insn);
+}
+
+/* Specify how various signals in the inferior should be handled. */
+
+static void
+handle_command (args, from_tty)
+ char *args;
+ int from_tty;
+{
+ register char *p = args;
+ int signum = 0;
+ register int digits, wordlen;
+
+ if (!args)
+ error_no_arg ("signal to handle");
+
+ while (*p)
+ {
+ /* Find the end of the next word in the args. */
+ for (wordlen = 0; p[wordlen] && p[wordlen] != ' ' && p[wordlen] != '\t';
+ wordlen++);
+ for (digits = 0; p[digits] >= '0' && p[digits] <= '9'; digits++);
+
+ /* If it is all digits, it is signal number to operate on. */
+ if (digits == wordlen)
+ {
+ signum = atoi (p);
+ if (signum <= 0 || signum >= NSIG)
+ {
+ p[wordlen] = '\0';
+ error ("Invalid signal %s given as argument to \"handle\".", p);
+ }
+ if (signum == SIGTRAP || signum == SIGINT)
+ {
+ if (!query ("Signal %d is used by the debugger.\nAre you sure you want to change it? ", signum))
+ error ("Not confirmed.");
+ }
+ }
+ else if (signum == 0)
+ error ("First argument is not a signal number.");
+
+ /* Else, if already got a signal number, look for flag words
+ saying what to do for it. */
+ else if (!strncmp (p, "stop", wordlen))
+ {
+ signal_stop[signum] = 1;
+ signal_print[signum] = 1;
+ }
+ else if (wordlen >= 2 && !strncmp (p, "print", wordlen))
+ signal_print[signum] = 1;
+ else if (wordlen >= 2 && !strncmp (p, "pass", wordlen))
+ signal_program[signum] = 1;
+ else if (!strncmp (p, "ignore", wordlen))
+ signal_program[signum] = 0;
+ else if (wordlen >= 3 && !strncmp (p, "nostop", wordlen))
+ signal_stop[signum] = 0;
+ else if (wordlen >= 4 && !strncmp (p, "noprint", wordlen))
+ {
+ signal_print[signum] = 0;
+ signal_stop[signum] = 0;
+ }
+ else if (wordlen >= 4 && !strncmp (p, "nopass", wordlen))
+ signal_program[signum] = 0;
+ else if (wordlen >= 3 && !strncmp (p, "noignore", wordlen))
+ signal_program[signum] = 1;
+ /* Not a number and not a recognized flag word => complain. */
+ else
+ {
+ p[wordlen] = 0;
+ error ("Unrecognized flag word: \"%s\".", p);
+ }
+
+ /* Find start of next word. */
+ p += wordlen;
+ while (*p == ' ' || *p == '\t') p++;
+ }
+
+ if (from_tty)
+ {
+ /* Show the results. */
+ printf ("Number\tStop\tPrint\tPass to program\tDescription\n");
+ printf ("%d\t", signum);
+ printf ("%s\t", signal_stop[signum] ? "Yes" : "No");
+ printf ("%s\t", signal_print[signum] ? "Yes" : "No");
+ printf ("%s\t\t", signal_program[signum] ? "Yes" : "No");
+ printf ("%s\n", sys_siglist[signum]);
+ }
+}
+
+/* Print current contents of the tables set by the handle command. */
+
+static void
+signals_info (signum_exp)
+ char *signum_exp;
+{
+ register int i;
+ printf_filtered ("Number\tStop\tPrint\tPass to program\tDescription\n");
+
+ if (signum_exp)
+ {
+ i = parse_and_eval_address (signum_exp);
+ if (i >= NSIG || i < 0)
+ error ("Signal number out of bounds.");
+ printf_filtered ("%d\t", i);
+ printf_filtered ("%s\t", signal_stop[i] ? "Yes" : "No");
+ printf_filtered ("%s\t", signal_print[i] ? "Yes" : "No");
+ printf_filtered ("%s\t\t", signal_program[i] ? "Yes" : "No");
+ printf_filtered ("%s\n", sys_siglist[i]);
+ return;
+ }
+
+ printf_filtered ("\n");
+ for (i = 0; i < NSIG; i++)
+ {
+ QUIT;
+
+ printf_filtered ("%d\t", i);
+ printf_filtered ("%s\t", signal_stop[i] ? "Yes" : "No");
+ printf_filtered ("%s\t", signal_print[i] ? "Yes" : "No");
+ printf_filtered ("%s\t\t", signal_program[i] ? "Yes" : "No");
+ printf_filtered ("%s\n", sys_siglist[i]);
+ }
+
+ printf_filtered ("\nUse the \"handle\" command to change these tables.\n");
+}
+
+/* Save all of the information associated with the inferior<==>gdb
+ connection. INF_STATUS is a pointer to a "struct inferior_status"
+ (defined in inferior.h). */
+
+struct command_line *get_breakpoint_commands ();
+
+void
+save_inferior_status (inf_status, restore_stack_info)
+ struct inferior_status *inf_status;
+ int restore_stack_info;
+{
+ inf_status->pc_changed = pc_changed;
+ inf_status->stop_signal = stop_signal;
+ inf_status->stop_pc = stop_pc;
+ inf_status->stop_frame_address = stop_frame_address;
+ inf_status->stop_breakpoint = stop_breakpoint;
+ inf_status->stop_step = stop_step;
+ inf_status->stop_stack_dummy = stop_stack_dummy;
+ inf_status->stopped_by_random_signal = stopped_by_random_signal;
+ inf_status->trap_expected = trap_expected;
+ inf_status->step_range_start = step_range_start;
+ inf_status->step_range_end = step_range_end;
+ inf_status->step_frame_address = step_frame_address;
+ inf_status->step_over_calls = step_over_calls;
+ inf_status->step_resume_break_address = step_resume_break_address;
+ inf_status->stop_after_trap = stop_after_trap;
+ inf_status->stop_after_attach = stop_after_attach;
+ inf_status->breakpoint_commands = get_breakpoint_commands ();
+ inf_status->restore_stack_info = restore_stack_info;
+
+ read_register_bytes(0, inf_status->register_context, REGISTER_BYTES);
+ record_selected_frame (&(inf_status->selected_frame_address),
+ &(inf_status->selected_level));
+ return;
+}
+
+void
+restore_inferior_status (inf_status)
+ struct inferior_status *inf_status;
+{
+ FRAME fid;
+ int level = inf_status->selected_level;
+
+ pc_changed = inf_status->pc_changed;
+ stop_signal = inf_status->stop_signal;
+ stop_pc = inf_status->stop_pc;
+ stop_frame_address = inf_status->stop_frame_address;
+ stop_breakpoint = inf_status->stop_breakpoint;
+ stop_step = inf_status->stop_step;
+ stop_stack_dummy = inf_status->stop_stack_dummy;
+ stopped_by_random_signal = inf_status->stopped_by_random_signal;
+ trap_expected = inf_status->trap_expected;
+ step_range_start = inf_status->step_range_start;
+ step_range_end = inf_status->step_range_end;
+ step_frame_address = inf_status->step_frame_address;
+ step_over_calls = inf_status->step_over_calls;
+ step_resume_break_address = inf_status->step_resume_break_address;
+ stop_after_trap = inf_status->stop_after_trap;
+ stop_after_attach = inf_status->stop_after_attach;
+ set_breakpoint_commands (inf_status->breakpoint_commands);
+
+ write_register_bytes(0, inf_status->register_context, REGISTER_BYTES);
+
+ /* The inferior can be gone if the user types "print exit(0)"
+ (and perhaps other times). */
+ if (have_inferior_p() && inf_status->restore_stack_info)
+ {
+ flush_cached_frames();
+ set_current_frame(create_new_frame(read_register (FP_REGNUM),
+ read_pc()));
+
+ fid = find_relative_frame (get_current_frame (), &level);
+
+ if (fid == 0 ||
+ FRAME_FP (fid) != inf_status->selected_frame_address ||
+ level != 0)
+ {
+ /* I'm not sure this error message is a good idea. I have
+ only seen it occur after "Can't continue previously
+ requested operation" (we get called from do_cleanups), in
+ which case it just adds insult to injury (one confusing
+ error message after another. Besides which, does the
+ user really care if we can't restore the previously
+ selected frame? */
+ fprintf (stderr, "Unable to restore previously selected frame.\n");
+ select_frame (get_current_frame (), 0);
+ return;
+ }
+
+ select_frame (fid, inf_status->selected_level);
+ }
+ return;
+}
+
+
+void
+_initialize_infrun ()
+{
+ register int i;
+
+ add_info ("signals", signals_info,
+ "What debugger does when program gets various signals.\n\
+Specify a signal number as argument to print info on that signal only.");
+
+ add_com ("handle", class_run, handle_command,
+ "Specify how to handle a signal.\n\
+Args are signal number followed by flags.\n\
+Flags allowed are \"stop\", \"print\", \"pass\",\n\
+ \"nostop\", \"noprint\" or \"nopass\".\n\
+Print means print a message if this signal happens.\n\
+Stop means reenter debugger if this signal happens (implies print).\n\
+Pass means let program see this signal; otherwise program doesn't know.\n\
+Pass and Stop may be combined.");
+
+ for (i = 0; i < NSIG; i++)
+ {
+ signal_stop[i] = 1;
+ signal_print[i] = 1;
+ signal_program[i] = 1;
+ }
+
+ /* Signals caused by debugger's own actions
+ should not be given to the program afterwards. */
+ signal_program[SIGTRAP] = 0;
+ signal_program[SIGINT] = 0;
+
+ /* Signals that are not errors should not normally enter the debugger. */
+#ifdef SIGALRM
+ signal_stop[SIGALRM] = 0;
+ signal_print[SIGALRM] = 0;
+#endif /* SIGALRM */
+#ifdef SIGVTALRM
+ signal_stop[SIGVTALRM] = 0;
+ signal_print[SIGVTALRM] = 0;
+#endif /* SIGVTALRM */
+#ifdef SIGPROF
+ signal_stop[SIGPROF] = 0;
+ signal_print[SIGPROF] = 0;
+#endif /* SIGPROF */
+#ifdef SIGCHLD
+ signal_stop[SIGCHLD] = 0;
+ signal_print[SIGCHLD] = 0;
+#endif /* SIGCHLD */
+#ifdef SIGCLD
+ signal_stop[SIGCLD] = 0;
+ signal_print[SIGCLD] = 0;
+#endif /* SIGCLD */
+#ifdef SIGIO
+ signal_stop[SIGIO] = 0;
+ signal_print[SIGIO] = 0;
+#endif /* SIGIO */
+#ifdef SIGURG
+ signal_stop[SIGURG] = 0;
+ signal_print[SIGURG] = 0;
+#endif /* SIGURG */
+}
+
diff --git a/gnu/usr.bin/kgdb/kgdb.1 b/gnu/usr.bin/kgdb/kgdb.1
new file mode 100644
index 000000000000..3cc2dd9556a3
--- /dev/null
+++ b/gnu/usr.bin/kgdb/kgdb.1
@@ -0,0 +1,15 @@
+.\" Copyright (c) 1994 Paul Richards
+.TH kgdb 1 "10June94" "GNU Tools" "GNU Tools"
+.SH NAME
+kgdb \- The GDB Kernel Debugger
+.SH SYNOPSIS
+.na
+.TP
+.B kgdb
+.RB "[\|" \-help "\|]"
+.ad b
+.SH DESCRIPTION
+kgdb is the old gdb (GDB-3.5) used in FreeBSD 1.1 hardwired
+to run in kernel debugging mode since the installed gdb (GDB-4.11)
+does not support kernel debugging. For further details on gdb refer
+to the gdb man page.
diff --git a/secure/libexec/telnetd/global.c b/gnu/usr.bin/kgdb/kgdb_proto.h
index af21acc69fb1..99f21ca37716 100644
--- a/secure/libexec/telnetd/global.c
+++ b/gnu/usr.bin/kgdb/kgdb_proto.h
@@ -1,6 +1,9 @@
-/*
- * Copyright (c) 1989, 1993
- * The Regents of the University of California. All rights reserved.
+/*-
+ * Copyright (c) 1991 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Steven McCanne of Lawrence Berkeley Laboratory.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -29,20 +32,32 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
+ *
+ * @(#)kgdb_proto.h 6.3 (Berkeley) 5/8/91
+ *
+ *
+ * $Header: /home/ncvs/src/gnu/usr.bin/kgdb/kgdb_proto.h,v 1.1 1993/06/29 09:47:25 nate Exp $ (LBL)
*/
-#ifndef lint
-static char sccsid[] = "@(#)global.c 8.1 (Berkeley) 6/4/93";
-#endif /* not lint */
-
/*
- * Allocate global variables. We do this
- * by including the header file that defines
- * them all as externs, but first we define
- * the keyword "extern" to be nothing, so that
- * we will actually allocate the space.
+ * Message types.
*/
+#define KGDB_MEM_R 0x01
+#define KGDB_MEM_W 0x02
+#define KGDB_REG_R 0x03
+#define KGDB_REG_W 0x04
+#define KGDB_CONT 0x05
+#define KGDB_STEP 0x06
+#define KGDB_KILL 0x07
+#define KGDB_SIGNAL 0x08
+#define KGDB_EXEC 0x09
+
+#define KGDB_CMD(x) ((x) & 0x0f)
-#include "defs.h"
-#define extern
-#include "ext.h"
+/*
+ * Message flags.
+ */
+#define KGDB_ACK 0x80
+#define KGDB_DELTA 0x40
+#define KGDB_MORE 0x20
+#define KGDB_SEQ 0x10
diff --git a/gnu/usr.bin/kgdb/main.c b/gnu/usr.bin/kgdb/main.c
new file mode 100644
index 000000000000..5f4472f2057d
--- /dev/null
+++ b/gnu/usr.bin/kgdb/main.c
@@ -0,0 +1,2236 @@
+/*-
+ * This code is derived from software copyrighted by the Free Software
+ * Foundation.
+ *
+ * Modified 1991 by Donn Seeley at UUNET Technologies, Inc.
+ * Modified 1990 by Van Jacobson at Lawrence Berkeley Laboratory.
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)main.c 6.6 (Berkeley) 5/13/91";
+#endif /* not lint */
+
+/* Top level for GDB, the GNU debugger.
+ Copyright (C) 1986, 1987, 1988, 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include <stdio.h>
+#include "defs.h"
+#include "command.h"
+#include "param.h"
+#include "expression.h"
+
+#ifdef USG
+#include <sys/types.h>
+#include <unistd.h>
+#endif
+
+#include <sys/file.h>
+#include <setjmp.h>
+#include <signal.h>
+#include <sys/param.h>
+#include <sys/stat.h>
+#include <ctype.h>
+
+#ifdef SET_STACK_LIMIT_HUGE
+#include <sys/time.h>
+#include <sys/resource.h>
+
+int original_stack_limit;
+#endif
+
+/* If this definition isn't overridden by the header files, assume
+ that isatty and fileno exist on this system. */
+#ifndef ISATTY
+#define ISATTY(FP) (isatty (fileno (FP)))
+#endif
+
+extern void free ();
+
+/* Version number of GDB, as a string. */
+
+extern char *version;
+
+/*
+ * Declare all cmd_list_element's
+ */
+
+/* Chain containing all defined commands. */
+
+struct cmd_list_element *cmdlist;
+
+/* Chain containing all defined info subcommands. */
+
+struct cmd_list_element *infolist;
+
+/* Chain containing all defined enable subcommands. */
+
+struct cmd_list_element *enablelist;
+
+/* Chain containing all defined disable subcommands. */
+
+struct cmd_list_element *disablelist;
+
+/* Chain containing all defined delete subcommands. */
+
+struct cmd_list_element *deletelist;
+
+/* Chain containing all defined "enable breakpoint" subcommands. */
+
+struct cmd_list_element *enablebreaklist;
+
+/* Chain containing all defined set subcommands */
+
+struct cmd_list_element *setlist;
+
+/* Chain containing all defined \"set history\". */
+
+struct cmd_list_element *sethistlist;
+
+/* Chain containing all defined \"unset history\". */
+
+struct cmd_list_element *unsethistlist;
+
+/* stdio stream that command input is being read from. */
+
+FILE *instream;
+
+/* Current working directory. */
+
+char *current_directory;
+
+/* The directory name is actually stored here (usually). */
+static char dirbuf[MAXPATHLEN];
+
+#ifdef KERNELDEBUG
+/* Nonzero if we're debugging /dev/mem or a kernel crash dump */
+
+int kernel_debugging = 1;
+#endif
+
+/* Nonzero to inhibit confirmation of quitting or restarting
+ a stopped inferior. */
+int inhibit_confirm;
+
+/* Nonzero if we can write in text or core file */
+
+int writeable_text;
+
+/* The number of lines on a page, and the number of spaces
+ in a line. */
+int linesize, pagesize;
+
+/* Nonzero if we should refrain from using an X window. */
+
+int inhibit_windows = 0;
+
+/* Function to call before reading a command, if nonzero.
+ The function receives two args: an input stream,
+ and a prompt string. */
+
+void (*window_hook) ();
+
+extern int frame_file_full_name;
+int xgdb_verbose;
+
+void execute_command();
+void free_command_lines ();
+char *gdb_readline ();
+char *command_line_input ();
+static void initialize_main ();
+static void initialize_cmd_lists ();
+void command_loop ();
+static void source_command ();
+static void print_gdb_version ();
+static void float_handler ();
+static void cd_command ();
+
+char *getenv ();
+
+/* gdb prints this when reading a command interactively */
+static char *prompt;
+
+/* Buffer used for reading command lines, and the size
+ allocated for it so far. */
+
+char *line;
+int linesize;
+
+
+/* This is how `error' returns to command level. */
+
+jmp_buf to_top_level;
+
+void
+return_to_top_level ()
+{
+ quit_flag = 0;
+ immediate_quit = 0;
+ clear_breakpoint_commands ();
+ clear_momentary_breakpoints ();
+ disable_current_display ();
+ do_cleanups (0);
+ longjmp (to_top_level, 1);
+}
+
+/* Call FUNC with arg ARG, catching any errors.
+ If there is no error, return the value returned by FUNC.
+ If there is an error, return zero after printing ERRSTRING
+ (which is in addition to the specific error message already printed). */
+
+int
+catch_errors (func, arg, errstring)
+ int (*func) ();
+ int arg;
+ char *errstring;
+{
+ jmp_buf saved;
+ int val;
+ struct cleanup *saved_cleanup_chain;
+
+ saved_cleanup_chain = save_cleanups ();
+
+ bcopy (to_top_level, saved, sizeof (jmp_buf));
+
+ if (setjmp (to_top_level) == 0)
+ val = (*func) (arg);
+ else
+ {
+ fprintf (stderr, "%s\n", errstring);
+ val = 0;
+ }
+
+ restore_cleanups (saved_cleanup_chain);
+
+ bcopy (saved, to_top_level, sizeof (jmp_buf));
+ return val;
+}
+
+/* Handler for SIGHUP. */
+
+static void
+disconnect ()
+{
+ kill_inferior_fast ();
+ signal (SIGHUP, SIG_DFL);
+ kill (getpid (), SIGHUP);
+}
+
+/* Clean up on error during a "source" command (or execution of a
+ user-defined command).
+ Close the file opened by the command
+ and restore the previous input stream. */
+
+static void
+source_cleanup (stream)
+ FILE *stream;
+{
+ /* Instream may be 0; set to it when executing user-defined command. */
+ if (instream)
+ fclose (instream);
+ instream = stream;
+}
+
+/*
+ * Source $HOME/.gdbinit and $cwd/.gdbinit.
+ * If X is enabled, also $HOME/.xgdbinit and $cwd/.xgdbinit.source
+ */
+void
+source_init_files()
+{
+ char *homedir, initfile[256];
+ int samedir = 0;
+
+ /* Read init file, if it exists in home directory */
+ homedir = getenv ("HOME");
+ if (homedir) {
+ struct stat homebuf, cwdbuf;
+
+ sprintf(initfile, "%s/.gdbinit", homedir);
+ if (access (initfile, R_OK) == 0)
+ if (!setjmp (to_top_level))
+ source_command (initfile);
+ if (!inhibit_windows) {
+ sprintf(initfile, "%s/.xgdbinit", homedir);
+ if (access (initfile, R_OK) == 0)
+ if (!setjmp (to_top_level))
+ source_command (initfile);
+ }
+ /* Determine if current directory is the same as the home
+ directory, so we don't source the same file twice. */
+
+ bzero (&homebuf, sizeof (struct stat));
+ bzero (&cwdbuf, sizeof (struct stat));
+
+ stat(homedir, &homebuf);
+ stat(".", &cwdbuf);
+
+ samedir = bcmp(&homebuf, &cwdbuf, sizeof(struct stat)) == 0;
+ }
+ /* Read the input file in the current directory, *if* it isn't
+ the same file (it should exist, also). */
+ if (!samedir) {
+ if (access (".gdbinit", R_OK) == 0)
+ if (!setjmp (to_top_level))
+ source_command (".gdbinit");
+ if (access (".xgdbinit", R_OK) == 0)
+ if (!setjmp (to_top_level))
+ source_command (".xgdbinit");
+ }
+}
+
+
+int
+main (argc, argv, envp)
+ int argc;
+ char **argv;
+ char **envp;
+{
+ int count;
+ int inhibit_gdbinit = 0;
+ int quiet = 1;
+ int batch = 0;
+ register int i;
+ char *cp;
+
+ /* XXX Windows only for xgdb. */
+ char *strrchr();
+ if (cp = strrchr(argv[0], '/'))
+ ++cp;
+ else
+ cp = argv[0];
+ if (*cp != 'x')
+ inhibit_windows = 1;
+
+#if defined (ALIGN_STACK_ON_STARTUP)
+ i = (int) &count & 0x3;
+ if (i != 0)
+ alloca (4 - i);
+#endif
+
+ quit_flag = 0;
+ linesize = 100;
+ line = (char *) xmalloc (linesize);
+ *line = 0;
+ instream = stdin;
+
+ getwd (dirbuf);
+ current_directory = dirbuf;
+
+#ifdef SET_STACK_LIMIT_HUGE
+ {
+ struct rlimit rlim;
+
+ /* Set the stack limit huge so that alloca (particularly stringtab
+ * in dbxread.c) does not fail. */
+ getrlimit (RLIMIT_STACK, &rlim);
+ original_stack_limit = rlim.rlim_cur;
+ rlim.rlim_cur = rlim.rlim_max;
+ setrlimit (RLIMIT_STACK, &rlim);
+ }
+#endif /* SET_STACK_LIMIT_HUGE */
+
+ /* Look for flag arguments. */
+
+ for (i = 1; i < argc; i++)
+ {
+ if (!strcmp (argv[i], "-q") || !strcmp (argv[i], "-quiet"))
+ quiet = 1;
+ else if (!strcmp (argv[i], "-nx"))
+ inhibit_gdbinit = 1;
+ else if (!strcmp (argv[i], "-nw"))
+ inhibit_windows = 1;
+ else if (!strcmp (argv[i], "-batch"))
+ batch = 1, quiet = 1;
+ else if (!strcmp (argv[i], "-fullname"))
+ frame_file_full_name = 1;
+ else if (!strcmp (argv[i], "-xgdb_verbose"))
+ xgdb_verbose = 1;
+ /* -help: print a summary of command line switches. */
+ else if (!strcmp (argv[i], "-help"))
+ {
+ fputs ("\
+This is GDB, the GNU debugger. Use the command\n\
+ gdb [options] [executable [core-file]]\n\
+to enter the debugger.\n\
+\n\
+Options available are:\n\
+ -help Print this message.\n\
+ -quiet Do not print version number on startup.\n\
+ -fullname Output information used by emacs-GDB interface.\n\
+ -batch Exit after processing options.\n\
+ -nx Do not read .gdbinit file.\n\
+ -tty TTY Use TTY for input/output by the program being debugged.\n\
+ -cd DIR Change current directory to DIR.\n\
+ -directory DIR Search for source files in DIR.\n\
+ -command FILE Execute GDB commands from FILE.\n\
+ -symbols SYMFILE Read symbols from SYMFILE.\n\
+ -exec EXECFILE Use EXECFILE as the executable.\n\
+ -se FILE Use FILE as symbol file and executable file.\n\
+ -core COREFILE Analyze the core dump COREFILE.\n\
+ -w Writeable text.\n\
+ -v Print GNU message and version number on startup.\n\
+ -nc Don't confirm quit or run commands.\n\
+\n\
+For more information, type \"help\" from within GDB, or consult the\n\
+GDB manual (available as on-line info or a printed manual).\n", stderr);
+ /* Exiting after printing this message seems like
+ the most useful thing to do. */
+ exit (0);
+ }
+ else if (!strcmp (argv[i], "-w"))
+ writeable_text = 1;
+ else if (!strcmp (argv[i], "-v"))
+ quiet = 0;
+ else if (!strcmp (argv[i], "-nc"))
+ inhibit_confirm = 1;
+ else if (argv[i][0] == '-')
+ /* Other options take arguments, so don't confuse an
+ argument with an option. */
+ i++;
+ }
+
+ /* Run the init function of each source file */
+
+ initialize_cmd_lists (); /* This needs to be done first */
+ initialize_all_files ();
+ initialize_main (); /* But that omits this file! Do it now */
+ initialize_signals ();
+
+ if (!quiet)
+ print_gdb_version ();
+
+ /* Process the command line arguments. */
+
+ count = 0;
+ for (i = 1; i < argc; i++)
+ {
+ extern void exec_file_command (), symbol_file_command ();
+ extern void core_file_command ();
+ register char *arg = argv[i];
+ /* Args starting with - say what to do with the following arg
+ as a filename. */
+ if (arg[0] == '-')
+ {
+ extern void tty_command (), directory_command ();
+
+ if (!strcmp (arg, "-q") || !strcmp (arg, "-nx")
+ || !strcmp (arg, "-quiet") || !strcmp (arg, "-batch")
+ || !strcmp (arg, "-fullname") || !strcmp (arg, "-nw")
+ || !strcmp (arg, "-xgdb_verbose")
+ || !strcmp (arg, "-help")
+ || !strcmp (arg, "-k")
+ || !strcmp (arg, "-w")
+ || !strcmp (arg, "-v")
+ || !strcmp (arg, "-nc"))
+ /* Already processed above */
+ continue;
+
+ if (++i == argc)
+ fprintf (stderr, "No argument follows \"%s\".\n", arg);
+ if (!setjmp (to_top_level))
+ {
+ /* -s foo: get syms from foo. -e foo: execute foo.
+ -se foo: do both with foo. -c foo: use foo as core dump. */
+ if (!strcmp (arg, "-se"))
+ {
+ exec_file_command (argv[i], !batch);
+ symbol_file_command (argv[i], !batch);
+ }
+ else if (!strcmp (arg, "-s") || !strcmp (arg, "-symbols"))
+ symbol_file_command (argv[i], !batch);
+ else if (!strcmp (arg, "-e") || !strcmp (arg, "-exec"))
+ exec_file_command (argv[i], !batch);
+ else if (!strcmp (arg, "-c") || !strcmp (arg, "-core"))
+ core_file_command (argv[i], !batch);
+ /* -x foo: execute commands from foo. */
+ else if (!strcmp (arg, "-x") || !strcmp (arg, "-command")
+ || !strcmp (arg, "-commands"))
+ source_command (argv[i]);
+ /* -d foo: add directory `foo' to source-file directory
+ search-list */
+ else if (!strcmp (arg, "-d") || !strcmp (arg, "-dir")
+ || !strcmp (arg, "-directory"))
+ directory_command (argv[i], 0);
+ /* -cd FOO: specify current directory as FOO.
+ GDB remembers the precise string FOO as the dirname. */
+ else if (!strcmp (arg, "-cd"))
+ {
+ cd_command (argv[i], 0);
+ init_source_path ();
+ }
+ /* -t /def/ttyp1: use /dev/ttyp1 for inferior I/O. */
+ else if (!strcmp (arg, "-t") || !strcmp (arg, "-tty"))
+ tty_command (argv[i], 0);
+
+ else
+ error ("Unknown command-line switch: \"%s\"\n", arg);
+ }
+ }
+ else
+ {
+ /* Args not thus accounted for
+ are treated as, first, the symbol/executable file
+ and, second, the core dump file. */
+ count++;
+ if (!setjmp (to_top_level))
+ switch (count)
+ {
+ case 1:
+ exec_file_command (arg, !batch);
+ symbol_file_command (arg, !batch);
+ break;
+
+ case 2:
+ core_file_command (arg, !batch);
+ break;
+
+ case 3:
+ fprintf (stderr, "Excess command line args ignored. (%s%s)\n",
+ arg, (i == argc - 1) ? "" : " ...");
+ }
+ }
+ }
+
+ if (!inhibit_gdbinit)
+ source_init_files();
+
+ if (batch)
+ {
+#if 0
+ fatal ("Attempt to read commands from stdin in batch mode.");
+#endif
+ /* We have hit the end of the batch file. */
+ exit (0);
+ }
+
+ if (!quiet)
+ printf ("Type \"help\" for a list of commands.\n");
+
+ /* The command loop. */
+
+ while (1)
+ {
+ if (!setjmp (to_top_level))
+ command_loop ();
+ if (ISATTY(stdin))
+ clearerr (stdin); /* Don't get hung if C-d is typed. */
+ else if (feof(instream)) /* Avoid endless loops for redirected stdin */
+ break;
+ }
+ exit (0);
+}
+
+
+static void
+do_nothing ()
+{
+}
+
+/* Read commands from `instream' and execute them
+ until end of file. */
+void
+command_loop ()
+{
+ struct cleanup *old_chain;
+ register int toplevel = (instream == stdin);
+ register int interactive = (toplevel && ISATTY(stdin));
+
+ while (!feof (instream))
+ {
+ register char *cmd_line;
+
+ quit_flag = 0;
+ if (interactive)
+ reinitialize_more_filter ();
+ old_chain = make_cleanup (do_nothing, 0);
+ cmd_line = command_line_input (prompt, toplevel);
+ execute_command (cmd_line, toplevel);
+ /* Do any commands attached to breakpoint we stopped at. */
+ do_breakpoint_commands ();
+ do_cleanups (old_chain);
+ }
+}
+
+/* Commands call this if they do not want to be repeated by null lines. */
+
+void
+dont_repeat ()
+{
+ /* If we aren't reading from standard input, we are saving the last
+ thing read from stdin in line and don't want to delete it. Null lines
+ won't repeat here in any case. */
+ if (instream == stdin)
+ *line = 0;
+}
+
+/* Read a line from the stream "instream" without command line editing.
+
+ It prints PROMPT once at the start.
+ Action is compatible with "readline" (i.e., space for typing is
+ malloced & should be freed by caller). */
+char *
+gdb_readline (prompt)
+ char *prompt;
+{
+ int c;
+ char *result;
+ int input_index = 0;
+ int result_size = 80;
+
+ if (prompt)
+ {
+ printf (prompt);
+ fflush (stdout);
+ }
+
+ result = (char *) xmalloc (result_size);
+
+ while (1)
+ {
+ c = fgetc (instream ? instream : stdin);
+ if (c == EOF)
+ {
+ free(result);
+ return ((char *)0);
+ }
+ if (c == '\n')
+ break;
+
+ result[input_index++] = c;
+ if (input_index >= result_size)
+ {
+ result_size <= 1;
+ result = (char *)xrealloc(result, result_size);
+ }
+ }
+ result[input_index++] = '\0';
+ return result;
+}
+
+/* Declaration for fancy readline with command line editing. */
+char *readline ();
+
+/* Variables which control command line editing and history
+ substitution. These variables are given default values at the end
+ of this file. */
+static int command_editing_p;
+static int history_expansion_p;
+static int write_history_p;
+static int history_size;
+static char *history_filename;
+
+/* Variables which are necessary for fancy command line editing. */
+char *gdb_completer_word_break_characters =
+ " \t\n!@#$%^&*()-+=|~`}{[]\"';:?/>.<,";
+
+/* Functions that are used as part of the fancy command line editing. */
+
+/* Generate symbol names one by one for the completer. If STATE is
+ zero, then we need to initialize, otherwise the initialization has
+ already taken place. TEXT is what we expect the symbol to start
+ with. RL_LINE_BUFFER is available to be looked at; it contains the
+ entire text of the line. RL_POINT is the offset in that line of
+ the cursor. You should pretend that the line ends at RL_POINT. */
+char *
+symbol_completion_function (text, state)
+ char *text;
+ int state;
+{
+ char **make_symbol_completion_list ();
+ static char **list = (char **)NULL;
+ static int index;
+ char *output;
+ extern char *rl_line_buffer;
+ extern int rl_point;
+ char *tmp_command, *p;
+ struct cmd_list_element *c, *result_list;
+
+ if (!state)
+ {
+ /* Free the storage used by LIST, but not by the strings inside. This is
+ because rl_complete_internal () frees the strings. */
+ if (list)
+ free (list);
+ list = 0;
+ index = 0;
+
+ /* Decide whether to complete on a list of gdb commands or on
+ symbols. */
+ tmp_command = (char *) alloca (rl_point + 1);
+ p = tmp_command;
+
+ strncpy (tmp_command, rl_line_buffer, rl_point);
+ tmp_command[rl_point] = '\0';
+
+ if (rl_point == 0)
+ {
+ /* An empty line we want to consider ambiguous; that is,
+ it could be any command. */
+ c = (struct cmd_list_element *) -1;
+ result_list = 0;
+ }
+ else
+ c = lookup_cmd_1 (&p, cmdlist, &result_list, 1);
+
+ /* Move p up to the next interesting thing. */
+ while (*p == ' ' || *p == '\t')
+ p++;
+
+ if (!c)
+ /* He's typed something unrecognizable. Sigh. */
+ list = (char **) 0;
+ else if (c == (struct cmd_list_element *) -1)
+ {
+ if (p + strlen(text) != tmp_command + rl_point)
+ error ("Unrecognized command.");
+
+ /* He's typed something ambiguous. This is easier. */
+ if (result_list)
+ list = complete_on_cmdlist (*result_list->prefixlist, text);
+ else
+ list = complete_on_cmdlist (cmdlist, text);
+ }
+ else
+ {
+ /* If we've gotten this far, gdb has recognized a full
+ command. There are several possibilities:
+
+ 1) We need to complete on the command.
+ 2) We need to complete on the possibilities coming after
+ the command.
+ 2) We need to complete the text of what comes after the
+ command. */
+
+ if (!*p && *text)
+ /* Always (might be longer versions of thie command). */
+ list = complete_on_cmdlist (result_list, text);
+ else if (!*p && !*text)
+ {
+ if (c->prefixlist)
+ list = complete_on_cmdlist (*c->prefixlist, "");
+ else
+ list = make_symbol_completion_list ("");
+ }
+ else
+ {
+ if (c->prefixlist && !c->allow_unknown)
+ {
+ *p = '\0';
+ error ("\"%s\" command requires a subcommand.",
+ tmp_command);
+ }
+ else
+ list = make_symbol_completion_list (text);
+ }
+ }
+ }
+
+ /* If the debugged program wasn't compiled with symbols, or if we're
+ clearly completing on a command and no command matches, return
+ NULL. */
+ if (!list)
+ return ((char *)NULL);
+
+ output = list[index];
+ if (output)
+ index++;
+
+ return (output);
+}
+
+
+void
+print_prompt ()
+{
+ if (prompt)
+ {
+ printf ("%s", prompt);
+ fflush (stdout);
+ }
+}
+
+
+#ifdef HAVE_TERMIO
+#include <termio.h>
+static struct termio norm_tty;
+
+static void
+suspend_sig()
+{
+ int tty = fileno(stdin);
+ struct termio cur_tty;
+
+ ioctl(tty, TCGETA, &cur_tty);
+ ioctl(tty, TCSETAW, &norm_tty);
+
+ (void) sigsetmask(0);
+ signal(SIGTSTP, SIG_DFL);
+ kill(0, SIGTSTP);
+
+ /*
+ * we've just been resumed -- current tty params become new
+ * 'normal' params (in case tset/stty was done while we were
+ * suspended). Merge values that readline might have changed
+ * into new params, then restore term mode.
+ */
+ ioctl(tty, TCGETA, &norm_tty);
+ cur_tty.c_lflag = (cur_tty.c_lflag & (ICANON|ECHO|ISIG)) |
+ (norm_tty.c_lflag &~ (ICANON|ECHO|ISIG));
+ cur_tty.c_iflag = (cur_tty.c_iflag & (IXON|ISTRIP|INPCK)) |
+ (norm_tty.c_iflag &~ (IXON|ISTRIP|INPCK));
+ ioctl(tty, TCSETAW, &cur_tty);
+
+ signal(SIGTSTP, suspend_sig);
+ print_prompt();
+
+ /*
+ * Forget about any previous command -- null line now will do
+ * nothing.
+ */
+ dont_repeat();
+}
+
+#else
+
+#include <sys/ioctl.h>
+#include <fcntl.h>
+#include <sgtty.h>
+
+static struct sgttyb norm_tty;
+static struct tchars norm_tchars;
+static struct ltchars norm_ltchars;
+static int norm_lflags;
+
+#ifdef PASS8
+#define RL_TFLAGS (RAW|CRMOD|ECHO|CBREAK|PASS8)
+#else
+#define RL_TFLAGS (RAW|CRMOD|ECHO|CBREAK)
+#endif
+
+static void
+suspend_sig()
+{
+ int tty = fileno(stdin);
+ struct sgttyb cur_tty;
+ struct tchars cur_tchars;
+ struct ltchars cur_ltchars;
+ int cur_lflags;
+ int cur_flags;
+
+ ioctl(tty, TIOCGETP, &cur_tty);
+ ioctl(tty, TIOCGETC, &cur_tchars);
+ ioctl(tty, TIOCLGET, &cur_lflags);
+ ioctl(tty, TIOCGLTC, &cur_ltchars);
+
+ ioctl(tty, TIOCSETP, &norm_tty);
+ ioctl(tty, TIOCSETC, &norm_tchars);
+ ioctl(tty, TIOCLSET, &norm_lflags);
+ ioctl(tty, TIOCSLTC, &norm_ltchars);
+
+ (void) sigsetmask(0);
+ signal(SIGTSTP, SIG_DFL);
+ kill(0, SIGTSTP);
+
+ /*
+ * we've just been resumed -- current tty params become new
+ * 'normal' params (in case tset/stty was done while we were
+ * suspended). Merge values that readline might have changed
+ * into new params, then restore term mode.
+ */
+ ioctl(tty, TIOCGETP, &norm_tty);
+ cur_flags = cur_tty.sg_flags;
+ cur_tty = norm_tty;
+ cur_tty.sg_flags = (cur_tty.sg_flags &~ RL_TFLAGS)
+ | (cur_flags & RL_TFLAGS);
+
+ ioctl(tty, TIOCLGET, &norm_lflags);
+#ifdef LPASS8
+ cur_lflags = (cur_lflags &~ LPASS8) | (cur_flags & LPASS8);
+#endif
+ ioctl(tty, TIOCGETC, &norm_tchars);
+ ioctl(tty, TIOCGLTC, &norm_ltchars);
+
+ ioctl(tty, TIOCSETP, &cur_tty);
+ ioctl(tty, TIOCSETC, &cur_tchars);
+ ioctl(tty, TIOCLSET, &cur_lflags);
+ ioctl(tty, TIOCSLTC, &cur_ltchars);
+
+ signal(SIGTSTP, suspend_sig);
+ print_prompt();
+
+ /*
+ * Forget about any previous command -- null line now will do
+ * nothing.
+ */
+ dont_repeat();
+}
+#endif /* HAVE_TERMIO */
+
+/* Initialize signal handlers. */
+initialize_signals ()
+{
+ extern void request_quit ();
+ int tty = fileno(stdin);
+
+ signal (SIGINT, request_quit);
+
+ /* If we initialize SIGQUIT to SIG_IGN, then the SIG_IGN will get
+ passed to the inferior, which we don't want. It would be
+ possible to do a "signal (SIGQUIT, SIG_DFL)" after we fork, but
+ on BSD4.3 systems using vfork, that will (apparently) affect the
+ GDB process as well as the inferior (the signal handling tables
+ being shared between the two, apparently). Since we establish
+ a handler for SIGQUIT, when we call exec it will set the signal
+ to SIG_DFL for us. */
+ signal (SIGQUIT, do_nothing);
+ if (signal (SIGHUP, do_nothing) != SIG_IGN)
+ signal (SIGHUP, disconnect);
+ signal (SIGFPE, float_handler);
+
+ ioctl(tty, TIOCGETP, &norm_tty);
+ ioctl(tty, TIOCLGET, &norm_lflags);
+ ioctl(tty, TIOCGETC, &norm_tchars);
+ ioctl(tty, TIOCGLTC, &norm_ltchars);
+ signal(SIGTSTP, suspend_sig);
+}
+
+char *
+finish_command_input(inputline, repeat, interactive)
+ register char *inputline;
+ int repeat;
+ int interactive;
+{
+ static char *do_free;
+
+ if (do_free) {
+ free(do_free);
+ do_free = NULL;
+ }
+
+ /* Do history expansion if that is wished. */
+ if (interactive && history_expansion_p) {
+ int expanded;
+
+ expanded = history_expand(inputline, &do_free);
+ if (expanded) {
+ /* Print the changes. */
+ puts(do_free);
+
+ /* An error acts like no input. */
+ if (expanded < 0) {
+ *do_free = 0;
+ return (do_free);
+ }
+ }
+ inputline = do_free;
+ }
+ /* get rid of any leading whitespace */
+ while (isspace(*inputline))
+ ++inputline;
+ /*
+ * If we just got an empty line, and that is supposed to repeat the
+ * previous command, return the value in the global buffer.
+ */
+ if (*inputline == 0) {
+ if (repeat)
+ return (line);
+ } else if (interactive)
+ add_history(inputline);
+
+ /*
+ * If line is a comment, clear it out.
+ * Note: comments are added to the command history. This is useful
+ * when you type a command, and then realize you don't want to
+ * execute it quite yet. You can comment out the command and then
+ * later fetch it from the value history and remove the '#'.
+ */
+ if (*inputline == '#')
+ *inputline = 0;
+ else if (repeat) {
+ /* Save into global buffer. */
+ register int i = strlen(inputline) + 1;
+
+ if (i > linesize) {
+ line = xrealloc(line, i);
+ linesize = i;
+ }
+ strcpy(line, inputline);
+ }
+ return (inputline);
+}
+
+static char *
+get_a_cmd_line(prompt, interactive)
+ char *prompt;
+ int interactive;
+{
+ register char *cp;
+
+ /* Control-C quits instantly if typed while reading input. */
+ immediate_quit++;
+ if (interactive && command_editing_p) {
+ extern void (*rl_event_hook)();
+
+ rl_event_hook = window_hook;
+ cp = readline(prompt);
+ } else {
+ if (interactive) {
+ if (window_hook) {
+ print_prompt();
+ (*window_hook)();
+ }
+ } else
+ prompt = NULL;
+ cp = gdb_readline(prompt);
+ }
+ --immediate_quit;
+ return (cp);
+}
+
+/* Read one line from the command input stream `instream'
+ Returns the address of the start of the line.
+
+ *If* the instream == stdin & stdin is a terminal, the line read
+ is copied into the file line saver (global var char *line,
+ length linesize) so that it can be duplicated.
+
+ This routine either uses fancy command line editing or
+ simple input as the user has requested. */
+
+char *
+command_line_input(prompt, repeat)
+ char *prompt;
+ int repeat;
+{
+ static char *do_free;
+ register int interactive = (instream == stdin && ISATTY(instream));
+ register char *cp;
+ register int i;
+
+ if (do_free) {
+ free(do_free);
+ do_free = NULL;
+ }
+ cp = get_a_cmd_line(prompt, interactive);
+
+ /*
+ * handle continued lines (this loop is not particularly
+ * efficient because it's rare).
+ */
+ while (cp && cp[i = strlen(cp) - 1] == '\\') {
+ register char *np = get_a_cmd_line(prompt, interactive);
+ register int j;
+
+ if (np == NULL) {
+ cp[i] = 0;
+ break;
+ }
+ j = strlen(np);
+ cp = xrealloc(cp, i + j + 1);
+ strcpy(cp + i, np);
+ free(np);
+ }
+ if (cp == NULL)
+ return ("");
+ do_free = cp;
+ return (finish_command_input(cp, repeat, interactive));
+}
+
+
+#define MAX_USER_ARGS 32
+
+static struct user_args {
+ struct {
+ char *arg;
+ int len;
+ } a[10];
+} uargs[MAX_USER_ARGS];
+
+static struct user_args *user_arg = uargs;
+
+static void
+arg_cleanup(ap)
+ struct user_args *ap;
+{
+ user_arg = ap;
+}
+
+/* Bind arguments $arg0, $arg1, ..., for a user defined command. */
+struct cleanup *
+setup_user_args(p)
+ char *p;
+{
+ register int i;
+ struct cleanup *old_chain = make_cleanup(arg_cleanup, user_arg);
+
+ if (++user_arg >= &uargs[MAX_USER_ARGS])
+ error("user defined functions nested too deeply\n");
+
+ bzero(user_arg, sizeof(*user_arg));
+
+ i = 0;
+ while (*p) {
+ while (isspace(*p))
+ ++p;
+ user_arg->a[i].arg = p;
+ while (*p && ! isspace(*p))
+ ++p;
+ user_arg->a[i].len = p - user_arg->a[i].arg;
+ ++i;
+ }
+ return (old_chain);
+}
+
+static char *
+findarg(str)
+ register char *str;
+{
+ register char *cp = str;
+ extern char *index();
+
+ while (cp = index(cp, '$')) {
+ if (strncmp(cp, "$arg", 4) == 0 && isdigit(cp[4]))
+ return (cp);
+ ++cp;
+ }
+ return (char *)0;
+}
+
+/* expand arguments from "line" into "new" */
+static void
+expand_args(line, new)
+ register char *line, *new;
+{
+ register char *cp = findarg(line);
+
+ while (cp = findarg(line)) {
+ int i, len;
+
+ bcopy(line, new, cp - line);
+ new += cp - line;
+ i = cp[4] - '0';
+ if (len = user_arg->a[i].len) {
+ bcopy(user_arg->a[i].arg, new, len);
+ new += len;
+ }
+ line = cp + 5;
+ }
+ strcpy(new, line);
+}
+
+/* expand any arguments in "line" then execute the result */
+static void
+expand_and_execute(line, from_tty)
+ char *line;
+ int from_tty;
+{
+ void execute_command();
+ char new[1024];
+
+ if (! findarg(line)) {
+ execute_command(line, from_tty);
+ return;
+ }
+ expand_args(line, new);
+ execute_command(new, from_tty);
+}
+
+char *
+read_one_command_line(prompt, from_tty)
+ char *prompt;
+{
+ register char *p, *p1;
+
+ dont_repeat();
+ p = command_line_input(prompt, from_tty);
+
+ /* Remove trailing blanks. */
+ p1 = p + strlen(p);
+ while (--p1 > p && (*p1 == ' ' || *p1 == '\t'))
+ ;
+ *++p1 = 0;
+ return (p);
+}
+
+static char cmd_prompt[] = " > ";
+
+int
+parse_control_structure(rootcmd, from_tty, level)
+ struct command_line *rootcmd;
+ int from_tty;
+{
+ struct command_line *cmd = (struct command_line *)xmalloc(sizeof(*cmd));
+ char *prompt;
+
+ ++level;
+ prompt = from_tty? &cmd_prompt[sizeof(cmd_prompt) - 1 - 2*level] :
+ (char *)0;
+ bzero(cmd, sizeof(*cmd));
+ rootcmd->body = cmd;
+ while (1) {
+ char *p = read_one_command_line(prompt, from_tty);
+
+ p = savestring(p, strlen(p));
+ cmd->line = p;
+ if (!strncmp(p, "while ", 6)) {
+ cmd->type = CL_WHILE;
+ if (parse_control_structure(cmd, from_tty, level))
+ return (1);
+ } else if (!strncmp(p, "if ", 3)) {
+ cmd->type = CL_IF;
+ if (parse_control_structure(cmd, from_tty, level)) {
+ struct command_line *tmp;
+ int stat;
+
+ cmd->elsebody = cmd->body;
+ stat = parse_control_structure(cmd, from_tty,
+ level);
+ tmp = cmd->elsebody;
+ cmd->elsebody = cmd->body;
+ cmd->body = tmp;
+ if (stat)
+ return (1);
+ }
+ } else if (!strcmp(p, "else")) {
+ cmd->type = CL_END;
+ return (1);
+ } else if (!strcmp(p, "end")) {
+ cmd->type = CL_END;
+ return (0);
+ } else if (!strcmp(p, "exitloop")) {
+ cmd->type = CL_EXITLOOP;
+ } else {
+ cmd->type = CL_NORMAL;
+ }
+ cmd->next = (struct command_line *)xmalloc(sizeof(*cmd));
+ cmd = cmd->next;
+ bzero(cmd, sizeof(*cmd));
+ }
+ /* NOTREACHED */
+}
+
+int
+execute_control_structure(cmd)
+ register struct command_line *cmd;
+{
+ char expn[1024];
+ struct expression *cond;
+ int stat;
+
+ while (cmd) {
+ QUIT;
+ switch (cmd->type) {
+ case CL_END:
+ return (0);
+ case CL_NORMAL:
+ expand_and_execute(cmd->line, 0);
+ break;
+ case CL_WHILE:
+ expand_args(cmd->line + 6, expn);
+ cond = parse_c_expression(expn);
+ while (breakpoint_cond_eval(cond) == 0)
+ if (execute_control_structure(cmd->body))
+ break;
+ free(cond);
+ break;
+ case CL_IF:
+ expand_args(cmd->line + 3, expn);
+ cond = parse_c_expression(expn);
+ stat = breakpoint_cond_eval(cond);
+ free(cond);
+ if (stat == 0) {
+ if (execute_control_structure(cmd->body))
+ return (1);
+ } else if (cmd->elsebody) {
+ if (execute_control_structure(cmd->elsebody))
+ return (1);
+ }
+ break;
+ case CL_EXITLOOP:
+ return (1);
+ }
+ cmd = cmd->next;
+ }
+ free_all_values();
+}
+
+execute_command_lines(cmd)
+ struct command_line *cmd;
+{
+ struct cleanup *old_chain = make_cleanup(source_cleanup, instream);
+
+ /*
+ * Set the instream to 0, indicating execution of a user-defined
+ * function.
+ */
+ ++immediate_quit;
+ instream = (FILE *) 0;
+ (void)execute_control_structure(cmd);
+ --immediate_quit;
+ do_cleanups(old_chain);
+}
+
+/* do following command lines if expression true */
+if_command(p, from_tty)
+ char *p;
+ int from_tty;
+{
+ struct cleanup *old_chain;
+ struct command_line *cmd = (struct command_line *)xmalloc(sizeof(*cmd));
+ char buf[128];
+
+ sprintf(buf, "if %s", p);
+
+ bzero(cmd, sizeof(*cmd));
+ old_chain = make_cleanup(free_command_lines, cmd);
+ cmd->type = CL_IF;
+ cmd->line = savestring(buf, strlen(buf));
+ /* XXX cmd->line? */
+ if (parse_control_structure(cmd, from_tty, 0)) {
+ struct command_line *tmp;
+
+ cmd->elsebody = cmd->body;
+ (void) parse_control_structure(cmd, from_tty, 0);
+ tmp = cmd->elsebody;
+ cmd->elsebody = cmd->body;
+ cmd->body = tmp;
+ }
+ (void) execute_command_lines(cmd);
+ do_cleanups(old_chain);
+}
+
+/* do following command lines while expression true */
+while_command(p, from_tty)
+ char *p;
+ int from_tty;
+{
+ struct cleanup *old_chain;
+ struct command_line *cmd = (struct command_line *)xmalloc(sizeof(*cmd));
+ char buf[128];
+
+ sprintf(buf, "while %s", p);
+
+ bzero(cmd, sizeof(*cmd));
+ old_chain = make_cleanup(free_command_lines, cmd);
+ cmd->type = CL_WHILE;
+ cmd->line = savestring(buf, strlen(buf));
+ (void)parse_control_structure(cmd, from_tty, 0);
+ (void)execute_command_lines(cmd);
+ do_cleanups(old_chain);
+}
+
+/*
+ * Execute the line P as a command.
+ * Pass FROM_TTY as second argument to the defining function.
+ */
+void
+execute_command (p, from_tty)
+ char *p;
+ int from_tty;
+{
+ register struct cmd_list_element *c;
+ register struct command_line *cmdlines;
+
+ free_all_values();
+ if (*p) {
+ c = lookup_cmd(&p, cmdlist, "", 0, 1);
+ if (c->function == 0)
+ error("That is not a command, just a help topic.");
+ else if (c->class == (int) class_user) {
+ struct cleanup *old_chain = setup_user_args(p);
+
+ cmdlines = (struct command_line *) c->function;
+ if (cmdlines)
+ (void)execute_command_lines(cmdlines);
+
+ do_cleanups(old_chain);
+ } else
+ /* Pass null arg rather than an empty one. */
+ (*c->function) (*p ? p : 0, from_tty);
+ }
+}
+
+/*
+ * Read lines from the input stream and accumulate them in a chain of struct
+ * command_line's which is then returned.
+ */
+struct command_line *
+read_command_lines(from_tty)
+ int from_tty;
+{
+ struct cleanup *old_chain;
+ struct command_line *cmd = (struct command_line *)xmalloc(sizeof(*cmd));
+ struct command_line *next;
+
+ bzero(cmd, sizeof(*cmd));
+ old_chain = make_cleanup(free_command_lines, cmd);
+ cmd->type = CL_NOP;
+ (void)parse_control_structure(cmd, from_tty, 0);
+ dont_repeat();
+ discard_cleanups(old_chain);
+ next = cmd->body;
+ free(cmd);
+ return (next);
+}
+
+/* Free a chain of struct command_line's. */
+
+void
+free_command_lines(cmds)
+ struct command_line *cmds;
+{
+ struct command_line *next;
+
+ while (cmds) {
+ if (cmds->body)
+ free(cmds->body);
+ if (cmds->elsebody)
+ free(cmds->elsebody);
+ if (cmds->line)
+ free(cmds->line);
+ next = cmds->next;
+ free(cmds);
+ cmds = next;
+ }
+}
+
+/* Add an element to the list of info subcommands. */
+
+void
+add_info (name, fun, doc)
+ char *name;
+ void (*fun) ();
+ char *doc;
+{
+ add_cmd (name, no_class, fun, doc, &infolist);
+}
+
+/* Add an alias to the list of info subcommands. */
+
+void
+add_info_alias (name, oldname, abbrev_flag)
+ char *name;
+ char *oldname;
+ int abbrev_flag;
+{
+ add_alias_cmd (name, oldname, 0, abbrev_flag, &infolist);
+}
+
+/* The "info" command is defined as a prefix, with allow_unknown = 0.
+ Therefore, its own definition is called only for "info" with no args. */
+
+static void
+info_command ()
+{
+ printf ("\"info\" must be followed by the name of an info command.\n");
+ help_list (infolist, "info ", -1, stdout);
+}
+
+/* Add an element to the list of commands. */
+
+void
+add_com (name, class, fun, doc)
+ char *name;
+ int class;
+ void (*fun) ();
+ char *doc;
+{
+ add_cmd (name, class, fun, doc, &cmdlist);
+}
+
+/* Add an alias or abbreviation command to the list of commands. */
+
+void
+add_com_alias (name, oldname, class, abbrev_flag)
+ char *name;
+ char *oldname;
+ int class;
+ int abbrev_flag;
+{
+ add_alias_cmd (name, oldname, class, abbrev_flag, &cmdlist);
+}
+
+void
+error_no_arg (why)
+ char *why;
+{
+ error ("Argument required (%s).", why);
+}
+
+static void
+help_command (command, from_tty)
+ char *command;
+ int from_tty; /* Ignored */
+{
+ help_cmd (command, stdout);
+}
+
+static void
+validate_comname (comname)
+ char *comname;
+{
+ register char *p;
+
+ if (comname == 0)
+ error_no_arg ("name of command to define");
+
+ p = comname;
+ while (*p)
+ {
+ if (!(*p >= 'A' && *p <= 'Z')
+ && !(*p >= 'a' && *p <= 'z')
+ && !(*p >= '0' && *p <= '9')
+ && *p != '-')
+ error ("Junk in argument list: \"%s\"", p);
+ p++;
+ }
+}
+
+static void
+define_command (comname, from_tty)
+ char *comname;
+ int from_tty;
+{
+ register struct command_line *cmds;
+ register struct cmd_list_element *c;
+ char *tem = comname;
+
+ validate_comname (comname);
+
+ c = lookup_cmd (&tem, cmdlist, "", -1, 1);
+ if (c)
+ {
+ if (c->class == (int) class_user || c->class == (int) class_alias)
+ tem = "Redefine command \"%s\"? ";
+ else
+ tem = "Really redefine built-in command \"%s\"? ";
+ if (!query (tem, comname))
+ error ("Command \"%s\" not redefined.", comname);
+ }
+
+ if (from_tty)
+ {
+ printf ("Type commands for definition of \"%s\".\n\
+End with a line saying just \"end\".\n", comname);
+ fflush (stdout);
+ }
+ comname = savestring (comname, strlen (comname));
+
+ cmds = read_command_lines (from_tty);
+
+ if (c && c->class == (int) class_user)
+ free_command_lines (c->function);
+
+ add_com (comname, class_user, cmds,
+ (c && c->class == (int) class_user)
+ ? c->doc : savestring ("User-defined.", 13));
+}
+
+static void
+document_command (comname, from_tty)
+ char *comname;
+ int from_tty;
+{
+ register struct cmd_list_element *c;
+ register char *p;
+ register char *cp;
+ register char *doc = 0;
+ register int len;
+ char *tmp = comname;
+
+ validate_comname (comname);
+ c = lookup_cmd (&tmp, cmdlist, "", 0, 1);
+ if (c->class != (int) class_user)
+ error ("Command \"%s\" is built-in.", comname);
+
+ if (from_tty)
+ printf ("Type documentation for \"%s\". \
+End with a line saying just \"end\".\n", comname);
+
+ while (p = read_one_command_line(from_tty? "> " : 0, from_tty))
+ {
+ if (strcmp(p, "end") == 0)
+ break;
+ len = strlen(p) + 1;
+ if (! doc)
+ {
+ doc = xmalloc(len);
+ cp = doc;
+ }
+ else
+ {
+ int i = cp - doc;
+ doc = xrealloc(doc, i + len);
+ cp = doc + i;
+ }
+ strcpy(cp, p);
+ cp += len;
+ cp[-1] = '\n';
+ }
+ if (doc && cp > doc)
+ cp[-1] = 0;
+ if (c->doc)
+ free (c->doc);
+ c->doc = doc;
+}
+
+static void
+print_gdb_version ()
+{
+ printf ("GDB %s, Copyright (C) 1989 Free Software Foundation, Inc.\n\
+There is ABSOLUTELY NO WARRANTY for GDB; type \"info warranty\" for details.\n\
+GDB is free software and you are welcome to distribute copies of it\n\
+ under certain conditions; type \"info copying\" to see the conditions.\n",
+ version);
+}
+
+static void
+version_info ()
+{
+ immediate_quit++;
+ print_gdb_version ();
+ immediate_quit--;
+}
+
+
+/* Command to specify a prompt string instead of "(gdb) ". */
+
+void
+set_prompt_command (text)
+ char *text;
+{
+ char *p, *q;
+ register int c;
+ char *new;
+
+ if (text == 0)
+ error_no_arg ("string to which to set prompt");
+
+ new = (char *) xmalloc (strlen (text) + 2);
+ p = text; q = new;
+ while (c = *p++)
+ {
+ if (c == '\\')
+ {
+ /* \ at end of argument is used after spaces
+ so they won't be lost. */
+ if (*p == 0)
+ break;
+ c = parse_escape (&p);
+ if (c == 0)
+ break; /* C loses */
+ else if (c > 0)
+ *q++ = c;
+ }
+ else
+ *q++ = c;
+ }
+ if (*(p - 1) != '\\')
+ *q++ = ' ';
+ *q++ = '\0';
+ new = (char *) xrealloc (new, q - new);
+ free (prompt);
+ prompt = new;
+}
+
+static void
+quit_command ()
+{
+ extern void exec_file_command ();
+ if (have_inferior_p ())
+ {
+ if (inhibit_confirm || query ("The program is running. Quit anyway? "))
+ {
+ /* Prevent any warning message from reopen_exec_file, in case
+ we have a core file that's inconsistent with the exec file. */
+ exec_file_command (0, 0);
+ kill_inferior ();
+ }
+ else
+ error ("Not confirmed.");
+ }
+ /* Save the history information if it is appropriate to do so. */
+ if (write_history_p && history_filename)
+ write_history (history_filename);
+ exit (0);
+}
+
+int
+input_from_terminal_p ()
+{
+ return instream == stdin;
+}
+
+static void
+pwd_command (arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ if (arg) error ("The \"pwd\" command does not take an argument: %s", arg);
+ getwd (dirbuf);
+
+ if (strcmp (dirbuf, current_directory))
+ printf ("Working directory %s\n (canonically %s).\n",
+ current_directory, dirbuf);
+ else
+ printf ("Working directory %s.\n", current_directory);
+}
+
+static void
+cd_command (dir, from_tty)
+ char *dir;
+ int from_tty;
+{
+ int len;
+ int change;
+
+ if (dir == 0)
+ error_no_arg ("new working directory");
+
+ dir = tilde_expand (dir);
+ make_cleanup (free, dir);
+
+ len = strlen (dir);
+ dir = savestring (dir, len - (len > 1 && dir[len-1] == '/'));
+ if (dir[0] == '/')
+ current_directory = dir;
+ else
+ {
+ current_directory = concat (current_directory, "/", dir);
+ free (dir);
+ }
+
+ /* Now simplify any occurrences of `.' and `..' in the pathname. */
+
+ change = 1;
+ while (change)
+ {
+ char *p;
+ change = 0;
+
+ for (p = current_directory; *p;)
+ {
+ if (!strncmp (p, "/./", 2)
+ && (p[2] == 0 || p[2] == '/'))
+ strcpy (p, p + 2);
+ else if (!strncmp (p, "/..", 3)
+ && (p[3] == 0 || p[3] == '/')
+ && p != current_directory)
+ {
+ char *q = p;
+ while (q != current_directory && q[-1] != '/') q--;
+ if (q != current_directory)
+ {
+ strcpy (q-1, p+3);
+ p = q-1;
+ }
+ }
+ else p++;
+ }
+ }
+
+ if (chdir (dir) < 0)
+ perror_with_name (dir);
+
+ if (from_tty)
+ pwd_command ((char *) 0, 1);
+}
+
+static void
+source_command (arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ FILE *stream;
+ struct cleanup *cleanups;
+ char *file = arg;
+ char *path;
+
+ if (file == 0)
+ /* Let source without arguments read .gdbinit. */
+ file = ".gdbinit";
+
+ file = tilde_expand (file);
+ make_cleanup (free, file);
+
+#ifdef KERNELDEBUG
+ if (path = getenv(kernel_debugging? "KGDBPATH" : "GDBPATH"))
+#else
+ if (path = getenv("GDBPATH"))
+#endif
+ {
+ int fd = openp(path, 1, file, O_RDONLY, 0, 0);
+
+ if (fd == -1)
+ stream = 0;
+ else
+ stream = fdopen(fd, "r");
+ }
+ else
+ stream = fopen (file, "r");
+
+ if (stream == 0)
+ perror_with_name (file);
+
+ cleanups = make_cleanup (source_cleanup, instream);
+
+ instream = stream;
+
+ command_loop ();
+
+ do_cleanups (cleanups);
+}
+
+static void
+echo_command (text)
+ char *text;
+{
+ char *p = text;
+ register int c;
+
+ if (text)
+ while (c = *p++)
+ {
+ if (c == '\\')
+ {
+ /* \ at end of argument is used after spaces
+ so they won't be lost. */
+ if (*p == 0)
+ return;
+
+ c = parse_escape (&p);
+ if (c >= 0)
+ fputc (c, stdout);
+ }
+ else
+ fputc (c, stdout);
+ }
+ fflush(stdout);
+}
+
+static void
+dump_me_command ()
+{
+ if (query ("Should GDB dump core? "))
+ {
+ signal (SIGQUIT, SIG_DFL);
+ kill (getpid (), SIGQUIT);
+ }
+}
+
+int
+parse_binary_operation (caller, arg)
+ char *caller, *arg;
+{
+ int length;
+
+ if (!arg || !*arg)
+ return 1;
+
+ length = strlen (arg);
+
+ while (arg[length - 1] == ' ' || arg[length - 1] == '\t')
+ length--;
+
+ if (!strncmp (arg, "on", length)
+ || !strncmp (arg, "1", length)
+ || !strncmp (arg, "yes", length))
+ return 1;
+ else
+ if (!strncmp (arg, "off", length)
+ || !strncmp (arg, "0", length)
+ || !strncmp (arg, "no", length))
+ return 0;
+ else
+ error ("\"%s\" not given a binary valued argument.", caller);
+}
+
+/* Functions to manipulate command line editing control variables. */
+
+static void
+set_editing (arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ command_editing_p = parse_binary_operation ("set command-editing", arg);
+}
+
+/* Number of commands to print in each call to editing_info. */
+#define Hist_print 10
+static void
+editing_info (arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ /* Index for history commands. Relative to history_base. */
+ int offset;
+
+ /* Number of the history entry which we are planning to display next.
+ Relative to history_base. */
+ static int num = 0;
+
+ /* The first command in the history which doesn't exist (i.e. one more
+ than the number of the last command). Relative to history_base. */
+ int hist_len;
+
+ struct _hist_entry {
+ char *line;
+ char *data;
+ } *history_get();
+ extern int history_base;
+
+ printf_filtered ("Interactive command editing is %s.\n",
+ command_editing_p ? "on" : "off");
+
+ printf_filtered ("History expansion of command input is %s.\n",
+ history_expansion_p ? "on" : "off");
+ printf_filtered ("Writing of a history record upon exit is %s.\n",
+ write_history_p ? "enabled" : "disabled");
+ printf_filtered ("The size of the history list (number of stored commands) is %d.\n",
+ history_size);
+ printf_filtered ("The name of the history record is \"%s\".\n\n",
+ history_filename ? history_filename : "");
+
+ /* Print out some of the commands from the command history. */
+ /* First determine the length of the history list. */
+ hist_len = history_size;
+ for (offset = 0; offset < history_size; offset++)
+ {
+ if (!history_get (history_base + offset))
+ {
+ hist_len = offset;
+ break;
+ }
+ }
+
+ if (arg)
+ {
+ if (arg[0] == '+' && arg[1] == '\0')
+ /* "info editing +" should print from the stored position. */
+ ;
+ else
+ /* "info editing <exp>" should print around command number <exp>. */
+ num = (parse_and_eval_address (arg) - history_base) - Hist_print / 2;
+ }
+ /* "info editing" means print the last Hist_print commands. */
+ else
+ {
+ num = hist_len - Hist_print;
+ }
+
+ if (num < 0)
+ num = 0;
+
+ /* If there are at least Hist_print commands, we want to display the last
+ Hist_print rather than, say, the last 6. */
+ if (hist_len - num < Hist_print)
+ {
+ num = hist_len - Hist_print;
+ if (num < 0)
+ num = 0;
+ }
+
+ if (num == hist_len - Hist_print)
+ printf_filtered ("The list of the last %d commands is:\n\n", Hist_print);
+ else
+ printf_filtered ("Some of the stored commands are:\n\n");
+
+ for (offset = num; offset < num + Hist_print && offset < hist_len; offset++)
+ {
+ printf_filtered ("%5d %s\n", history_base + offset,
+ (history_get (history_base + offset))->line);
+ }
+
+ /* The next command we want to display is the next one that we haven't
+ displayed yet. */
+ num += Hist_print;
+
+ /* If the user repeats this command with return, it should do what
+ "info editing +" does. This is unnecessary if arg is null,
+ because "info editing +" is not useful after "info editing". */
+ if (from_tty && arg)
+ {
+ arg[0] = '+';
+ arg[1] = '\0';
+ }
+}
+
+static void
+set_history_expansion (arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ history_expansion_p = parse_binary_operation ("set history expansion", arg);
+}
+
+static void
+set_history_write (arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ write_history_p = parse_binary_operation ("set history write", arg);
+}
+
+static void
+set_history (arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ printf ("\"set history\" must be followed by the name of a history subcommand.\n");
+ help_list (sethistlist, "set history ", -1, stdout);
+}
+
+static void
+set_history_size (arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ if (!*arg)
+ error_no_arg ("set history size");
+
+ history_size = atoi (arg);
+}
+
+static void
+set_history_filename (arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ int i;
+
+ if (!arg)
+ error_no_arg ("history file name");
+
+ arg = tilde_expand (arg);
+ make_cleanup (free, arg);
+
+ i = strlen (arg) - 1;
+
+ free (history_filename);
+
+ while (i > 0 && (arg[i] == ' ' || arg[i] == '\t'))
+ i--;
+ ++i;
+
+ if (!*arg)
+ history_filename = (char *) 0;
+ else
+ history_filename = savestring (arg, i + 1);
+ history_filename[i] = '\0';
+}
+
+int info_verbose;
+
+static void
+set_verbose_command (arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ info_verbose = parse_binary_operation ("set verbose", arg);
+}
+
+static void
+verbose_info (arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ if (arg)
+ error ("\"info verbose\" does not take any arguments.\n");
+
+ printf ("Verbose printing of information is %s.\n",
+ info_verbose ? "on" : "off");
+}
+
+static void
+float_handler ()
+{
+ error ("Invalid floating value encountered or computed.");
+}
+
+
+static void
+initialize_cmd_lists ()
+{
+ cmdlist = (struct cmd_list_element *) 0;
+ infolist = (struct cmd_list_element *) 0;
+ enablelist = (struct cmd_list_element *) 0;
+ disablelist = (struct cmd_list_element *) 0;
+ deletelist = (struct cmd_list_element *) 0;
+ enablebreaklist = (struct cmd_list_element *) 0;
+ setlist = (struct cmd_list_element *) 0;
+ sethistlist = (struct cmd_list_element *) 0;
+ unsethistlist = (struct cmd_list_element *) 0;
+}
+
+static void
+initialize_main ()
+{
+ char *tmpenv;
+ /* Command line editing externals. */
+ extern int (*rl_completion_entry_function)();
+ extern char *rl_completer_word_break_characters;
+ extern char *rl_readline_name;
+
+ /* Set default verbose mode on. */
+ info_verbose = 1;
+
+#ifdef KERNELDEBUG
+ if (kernel_debugging)
+ prompt = savestring ("(kgdb) ", 7);
+ else
+#endif
+ prompt = savestring ("(gdb) ", 6);
+
+ /* Set the important stuff up for command editing. */
+ command_editing_p = 1;
+ history_expansion_p = 0;
+ write_history_p = 0;
+
+ if (tmpenv = getenv ("HISTSIZE"))
+ history_size = atoi (tmpenv);
+ else
+ history_size = 256;
+
+ stifle_history (history_size);
+
+ if (tmpenv = getenv ("GDBHISTFILE"))
+ history_filename = savestring (tmpenv, strlen(tmpenv));
+ else
+ /* We include the current directory so that if the user changes
+ directories the file written will be the same as the one
+ that was read. */
+ history_filename = concat (current_directory, "/.gdb_history", "");
+
+ read_history (history_filename);
+
+ /* Setup important stuff for command line editing. */
+ rl_completion_entry_function = (int (*)()) symbol_completion_function;
+ rl_completer_word_break_characters = gdb_completer_word_break_characters;
+ rl_readline_name = "gdb";
+
+ /* Define the classes of commands.
+ They will appear in the help list in the reverse of this order. */
+
+ add_cmd ("obscure", class_obscure, 0, "Obscure features.", &cmdlist);
+ add_cmd ("alias", class_alias, 0, "Aliases of other commands.", &cmdlist);
+ add_cmd ("user", class_user, 0, "User-defined commands.\n\
+The commands in this class are those defined by the user.\n\
+Use the \"define\" command to define a command.", &cmdlist);
+ add_cmd ("support", class_support, 0, "Support facilities.", &cmdlist);
+ add_cmd ("status", class_info, 0, "Status inquiries.", &cmdlist);
+ add_cmd ("files", class_files, 0, "Specifying and examining files.", &cmdlist);
+ add_cmd ("breakpoints", class_breakpoint, 0, "Making program stop at certain points.", &cmdlist);
+ add_cmd ("data", class_vars, 0, "Examining data.", &cmdlist);
+ add_cmd ("stack", class_stack, 0, "Examining the stack.\n\
+The stack is made up of stack frames. Gdb assigns numbers to stack frames\n\
+counting from zero for the innermost (currently executing) frame.\n\n\
+At any time gdb identifies one frame as the \"selected\" frame.\n\
+Variable lookups are done with respect to the selected frame.\n\
+When the program being debugged stops, gdb selects the innermost frame.\n\
+The commands below can be used to select other frames by number or address.",
+ &cmdlist);
+ add_cmd ("running", class_run, 0, "Running the program.", &cmdlist);
+
+ add_com ("pwd", class_files, pwd_command,
+ "Print working directory. This is used for your program as well.");
+ add_com ("cd", class_files, cd_command,
+ "Set working directory to DIR for debugger and program being debugged.\n\
+The change does not take effect for the program being debugged\n\
+until the next time it is started.");
+
+ add_cmd ("prompt", class_support, set_prompt_command,
+ "Change gdb's prompt from the default of \"(gdb)\"",
+ &setlist);
+ add_com ("echo", class_support, echo_command,
+ "Print a constant string. Give string as argument.\n\
+C escape sequences may be used in the argument.\n\
+No newline is added at the end of the argument;\n\
+use \"\\n\" if you want a newline to be printed.\n\
+Since leading and trailing whitespace are ignored in command arguments,\n\
+if you want to print some you must use \"\\\" before leading whitespace\n\
+to be printed or after trailing whitespace.");
+ add_com ("document", class_support, document_command,
+ "Document a user-defined command.\n\
+Give command name as argument. Give documentation on following lines.\n\
+End with a line of just \"end\".");
+ add_com ("define", class_support, define_command,
+ "Define a new command name. Command name is argument.\n\
+Definition appears on following lines, one command per line.\n\
+End with a line of just \"end\".\n\
+Use the \"document\" command to give documentation for the new command.\n\
+Commands defined in this way do not take arguments.");
+
+ add_com ("source", class_support, source_command,
+ "Read commands from a file named FILE.\n\
+Note that the file \".gdbinit\" is read automatically in this way\n\
+when gdb is started.");
+ add_com ("quit", class_support, quit_command, "Exit gdb.");
+ add_com ("help", class_support, help_command, "Print list of commands.");
+ add_com_alias ("q", "quit", class_support, 1);
+ add_com_alias ("h", "help", class_support, 1);
+ add_com ("while", class_support, while_command,
+ "execute following commands while condition is true.\n\
+Expression for condition follows \"while\" keyword.");
+ add_com ("if", class_support, if_command,
+ "execute following commands if condition is true.\n\
+Expression for condition follows \"if\" keyword.");
+ add_cmd ("verbose", class_support, set_verbose_command,
+ "Change the number of informational messages gdb prints.",
+ &setlist);
+ add_info ("verbose", verbose_info,
+ "Status of gdb's verbose printing option.\n");
+
+ add_com ("dump-me", class_obscure, dump_me_command,
+ "Get fatal error; make debugger dump its core.");
+
+ add_cmd ("editing", class_support, set_editing,
+ "Enable or disable command line editing.\n\
+Use \"on\" to enable to enable the editing, and \"off\" to disable it.\n\
+Without an argument, command line editing is enabled.", &setlist);
+
+ add_prefix_cmd ("history", class_support, set_history,
+ "Generic command for setting command history parameters.",
+ &sethistlist, "set history ", 0, &setlist);
+
+ add_cmd ("expansion", no_class, set_history_expansion,
+ "Enable or disable history expansion on command input.\n\
+Without an argument, history expansion is enabled.", &sethistlist);
+
+ add_cmd ("write", no_class, set_history_write,
+ "Enable or disable saving of the history record on exit.\n\
+Use \"on\" to enable to enable the saving, and \"off\" to disable it.\n\
+Without an argument, saving is enabled.", &sethistlist);
+
+ add_cmd ("size", no_class, set_history_size,
+ "Set the size of the command history, \n\
+ie. the number of previous commands to keep a record of.", &sethistlist);
+
+ add_cmd ("filename", no_class, set_history_filename,
+ "Set the filename in which to record the command history\n\
+ (the list of previous commands of which a record is kept).", &sethistlist);
+
+ add_prefix_cmd ("info", class_info, info_command,
+ "Generic command for printing status.",
+ &infolist, "info ", 0, &cmdlist);
+ add_com_alias ("i", "info", class_info, 1);
+
+ add_info ("editing", editing_info, "Status of command editor.");
+
+ add_info ("version", version_info, "Report what version of GDB this is.");
+}
diff --git a/gnu/usr.bin/kgdb/ngdb.i386/Makefile b/gnu/usr.bin/kgdb/ngdb.i386/Makefile
new file mode 100644
index 000000000000..433044e31ca7
--- /dev/null
+++ b/gnu/usr.bin/kgdb/ngdb.i386/Makefile
@@ -0,0 +1,27 @@
+# %W% (Berkeley) %G%
+
+.include "../config/Makefile.$(MACHINE)"
+
+PROG= ngdb
+SRCS= i386bsd-dep.c blockframe.c
+GDBOBJS+= i386-pinsn.o \
+ breakpoint.o command.o copying.o core.o \
+ cplus-dem.o dbxread.o environ.o eval.o expprint.o \
+ expread.o findvar.o infcmd.o inflow.o infrun.o \
+ main.o obstack.o printcmd.o regex.o remote.o \
+ remote-sl.o source.o stack.o symmisc.o symtab.o \
+ utils.o valarith.o valops.o valprint.o values.o \
+ version.o \
+ funmap.o history.o keymaps.o readline.o \
+ init.o
+CFLAGS+= -g -I$(.CURDIR) -I.. -I$(.CURDIR)/.. -I$(.CURDIR)/../config \
+ -DNEWVM -DHAVE_VPRINTF -DVI_MODE -DKERNELDEBUG
+
+# XXX objects should be in OBJS so that bsd.prog.mk handles their dependencies
+DPADD+= $(GDBOBJS:S/^/..\//g) ${LIBTERMCAP}
+LDADD+= $(GDBOBJS:S/^/..\//g) -ltermcap
+NOMAN= noman
+
+.PATH: $(.CURDIR)/../config $(.CURDIR)/..
+
+.include <bsd.prog.mk>
diff --git a/gnu/usr.bin/kgdb/obstack.c b/gnu/usr.bin/kgdb/obstack.c
new file mode 100644
index 000000000000..6f4b282d1e7a
--- /dev/null
+++ b/gnu/usr.bin/kgdb/obstack.c
@@ -0,0 +1,313 @@
+/* obstack.c - subroutines used implicitly by object stack macros
+ Copyright (C) 1988 Free Software Foundation, Inc.
+
+This program is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 1, or (at your option) any
+later version.
+
+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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+
+In other words, you are welcome to use, share and improve this program.
+You are forbidden to forbid anyone else to use, share and improve
+what you give them. Help stamp out software-hoarding! */
+
+
+#include "obstack.h"
+
+#ifdef __STDC__
+#define POINTER void *
+#else
+#define POINTER char *
+#endif
+
+/* Determine default alignment. */
+struct fooalign {char x; double d;};
+#define DEFAULT_ALIGNMENT ((char *)&((struct fooalign *) 0)->d - (char *)0)
+/* If malloc were really smart, it would round addresses to DEFAULT_ALIGNMENT.
+ But in fact it might be less smart and round addresses to as much as
+ DEFAULT_ROUNDING. So we prepare for it to do that. */
+union fooround {long x; double d;};
+#define DEFAULT_ROUNDING (sizeof (union fooround))
+
+/* When we copy a long block of data, this is the unit to do it with.
+ On some machines, copying successive ints does not work;
+ in such a case, redefine COPYING_UNIT to `long' (if that works)
+ or `char' as a last resort. */
+#ifndef COPYING_UNIT
+#define COPYING_UNIT int
+#endif
+
+/* The non-GNU-C macros copy the obstack into this global variable
+ to avoid multiple evaluation. */
+
+struct obstack *_obstack;
+
+/* Initialize an obstack H for use. Specify chunk size SIZE (0 means default).
+ Objects start on multiples of ALIGNMENT (0 means use default).
+ CHUNKFUN is the function to use to allocate chunks,
+ and FREEFUN the function to free them. */
+
+void
+_obstack_begin (h, size, alignment, chunkfun, freefun)
+ struct obstack *h;
+ int size;
+ int alignment;
+ POINTER (*chunkfun) ();
+ void (*freefun) ();
+{
+ register struct _obstack_chunk* chunk; /* points to new chunk */
+
+ if (alignment == 0)
+ alignment = DEFAULT_ALIGNMENT;
+ if (size == 0)
+ /* Default size is what GNU malloc can fit in a 4096-byte block.
+ Pick a number small enough that when rounded up to DEFAULT_ROUNDING
+ it is still smaller than 4096 - 4. */
+ {
+ int extra = 4;
+ if (extra < DEFAULT_ROUNDING)
+ extra = DEFAULT_ROUNDING;
+ size = 4096 - extra;
+ }
+
+ h->chunkfun = (struct _obstack_chunk * (*)()) chunkfun;
+ h->freefun = freefun;
+ h->chunk_size = size;
+ h->alignment_mask = alignment - 1;
+
+ chunk = h->chunk = (*h->chunkfun) (h->chunk_size);
+ h->next_free = h->object_base = chunk->contents;
+ h->chunk_limit = chunk->limit
+ = (char *) chunk + h->chunk_size;
+ chunk->prev = 0;
+}
+
+/* Allocate a new current chunk for the obstack *H
+ on the assumption that LENGTH bytes need to be added
+ to the current object, or a new object of length LENGTH allocated.
+ Copies any partial object from the end of the old chunk
+ to the beginning of the new one. */
+
+void
+_obstack_newchunk (h, length)
+ struct obstack *h;
+ int length;
+{
+ register struct _obstack_chunk* old_chunk = h->chunk;
+ register struct _obstack_chunk* new_chunk;
+ register long new_size;
+ register int obj_size = h->next_free - h->object_base;
+ register int i;
+
+ /* Compute size for new chunk. */
+ new_size = (obj_size + length) << 1;
+ if (new_size < h->chunk_size)
+ new_size = h->chunk_size;
+
+ /* Allocate and initialize the new chunk. */
+ new_chunk = h->chunk = (*h->chunkfun) (new_size);
+ new_chunk->prev = old_chunk;
+ new_chunk->limit = h->chunk_limit = (char *) new_chunk + new_size;
+
+ /* Move the existing object to the new chunk.
+ Word at a time is fast and is safe because these
+ structures are aligned at least that much. */
+ for (i = (obj_size + sizeof (COPYING_UNIT) - 1) / sizeof (COPYING_UNIT) - 1;
+ i >= 0; i--)
+ ((COPYING_UNIT *)new_chunk->contents)[i]
+ = ((COPYING_UNIT *)h->object_base)[i];
+
+ h->object_base = new_chunk->contents;
+ h->next_free = h->object_base + obj_size;
+}
+
+/* Return nonzero if object OBJ has been allocated from obstack H.
+ This is here for debugging.
+ If you use it in a program, you are probably losing. */
+
+int
+_obstack_allocated_p (h, obj)
+ struct obstack *h;
+ POINTER obj;
+{
+ register struct _obstack_chunk* lp; /* below addr of any objects in this chunk */
+ register struct _obstack_chunk* plp; /* point to previous chunk if any */
+
+ lp = (h)->chunk;
+ while (lp != 0 && ((POINTER)lp > obj || (POINTER)(lp)->limit < obj))
+ {
+ plp = lp -> prev;
+ lp = plp;
+ }
+ return lp != 0;
+}
+
+/* Free objects in obstack H, including OBJ and everything allocate
+ more recently than OBJ. If OBJ is zero, free everything in H. */
+
+void
+#ifdef __STDC__
+#undef obstack_free
+obstack_free (struct obstack *h, POINTER obj)
+#else
+_obstack_free (h, obj)
+ struct obstack *h;
+ POINTER obj;
+#endif
+{
+ register struct _obstack_chunk* lp; /* below addr of any objects in this chunk */
+ register struct _obstack_chunk* plp; /* point to previous chunk if any */
+
+ lp = (h)->chunk;
+ while (lp != 0 && ((POINTER)lp > obj || (POINTER)(lp)->limit < obj))
+ {
+ plp = lp -> prev;
+ (*h->freefun) (lp);
+ lp = plp;
+ }
+ if (lp)
+ {
+ (h)->object_base = (h)->next_free = (char *)(obj);
+ (h)->chunk_limit = lp->limit;
+ (h)->chunk = lp;
+ }
+ else if (obj != 0)
+ /* obj is not in any of the chunks! */
+ abort ();
+}
+
+/* Let same .o link with output of gcc and other compilers. */
+
+#ifdef __STDC__
+void
+_obstack_free (h, obj)
+ struct obstack *h;
+ POINTER obj;
+{
+ obstack_free (h, obj);
+}
+#endif
+
+#if 0
+/* These are now turned off because the applications do not use it
+ and it uses bcopy via obstack_grow, which causes trouble on sysV. */
+
+/* Now define the functional versions of the obstack macros.
+ Define them to simply use the corresponding macros to do the job. */
+
+#ifdef __STDC__
+/* These function definitions do not work with non-ANSI preprocessors;
+ they won't pass through the macro names in parentheses. */
+
+/* The function names appear in parentheses in order to prevent
+ the macro-definitions of the names from being expanded there. */
+
+POINTER (obstack_base) (obstack)
+ struct obstack *obstack;
+{
+ return obstack_base (obstack);
+}
+
+POINTER (obstack_next_free) (obstack)
+ struct obstack *obstack;
+{
+ return obstack_next_free (obstack);
+}
+
+int (obstack_object_size) (obstack)
+ struct obstack *obstack;
+{
+ return obstack_object_size (obstack);
+}
+
+int (obstack_room) (obstack)
+ struct obstack *obstack;
+{
+ return obstack_room (obstack);
+}
+
+void (obstack_grow) (obstack, pointer, length)
+ struct obstack *obstack;
+ POINTER pointer;
+ int length;
+{
+ obstack_grow (obstack, pointer, length);
+}
+
+void (obstack_grow0) (obstack, pointer, length)
+ struct obstack *obstack;
+ POINTER pointer;
+ int length;
+{
+ obstack_grow0 (obstack, pointer, length);
+}
+
+void (obstack_1grow) (obstack, character)
+ struct obstack *obstack;
+ int character;
+{
+ obstack_1grow (obstack, character);
+}
+
+void (obstack_blank) (obstack, length)
+ struct obstack *obstack;
+ int length;
+{
+ obstack_blank (obstack, length);
+}
+
+void (obstack_1grow_fast) (obstack, character)
+ struct obstack *obstack;
+ int character;
+{
+ obstack_1grow_fast (obstack, character);
+}
+
+void (obstack_blank_fast) (obstack, length)
+ struct obstack *obstack;
+ int length;
+{
+ obstack_blank_fast (obstack, length);
+}
+
+POINTER (obstack_finish) (obstack)
+ struct obstack *obstack;
+{
+ return obstack_finish (obstack);
+}
+
+POINTER (obstack_alloc) (obstack, length)
+ struct obstack *obstack;
+ int length;
+{
+ return obstack_alloc (obstack, length);
+}
+
+POINTER (obstack_copy) (obstack, pointer, length)
+ struct obstack *obstack;
+ POINTER pointer;
+ int length;
+{
+ return obstack_copy (obstack, pointer, length);
+}
+
+POINTER (obstack_copy0) (obstack, pointer, length)
+ struct obstack *obstack;
+ POINTER pointer;
+ int length;
+{
+ return obstack_copy0 (obstack, pointer, length);
+}
+
+#endif /* __STDC__ */
+
+#endif /* 0 */
diff --git a/gnu/usr.bin/kgdb/obstack.h b/gnu/usr.bin/kgdb/obstack.h
new file mode 100644
index 000000000000..27c017e2f253
--- /dev/null
+++ b/gnu/usr.bin/kgdb/obstack.h
@@ -0,0 +1,372 @@
+/* obstack.h - object stack macros
+ Copyright (C) 1988 Free Software Foundation, Inc.
+
+This program is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 1, or (at your option) any
+later version.
+
+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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+
+In other words, you are welcome to use, share and improve this program.
+You are forbidden to forbid anyone else to use, share and improve
+what you give them. Help stamp out software-hoarding! */
+
+
+/* Summary:
+
+All the apparent functions defined here are macros. The idea
+is that you would use these pre-tested macros to solve a
+very specific set of problems, and they would run fast.
+Caution: no side-effects in arguments please!! They may be
+evaluated MANY times!!
+
+These macros operate a stack of objects. Each object starts life
+small, and may grow to maturity. (Consider building a word syllable
+by syllable.) An object can move while it is growing. Once it has
+been "finished" it never changes address again. So the "top of the
+stack" is typically an immature growing object, while the rest of the
+stack is of mature, fixed size and fixed address objects.
+
+These routines grab large chunks of memory, using a function you
+supply, called `obstack_chunk_alloc'. On occasion, they free chunks,
+by calling `obstack_chunk_free'. You must define them and declare
+them before using any obstack macros.
+
+Each independent stack is represented by a `struct obstack'.
+Each of the obstack macros expects a pointer to such a structure
+as the first argument.
+
+One motivation for this package is the problem of growing char strings
+in symbol tables. Unless you are "facist pig with a read-only mind"
+[Gosper's immortal quote from HAKMEM item 154, out of context] you
+would not like to put any arbitrary upper limit on the length of your
+symbols.
+
+In practice this often means you will build many short symbols and a
+few long symbols. At the time you are reading a symbol you don't know
+how long it is. One traditional method is to read a symbol into a
+buffer, realloc()ating the buffer every time you try to read a symbol
+that is longer than the buffer. This is beaut, but you still will
+want to copy the symbol from the buffer to a more permanent
+symbol-table entry say about half the time.
+
+With obstacks, you can work differently. Use one obstack for all symbol
+names. As you read a symbol, grow the name in the obstack gradually.
+When the name is complete, finalize it. Then, if the symbol exists already,
+free the newly read name.
+
+The way we do this is to take a large chunk, allocating memory from
+low addresses. When you want to build a aymbol in the chunk you just
+add chars above the current "high water mark" in the chunk. When you
+have finished adding chars, because you got to the end of the symbol,
+you know how long the chars are, and you can create a new object.
+Mostly the chars will not burst over the highest address of the chunk,
+because you would typically expect a chunk to be (say) 100 times as
+long as an average object.
+
+In case that isn't clear, when we have enough chars to make up
+the object, THEY ARE ALREADY CONTIGUOUS IN THE CHUNK (guaranteed)
+so we just point to it where it lies. No moving of chars is
+needed and this is the second win: potentially long strings need
+never be explicitly shuffled. Once an object is formed, it does not
+change its address during its lifetime.
+
+When the chars burst over a chunk boundary, we allocate a larger
+chunk, and then copy the partly formed object from the end of the old
+chunk to the beggining of the new larger chunk. We then carry on
+accreting characters to the end of the object as we normaly would.
+
+A special macro is provided to add a single char at a time to a
+growing object. This allows the use of register variables, which
+break the ordinary 'growth' macro.
+
+Summary:
+ We allocate large chunks.
+ We carve out one object at a time from the current chunk.
+ Once carved, an object never moves.
+ We are free to append data of any size to the currently
+ growing object.
+ Exactly one object is growing in an obstack at any one time.
+ You can run one obstack per control block.
+ You may have as many control blocks as you dare.
+ Because of the way we do it, you can `unwind' a obstack
+ back to a previous state. (You may remove objects much
+ as you would with a stack.)
+*/
+
+
+/* Don't do the contents of this file more than once. */
+
+#ifndef __OBSTACKS__
+#define __OBSTACKS__
+
+/* We use subtraction of (char *)0 instead of casting to int
+ because on word-addressable machines a simple cast to int
+ may ignore the byte-within-word field of the pointer. */
+
+#ifndef __PTR_TO_INT
+#define __PTR_TO_INT(P) ((P) - (char *)0)
+#endif
+
+#ifndef __INT_TO_PTR
+#define __INT_TO_PTR(P) ((P) + (char *)0)
+#endif
+
+struct _obstack_chunk /* Lives at front of each chunk. */
+{
+ char *limit; /* 1 past end of this chunk */
+ struct _obstack_chunk *prev; /* address of prior chunk or NULL */
+ char contents[4]; /* objects begin here */
+};
+
+struct obstack /* control current object in current chunk */
+{
+ long chunk_size; /* preferred size to allocate chunks in */
+ struct _obstack_chunk* chunk; /* address of current struct obstack_chunk */
+ char *object_base; /* address of object we are building */
+ char *next_free; /* where to add next char to current object */
+ char *chunk_limit; /* address of char after current chunk */
+ int temp; /* Temporary for some macros. */
+ int alignment_mask; /* Mask of alignment for each object. */
+ struct _obstack_chunk *(*chunkfun) (); /* User's fcn to allocate a chunk. */
+ void (*freefun) (); /* User's function to free a chunk. */
+};
+
+#ifdef __STDC__
+
+/* Do the function-declarations after the structs
+ but before defining the macros. */
+
+void obstack_init (struct obstack *obstack);
+
+void * obstack_alloc (struct obstack *obstack, int size);
+
+void * obstack_copy (struct obstack *obstack, void *address, int size);
+void * obstack_copy0 (struct obstack *obstack, void *address, int size);
+
+void obstack_free (struct obstack *obstack, void *block);
+
+void obstack_blank (struct obstack *obstack, int size);
+
+void obstack_grow (struct obstack *obstack, void *data, int size);
+void obstack_grow0 (struct obstack *obstack, void *data, int size);
+
+void obstack_1grow (struct obstack *obstack, int data_char);
+
+void * obstack_finish (struct obstack *obstack);
+
+int obstack_object_size (struct obstack *obstack);
+
+int obstack_room (struct obstack *obstack);
+void obstack_1grow_fast (struct obstack *obstack, int data_char);
+void obstack_blank_fast (struct obstack *obstack, int size);
+
+void * obstack_base (struct obstack *obstack);
+void * obstack_next_free (struct obstack *obstack);
+int obstack_alignment_mask (struct obstack *obstack);
+int obstack_chunk_size (struct obstack *obstack);
+
+#endif /* __STDC__ */
+
+/* Non-ANSI C cannot really support alternative functions for these macros,
+ so we do not declare them. */
+
+/* Pointer to beginning of object being allocated or to be allocated next.
+ Note that this might not be the final address of the object
+ because a new chunk might be needed to hold the final size. */
+
+#define obstack_base(h) ((h)->object_base)
+
+/* Size for allocating ordinary chunks. */
+
+#define obstack_chunk_size(h) ((h)->chunk_size)
+
+/* Pointer to next byte not yet allocated in current chunk. */
+
+#define obstack_next_free(h) ((h)->next_free)
+
+/* Mask specifying low bits that should be clear in address of an object. */
+
+#define obstack_alignment_mask(h) ((h)->alignment_mask)
+
+#define obstack_init(h) \
+ _obstack_begin ((h), 0, 0, obstack_chunk_alloc, obstack_chunk_free)
+
+#define obstack_begin(h, size) \
+ _obstack_begin ((h), (size), 0, obstack_chunk_alloc, obstack_chunk_free)
+
+#define obstack_1grow_fast(h,achar) (*((h)->next_free)++ = achar)
+
+#define obstack_blank_fast(h,n) ((h)->next_free += (n))
+
+#if defined (__GNUC__) && defined (__STDC__)
+
+/* For GNU C, if not -traditional,
+ we can define these macros to compute all args only once
+ without using a global variable.
+ Also, we can avoid using the `temp' slot, to make faster code. */
+
+#define obstack_object_size(OBSTACK) \
+ ({ struct obstack *__o = (OBSTACK); \
+ (unsigned) (__o->next_free - __o->object_base); })
+
+#define obstack_room(OBSTACK) \
+ ({ struct obstack *__o = (OBSTACK); \
+ (unsigned) (__o->chunk_limit - __o->next_free); })
+
+#define obstack_grow(OBSTACK,where,length) \
+({ struct obstack *__o = (OBSTACK); \
+ int __len = (length); \
+ ((__o->next_free + __len > __o->chunk_limit) \
+ ? _obstack_newchunk (__o, __len) : 0); \
+ bcopy (where, __o->next_free, __len); \
+ __o->next_free += __len; \
+ (void) 0; })
+
+#define obstack_grow0(OBSTACK,where,length) \
+({ struct obstack *__o = (OBSTACK); \
+ int __len = (length); \
+ ((__o->next_free + __len + 1 > __o->chunk_limit) \
+ ? _obstack_newchunk (__o, __len + 1) : 0), \
+ bcopy (where, __o->next_free, __len), \
+ __o->next_free += __len, \
+ *(__o->next_free)++ = 0; \
+ (void) 0; })
+
+#define obstack_1grow(OBSTACK,datum) \
+({ struct obstack *__o = (OBSTACK); \
+ ((__o->next_free + 1 > __o->chunk_limit) \
+ ? _obstack_newchunk (__o, 1) : 0), \
+ *(__o->next_free)++ = (datum); \
+ (void) 0; })
+
+#define obstack_blank(OBSTACK,length) \
+({ struct obstack *__o = (OBSTACK); \
+ int __len = (length); \
+ ((__o->next_free + __len > __o->chunk_limit) \
+ ? _obstack_newchunk (__o, __len) : 0); \
+ __o->next_free += __len; \
+ (void) 0; })
+
+#define obstack_alloc(OBSTACK,length) \
+({ struct obstack *__h = (OBSTACK); \
+ obstack_blank (__h, (length)); \
+ obstack_finish (__h); })
+
+#define obstack_copy(OBSTACK,where,length) \
+({ struct obstack *__h = (OBSTACK); \
+ obstack_grow (__h, (where), (length)); \
+ obstack_finish (__h); })
+
+#define obstack_copy0(OBSTACK,where,length) \
+({ struct obstack *__h = (OBSTACK); \
+ obstack_grow0 (__h, (where), (length)); \
+ obstack_finish (__h); })
+
+#define obstack_finish(OBSTACK) \
+({ struct obstack *__o = (OBSTACK); \
+ void *value = (void *) __o->object_base; \
+ __o->next_free \
+ = __INT_TO_PTR ((__PTR_TO_INT (__o->next_free)+__o->alignment_mask)\
+ & ~ (__o->alignment_mask)); \
+ ((__o->next_free - (char *)__o->chunk \
+ > __o->chunk_limit - (char *)__o->chunk) \
+ ? (__o->next_free = __o->chunk_limit) : 0); \
+ __o->object_base = __o->next_free; \
+ value; })
+
+#define obstack_free(OBSTACK, OBJ) \
+({ struct obstack *__o = (OBSTACK); \
+ void *__obj = (OBJ); \
+ if (__obj >= (void *)__o->chunk && __obj < (void *)__o->chunk_limit) \
+ __o->next_free = __o->object_base = __obj; \
+ else (obstack_free) (__o, __obj); })
+
+#else /* not __GNUC__ or not __STDC__ */
+
+/* The non-GNU macros copy the obstack-pointer into this global variable
+ to avoid multiple evaluation. */
+
+extern struct obstack *_obstack;
+
+#define obstack_object_size(h) \
+ (unsigned) (_obstack = (h), (h)->next_free - (h)->object_base)
+
+#define obstack_room(h) \
+ (unsigned) (_obstack = (h), (h)->chunk_limit - (h)->next_free)
+
+#define obstack_grow(h,where,length) \
+( (h)->temp = (length), \
+ (((h)->next_free + (h)->temp > (h)->chunk_limit) \
+ ? _obstack_newchunk ((h), (h)->temp) : 0), \
+ bcopy (where, (h)->next_free, (h)->temp), \
+ (h)->next_free += (h)->temp)
+
+#define obstack_grow0(h,where,length) \
+( (h)->temp = (length), \
+ (((h)->next_free + (h)->temp + 1 > (h)->chunk_limit) \
+ ? _obstack_newchunk ((h), (h)->temp + 1) : 0), \
+ bcopy (where, (h)->next_free, (h)->temp), \
+ (h)->next_free += (h)->temp, \
+ *((h)->next_free)++ = 0)
+
+#define obstack_1grow(h,datum) \
+( (((h)->next_free + 1 > (h)->chunk_limit) \
+ ? _obstack_newchunk ((h), 1) : 0), \
+ *((h)->next_free)++ = (datum))
+
+#define obstack_blank(h,length) \
+( (h)->temp = (length), \
+ (((h)->next_free + (h)->temp > (h)->chunk_limit) \
+ ? _obstack_newchunk ((h), (h)->temp) : 0), \
+ (h)->next_free += (h)->temp)
+
+#define obstack_alloc(h,length) \
+ (obstack_blank ((h), (length)), obstack_finish ((h)))
+
+#define obstack_copy(h,where,length) \
+ (obstack_grow ((h), (where), (length)), obstack_finish ((h)))
+
+#define obstack_copy0(h,where,length) \
+ (obstack_grow0 ((h), (where), (length)), obstack_finish ((h)))
+
+#define obstack_finish(h) \
+( (h)->temp = __PTR_TO_INT ((h)->object_base), \
+ (h)->next_free \
+ = __INT_TO_PTR ((__PTR_TO_INT ((h)->next_free)+(h)->alignment_mask) \
+ & ~ ((h)->alignment_mask)), \
+ (((h)->next_free - (char *)(h)->chunk \
+ > (h)->chunk_limit - (char *)(h)->chunk) \
+ ? ((h)->next_free = (h)->chunk_limit) : 0), \
+ (h)->object_base = (h)->next_free, \
+ __INT_TO_PTR ((h)->temp))
+
+#ifdef __STDC__
+#define obstack_free(h,obj) \
+( (h)->temp = (char *)(obj) - (char *) (h)->chunk, \
+ (((h)->temp >= 0 && (h)->temp < (h)->chunk_limit - (char *) (h)->chunk)\
+ ? (int) ((h)->next_free = (h)->object_base \
+ = (h)->temp + (char *) (h)->chunk) \
+ : ((obstack_free) ((h), (h)->temp + (char *) (h)->chunk), 0)))
+#else
+#define obstack_free(h,obj) \
+( (h)->temp = (char *)(obj) - (char *) (h)->chunk, \
+ (((h)->temp >= 0 && (h)->temp < (h)->chunk_limit - (char *) (h)->chunk)\
+ ? (int) ((h)->next_free = (h)->object_base \
+ = (h)->temp + (char *) (h)->chunk) \
+ : (int) _obstack_free ((h), (h)->temp + (char *) (h)->chunk)))
+#endif
+
+#endif /* not __GNUC__ or not __STDC__ */
+
+#endif /* not __OBSTACKS__ */
+
diff --git a/gnu/usr.bin/kgdb/printcmd.c b/gnu/usr.bin/kgdb/printcmd.c
new file mode 100644
index 000000000000..985b4025117e
--- /dev/null
+++ b/gnu/usr.bin/kgdb/printcmd.c
@@ -0,0 +1,1867 @@
+/*-
+ * This code is derived from software copyrighted by the Free Software
+ * Foundation.
+ *
+ * Modified 1991 by Donn Seeley at UUNET Technologies, Inc.
+ * Modified 1990 by Van Jacobson at Lawrence Berkeley Laboratory.
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)printcmd.c 6.5 (Berkeley) 5/8/91";
+#endif /* not lint */
+
+/* Print values for GNU debugger GDB.
+ Copyright (C) 1986, 1987, 1988, 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include <stdio.h>
+#include "defs.h"
+#include "param.h"
+#include "frame.h"
+#include "symtab.h"
+#include "value.h"
+#include "expression.h"
+
+struct format_data
+{
+ int count;
+ char format;
+ char size;
+};
+
+/* Last specified output format. */
+
+static char last_format = 'x';
+
+/* Last specified examination size. 'b', 'h', 'w' or `q'. */
+
+static char last_size = 'w';
+
+/* Default address to examine next. */
+
+static CORE_ADDR next_address;
+
+/* Last address examined. */
+
+static CORE_ADDR last_examine_address;
+
+/* Contents of last address examined.
+ This is not valid past the end of the `x' command! */
+
+static value last_examine_value;
+
+/* Number of auto-display expression currently being displayed.
+ So that we can deleted it if we get an error or a signal within it.
+ -1 when not doing one. */
+
+int current_display_number;
+
+static void do_one_display ();
+
+void do_displays ();
+void print_address ();
+void print_floating ();
+void print_scalar_formatted ();
+void print_formatted_address ();
+
+
+/* Decode a format specification. *STRING_PTR should point to it.
+ OFORMAT and OSIZE are used as defaults for the format and size
+ if none are given in the format specification.
+ If OSIZE is zero, then the size field of the returned value
+ should be set only if a size is explicitly specified by the
+ user.
+ The structure returned describes all the data
+ found in the specification. In addition, *STRING_PTR is advanced
+ past the specification and past all whitespace following it. */
+
+struct format_data
+decode_format (string_ptr, oformat, osize)
+ char **string_ptr;
+ char oformat;
+ char osize;
+{
+ struct format_data val;
+ register char *p = *string_ptr;
+
+ val.format = '?';
+ val.size = '?';
+ val.count = 1;
+
+ if (*p >= '0' && *p <= '9')
+ val.count = atoi (p);
+ while (*p >= '0' && *p <= '9') p++;
+
+ /* Now process size or format letters that follow. */
+
+ while (1)
+ {
+ if (*p == 'b' || *p == 'h' || *p == 'w' || *p == 'g')
+ val.size = *p++;
+#ifdef LONG_LONG
+ else if (*p == 'l')
+ {
+ val.size = 'g';
+ p++;
+ }
+#endif
+ else if ((*p >= 'a' && *p <= 'z') || (*p >= 'A' && *p <= 'Z'))
+ val.format = *p++;
+ else
+ break;
+ }
+
+#ifndef LONG_LONG
+ /* Make sure 'g' size is not used on integer types.
+ Well, actually, we can handle hex. */
+ if (val.size == 'g' && val.format != 'f' && val.format != 'x')
+ val.size = 'w';
+#endif
+
+ while (*p == ' ' || *p == '\t') p++;
+ *string_ptr = p;
+
+ /* Set defaults for format and size if not specified. */
+ if (val.format == '?')
+ {
+ if (val.size == '?')
+ {
+ /* Neither has been specified. */
+ val.format = oformat;
+ val.size = osize;
+ }
+ else
+ /* If a size is specified, any format makes a reasonable
+ default except 'i'. */
+ val.format = oformat == 'i' ? 'x' : oformat;
+ }
+ else if (val.size == '?')
+ switch (val.format)
+ {
+ case 'a':
+ case 's':
+ case 'A':
+ /* Addresses must be words. */
+ val.size = osize ? 'w' : osize;
+ break;
+ case 'f':
+ /* Floating point has to be word or giantword. */
+ if (osize == 'w' || osize == 'g')
+ val.size = osize;
+ else
+ /* Default it to giantword if the last used size is not
+ appropriate. */
+ val.size = osize ? 'g' : osize;
+ break;
+ case 'c':
+ /* Characters default to one byte. */
+ val.size = osize ? 'b' : osize;
+ break;
+ default:
+ /* The default is the size most recently specified. */
+ val.size = osize;
+ }
+
+ return val;
+}
+
+/* Print value VAL on stdout according to FORMAT, a letter or 0.
+ Do not end with a newline.
+ 0 means print VAL according to its own type.
+ SIZE is the letter for the size of datum being printed.
+ This is used to pad hex numbers so they line up. */
+
+static void
+print_formatted (val, format, size)
+ register value val;
+ register char format;
+ char size;
+{
+ int len = TYPE_LENGTH (VALUE_TYPE (val));
+
+ if (VALUE_LVAL (val) == lval_memory)
+ next_address = VALUE_ADDRESS (val) + len;
+
+ switch (format)
+ {
+ case 's':
+ next_address = VALUE_ADDRESS (val)
+ + value_print (value_addr (val), stdout, 0, Val_pretty_default);
+ break;
+
+ case 'i':
+ next_address = VALUE_ADDRESS (val)
+ + print_insn (VALUE_ADDRESS (val), stdout);
+ break;
+
+ default:
+ if (format == 0
+ || TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_ARRAY
+ || TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_STRUCT
+ || TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_UNION
+ || VALUE_REPEATED (val))
+ value_print (val, stdout, format, Val_pretty_default);
+ else
+ print_scalar_formatted (VALUE_CONTENTS (val), VALUE_TYPE (val),
+ format, size, stdout);
+ }
+}
+
+/* Print a scalar of data of type TYPE, pointed to in GDB by VALADDR,
+ according to letters FORMAT and SIZE on STREAM.
+ FORMAT may not be zero. Formats s and i are not supported at this level.
+
+ This is how the elements of an array or structure are printed
+ with a format. */
+
+void
+print_scalar_formatted (valaddr, type, format, size, stream)
+ char *valaddr;
+ struct type *type;
+ char format;
+ int size;
+ FILE *stream;
+{
+ LONGEST val_long;
+ int len = TYPE_LENGTH (type);
+
+ if (size == 'g' && sizeof (LONGEST) < 8
+ && format == 'x')
+ {
+ /* ok, we're going to have to get fancy here. Assumption: a
+ long is four bytes. */
+ unsigned long v1, v2, tmp;
+
+ v1 = unpack_long (builtin_type_long, valaddr);
+ v2 = unpack_long (builtin_type_long, valaddr + 4);
+
+#ifdef BYTES_BIG_ENDIAN
+#else
+ /* Little endian -- swap the two for printing */
+ tmp = v1;
+ v1 = v2;
+ v2 = tmp;
+#endif
+
+ switch (format)
+ {
+ case 'x':
+ fprintf_filtered (stream, "0x%08x%08x", v1, v2);
+ break;
+ default:
+ error ("Output size \"g\" unimplemented for format \"%c\".",
+ format);
+ }
+ return;
+ }
+
+ val_long = unpack_long (type, valaddr);
+
+ /* If value is unsigned, truncate it in case negative. */
+ if (format != 'd')
+ {
+ if (len == sizeof (char))
+ val_long &= (1 << 8 * sizeof(char)) - 1;
+ else if (len == sizeof (short))
+ val_long &= (1 << 8 * sizeof(short)) - 1;
+ else if (len == sizeof (long))
+ val_long &= (unsigned long) - 1;
+ }
+
+ switch (format)
+ {
+ case 'x':
+#ifdef LONG_LONG
+ if (!size)
+ size = (len < sizeof (long long) ? 'w' : 'g');
+ switch (size)
+ {
+ case 'b':
+ fprintf_filtered (stream, "0x%02llx", val_long);
+ break;
+ case 'h':
+ fprintf_filtered (stream, "0x%04llx", val_long);
+ break;
+ case 0: /* no size specified, like in print */
+ case 'w':
+ fprintf_filtered (stream, "0x%08llx", val_long);
+ break;
+ case 'g':
+ fprintf_filtered (stream, "0x%016llx", val_long);
+ break;
+ default:
+ error ("Undefined output size \"%c\".", size);
+ }
+#else
+ switch (size)
+ {
+ case 'b':
+ fprintf_filtered (stream, "0x%02x", val_long);
+ break;
+ case 'h':
+ fprintf_filtered (stream, "0x%04x", val_long);
+ break;
+ case 0: /* no size specified, like in print */
+ case 'w':
+ fprintf_filtered (stream, "0x%08x", val_long);
+ break;
+ case 'g':
+ fprintf_filtered (stream, "0x%o16x", val_long);
+ break;
+ default:
+ error ("Undefined output size \"%c\".", size);
+ }
+#endif /* not LONG_LONG */
+ break;
+
+ case 'd':
+#ifdef LONG_LONG
+ fprintf_filtered (stream, "%lld", val_long);
+#else
+ fprintf_filtered (stream, "%d", val_long);
+#endif
+ break;
+
+ case 'u':
+#ifdef LONG_LONG
+ fprintf_filtered (stream, "%llu", val_long);
+#else
+ fprintf_filtered (stream, "%u", val_long);
+#endif
+ break;
+
+ case 'o':
+ if (val_long)
+#ifdef LONG_LONG
+ fprintf_filtered (stream, "0%llo", val_long);
+#else
+ fprintf_filtered (stream, "0%o", val_long);
+#endif
+ else
+ fprintf_filtered (stream, "0");
+ break;
+
+ case 'a':
+ print_address ((CORE_ADDR) val_long, stream);
+ break;
+
+ case 'A':
+ print_formatted_address ((CORE_ADDR) val_long, stream);
+ break;
+
+ case 'c':
+ value_print (value_from_long (builtin_type_char, val_long), stream, 0,
+ Val_pretty_default);
+ break;
+
+ case 'f':
+ if (len == sizeof (float))
+ type = builtin_type_float;
+ else if (len == sizeof (double))
+ type = builtin_type_double;
+ print_floating(valaddr, type, stream);
+ break;
+
+ case 0:
+ abort ();
+
+ default:
+ error ("Undefined output format \"%c\".", format);
+ }
+}
+
+/* Print a floating point value of type TYPE, pointed to in GDB by VALADDR,
+ on STREAM. */
+
+void
+print_floating(valaddr, type, stream)
+ char *valaddr;
+ struct type *type;
+ FILE *stream;
+{
+ double doub;
+ int inv;
+ int len = TYPE_LENGTH (type);
+
+ doub = unpack_double (type, valaddr, &inv);
+ if (inv)
+ fprintf_filtered (stream, "Invalid float value");
+ else if (doub != doub)
+ {
+ /* Surely it is an IEEE floating point NaN. */
+
+ long low, high, *arg = (long *)valaddr; /* ASSUMED 32 BITS */
+ int nonneg;
+
+ if (len <= sizeof(float))
+ {
+ /* It's single precision. */
+ low = *arg;
+ nonneg = low >= 0;
+ low &= 0x7fffff;
+ high = 0;
+ }
+ else
+ {
+ /* It's double precision.
+ Get the high and low words of the fraction.
+ Distinguish big and little-endian machines. */
+#ifdef WORDS_BIG_ENDIAN
+ low = arg[1], high = arg[0];
+#else
+ low = arg[0], high = arg[1];
+#endif
+ nonneg = high >= 0;
+ high &= 0xfffff;
+ }
+ if (high)
+ fprintf_filtered (stream, "-NaN(0x%lx%.8lx)" + nonneg, high, low);
+ else
+ fprintf_filtered (stream, "-NaN(0x%lx)" + nonneg, low);
+ }
+ else
+ fprintf_filtered (stream, len <= sizeof(float) ? "%.6g" : "%.17g", doub);
+}
+
+/* Specify default address for `x' command.
+ `info lines' uses this. */
+
+void
+set_next_address (addr)
+ CORE_ADDR addr;
+{
+ next_address = addr;
+
+ /* Make address available to the user as $_. */
+ set_internalvar (lookup_internalvar ("_"),
+ value_from_long (builtin_type_int, (LONGEST) addr));
+}
+
+/* Optionally print address ADDR symbolically as <SYMBOL+OFFSET> on STREAM. */
+
+void
+print_address_symbolic (addr, stream)
+ CORE_ADDR addr;
+ FILE *stream;
+{
+ register char *format;
+ int name_location;
+ register int i = find_pc_misc_function (addr);
+
+ /* If nothing comes out, don't print anything symbolic. */
+ if (i < 0) return;
+ name_location = misc_function_vector[i].address;
+
+ if (addr - name_location)
+ format = " <%s+%d>";
+ else
+ format = " <%s>";
+
+ fprintf_filtered (stream, format,
+ misc_function_vector[i].name, addr - name_location);
+}
+
+/* Print address ADDR symbolically on STREAM.
+ First print it as a number. Then perhaps print
+ <SYMBOL + OFFSET> after the number. */
+
+void
+print_address (addr, stream)
+ CORE_ADDR addr;
+ FILE *stream;
+{
+ fprintf_filtered (stream, "0x%x", addr);
+ print_address_symbolic (addr, stream);
+}
+
+/* Like print_address but opnly prints symbolically. */
+
+void
+print_formatted_address (addr, stream)
+ CORE_ADDR addr;
+ FILE *stream;
+{
+ register int i = 0;
+ register char *format;
+ register struct symbol *fs;
+ char *name;
+ int name_location;
+
+ i = find_pc_partial_function (addr, &name, &name_location);
+
+ /* If nothing comes out, don't print anything symbolic. */
+
+ if (i == 0)
+ fprintf_filtered (stream, "0x%x", addr);
+ else if (addr - name_location)
+ fprintf_filtered (stream, "%s+%d", name, addr - name_location);
+ else
+ fprintf_filtered (stream, "%s", name);
+}
+
+/* Examine data at address ADDR in format FMT.
+ Fetch it from memory and print on stdout. */
+
+static void
+do_examine (fmt, addr)
+ struct format_data fmt;
+ CORE_ADDR addr;
+{
+ register char format = 0;
+ register char size;
+ register int count = 1;
+ struct type *val_type;
+ register int i;
+ register int maxelts;
+
+ format = fmt.format;
+ size = fmt.size;
+ count = fmt.count;
+ next_address = addr;
+
+ /* String or instruction format implies fetch single bytes
+ regardless of the specified size. */
+ if (format == 's' || format == 'i')
+ size = 'b';
+
+ if (size == 'b')
+ val_type = builtin_type_char;
+ else if (size == 'h')
+ val_type = builtin_type_short;
+ else if (size == 'w')
+ val_type = builtin_type_long;
+ else if (size == 'g')
+#ifndef LONG_LONG
+ val_type = builtin_type_double;
+#else
+ val_type = builtin_type_long_long;
+#endif
+
+ maxelts = 8;
+ if (size == 'w')
+ maxelts = 4;
+ if (size == 'g')
+ maxelts = 2;
+ if (format == 's' || format == 'i')
+ maxelts = 1;
+
+ /* Print as many objects as specified in COUNT, at most maxelts per line,
+ with the address of the next one at the start of each line. */
+
+ while (count > 0)
+ {
+ print_address (next_address, stdout);
+ printf_filtered (":");
+ for (i = maxelts;
+ i > 0 && count > 0;
+ i--, count--)
+ {
+ printf_filtered ("\t");
+ /* Note that print_formatted sets next_address for the next
+ object. */
+ last_examine_address = next_address;
+ last_examine_value = value_at (val_type, next_address);
+ print_formatted (last_examine_value, format, size);
+ }
+ printf_filtered ("\n");
+ fflush (stdout);
+ }
+}
+
+static void
+validate_format (fmt, cmdname)
+ struct format_data fmt;
+ char *cmdname;
+{
+ if (fmt.size != 0)
+ error ("Size letters are meaningless in \"%s\" command.", cmdname);
+ if (fmt.count != 1)
+ error ("Item count other than 1 is meaningless in \"%s\" command.",
+ cmdname);
+ if (fmt.format == 'i' || fmt.format == 's')
+ error ("Format letter \"%c\" is meaningless in \"%s\" command.",
+ fmt.format, cmdname);
+}
+
+static void
+print_command (exp)
+ char *exp;
+{
+ struct expression *expr;
+ register struct cleanup *old_chain = 0;
+ register char format = 0;
+ register value val;
+ struct format_data fmt;
+ int histindex;
+ int cleanup = 0;
+
+ if (exp && *exp == '/')
+ {
+ exp++;
+ fmt = decode_format (&exp, last_format, 0);
+ validate_format (fmt, "print");
+ last_format = format = fmt.format;
+ }
+
+ if (exp && *exp)
+ {
+ expr = parse_c_expression (exp);
+ old_chain = make_cleanup (free_current_contents, &expr);
+ cleanup = 1;
+ val = evaluate_expression (expr);
+ }
+ else
+ val = access_value_history (0);
+
+ histindex = record_latest_value (val);
+ if (histindex >= 0) printf_filtered ("$%d = ", histindex);
+
+ print_formatted (val, format, fmt.size);
+ printf_filtered ("\n");
+
+ if (cleanup)
+ do_cleanups (old_chain);
+}
+
+static void
+output_command (exp)
+ char *exp;
+{
+ struct expression *expr;
+ register struct cleanup *old_chain;
+ register char format = 0;
+ register value val;
+ struct format_data fmt;
+
+ if (exp && *exp == '/')
+ {
+ exp++;
+ fmt = decode_format (&exp, 0, 0);
+ validate_format (fmt, "print");
+ format = fmt.format;
+ }
+
+ expr = parse_c_expression (exp);
+ old_chain = make_cleanup (free_current_contents, &expr);
+
+ val = evaluate_expression (expr);
+
+ print_formatted (val, format, fmt.size);
+
+ do_cleanups (old_chain);
+}
+
+static void
+set_command (exp)
+ char *exp;
+{
+ struct expression *expr = parse_c_expression (exp);
+ register struct cleanup *old_chain
+ = make_cleanup (free_current_contents, &expr);
+ evaluate_expression (expr);
+ do_cleanups (old_chain);
+}
+
+static void
+address_info (exp)
+ char *exp;
+{
+ register struct symbol *sym;
+ register CORE_ADDR val;
+ int is_a_field_of_this; /* C++: lookup_symbol sets this to nonzero
+ if exp is a field of `this'. */
+
+ if (exp == 0)
+ error ("Argument required.");
+
+ sym = lookup_symbol (exp, get_selected_block (), VAR_NAMESPACE,
+ &is_a_field_of_this);
+ if (sym == 0)
+ {
+ register int i;
+
+ if (is_a_field_of_this)
+ {
+ printf ("Symbol \"%s\" is a field of the local class variable `this'\n", exp);
+ return;
+ }
+
+ for (i = 0; i < misc_function_count; i++)
+ if (!strcmp (misc_function_vector[i].name, exp))
+ break;
+
+ if (i < misc_function_count)
+ printf ("Symbol \"%s\" is at 0x%x in a file compiled without -g.\n",
+ exp, misc_function_vector[i].address);
+ else
+ error ("No symbol \"%s\" in current context.", exp);
+ return;
+ }
+
+ printf ("Symbol \"%s\" is ", SYMBOL_NAME (sym));
+ val = SYMBOL_VALUE (sym);
+
+ switch (SYMBOL_CLASS (sym))
+ {
+ case LOC_CONST:
+ case LOC_CONST_BYTES:
+ printf ("constant");
+ break;
+
+ case LOC_LABEL:
+ printf ("a label at address 0x%x", val);
+ break;
+
+ case LOC_REGISTER:
+ printf ("a variable in register %s", reg_names[val]);
+ break;
+
+ case LOC_STATIC:
+ printf ("static at address 0x%x", val);
+ break;
+
+ case LOC_REGPARM:
+ printf ("an argument in register %s", reg_names[val]);
+ break;
+
+ case LOC_ARG:
+ printf ("an argument at offset %d", val);
+ break;
+
+ case LOC_LOCAL:
+ printf ("a local variable at frame offset %d", val);
+ break;
+
+ case LOC_REF_ARG:
+ printf ("a reference argument at offset %d", val);
+ break;
+
+ case LOC_TYPEDEF:
+ printf ("a typedef");
+ break;
+
+ case LOC_BLOCK:
+ printf ("a function at address 0x%x",
+ BLOCK_START (SYMBOL_BLOCK_VALUE (sym)));
+ break;
+ }
+ printf (".\n");
+}
+
+static void
+x_command (exp, from_tty)
+ char *exp;
+ int from_tty;
+{
+ struct expression *expr;
+ struct format_data fmt;
+ struct cleanup *old_chain;
+ struct value *val;
+
+ fmt.format = last_format;
+ fmt.size = last_size;
+ fmt.count = 1;
+
+ if (exp && *exp == '/')
+ {
+ exp++;
+ fmt = decode_format (&exp, last_format, last_size);
+ last_size = fmt.size;
+ last_format = fmt.format;
+ }
+
+ /* If we have an expression, evaluate it and use it as the address. */
+
+ if (exp != 0 && *exp != 0)
+ {
+ expr = parse_c_expression (exp);
+ /* Cause expression not to be there any more
+ if this command is repeated with Newline.
+ But don't clobber a user-defined command's definition. */
+ if (from_tty)
+ *exp = 0;
+ old_chain = make_cleanup (free_current_contents, &expr);
+ val = evaluate_expression (expr);
+ /* In rvalue contexts, such as this, functions are coerced into
+ pointers to functions. This makes "x/i main" work. */
+ if (/* last_format == 'i'
+ && */ TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_FUNC
+ && VALUE_LVAL (val) == lval_memory)
+ next_address = VALUE_ADDRESS (val);
+ else
+ next_address = (CORE_ADDR) value_as_long (val);
+ do_cleanups (old_chain);
+ }
+
+ do_examine (fmt, next_address);
+
+ /* Set a couple of internal variables if appropriate. */
+ if (last_examine_value)
+ {
+ /* Make last address examined available to the user as $_. */
+ set_internalvar (lookup_internalvar ("_"),
+ value_from_long (builtin_type_int,
+ (LONGEST) last_examine_address));
+
+ /* Make contents of last address examined available to the user as $__.*/
+ set_internalvar (lookup_internalvar ("__"), last_examine_value);
+ }
+}
+
+/* Commands for printing types of things. */
+
+static void
+whatis_command (exp)
+ char *exp;
+{
+ struct expression *expr;
+ register value val;
+ register struct cleanup *old_chain;
+
+ if (exp)
+ {
+ expr = parse_c_expression (exp);
+ old_chain = make_cleanup (free_current_contents, &expr);
+ val = evaluate_type (expr);
+ }
+ else
+ val = access_value_history (0);
+
+ printf_filtered ("type = ");
+ /* Most of the time users do not want to see all the fields
+ in a structure. If they do they can use the "ptype" command.
+ Hence the "-1" below. */
+ type_print (VALUE_TYPE (val), "", stdout, -1);
+ printf_filtered ("\n");
+
+ if (exp)
+ do_cleanups (old_chain);
+}
+
+static void
+ptype_command (typename)
+ char *typename;
+{
+ register char *p = typename;
+ register int len;
+ extern struct block *get_current_block ();
+ register struct block *b
+ = (have_inferior_p () || have_core_file_p ()) ? get_current_block () : 0;
+ register struct type *type;
+
+ if (typename == 0)
+ error_no_arg ("type name");
+
+ while (*p && *p != ' ' && *p != '\t') p++;
+ len = p - typename;
+ while (*p == ' ' || *p == '\t') p++;
+
+ if (len == 6 && !strncmp (typename, "struct", 6))
+ type = lookup_struct (p, b);
+ else if (len == 5 && !strncmp (typename, "union", 5))
+ type = lookup_union (p, b);
+ else if (len == 4 && !strncmp (typename, "enum", 4))
+ type = lookup_enum (p, b);
+ else
+ {
+ type = lookup_typename (typename, b, 1);
+ if (type == 0)
+ {
+ register struct symbol *sym
+ = lookup_symbol (typename, b, STRUCT_NAMESPACE, 0);
+ if (sym == 0)
+ error ("No type named %s.", typename);
+ printf_filtered ("No type named %s, but there is a ",
+ typename);
+ switch (TYPE_CODE (SYMBOL_TYPE (sym)))
+ {
+ case TYPE_CODE_STRUCT:
+ printf_filtered ("struct");
+ break;
+
+ case TYPE_CODE_UNION:
+ printf_filtered ("union");
+ break;
+
+ case TYPE_CODE_ENUM:
+ printf_filtered ("enum");
+ }
+ printf_filtered (" %s. Type \"help ptype\".\n", typename);
+ type = SYMBOL_TYPE (sym);
+ }
+ }
+
+ type_print (type, "", stdout, 1);
+ printf_filtered ("\n");
+}
+
+enum display_status {disabled, enabled};
+
+struct display
+{
+ /* Chain link to next auto-display item. */
+ struct display *next;
+ /* Expression to be evaluated and displayed. */
+ struct expression *exp;
+ /* Item number of this auto-display item. */
+ int number;
+ /* Display format specified. */
+ struct format_data format;
+ /* Innermost block required by this expression when evaluated */
+ struct block *block;
+ /* Status of this display (enabled or disabled) */
+ enum display_status status;
+};
+
+/* Chain of expressions whose values should be displayed
+ automatically each time the program stops. */
+
+static struct display *display_chain;
+
+static int display_number;
+
+/* Add an expression to the auto-display chain.
+ Specify the expression. */
+
+static void
+display_command (exp, from_tty)
+ char *exp;
+ int from_tty;
+{
+ struct format_data fmt;
+ register struct expression *expr;
+ register struct display *new;
+ extern struct block *innermost_block;
+
+ if (exp == 0)
+ {
+ do_displays ();
+ return;
+ }
+
+ if (*exp == '/')
+ {
+ exp++;
+ fmt = decode_format (&exp, 0, 0);
+ if (fmt.size && fmt.format == 0)
+ fmt.format = 'x';
+ if (fmt.format == 'i' || fmt.format == 's')
+ fmt.size = 'b';
+ }
+ else
+ {
+ fmt.format = 0;
+ fmt.size = 0;
+ fmt.count = 0;
+ }
+
+ innermost_block = 0;
+ expr = parse_c_expression (exp);
+
+ new = (struct display *) xmalloc (sizeof (struct display));
+
+ new->exp = expr;
+ new->block = innermost_block;
+ new->next = display_chain;
+ new->number = ++display_number;
+ new->format = fmt;
+ new->status = enabled;
+ display_chain = new;
+
+ if (from_tty && have_inferior_p ())
+ do_one_display (new);
+
+ dont_repeat ();
+}
+
+static void
+free_display (d)
+ struct display *d;
+{
+ free (d->exp);
+ free (d);
+}
+
+/* Clear out the display_chain.
+ Done when new symtabs are loaded, since this invalidates
+ the types stored in many expressions. */
+
+void
+clear_displays ()
+{
+ register struct display *d;
+
+ while (d = display_chain)
+ {
+ free (d->exp);
+ display_chain = d->next;
+ free (d);
+ }
+}
+
+/* Delete the auto-display number NUM. */
+
+void
+delete_display (num)
+ int num;
+{
+ register struct display *d1, *d;
+
+ if (!display_chain)
+ error ("No display number %d.", num);
+
+ if (display_chain->number == num)
+ {
+ d1 = display_chain;
+ display_chain = d1->next;
+ free_display (d1);
+ }
+ else
+ for (d = display_chain; ; d = d->next)
+ {
+ if (d->next == 0)
+ error ("No display number %d.", num);
+ if (d->next->number == num)
+ {
+ d1 = d->next;
+ d->next = d1->next;
+ free_display (d1);
+ break;
+ }
+ }
+}
+
+/* Delete some values from the auto-display chain.
+ Specify the element numbers. */
+
+static void
+undisplay_command (args)
+ char *args;
+{
+ register char *p = args;
+ register char *p1;
+ register int num;
+ register struct display *d, *d1;
+
+ if (args == 0)
+ {
+ if (query ("Delete all auto-display expressions? "))
+ clear_displays ();
+ dont_repeat ();
+ return;
+ }
+
+ while (*p)
+ {
+ p1 = p;
+ while (*p1 >= '0' && *p1 <= '9') p1++;
+ if (*p1 && *p1 != ' ' && *p1 != '\t')
+ error ("Arguments must be display numbers.");
+
+ num = atoi (p);
+
+ delete_display (num);
+
+ p = p1;
+ while (*p == ' ' || *p == '\t') p++;
+ }
+ dont_repeat ();
+}
+
+/* Display a single auto-display.
+ Do nothing if the display cannot be printed in the current context,
+ or if the display is disabled. */
+
+static void
+do_one_display (d)
+ struct display *d;
+{
+ int within_current_scope;
+
+ if (d->status == disabled)
+ return;
+
+ if (d->block)
+ within_current_scope = contained_in (get_selected_block (), d->block);
+ else
+ within_current_scope = 1;
+ if (!within_current_scope)
+ return;
+
+ current_display_number = d->number;
+
+ printf_filtered ("%d: ", d->number);
+ if (d->format.size)
+ {
+ printf_filtered ("x/");
+ if (d->format.count != 1)
+ printf_filtered ("%d", d->format.count);
+ printf_filtered ("%c", d->format.format);
+ if (d->format.format != 'i' && d->format.format != 's')
+ printf_filtered ("%c", d->format.size);
+ printf_filtered (" ");
+ print_expression (d->exp, stdout);
+ if (d->format.count != 1)
+ printf_filtered ("\n");
+ else
+ printf_filtered (" ");
+ do_examine (d->format,
+ (CORE_ADDR) value_as_long (evaluate_expression (d->exp)));
+
+ }
+ else
+ {
+ if (d->format.format)
+ printf_filtered ("/%c ", d->format.format);
+ print_expression (d->exp, stdout);
+ printf_filtered (" = ");
+ print_formatted (evaluate_expression (d->exp),
+ d->format.format, d->format.size);
+ printf_filtered ("\n");
+ }
+
+ fflush (stdout);
+ current_display_number = -1;
+}
+
+/* Display all of the values on the auto-display chain which can be
+ evaluated in the current scope. */
+
+void
+do_displays ()
+{
+ register struct display *d;
+
+ for (d = display_chain; d; d = d->next)
+ do_one_display (d);
+}
+
+/* Delete the auto-display which we were in the process of displaying.
+ This is done when there is an error or a signal. */
+
+void
+disable_display (num)
+ int num;
+{
+ register struct display *d;
+
+ for (d = display_chain; d; d = d->next)
+ if (d->number == num)
+ {
+ d->status = disabled;
+ return;
+ }
+ printf ("No display number %d.\n", num);
+}
+
+void
+disable_current_display ()
+{
+ if (current_display_number >= 0)
+ {
+ disable_display (current_display_number);
+ fprintf (stderr, "Disabling display %d to avoid infinite recursion.\n",
+ current_display_number);
+ }
+ current_display_number = -1;
+}
+
+static void
+display_info ()
+{
+ register struct display *d;
+
+ if (!display_chain)
+ printf ("There are no auto-display expressions now.\n");
+ else
+ printf_filtered ("Auto-display expressions now in effect:\n\
+Num Enb Expression\n");
+
+ for (d = display_chain; d; d = d->next)
+ {
+ printf_filtered ("%d: %c ", d->number, "ny"[(int)d->status]);
+ if (d->format.size)
+ printf_filtered ("/%d%c%c ", d->format.count, d->format.size,
+ d->format.format);
+ else if (d->format.format)
+ printf_filtered ("/%c ", d->format.format);
+ print_expression (d->exp, stdout);
+ if (d->block && !contained_in (get_selected_block (), d->block))
+ printf_filtered (" (cannot be evaluated in the current context)");
+ printf_filtered ("\n");
+ fflush (stdout);
+ }
+}
+
+void
+enable_display (args)
+ char *args;
+{
+ register char *p = args;
+ register char *p1;
+ register int num;
+ register struct display *d;
+
+ if (p == 0)
+ {
+ for (d = display_chain; d; d = d->next)
+ d->status = enabled;
+ }
+ else
+ while (*p)
+ {
+ p1 = p;
+ while (*p1 >= '0' && *p1 <= '9')
+ p1++;
+ if (*p1 && *p1 != ' ' && *p1 != '\t')
+ error ("Arguments must be display numbers.");
+
+ num = atoi (p);
+
+ for (d = display_chain; d; d = d->next)
+ if (d->number == num)
+ {
+ d->status = enabled;
+ goto win;
+ }
+ printf ("No display number %d.\n", num);
+ win:
+ p = p1;
+ while (*p == ' ' || *p == '\t')
+ p++;
+ }
+}
+
+void
+disable_display_command (args, from_tty)
+ char *args;
+ int from_tty;
+{
+ register char *p = args;
+ register char *p1;
+ register int num;
+ register struct display *d;
+
+ if (p == 0)
+ {
+ for (d = display_chain; d; d = d->next)
+ d->status = disabled;
+ }
+ else
+ while (*p)
+ {
+ p1 = p;
+ while (*p1 >= '0' && *p1 <= '9')
+ p1++;
+ if (*p1 && *p1 != ' ' && *p1 != '\t')
+ error ("Arguments must be display numbers.");
+
+ num = atoi (p);
+
+ disable_display (atoi (p));
+
+ p = p1;
+ while (*p == ' ' || *p == '\t')
+ p++;
+ }
+}
+
+
+/* Print the value in stack frame FRAME of a variable
+ specified by a struct symbol. */
+
+void
+print_variable_value (var, frame, stream)
+ struct symbol *var;
+ FRAME frame;
+ FILE *stream;
+{
+ value val = read_var_value (var, frame);
+ value_print (val, stream, 0, Val_pretty_default);
+}
+
+static int
+compare_ints (i, j)
+ int *i, *j;
+{
+ return *i - *j;
+}
+
+/* Print the arguments of a stack frame, given the function FUNC
+ running in that frame (as a symbol), the info on the frame,
+ and the number of args according to the stack frame (or -1 if unknown). */
+
+static void print_frame_nameless_args ();
+
+void
+print_frame_args (func, fi, num, stream)
+ struct symbol *func;
+ struct frame_info *fi;
+ int num;
+ FILE *stream;
+{
+ struct block *b;
+ int nsyms = 0;
+ int first = 1;
+ register int i;
+ register int last_regparm = 0;
+ register struct symbol *lastsym, *sym, *nextsym;
+ register value val;
+ /* Offset of stack argument that is at the highest offset.
+ -1 if we haven't come to a stack argument yet. */
+ CORE_ADDR highest_offset = (CORE_ADDR) -1;
+ register CORE_ADDR addr = FRAME_ARGS_ADDRESS (fi);
+
+ if (func)
+ {
+ b = SYMBOL_BLOCK_VALUE (func);
+ nsyms = BLOCK_NSYMS (b);
+ }
+
+ for (i = 0; i < nsyms; i++)
+ {
+ QUIT;
+ sym = BLOCK_SYM (b, i);
+
+ if (SYMBOL_CLASS (sym) != LOC_REGPARM
+ && SYMBOL_CLASS (sym) != LOC_ARG
+ && SYMBOL_CLASS (sym) != LOC_REF_ARG)
+ continue;
+
+ /* Print the next arg. */
+ if (SYMBOL_CLASS (sym) == LOC_REGPARM)
+ val = value_from_register (SYMBOL_TYPE (sym),
+ SYMBOL_VALUE (sym),
+ FRAME_INFO_ID (fi));
+ else
+ {
+ int current_offset = SYMBOL_VALUE (sym);
+ int arg_size = TYPE_LENGTH (SYMBOL_TYPE (sym));
+
+ if (SYMBOL_CLASS (sym) == LOC_REF_ARG)
+ val = value_at (SYMBOL_TYPE (sym),
+ read_memory_integer (addr + current_offset,
+ sizeof (CORE_ADDR)));
+ else
+ val = value_at (SYMBOL_TYPE (sym), addr + current_offset);
+
+ /* Round up address of next arg to multiple of size of int. */
+ current_offset
+ = (((current_offset + sizeof (int) - 1) / sizeof (int))
+ * sizeof (int));
+
+ /* If this is the highest offset seen yet, set highest_offset. */
+ if (highest_offset == (CORE_ADDR)-1
+ || ((current_offset
+ + (arg_size - sizeof (int) + 3) / (sizeof (int)))
+ > highest_offset))
+ highest_offset = current_offset;
+ }
+
+ if (! first)
+ fprintf_filtered (stream, ", ");
+ fputs_filtered (SYMBOL_NAME (sym), stream);
+ fputs_filtered ("=", stream);
+
+/* Nonzero if a LOC_ARG which is a struct is useless. */
+#if !defined (STRUCT_ARG_SYM_GARBAGE)
+#define STRUCT_ARG_SYM_GARBAGE(gcc_p) 0
+#endif
+
+ if (STRUCT_ARG_SYM_GARBAGE (b->gcc_compile_flag)
+ && TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_STRUCT
+ && SYMBOL_CLASS (sym) == LOC_ARG)
+ {
+ /* Try looking up that name. SunOS4 puts out a usable
+ symbol as a local variable (in addition to the one
+ for the arg). */
+ struct symbol *sym2 =
+ lookup_symbol (SYMBOL_NAME (sym), b, VAR_NAMESPACE, 0);
+
+ if (sym2 != NULL)
+ val = value_of_variable (sym2);
+ else
+ {
+ fputs_filtered ("?", stream);
+ first = 0;
+ continue;
+ }
+ }
+
+ value_print (val, stream, 0, Val_no_prettyprint);
+ first = 0;
+ }
+
+ /* Don't print nameless args in situations where we don't know
+ enough about the stack to find them. */
+ if (num != -1)
+ {
+ if (highest_offset != (CORE_ADDR) -1
+ && num * sizeof (int) + FRAME_ARGS_SKIP > highest_offset)
+ print_frame_nameless_args (fi, addr,
+ highest_offset + sizeof (int),
+ num * sizeof (int) + FRAME_ARGS_SKIP,
+ stream);
+ else
+ print_frame_nameless_args (fi, addr, FRAME_ARGS_SKIP,
+ num * sizeof (int) + FRAME_ARGS_SKIP,
+ stream);
+ }
+}
+
+static void
+print_frame_nameless_args (fi, argsaddr, start, end, stream)
+ struct frame_info *fi;
+ CORE_ADDR argsaddr;
+ int start;
+ int end;
+ FILE *stream;
+{
+ extern void (*default_scalar_print)();
+ LONGEST v;
+ int p = start;
+ char *s = "";
+
+ for (p = start; p < end; p += sizeof(int)) {
+ QUIT;
+#if defined(NAMELESS_ARG)
+ v = NAMELESS_ARG(fi, (p - start) / sizeof(int));
+#else
+ v = read_memory_integer (argsaddr + p, sizeof (int));
+#endif
+ fprintf_filtered (stream, s);
+ s = ", ";
+ (*default_scalar_print) (stream, builtin_type_int, v);
+ }
+}
+
+static void
+printf_command (arg)
+ char *arg;
+{
+ register char *f;
+ register char *s = arg;
+ char *string;
+ value *val_args;
+ int nargs = 0;
+ int allocated_args = 20;
+ char *arg_bytes;
+
+ val_args = (value *) xmalloc (allocated_args * sizeof (value));
+
+ if (s == 0)
+ error_no_arg ("format-control string and values to print");
+
+ /* Skip white space before format string */
+ while (*s == ' ' || *s == '\t') s++;
+
+ /* A format string should follow, enveloped in double quotes */
+ if (*s++ != '"')
+ error ("Bad format string, missing '\"'.");
+
+ /* Parse the format-control string and copy it into the string STRING,
+ processing some kinds of escape sequence. */
+
+ f = string = (char *) alloca (strlen (s) + 1);
+ while (*s != '"')
+ {
+ int c = *s++;
+ switch (c)
+ {
+ case '\0':
+ error ("Bad format string, non-terminated '\"'.");
+ /* doesn't return */
+
+ case '\\':
+ switch (c = *s++)
+ {
+ case '\\':
+ *f++ = '\\';
+ break;
+ case 'n':
+ *f++ = '\n';
+ break;
+ case 't':
+ *f++ = '\t';
+ break;
+ case 'r':
+ *f++ = '\r';
+ break;
+ case '"':
+ *f++ = '"';
+ break;
+ default:
+ /* ??? TODO: handle other escape sequences */
+ error ("Unrecognized \\ escape character in format string.");
+ }
+ break;
+
+ default:
+ *f++ = c;
+ }
+ }
+
+ /* Skip over " and following space and comma. */
+ s++;
+ *f++ = '\0';
+ while (*s == ' ' || *s == '\t') s++;
+
+ if (*s != ',' && *s != 0)
+ error ("Invalid argument syntax");
+
+ if (*s == ',') s++;
+ while (*s == ' ' || *s == '\t') s++;
+
+ {
+ /* Now scan the string for %-specs and see what kinds of args they want.
+ argclass[I] classifies the %-specs so we can give vprintf something
+ of the right size. */
+
+ enum argclass {int_arg, string_arg, double_arg, long_long_arg};
+ enum argclass *argclass;
+ int nargs_wanted;
+ int argindex;
+ int lcount;
+ int i;
+
+ argclass = (enum argclass *) alloca (strlen (s) * sizeof *argclass);
+ nargs_wanted = 0;
+ f = string;
+ while (*f)
+ if (*f++ == '%')
+ {
+ lcount = 0;
+ while (index ("0123456789.hlL-+ #", *f))
+ {
+ if (*f == 'l' || *f == 'L')
+ lcount++;
+ f++;
+ }
+ if (*f == 's')
+ argclass[nargs_wanted++] = string_arg;
+ else if (*f == 'e' || *f == 'f' || *f == 'g')
+ argclass[nargs_wanted++] = double_arg;
+ else if (lcount > 1)
+ argclass[nargs_wanted++] = long_long_arg;
+ else if (*f != '%')
+ argclass[nargs_wanted++] = int_arg;
+ f++;
+ }
+
+ /* Now, parse all arguments and evaluate them.
+ Store the VALUEs in VAL_ARGS. */
+
+ while (*s != '\0')
+ {
+ char *s1;
+ if (nargs == allocated_args)
+ val_args = (value *) xrealloc (val_args,
+ (allocated_args *= 2)
+ * sizeof (value));
+ s1 = s;
+ val_args[nargs] = parse_to_comma_and_eval (&s1);
+
+ /* If format string wants a float, unchecked-convert the value to
+ floating point of the same size */
+
+ if (argclass[nargs] == double_arg)
+ {
+ if (TYPE_LENGTH (VALUE_TYPE (val_args[nargs])) == sizeof (float))
+ VALUE_TYPE (val_args[nargs]) = builtin_type_float;
+ if (TYPE_LENGTH (VALUE_TYPE (val_args[nargs])) == sizeof (double))
+ VALUE_TYPE (val_args[nargs]) = builtin_type_double;
+ }
+ nargs++;
+ s = s1;
+ if (*s == ',')
+ s++;
+ }
+
+ if (nargs != nargs_wanted)
+ error ("Wrong number of arguments for specified format-string");
+
+ /* Now lay out an argument-list containing the arguments
+ as doubles, integers and C pointers. */
+
+ arg_bytes = (char *) alloca (sizeof (double) * nargs);
+ argindex = 0;
+ for (i = 0; i < nargs; i++)
+ {
+ if (argclass[i] == string_arg)
+ {
+ char *str;
+ int tem, j;
+ tem = value_as_long (val_args[i]);
+
+ /* This is a %s argument. Find the length of the string. */
+ for (j = 0; ; j++)
+ {
+ char c;
+ QUIT;
+ read_memory (tem + j, &c, 1);
+ if (c == 0)
+ break;
+ }
+
+ /* Copy the string contents into a string inside GDB. */
+ str = (char *) alloca (j + 1);
+ read_memory (tem, str, j);
+ str[j] = 0;
+
+ /* Pass address of internal copy as the arg to vprintf. */
+ *((int *) &arg_bytes[argindex]) = (int) str;
+ argindex += sizeof (int);
+ }
+ else if (VALUE_TYPE (val_args[i])->code == TYPE_CODE_FLT)
+ {
+ *((double *) &arg_bytes[argindex]) = value_as_double (val_args[i]);
+ argindex += sizeof (double);
+ }
+ else
+#ifdef LONG_LONG
+ if (argclass[i] == long_long_arg)
+ {
+ *(long long *) &arg_bytes[argindex] = value_as_long (val_args[i]);
+ argindex += sizeof (long long);
+ }
+ else
+#endif
+ {
+ *((int *) &arg_bytes[argindex]) = value_as_long (val_args[i]);
+ argindex += sizeof (int);
+ }
+ }
+ }
+ vprintf (string, arg_bytes);
+}
+
+/* Helper function for asdump_command. Finds the bounds of a function
+ for a specified section of text. PC is an address within the
+ function which you want bounds for; *LOW and *HIGH are set to the
+ beginning (inclusive) and end (exclusive) of the function. This
+ function returns 1 on success and 0 on failure. */
+
+static int
+containing_function_bounds (pc, low, high)
+ CORE_ADDR pc, *low, *high;
+{
+ int scan;
+
+ if (!find_pc_partial_function (pc, 0, low))
+ return 0;
+
+ scan = *low;
+ do {
+ scan++;
+ if (!find_pc_partial_function (scan, 0, high))
+ return 0;
+ } while (*low == *high);
+
+ return 1;
+}
+
+/* Dump a specified section of assembly code. With no command line
+ arguments, this command will dump the assembly code for the
+ function surrounding the pc value in the selected frame. With one
+ argument, it will dump the assembly code surrounding that pc value.
+ Two arguments are interpeted as bounds within which to dump
+ assembly. */
+
+static void
+disassemble_command (arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ CORE_ADDR low, high;
+ CORE_ADDR pc;
+ char *space_index;
+
+ if (!arg)
+ {
+ if (!selected_frame)
+ error ("No frame selected.\n");
+
+ pc = get_frame_pc (selected_frame);
+ if (!containing_function_bounds (pc, &low, &high))
+ error ("No function contains pc specified by selected frame.\n");
+ }
+ else if (!(space_index = (char *) index (arg, ' ')))
+ {
+ /* One argument. */
+ pc = parse_and_eval_address (arg);
+ if (!containing_function_bounds (pc, &low, &high))
+ error ("No function contains specified pc.\n");
+ }
+ else
+ {
+ /* Two arguments. */
+ *space_index = '\0';
+ low = parse_and_eval_address (arg);
+ high = parse_and_eval_address (space_index + 1);
+ }
+
+ printf_filtered ("Dump of assembler code ");
+ if (!space_index)
+ {
+ char *name;
+ find_pc_partial_function (pc, &name, 0);
+ printf_filtered ("for function %s:\n", name);
+ }
+ else
+ printf_filtered ("from 0x%x to 0x%x:\n", low, high);
+
+ /* Dump the specified range. */
+ for (pc = low; pc < high; )
+ {
+ QUIT;
+ print_address (pc, stdout);
+ printf_filtered (":\t");
+ pc += print_insn (pc, stdout);
+ printf_filtered ("\n");
+ }
+ printf_filtered ("End of assembler dump.\n");
+ fflush (stdout);
+}
+
+
+extern struct cmd_list_element *enablelist, *disablelist, *deletelist;
+extern struct cmd_list_element *cmdlist, *setlist;
+
+void
+_initialize_printcmd ()
+{
+ current_display_number = -1;
+
+ add_info ("address", address_info,
+ "Describe where variable VAR is stored.");
+
+ add_com ("x", class_vars, x_command,
+ "Examine memory: x/FMT ADDRESS.\n\
+ADDRESS is an expression for the memory address to examine.\n\
+FMT is a repeat count followed by a format letter and a size letter.\n\
+Format letters are o(octal), x(hex), d(decimal), u(unsigned decimal),\n\
+ f(float), a(address), i(instruction), c(char) and s(string).\n\
+Size letters are b(byte), h(halfword), w(word), g(giant, 8 bytes).\n\
+ g is meaningful only with f, for type double.\n\
+The specified number of objects of the specified size are printed\n\
+according to the format.\n\n\
+Defaults for format and size letters are those previously used.\n\
+Default count is 1. Default address is following last thing printed\n\
+with this command or \"print\".");
+
+ add_com ("disassemble", class_vars, disassemble_command,
+ "Disassemble a specified section of memory.\n\
+Default is the function surrounding the pc of the selected frame.\n\
+With a single argument, the function surrounding that address is dumped.\n\
+Two arguments are taken as a range of memory to dump.");
+
+ add_com ("ptype", class_vars, ptype_command,
+ "Print definition of type TYPE.\n\
+Argument may be a type name defined by typedef, or \"struct STRUCTNAME\"\n\
+or \"union UNIONNAME\" or \"enum ENUMNAME\".\n\
+The selected stack frame's lexical context is used to look up the name.");
+
+ add_com ("whatis", class_vars, whatis_command,
+ "Print data type of expression EXP.");
+
+ add_info ("display", display_info,
+ "Expressions to display when program stops, with code numbers.");
+
+ add_cmd ("undisplay", class_vars, undisplay_command,
+ "Cancel some expressions to be displayed when program stops.\n\
+Arguments are the code numbers of the expressions to stop displaying.\n\
+No argument means cancel all automatic-display expressions.\n\
+\"delete display\" has the same effect as this command.\n\
+Do \"info display\" to see current list of code numbers.",
+ &cmdlist);
+
+ add_com ("display", class_vars, display_command,
+ "Print value of expression EXP each time the program stops.\n\
+/FMT may be used before EXP as in the \"print\" command.\n\
+/FMT \"i\" or \"s\" or including a size-letter is allowed,\n\
+as in the \"x\" command, and then EXP is used to get the address to examine\n\
+and examining is done as in the \"x\" command.\n\n\
+With no argument, display all currently requested auto-display expressions.\n\
+Use \"undisplay\" to cancel display requests previously made.");
+
+ add_cmd ("display", class_vars, enable_display,
+ "Enable some expressions to be displayed when program stops.\n\
+Arguments are the code numbers of the expressions to resume displaying.\n\
+No argument means enable all automatic-display expressions.\n\
+Do \"info display\" to see current list of code numbers.", &enablelist);
+
+ add_cmd ("display", class_vars, disable_display_command,
+ "Disable some expressions to be displayed when program stops.\n\
+Arguments are the code numbers of the expressions to stop displaying.\n\
+No argument means disable all automatic-display expressions.\n\
+Do \"info display\" to see current list of code numbers.", &disablelist);
+
+ add_cmd ("display", class_vars, undisplay_command,
+ "Cancel some expressions to be displayed when program stops.\n\
+Arguments are the code numbers of the expressions to stop displaying.\n\
+No argument means cancel all automatic-display expressions.\n\
+Do \"info display\" to see current list of code numbers.", &deletelist);
+
+ add_com ("printf", class_vars, printf_command,
+ "printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
+This is useful for formatted output in user-defined commands.");
+ add_com ("output", class_vars, output_command,
+ "Like \"print\" but don't put in value history and don't print newline.\n\
+This is useful in user-defined commands.");
+
+ add_prefix_cmd ("set", class_vars, set_command,
+"Perform an assignment VAR = EXP.\n\
+You must type the \"=\". VAR may be a debugger \"convenience\" variable\n\
+(names starting with $), a register (a few standard names starting with $),\n\
+or an actual variable in the program being debugged. EXP is any expression.\n\
+Use \"set variable\" for variables with names identical to set subcommands.\n\
+\nWith a subcommand, this command modifies parts of the gdb environment",
+ &setlist, "set ", 1, &cmdlist);
+
+ add_cmd ("variable", class_vars, set_command,
+ "Perform an assignment VAR = EXP.\n\
+You must type the \"=\". VAR may be a debugger \"convenience\" variable\n\
+(names starting with $), a register (a few standard names starting with $),\n\
+or an actual variable in the program being debugged. EXP is any expression.\n\
+This may usually be abbreviated to simply \"set\".",
+ &setlist);
+
+ add_com ("print", class_vars, print_command,
+ concat ("Print value of expression EXP.\n\
+Variables accessible are those of the lexical environment of the selected\n\
+stack frame, plus all those whose scope is global or an entire file.\n\
+\n\
+$NUM gets previous value number NUM. $ and $$ are the last two values.\n\
+$$NUM refers to NUM'th value back from the last one.\n\
+Names starting with $ refer to registers (with the values they would have\n\
+if the program were to return to the stack frame now selected, restoring\n\
+all registers saved by frames farther in) or else to debugger\n\
+\"convenience\" variables (any such name not a known register).\n\
+Use assignment expressions to give values to convenience variables.\n",
+ "\n\
+\{TYPE}ADREXP refers to a datum of data type TYPE, located at address ADREXP.\n\
+@ is a binary operator for treating consecutive data objects\n\
+anywhere in memory as an array. FOO@NUM gives an array whose first\n\
+element is FOO, whose second element is stored in the space following\n\
+where FOO is stored, etc. FOO must be an expression whose value\n\
+resides in memory.\n",
+ "\n\
+EXP may be preceded with /FMT, where FMT is a format letter\n\
+but no count or size letter (see \"x\" command)."));
+ add_com_alias ("p", "print", class_vars, 1);
+}
diff --git a/gnu/usr.bin/kgdb/regex.c b/gnu/usr.bin/kgdb/regex.c
new file mode 100644
index 000000000000..6a5aa43f9ca5
--- /dev/null
+++ b/gnu/usr.bin/kgdb/regex.c
@@ -0,0 +1,1738 @@
+/* Extended regular expression matching and search library.
+ Copyright (C) 1985, 1989 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 1, or (at your option)
+ any later version.
+
+ 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. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+
+ In other words, you are welcome to use, share and improve this program.
+ You are forbidden to forbid anyone else to use, share and improve
+ what you give them. Help stamp out software-hoarding! */
+
+
+/* To test, compile with -Dtest.
+ This Dtestable feature turns this into a self-contained program
+ which reads a pattern, describes how it compiles,
+ then reads a string and searches for it. */
+
+#ifdef emacs
+
+/* The `emacs' switch turns on certain special matching commands
+ that make sense only in emacs. */
+
+#include "config.h"
+#include "lisp.h"
+#include "buffer.h"
+#include "syntax.h"
+
+#else /* not emacs */
+
+#ifdef USG
+#ifndef BSTRING
+#define bcopy(s,d,n) memcpy((d),(s),(n))
+#define bcmp(s1,s2,n) memcmp((s1),(s2),(n))
+#define bzero(s,n) memset((s),0,(n))
+#endif
+#endif
+
+/* Make alloca work the best possible way. */
+#ifdef __GNUC__
+#define alloca __builtin_alloca
+#else
+#ifdef sparc
+#include <alloca.h>
+#endif
+#endif
+
+/*
+ * Define the syntax stuff, so we can do the \<...\> things.
+ */
+
+#ifndef Sword /* must be non-zero in some of the tests below... */
+#define Sword 1
+#endif
+
+#define SYNTAX(c) re_syntax_table[c]
+
+#ifdef SYNTAX_TABLE
+
+char *re_syntax_table;
+
+#else
+
+static char re_syntax_table[256];
+
+static void
+init_syntax_once ()
+{
+ register int c;
+ static int done = 0;
+
+ if (done)
+ return;
+
+ bzero (re_syntax_table, sizeof re_syntax_table);
+
+ for (c = 'a'; c <= 'z'; c++)
+ re_syntax_table[c] = Sword;
+
+ for (c = 'A'; c <= 'Z'; c++)
+ re_syntax_table[c] = Sword;
+
+ for (c = '0'; c <= '9'; c++)
+ re_syntax_table[c] = Sword;
+
+ done = 1;
+}
+
+#endif /* SYNTAX_TABLE */
+#endif /* not emacs */
+
+#include "regex.h"
+
+/* Number of failure points to allocate space for initially,
+ when matching. If this number is exceeded, more space is allocated,
+ so it is not a hard limit. */
+
+#ifndef NFAILURES
+#define NFAILURES 80
+#endif /* NFAILURES */
+
+/* width of a byte in bits */
+
+#define BYTEWIDTH 8
+
+#ifndef SIGN_EXTEND_CHAR
+#define SIGN_EXTEND_CHAR(x) (x)
+#endif
+
+static int obscure_syntax = 0;
+
+/* Specify the precise syntax of regexp for compilation.
+ This provides for compatibility for various utilities
+ which historically have different, incompatible syntaxes.
+
+ The argument SYNTAX is a bit-mask containing the two bits
+ RE_NO_BK_PARENS and RE_NO_BK_VBAR. */
+
+int
+re_set_syntax (syntax)
+{
+ int ret;
+
+ ret = obscure_syntax;
+ obscure_syntax = syntax;
+ return ret;
+}
+
+/* re_compile_pattern takes a regular-expression string
+ and converts it into a buffer full of byte commands for matching.
+
+ PATTERN is the address of the pattern string
+ SIZE is the length of it.
+ BUFP is a struct re_pattern_buffer * which points to the info
+ on where to store the byte commands.
+ This structure contains a char * which points to the
+ actual space, which should have been obtained with malloc.
+ re_compile_pattern may use realloc to grow the buffer space.
+
+ The number of bytes of commands can be found out by looking in
+ the struct re_pattern_buffer that bufp pointed to,
+ after re_compile_pattern returns.
+*/
+
+#define PATPUSH(ch) (*b++ = (char) (ch))
+
+#define PATFETCH(c) \
+ {if (p == pend) goto end_of_pattern; \
+ c = * (unsigned char *) p++; \
+ if (translate) c = translate[c]; }
+
+#define PATFETCH_RAW(c) \
+ {if (p == pend) goto end_of_pattern; \
+ c = * (unsigned char *) p++; }
+
+#define PATUNFETCH p--
+
+#define EXTEND_BUFFER \
+ { char *old_buffer = bufp->buffer; \
+ if (bufp->allocated == (1<<16)) goto too_big; \
+ bufp->allocated *= 2; \
+ if (bufp->allocated > (1<<16)) bufp->allocated = (1<<16); \
+ if (!(bufp->buffer = (char *) realloc (bufp->buffer, bufp->allocated))) \
+ goto memory_exhausted; \
+ c = bufp->buffer - old_buffer; \
+ b += c; \
+ if (fixup_jump) \
+ fixup_jump += c; \
+ if (laststart) \
+ laststart += c; \
+ begalt += c; \
+ if (pending_exact) \
+ pending_exact += c; \
+ }
+
+static int store_jump (), insert_jump ();
+
+char *
+re_compile_pattern (pattern, size, bufp)
+ char *pattern;
+ int size;
+ struct re_pattern_buffer *bufp;
+{
+ register char *b = bufp->buffer;
+ register char *p = pattern;
+ char *pend = pattern + size;
+ register unsigned c, c1;
+ char *p1;
+ unsigned char *translate = (unsigned char *) bufp->translate;
+
+ /* address of the count-byte of the most recently inserted "exactn" command.
+ This makes it possible to tell whether a new exact-match character
+ can be added to that command or requires a new "exactn" command. */
+
+ char *pending_exact = 0;
+
+ /* address of the place where a forward-jump should go
+ to the end of the containing expression.
+ Each alternative of an "or", except the last, ends with a forward-jump
+ of this sort. */
+
+ char *fixup_jump = 0;
+
+ /* address of start of the most recently finished expression.
+ This tells postfix * where to find the start of its operand. */
+
+ char *laststart = 0;
+
+ /* In processing a repeat, 1 means zero matches is allowed */
+
+ char zero_times_ok;
+
+ /* In processing a repeat, 1 means many matches is allowed */
+
+ char many_times_ok;
+
+ /* address of beginning of regexp, or inside of last \( */
+
+ char *begalt = b;
+
+ /* Stack of information saved by \( and restored by \).
+ Four stack elements are pushed by each \(:
+ First, the value of b.
+ Second, the value of fixup_jump.
+ Third, the value of regnum.
+ Fourth, the value of begalt. */
+
+ int stackb[40];
+ int *stackp = stackb;
+ int *stacke = stackb + 40;
+ int *stackt;
+
+ /* Counts \('s as they are encountered. Remembered for the matching \),
+ where it becomes the "register number" to put in the stop_memory command */
+
+ int regnum = 1;
+
+ bufp->fastmap_accurate = 0;
+
+#ifndef emacs
+#ifndef SYNTAX_TABLE
+ /*
+ * Initialize the syntax table.
+ */
+ init_syntax_once();
+#endif
+#endif
+
+ if (bufp->allocated == 0)
+ {
+ bufp->allocated = 28;
+ if (bufp->buffer)
+ /* EXTEND_BUFFER loses when bufp->allocated is 0 */
+ bufp->buffer = (char *) realloc (bufp->buffer, 28);
+ else
+ /* Caller did not allocate a buffer. Do it for him */
+ bufp->buffer = (char *) malloc (28);
+ if (!bufp->buffer) goto memory_exhausted;
+ begalt = b = bufp->buffer;
+ }
+
+ while (p != pend)
+ {
+ if (b - bufp->buffer > bufp->allocated - 10)
+ /* Note that EXTEND_BUFFER clobbers c */
+ EXTEND_BUFFER;
+
+ PATFETCH (c);
+
+ switch (c)
+ {
+ case '$':
+ if (obscure_syntax & RE_TIGHT_VBAR)
+ {
+ if (! (obscure_syntax & RE_CONTEXT_INDEP_OPS) && p != pend)
+ goto normal_char;
+ /* Make operand of last vbar end before this `$'. */
+ if (fixup_jump)
+ store_jump (fixup_jump, jump, b);
+ fixup_jump = 0;
+ PATPUSH (endline);
+ break;
+ }
+
+ /* $ means succeed if at end of line, but only in special contexts.
+ If randomly in the middle of a pattern, it is a normal character. */
+ if (p == pend || *p == '\n'
+ || (obscure_syntax & RE_CONTEXT_INDEP_OPS)
+ || (obscure_syntax & RE_NO_BK_PARENS
+ ? *p == ')'
+ : *p == '\\' && p[1] == ')')
+ || (obscure_syntax & RE_NO_BK_VBAR
+ ? *p == '|'
+ : *p == '\\' && p[1] == '|'))
+ {
+ PATPUSH (endline);
+ break;
+ }
+ goto normal_char;
+
+ case '^':
+ /* ^ means succeed if at beg of line, but only if no preceding pattern. */
+
+ if (laststart && p[-2] != '\n'
+ && ! (obscure_syntax & RE_CONTEXT_INDEP_OPS))
+ goto normal_char;
+ if (obscure_syntax & RE_TIGHT_VBAR)
+ {
+ if (p != pattern + 1
+ && ! (obscure_syntax & RE_CONTEXT_INDEP_OPS))
+ goto normal_char;
+ PATPUSH (begline);
+ begalt = b;
+ }
+ else
+ PATPUSH (begline);
+ break;
+
+ case '+':
+ case '?':
+ if (obscure_syntax & RE_BK_PLUS_QM)
+ goto normal_char;
+ handle_plus:
+ case '*':
+ /* If there is no previous pattern, char not special. */
+ if (!laststart && ! (obscure_syntax & RE_CONTEXT_INDEP_OPS))
+ goto normal_char;
+ /* If there is a sequence of repetition chars,
+ collapse it down to equivalent to just one. */
+ zero_times_ok = 0;
+ many_times_ok = 0;
+ while (1)
+ {
+ zero_times_ok |= c != '+';
+ many_times_ok |= c != '?';
+ if (p == pend)
+ break;
+ PATFETCH (c);
+ if (c == '*')
+ ;
+ else if (!(obscure_syntax & RE_BK_PLUS_QM)
+ && (c == '+' || c == '?'))
+ ;
+ else if ((obscure_syntax & RE_BK_PLUS_QM)
+ && c == '\\')
+ {
+ int c1;
+ PATFETCH (c1);
+ if (!(c1 == '+' || c1 == '?'))
+ {
+ PATUNFETCH;
+ PATUNFETCH;
+ break;
+ }
+ c = c1;
+ }
+ else
+ {
+ PATUNFETCH;
+ break;
+ }
+ }
+
+ /* Star, etc. applied to an empty pattern is equivalent
+ to an empty pattern. */
+ if (!laststart)
+ break;
+
+ /* Now we know whether 0 matches is allowed,
+ and whether 2 or more matches is allowed. */
+ if (many_times_ok)
+ {
+ /* If more than one repetition is allowed,
+ put in a backward jump at the end. */
+ store_jump (b, maybe_finalize_jump, laststart - 3);
+ b += 3;
+ }
+ insert_jump (on_failure_jump, laststart, b + 3, b);
+ pending_exact = 0;
+ b += 3;
+ if (!zero_times_ok)
+ {
+ /* At least one repetition required: insert before the loop
+ a skip over the initial on-failure-jump instruction */
+ insert_jump (dummy_failure_jump, laststart, laststart + 6, b);
+ b += 3;
+ }
+ break;
+
+ case '.':
+ laststart = b;
+ PATPUSH (anychar);
+ break;
+
+ case '[':
+ while (b - bufp->buffer
+ > bufp->allocated - 3 - (1 << BYTEWIDTH) / BYTEWIDTH)
+ /* Note that EXTEND_BUFFER clobbers c */
+ EXTEND_BUFFER;
+
+ laststart = b;
+ if (*p == '^')
+ PATPUSH (charset_not), p++;
+ else
+ PATPUSH (charset);
+ p1 = p;
+
+ PATPUSH ((1 << BYTEWIDTH) / BYTEWIDTH);
+ /* Clear the whole map */
+ bzero (b, (1 << BYTEWIDTH) / BYTEWIDTH);
+ /* Read in characters and ranges, setting map bits */
+ while (1)
+ {
+ PATFETCH (c);
+ if (c == ']' && p != p1 + 1) break;
+ if (*p == '-' && p[1] != ']')
+ {
+ PATFETCH (c1);
+ PATFETCH (c1);
+ while (c <= c1)
+ b[c / BYTEWIDTH] |= 1 << (c % BYTEWIDTH), c++;
+ }
+ else
+ {
+ b[c / BYTEWIDTH] |= 1 << (c % BYTEWIDTH);
+ }
+ }
+ /* Discard any bitmap bytes that are all 0 at the end of the map.
+ Decrement the map-length byte too. */
+ while ((int) b[-1] > 0 && b[b[-1] - 1] == 0)
+ b[-1]--;
+ b += b[-1];
+ break;
+
+ case '(':
+ if (! (obscure_syntax & RE_NO_BK_PARENS))
+ goto normal_char;
+ else
+ goto handle_open;
+
+ case ')':
+ if (! (obscure_syntax & RE_NO_BK_PARENS))
+ goto normal_char;
+ else
+ goto handle_close;
+
+ case '\n':
+ if (! (obscure_syntax & RE_NEWLINE_OR))
+ goto normal_char;
+ else
+ goto handle_bar;
+
+ case '|':
+ if (! (obscure_syntax & RE_NO_BK_VBAR))
+ goto normal_char;
+ else
+ goto handle_bar;
+
+ case '\\':
+ if (p == pend) goto invalid_pattern;
+ PATFETCH_RAW (c);
+ switch (c)
+ {
+ case '(':
+ if (obscure_syntax & RE_NO_BK_PARENS)
+ goto normal_backsl;
+ handle_open:
+ if (stackp == stacke) goto nesting_too_deep;
+ if (regnum < RE_NREGS)
+ {
+ PATPUSH (start_memory);
+ PATPUSH (regnum);
+ }
+ *stackp++ = b - bufp->buffer;
+ *stackp++ = fixup_jump ? fixup_jump - bufp->buffer + 1 : 0;
+ *stackp++ = regnum++;
+ *stackp++ = begalt - bufp->buffer;
+ fixup_jump = 0;
+ laststart = 0;
+ begalt = b;
+ break;
+
+ case ')':
+ if (obscure_syntax & RE_NO_BK_PARENS)
+ goto normal_backsl;
+ handle_close:
+ if (stackp == stackb) goto unmatched_close;
+ begalt = *--stackp + bufp->buffer;
+ if (fixup_jump)
+ store_jump (fixup_jump, jump, b);
+ if (stackp[-1] < RE_NREGS)
+ {
+ PATPUSH (stop_memory);
+ PATPUSH (stackp[-1]);
+ }
+ stackp -= 2;
+ fixup_jump = 0;
+ if (*stackp)
+ fixup_jump = *stackp + bufp->buffer - 1;
+ laststart = *--stackp + bufp->buffer;
+ break;
+
+ case '|':
+ if (obscure_syntax & RE_NO_BK_VBAR)
+ goto normal_backsl;
+ handle_bar:
+ insert_jump (on_failure_jump, begalt, b + 6, b);
+ pending_exact = 0;
+ b += 3;
+ if (fixup_jump)
+ store_jump (fixup_jump, jump, b);
+ fixup_jump = b;
+ b += 3;
+ laststart = 0;
+ begalt = b;
+ break;
+
+#ifdef emacs
+ case '=':
+ PATPUSH (at_dot);
+ break;
+
+ case 's':
+ laststart = b;
+ PATPUSH (syntaxspec);
+ PATFETCH (c);
+ PATPUSH (syntax_spec_code[c]);
+ break;
+
+ case 'S':
+ laststart = b;
+ PATPUSH (notsyntaxspec);
+ PATFETCH (c);
+ PATPUSH (syntax_spec_code[c]);
+ break;
+#endif /* emacs */
+
+ case 'w':
+ laststart = b;
+ PATPUSH (wordchar);
+ break;
+
+ case 'W':
+ laststart = b;
+ PATPUSH (notwordchar);
+ break;
+
+ case '<':
+ PATPUSH (wordbeg);
+ break;
+
+ case '>':
+ PATPUSH (wordend);
+ break;
+
+ case 'b':
+ PATPUSH (wordbound);
+ break;
+
+ case 'B':
+ PATPUSH (notwordbound);
+ break;
+
+ case '`':
+ PATPUSH (begbuf);
+ break;
+
+ case '\'':
+ PATPUSH (endbuf);
+ break;
+
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ c1 = c - '0';
+ if (c1 >= regnum)
+ goto normal_char;
+ for (stackt = stackp - 2; stackt > stackb; stackt -= 4)
+ if (*stackt == c1)
+ goto normal_char;
+ laststart = b;
+ PATPUSH (duplicate);
+ PATPUSH (c1);
+ break;
+
+ case '+':
+ case '?':
+ if (obscure_syntax & RE_BK_PLUS_QM)
+ goto handle_plus;
+
+ default:
+ normal_backsl:
+ /* You might think it would be useful for \ to mean
+ not to translate; but if we don't translate it
+ it will never match anything. */
+ if (translate) c = translate[c];
+ goto normal_char;
+ }
+ break;
+
+ default:
+ normal_char:
+ if (!pending_exact || pending_exact + *pending_exact + 1 != b
+ || *pending_exact == 0177 || *p == '*' || *p == '^'
+ || ((obscure_syntax & RE_BK_PLUS_QM)
+ ? *p == '\\' && (p[1] == '+' || p[1] == '?')
+ : (*p == '+' || *p == '?')))
+ {
+ laststart = b;
+ PATPUSH (exactn);
+ pending_exact = b;
+ PATPUSH (0);
+ }
+ PATPUSH (c);
+ (*pending_exact)++;
+ }
+ }
+
+ if (fixup_jump)
+ store_jump (fixup_jump, jump, b);
+
+ if (stackp != stackb) goto unmatched_open;
+
+ bufp->used = b - bufp->buffer;
+ return 0;
+
+ invalid_pattern:
+ return "Invalid regular expression";
+
+ unmatched_open:
+ return "Unmatched \\(";
+
+ unmatched_close:
+ return "Unmatched \\)";
+
+ end_of_pattern:
+ return "Premature end of regular expression";
+
+ nesting_too_deep:
+ return "Nesting too deep";
+
+ too_big:
+ return "Regular expression too big";
+
+ memory_exhausted:
+ return "Memory exhausted";
+}
+
+/* Store where `from' points a jump operation to jump to where `to' points.
+ `opcode' is the opcode to store. */
+
+static int
+store_jump (from, opcode, to)
+ char *from, *to;
+ char opcode;
+{
+ from[0] = opcode;
+ from[1] = (to - (from + 3)) & 0377;
+ from[2] = (to - (from + 3)) >> 8;
+}
+
+/* Open up space at char FROM, and insert there a jump to TO.
+ CURRENT_END gives te end of the storage no in use,
+ so we know how much data to copy up.
+ OP is the opcode of the jump to insert.
+
+ If you call this function, you must zero out pending_exact. */
+
+static int
+insert_jump (op, from, to, current_end)
+ char op;
+ char *from, *to, *current_end;
+{
+ register char *pto = current_end + 3;
+ register char *pfrom = current_end;
+ while (pfrom != from)
+ *--pto = *--pfrom;
+ store_jump (from, op, to);
+}
+
+/* Given a pattern, compute a fastmap from it.
+ The fastmap records which of the (1 << BYTEWIDTH) possible characters
+ can start a string that matches the pattern.
+ This fastmap is used by re_search to skip quickly over totally implausible text.
+
+ The caller must supply the address of a (1 << BYTEWIDTH)-byte data area
+ as bufp->fastmap.
+ The other components of bufp describe the pattern to be used. */
+
+void
+re_compile_fastmap (bufp)
+ struct re_pattern_buffer *bufp;
+{
+ unsigned char *pattern = (unsigned char *) bufp->buffer;
+ int size = bufp->used;
+ register char *fastmap = bufp->fastmap;
+ register unsigned char *p = pattern;
+ register unsigned char *pend = pattern + size;
+ register int j, k;
+ unsigned char *translate = (unsigned char *) bufp->translate;
+
+ unsigned char *stackb[NFAILURES];
+ unsigned char **stackp = stackb;
+
+ bzero (fastmap, (1 << BYTEWIDTH));
+ bufp->fastmap_accurate = 1;
+ bufp->can_be_null = 0;
+
+ while (p)
+ {
+ if (p == pend)
+ {
+ bufp->can_be_null = 1;
+ break;
+ }
+#ifdef SWITCH_ENUM_BUG
+ switch ((int) ((enum regexpcode) *p++))
+#else
+ switch ((enum regexpcode) *p++)
+#endif
+ {
+ case exactn:
+ if (translate)
+ fastmap[translate[p[1]]] = 1;
+ else
+ fastmap[p[1]] = 1;
+ break;
+
+ case begline:
+ case before_dot:
+ case at_dot:
+ case after_dot:
+ case begbuf:
+ case endbuf:
+ case wordbound:
+ case notwordbound:
+ case wordbeg:
+ case wordend:
+ continue;
+
+ case endline:
+ if (translate)
+ fastmap[translate['\n']] = 1;
+ else
+ fastmap['\n'] = 1;
+ if (bufp->can_be_null != 1)
+ bufp->can_be_null = 2;
+ break;
+
+ case finalize_jump:
+ case maybe_finalize_jump:
+ case jump:
+ case dummy_failure_jump:
+ bufp->can_be_null = 1;
+ j = *p++ & 0377;
+ j += SIGN_EXTEND_CHAR (*(char *)p) << 8;
+ p += j + 1; /* The 1 compensates for missing ++ above */
+ if (j > 0)
+ continue;
+ /* Jump backward reached implies we just went through
+ the body of a loop and matched nothing.
+ Opcode jumped to should be an on_failure_jump.
+ Just treat it like an ordinary jump.
+ For a * loop, it has pushed its failure point already;
+ if so, discard that as redundant. */
+ if ((enum regexpcode) *p != on_failure_jump)
+ continue;
+ p++;
+ j = *p++ & 0377;
+ j += SIGN_EXTEND_CHAR (*(char *)p) << 8;
+ p += j + 1; /* The 1 compensates for missing ++ above */
+ if (stackp != stackb && *stackp == p)
+ stackp--;
+ continue;
+
+ case on_failure_jump:
+ j = *p++ & 0377;
+ j += SIGN_EXTEND_CHAR (*(char *)p) << 8;
+ p++;
+ *++stackp = p + j;
+ continue;
+
+ case start_memory:
+ case stop_memory:
+ p++;
+ continue;
+
+ case duplicate:
+ bufp->can_be_null = 1;
+ fastmap['\n'] = 1;
+ case anychar:
+ for (j = 0; j < (1 << BYTEWIDTH); j++)
+ if (j != '\n')
+ fastmap[j] = 1;
+ if (bufp->can_be_null)
+ return;
+ /* Don't return; check the alternative paths
+ so we can set can_be_null if appropriate. */
+ break;
+
+ case wordchar:
+ for (j = 0; j < (1 << BYTEWIDTH); j++)
+ if (SYNTAX (j) == Sword)
+ fastmap[j] = 1;
+ break;
+
+ case notwordchar:
+ for (j = 0; j < (1 << BYTEWIDTH); j++)
+ if (SYNTAX (j) != Sword)
+ fastmap[j] = 1;
+ break;
+
+#ifdef emacs
+ case syntaxspec:
+ k = *p++;
+ for (j = 0; j < (1 << BYTEWIDTH); j++)
+ if (SYNTAX (j) == (enum syntaxcode) k)
+ fastmap[j] = 1;
+ break;
+
+ case notsyntaxspec:
+ k = *p++;
+ for (j = 0; j < (1 << BYTEWIDTH); j++)
+ if (SYNTAX (j) != (enum syntaxcode) k)
+ fastmap[j] = 1;
+ break;
+#endif /* emacs */
+
+ case charset:
+ for (j = *p++ * BYTEWIDTH - 1; j >= 0; j--)
+ if (p[j / BYTEWIDTH] & (1 << (j % BYTEWIDTH)))
+ {
+ if (translate)
+ fastmap[translate[j]] = 1;
+ else
+ fastmap[j] = 1;
+ }
+ break;
+
+ case charset_not:
+ /* Chars beyond end of map must be allowed */
+ for (j = *p * BYTEWIDTH; j < (1 << BYTEWIDTH); j++)
+ if (translate)
+ fastmap[translate[j]] = 1;
+ else
+ fastmap[j] = 1;
+
+ for (j = *p++ * BYTEWIDTH - 1; j >= 0; j--)
+ if (!(p[j / BYTEWIDTH] & (1 << (j % BYTEWIDTH))))
+ {
+ if (translate)
+ fastmap[translate[j]] = 1;
+ else
+ fastmap[j] = 1;
+ }
+ break;
+ }
+
+ /* Get here means we have successfully found the possible starting characters
+ of one path of the pattern. We need not follow this path any farther.
+ Instead, look at the next alternative remembered in the stack. */
+ if (stackp != stackb)
+ p = *stackp--;
+ else
+ break;
+ }
+}
+
+/* Like re_search_2, below, but only one string is specified. */
+
+int
+re_search (pbufp, string, size, startpos, range, regs)
+ struct re_pattern_buffer *pbufp;
+ char *string;
+ int size, startpos, range;
+ struct re_registers *regs;
+{
+ return re_search_2 (pbufp, 0, 0, string, size, startpos, range, regs, size);
+}
+
+/* Like re_match_2 but tries first a match starting at index STARTPOS,
+ then at STARTPOS + 1, and so on.
+ RANGE is the number of places to try before giving up.
+ If RANGE is negative, the starting positions tried are
+ STARTPOS, STARTPOS - 1, etc.
+ It is up to the caller to make sure that range is not so large
+ as to take the starting position outside of the input strings.
+
+The value returned is the position at which the match was found,
+ or -1 if no match was found,
+ or -2 if error (such as failure stack overflow). */
+
+int
+re_search_2 (pbufp, string1, size1, string2, size2, startpos, range, regs, mstop)
+ struct re_pattern_buffer *pbufp;
+ char *string1, *string2;
+ int size1, size2;
+ int startpos;
+ register int range;
+ struct re_registers *regs;
+ int mstop;
+{
+ register char *fastmap = pbufp->fastmap;
+ register unsigned char *translate = (unsigned char *) pbufp->translate;
+ int total = size1 + size2;
+ int val;
+
+ /* Update the fastmap now if not correct already */
+ if (fastmap && !pbufp->fastmap_accurate)
+ re_compile_fastmap (pbufp);
+
+ /* Don't waste time in a long search for a pattern
+ that says it is anchored. */
+ if (pbufp->used > 0 && (enum regexpcode) pbufp->buffer[0] == begbuf
+ && range > 0)
+ {
+ if (startpos > 0)
+ return -1;
+ else
+ range = 1;
+ }
+
+ while (1)
+ {
+ /* If a fastmap is supplied, skip quickly over characters
+ that cannot possibly be the start of a match.
+ Note, however, that if the pattern can possibly match
+ the null string, we must test it at each starting point
+ so that we take the first null string we get. */
+
+ if (fastmap && startpos < total && pbufp->can_be_null != 1)
+ {
+ if (range > 0)
+ {
+ register int lim = 0;
+ register unsigned char *p;
+ int irange = range;
+ if (startpos < size1 && startpos + range >= size1)
+ lim = range - (size1 - startpos);
+
+ p = ((unsigned char *)
+ &(startpos >= size1 ? string2 - size1 : string1)[startpos]);
+
+ if (translate)
+ {
+ while (range > lim && !fastmap[translate[*p++]])
+ range--;
+ }
+ else
+ {
+ while (range > lim && !fastmap[*p++])
+ range--;
+ }
+ startpos += irange - range;
+ }
+ else
+ {
+ register unsigned char c;
+ if (startpos >= size1)
+ c = string2[startpos - size1];
+ else
+ c = string1[startpos];
+ c &= 0xff;
+ if (translate ? !fastmap[translate[c]] : !fastmap[c])
+ goto advance;
+ }
+ }
+
+ if (range >= 0 && startpos == total
+ && fastmap && pbufp->can_be_null == 0)
+ return -1;
+
+ val = re_match_2 (pbufp, string1, size1, string2, size2, startpos, regs, mstop);
+ if (0 <= val)
+ {
+ if (val == -2)
+ return -2;
+ return startpos;
+ }
+
+#ifdef C_ALLOCA
+ alloca (0);
+#endif /* C_ALLOCA */
+
+ advance:
+ if (!range) break;
+ if (range > 0) range--, startpos++; else range++, startpos--;
+ }
+ return -1;
+}
+
+#ifndef emacs /* emacs never uses this */
+int
+re_match (pbufp, string, size, pos, regs)
+ struct re_pattern_buffer *pbufp;
+ char *string;
+ int size, pos;
+ struct re_registers *regs;
+{
+ return re_match_2 (pbufp, 0, 0, string, size, pos, regs, size);
+}
+#endif /* emacs */
+
+/* Maximum size of failure stack. Beyond this, overflow is an error. */
+
+int re_max_failures = 2000;
+
+static int bcmp_translate();
+/* Match the pattern described by PBUFP
+ against data which is the virtual concatenation of STRING1 and STRING2.
+ SIZE1 and SIZE2 are the sizes of the two data strings.
+ Start the match at position POS.
+ Do not consider matching past the position MSTOP.
+
+ If pbufp->fastmap is nonzero, then it had better be up to date.
+
+ The reason that the data to match are specified as two components
+ which are to be regarded as concatenated
+ is so this function can be used directly on the contents of an Emacs buffer.
+
+ -1 is returned if there is no match. -2 is returned if there is
+ an error (such as match stack overflow). Otherwise the value is the length
+ of the substring which was matched. */
+
+int
+re_match_2 (pbufp, string1, size1, string2, size2, pos, regs, mstop)
+ struct re_pattern_buffer *pbufp;
+ unsigned char *string1, *string2;
+ int size1, size2;
+ int pos;
+ struct re_registers *regs;
+ int mstop;
+{
+ register unsigned char *p = (unsigned char *) pbufp->buffer;
+ register unsigned char *pend = p + pbufp->used;
+ /* End of first string */
+ unsigned char *end1;
+ /* End of second string */
+ unsigned char *end2;
+ /* Pointer just past last char to consider matching */
+ unsigned char *end_match_1, *end_match_2;
+ register unsigned char *d, *dend;
+ register int mcnt;
+ unsigned char *translate = (unsigned char *) pbufp->translate;
+
+ /* Failure point stack. Each place that can handle a failure further down the line
+ pushes a failure point on this stack. It consists of two char *'s.
+ The first one pushed is where to resume scanning the pattern;
+ the second pushed is where to resume scanning the strings.
+ If the latter is zero, the failure point is a "dummy".
+ If a failure happens and the innermost failure point is dormant,
+ it discards that failure point and tries the next one. */
+
+ unsigned char *initial_stack[2 * NFAILURES];
+ unsigned char **stackb = initial_stack;
+ unsigned char **stackp = stackb, **stacke = &stackb[2 * NFAILURES];
+
+ /* Information on the "contents" of registers.
+ These are pointers into the input strings; they record
+ just what was matched (on this attempt) by some part of the pattern.
+ The start_memory command stores the start of a register's contents
+ and the stop_memory command stores the end.
+
+ At that point, regstart[regnum] points to the first character in the register,
+ regend[regnum] points to the first character beyond the end of the register,
+ regstart_seg1[regnum] is true iff regstart[regnum] points into string1,
+ and regend_seg1[regnum] is true iff regend[regnum] points into string1. */
+
+ unsigned char *regstart[RE_NREGS];
+ unsigned char *regend[RE_NREGS];
+ unsigned char regstart_seg1[RE_NREGS], regend_seg1[RE_NREGS];
+
+ /* Set up pointers to ends of strings.
+ Don't allow the second string to be empty unless both are empty. */
+ if (!size2)
+ {
+ string2 = string1;
+ size2 = size1;
+ string1 = 0;
+ size1 = 0;
+ }
+ end1 = string1 + size1;
+ end2 = string2 + size2;
+
+ /* Compute where to stop matching, within the two strings */
+ if (mstop <= size1)
+ {
+ end_match_1 = string1 + mstop;
+ end_match_2 = string2;
+ }
+ else
+ {
+ end_match_1 = end1;
+ end_match_2 = string2 + mstop - size1;
+ }
+
+ /* Initialize \) text positions to -1
+ to mark ones that no \( or \) has been seen for. */
+
+ for (mcnt = 0; mcnt < sizeof (regend) / sizeof (*regend); mcnt++)
+ regend[mcnt] = (unsigned char *) -1;
+
+ /* `p' scans through the pattern as `d' scans through the data.
+ `dend' is the end of the input string that `d' points within.
+ `d' is advanced into the following input string whenever necessary,
+ but this happens before fetching;
+ therefore, at the beginning of the loop,
+ `d' can be pointing at the end of a string,
+ but it cannot equal string2. */
+
+ if (pos <= size1)
+ d = string1 + pos, dend = end_match_1;
+ else
+ d = string2 + pos - size1, dend = end_match_2;
+
+/* Write PREFETCH; just before fetching a character with *d. */
+#define PREFETCH \
+ while (d == dend) \
+ { if (dend == end_match_2) goto fail; /* end of string2 => failure */ \
+ d = string2; /* end of string1 => advance to string2. */ \
+ dend = end_match_2; }
+
+ /* This loop loops over pattern commands.
+ It exits by returning from the function if match is complete,
+ or it drops through if match fails at this starting point in the input data. */
+
+ while (1)
+ {
+ if (p == pend)
+ /* End of pattern means we have succeeded! */
+ {
+ /* If caller wants register contents data back, convert it to indices */
+ if (regs)
+ {
+ regs->start[0] = pos;
+ if (dend == end_match_1)
+ regs->end[0] = d - string1;
+ else
+ regs->end[0] = d - string2 + size1;
+ for (mcnt = 1; mcnt < RE_NREGS; mcnt++)
+ {
+ if (regend[mcnt] == (unsigned char *) -1)
+ {
+ regs->start[mcnt] = -1;
+ regs->end[mcnt] = -1;
+ continue;
+ }
+ if (regstart_seg1[mcnt])
+ regs->start[mcnt] = regstart[mcnt] - string1;
+ else
+ regs->start[mcnt] = regstart[mcnt] - string2 + size1;
+ if (regend_seg1[mcnt])
+ regs->end[mcnt] = regend[mcnt] - string1;
+ else
+ regs->end[mcnt] = regend[mcnt] - string2 + size1;
+ }
+ }
+ if (dend == end_match_1)
+ return (d - string1 - pos);
+ else
+ return d - string2 + size1 - pos;
+ }
+
+ /* Otherwise match next pattern command */
+#ifdef SWITCH_ENUM_BUG
+ switch ((int) ((enum regexpcode) *p++))
+#else
+ switch ((enum regexpcode) *p++)
+#endif
+ {
+
+ /* \( is represented by a start_memory, \) by a stop_memory.
+ Both of those commands contain a "register number" argument.
+ The text matched within the \( and \) is recorded under that number.
+ Then, \<digit> turns into a `duplicate' command which
+ is followed by the numeric value of <digit> as the register number. */
+
+ case start_memory:
+ regstart[*p] = d;
+ regstart_seg1[*p++] = (dend == end_match_1);
+ break;
+
+ case stop_memory:
+ regend[*p] = d;
+ regend_seg1[*p++] = (dend == end_match_1);
+ break;
+
+ case duplicate:
+ {
+ int regno = *p++; /* Get which register to match against */
+ register unsigned char *d2, *dend2;
+
+ d2 = regstart[regno];
+ dend2 = ((regstart_seg1[regno] == regend_seg1[regno])
+ ? regend[regno] : end_match_1);
+ while (1)
+ {
+ /* Advance to next segment in register contents, if necessary */
+ while (d2 == dend2)
+ {
+ if (dend2 == end_match_2) break;
+ if (dend2 == regend[regno]) break;
+ d2 = string2, dend2 = regend[regno]; /* end of string1 => advance to string2. */
+ }
+ /* At end of register contents => success */
+ if (d2 == dend2) break;
+
+ /* Advance to next segment in data being matched, if necessary */
+ PREFETCH;
+
+ /* mcnt gets # consecutive chars to compare */
+ mcnt = dend - d;
+ if (mcnt > dend2 - d2)
+ mcnt = dend2 - d2;
+ /* Compare that many; failure if mismatch, else skip them. */
+ if (translate ? bcmp_translate (d, d2, mcnt, translate) : bcmp (d, d2, mcnt))
+ goto fail;
+ d += mcnt, d2 += mcnt;
+ }
+ }
+ break;
+
+ case anychar:
+ /* fetch a data character */
+ PREFETCH;
+ /* Match anything but a newline. */
+ if ((translate ? translate[*d++] : *d++) == '\n')
+ goto fail;
+ break;
+
+ case charset:
+ case charset_not:
+ {
+ /* Nonzero for charset_not */
+ int not = 0;
+ register int c;
+ if (*(p - 1) == (unsigned char) charset_not)
+ not = 1;
+
+ /* fetch a data character */
+ PREFETCH;
+
+ if (translate)
+ c = translate [*d];
+ else
+ c = *d;
+
+ if (c < *p * BYTEWIDTH
+ && p[1 + c / BYTEWIDTH] & (1 << (c % BYTEWIDTH)))
+ not = !not;
+
+ p += 1 + *p;
+
+ if (!not) goto fail;
+ d++;
+ break;
+ }
+
+ case begline:
+ if (d == string1 || d[-1] == '\n')
+ break;
+ goto fail;
+
+ case endline:
+ if (d == end2
+ || (d == end1 ? (size2 == 0 || *string2 == '\n') : *d == '\n'))
+ break;
+ goto fail;
+
+ /* "or" constructs ("|") are handled by starting each alternative
+ with an on_failure_jump that points to the start of the next alternative.
+ Each alternative except the last ends with a jump to the joining point.
+ (Actually, each jump except for the last one really jumps
+ to the following jump, because tensioning the jumps is a hassle.) */
+
+ /* The start of a stupid repeat has an on_failure_jump that points
+ past the end of the repeat text.
+ This makes a failure point so that, on failure to match a repetition,
+ matching restarts past as many repetitions have been found
+ with no way to fail and look for another one. */
+
+ /* A smart repeat is similar but loops back to the on_failure_jump
+ so that each repetition makes another failure point. */
+
+ case on_failure_jump:
+ if (stackp == stacke)
+ {
+ unsigned char **stackx;
+ if (stacke - stackb > re_max_failures * 2)
+ return -2;
+ stackx = (unsigned char **) alloca (2 * (stacke - stackb)
+ * sizeof (char *));
+ bcopy (stackb, stackx, (stacke - stackb) * sizeof (char *));
+ stackp = stackx + (stackp - stackb);
+ stacke = stackx + 2 * (stacke - stackb);
+ stackb = stackx;
+ }
+ mcnt = *p++ & 0377;
+ mcnt += SIGN_EXTEND_CHAR (*(char *)p) << 8;
+ p++;
+ *stackp++ = mcnt + p;
+ *stackp++ = d;
+ break;
+
+ /* The end of a smart repeat has an maybe_finalize_jump back.
+ Change it either to a finalize_jump or an ordinary jump. */
+
+ case maybe_finalize_jump:
+ mcnt = *p++ & 0377;
+ mcnt += SIGN_EXTEND_CHAR (*(char *)p) << 8;
+ p++;
+ {
+ register unsigned char *p2 = p;
+ /* Compare what follows with the begining of the repeat.
+ If we can establish that there is nothing that they would
+ both match, we can change to finalize_jump */
+ while (p2 != pend
+ && (*p2 == (unsigned char) stop_memory
+ || *p2 == (unsigned char) start_memory))
+ p2++;
+ if (p2 == pend)
+ p[-3] = (unsigned char) finalize_jump;
+ else if (*p2 == (unsigned char) exactn
+ || *p2 == (unsigned char) endline)
+ {
+ register int c = *p2 == (unsigned char) endline ? '\n' : p2[2];
+ register unsigned char *p1 = p + mcnt;
+ /* p1[0] ... p1[2] are an on_failure_jump.
+ Examine what follows that */
+ if (p1[3] == (unsigned char) exactn && p1[5] != c)
+ p[-3] = (unsigned char) finalize_jump;
+ else if (p1[3] == (unsigned char) charset
+ || p1[3] == (unsigned char) charset_not)
+ {
+ int not = p1[3] == (unsigned char) charset_not;
+ if (c < p1[4] * BYTEWIDTH
+ && p1[5 + c / BYTEWIDTH] & (1 << (c % BYTEWIDTH)))
+ not = !not;
+ /* not is 1 if c would match */
+ /* That means it is not safe to finalize */
+ if (!not)
+ p[-3] = (unsigned char) finalize_jump;
+ }
+ }
+ }
+ p -= 2;
+ if (p[-1] != (unsigned char) finalize_jump)
+ {
+ p[-1] = (unsigned char) jump;
+ goto nofinalize;
+ }
+
+ /* The end of a stupid repeat has a finalize-jump
+ back to the start, where another failure point will be made
+ which will point after all the repetitions found so far. */
+
+ case finalize_jump:
+ stackp -= 2;
+
+ case jump:
+ nofinalize:
+ mcnt = *p++ & 0377;
+ mcnt += SIGN_EXTEND_CHAR (*(char *)p) << 8;
+ p += mcnt + 1; /* The 1 compensates for missing ++ above */
+ break;
+
+ case dummy_failure_jump:
+ if (stackp == stacke)
+ {
+ unsigned char **stackx
+ = (unsigned char **) alloca (2 * (stacke - stackb)
+ * sizeof (char *));
+ bcopy (stackb, stackx, (stacke - stackb) * sizeof (char *));
+ stackp = stackx + (stackp - stackb);
+ stacke = stackx + 2 * (stacke - stackb);
+ stackb = stackx;
+ }
+ *stackp++ = 0;
+ *stackp++ = 0;
+ goto nofinalize;
+
+ case wordbound:
+ if (d == string1 /* Points to first char */
+ || d == end2 /* Points to end */
+ || (d == end1 && size2 == 0)) /* Points to end */
+ break;
+ if ((SYNTAX (d[-1]) == Sword)
+ != (SYNTAX (d == end1 ? *string2 : *d) == Sword))
+ break;
+ goto fail;
+
+ case notwordbound:
+ if (d == string1 /* Points to first char */
+ || d == end2 /* Points to end */
+ || (d == end1 && size2 == 0)) /* Points to end */
+ goto fail;
+ if ((SYNTAX (d[-1]) == Sword)
+ != (SYNTAX (d == end1 ? *string2 : *d) == Sword))
+ goto fail;
+ break;
+
+ case wordbeg:
+ if (d == end2 /* Points to end */
+ || (d == end1 && size2 == 0) /* Points to end */
+ || SYNTAX (* (d == end1 ? string2 : d)) != Sword) /* Next char not a letter */
+ goto fail;
+ if (d == string1 /* Points to first char */
+ || SYNTAX (d[-1]) != Sword) /* prev char not letter */
+ break;
+ goto fail;
+
+ case wordend:
+ if (d == string1 /* Points to first char */
+ || SYNTAX (d[-1]) != Sword) /* prev char not letter */
+ goto fail;
+ if (d == end2 /* Points to end */
+ || (d == end1 && size2 == 0) /* Points to end */
+ || SYNTAX (d == end1 ? *string2 : *d) != Sword) /* Next char not a letter */
+ break;
+ goto fail;
+
+#ifdef emacs
+ case before_dot:
+ if (((d - string2 <= (unsigned) size2)
+ ? d - bf_p2 : d - bf_p1)
+ <= point)
+ goto fail;
+ break;
+
+ case at_dot:
+ if (((d - string2 <= (unsigned) size2)
+ ? d - bf_p2 : d - bf_p1)
+ == point)
+ goto fail;
+ break;
+
+ case after_dot:
+ if (((d - string2 <= (unsigned) size2)
+ ? d - bf_p2 : d - bf_p1)
+ >= point)
+ goto fail;
+ break;
+
+ case wordchar:
+ mcnt = (int) Sword;
+ goto matchsyntax;
+
+ case syntaxspec:
+ mcnt = *p++;
+ matchsyntax:
+ PREFETCH;
+ if (SYNTAX (*d++) != (enum syntaxcode) mcnt) goto fail;
+ break;
+
+ case notwordchar:
+ mcnt = (int) Sword;
+ goto matchnotsyntax;
+
+ case notsyntaxspec:
+ mcnt = *p++;
+ matchnotsyntax:
+ PREFETCH;
+ if (SYNTAX (*d++) == (enum syntaxcode) mcnt) goto fail;
+ break;
+#else
+ case wordchar:
+ PREFETCH;
+ if (SYNTAX (*d++) == 0) goto fail;
+ break;
+
+ case notwordchar:
+ PREFETCH;
+ if (SYNTAX (*d++) != 0) goto fail;
+ break;
+#endif /* not emacs */
+
+ case begbuf:
+ if (d == string1) /* Note, d cannot equal string2 */
+ break; /* unless string1 == string2. */
+ goto fail;
+
+ case endbuf:
+ if (d == end2 || (d == end1 && size2 == 0))
+ break;
+ goto fail;
+
+ case exactn:
+ /* Match the next few pattern characters exactly.
+ mcnt is how many characters to match. */
+ mcnt = *p++;
+ if (translate)
+ {
+ do
+ {
+ PREFETCH;
+ if (translate[*d++] != *p++) goto fail;
+ }
+ while (--mcnt);
+ }
+ else
+ {
+ do
+ {
+ PREFETCH;
+ if (*d++ != *p++) goto fail;
+ }
+ while (--mcnt);
+ }
+ break;
+ }
+ continue; /* Successfully matched one pattern command; keep matching */
+
+ /* Jump here if any matching operation fails. */
+ fail:
+ if (stackp != stackb)
+ /* A restart point is known. Restart there and pop it. */
+ {
+ if (!stackp[-2])
+ { /* If innermost failure point is dormant, flush it and keep looking */
+ stackp -= 2;
+ goto fail;
+ }
+ d = *--stackp;
+ p = *--stackp;
+ if (d >= string1 && d <= end1)
+ dend = end_match_1;
+ }
+ else break; /* Matching at this starting point really fails! */
+ }
+ return -1; /* Failure to match */
+}
+
+static int
+bcmp_translate (s1, s2, len, translate)
+ unsigned char *s1, *s2;
+ register int len;
+ unsigned char *translate;
+{
+ register unsigned char *p1 = s1, *p2 = s2;
+ while (len)
+ {
+ if (translate [*p1++] != translate [*p2++]) return 1;
+ len--;
+ }
+ return 0;
+}
+
+/* Entry points compatible with bsd4.2 regex library */
+
+#ifndef emacs
+
+static struct re_pattern_buffer re_comp_buf;
+
+char *
+re_comp (s)
+ char *s;
+{
+ if (!s)
+ {
+ if (!re_comp_buf.buffer)
+ return "No previous regular expression";
+ return 0;
+ }
+
+ if (!re_comp_buf.buffer)
+ {
+ if (!(re_comp_buf.buffer = (char *) malloc (200)))
+ return "Memory exhausted";
+ re_comp_buf.allocated = 200;
+ if (!(re_comp_buf.fastmap = (char *) malloc (1 << BYTEWIDTH)))
+ return "Memory exhausted";
+ }
+ return re_compile_pattern (s, strlen (s), &re_comp_buf);
+}
+
+int
+re_exec (s)
+ char *s;
+{
+ int len = strlen (s);
+ return 0 <= re_search (&re_comp_buf, s, len, 0, len, 0);
+}
+
+#endif /* emacs */
+
+#ifdef test
+
+#include <stdio.h>
+
+/* Indexed by a character, gives the upper case equivalent of the character */
+
+static char upcase[0400] =
+ { 000, 001, 002, 003, 004, 005, 006, 007,
+ 010, 011, 012, 013, 014, 015, 016, 017,
+ 020, 021, 022, 023, 024, 025, 026, 027,
+ 030, 031, 032, 033, 034, 035, 036, 037,
+ 040, 041, 042, 043, 044, 045, 046, 047,
+ 050, 051, 052, 053, 054, 055, 056, 057,
+ 060, 061, 062, 063, 064, 065, 066, 067,
+ 070, 071, 072, 073, 074, 075, 076, 077,
+ 0100, 0101, 0102, 0103, 0104, 0105, 0106, 0107,
+ 0110, 0111, 0112, 0113, 0114, 0115, 0116, 0117,
+ 0120, 0121, 0122, 0123, 0124, 0125, 0126, 0127,
+ 0130, 0131, 0132, 0133, 0134, 0135, 0136, 0137,
+ 0140, 0101, 0102, 0103, 0104, 0105, 0106, 0107,
+ 0110, 0111, 0112, 0113, 0114, 0115, 0116, 0117,
+ 0120, 0121, 0122, 0123, 0124, 0125, 0126, 0127,
+ 0130, 0131, 0132, 0173, 0174, 0175, 0176, 0177,
+ 0200, 0201, 0202, 0203, 0204, 0205, 0206, 0207,
+ 0210, 0211, 0212, 0213, 0214, 0215, 0216, 0217,
+ 0220, 0221, 0222, 0223, 0224, 0225, 0226, 0227,
+ 0230, 0231, 0232, 0233, 0234, 0235, 0236, 0237,
+ 0240, 0241, 0242, 0243, 0244, 0245, 0246, 0247,
+ 0250, 0251, 0252, 0253, 0254, 0255, 0256, 0257,
+ 0260, 0261, 0262, 0263, 0264, 0265, 0266, 0267,
+ 0270, 0271, 0272, 0273, 0274, 0275, 0276, 0277,
+ 0300, 0301, 0302, 0303, 0304, 0305, 0306, 0307,
+ 0310, 0311, 0312, 0313, 0314, 0315, 0316, 0317,
+ 0320, 0321, 0322, 0323, 0324, 0325, 0326, 0327,
+ 0330, 0331, 0332, 0333, 0334, 0335, 0336, 0337,
+ 0340, 0341, 0342, 0343, 0344, 0345, 0346, 0347,
+ 0350, 0351, 0352, 0353, 0354, 0355, 0356, 0357,
+ 0360, 0361, 0362, 0363, 0364, 0365, 0366, 0367,
+ 0370, 0371, 0372, 0373, 0374, 0375, 0376, 0377
+ };
+
+main (argc, argv)
+ int argc;
+ char **argv;
+{
+ char pat[80];
+ struct re_pattern_buffer buf;
+ int i;
+ char c;
+ char fastmap[(1 << BYTEWIDTH)];
+
+ /* Allow a command argument to specify the style of syntax. */
+ if (argc > 1)
+ obscure_syntax = atoi (argv[1]);
+
+ buf.allocated = 40;
+ buf.buffer = (char *) malloc (buf.allocated);
+ buf.fastmap = fastmap;
+ buf.translate = upcase;
+
+ while (1)
+ {
+ gets (pat);
+
+ if (*pat)
+ {
+ re_compile_pattern (pat, strlen(pat), &buf);
+
+ for (i = 0; i < buf.used; i++)
+ printchar (buf.buffer[i]);
+
+ putchar ('\n');
+
+ printf ("%d allocated, %d used.\n", buf.allocated, buf.used);
+
+ re_compile_fastmap (&buf);
+ printf ("Allowed by fastmap: ");
+ for (i = 0; i < (1 << BYTEWIDTH); i++)
+ if (fastmap[i]) printchar (i);
+ putchar ('\n');
+ }
+
+ gets (pat); /* Now read the string to match against */
+
+ i = re_match (&buf, pat, strlen (pat), 0, 0);
+ printf ("Match value %d.\n", i);
+ }
+}
+
+#ifdef NOTDEF
+print_buf (bufp)
+ struct re_pattern_buffer *bufp;
+{
+ int i;
+
+ printf ("buf is :\n----------------\n");
+ for (i = 0; i < bufp->used; i++)
+ printchar (bufp->buffer[i]);
+
+ printf ("\n%d allocated, %d used.\n", bufp->allocated, bufp->used);
+
+ printf ("Allowed by fastmap: ");
+ for (i = 0; i < (1 << BYTEWIDTH); i++)
+ if (bufp->fastmap[i])
+ printchar (i);
+ printf ("\nAllowed by translate: ");
+ if (bufp->translate)
+ for (i = 0; i < (1 << BYTEWIDTH); i++)
+ if (bufp->translate[i])
+ printchar (i);
+ printf ("\nfastmap is%s accurate\n", bufp->fastmap_accurate ? "" : "n't");
+ printf ("can %s be null\n----------", bufp->can_be_null ? "" : "not");
+}
+#endif
+
+printchar (c)
+ char c;
+{
+ if (c < 041 || c >= 0177)
+ {
+ putchar ('\\');
+ putchar (((c >> 6) & 3) + '0');
+ putchar (((c >> 3) & 7) + '0');
+ putchar ((c & 7) + '0');
+ }
+ else
+ putchar (c);
+}
+
+error (string)
+ char *string;
+{
+ puts (string);
+ exit (1);
+}
+
+#endif /* test */
diff --git a/gnu/usr.bin/kgdb/regex.h b/gnu/usr.bin/kgdb/regex.h
new file mode 100644
index 000000000000..d0d8a82835b6
--- /dev/null
+++ b/gnu/usr.bin/kgdb/regex.h
@@ -0,0 +1,185 @@
+/* Definitions for data structures callers pass the regex library.
+ Copyright (C) 1985, 1989 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 1, or (at your option)
+ any later version.
+
+ 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. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+
+ In other words, you are welcome to use, share and improve this program.
+ You are forbidden to forbid anyone else to use, share and improve
+ what you give them. Help stamp out software-hoarding! */
+
+
+/* Define number of parens for which we record the beginnings and ends.
+ This affects how much space the `struct re_registers' type takes up. */
+#ifndef RE_NREGS
+#define RE_NREGS 10
+#endif
+
+/* These bits are used in the obscure_syntax variable to choose among
+ alternative regexp syntaxes. */
+
+/* 1 means plain parentheses serve as grouping, and backslash
+ parentheses are needed for literal searching.
+ 0 means backslash-parentheses are grouping, and plain parentheses
+ are for literal searching. */
+#define RE_NO_BK_PARENS 1
+
+/* 1 means plain | serves as the "or"-operator, and \| is a literal.
+ 0 means \| serves as the "or"-operator, and | is a literal. */
+#define RE_NO_BK_VBAR 2
+
+/* 0 means plain + or ? serves as an operator, and \+, \? are literals.
+ 1 means \+, \? are operators and plain +, ? are literals. */
+#define RE_BK_PLUS_QM 4
+
+/* 1 means | binds tighter than ^ or $.
+ 0 means the contrary. */
+#define RE_TIGHT_VBAR 8
+
+/* 1 means treat \n as an _OR operator
+ 0 means treat it as a normal character */
+#define RE_NEWLINE_OR 16
+
+/* 0 means that a special characters (such as *, ^, and $) always have
+ their special meaning regardless of the surrounding context.
+ 1 means that special characters may act as normal characters in some
+ contexts. Specifically, this applies to:
+ ^ - only special at the beginning, or after ( or |
+ $ - only special at the end, or before ) or |
+ *, +, ? - only special when not after the beginning, (, or | */
+#define RE_CONTEXT_INDEP_OPS 32
+
+/* Now define combinations of bits for the standard possibilities. */
+#define RE_SYNTAX_AWK (RE_NO_BK_PARENS | RE_NO_BK_VBAR | RE_CONTEXT_INDEP_OPS)
+#define RE_SYNTAX_EGREP (RE_SYNTAX_AWK | RE_NEWLINE_OR)
+#define RE_SYNTAX_GREP (RE_BK_PLUS_QM | RE_NEWLINE_OR)
+#define RE_SYNTAX_EMACS 0
+
+/* This data structure is used to represent a compiled pattern. */
+
+struct re_pattern_buffer
+ {
+ char *buffer; /* Space holding the compiled pattern commands. */
+ int allocated; /* Size of space that buffer points to */
+ int used; /* Length of portion of buffer actually occupied */
+ char *fastmap; /* Pointer to fastmap, if any, or zero if none. */
+ /* re_search uses the fastmap, if there is one,
+ to skip quickly over totally implausible characters */
+ char *translate; /* Translate table to apply to all characters before comparing.
+ Or zero for no translation.
+ The translation is applied to a pattern when it is compiled
+ and to data when it is matched. */
+ char fastmap_accurate;
+ /* Set to zero when a new pattern is stored,
+ set to one when the fastmap is updated from it. */
+ char can_be_null; /* Set to one by compiling fastmap
+ if this pattern might match the null string.
+ It does not necessarily match the null string
+ in that case, but if this is zero, it cannot.
+ 2 as value means can match null string
+ but at end of range or before a character
+ listed in the fastmap. */
+ };
+
+/* Structure to store "register" contents data in.
+
+ Pass the address of such a structure as an argument to re_match, etc.,
+ if you want this information back.
+
+ start[i] and end[i] record the string matched by \( ... \) grouping i,
+ for i from 1 to RE_NREGS - 1.
+ start[0] and end[0] record the entire string matched. */
+
+struct re_registers
+ {
+ int start[RE_NREGS];
+ int end[RE_NREGS];
+ };
+
+/* These are the command codes that appear in compiled regular expressions, one per byte.
+ Some command codes are followed by argument bytes.
+ A command code can specify any interpretation whatever for its arguments.
+ Zero-bytes may appear in the compiled regular expression. */
+
+enum regexpcode
+ {
+ unused,
+ exactn, /* followed by one byte giving n, and then by n literal bytes */
+ begline, /* fails unless at beginning of line */
+ endline, /* fails unless at end of line */
+ jump, /* followed by two bytes giving relative address to jump to */
+ on_failure_jump, /* followed by two bytes giving relative address of place
+ to resume at in case of failure. */
+ finalize_jump, /* Throw away latest failure point and then jump to address. */
+ maybe_finalize_jump, /* Like jump but finalize if safe to do so.
+ This is used to jump back to the beginning
+ of a repeat. If the command that follows
+ this jump is clearly incompatible with the
+ one at the beginning of the repeat, such that
+ we can be sure that there is no use backtracking
+ out of repetitions already completed,
+ then we finalize. */
+ dummy_failure_jump, /* jump, and push a dummy failure point.
+ This failure point will be thrown away
+ if an attempt is made to use it for a failure.
+ A + construct makes this before the first repeat. */
+ anychar, /* matches any one character */
+ charset, /* matches any one char belonging to specified set.
+ First following byte is # bitmap bytes.
+ Then come bytes for a bit-map saying which chars are in.
+ Bits in each byte are ordered low-bit-first.
+ A character is in the set if its bit is 1.
+ A character too large to have a bit in the map
+ is automatically not in the set */
+ charset_not, /* similar but match any character that is NOT one of those specified */
+ start_memory, /* starts remembering the text that is matched
+ and stores it in a memory register.
+ followed by one byte containing the register number.
+ Register numbers must be in the range 0 through NREGS. */
+ stop_memory, /* stops remembering the text that is matched
+ and stores it in a memory register.
+ followed by one byte containing the register number.
+ Register numbers must be in the range 0 through NREGS. */
+ duplicate, /* match a duplicate of something remembered.
+ Followed by one byte containing the index of the memory register. */
+ before_dot, /* Succeeds if before dot */
+ at_dot, /* Succeeds if at dot */
+ after_dot, /* Succeeds if after dot */
+ begbuf, /* Succeeds if at beginning of buffer */
+ endbuf, /* Succeeds if at end of buffer */
+ wordchar, /* Matches any word-constituent character */
+ notwordchar, /* Matches any char that is not a word-constituent */
+ wordbeg, /* Succeeds if at word beginning */
+ wordend, /* Succeeds if at word end */
+ wordbound, /* Succeeds if at a word boundary */
+ notwordbound, /* Succeeds if not at a word boundary */
+ syntaxspec, /* Matches any character whose syntax is specified.
+ followed by a byte which contains a syntax code, Sword or such like */
+ notsyntaxspec /* Matches any character whose syntax differs from the specified. */
+ };
+
+extern char *re_compile_pattern ();
+/* Is this really advertised? */
+extern void re_compile_fastmap ();
+extern int re_search (), re_search_2 ();
+extern int re_match (), re_match_2 ();
+
+/* 4.2 bsd compatibility (yuck) */
+extern char *re_comp ();
+extern int re_exec ();
+
+#ifdef SYNTAX_TABLE
+extern char *re_syntax_table;
+#endif
diff --git a/gnu/usr.bin/kgdb/remote-sl.c b/gnu/usr.bin/kgdb/remote-sl.c
new file mode 100644
index 000000000000..4c72197f1ae1
--- /dev/null
+++ b/gnu/usr.bin/kgdb/remote-sl.c
@@ -0,0 +1,10 @@
+/*
+ * The binary remote protocol is still under development at LBL;
+ * the current version can't be released.
+ * Sorry, folks...
+ */
+int
+sl_open()
+{
+ return -1;
+}
diff --git a/gnu/usr.bin/kgdb/remote.c b/gnu/usr.bin/kgdb/remote.c
new file mode 100644
index 000000000000..b757f4b8ef76
--- /dev/null
+++ b/gnu/usr.bin/kgdb/remote.c
@@ -0,0 +1,626 @@
+/*-
+ * Copyright (c) 1991 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Van Jacobson and Steven McCanne of Lawrence Berkeley Laboratory.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $Header: /home/ncvs/src/gnu/usr.bin/kgdb/remote.c,v 1.2 1995/05/30 05:01:12 rgrimes Exp $;
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)remote.c 6.5 (Berkeley) 5/8/91";
+#endif /* not lint */
+
+#include "param.h"
+
+#include <stdio.h>
+#include <varargs.h>
+
+#include <signal.h>
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#include <sys/file.h>
+
+#include "defs.h"
+#include "frame.h"
+#include "inferior.h"
+#include "wait.h"
+
+#include "kgdb_proto.h"
+
+static FILE *kiodebug;
+static int icache = 1;
+extern int kernel_debugging;
+
+static int remote_cache_valid;
+static int remote_instub;
+
+static void remote_signal();
+static void remote_debug();
+static void print_msg();
+
+static int remote_mtu;
+static int (*send_msg)();
+static int (*recv_msg)();
+static void (*closelink)();
+
+static u_char *inbuffer;
+static u_char *outbuffer;
+
+/*
+ * Statistics.
+ */
+static int remote_ierrs;
+static int remote_oerrs;
+static int remote_seqerrs;
+static int remote_spurious;
+
+#define PUTCMD(cmd) m_xchg(cmd, (u_char *)0, 0, (u_char *)0, (int *)0)
+
+/*
+ * Send an outbound message to the remote machine and read the reply.
+ * Either or both message buffers may be NULL.
+ */
+static int
+m_xchg(type, out, outlen, in, inlen)
+ int type;
+ u_char *out;
+ int outlen;
+ u_char *in;
+ int *inlen;
+{
+ register int err, (*send)() = send_msg, (*recv)() = recv_msg;
+ int ack;
+ static int seqbit = 0;
+
+ if (!remote_instub) {
+ remote_instub = 1;
+ PUTCMD(KGDB_EXEC);
+ }
+
+ seqbit ^= KGDB_SEQ;
+ while (1) {
+ err = (*send)(type | seqbit, out, outlen);
+ if (err) {
+ ++remote_oerrs;
+ if (kiodebug)
+ remote_debug("send error %d\n", err);
+ }
+ if (kiodebug)
+ print_msg(type | seqbit, out, outlen, 'O');
+
+ recv:
+ err = (*recv)(&ack, in, inlen);
+ if (err) {
+ ++remote_ierrs;
+ if (kiodebug)
+ remote_debug("recv error %d\n", err);
+ remote_cache_valid = 0;
+ } else if (kiodebug)
+ print_msg(ack, in, inlen ? *inlen : 0, 'I');
+
+ if (err)
+ continue;
+
+ if ((ack & KGDB_ACK) == 0 || KGDB_CMD(ack) != KGDB_CMD(type)) {
+ ++remote_spurious;
+ continue;
+ }
+ if ((ack & KGDB_SEQ) ^ seqbit) {
+ ++remote_seqerrs;
+ goto recv;
+ }
+ return ack;
+ }
+}
+
+/*
+ * Wait for the specified message type. Discard anything else.
+ * (this is used by 'remote-signal' to help us resync with other side.)
+ */
+static void
+m_recv(type, in, inlen)
+ int type;
+ u_char *in;
+ int *inlen;
+{
+ int reply, err;
+
+ while (1) {
+ err = (*recv_msg)(&reply, in, inlen);
+ if (err) {
+ ++remote_ierrs;
+ if (kiodebug)
+ remote_debug("recv error %d\n", err);
+ } else if (kiodebug)
+ print_msg(reply, in, inlen ? *inlen : 0, 'I');
+
+ if (KGDB_CMD(reply) == type)
+ return;
+ ++remote_spurious;
+ }
+}
+
+/*
+ * Send a message. Do not wait for *any* response from the other side.
+ * Some other thread of control will pick up the ack that will be generated.
+ */
+static void
+m_send(type, buf, len)
+ int type;
+ u_char *buf;
+ int len;
+{
+ int err;
+
+ if (!remote_instub) {
+ remote_instub = 1;
+ PUTCMD(KGDB_EXEC);
+ }
+
+ err = (*send_msg)(type, buf, len);
+ if (err) {
+ ++remote_ierrs;
+ if (kiodebug)
+ remote_debug("[send error %d] ", err);
+ }
+ if (kiodebug)
+ print_msg(type, buf, len, 'O');
+}
+
+/*
+ * Open a connection to a remote debugger.
+ * NAME is the filename used for communication.
+ */
+void
+remote_open(name, from_tty)
+ char *name;
+ int from_tty;
+{
+ int bufsize;
+
+ remote_debugging = 0;
+ if (sl_open(name, &send_msg, &recv_msg, &closelink, &remote_mtu,
+ &bufsize))
+ return;
+ if (from_tty)
+ printf("Remote debugging using %s\n", name);
+ remote_debugging = 1;
+
+ remote_cache_valid = 0;
+
+ inbuffer = (u_char *)malloc(bufsize);
+ outbuffer = (u_char *)malloc(bufsize);
+
+ remote_signal();
+
+ remote_ierrs = 0;
+ remote_oerrs = 0;
+ remote_spurious = 0;
+}
+
+/*
+ * Close the open connection to the remote debugger. Use this when you want
+ * to detach and do something else with your gdb.
+ */
+void
+remote_close(from_tty)
+ int from_tty;
+{
+ if (!remote_debugging)
+ error("remote debugging not enabled");
+
+ remote_debugging = 0;
+ /*
+ * Take remote machine out of debug mode.
+ */
+ (void)PUTCMD(KGDB_KILL);
+ (*closelink)();
+ if (from_tty)
+ printf("Ending remote debugging\n");
+
+ free((char *)inbuffer);
+ free((char *)outbuffer);
+}
+
+/*
+ * Tell the remote machine to resume.
+ */
+int
+remote_resume(step, signal)
+ int step, signal;
+{
+ if (!step) {
+ (void)PUTCMD(KGDB_CONT);
+ remote_instub = 0;
+ } else {
+#ifdef NO_SINGLE_STEP
+ single_step(0);
+#else
+ (void)PUTCMD(KGDB_STEP);
+#endif
+ }
+}
+
+/*
+ * Wait until the remote machine stops, then return, storing status in STATUS
+ * just as `wait' would.
+ */
+int
+remote_wait(status)
+ WAITTYPE *status;
+{
+ int len;
+
+ WSETEXIT((*status), 0);
+ /*
+ * When the machine stops, it will send us a KGDB_SIGNAL message,
+ * so we wait for one of these.
+ */
+ m_recv(KGDB_SIGNAL, inbuffer, &len);
+ WSETSTOP((*status), inbuffer[0]);
+}
+
+/*
+ * Register context as of last remote_fetch_registers().
+ */
+static char reg_cache[REGISTER_BYTES];
+
+/*
+ * Read the remote registers into the block REGS.
+ */
+void
+remote_fetch_registers(regs)
+ char *regs;
+{
+ int regno, len, rlen, ack;
+ u_char *cp, *ep;
+
+ regno = -1;
+ do {
+ outbuffer[0] = regno + 1;
+ ack = m_xchg(remote_cache_valid ?
+ KGDB_REG_R|KGDB_DELTA : KGDB_REG_R,
+ outbuffer, 1, inbuffer, &len);
+ cp = inbuffer;
+ ep = cp + len;
+ while (cp < ep) {
+ regno = *cp++;
+ rlen = REGISTER_RAW_SIZE(regno);
+ bcopy((char *)cp,
+ &reg_cache[REGISTER_BYTE(regno)], rlen);
+ cp += rlen;
+ }
+ } while (ack & KGDB_MORE);
+
+ remote_cache_valid = 1;
+ bcopy(reg_cache, regs, REGISTER_BYTES);
+}
+
+/*
+ * Store the remote registers from the contents of the block REGS.
+ */
+void
+remote_store_registers(regs)
+ char *regs;
+{
+ u_char *cp, *ep;
+ int regno, off, rlen;
+
+ cp = outbuffer;
+ ep = cp + remote_mtu;
+
+ for (regno = 0; regno < NUM_REGS; ++regno) {
+ off = REGISTER_BYTE(regno);
+ rlen = REGISTER_RAW_SIZE(regno);
+ if (!remote_cache_valid ||
+ bcmp(&regs[off], &reg_cache[off], rlen) != 0) {
+ if (cp + rlen + 1 >= ep) {
+ (void)m_xchg(KGDB_REG_W,
+ outbuffer, cp - outbuffer,
+ (u_char *)0, (int *)0);
+ cp = outbuffer;
+ }
+ *cp++ = regno;
+ bcopy(&regs[off], cp, rlen);
+ cp += rlen;
+ }
+ }
+ if (cp != outbuffer)
+ (void)m_xchg(KGDB_REG_W, outbuffer, cp - outbuffer,
+ (u_char *)0, (int *)0);
+ bcopy(regs, reg_cache, REGISTER_BYTES);
+}
+
+/*
+ * Store a chunk of memory into the remote host.
+ * 'remote_addr' is the address in the remote memory space.
+ * 'cp' is the address of the buffer in our space, and 'len' is
+ * the number of bytes. Returns an errno status.
+ */
+int
+remote_write_inferior_memory(remote_addr, cp, len)
+ CORE_ADDR remote_addr;
+ u_char *cp;
+ int len;
+{
+ int cnt;
+
+ while (len > 0) {
+ cnt = min(len, remote_mtu - 4);
+ bcopy((char *)&remote_addr, outbuffer, 4);
+ bcopy(cp, outbuffer + 4, cnt);
+ (void)m_xchg(KGDB_MEM_W, outbuffer, cnt + 4, inbuffer, &len);
+
+ if (inbuffer[0])
+ return inbuffer[0];
+
+ remote_addr += cnt;
+ cp += cnt;
+ len -= cnt;
+ }
+ return 0;
+}
+
+/*
+ * Read memory data directly from the remote machine.
+ * 'remote_addr' is the address in the remote memory space.
+ * 'cp' is the address of the buffer in our space, and 'len' is
+ * the number of bytes. Returns an errno status.
+ */
+static int
+remote_read_memory(remote_addr, cp, len)
+ CORE_ADDR remote_addr;
+ u_char *cp;
+ int len;
+{
+ int cnt, inlen;
+
+ while (len > 0) {
+ cnt = min(len, remote_mtu - 1);
+ outbuffer[0] = cnt;
+ bcopy((char *)&remote_addr, (char *)&outbuffer[1], 4);
+
+ (void)m_xchg(KGDB_MEM_R, outbuffer, 5, inbuffer, &inlen);
+
+ if (inbuffer[0] != 0)
+ return inbuffer[0];
+
+ if (cnt != inlen - 1)
+ /* XXX */
+ error("remote_read_memory() request botched");
+
+ bcopy((char *)&inbuffer[1], (char *)cp, cnt);
+
+ remote_addr += cnt;
+ cp += cnt;
+ len -= cnt;
+ }
+ return 0;
+}
+
+int
+remote_read_inferior_memory(remote_addr, cp, len)
+ CORE_ADDR remote_addr;
+ char *cp;
+ int len;
+{
+ int stat = 0;
+
+ if (icache) {
+ extern CORE_ADDR text_start, text_end;
+ CORE_ADDR xferend = remote_addr + len;
+
+ if (remote_addr < text_end && text_start < xferend) {
+ /*
+ * at least part of this xfer is in the text
+ * space -- xfer the overlap from the exec file.
+ */
+ if (remote_addr >= text_start && xferend < text_end)
+ return (xfer_core_file(remote_addr, cp, len));
+ if (remote_addr >= text_start) {
+ int i = text_end - remote_addr;
+
+ if (stat = xfer_core_file(remote_addr, cp, i))
+ return (stat);
+ remote_addr += i;
+ cp += i;
+ len -= i;
+ } else if (xferend <= text_end) {
+ int i = xferend - text_start;
+
+ len = text_start - remote_addr;
+ if (stat = xfer_core_file(text_start,
+ cp + len, i))
+ return (stat);
+ }
+ }
+ }
+ return remote_read_memory(remote_addr, cp, len);
+}
+
+/*
+ * Signal the remote machine. The remote end might be idle or it might
+ * already be in debug mode -- we need to handle both case. Thus, we use
+ * the framing character as the wakeup byte, and send a SIGNAL packet.
+ * If the remote host is idle, the framing character will wake it up.
+ * If it is in the kgdb stub, then we will get a SIGNAL reply.
+ */
+static void
+remote_signal()
+{
+ if (!remote_debugging)
+ printf("Remote debugging not enabled.\n");
+ else {
+ remote_instub = 0;
+ m_send(KGDB_SIGNAL, (u_char *)0, 0);
+ }
+}
+
+static void
+remote_signal_command()
+{
+ extern int stop_after_attach;
+
+ if (!remote_debugging)
+ error("Not debugging remote.");
+ remote_cache_valid = 0;
+ remote_signal();
+ restart_remote();
+}
+
+/*
+ * Print a message for debugging.
+ */
+static void
+print_msg(type, buf, len, dir)
+ int type;
+ u_char *buf;
+ int len;
+ int dir;
+{
+ int i;
+ char *s;
+
+ switch (KGDB_CMD(type)) {
+ case KGDB_MEM_R: s = "memr"; break;
+ case KGDB_MEM_W: s = "memw"; break;
+ case KGDB_REG_R: s = "regr"; break;
+ case KGDB_REG_W: s = "regw"; break;
+ case KGDB_CONT: s = "cont"; break;
+ case KGDB_STEP: s = "step"; break;
+ case KGDB_KILL: s = "kill"; break;
+ case KGDB_SIGNAL: s = "sig "; break;
+ case KGDB_EXEC: s = "exec"; break;
+ default: s = "unk "; break;
+ }
+ remote_debug("%c %c%c%c%c %s (%02x): ", dir,
+ (type & KGDB_ACK) ? 'A' : '.',
+ (type & KGDB_DELTA) ? 'D' : '.',
+ (type & KGDB_MORE) ? 'M' : '.',
+ (type & KGDB_SEQ) ? '-' : '+',
+ s, type);
+ if (buf)
+ for (i = 0; i < len; ++i)
+ remote_debug("%02x", buf[i]);
+ remote_debug("\n");
+}
+
+static void
+set_remote_text_refs_command(arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ icache = !parse_binary_operation("set remote-text-refs", arg);
+}
+
+static void
+remote_debug_command(arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ char *name;
+
+ if (kiodebug != 0 && kiodebug != stderr)
+ (void)fclose(kiodebug);
+
+ if (arg == 0) {
+ kiodebug = 0;
+ printf("Remote debugging off.\n");
+ return;
+ }
+ if (arg[0] == '-') {
+ kiodebug = stderr;
+ name = "stderr";
+ } else {
+ kiodebug = fopen(arg, "w");
+ if (kiodebug == 0) {
+ printf("Cannot open '%s'.\n", arg);
+ return;
+ }
+ name = arg;
+ }
+ printf("Remote debugging output routed to %s.\n", name);
+}
+
+/* ARGSUSED */
+static void
+remote_info(arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ printf("Using %s for text references.\n",
+ icache? "local executable" : "remote");
+ printf("Protocol debugging is %s.\n", kiodebug? "on" : "off");
+ printf("%d spurious input messages.\n", remote_spurious);
+ printf("%d input errors; %d output errors; %d sequence errors.\n",
+ remote_ierrs, remote_oerrs, remote_seqerrs);
+}
+
+/* VARARGS */
+static void
+remote_debug(va_alist)
+ va_dcl
+{
+ register char *cp;
+ va_list ap;
+
+ va_start(ap);
+ cp = va_arg(ap, char *);
+ (void)vfprintf(kiodebug, cp, ap);
+ va_end(ap);
+ fflush(kiodebug);
+}
+
+extern struct cmd_list_element *setlist;
+
+void
+_initialize_remote()
+{
+ add_com("remote-signal", class_run, remote_signal_command,
+ "If remote debugging, send interrupt signal to remote.");
+ add_cmd("remote-text-refs", class_support,
+ set_remote_text_refs_command,
+"Enable/disable use of local executable for text segment references.\n\
+If on, all memory read/writes go to remote.\n\
+If off, text segment reads use the local executable.",
+ &setlist);
+
+ add_com("remote-debug", class_run, remote_debug_command,
+"With a file name argument, enables output of remote protocol debugging\n\
+messages to said file. If file is `-', stderr is used.\n\
+With no argument, remote debugging is disabled.");
+
+ add_info("remote", remote_info,
+ "Show current settings of remote debugging options.");
+}
+
diff --git a/gnu/usr.bin/kgdb/source.c b/gnu/usr.bin/kgdb/source.c
new file mode 100644
index 000000000000..740dadc8c8c5
--- /dev/null
+++ b/gnu/usr.bin/kgdb/source.c
@@ -0,0 +1,1166 @@
+/*-
+ * This code is derived from software copyrighted by the Free Software
+ * Foundation.
+ *
+ * Modified 1991 by Donn Seeley at UUNET Technologies, Inc.
+ * Modified 1990 by Van Jacobson at Lawrence Berkeley Laboratory.
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)source.c 6.3 (Berkeley) 5/8/91";
+#endif /* not lint */
+
+/* List lines of source files for GDB, the GNU debugger.
+ Copyright (C) 1986, 1987, 1988, 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include <stdio.h>
+#include <string.h>
+#include "defs.h"
+#include "param.h"
+#include "symtab.h"
+
+#ifdef USG
+#include <sys/types.h>
+#include <fcntl.h>
+#endif
+
+#include <sys/param.h>
+#include <sys/stat.h>
+#include <sys/file.h>
+
+/* Path of directories to search for source files.
+ Same format as the PATH environment variable's value. */
+
+static char *source_path;
+
+/* Symtab of default file for listing lines of. */
+
+struct symtab *current_source_symtab;
+
+/* Default next line to list. */
+
+int current_source_line;
+
+/* Line number of last line printed. Default for various commands.
+ current_source_line is usually, but not always, the same as this. */
+
+static int last_line_listed;
+
+/* First line number listed by last listing command. */
+
+static int first_line_listed;
+
+
+struct symtab *psymtab_to_symtab ();
+
+/* Set the source file default for the "list" command, specifying a
+ symtab. Sigh. Behaivior specification: If it is called with a
+ non-zero argument, that is the symtab to select. If it is not,
+ first lookup "main"; if it exists, use the symtab and line it
+ defines. If not, take the last symtab in the symtab_list (if it
+ exists) or the last symtab in the psytab_list (if *it* exists). If
+ none of this works, report an error. */
+
+void
+select_source_symtab (s)
+ register struct symtab *s;
+{
+ struct symtabs_and_lines sals;
+ struct symtab_and_line sal;
+ struct partial_symtab *ps, *cs_pst;
+
+ if (s)
+ {
+ current_source_symtab = s;
+ current_source_line = 1;
+ return;
+ }
+
+ /* Make the default place to list be the function `main'
+ if one exists. */
+ if (lookup_symbol ("main", 0, VAR_NAMESPACE, 0))
+ {
+ sals = decode_line_spec ("main", 1);
+ sal = sals.sals[0];
+ free (sals.sals);
+ current_source_symtab = sal.symtab;
+ current_source_line = max (sal.line - 9, 1);
+ return;
+ }
+
+ /* All right; find the last file in the symtab list (ignoring .h's). */
+
+ if (s = symtab_list)
+ {
+ do
+ {
+ char *name = s->filename;
+ int len = strlen (name);
+ if (! (len > 2 && !strcmp (&name[len - 2], ".h")))
+ current_source_symtab = s;
+ s = s->next;
+ }
+ while (s);
+ current_source_line = 1;
+ }
+ else if (partial_symtab_list)
+ {
+ ps = partial_symtab_list;
+ while (ps)
+ {
+ char *name = ps->filename;
+ int len = strlen (name);
+ if (! (len > 2 && !strcmp (&name[len - 2], ".h")))
+ cs_pst = ps;
+ ps = ps->next;
+ }
+ if (cs_pst)
+ if (cs_pst->readin)
+ fatal ("Internal: select_source_symtab: readin pst found and no symtabs.");
+ else
+ current_source_symtab = psymtab_to_symtab (cs_pst);
+ else
+ current_source_symtab = 0;
+ current_source_line = 1;
+ }
+}
+
+static void
+directories_info ()
+{
+ printf ("Source directories searched: %s\n", source_path);
+}
+
+void
+init_source_path ()
+{
+ register struct symtab *s;
+
+ source_path = savestring (current_directory, strlen (current_directory));
+
+ /* Forget what we learned about line positions in source files;
+ must check again now since files may be found in
+ a different directory now. */
+ for (s = symtab_list; s; s = s->next)
+ if (s->line_charpos != 0)
+ {
+ free (s->line_charpos);
+ s->line_charpos = 0;
+ }
+}
+
+void
+directory_command (dirname, from_tty)
+ char *dirname;
+ int from_tty;
+{
+ char *old = source_path;
+
+ dont_repeat ();
+
+ if (dirname == 0)
+ {
+ if (query ("Reinitialize source path to %s? ", current_directory))
+ {
+ init_source_path ();
+ free (old);
+ }
+ }
+ else
+ {
+ dirname = tilde_expand (dirname);
+ make_cleanup (free, dirname);
+
+ do
+ {
+ char *name = dirname;
+ register char *p;
+ struct stat st;
+
+ {
+ char *colon = index (name, ':');
+ char *space = index (name, ' ');
+ char *tab = index (name, '\t');
+ if (colon == 0 && space == 0 && tab == 0)
+ p = dirname = name + strlen (name);
+ else
+ {
+ p = 0;
+ if (colon != 0 && (p == 0 || colon < p))
+ p = colon;
+ if (space != 0 && (p == 0 || space < p))
+ p = space;
+ if (tab != 0 && (p == 0 || tab < p))
+ p = tab;
+ dirname = p + 1;
+ while (*dirname == ':' || *dirname == ' ' || *dirname == '\t')
+ ++dirname;
+ }
+ }
+
+ if (p[-1] == '/')
+ /* Sigh. "foo/" => "foo" */
+ --p;
+ *p = '\0';
+
+ while (p[-1] == '.')
+ {
+ if (p - name == 1)
+ {
+ /* "." => getwd (). */
+ name = current_directory;
+ goto append;
+ }
+ else if (p[-2] == '/')
+ {
+ if (p - name == 2)
+ {
+ /* "/." => "/". */
+ *--p = '\0';
+ goto append;
+ }
+ else
+ {
+ /* "...foo/." => "...foo". */
+ p -= 2;
+ *p = '\0';
+ continue;
+ }
+ }
+ else
+ break;
+ }
+
+ if (*name != '/')
+ name = concat (current_directory, "/", name);
+ else
+ name = savestring (name, p - name);
+ make_cleanup (free, name);
+
+ if (stat (name, &st) < 0)
+ perror_with_name (name);
+ if ((st.st_mode & S_IFMT) != S_IFDIR)
+ error ("%s is not a directory.", name);
+
+ append:
+ {
+ register unsigned int len = strlen (name);
+
+ p = source_path;
+ while (1)
+ {
+ if (!strncmp (p, name, len)
+ && (p[len] == '\0' || p[len] == ':'))
+ {
+ if (from_tty)
+ printf ("\"%s\" is already in the source path.\n", name);
+ break;
+ }
+ p = index (p, ':');
+ if (p != 0)
+ ++p;
+ else
+ break;
+ }
+ if (p == 0)
+ {
+ source_path = concat (old, ":", name);
+ free (old);
+ old = source_path;
+ }
+ }
+ } while (*dirname != '\0');
+ if (from_tty)
+ directories_info ();
+ }
+}
+
+/* Open a file named STRING, searching path PATH (dir names sep by colons)
+ using mode MODE and protection bits PROT in the calls to open.
+ If TRY_CWD_FIRST, try to open ./STRING before searching PATH.
+ (ie pretend the first element of PATH is ".")
+ If FILENAMED_OPENED is non-null, set it to a newly allocated string naming
+ the actual file opened (this string will always start with a "/"
+
+ If a file is found, return the descriptor.
+ Otherwise, return -1, with errno set for the last name we tried to open. */
+
+/* >>>> This should only allow files of certain types,
+ >>>> eg executable, non-directory */
+int
+openp (path, try_cwd_first, string, mode, prot, filename_opened)
+ char *path;
+ int try_cwd_first;
+ char *string;
+ int mode;
+ int prot;
+ char **filename_opened;
+{
+ register int fd;
+ register char *filename;
+ register char *p, *p1;
+ register int len;
+
+ if (!path)
+ path = ".";
+
+ /* ./foo => foo */
+ while (string[0] == '.' && string[1] == '/')
+ string += 2;
+
+ if (try_cwd_first || string[0] == '/')
+ {
+ filename = string;
+ fd = open (filename, mode, prot);
+ if (fd >= 0 || string[0] == '/')
+ goto done;
+ }
+
+ filename = (char *) alloca (strlen (path) + strlen (string) + 2);
+ fd = -1;
+ for (p = path; p; p = p1 ? p1 + 1 : 0)
+ {
+ p1 = (char *) index (p, ':');
+ if (p1)
+ len = p1 - p;
+ else
+ len = strlen (p);
+
+ strncpy (filename, p, len);
+ filename[len] = 0;
+ strcat (filename, "/");
+ strcat (filename, string);
+
+ fd = open (filename, mode, prot);
+ if (fd >= 0) break;
+ }
+
+ done:
+ if (filename_opened)
+ if (fd < 0)
+ *filename_opened = (char *) 0;
+ else if (filename[0] == '/')
+ *filename_opened = savestring (filename, strlen (filename));
+ else
+ {
+ *filename_opened = concat (current_directory, "/", filename);
+ }
+
+ return fd;
+}
+
+/* Create and initialize the table S->line_charpos that records
+ the positions of the lines in the source file, which is assumed
+ to be open on descriptor DESC.
+ All set S->nlines to the number of such lines. */
+
+static void
+find_source_lines (s, desc)
+ struct symtab *s;
+ int desc;
+{
+ struct stat st;
+ register char *data, *p, *end;
+ int nlines = 0;
+ int lines_allocated = 1000;
+ int *line_charpos = (int *) xmalloc (lines_allocated * sizeof (int));
+ extern int exec_mtime;
+
+ if (fstat (desc, &st) < 0)
+ perror_with_name (s->filename);
+ if (get_exec_file (0) != 0 && exec_mtime < st.st_mtime)
+ printf ("Source file is more recent than executable.\n");
+
+ data = (char *) alloca (st.st_size);
+ if (myread (desc, data, st.st_size) < 0)
+ perror_with_name (s->filename);
+ end = data + st.st_size;
+ p = data;
+ line_charpos[0] = 0;
+ nlines = 1;
+ while (p != end)
+ {
+ if (*p++ == '\n'
+ /* A newline at the end does not start a new line. */
+ && p != end)
+ {
+ if (nlines == lines_allocated)
+ {
+ lines_allocated *= 2;
+ line_charpos = (int *) xrealloc (line_charpos,
+ sizeof (int) * lines_allocated);
+ }
+ line_charpos[nlines++] = p - data;
+ }
+ }
+ s->nlines = nlines;
+ s->line_charpos = (int *) xrealloc (line_charpos, nlines * sizeof (int));
+}
+
+/* Return the character position of a line LINE in symtab S.
+ Return 0 if anything is invalid. */
+
+int
+source_line_charpos (s, line)
+ struct symtab *s;
+ int line;
+{
+ if (!s) return 0;
+ if (!s->line_charpos || line <= 0) return 0;
+ if (line > s->nlines)
+ line = s->nlines;
+ return s->line_charpos[line - 1];
+}
+
+/* Return the line number of character position POS in symtab S. */
+
+int
+source_charpos_line (s, chr)
+ register struct symtab *s;
+ register int chr;
+{
+ register int line = 0;
+ register int *lnp;
+
+ if (s == 0 || s->line_charpos == 0) return 0;
+ lnp = s->line_charpos;
+ /* Files are usually short, so sequential search is Ok */
+ while (line < s->nlines && *lnp <= chr)
+ {
+ line++;
+ lnp++;
+ }
+ if (line >= s->nlines)
+ line = s->nlines;
+ return line;
+}
+
+/* Get full pathname and line number positions for a symtab.
+ Return nonzero if line numbers may have changed.
+ Set *FULLNAME to actual name of the file as found by `openp',
+ or to 0 if the file is not found. */
+
+int
+get_filename_and_charpos (s, line, fullname)
+ struct symtab *s;
+ int line;
+ char **fullname;
+{
+ register int desc, linenums_changed = 0;
+
+ desc = openp (source_path, 0, s->filename, O_RDONLY, 0, &s->fullname);
+ if (desc < 0)
+ {
+ if (fullname)
+ *fullname = NULL;
+ return 0;
+ }
+ if (fullname)
+ *fullname = s->fullname;
+ if (s->line_charpos == 0) linenums_changed = 1;
+ if (linenums_changed) find_source_lines (s, desc);
+ close (desc);
+ return linenums_changed;
+}
+
+/* Print text describing the full name of the source file S
+ and the line number LINE and its corresponding character position.
+ The text starts with two Ctrl-z so that the Emacs-GDB interface
+ can easily find it.
+
+ MID_STATEMENT is nonzero if the PC is not at the beginning of that line.
+
+ Return 1 if successful, 0 if could not find the file. */
+
+int
+identify_source_line (s, line, mid_statement)
+ struct symtab *s;
+ int line;
+ int mid_statement;
+{
+ if (s->line_charpos == 0)
+ get_filename_and_charpos (s, line, 0);
+ if (s->fullname == 0)
+ return 0;
+ printf ("\032\032%s:%d:%d:%s:0x%x\n", s->fullname,
+ line, s->line_charpos[line - 1],
+ mid_statement ? "middle" : "beg",
+ get_frame_pc (get_current_frame()));
+ current_source_line = line;
+ first_line_listed = line;
+ last_line_listed = line;
+ current_source_symtab = s;
+ return 1;
+}
+
+/* Print source lines from the file of symtab S,
+ starting with line number LINE and stopping before line number STOPLINE. */
+
+void
+print_source_lines (s, line, stopline, noerror)
+ struct symtab *s;
+ int line, stopline;
+ int noerror;
+{
+ register int c;
+ register int desc;
+ register FILE *stream;
+ int nlines = stopline - line;
+
+ desc = openp (source_path, 0, s->filename, O_RDONLY, 0, &s->fullname);
+ if (desc < 0)
+ {
+ extern int errno;
+ if (noerror && line + 1 == stopline)
+ {
+ /* can't find the file - tell user where we are anyway */
+ current_source_symtab = s;
+ current_source_line = line;
+ first_line_listed = line;
+ last_line_listed = line;
+ printf_filtered ("%d\t(%s)\n", current_source_line++, s->filename);
+ }
+ else
+ {
+ if (! noerror)
+ perror_with_name (s->filename);
+ print_sys_errmsg (s->filename, errno);
+ }
+ return;
+ }
+
+ if (s->line_charpos == 0)
+ find_source_lines (s, desc);
+
+ if (line < 1 || line > s->nlines)
+ {
+ close (desc);
+ error ("Line number %d out of range; %s has %d lines.",
+ line, s->filename, s->nlines);
+ }
+
+ if (lseek (desc, s->line_charpos[line - 1], 0) < 0)
+ {
+ close (desc);
+ perror_with_name (s->filename);
+ }
+
+ current_source_symtab = s;
+ current_source_line = line;
+ first_line_listed = line;
+
+ stream = fdopen (desc, "r");
+ clearerr (stream);
+
+ while (nlines-- > 0)
+ {
+ c = fgetc (stream);
+ if (c == EOF) break;
+ last_line_listed = current_source_line;
+ printf_filtered ("%d\t", current_source_line++);
+ do
+ {
+ if (c < 040 && c != '\t' && c != '\n')
+ printf_filtered ("^%c", c + 0100);
+ else if (c == 0177)
+ printf_filtered ("^?");
+ else
+ printf_filtered ("%c", c);
+ } while (c != '\n' && (c = fgetc (stream)) >= 0);
+ }
+
+ fclose (stream);
+}
+
+
+
+/*
+ C++
+ Print a list of files and line numbers which a user may choose from
+ in order to list a function which was specified ambiguously
+ (as with `list classname::overloadedfuncname', for example).
+ The vector in SALS provides the filenames and line numbers.
+ */
+static void
+ambiguous_line_spec (sals)
+ struct symtabs_and_lines *sals;
+{
+ int i;
+
+ for (i = 0; i < sals->nelts; ++i)
+ printf("file: \"%s\", line number: %d\n",
+ sals->sals[i].symtab->filename, sals->sals[i].line);
+}
+
+
+static void
+file_command(arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ struct symtabs_and_lines sals;
+ struct symtab_and_line sal;
+ struct symbol *sym;
+ char *arg1;
+ int linenum_beg = 0;
+ char *p;
+
+ if (symtab_list == 0 && partial_symtab_list == 0)
+ error ("No symbol table is loaded. Use the \"symbol-file\" command.");
+
+ /* Pull in a current source symtab if necessary */
+ if (arg == 0 || arg[0] == 0) {
+ if (current_source_symtab == 0)
+ select_source_symtab(0);
+ else
+ printf("%s\n", current_source_symtab->filename);
+ return;
+ }
+ arg1 = arg;
+ sals = decode_line_1 (&arg1, 0, 0, 0);
+
+ if (! sals.nelts)
+ return; /* C++ */
+
+ if (sals.nelts > 1)
+ {
+ ambiguous_line_spec (&sals);
+ free (sals.sals);
+ return;
+ }
+
+ sal = sals.sals[0];
+ free (sals.sals);
+
+ /* Record whether the BEG arg is all digits. */
+
+ for (p = arg; p != arg1 && *p >= '0' && *p <= '9'; ++p)
+ ;
+ linenum_beg = (p == arg1);
+
+ /* if line was specified by address,
+ print exactly which line, and which file.
+ In this case, sal.symtab == 0 means address is outside
+ of all known source files, not that user failed to give a filename. */
+ if (*arg == '*')
+ {
+ if (sal.symtab == 0)
+ error ("No source file for address 0x%x.", sal.pc);
+ sym = find_pc_function (sal.pc);
+ if (sym)
+ printf ("0x%x is in %s (%s, line %d).\n",
+ sal.pc, SYMBOL_NAME (sym), sal.symtab->filename, sal.line);
+ else
+ printf ("0x%x is in %s, line %d.\n",
+ sal.pc, sal.symtab->filename, sal.line);
+ }
+
+ /* If line was not specified by just a line number,
+ and it does not imply a symtab, it must be an undebuggable symbol
+ which means no source code. */
+
+ if (sal.symtab == 0)
+ {
+ if (! linenum_beg)
+ error ("No line number known for %s.", arg);
+ else
+ error ("No default source file yet. Do \"help list\".");
+ }
+ else
+ {
+ current_source_symtab = sal.symtab;
+ current_source_line = sal.line;
+ first_line_listed = sal.line;
+ }
+}
+
+#define PUSH_STACK_SIZE 32
+static struct {
+ struct symtab *symtab;
+ int line;
+} push_stack[PUSH_STACK_SIZE];
+
+static unsigned int push_stack_ptr;
+
+static void
+push_to_file_command (arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ struct symtab *cursym = current_source_symtab;
+ int curline = current_source_line;
+ register unsigned int i;
+
+ file_command(arg, from_tty);
+
+ /* if we got back, command was successful */
+ i = push_stack_ptr;
+ push_stack[i].symtab = cursym;
+ push_stack[i].line = curline;
+ push_stack_ptr = (i + 1) & (PUSH_STACK_SIZE - 1);
+}
+
+static void
+pop_file_command (arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ register unsigned int i = push_stack_ptr;
+
+ /* if there's something on the stack, pop it & clear the slot. */
+ i = (i + (PUSH_STACK_SIZE - 1)) & (PUSH_STACK_SIZE - 1);
+ if (push_stack[i].symtab) {
+ current_source_symtab = push_stack[i].symtab;
+ first_line_listed = current_source_line = push_stack[i].line;
+ push_stack[i].symtab = NULL;
+ push_stack_ptr = i;
+ }
+}
+
+
+static void
+list_command (arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ struct symtabs_and_lines sals, sals_end;
+ struct symtab_and_line sal, sal_end;
+ struct symbol *sym;
+ char *arg1;
+ int no_end = 1;
+ int dummy_end = 0;
+ int dummy_beg = 0;
+ int linenum_beg = 0;
+ char *p;
+
+ if (symtab_list == 0 && partial_symtab_list == 0)
+ error ("No symbol table is loaded. Use the \"symbol-file\" command.");
+
+ /* Pull in a current source symtab if necessary */
+ if (current_source_symtab == 0 &&
+ (arg == 0 || arg[0] == '+' || arg[0] == '-'))
+ select_source_symtab (0);
+
+ /* "l" or "l +" lists next ten lines. */
+
+ if (arg == 0 || !strcmp (arg, "+"))
+ {
+ if (current_source_symtab == 0)
+ error ("No default source file yet. Do \"help list\".");
+ print_source_lines (current_source_symtab, current_source_line,
+ current_source_line + 10, 0);
+ return;
+ }
+
+ /* "l -" lists previous ten lines, the ones before the ten just listed. */
+ if (!strcmp (arg, "-"))
+ {
+ if (current_source_symtab == 0)
+ error ("No default source file yet. Do \"help list\".");
+ print_source_lines (current_source_symtab,
+ max (first_line_listed - 10, 1),
+ first_line_listed, 0);
+ return;
+ }
+
+ /* Now if there is only one argument, decode it in SAL
+ and set NO_END.
+ If there are two arguments, decode them in SAL and SAL_END
+ and clear NO_END; however, if one of the arguments is blank,
+ set DUMMY_BEG or DUMMY_END to record that fact. */
+
+ arg1 = arg;
+ if (*arg1 == ',')
+ dummy_beg = 1;
+ else
+ {
+ sals = decode_line_1 (&arg1, 0, 0, 0);
+
+ if (! sals.nelts) return; /* C++ */
+ if (sals.nelts > 1)
+ {
+ ambiguous_line_spec (&sals);
+ free (sals.sals);
+ return;
+ }
+
+ sal = sals.sals[0];
+ free (sals.sals);
+ }
+
+ /* Record whether the BEG arg is all digits. */
+
+ for (p = arg; p != arg1 && *p >= '0' && *p <= '9'; p++);
+ linenum_beg = (p == arg1);
+
+ while (*arg1 == ' ' || *arg1 == '\t')
+ arg1++;
+ if (*arg1 == ',')
+ {
+ no_end = 0;
+ arg1++;
+ while (*arg1 == ' ' || *arg1 == '\t')
+ arg1++;
+ if (*arg1 == 0)
+ dummy_end = 1;
+ else
+ {
+ if (dummy_beg)
+ sals_end = decode_line_1 (&arg1, 0, 0, 0);
+ else
+ sals_end = decode_line_1 (&arg1, 0, sal.symtab, sal.line);
+ if (sals_end.nelts == 0)
+ return;
+ if (sals_end.nelts > 1)
+ {
+ ambiguous_line_spec (&sals_end);
+ free (sals_end.sals);
+ return;
+ }
+ sal_end = sals_end.sals[0];
+ free (sals_end.sals);
+ }
+ }
+
+ if (*arg1)
+ error ("Junk at end of line specification.");
+
+ if (!no_end && !dummy_beg && !dummy_end
+ && sal.symtab != sal_end.symtab)
+ error ("Specified start and end are in different files.");
+ if (dummy_beg && dummy_end)
+ error ("Two empty args do not say what lines to list.");
+
+ /* if line was specified by address,
+ first print exactly which line, and which file.
+ In this case, sal.symtab == 0 means address is outside
+ of all known source files, not that user failed to give a filename. */
+ if (*arg == '*')
+ {
+ if (sal.symtab == 0)
+ error ("No source file for address 0x%x.", sal.pc);
+ sym = find_pc_function (sal.pc);
+ if (sym)
+ printf ("0x%x is in %s (%s, line %d).\n",
+ sal.pc, SYMBOL_NAME (sym), sal.symtab->filename, sal.line);
+ else
+ printf ("0x%x is in %s, line %d.\n",
+ sal.pc, sal.symtab->filename, sal.line);
+ }
+
+ /* If line was not specified by just a line number,
+ and it does not imply a symtab, it must be an undebuggable symbol
+ which means no source code. */
+
+ if (! linenum_beg && sal.symtab == 0)
+ error ("No line number known for %s.", arg);
+
+ /* If this command is repeated with RET,
+ turn it into the no-arg variant. */
+
+ if (from_tty)
+ *arg = 0;
+
+ if (dummy_beg && sal_end.symtab == 0)
+ error ("No default source file yet. Do \"help list\".");
+ if (dummy_beg)
+ print_source_lines (sal_end.symtab, max (sal_end.line - 9, 1),
+ sal_end.line + 1, 0);
+ else if (sal.symtab == 0)
+ error ("No default source file yet. Do \"help list\".");
+ else if (no_end)
+ print_source_lines (sal.symtab, max (sal.line - 5, 1), sal.line + 5, 0);
+ else
+ print_source_lines (sal.symtab, sal.line,
+ dummy_end ? sal.line + 10 : sal_end.line + 1,
+ 0);
+}
+
+/* Print info on range of pc's in a specified line. */
+
+static void
+line_info (arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ struct symtabs_and_lines sals;
+ struct symtab_and_line sal;
+ int start_pc, end_pc;
+ int i;
+
+ if (arg == 0)
+ {
+ sal.symtab = current_source_symtab;
+ sal.line = last_line_listed;
+ sals.nelts = 1;
+ sals.sals = (struct symtab_and_line *)
+ xmalloc (sizeof (struct symtab_and_line));
+ sals.sals[0] = sal;
+ }
+ else
+ {
+ sals = decode_line_spec_1 (arg, 0);
+
+ /* If this command is repeated with RET,
+ turn it into the no-arg variant. */
+ if (from_tty)
+ *arg = 0;
+ }
+
+ /* C++ More than one line may have been specified, as when the user
+ specifies an overloaded function name. Print info on them all. */
+ for (i = 0; i < sals.nelts; i++)
+ {
+ sal = sals.sals[i];
+
+ if (sal.symtab == 0)
+ error ("No source file specified.");
+
+ if (sal.line > 0
+ && find_line_pc_range (sal.symtab, sal.line, &start_pc, &end_pc))
+ {
+ if (start_pc == end_pc)
+ printf ("Line %d of \"%s\" is at pc 0x%x but contains no code.\n",
+ sal.line, sal.symtab->filename, start_pc);
+ else
+ printf ("Line %d of \"%s\" starts at pc 0x%x and ends at 0x%x.\n",
+ sal.line, sal.symtab->filename, start_pc, end_pc);
+ /* x/i should display this line's code. */
+ set_next_address (start_pc);
+ /* Repeating "info line" should do the following line. */
+ last_line_listed = sal.line + 1;
+ }
+ else
+ printf ("Line number %d is out of range for \"%s\".\n",
+ sal.line, sal.symtab->filename);
+ }
+}
+
+/* Commands to search the source file for a regexp. */
+
+static void
+forward_search_command (regex, from_tty)
+ char *regex;
+{
+ register int c;
+ register int desc;
+ register FILE *stream;
+ int line = last_line_listed + 1;
+ char *msg;
+
+ msg = (char *) re_comp (regex);
+ if (msg)
+ error (msg);
+
+ if (current_source_symtab == 0)
+ select_source_symtab (0);
+
+ /* Search from last_line_listed+1 in current_source_symtab */
+
+ desc = openp (source_path, 0, current_source_symtab->filename,
+ O_RDONLY, 0, &current_source_symtab->fullname);
+ if (desc < 0)
+ perror_with_name (current_source_symtab->filename);
+
+ if (current_source_symtab->line_charpos == 0)
+ find_source_lines (current_source_symtab, desc);
+
+ if (line < 1 || line > current_source_symtab->nlines)
+ {
+ close (desc);
+ error ("Expression not found");
+ }
+
+ if (lseek (desc, current_source_symtab->line_charpos[line - 1], 0) < 0)
+ {
+ close (desc);
+ perror_with_name (current_source_symtab->filename);
+ }
+
+ stream = fdopen (desc, "r");
+ clearerr (stream);
+ while (1) {
+ char buf[4096]; /* Should be reasonable??? */
+ register char *p = buf;
+
+ c = fgetc (stream);
+ if (c == EOF)
+ break;
+ do {
+ *p++ = c;
+ } while (c != '\n' && (c = fgetc (stream)) >= 0);
+
+ /* we now have a source line in buf, null terminate and match */
+ *p = 0;
+ if (re_exec (buf) > 0)
+ {
+ /* Match! */
+ fclose (stream);
+ print_source_lines (current_source_symtab,
+ line, line+1, 0);
+ current_source_line = max (line - 5, 1);
+ return;
+ }
+ line++;
+ }
+
+ printf ("Expression not found\n");
+ fclose (stream);
+}
+
+static void
+reverse_search_command (regex, from_tty)
+ char *regex;
+{
+ register int c;
+ register int desc;
+ register FILE *stream;
+ int line = last_line_listed - 1;
+ char *msg;
+
+ msg = (char *) re_comp (regex);
+ if (msg)
+ error (msg);
+
+ if (current_source_symtab == 0)
+ select_source_symtab (0);
+
+ /* Search from last_line_listed-1 in current_source_symtab */
+
+ desc = openp (source_path, 0, current_source_symtab->filename,
+ O_RDONLY, 0, &current_source_symtab->fullname);
+ if (desc < 0)
+ perror_with_name (current_source_symtab->filename);
+
+ if (current_source_symtab->line_charpos == 0)
+ find_source_lines (current_source_symtab, desc);
+
+ if (line < 1 || line > current_source_symtab->nlines)
+ {
+ close (desc);
+ error ("Expression not found");
+ }
+
+ if (lseek (desc, current_source_symtab->line_charpos[line - 1], 0) < 0)
+ {
+ close (desc);
+ perror_with_name (current_source_symtab->filename);
+ }
+
+ stream = fdopen (desc, "r");
+ clearerr (stream);
+ while (1)
+ {
+ char buf[4096]; /* Should be reasonable??? */
+ register char *p = buf;
+
+ c = fgetc (stream);
+ if (c == EOF)
+ break;
+ do {
+ *p++ = c;
+ } while (c != '\n' && (c = fgetc (stream)) >= 0);
+
+ /* We now have a source line in buf; null terminate and match. */
+ *p = 0;
+ if (re_exec (buf) > 0)
+ {
+ /* Match! */
+ fclose (stream);
+ print_source_lines (current_source_symtab,
+ line, line+1, 0);
+ current_source_line = max (line - 5, 1);
+ return;
+ }
+ line--;
+ if (fseek (stream, current_source_symtab->line_charpos[line - 1], 0) < 0)
+ {
+ fclose (stream);
+ perror_with_name (current_source_symtab->filename);
+ }
+ }
+
+ printf ("Expression not found\n");
+ fclose (stream);
+ return;
+}
+
+void
+_initialize_source ()
+{
+ current_source_symtab = 0;
+ init_source_path ();
+
+ add_com ("directory", class_files, directory_command,
+ "Add directory DIR to end of search path for source files.\n\
+With no argument, reset the search path to just the working directory\n\
+and forget cached info on line positions in source files.");
+
+ add_info ("directories", directories_info,
+ "Current search path for finding source files.");
+
+ add_info ("line", line_info,
+ "Core addresses of the code for a source line.\n\
+Line can be specified as\n\
+ LINENUM, to list around that line in current file,\n\
+ FILE:LINENUM, to list around that line in that file,\n\
+ FUNCTION, to list around beginning of that function,\n\
+ FILE:FUNCTION, to distinguish among like-named static functions.\n\
+Default is to describe the last source line that was listed.\n\n\
+This sets the default address for \"x\" to the line's first instruction\n\
+so that \"x/i\" suffices to start examining the machine code.\n\
+The address is also stored as the value of \"$_\".");
+
+ add_com ("forward-search", class_files, forward_search_command,
+ "Search for regular expression (see regex(3)) from last line listed.");
+ add_com_alias ("search", "forward-search", class_files, 0);
+
+ add_com ("reverse-search", class_files, reverse_search_command,
+ "Search backward for regular expression (see regex(3)) from last line listed.");
+
+ add_com ("list", class_files, list_command,
+ "List specified function or line.\n\
+With no argument, lists ten more lines after or around previous listing.\n\
+\"list -\" lists the ten lines before a previous ten-line listing.\n\
+One argument specifies a line, and ten lines are listed around that line.\n\
+Two arguments with comma between specify starting and ending lines to list.\n\
+Lines can be specified in these ways:\n\
+ LINENUM, to list around that line in current file,\n\
+ FILE:LINENUM, to list around that line in that file,\n\
+ FUNCTION, to list around beginning of that function,\n\
+ FILE:FUNCTION, to distinguish among like-named static functions.\n\
+ *ADDRESS, to list around the line containing that address.\n\
+With two args if one is empty it stands for ten lines away from the other arg.");
+ add_com ("file", class_files, file_command,
+ "Select current file, function and line for display or list.\n\
+Specification can have the form:\n\
+ LINENUM, to select that line in current file,\n\
+ FILE:LINENUM, to select that line in that file,\n\
+ FUNCTION, to select beginning of that function,\n\
+ FILE:FUNCTION, to distinguish among like-named static functions.\n\
+ *ADDRESS, to select the line containing that address.");
+ add_com ("push-to-file", class_files, push_to_file_command,
+ "Like \"file\" command but remembers current file & line on a stack.\n\
+Can later return to current file with \"pop-file\" command.\n\
+Up to 32 file positions can be pushed on stack.");
+ add_com ("pop-file", class_files, pop_file_command,
+ "Pops back to file position saved by most recent \"push-to-file\".\n\
+If everything has been popped from stack, command does nothing.");
+}
+
diff --git a/gnu/usr.bin/kgdb/stab.def b/gnu/usr.bin/kgdb/stab.def
new file mode 100644
index 000000000000..b81cda4bdc31
--- /dev/null
+++ b/gnu/usr.bin/kgdb/stab.def
@@ -0,0 +1,115 @@
+/* Table of DBX symbol codes for the GNU system.
+ Copyright (C) 1988 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 1, or (at your option)
+ any later version.
+
+ 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. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+/* Global variable. Only the name is significant.
+ To find the address, look in the corresponding external symbol. */
+__define_stab (N_GSYM, 0x20, "GSYM")
+
+/* Function name for BSD Fortran. Only the name is significant.
+ To find the address, look in the corresponding external symbol. */
+__define_stab (N_FNAME, 0x22, "FNAME")
+
+/* Function name or text-segment variable for C. Value is its address.
+ Desc is supposedly starting line number, but GCC doesn't set it
+ and DBX seems not to miss it. */
+__define_stab (N_FUN, 0x24, "FUN")
+
+/* Data-segment variable with internal linkage. Value is its address. */
+__define_stab (N_STSYM, 0x26, "STSYM")
+
+/* BSS-segment variable with internal linkage. Value is its address. */
+__define_stab (N_LCSYM, 0x28, "LCSYM")
+
+/* Name of main routine. Only the name is significant.
+ This is not used in C. */
+__define_stab (N_MAIN, 0x2a, "MAIN")
+
+/* Register variable. Value is number of register. */
+__define_stab (N_RSYM, 0x40, "RSYM")
+
+/* Structure or union element. Value is offset in the structure. */
+__define_stab (N_SSYM, 0x60, "SSYM")
+
+/* Parameter variable. Value is offset from argument pointer.
+ (On most machines the argument pointer is the same as the frame pointer. */
+__define_stab (N_PSYM, 0xa0, "PSYM")
+
+/* Automatic variable in the stack. Value is offset from frame pointer.
+ Also used for type descriptions. */
+__define_stab (N_LSYM, 0x80, "LSYM")
+
+/* Alternate entry point. Value is its address. */
+__define_stab (N_ENTRY, 0xa4, "ENTRY")
+
+/* Name of main source file.
+ Value is starting text address of the compilation. */
+__define_stab (N_SO, 0x64, "SO")
+
+/* Name of sub-source file.
+ Value is starting text address of the compilation. */
+__define_stab (N_SOL, 0x84, "SOL")
+
+/* Line number in text segment. Desc is the line number;
+ value is corresponding address. */
+__define_stab (N_SLINE, 0x44, "SLINE")
+/* Similar, for data segment. */
+__define_stab (N_DSLINE, 0x46, "DSLINE")
+/* Similar, for bss segment. */
+__define_stab (N_BSLINE, 0x48, "BSLINE")
+
+/* Beginning of an include file. Only Sun uses this.
+ In an object file, only the name is significant.
+ The Sun linker puts data into some of the other fields. */
+__define_stab (N_BINCL, 0x82, "BINCL")
+/* End of an include file. No name.
+ These two act as brackets around the file's output.
+ In an object file, there is no significant data in this entry.
+ The Sun linker puts data into some of the fields. */
+__define_stab (N_EINCL, 0xa2, "EINCL")
+/* Place holder for deleted include file.
+ This appears only in output from the Sun linker. */
+__define_stab (N_EXCL, 0xc2, "EXCL")
+
+/* Beginning of lexical block.
+ The desc is the nesting level in lexical blocks.
+ The value is the address of the start of the text for the block.
+ The variables declared inside the block *precede* the N_LBRAC symbol. */
+__define_stab (N_LBRAC, 0xc0, "LBRAC")
+/* End of a lexical block. Desc matches the N_LBRAC's desc.
+ The value is the address of the end of the text for the block. */
+__define_stab (N_RBRAC, 0xe0, "RBRAC")
+
+/* Begin named common block. Only the name is significant. */
+__define_stab (N_BCOMM, 0xe2, "BCOMM")
+/* Begin named common block. Only the name is significant
+ (and it should match the N_BCOMM). */
+__define_stab (N_ECOMM, 0xe4, "ECOMM")
+/* End common (local name): value is address.
+ I'm not sure how this is used. */
+__define_stab (N_ECOML, 0xe8, "ECOML")
+/* Second symbol entry containing a length-value for the preceding entry.
+ The value is the length. */
+__define_stab (N_LENG, 0xfe, "LENG")
+
+/* Global symbol in Pascal.
+ Supposedly the value is its line number; I'm skeptical. */
+__define_stab (N_PC, 0x30, "PC")
+
+/* Modula-2 compilation unit. Can someone say what info it contains? */
+__define_stab (N_M2C, 0x42, "M2C")
+/* Modula-2 scope information. Can someone say what info it contains? */
+__define_stab (N_SCOPE, 0xc4, "SCOPE")
diff --git a/gnu/usr.bin/kgdb/stack.c b/gnu/usr.bin/kgdb/stack.c
new file mode 100644
index 000000000000..24f8e082c6c3
--- /dev/null
+++ b/gnu/usr.bin/kgdb/stack.c
@@ -0,0 +1,960 @@
+/*-
+ * This code is derived from software copyrighted by the Free Software
+ * Foundation.
+ *
+ * Modified 1991 by Donn Seeley at UUNET Technologies, Inc.
+ * Modified 1990 by Van Jacobson at Lawrence Berkeley Laboratory.
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)stack.c 6.3 (Berkeley) 5/8/91";
+#endif /* not lint */
+
+/* Print and select stack frames for GDB, the GNU debugger.
+ Copyright (C) 1986, 1987, 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+/* modified by rjc Thu Nov 1 16:46:57 1990, fixed return_command so that
+ it can return values, it still has problems when running on pmax,
+ cannot write register 65 */
+
+#include <stdio.h>
+
+#include "defs.h"
+#include "param.h"
+#include "symtab.h"
+#include "frame.h"
+#include "value.h"
+
+
+/* Thie "selected" stack frame is used by default for local and arg access.
+ May be zero, for no selected frame. */
+
+FRAME selected_frame;
+
+/* Level of the selected frame:
+ 0 for innermost, 1 for its caller, ...
+ or -1 for frame specified by address with no defined level. */
+
+int selected_frame_level;
+
+/* Nonzero means print the full filename and linenumber
+ when a frame is printed, and do so in a format programs can parse. */
+
+int frame_file_full_name = 0;
+
+static void select_calling_frame ();
+
+void print_frame_info ();
+
+/* Print a stack frame briefly. FRAME should be the frame id
+ and LEVEL should be its level in the stack (or -1 for level not defined).
+ This prints the level, the function executing, the arguments,
+ and the file name and line number.
+ If the pc is not at the beginning of the source line,
+ the actual pc is printed at the beginning.
+
+ If SOURCE is 1, print the source line as well.
+ If SOURCE is -1, print ONLY the source line. */
+
+static void
+print_stack_frame (frame, level, source)
+ FRAME frame;
+ int level;
+ int source;
+{
+ struct frame_info *fi;
+
+ fi = get_frame_info (frame);
+
+ print_frame_info (fi, level, source, 1);
+}
+
+/* Flag which will indicate when the frame has been changed
+ by and "up" or "down" command. */
+static int frame_changed;
+
+void
+print_frame_info (fi, level, source, args)
+ struct frame_info *fi;
+ register int level;
+ int source;
+ int args;
+{
+ struct symtab_and_line sal;
+ struct symbol *func;
+ register char *funname = 0;
+ int numargs;
+ struct partial_symtab *pst;
+
+ /* Don't give very much information if we haven't readin the
+ symbol table yet. */
+ pst = find_pc_psymtab (fi->pc);
+ if (pst && !pst->readin)
+ {
+ /* Abbreviated information. */
+ char *fname;
+
+ if (!find_pc_partial_function (fi->pc, &fname, 0))
+ fname = "??";
+
+ printf_filtered ("#%-2d ", level);
+ printf_filtered ("0x%x in ", fi->pc);
+
+ fputs_demangled(fname, stdout, -1);
+ fputs_filtered(" (...)\n", stdout);
+
+ return;
+ }
+
+ sal = find_pc_line (fi->pc, fi->next_frame);
+ func = find_pc_function (fi->pc);
+ if (func)
+ {
+ /* In certain pathological cases, the symtabs give the wrong
+ function (when we are in the first function in a file which
+ is compiled without debugging symbols, the previous function
+ is compiled with debugging symbols, and the "foo.o" symbol
+ that is supposed to tell us where the file with debugging symbols
+ ends has been truncated by ar because it is longer than 15
+ characters).
+
+ So look in the misc_function_vector as well, and if it comes
+ up with a larger address for the function use that instead.
+ I don't think this can ever cause any problems;
+ there shouldn't be any
+ misc_function_vector symbols in the middle of a function. */
+ int misc_index = find_pc_misc_function (fi->pc);
+ if (misc_index >= 0
+ && (misc_function_vector[misc_index].address
+ > BLOCK_START (SYMBOL_BLOCK_VALUE (func))))
+ {
+ /* In this case we have no way of knowing the source file
+ and line number, so don't print them. */
+ sal.symtab = 0;
+ /* We also don't know anything about the function besides
+ its address and name. */
+ func = 0;
+ funname = misc_function_vector[misc_index].name;
+ }
+ else
+ funname = SYMBOL_NAME (func);
+ }
+ else
+ {
+ register int misc_index = find_pc_misc_function (fi->pc);
+ if (misc_index >= 0)
+ funname = misc_function_vector[misc_index].name;
+ }
+
+ if (frame_changed || source >= 0 || !sal.symtab)
+ {
+ if (level >= 0)
+ printf_filtered ("#%-2d ", level);
+ else if (frame_changed)
+ printf ("#%-2d ", 0);
+ if (fi->pc != sal.pc || !sal.symtab)
+ printf_filtered ("0x%x in ", fi->pc);
+ fputs_demangled(funname ? funname : "??", stdout, -1);
+ printf_filtered(" (");
+ if (args)
+ {
+ if (func)
+ numargs = -1;
+ else
+ FRAME_NUM_ARGS (numargs, fi);
+
+ print_frame_args (func, fi, numargs, stdout);
+ }
+ printf_filtered (")");
+ if (sal.symtab)
+ printf_filtered (" (%s line %d)", sal.symtab->filename, sal.line);
+ printf_filtered ("\n");
+ }
+
+ if ((frame_changed || source != 0) && sal.symtab)
+ {
+ int done = 0;
+ int mid_statement = source < 0 && fi->pc != sal.pc;
+ if (frame_file_full_name)
+ done = identify_source_line (sal.symtab, sal.line, mid_statement);
+ if (!done)
+ {
+ if (mid_statement)
+ printf_filtered ("0x%x\t", fi->pc);
+ print_source_lines (sal.symtab, sal.line, sal.line + 1, 1);
+ }
+ current_source_line = max (sal.line - 5, 1);
+ }
+ frame_changed = 0;
+ if (source != 0)
+ set_default_breakpoint (1, fi->pc, sal.symtab, sal.line);
+
+ fflush (stdout);
+}
+
+/* Call here to print info on selected frame, after a trap. */
+
+void
+print_sel_frame (just_source)
+ int just_source;
+{
+ print_stack_frame (selected_frame, -1, just_source ? -1 : 1);
+}
+
+/* Print info on the selected frame, including level number
+ but not source. */
+
+void
+print_selected_frame ()
+{
+ print_stack_frame (selected_frame, selected_frame_level, 0);
+}
+
+void flush_cached_frames ();
+
+#ifdef FRAME_SPECIFICATION_DYADIC
+extern FRAME setup_arbitrary_frame ();
+#endif
+
+/*
+ * Read a frame specification in whatever the appropriate format is.
+ */
+static FRAME
+parse_frame_specification (frame_exp)
+ char *frame_exp;
+{
+ int numargs = 0;
+ int arg1, arg2;
+
+ if (frame_exp)
+ {
+ char *addr_string, *p;
+ struct cleanup *tmp_cleanup;
+ struct frame_info *fci;
+
+ while (*frame_exp == ' ') frame_exp++;
+ for (p = frame_exp; *p && *p != ' '; p++)
+ ;
+
+ if (*frame_exp)
+ {
+ numargs = 1;
+ addr_string = savestring(frame_exp, p - frame_exp);
+
+ {
+ tmp_cleanup = make_cleanup (free, addr_string);
+ arg1 = parse_and_eval_address (addr_string);
+ do_cleanups (tmp_cleanup);
+ }
+
+ while (*p == ' ') p++;
+
+ if (*p)
+ {
+ numargs = 2;
+ arg2 = parse_and_eval_address (p);
+ }
+ }
+ }
+
+ switch (numargs)
+ {
+ case 0:
+ return selected_frame;
+ /* NOTREACHED */
+ case 1:
+ {
+ int level = arg1;
+ FRAME fid = find_relative_frame (get_current_frame (), &level);
+ FRAME tfid;
+
+ if (level == 0)
+ /* find_relative_frame was successful */
+ return fid;
+
+ /* If (s)he specifies the frame with an address, he deserves what
+ (s)he gets. Still, give the highest one that matches. */
+
+ for (fid = get_current_frame ();
+ fid && FRAME_FP (fid) != arg1;
+ fid = get_prev_frame (fid))
+ ;
+
+ if (fid)
+ while ((tfid = get_prev_frame (fid)) &&
+ (FRAME_FP (tfid) == arg1))
+ fid = tfid;
+
+#ifdef FRAME_SPECIFICATION_DYADIC
+ if (!fid)
+ error ("Incorrect number of args in frame specification");
+
+ return fid;
+#else
+ return create_new_frame (arg1, 0);
+#endif
+ }
+ /* NOTREACHED */
+ case 2:
+ /* Must be addresses */
+#ifndef FRAME_SPECIFICATION_DYADIC
+ error ("Incorrect number of args in frame specification");
+#else
+ return setup_arbitrary_frame (arg1, arg2);
+#endif
+ /* NOTREACHED */
+ }
+ fatal ("Internal: Error in parsing in parse_frame_specification");
+ /* NOTREACHED */
+}
+
+/* FRAME_ARGS_ADDRESS_CORRECT is just like FRAME_ARGS_ADDRESS except
+ that if it is unsure about the answer, it returns Frame_unknown
+ instead of guessing (this happens on the VAX, for example).
+
+ On most machines, we never have to guess about the args address,
+ so FRAME_ARGS_ADDRESS{,_CORRECT} are the same. */
+#if !defined (FRAME_ARGS_ADDRESS_CORRECT)
+#define FRAME_ARGS_ADDRESS_CORRECT FRAME_ARGS_ADDRESS
+#endif
+
+/* Print verbosely the selected frame or the frame at address ADDR.
+ This means absolutely all information in the frame is printed. */
+
+static void
+frame_info (addr_exp)
+ char *addr_exp;
+{
+ FRAME frame;
+ struct frame_info *fi;
+ struct frame_saved_regs fsr;
+ struct symtab_and_line sal;
+ struct symbol *func;
+ FRAME calling_frame;
+ int i, count;
+ char *funname = 0;
+
+ if (!(have_inferior_p () || have_core_file_p ()))
+ error ("No inferior or core file.");
+
+ frame = parse_frame_specification (addr_exp);
+ if (!frame)
+ error ("Invalid frame specified.");
+
+ fi = get_frame_info (frame);
+ get_frame_saved_regs (fi, &fsr);
+ sal = find_pc_line (fi->pc, fi->next_frame);
+ func = get_frame_function (frame);
+ if (func)
+ funname = SYMBOL_NAME (func);
+ else
+ {
+ register int misc_index = find_pc_misc_function (fi->pc);
+ if (misc_index >= 0)
+ funname = misc_function_vector[misc_index].name;
+ }
+ calling_frame = get_prev_frame (frame);
+
+ if (!addr_exp && selected_frame_level >= 0)
+ printf ("Stack level %d, frame at 0x%x:\n pc = 0x%x",
+ selected_frame_level, FRAME_FP(frame), fi->pc);
+ else
+ printf ("Stack frame at 0x%x:\n pc = 0x%x",
+ FRAME_FP(frame), fi->pc);
+
+ if (funname)
+ printf (" in %s", funname);
+ if (sal.symtab)
+ printf (" (%s line %d)", sal.symtab->filename, sal.line);
+ printf ("; saved pc 0x%x\n", FRAME_SAVED_PC (frame));
+ if (calling_frame)
+ printf (" called by frame at 0x%x", FRAME_FP (calling_frame));
+ if (fi->next_frame && calling_frame)
+ printf (",");
+ if (fi->next_frame)
+ printf (" caller of frame at 0x%x", fi->next_frame);
+ if (fi->next_frame || calling_frame)
+ printf ("\n");
+
+ {
+ /* Address of the argument list for this frame, or Frame_unknown. */
+ CORE_ADDR arg_list = FRAME_ARGS_ADDRESS_CORRECT (fi);
+ /* Number of args for this frame, or -1 if unknown. */
+ int numargs;
+
+ if (arg_list != Frame_unknown)
+ {
+ printf (" Arglist at 0x%x,", arg_list);
+
+ FRAME_NUM_ARGS (numargs, fi);
+ if (numargs < 0)
+ printf (" args: ");
+ else if (numargs == 0)
+ printf (" no args.");
+ else if (numargs == 1)
+ printf (" 1 arg: ");
+ else
+ printf (" %d args: ", numargs);
+ print_frame_args (func, fi, numargs, stdout);
+ printf ("\n");
+ }
+ }
+
+ /* The sp is special; what's returned isn't the save address, but
+ actually the value of the previous frame's sp. */
+ printf (" Previous frame's sp is 0x%x\n", fsr.regs[SP_REGNUM]);
+ count = 0;
+ for (i = 0; i < NUM_REGS; i++)
+ if (fsr.regs[i] && i != SP_REGNUM)
+ {
+ if (count % 4 != 0)
+ printf (", ");
+ else
+ {
+ if (count == 0)
+ printf (" Saved registers:");
+ printf ("\n ");
+ }
+ printf ("%s at 0x%x", reg_names[i], fsr.regs[i]);
+ count++;
+ }
+ if (count)
+ printf ("\n");
+}
+
+#if 0
+/* Set a limit on the number of frames printed by default in a
+ backtrace. */
+
+static int backtrace_limit;
+
+static void
+set_backtrace_limit_command (count_exp, from_tty)
+ char *count_exp;
+ int from_tty;
+{
+ int count = parse_and_eval_address (count_exp);
+
+ if (count < 0)
+ error ("Negative argument not meaningful as backtrace limit.");
+
+ backtrace_limit = count;
+}
+
+static void
+backtrace_limit_info (arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ if (arg)
+ error ("\"Info backtrace-limit\" takes no arguments.");
+
+ printf ("Backtrace limit: %d.\n", backtrace_limit);
+}
+#endif
+
+/* Print briefly all stack frames or just the innermost COUNT frames. */
+
+static void
+backtrace_command (count_exp)
+ char *count_exp;
+{
+ struct frame_info *fi;
+ register int count;
+ register FRAME frame;
+ register int i;
+ register FRAME trailing;
+ register int trailing_level;
+
+ /* The following code must do two things. First, it must
+ set the variable TRAILING to the frame from which we should start
+ printing. Second, it must set the variable count to the number
+ of frames which we should print, or -1 if all of them. */
+ trailing = get_current_frame ();
+ trailing_level = 0;
+ if (count_exp)
+ {
+ count = parse_and_eval_address (count_exp);
+ if (count < 0)
+ {
+ FRAME current;
+
+ count = -count;
+
+ current = trailing;
+ while (current && count--)
+ current = get_prev_frame (current);
+
+ /* Will stop when CURRENT reaches the top of the stack. TRAILING
+ will be COUNT below it. */
+ while (current)
+ {
+ trailing = get_prev_frame (trailing);
+ current = get_prev_frame (current);
+ trailing_level++;
+ }
+
+ count = -1;
+ }
+ }
+ else
+ count = -1;
+
+ for (i = 0, frame = trailing;
+ frame && count--;
+ i++, frame = get_prev_frame (frame))
+ {
+ QUIT;
+ fi = get_frame_info (frame);
+ print_frame_info (fi, trailing_level + i, 0, 1);
+ }
+
+ /* If we've stopped before the end, mention that. */
+ if (frame)
+ printf_filtered ("(More stack frames follow...)\n");
+}
+
+/* Print the local variables of a block B active in FRAME.
+ Return 1 if any variables were printed; 0 otherwise. */
+
+static int
+print_block_frame_locals (b, frame, stream)
+ struct block *b;
+ register FRAME frame;
+ register FILE *stream;
+{
+ int nsyms;
+ register int i;
+ register struct symbol *sym;
+ register int values_printed = 0;
+
+ nsyms = BLOCK_NSYMS (b);
+
+ for (i = 0; i < nsyms; i++)
+ {
+ sym = BLOCK_SYM (b, i);
+ if (SYMBOL_CLASS (sym) == LOC_LOCAL
+ || SYMBOL_CLASS (sym) == LOC_REGISTER
+ || SYMBOL_CLASS (sym) == LOC_STATIC)
+ {
+ values_printed = 1;
+ fputs_filtered (SYMBOL_NAME (sym), stream);
+ fputs_filtered (" = ", stream);
+ print_variable_value (sym, frame, stream);
+ fprintf_filtered (stream, "\n");
+ fflush (stream);
+ }
+ }
+ return values_printed;
+}
+
+/* Print on STREAM all the local variables in frame FRAME,
+ including all the blocks active in that frame
+ at its current pc.
+
+ Returns 1 if the job was done,
+ or 0 if nothing was printed because we have no info
+ on the function running in FRAME. */
+
+static int
+print_frame_local_vars (frame, stream)
+ register FRAME frame;
+ register FILE *stream;
+{
+ register struct block *block = get_frame_block (frame);
+ register int values_printed = 0;
+
+ if (block == 0)
+ {
+ fprintf_filtered (stream, "No symbol table info available.\n");
+ fflush (stream);
+ return 0;
+ }
+
+ while (block != 0)
+ {
+ if (print_block_frame_locals (block, frame, stream))
+ values_printed = 1;
+ /* After handling the function's top-level block, stop.
+ Don't continue to its superblock, the block of
+ per-file symbols. */
+ if (BLOCK_FUNCTION (block))
+ break;
+ block = BLOCK_SUPERBLOCK (block);
+ }
+
+ if (!values_printed)
+ {
+ fprintf_filtered (stream, "No locals.\n");
+ fflush (stream);
+ }
+
+ return 1;
+}
+
+static void
+locals_info ()
+{
+ if (!have_inferior_p () && !have_core_file_p ())
+ error ("No inferior or core file.");
+
+ print_frame_local_vars (selected_frame, stdout);
+}
+
+static int
+print_frame_arg_vars (frame, stream)
+ register FRAME frame;
+ register FILE *stream;
+{
+ struct symbol *func = get_frame_function (frame);
+ register struct block *b;
+ int nsyms;
+ register int i;
+ register struct symbol *sym;
+ register int values_printed = 0;
+
+ if (func == 0)
+ {
+ fprintf_filtered (stream, "No symbol table info available.\n");
+ fflush (stream);
+ return 0;
+ }
+
+ b = SYMBOL_BLOCK_VALUE (func);
+ nsyms = BLOCK_NSYMS (b);
+
+ for (i = 0; i < nsyms; i++)
+ {
+ sym = BLOCK_SYM (b, i);
+ if (SYMBOL_CLASS (sym) == LOC_ARG
+ || SYMBOL_CLASS (sym) == LOC_REF_ARG
+ || SYMBOL_CLASS (sym) == LOC_REGPARM)
+ {
+ values_printed = 1;
+ fputs_filtered (SYMBOL_NAME (sym), stream);
+ fputs_filtered (" = ", stream);
+ print_variable_value (sym, frame, stream);
+ fprintf_filtered (stream, "\n");
+ fflush (stream);
+ }
+ }
+
+ if (!values_printed)
+ {
+ fprintf_filtered (stream, "No arguments.\n");
+ fflush (stream);
+ }
+
+ return 1;
+}
+
+static void
+args_info ()
+{
+ if (!have_inferior_p () && !have_core_file_p ())
+ error ("No inferior or core file.");
+ print_frame_arg_vars (selected_frame, stdout);
+}
+
+/* Select frame FRAME, and note that its stack level is LEVEL.
+ LEVEL may be -1 if an actual level number is not known. */
+
+void
+select_frame (frame, level)
+ FRAME frame;
+ int level;
+{
+ selected_frame = frame;
+ selected_frame_level = level;
+ /* Ensure that symbols for this frame are readin. */
+ if (frame)
+ find_pc_symtab (get_frame_info (frame)->pc);
+}
+
+/* Store the selected frame and its level into *FRAMEP and *LEVELP. */
+
+void
+record_selected_frame (frameaddrp, levelp)
+ FRAME_ADDR *frameaddrp;
+ int *levelp;
+{
+ *frameaddrp = FRAME_FP (selected_frame);
+ *levelp = selected_frame_level;
+}
+
+/* Return the symbol-block in which the selected frame is executing.
+ Can return zero under various legitimate circumstances. */
+
+struct block *
+get_selected_block ()
+{
+ if (!have_inferior_p () && !have_core_file_p ())
+ return 0;
+
+ if (!selected_frame)
+ return get_current_block ();
+ return get_frame_block (selected_frame);
+}
+
+/* Find a frame a certain number of levels away from FRAME.
+ LEVEL_OFFSET_PTR points to an int containing the number of levels.
+ Positive means go to earlier frames (up); negative, the reverse.
+ The int that contains the number of levels is counted toward
+ zero as the frames for those levels are found.
+ If the top or bottom frame is reached, that frame is returned,
+ but the final value of *LEVEL_OFFSET_PTR is nonzero and indicates
+ how much farther the original request asked to go. */
+
+FRAME
+find_relative_frame (frame, level_offset_ptr)
+ register FRAME frame;
+ register int* level_offset_ptr;
+{
+ register FRAME prev;
+ register FRAME frame1, frame2;
+
+ /* Going up is simple: just do get_prev_frame enough times
+ or until initial frame is reached. */
+ while (*level_offset_ptr > 0)
+ {
+ prev = get_prev_frame (frame);
+ if (prev == 0)
+ break;
+ (*level_offset_ptr)--;
+ frame = prev;
+ }
+ /* Going down could be done by iterating get_frame_info to
+ find the next frame, but that would be quadratic
+ since get_frame_info must scan all the way from the current frame.
+ The following algorithm is linear. */
+ if (*level_offset_ptr < 0)
+ {
+ /* First put frame1 at innermost frame
+ and frame2 N levels up from there. */
+ frame1 = get_current_frame ();
+ frame2 = frame1;
+ while (*level_offset_ptr < 0 && frame2 != frame)
+ {
+ frame2 = get_prev_frame (frame2);
+ (*level_offset_ptr) ++;
+ }
+ /* Then slide frame1 and frame2 up in synchrony
+ and when frame2 reaches our starting point
+ frame1 must be N levels down from there. */
+ while (frame2 != frame)
+ {
+ frame1 = get_prev_frame (frame1);
+ frame2 = get_prev_frame (frame2);
+ }
+ return frame1;
+ }
+ return frame;
+}
+
+/* The "frame" command. With no arg, print selected frame briefly.
+ With arg LEVEL_EXP, select the frame at level LEVEL if it is a
+ valid level. Otherwise, treat level_exp as an address expression
+ and print it. See parse_frame_specification for more info on proper
+ frame expressions. */
+
+static void
+frame_command (level_exp, from_tty)
+ char *level_exp;
+ int from_tty;
+{
+ register FRAME frame, frame1;
+ unsigned int level = 0;
+
+ if (!have_inferior_p () && ! have_core_file_p ())
+ error ("No inferior or core file.");
+
+ frame = parse_frame_specification (level_exp);
+
+ for (frame1 = get_prev_frame (0);
+ frame1 && frame1 != frame;
+ frame1 = get_prev_frame (frame1))
+ level++;
+
+ if (!frame1)
+ level = 0;
+
+ frame_changed = level;
+ select_frame (frame, level);
+
+ if (!from_tty)
+ return;
+
+ print_stack_frame (selected_frame, selected_frame_level, 1);
+}
+
+/* Select the frame up one or COUNT stack levels
+ from the previously selected frame, and print it briefly. */
+
+static void
+up_command (count_exp)
+ char *count_exp;
+{
+ register FRAME frame;
+ int count = 1, count1;
+ if (count_exp)
+ count = parse_and_eval_address (count_exp);
+ count1 = count;
+
+ if (!have_inferior_p () && !have_core_file_p ())
+ error ("No inferior or core file.");
+
+ frame = find_relative_frame (selected_frame, &count1);
+ if (count1 != 0 && count_exp == 0)
+ error ("Initial frame selected; you cannot go up.");
+ select_frame (frame, selected_frame_level + count - count1);
+
+ print_stack_frame (selected_frame, selected_frame_level, 1);
+ frame_changed++;
+}
+
+/* Select the frame down one or COUNT stack levels
+ from the previously selected frame, and print it briefly. */
+
+static void
+down_command (count_exp)
+ char *count_exp;
+{
+ register FRAME frame;
+ int count = -1, count1;
+ if (count_exp)
+ count = - parse_and_eval_address (count_exp);
+ count1 = count;
+
+ frame = find_relative_frame (selected_frame, &count1);
+ if (count1 != 0 && count_exp == 0)
+ error ("Bottom (i.e., innermost) frame selected; you cannot go down.");
+ select_frame (frame, selected_frame_level + count - count1);
+
+ print_stack_frame (selected_frame, selected_frame_level, 1);
+ frame_changed--;
+}
+
+static void
+return_command (retval_exp, from_tty)
+ char *retval_exp;
+ int from_tty;
+{
+ value return_value;
+ struct symbol *thisfun = get_frame_function (selected_frame);
+ FRAME_ADDR selected_frame_addr = FRAME_FP (selected_frame);
+
+ /* If interactive, require confirmation. */
+
+ if (from_tty)
+ {
+ if (thisfun != 0)
+ {
+ if (!query ("Make %s return now? ", SYMBOL_NAME (thisfun)))
+ error ("Not confirmed.");
+ }
+ else
+ if (!query ("Make selected stack frame return now? "))
+ error ("Not confirmed.");
+ }
+
+ /* Do the real work. Pop until the specified frame is current. We
+ use this method because the selected_frame is not valid after
+ a POP_FRAME. Note that this will not work if the selected frame
+ shares it's fp with another frame. */
+
+ while (selected_frame_addr != FRAME_FP (get_current_frame()))
+ POP_FRAME;
+
+ /* get the return value while still in this frame */
+ if (retval_exp)
+ return_value = parse_and_eval (retval_exp);
+
+ /* Then pop that frame. */
+ POP_FRAME;
+
+ /* Store the return value if there was one */
+
+ if (retval_exp)
+ set_return_value (return_value);
+
+ /* If interactive, print the frame that is now current. */
+
+ if (from_tty)
+ frame_command ("0", 1);
+}
+
+extern struct cmd_list_element *setlist;
+
+void
+_initialize_stack ()
+{
+#if 0
+ backtrace_limit = 30;
+#endif
+
+ add_com ("return", class_stack, return_command,
+ "Make selected stack frame return to its caller.\n\
+Control remains in the debugger, but when you continue\n\
+execution will resume in the frame above the one now selected.\n\
+If an argument is given, it is an expression for the value to return.");
+
+ add_com ("up", class_stack, up_command,
+ "Select and print stack frame that called this one.\n\
+An argument says how many frames up to go.");
+
+ add_com ("down", class_stack, down_command,
+ "Select and print stack frame called by this one.\n\
+An argument says how many frames down to go.");
+ add_com_alias ("do", "down", class_stack, 1);
+
+ add_com ("frame", class_stack, frame_command,
+ "Select and print a stack frame.\n\
+With no argument, print the selected stack frame. (See also \"info frame\").\n\
+An argument specifies the frame to select.\n\
+It can be a stack frame number or the address of the frame.\n\
+With argument, nothing is printed if input is coming from\n\
+a command file or a user-defined command.");
+
+ add_com_alias ("f", "frame", class_stack, 1);
+
+ add_com ("backtrace", class_stack, backtrace_command,
+ "Print backtrace of all stack frames, or innermost COUNT frames.\n\
+With a negative argument, print outermost -COUNT frames.");
+ add_com_alias ("bt", "backtrace", class_stack, 0);
+ add_com_alias ("where", "backtrace", class_alias, 0);
+ add_info ("stack", backtrace_command,
+ "Backtrace of the stack, or innermost COUNT frames.");
+ add_info_alias ("s", "stack", 1);
+ add_info ("frame", frame_info,
+ "All about selected stack frame, or frame at ADDR.");
+ add_info_alias ("f", "frame", 1);
+ add_info ("locals", locals_info,
+ "Local variables of current stack frame.");
+ add_info ("args", args_info,
+ "Argument variables of current stack frame.");
+
+#if 0
+ add_cmd ("backtrace-limit", class_stack, set_backtrace_limit_command,
+ "Specify maximum number of frames for \"backtrace\" to print by default.",
+ &setlist);
+ add_info ("backtrace-limit", backtrace_limit_info,
+ "The maximum number of frames for \"backtrace\" to print by default.");
+#endif
+}
+
diff --git a/gnu/usr.bin/kgdb/symmisc.c b/gnu/usr.bin/kgdb/symmisc.c
new file mode 100644
index 000000000000..c8bcd2216e30
--- /dev/null
+++ b/gnu/usr.bin/kgdb/symmisc.c
@@ -0,0 +1,584 @@
+/* Do various things to symbol tables (other than lookup)), for GDB.
+ Copyright (C) 1986, 1987, 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+
+#include "defs.h"
+#include "symtab.h"
+
+#include <stdio.h>
+#include <obstack.h>
+
+static void free_symtab ();
+
+
+/* Free all the symtabs that are currently installed,
+ and all storage associated with them.
+ Leaves us in a consistent state with no symtabs installed. */
+
+void
+free_all_symtabs ()
+{
+ register struct symtab *s, *snext;
+
+ /* All values will be invalid because their types will be! */
+
+ clear_value_history ();
+ clear_displays ();
+ clear_internalvars ();
+ clear_breakpoints ();
+ set_default_breakpoint (0, 0, 0, 0);
+
+ current_source_symtab = 0;
+
+ for (s = symtab_list; s; s = snext)
+ {
+ snext = s->next;
+ free_symtab (s);
+ }
+ symtab_list = 0;
+ obstack_free (symbol_obstack, 0);
+ obstack_init (symbol_obstack);
+
+ if (misc_function_vector)
+ free (misc_function_vector);
+ misc_function_count = 0;
+ misc_function_vector = 0;
+}
+
+/* Free a struct block <- B and all the symbols defined in that block. */
+
+static void
+free_symtab_block (b)
+ struct block *b;
+{
+ register int i, n;
+ n = BLOCK_NSYMS (b);
+ for (i = 0; i < n; i++)
+ {
+ free (SYMBOL_NAME (BLOCK_SYM (b, i)));
+ free (BLOCK_SYM (b, i));
+ }
+ free (b);
+}
+
+/* Free all the storage associated with the struct symtab <- S.
+ Note that some symtabs have contents malloc'ed structure by structure,
+ while some have contents that all live inside one big block of memory,
+ and some share the contents of another symbol table and so you should
+ not free the contents on their behalf (except sometimes the linetable,
+ which maybe per symtab even when the rest is not).
+ It is s->free_code that says which alternative to use. */
+
+static void
+free_symtab (s)
+ register struct symtab *s;
+{
+ register int i, n;
+ register struct blockvector *bv;
+ register struct type *type;
+ register struct typevector *tv;
+
+ switch (s->free_code)
+ {
+ case free_nothing:
+ /* All the contents are part of a big block of memory
+ and some other symtab is in charge of freeing that block.
+ Therefore, do nothing. */
+ break;
+
+ case free_contents:
+ /* Here all the contents were malloc'ed structure by structure
+ and must be freed that way. */
+ /* First free the blocks (and their symbols. */
+ bv = BLOCKVECTOR (s);
+ n = BLOCKVECTOR_NBLOCKS (bv);
+ for (i = 0; i < n; i++)
+ free_symtab_block (BLOCKVECTOR_BLOCK (bv, i));
+ /* Free the blockvector itself. */
+ free (bv);
+ /* Free the type vector. */
+ tv = TYPEVECTOR (s);
+ free (tv);
+ /* Also free the linetable. */
+
+ case free_linetable:
+ /* Everything will be freed either by our `free_ptr'
+ or by some other symbatb, except for our linetable.
+ Free that now. */
+ free (LINETABLE (s));
+ break;
+ }
+
+ /* If there is a single block of memory to free, free it. */
+ if (s->free_ptr)
+ free (s->free_ptr);
+
+ if (s->line_charpos)
+ free (s->line_charpos);
+ free (s->filename);
+ free (s);
+}
+
+/* Convert a raw symbol-segment to a struct symtab,
+ and relocate its internal pointers so that it is valid. */
+
+/* This is how to relocate one pointer, given a name for it.
+ Works independent of the type of object pointed to. */
+#define RELOCATE(slot) (slot ? (* (char **) &slot += relocation) : 0)
+
+/* This is the inverse of RELOCATE. We use it when storing
+ a core address into a slot that has yet to be relocated. */
+#define UNRELOCATE(slot) (slot ? (* (char **) &slot -= relocation) : 0)
+
+/* During the process of relocation, this holds the amount to relocate by
+ (the address of the file's symtab data, in core in the debugger). */
+static int relocation;
+
+#define CORE_RELOCATE(slot) \
+ ((slot) += (((slot) < data_start) ? text_relocation \
+ : ((slot) < bss_start) ? data_relocation : bss_relocation))
+
+#define TEXT_RELOCATE(slot) ((slot) += text_relocation)
+
+/* Relocation amounts for addresses in the program's core image. */
+static int text_relocation, data_relocation, bss_relocation;
+
+/* Boundaries that divide program core addresses into text, data and bss;
+ used to determine which relocation amount to use. */
+static int data_start, bss_start;
+
+static void relocate_typevector ();
+static void relocate_blockvector ();
+static void relocate_type ();
+static void relocate_block ();
+static void relocate_symbol ();
+static void relocate_source ();
+
+/* Relocate a file's symseg so that all the pointers are valid C pointers.
+ Value is a `struct symtab'; but it is not suitable for direct
+ insertion into the `symtab_list' because it describes several files. */
+
+static struct symtab *
+relocate_symtab (root)
+ struct symbol_root *root;
+{
+ struct symtab *sp = (struct symtab *) xmalloc (sizeof (struct symtab));
+ bzero (sp, sizeof (struct symtab));
+
+ relocation = (int) root;
+ text_relocation = root->textrel;
+ data_relocation = root->datarel;
+ bss_relocation = root->bssrel;
+ data_start = root->databeg;
+ bss_start = root->bssbeg;
+
+ sp->filename = root->filename;
+ sp->ldsymoff = root->ldsymoff;
+ sp->language = root->language;
+ sp->compilation = root->compilation;
+ sp->version = root->version;
+ sp->blockvector = root->blockvector;
+ sp->typevector = root->typevector;
+
+ RELOCATE (TYPEVECTOR (sp));
+ RELOCATE (BLOCKVECTOR (sp));
+ RELOCATE (sp->version);
+ RELOCATE (sp->compilation);
+ RELOCATE (sp->filename);
+
+ relocate_typevector (TYPEVECTOR (sp));
+ relocate_blockvector (BLOCKVECTOR (sp));
+
+ return sp;
+}
+
+static void
+relocate_blockvector (blp)
+ register struct blockvector *blp;
+{
+ register int nblocks = BLOCKVECTOR_NBLOCKS (blp);
+ register int i;
+ for (i = 0; i < nblocks; i++)
+ RELOCATE (BLOCKVECTOR_BLOCK (blp, i));
+ for (i = 0; i < nblocks; i++)
+ relocate_block (BLOCKVECTOR_BLOCK (blp, i));
+}
+
+static void
+relocate_block (bp)
+ register struct block *bp;
+{
+ register int nsyms = BLOCK_NSYMS (bp);
+ register int i;
+
+ TEXT_RELOCATE (BLOCK_START (bp));
+ TEXT_RELOCATE (BLOCK_END (bp));
+
+ /* These two should not be recursively processed.
+ The superblock need not be because all blocks are
+ processed from relocate_blockvector.
+ The function need not be because it will be processed
+ under the block which is its scope. */
+ RELOCATE (BLOCK_SUPERBLOCK (bp));
+ RELOCATE (BLOCK_FUNCTION (bp));
+
+ for (i = 0; i < nsyms; i++)
+ RELOCATE (BLOCK_SYM (bp, i));
+
+ for (i = 0; i < nsyms; i++)
+ relocate_symbol (BLOCK_SYM (bp, i));
+}
+
+static void
+relocate_symbol (sp)
+ register struct symbol *sp;
+{
+ RELOCATE (SYMBOL_NAME (sp));
+ if (SYMBOL_CLASS (sp) == LOC_BLOCK)
+ {
+ RELOCATE (SYMBOL_BLOCK_VALUE (sp));
+ /* We can assume the block that belongs to this symbol
+ is not relocated yet, since it comes after
+ the block that contains this symbol. */
+ BLOCK_FUNCTION (SYMBOL_BLOCK_VALUE (sp)) = sp;
+ UNRELOCATE (BLOCK_FUNCTION (SYMBOL_BLOCK_VALUE (sp)));
+ }
+ else if (SYMBOL_CLASS (sp) == LOC_STATIC)
+ CORE_RELOCATE (SYMBOL_VALUE (sp));
+ else if (SYMBOL_CLASS (sp) == LOC_LABEL)
+ TEXT_RELOCATE (SYMBOL_VALUE (sp));
+ RELOCATE (SYMBOL_TYPE (sp));
+}
+
+static void
+relocate_typevector (tv)
+ struct typevector *tv;
+{
+ register int ntypes = TYPEVECTOR_NTYPES (tv);
+ register int i;
+
+ for (i = 0; i < ntypes; i++)
+ RELOCATE (TYPEVECTOR_TYPE (tv, i));
+ for (i = 0; i < ntypes; i++)
+ relocate_type (TYPEVECTOR_TYPE (tv, i));
+}
+
+/* We cannot come up with an a priori spanning tree
+ for the network of types, since types can be used
+ for many symbols and also as components of other types.
+ Therefore, we need to be able to mark types that we
+ already have relocated (or are already in the middle of relocating)
+ as in a garbage collector. */
+
+static void
+relocate_type (tp)
+ register struct type *tp;
+{
+ register int nfields = TYPE_NFIELDS (tp);
+ register int i;
+
+ RELOCATE (TYPE_NAME (tp));
+ RELOCATE (TYPE_TARGET_TYPE (tp));
+ RELOCATE (TYPE_FIELDS (tp));
+ RELOCATE (TYPE_POINTER_TYPE (tp));
+
+ for (i = 0; i < nfields; i++)
+ {
+ RELOCATE (TYPE_FIELD_TYPE (tp, i));
+ RELOCATE (TYPE_FIELD_NAME (tp, i));
+ }
+}
+
+static void
+relocate_sourcevector (svp)
+ register struct sourcevector *svp;
+{
+ register int nfiles = svp->length;
+ register int i;
+ for (i = 0; i < nfiles; i++)
+ RELOCATE (svp->source[i]);
+ for (i = 0; i < nfiles; i++)
+ relocate_source (svp->source[i]);
+}
+
+static void
+relocate_source (sp)
+ register struct source *sp;
+{
+ register int nitems = sp->contents.nitems;
+ register int i;
+
+ RELOCATE (sp->name);
+ for (i = 0; i < nitems; i++)
+ TEXT_RELOCATE (sp->contents.item[i].pc);
+}
+
+/* Read symsegs from file named NAME open on DESC,
+ make symtabs from them, and return a chain of them.
+ These symtabs are not suitable for direct use in `symtab_list'
+ because each one describes a single object file, perhaps many source files.
+ `symbol_file_command' takes each of these, makes many real symtabs
+ from it, and then frees it.
+
+ We assume DESC is prepositioned at the end of the string table,
+ just before the symsegs if there are any. */
+
+struct symtab *
+read_symsegs (desc, name)
+ int desc;
+ char *name;
+{
+ struct symbol_root root;
+ register char *data;
+ register struct symtab *sp, *sp1, *chain = 0;
+ register int len;
+
+ while (1)
+ {
+ len = myread (desc, &root, sizeof root);
+ if (len == 0 || root.format == 0)
+ break;
+ /* format 1 was ok for the original gdb, but since the size of the
+ type structure changed when C++ support was added, it can no
+ longer be used. Accept only format 2. */
+ if (root.format != 2 ||
+ root.length < sizeof root)
+ error ("\nInvalid symbol segment format code");
+ data = (char *) xmalloc (root.length);
+ bcopy (&root, data, sizeof root);
+ len = myread (desc, data + sizeof root,
+ root.length - sizeof root);
+ sp = relocate_symtab (data);
+ RELOCATE (((struct symbol_root *)data)->sourcevector);
+ relocate_sourcevector (((struct symbol_root *)data)->sourcevector);
+ sp->next = chain;
+ chain = sp;
+ sp->linetable = (struct linetable *) ((struct symbol_root *)data)->sourcevector;
+ }
+
+ return chain;
+}
+
+static int block_depth ();
+void print_spaces ();
+static void print_symbol ();
+
+void
+print_symtabs (filename)
+ char *filename;
+{
+ FILE *outfile;
+ register struct symtab *s;
+ register int i, j;
+ int len, line, blen;
+ register struct linetable *l;
+ struct blockvector *bv;
+ register struct block *b;
+ int depth;
+ struct cleanup *cleanups;
+ extern int fclose();
+
+ if (filename == 0)
+ error_no_arg ("file to write symbol data in");
+
+ filename = tilde_expand (filename);
+ make_cleanup (free, filename);
+
+ outfile = fopen (filename, "w");
+ if (outfile == 0)
+ perror_with_name (filename);
+
+ cleanups = make_cleanup (fclose, outfile);
+ immediate_quit++;
+
+ for (s = symtab_list; s; s = s->next)
+ {
+ /* First print the line table. */
+ fprintf (outfile, "Symtab for file %s\n\n", s->filename);
+ fprintf (outfile, "Line table:\n\n");
+ l = LINETABLE (s);
+ len = l->nitems;
+ for (i = 0; i < len; i++)
+ fprintf (outfile, " line %d at %x\n", l->item[i].line,
+ l->item[i].pc);
+ /* Now print the block info. */
+ fprintf (outfile, "\nBlockvector:\n\n");
+ bv = BLOCKVECTOR (s);
+ len = BLOCKVECTOR_NBLOCKS (bv);
+ for (i = 0; i < len; i++)
+ {
+ b = BLOCKVECTOR_BLOCK (bv, i);
+ depth = block_depth (b) * 2;
+ print_spaces (depth, outfile);
+ fprintf (outfile, "block #%03d (object 0x%x) ", i, b);
+ fprintf (outfile, "[0x%x..0x%x]", BLOCK_START (b), BLOCK_END (b));
+ if (BLOCK_SUPERBLOCK (b))
+ fprintf (outfile, " (under 0x%x)", BLOCK_SUPERBLOCK (b));
+ if (BLOCK_FUNCTION (b))
+ fprintf (outfile, " %s", SYMBOL_NAME (BLOCK_FUNCTION (b)));
+ fputc ('\n', outfile);
+ blen = BLOCK_NSYMS (b);
+ for (j = 0; j < blen; j++)
+ {
+ print_symbol (BLOCK_SYM (b, j), depth + 1, outfile);
+ }
+ }
+
+ fprintf (outfile, "\n\n");
+ }
+
+ immediate_quit--;
+ do_cleanups (cleanups);
+}
+
+static void
+print_symbol (symbol, depth, outfile)
+ struct symbol *symbol;
+ int depth;
+ FILE *outfile;
+{
+ print_spaces (depth, outfile);
+ if (SYMBOL_NAMESPACE (symbol) == LABEL_NAMESPACE)
+ {
+ fprintf (outfile, "label %s at 0x%x\n", SYMBOL_NAME (symbol),
+ SYMBOL_VALUE (symbol));
+ return;
+ }
+ if (SYMBOL_NAMESPACE (symbol) == STRUCT_NAMESPACE)
+ {
+ if (TYPE_NAME (SYMBOL_TYPE (symbol)))
+ {
+ type_print_1 (SYMBOL_TYPE (symbol), "", outfile, 1, depth);
+ }
+ else
+ {
+ fprintf (outfile, "%s %s = ",
+ (TYPE_CODE (SYMBOL_TYPE (symbol)) == TYPE_CODE_ENUM
+ ? "enum"
+ : (TYPE_CODE (SYMBOL_TYPE (symbol)) == TYPE_CODE_STRUCT
+ ? "struct" : "union")),
+ SYMBOL_NAME (symbol));
+ type_print_1 (SYMBOL_TYPE (symbol), "", outfile, 1, depth);
+ }
+ fprintf (outfile, ";\n");
+ }
+ else
+ {
+ if (SYMBOL_CLASS (symbol) == LOC_TYPEDEF)
+ fprintf (outfile, "typedef ");
+ if (SYMBOL_TYPE (symbol))
+ {
+ type_print_1 (SYMBOL_TYPE (symbol), SYMBOL_NAME (symbol),
+ outfile, 1, depth);
+ fprintf (outfile, "; ");
+ }
+ else
+ fprintf (outfile, "%s ", SYMBOL_NAME (symbol));
+
+ switch (SYMBOL_CLASS (symbol))
+ {
+ case LOC_CONST:
+ fprintf (outfile, "const %d (0x%x),",
+ SYMBOL_VALUE (symbol), SYMBOL_VALUE (symbol));
+ break;
+
+ case LOC_CONST_BYTES:
+ fprintf (outfile, "const %d hex bytes:",
+ TYPE_LENGTH (SYMBOL_TYPE (symbol)));
+ {
+ int i;
+ for (i = 0; i < TYPE_LENGTH (SYMBOL_TYPE (symbol)); i++)
+ fprintf (outfile, " %2x", SYMBOL_VALUE_BYTES (symbol) [i]);
+ fprintf (outfile, ",");
+ }
+ break;
+
+ case LOC_STATIC:
+ fprintf (outfile, "static at 0x%x,", SYMBOL_VALUE (symbol));
+ break;
+
+ case LOC_REGISTER:
+ fprintf (outfile, "register %d,", SYMBOL_VALUE (symbol));
+ break;
+
+ case LOC_ARG:
+ fprintf (outfile, "arg at 0x%x,", SYMBOL_VALUE (symbol));
+ break;
+
+ case LOC_REF_ARG:
+ fprintf (outfile, "reference arg at 0x%x,", SYMBOL_VALUE (symbol));
+ break;
+
+ case LOC_REGPARM:
+ fprintf (outfile, "parameter register %d,", SYMBOL_VALUE (symbol));
+ break;
+
+ case LOC_LOCAL:
+ fprintf (outfile, "local at 0x%x,", SYMBOL_VALUE (symbol));
+ break;
+
+ case LOC_TYPEDEF:
+ break;
+
+ case LOC_LABEL:
+ fprintf (outfile, "label at 0x%x", SYMBOL_VALUE (symbol));
+ break;
+
+ case LOC_BLOCK:
+ fprintf (outfile, "block (object 0x%x) starting at 0x%x,",
+ SYMBOL_VALUE (symbol),
+ BLOCK_START (SYMBOL_BLOCK_VALUE (symbol)));
+ break;
+ }
+ }
+ fprintf (outfile, "\n");
+}
+
+/* Return the nexting depth of a block within other blocks in its symtab. */
+
+static int
+block_depth (block)
+ struct block *block;
+{
+ register int i = 0;
+ while (block = BLOCK_SUPERBLOCK (block)) i++;
+ return i;
+}
+
+/*
+ * Free all partial_symtab storage.
+ */
+void
+free_all_psymtabs()
+{
+ obstack_free (psymbol_obstack, 0);
+ obstack_init (psymbol_obstack);
+ partial_symtab_list = (struct partial_symtab *) 0;
+}
+
+void
+_initialize_symmisc ()
+{
+ symtab_list = (struct symtab *) 0;
+ partial_symtab_list = (struct partial_symtab *) 0;
+
+ add_com ("printsyms", class_obscure, print_symtabs,
+ "Print dump of current symbol definitions to file OUTFILE.");
+}
+
diff --git a/gnu/usr.bin/kgdb/symseg.h b/gnu/usr.bin/kgdb/symseg.h
new file mode 100644
index 000000000000..fa31e92243ee
--- /dev/null
+++ b/gnu/usr.bin/kgdb/symseg.h
@@ -0,0 +1,523 @@
+/*-
+ * This code is derived from software copyrighted by the Free Software
+ * Foundation.
+ *
+ * Modified 1991 by Donn Seeley at UUNET Technologies, Inc.
+ * Modified 1990 by Van Jacobson at Lawrence Berkeley Laboratory.
+ *
+ * @(#)symseg.h 6.3 (Berkeley) 5/8/91
+ */
+
+/* GDB symbol table format definitions.
+ Copyright (C) 1986, 1989 Free Software Foundation, Inc.
+ Hacked by Michael Tiemann (tiemann@mcc.com)
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+/* Format of GDB symbol table data.
+ There is one symbol segment for each source file or
+ independant compilation. These segments are simply concatenated
+ to form the GDB symbol table. A zero word where the beginning
+ of a segment is expected indicates there are no more segments.
+
+Format of a symbol segment:
+
+ The symbol segment begins with a word containing 1
+ if it is in the format described here. Other formats may
+ be designed, with other code numbers.
+
+ The segment contains many objects which point at each other.
+ The pointers are offsets in bytes from the beginning of the segment.
+ Thus, each segment can be loaded into core and its pointers relocated
+ to make valid in-core pointers.
+
+ All the data objects in the segment can be found indirectly from
+ one of them, the root object, of type `struct symbol_root'.
+ It appears at the beginning of the segment.
+
+ The total size of the segment, in bytes, appears as the `length'
+ field of this object. This size includes the size of the
+ root object.
+
+ All the object data types are defined here to contain pointer types
+ appropriate for in-core use on a relocated symbol segment.
+ Casts to and from type int are required for working with
+ unrelocated symbol segments such as are found in the file.
+
+ The ldsymaddr word is filled in by the loader to contain
+ the offset (in bytes) within the ld symbol table
+ of the first nonglobal symbol from this compilation.
+ This makes it possible to match those symbols
+ (which contain line number information) reliably with
+ the segment they go with.
+
+ Core addresses within the program that appear in the symbol segment
+ are not relocated by the loader. They are inserted by the assembler
+ and apply to addresses as output by the assembler, so GDB must
+ relocate them when it loads the symbol segment. It gets the information
+ on how to relocate from the textrel, datarel, bssrel, databeg and bssbeg
+ words of the root object.
+
+ The words textrel, datarel and bssrel
+ are filled in by ld with the amounts to relocate within-the-file
+ text, data and bss addresses by; databeg and bssbeg can be
+ used to tell which kind of relocation an address needs. */
+
+enum language {language_c};
+
+struct symbol_root
+{
+ int format; /* Data format version */
+ int length; /* # bytes in this symbol segment */
+ int ldsymoff; /* Offset in ld symtab of this file's syms */
+ int textrel; /* Relocation for text addresses */
+ int datarel; /* Relocation for data addresses */
+ int bssrel; /* Relocation for bss addresses */
+ char *filename; /* Name of main source file compiled */
+ char *filedir; /* Name of directory it was reached from */
+ struct blockvector *blockvector; /* Vector of all symbol-naming blocks */
+ struct typevector *typevector; /* Vector of all data types */
+ enum language language; /* Code identifying the language used */
+ char *version; /* Version info. Not fully specified */
+ char *compilation; /* Compilation info. Not fully specified */
+ int databeg; /* Address within the file of data start */
+ int bssbeg; /* Address within the file of bss start */
+ struct sourcevector *sourcevector; /* Vector of line-number info */
+};
+
+/* All data types of symbols in the compiled program
+ are represented by `struct type' objects.
+ All of these objects are pointed to by the typevector.
+ The type vector may have empty slots that contain zero. */
+
+struct typevector
+{
+ int length; /* Number of types described */
+ struct type *type[1];
+};
+
+/* Different kinds of data types are distinguished by the `code' field. */
+
+enum type_code
+{
+ TYPE_CODE_UNDEF, /* Not used; catches errors */
+ TYPE_CODE_PTR, /* Pointer type */
+ TYPE_CODE_ARRAY, /* Array type, lower bound zero */
+ TYPE_CODE_STRUCT, /* C struct or Pascal record */
+ TYPE_CODE_UNION, /* C union or Pascal variant part */
+ TYPE_CODE_ENUM, /* Enumeration type */
+ TYPE_CODE_FUNC, /* Function type */
+ TYPE_CODE_INT, /* Integer type */
+ TYPE_CODE_FLT, /* Floating type */
+ TYPE_CODE_VOID, /* Void type (values zero length) */
+ TYPE_CODE_SET, /* Pascal sets */
+ TYPE_CODE_RANGE, /* Range (integers within spec'd bounds) */
+ TYPE_CODE_PASCAL_ARRAY, /* Array with explicit type of index */
+
+ /* C++ */
+ TYPE_CODE_MEMBER, /* Member type */
+ TYPE_CODE_METHOD, /* Method type */
+ TYPE_CODE_REF, /* C++ Reference types */
+};
+
+/* This appears in a type's flags word for an unsigned integer type. */
+#define TYPE_FLAG_UNSIGNED 1
+/* This appears in a type's flags word
+ if it is a (pointer to a|function returning a)* built in scalar type.
+ These types are never freed. */
+#define TYPE_FLAG_PERM 4
+/* This appears in a type's flags word if it is a stub type (eg. if
+ someone referenced a type that wasn't definined in a source file
+ via (struct sir_not_appearing_in_this_film *)). */
+#define TYPE_FLAG_STUB 8
+/* Set when a class has a constructor defined */
+#define TYPE_FLAG_HAS_CONSTRUCTOR 256
+/* Set when a class has a destructor defined */
+#define TYPE_FLAG_HAS_DESTRUCTOR 512
+/* Indicates that this type is a public baseclass of another class,
+ i.e. that all its public methods are available in the derived
+ class. */
+#define TYPE_FLAG_VIA_PUBLIC 1024
+/* Indicates that this type is a virtual baseclass of another class,
+ i.e. that if this class is inherited more than once by another
+ class, only one set of member variables will be included. */
+#define TYPE_FLAG_VIA_VIRTUAL 2048
+
+struct type
+{
+ /* Code for kind of type */
+ enum type_code code;
+ /* Name of this type, or zero if none.
+ This is used for printing only.
+ Type names specified as input are defined by symbols. */
+ char *name;
+ /* Length in bytes of storage for a value of this type */
+ int length;
+ /* For a pointer type, describes the type of object pointed to.
+ For an array type, describes the type of the elements.
+ For a function or method type, describes the type of the value.
+ For a range type, describes the type of the full range.
+ Unused otherwise. */
+ struct type *target_type;
+ /* Type that is a pointer to this type.
+ Zero if no such pointer-to type is known yet.
+ The debugger may add the address of such a type
+ if it has to construct one later. */
+ struct type *pointer_type;
+ /* C++: also need a reference type. */
+ struct type *reference_type;
+ struct type **arg_types;
+
+ /* Type that is a function returning this type.
+ Zero if no such function type is known here.
+ The debugger may add the address of such a type
+ if it has to construct one later. */
+ struct type *function_type;
+
+/* Handling of pointers to members:
+ TYPE_MAIN_VARIANT is used for pointer and pointer
+ to member types. Normally it the value of the address of its
+ containing type. However, for pointers to members, we must be
+ able to allocate pointer to member types and look them up
+ from some place of reference.
+ NEXT_VARIANT is the next element in the chain. */
+ struct type *main_variant, *next_variant;
+
+ /* Flags about this type. */
+ short flags;
+ /* Number of fields described for this type */
+ short nfields;
+ /* For structure and union types, a description of each field.
+ For set and pascal array types, there is one "field",
+ whose type is the domain type of the set or array.
+ For range types, there are two "fields",
+ the minimum and maximum values (both inclusive).
+ For enum types, each possible value is described by one "field".
+
+ Using a pointer to a separate array of fields
+ allows all types to have the same size, which is useful
+ because we can allocate the space for a type before
+ we know what to put in it. */
+ struct field
+ {
+ /* Position of this field, counting in bits from start of
+ containing structure. For a function type, this is the
+ position in the argument list of this argument.
+ For a range bound or enum value, this is the value itself. */
+ int bitpos;
+ /* Size of this field, in bits, or zero if not packed.
+ For an unpacked field, the field's type's length
+ says how many bytes the field occupies. */
+ int bitsize;
+ /* In a struct or enum type, type of this field.
+ In a function type, type of this argument.
+ In an array type, the domain-type of the array. */
+ struct type *type;
+ /* Name of field, value or argument.
+ Zero for range bounds and array domains. */
+ char *name;
+ } *fields;
+
+ /* C++ */
+ int *private_field_bits;
+ int *protected_field_bits;
+
+ /* Number of methods described for this type */
+ short nfn_fields;
+ /* Number of base classes this type derives from. */
+ short n_baseclasses;
+
+ /* Number of methods described for this type plus all the
+ methods that it derives from. */
+ int nfn_fields_total;
+
+ /* For classes, structures, and unions, a description of each field,
+ which consists of an overloaded name, followed by the types of
+ arguments that the method expects, and then the name after it
+ has been renamed to make it distinct. */
+ struct fn_fieldlist
+ {
+ /* The overloaded name. */
+ char *name;
+ /* The number of methods with this name. */
+ int length;
+ /* The list of methods. */
+ struct fn_field
+ {
+#if 0
+ /* The overloaded name */
+ char *name;
+#endif
+ /* The return value of the method */
+ struct type *type;
+ /* The argument list */
+ struct type **args;
+ /* The name after it has been processed */
+ char *physname;
+ /* If this is a virtual function, the offset into the vtbl-1,
+ else 0. */
+ int voffset;
+ } *fn_fields;
+
+ int *private_fn_field_bits;
+ int *protected_fn_field_bits;
+
+ } *fn_fieldlists;
+
+ unsigned char via_protected;
+ unsigned char via_public;
+
+ /* For types with virtual functions, VPTR_BASETYPE is the base class which
+ defined the virtual function table pointer. VPTR_FIELDNO is
+ the field number of that pointer in the structure.
+
+ For types that are pointer to member types, VPTR_BASETYPE
+ ifs the type that this pointer is a member of.
+
+ Unused otherwise. */
+ struct type *vptr_basetype;
+
+ int vptr_fieldno;
+
+ /* If this type has a base class, put it here.
+ If this type is a pointer type, the chain of member pointer
+ types goes here.
+ Unused otherwise.
+
+ Contrary to all maxims of C style and common sense, the baseclasses
+ are indexed from 1 to N_BASECLASSES rather than 0 to N_BASECLASSES-1
+ (i.e. BASECLASSES points to one *before* the first element of
+ the array). */
+ struct type **baseclasses;
+};
+
+/* All of the name-scope contours of the program
+ are represented by `struct block' objects.
+ All of these objects are pointed to by the blockvector.
+
+ Each block represents one name scope.
+ Each lexical context has its own block.
+
+ The first two blocks in the blockvector are special.
+ The first one contains all the symbols defined in this compilation
+ whose scope is the entire program linked together.
+ The second one contains all the symbols whose scope is the
+ entire compilation excluding other separate compilations.
+ In C, these correspond to global symbols and static symbols.
+
+ Each block records a range of core addresses for the code that
+ is in the scope of the block. The first two special blocks
+ give, for the range of code, the entire range of code produced
+ by the compilation that the symbol segment belongs to.
+
+ The blocks appear in the blockvector
+ in order of increasing starting-address,
+ and, within that, in order of decreasing ending-address.
+
+ This implies that within the body of one function
+ the blocks appear in the order of a depth-first tree walk. */
+
+struct blockvector
+{
+ /* Number of blocks in the list. */
+ int nblocks;
+ /* The blocks themselves. */
+ struct block *block[1];
+};
+
+struct block
+{
+ /* Addresses in the executable code that are in this block.
+ Note: in an unrelocated symbol segment in a file,
+ these are always zero. They can be filled in from the
+ N_LBRAC and N_RBRAC symbols in the loader symbol table. */
+ int startaddr, endaddr;
+ /* The symbol that names this block,
+ if the block is the body of a function;
+ otherwise, zero.
+ Note: In an unrelocated symbol segment in an object file,
+ this field may be zero even when the block has a name.
+ That is because the block is output before the name
+ (since the name resides in a higher block).
+ Since the symbol does point to the block (as its value),
+ it is possible to find the block and set its name properly. */
+ struct symbol *function;
+ /* The `struct block' for the containing block, or 0 if none. */
+ /* Note that in an unrelocated symbol segment in an object file
+ this pointer may be zero when the correct value should be
+ the second special block (for symbols whose scope is one compilation).
+ This is because the compiler ouptuts the special blocks at the
+ very end, after the other blocks. */
+ struct block *superblock;
+ /* A flag indicating whether or not the fucntion corresponding
+ to this block was compiled with gcc or not. If there is no
+ function corresponding to this block, this meaning of this flag
+ is undefined. (In practice it will be 1 if the block was created
+ while processing a file compiled with gcc and 0 when not). */
+ unsigned char gcc_compile_flag;
+ /* Number of local symbols. */
+ int nsyms;
+ /* The symbols. */
+ struct symbol *sym[1];
+};
+
+/* Represent one symbol name; a variable, constant, function or typedef. */
+
+/* Different name spaces for symbols. Looking up a symbol specifies
+ a namespace and ignores symbol definitions in other name spaces.
+
+ VAR_NAMESPACE is the usual namespace.
+ In C, this contains variables, function names, typedef names
+ and enum type values.
+
+ STRUCT_NAMESPACE is used in C to hold struct, union and enum type names.
+ Thus, if `struct foo' is used in a C program,
+ it produces a symbol named `foo' in the STRUCT_NAMESPACE.
+
+ LABEL_NAMESPACE may be used for names of labels (for gotos);
+ currently it is not used and labels are not recorded at all. */
+
+/* For a non-global symbol allocated statically,
+ the correct core address cannot be determined by the compiler.
+ The compiler puts an index number into the symbol's value field.
+ This index number can be matched with the "desc" field of
+ an entry in the loader symbol table. */
+
+enum namespace
+{
+ UNDEF_NAMESPACE, VAR_NAMESPACE, STRUCT_NAMESPACE, LABEL_NAMESPACE,
+};
+
+/* An address-class says where to find the value of the symbol in core. */
+
+enum address_class
+{
+ LOC_UNDEF, /* Not used; catches errors */
+ LOC_CONST, /* Value is constant int */
+ LOC_STATIC, /* Value is at fixed address */
+ LOC_REGISTER, /* Value is in register */
+ LOC_ARG, /* Value is at spec'd position in arglist */
+ LOC_REF_ARG, /* Value address is at spec'd position in */
+ /* arglist. */
+ LOC_REGPARM, /* Value is at spec'd position in register window */
+ LOC_LOCAL, /* Value is at spec'd pos in stack frame */
+ LOC_TYPEDEF, /* Value not used; definition in SYMBOL_TYPE
+ Symbols in the namespace STRUCT_NAMESPACE
+ all have this class. */
+ LOC_LABEL, /* Value is address in the code */
+ LOC_BLOCK, /* Value is address of a `struct block'.
+ Function names have this class. */
+ LOC_EXTERNAL, /* Value is at address not in this compilation.
+ This is used for .comm symbols
+ and for extern symbols within functions.
+ Inside GDB, this is changed to LOC_STATIC once the
+ real address is obtained from a loader symbol. */
+ LOC_CONST_BYTES /* Value is a constant byte-sequence. */
+};
+
+struct symbol
+{
+ /* Symbol name */
+ char *name;
+ /* Name space code. */
+ enum namespace namespace;
+ /* Address class */
+ enum address_class class;
+ /* Data type of value */
+ struct type *type;
+ /* constant value, or address if static, or register number,
+ or offset in arguments, or offset in stack frame. */
+ union
+ {
+ long value;
+ struct block *block; /* for LOC_BLOCK */
+ char *bytes; /* for LOC_CONST_BYTES */
+ }
+ value;
+};
+
+struct partial_symbol
+{
+ /* Symbol name */
+ char *name;
+ /* Name space code. */
+ enum namespace namespace;
+ /* Address class (for info_symbols) */
+ enum address_class class;
+ /* Associated partial symbol table */
+ struct partial_symtab *pst;
+ /* Value (only used for static functions currently). Done this
+ way so that we can use the struct symbol macros.
+ Note that the address of a function is SYMBOL_VALUE (pst)
+ in a partial symbol table, but BLOCK_START (SYMBOL_BLOCK_VALUE (st))
+ in a symbol table. */
+ union
+ {
+ long value;
+ }
+ value;
+};
+
+/*
+ * Vectors of all partial symbols read in from file; actually declared
+ * and used in dbxread.c.
+ */
+extern struct psymbol_allocation_list {
+ struct partial_symbol *list, *next;
+ int size;
+} global_psymbols, static_psymbols;
+
+
+/* Source-file information.
+ This describes the relation between source files and line numbers
+ and addresses in the program text. */
+
+struct sourcevector
+{
+ int length; /* Number of source files described */
+ struct source *source[1]; /* Descriptions of the files */
+};
+
+/* Each item represents a line-->pc (or the reverse) mapping. This is
+ somewhat more wasteful of space than one might wish, but since only
+ the files which are actually debugged are read in to core, we don't
+ waste much space.
+
+ Each item used to be an int; either minus a line number, or a
+ program counter. If it represents a line number, that is the line
+ described by the next program counter value. If it is positive, it
+ is the program counter at which the code for the next line starts. */
+
+struct linetable_entry
+{
+ int line;
+ CORE_ADDR pc;
+};
+
+struct linetable
+{
+ int nitems;
+ struct linetable_entry item[1];
+};
+
+/* All the information on one source file. */
+
+struct source
+{
+ char *name; /* Name of file */
+ struct linetable contents;
+};
diff --git a/gnu/usr.bin/kgdb/symtab.c b/gnu/usr.bin/kgdb/symtab.c
new file mode 100644
index 000000000000..51d1913e45c3
--- /dev/null
+++ b/gnu/usr.bin/kgdb/symtab.c
@@ -0,0 +1,2473 @@
+/*-
+ * This code is derived from software copyrighted by the Free Software
+ * Foundation.
+ *
+ * Modified 1991 by Donn Seeley at UUNET Technologies, Inc.
+ * Modified 1990 by Van Jacobson at Lawrence Berkeley Laboratory.
+ *
+ * $Header: /home/ncvs/src/gnu/usr.bin/kgdb/symtab.c,v 1.3 1995/05/30 05:01:23 rgrimes Exp $;
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)symtab.c 6.3 (Berkeley) 5/8/91";
+#endif /* not lint */
+
+/* Symbol table lookup for the GNU debugger, GDB.
+ Copyright (C) 1986, 1987, 1988, 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include <stdio.h>
+#include "defs.h"
+#include "param.h"
+#include "symtab.h"
+
+#include <obstack.h>
+#include <assert.h>
+
+char *index ();
+extern char *cplus_demangle ();
+extern struct value * value_of_this ();
+
+/* Allocate an obstack to hold objects that should be freed
+ when we load a new symbol table.
+ This includes the symbols made by dbxread
+ and the types that are not permanent. */
+
+struct obstack obstack1;
+
+struct obstack *symbol_obstack = &obstack1;
+
+/* This obstack will be used for partial_symbol objects. It can
+ probably actually be the same as the symbol_obstack above, but I'd
+ like to keep them seperate for now. If I want to later, I'll
+ replace one with the other. */
+
+struct obstack obstack2;
+
+struct obstack *psymbol_obstack = &obstack2;
+
+/* These variables point to the objects
+ representing the predefined C data types. */
+
+struct type *builtin_type_void;
+struct type *builtin_type_char;
+struct type *builtin_type_short;
+struct type *builtin_type_int;
+struct type *builtin_type_long;
+#ifdef LONG_LONG
+struct type *builtin_type_long_long;
+#endif
+struct type *builtin_type_unsigned_char;
+struct type *builtin_type_unsigned_short;
+struct type *builtin_type_unsigned_int;
+struct type *builtin_type_unsigned_long;
+#ifdef LONG_LONG
+struct type *builtin_type_unsigned_long_long;
+#endif
+struct type *builtin_type_float;
+struct type *builtin_type_double;
+
+/* Block in which the most recently searched-for symbol was found.
+ Might be better to make this a parameter to lookup_symbol and
+ value_of_this. */
+struct block *block_found;
+
+/* Functions */
+static int find_line_common ();
+int lookup_misc_func ();
+struct partial_symtab *lookup_partial_symtab ();
+struct symtab *psymtab_to_symtab ();
+static struct partial_symbol *lookup_partial_symbol ();
+
+/* Check for a symtab of a specific name; first in symtabs, then in
+ psymtabs. *If* there is no '/' in the name, a match after a '/'
+ in the symtab filename will also work. */
+
+static struct symtab *
+lookup_symtab_1 (name)
+ char *name;
+{
+ register struct symtab *s;
+ register struct partial_symtab *ps;
+ register char *slash = index (name, '/');
+ register int len = strlen (name);
+
+ for (s = symtab_list; s; s = s->next)
+ if (!strcmp (name, s->filename))
+ return s;
+
+ for (ps = partial_symtab_list; ps; ps = ps->next)
+ if (!strcmp (name, ps->filename))
+ {
+ if (ps->readin)
+ fatal ("Internal: readin pst found when no symtab found.");
+ s = psymtab_to_symtab (ps);
+ return s;
+ }
+
+ if (!slash)
+ {
+ for (s = symtab_list; s; s = s->next)
+ {
+ int l = strlen (s->filename);
+
+ if (s->filename[l - len -1] == '/'
+ && !strcmp (s->filename + l - len, name))
+ return s;
+ }
+
+ for (ps = partial_symtab_list; ps; ps = ps->next)
+ {
+ int l = strlen (ps->filename);
+
+ if (ps->filename[l - len - 1] == '/'
+ && !strcmp (ps->filename + l - len, name))
+ {
+ if (ps->readin)
+ fatal ("Internal: readin pst found when no symtab found.");
+ s = psymtab_to_symtab (ps);
+ return s;
+ }
+ }
+ }
+ return 0;
+}
+
+/* Lookup the symbol table of a source file named NAME. Try a couple
+ of variations if the first lookup doesn't work. */
+
+struct symtab *
+lookup_symtab (name)
+ char *name;
+{
+ register struct symtab *s;
+ register char *copy;
+
+ s = lookup_symtab_1 (name);
+ if (s) return s;
+
+ /* If name not found as specified, see if adding ".c" helps. */
+
+ copy = (char *) alloca (strlen (name) + 3);
+ strcpy (copy, name);
+ strcat (copy, ".c");
+ s = lookup_symtab_1 (copy);
+ if (s) return s;
+
+ /* We didn't find anything; die. */
+ return 0;
+}
+
+/* Lookup the partial symbol table of a source file named NAME. This
+ only returns true on an exact match (ie. this semantics are
+ different from lookup_symtab. */
+
+struct partial_symtab *
+lookup_partial_symtab (name)
+char *name;
+{
+ register struct partial_symtab *s;
+ register char *copy;
+
+ for (s = partial_symtab_list; s; s = s->next)
+ if (!strcmp (name, s->filename))
+ return s;
+
+ return 0;
+}
+
+/* Lookup a typedef or primitive type named NAME,
+ visible in lexical block BLOCK.
+ If NOERR is nonzero, return zero if NAME is not suitably defined. */
+
+struct type *
+lookup_typename (name, block, noerr)
+ char *name;
+ struct block *block;
+ int noerr;
+{
+ register struct symbol *sym = lookup_symbol (name, block, VAR_NAMESPACE, 0);
+ if (sym == 0 || SYMBOL_CLASS (sym) != LOC_TYPEDEF)
+ {
+ if (!strcmp (name, "int"))
+ return builtin_type_int;
+ if (!strcmp (name, "long"))
+ return builtin_type_long;
+ if (!strcmp (name, "short"))
+ return builtin_type_short;
+ if (!strcmp (name, "char"))
+ return builtin_type_char;
+ if (!strcmp (name, "float"))
+ return builtin_type_float;
+ if (!strcmp (name, "double"))
+ return builtin_type_double;
+ if (!strcmp (name, "void"))
+ return builtin_type_void;
+
+ if (noerr)
+ return 0;
+ error ("No type named %s.", name);
+ }
+ return SYMBOL_TYPE (sym);
+}
+
+struct type *
+lookup_unsigned_typename (name)
+ char *name;
+{
+ if (!strcmp (name, "int"))
+ return builtin_type_unsigned_int;
+ if (!strcmp (name, "long"))
+ return builtin_type_unsigned_long;
+ if (!strcmp (name, "short"))
+ return builtin_type_unsigned_short;
+ if (!strcmp (name, "char"))
+ return builtin_type_unsigned_char;
+ error ("No type named unsigned %s.", name);
+}
+
+/* Lookup a structure type named "struct NAME",
+ visible in lexical block BLOCK. */
+
+struct type *
+lookup_struct (name, block)
+ char *name;
+ struct block *block;
+{
+ register struct symbol *sym
+ = lookup_symbol (name, block, STRUCT_NAMESPACE, 0);
+
+ if (sym == 0)
+ error ("No struct type named %s.", name);
+ if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_STRUCT)
+ error ("This context has class, union or enum %s, not a struct.", name);
+ return SYMBOL_TYPE (sym);
+}
+
+/* Lookup a union type named "union NAME",
+ visible in lexical block BLOCK. */
+
+struct type *
+lookup_union (name, block)
+ char *name;
+ struct block *block;
+{
+ register struct symbol *sym
+ = lookup_symbol (name, block, STRUCT_NAMESPACE, 0);
+
+ if (sym == 0)
+ error ("No union type named %s.", name);
+ if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_UNION)
+ error ("This context has class, struct or enum %s, not a union.", name);
+ return SYMBOL_TYPE (sym);
+}
+
+/* Lookup an enum type named "enum NAME",
+ visible in lexical block BLOCK. */
+
+struct type *
+lookup_enum (name, block)
+ char *name;
+ struct block *block;
+{
+ register struct symbol *sym
+ = lookup_symbol (name, block, STRUCT_NAMESPACE, 0);
+ if (sym == 0)
+ error ("No enum type named %s.", name);
+ if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_ENUM)
+ error ("This context has class, struct or union %s, not an enum.", name);
+ return SYMBOL_TYPE (sym);
+}
+
+/* Given a type TYPE, lookup the type of the component of type named
+ NAME. */
+
+struct type *
+lookup_struct_elt_type (type, name)
+ struct type *type;
+ char *name;
+{
+ struct type *t;
+ int i;
+ char *errmsg;
+
+ if (TYPE_CODE (type) != TYPE_CODE_STRUCT
+ && TYPE_CODE (type) != TYPE_CODE_UNION)
+ {
+ terminal_ours ();
+ fflush (stdout);
+ fprintf (stderr, "Type ");
+ type_print (type, "", stderr, -1);
+ fprintf (stderr, " is not a structure or union type.\n");
+ return_to_top_level ();
+ }
+
+ for (i = TYPE_NFIELDS (type) - 1; i >= 0; i--)
+ if (!strcmp (TYPE_FIELD_NAME (type, i), name))
+ return TYPE_FIELD_TYPE (type, i);
+
+ terminal_ours ();
+ fflush (stdout);
+ fprintf (stderr, "Type ");
+ type_print (type, "", stderr, -1);
+ fprintf (stderr, " has no component named %s\n", name);
+ return_to_top_level ();
+}
+
+/* Given a type TYPE, return a type of pointers to that type.
+ May need to construct such a type if this is the first use.
+
+ C++: use TYPE_MAIN_VARIANT and TYPE_CHAIN to keep pointer
+ to member types under control. */
+
+struct type *
+lookup_pointer_type (type)
+ struct type *type;
+{
+ register struct type *ptype = TYPE_POINTER_TYPE (type);
+ if (ptype) return TYPE_MAIN_VARIANT (ptype);
+
+ /* This is the first time anyone wanted a pointer to a TYPE. */
+ if (TYPE_FLAGS (type) & TYPE_FLAG_PERM)
+ ptype = (struct type *) xmalloc (sizeof (struct type));
+ else
+ ptype = (struct type *) obstack_alloc (symbol_obstack,
+ sizeof (struct type));
+
+ bzero (ptype, sizeof (struct type));
+ TYPE_MAIN_VARIANT (ptype) = ptype;
+ TYPE_TARGET_TYPE (ptype) = type;
+ TYPE_POINTER_TYPE (type) = ptype;
+ /* New type is permanent if type pointed to is permanent. */
+ if (TYPE_FLAGS (type) & TYPE_FLAG_PERM)
+ TYPE_FLAGS (ptype) |= TYPE_FLAG_PERM;
+ /* We assume the machine has only one representation for pointers! */
+ TYPE_LENGTH (ptype) = sizeof (char *);
+ TYPE_CODE (ptype) = TYPE_CODE_PTR;
+ return ptype;
+}
+
+struct type *
+lookup_reference_type (type)
+ struct type *type;
+{
+ register struct type *rtype = TYPE_REFERENCE_TYPE (type);
+ if (rtype) return TYPE_MAIN_VARIANT (rtype);
+
+ /* This is the first time anyone wanted a pointer to a TYPE. */
+ if (TYPE_FLAGS (type) & TYPE_FLAG_PERM)
+ rtype = (struct type *) xmalloc (sizeof (struct type));
+ else
+ rtype = (struct type *) obstack_alloc (symbol_obstack,
+ sizeof (struct type));
+
+ bzero (rtype, sizeof (struct type));
+ TYPE_MAIN_VARIANT (rtype) = rtype;
+ TYPE_TARGET_TYPE (rtype) = type;
+ TYPE_REFERENCE_TYPE (type) = rtype;
+ /* New type is permanent if type pointed to is permanent. */
+ if (TYPE_FLAGS (type) & TYPE_FLAG_PERM)
+ TYPE_FLAGS (rtype) |= TYPE_FLAG_PERM;
+ /* We assume the machine has only one representation for pointers! */
+ TYPE_LENGTH (rtype) = sizeof (char *);
+ TYPE_CODE (rtype) = TYPE_CODE_REF;
+ return rtype;
+}
+
+
+/* Implement direct support for MEMBER_TYPE in GNU C++.
+ May need to construct such a type if this is the first use.
+ The TYPE is the type of the member. The DOMAIN is the type
+ of the aggregate that the member belongs to. */
+
+struct type *
+lookup_member_type (type, domain)
+ struct type *type, *domain;
+{
+ register struct type *mtype = TYPE_MAIN_VARIANT (type);
+ struct type *main_type;
+
+ main_type = mtype;
+ while (mtype)
+ {
+ if (TYPE_DOMAIN_TYPE (mtype) == domain)
+ return mtype;
+ mtype = TYPE_NEXT_VARIANT (mtype);
+ }
+
+ /* This is the first time anyone wanted this member type. */
+ if (TYPE_FLAGS (type) & TYPE_FLAG_PERM)
+ mtype = (struct type *) xmalloc (sizeof (struct type));
+ else
+ mtype = (struct type *) obstack_alloc (symbol_obstack,
+ sizeof (struct type));
+
+ bzero (mtype, sizeof (struct type));
+ if (main_type == 0)
+ main_type = mtype;
+ else
+ {
+ TYPE_NEXT_VARIANT (mtype) = TYPE_NEXT_VARIANT (main_type);
+ TYPE_NEXT_VARIANT (main_type) = mtype;
+ }
+ TYPE_MAIN_VARIANT (mtype) = main_type;
+ TYPE_TARGET_TYPE (mtype) = type;
+ TYPE_DOMAIN_TYPE (mtype) = domain;
+ /* New type is permanent if type pointed to is permanent. */
+ if (TYPE_FLAGS (type) & TYPE_FLAG_PERM)
+ TYPE_FLAGS (mtype) |= TYPE_FLAG_PERM;
+
+ /* In practice, this is never used. */
+ TYPE_LENGTH (mtype) = 1;
+ TYPE_CODE (mtype) = TYPE_CODE_MEMBER;
+
+#if 0
+ /* Now splice in the new member pointer type. */
+ if (main_type)
+ {
+ /* This type was not "smashed". */
+ TYPE_CHAIN (mtype) = TYPE_CHAIN (main_type);
+ TYPE_CHAIN (main_type) = mtype;
+ }
+#endif
+
+ return mtype;
+}
+
+struct type *
+lookup_method_type (type, domain, args)
+ struct type *type, *domain, **args;
+{
+ register struct type *mtype = TYPE_MAIN_VARIANT (type);
+ struct type *main_type;
+
+ main_type = mtype;
+ while (mtype)
+ {
+ if (TYPE_DOMAIN_TYPE (mtype) == domain)
+ {
+ struct type **t1 = args;
+ struct type **t2 = TYPE_ARG_TYPES (mtype);
+ if (t2)
+ {
+ int i;
+ for (i = 0; t1[i] != 0 && t1[i]->code != TYPE_CODE_VOID; i++)
+ if (t1[i] != t2[i])
+ break;
+ if (t1[i] == t2[i])
+ return mtype;
+ }
+ }
+ mtype = TYPE_NEXT_VARIANT (mtype);
+ }
+
+ /* This is the first time anyone wanted this member type. */
+ if (TYPE_FLAGS (type) & TYPE_FLAG_PERM)
+ mtype = (struct type *) xmalloc (sizeof (struct type));
+ else
+ mtype = (struct type *) obstack_alloc (symbol_obstack,
+ sizeof (struct type));
+
+ bzero (mtype, sizeof (struct type));
+ if (main_type == 0)
+ main_type = mtype;
+ else
+ {
+ TYPE_NEXT_VARIANT (mtype) = TYPE_NEXT_VARIANT (main_type);
+ TYPE_NEXT_VARIANT (main_type) = mtype;
+ }
+ TYPE_MAIN_VARIANT (mtype) = main_type;
+ TYPE_TARGET_TYPE (mtype) = type;
+ TYPE_DOMAIN_TYPE (mtype) = domain;
+ TYPE_ARG_TYPES (mtype) = args;
+ /* New type is permanent if type pointed to is permanent. */
+ if (TYPE_FLAGS (type) & TYPE_FLAG_PERM)
+ TYPE_FLAGS (mtype) |= TYPE_FLAG_PERM;
+
+ /* In practice, this is never used. */
+ TYPE_LENGTH (mtype) = 1;
+ TYPE_CODE (mtype) = TYPE_CODE_METHOD;
+
+#if 0
+ /* Now splice in the new member pointer type. */
+ if (main_type)
+ {
+ /* This type was not "smashed". */
+ TYPE_CHAIN (mtype) = TYPE_CHAIN (main_type);
+ TYPE_CHAIN (main_type) = mtype;
+ }
+#endif
+
+ return mtype;
+}
+
+/* Given a type TYPE, return a type which has offset OFFSET,
+ via_virtual VIA_VIRTUAL, and via_public VIA_PUBLIC.
+ May need to construct such a type if none exists. */
+struct type *
+lookup_basetype_type (type, offset, via_virtual, via_public)
+ struct type *type;
+ int offset;
+ int via_virtual, via_public;
+{
+ register struct type *btype = TYPE_MAIN_VARIANT (type);
+ struct type *main_type;
+
+ if (offset != 0)
+ {
+ printf ("Internal error: type offset non-zero in lookup_basetype_type");
+ offset = 0;
+ }
+
+ main_type = btype;
+ while (btype)
+ {
+ if (/* TYPE_OFFSET (btype) == offset
+ && */ TYPE_VIA_PUBLIC (btype) == via_public
+ && TYPE_VIA_VIRTUAL (btype) == via_virtual)
+ return btype;
+ btype = TYPE_NEXT_VARIANT (btype);
+ }
+
+ /* This is the first time anyone wanted this member type. */
+ if (TYPE_FLAGS (type) & TYPE_FLAG_PERM)
+ btype = (struct type *) xmalloc (sizeof (struct type));
+ else
+ btype = (struct type *) obstack_alloc (symbol_obstack,
+ sizeof (struct type));
+
+ if (main_type == 0)
+ {
+ main_type = btype;
+ bzero (btype, sizeof (struct type));
+ TYPE_MAIN_VARIANT (btype) = main_type;
+ }
+ else
+ {
+ bcopy (main_type, btype, sizeof (struct type));
+ TYPE_NEXT_VARIANT (main_type) = btype;
+ }
+/* TYPE_OFFSET (btype) = offset; */
+ if (via_public)
+ TYPE_FLAGS (btype) |= TYPE_FLAG_VIA_PUBLIC;
+ if (via_virtual)
+ TYPE_FLAGS (btype) |= TYPE_FLAG_VIA_VIRTUAL;
+ /* New type is permanent if type pointed to is permanent. */
+ if (TYPE_FLAGS (type) & TYPE_FLAG_PERM)
+ TYPE_FLAGS (btype) |= TYPE_FLAG_PERM;
+
+ /* In practice, this is never used. */
+ TYPE_LENGTH (btype) = 1;
+ TYPE_CODE (btype) = TYPE_CODE_STRUCT;
+
+ return btype;
+}
+
+/* Given a type TYPE, return a type of functions that return that type.
+ May need to construct such a type if this is the first use. */
+
+struct type *
+lookup_function_type (type)
+ struct type *type;
+{
+ register struct type *ptype = TYPE_FUNCTION_TYPE (type);
+ if (ptype) return ptype;
+
+ /* This is the first time anyone wanted a function returning a TYPE. */
+ if (TYPE_FLAGS (type) & TYPE_FLAG_PERM)
+ ptype = (struct type *) xmalloc (sizeof (struct type));
+ else
+ ptype = (struct type *) obstack_alloc (symbol_obstack,
+ sizeof (struct type));
+
+ bzero (ptype, sizeof (struct type));
+ TYPE_TARGET_TYPE (ptype) = type;
+ TYPE_FUNCTION_TYPE (type) = ptype;
+ /* New type is permanent if type returned is permanent. */
+ if (TYPE_FLAGS (type) & TYPE_FLAG_PERM)
+ TYPE_FLAGS (ptype) |= TYPE_FLAG_PERM;
+ TYPE_LENGTH (ptype) = 1;
+ TYPE_CODE (ptype) = TYPE_CODE_FUNC;
+ TYPE_NFIELDS (ptype) = 0;
+ return ptype;
+}
+
+/* Create an array type. Elements will be of type TYPE, and there will
+ be NUM of them.
+
+ Eventually this should be extended to take two more arguments which
+ specify the bounds of the array and the type of the index.
+ It should also be changed to be a "lookup" function, with the
+ appropriate data structures added to the type field.
+ Then read array type should call here. */
+
+struct type *
+create_array_type (element_type, number)
+ struct type *element_type;
+ int number;
+{
+ struct type *result_type = (struct type *)
+ obstack_alloc (symbol_obstack, sizeof (struct type));
+
+ bzero (result_type, sizeof (struct type));
+
+ TYPE_CODE (result_type) = TYPE_CODE_ARRAY;
+ TYPE_TARGET_TYPE (result_type) = element_type;
+ TYPE_LENGTH (result_type) = number * TYPE_LENGTH (element_type);
+ TYPE_NFIELDS (result_type) = 1;
+ TYPE_FIELDS (result_type) =
+ (struct field *) obstack_alloc (symbol_obstack, sizeof (struct field));
+ TYPE_FIELD_TYPE (result_type, 0) = builtin_type_int;
+ TYPE_VPTR_FIELDNO (result_type) = -1;
+
+ return result_type;
+}
+
+
+/* Smash TYPE to be a type of pointers to TO_TYPE.
+ If TO_TYPE is not permanent and has no pointer-type yet,
+ record TYPE as its pointer-type. */
+
+void
+smash_to_pointer_type (type, to_type)
+ struct type *type, *to_type;
+{
+ int type_permanent = (TYPE_FLAGS (type) & TYPE_FLAG_PERM);
+
+ bzero (type, sizeof (struct type));
+ TYPE_TARGET_TYPE (type) = to_type;
+ /* We assume the machine has only one representation for pointers! */
+ TYPE_LENGTH (type) = sizeof (char *);
+ TYPE_CODE (type) = TYPE_CODE_PTR;
+
+ TYPE_MAIN_VARIANT (type) = type;
+
+ if (type_permanent)
+ TYPE_FLAGS (type) |= TYPE_FLAG_PERM;
+
+ if (TYPE_POINTER_TYPE (to_type) == 0
+ && (!(TYPE_FLAGS (to_type) & TYPE_FLAG_PERM)
+ || type_permanent))
+ {
+ TYPE_POINTER_TYPE (to_type) = type;
+ }
+}
+
+/* Smash TYPE to be a type of members of DOMAIN with type TO_TYPE. */
+
+void
+smash_to_member_type (type, domain, to_type)
+ struct type *type, *domain, *to_type;
+{
+ bzero (type, sizeof (struct type));
+ TYPE_TARGET_TYPE (type) = to_type;
+ TYPE_DOMAIN_TYPE (type) = domain;
+
+ /* In practice, this is never needed. */
+ TYPE_LENGTH (type) = 1;
+ TYPE_CODE (type) = TYPE_CODE_MEMBER;
+
+ TYPE_MAIN_VARIANT (type) = lookup_member_type (domain, to_type);
+}
+
+/* Smash TYPE to be a type of method of DOMAIN with type TO_TYPE. */
+
+void
+smash_to_method_type (type, domain, to_type, args)
+ struct type *type, *domain, *to_type, **args;
+{
+ bzero (type, sizeof (struct type));
+ TYPE_TARGET_TYPE (type) = to_type;
+ TYPE_DOMAIN_TYPE (type) = domain;
+ TYPE_ARG_TYPES (type) = args;
+
+ /* In practice, this is never needed. */
+ TYPE_LENGTH (type) = 1;
+ TYPE_CODE (type) = TYPE_CODE_METHOD;
+
+ TYPE_MAIN_VARIANT (type) = lookup_method_type (domain, to_type, args);
+}
+
+/* Smash TYPE to be a type of reference to TO_TYPE.
+ If TO_TYPE is not permanent and has no pointer-type yet,
+ record TYPE as its pointer-type. */
+
+void
+smash_to_reference_type (type, to_type)
+ struct type *type, *to_type;
+{
+ int type_permanent = (TYPE_FLAGS (type) & TYPE_FLAG_PERM);
+
+ bzero (type, sizeof (struct type));
+ TYPE_TARGET_TYPE (type) = to_type;
+ /* We assume the machine has only one representation for pointers! */
+ TYPE_LENGTH (type) = sizeof (char *);
+ TYPE_CODE (type) = TYPE_CODE_REF;
+
+ TYPE_MAIN_VARIANT (type) = type;
+
+ if (type_permanent)
+ TYPE_FLAGS (type) |= TYPE_FLAG_PERM;
+
+ if (TYPE_REFERENCE_TYPE (to_type) == 0
+ && (!(TYPE_FLAGS (to_type) & TYPE_FLAG_PERM)
+ || type_permanent))
+ {
+ TYPE_REFERENCE_TYPE (to_type) = type;
+ }
+}
+
+/* Smash TYPE to be a type of functions returning TO_TYPE.
+ If TO_TYPE is not permanent and has no function-type yet,
+ record TYPE as its function-type. */
+
+void
+smash_to_function_type (type, to_type)
+ struct type *type, *to_type;
+{
+ int type_permanent = (TYPE_FLAGS (type) & TYPE_FLAG_PERM);
+
+ bzero (type, sizeof (struct type));
+ TYPE_TARGET_TYPE (type) = to_type;
+ TYPE_LENGTH (type) = 1;
+ TYPE_CODE (type) = TYPE_CODE_FUNC;
+ TYPE_NFIELDS (type) = 0;
+
+ if (type_permanent)
+ TYPE_FLAGS (type) |= TYPE_FLAG_PERM;
+
+ if (TYPE_FUNCTION_TYPE (to_type) == 0
+ && (!(TYPE_FLAGS (to_type) & TYPE_FLAG_PERM)
+ || type_permanent))
+ {
+ TYPE_FUNCTION_TYPE (to_type) = type;
+ }
+}
+
+/* Find which partial symtab on the partial_symtab_list contains
+ PC. Return 0 if none. */
+
+struct partial_symtab *
+find_pc_psymtab (pc)
+ register CORE_ADDR pc;
+{
+ register struct partial_symtab *ps;
+
+ for (ps = partial_symtab_list; ps; ps = ps->next)
+ if (pc >= ps->textlow && pc < ps->texthigh)
+ return ps;
+
+ return 0;
+}
+
+/* Find which partial symbol within a psymtab contains PC. Return 0
+ if none. Check all psymtabs if PSYMTAB is 0. */
+struct partial_symbol *
+find_pc_psymbol (psymtab, pc)
+ struct partial_symtab *psymtab;
+ CORE_ADDR pc;
+{
+ struct partial_symbol *best, *p;
+ int best_pc;
+
+ if (!psymtab)
+ psymtab = find_pc_psymtab (pc);
+ if (!psymtab)
+ return 0;
+
+ best_pc = psymtab->textlow - 1;
+
+ for (p = static_psymbols.list + psymtab->statics_offset;
+ (p - (static_psymbols.list + psymtab->statics_offset)
+ < psymtab->n_static_syms);
+ p++)
+ if (SYMBOL_NAMESPACE (p) == VAR_NAMESPACE
+ && SYMBOL_CLASS (p) == LOC_BLOCK
+ && pc >= SYMBOL_VALUE (p)
+ && SYMBOL_VALUE (p) > best_pc)
+ {
+ best_pc = SYMBOL_VALUE (p);
+ best = p;
+ }
+ if (best_pc == psymtab->textlow - 1)
+ return 0;
+ return best;
+}
+
+
+static struct symbol *lookup_block_symbol ();
+
+/* Find the definition for a specified symbol name NAME
+ in namespace NAMESPACE, visible from lexical block BLOCK.
+ Returns the struct symbol pointer, or zero if no symbol is found.
+ C++: if IS_A_FIELD_OF_THIS is nonzero on entry, check to see if
+ NAME is a field of the current implied argument `this'. If so set
+ *IS_A_FIELD_OF_THIS to 1, otherwise set it to zero.
+ BLOCK_FOUND is set to the block in which NAME is found (in the case of
+ a field of `this', value_of_this sets BLOCK_FOUND to the proper value.) */
+
+struct symbol *
+lookup_symbol (name, block, namespace, is_a_field_of_this)
+ char *name;
+ register struct block *block;
+ enum namespace namespace;
+ int *is_a_field_of_this;
+{
+ register int i, n;
+ register struct symbol *sym;
+ register struct symtab *s;
+ register struct partial_symtab *ps;
+ register struct partial_symbol *psym;
+ struct blockvector *bv;
+
+ /* Search specified block and its superiors. */
+
+ while (block != 0)
+ {
+ sym = lookup_block_symbol (block, name, namespace);
+ if (sym)
+ {
+ block_found = block;
+ return sym;
+ }
+ block = BLOCK_SUPERBLOCK (block);
+ }
+
+ /* C++: If requested to do so by the caller,
+ check to see if NAME is a field of `this'. */
+ if (is_a_field_of_this)
+ {
+ struct value *v = value_of_this (0);
+
+ *is_a_field_of_this = 0;
+ if (v && check_field (v, name))
+ {
+ *is_a_field_of_this = 1;
+ return 0;
+ }
+ }
+
+ /* Now search all global blocks. Do the symtab's first, then
+ check the psymtab's */
+
+ for (s = symtab_list; s; s = s->next)
+ {
+ bv = BLOCKVECTOR (s);
+ block = BLOCKVECTOR_BLOCK (bv, 0);
+ sym = lookup_block_symbol (block, name, namespace);
+ if (sym)
+ {
+ block_found = block;
+ return sym;
+ }
+ }
+
+ /* Check for the possibility of the symbol being a global function
+ that is stored on the misc function vector. Eventually, all
+ global symbols might be resolved in this way. */
+
+ if (namespace == VAR_NAMESPACE)
+ {
+ int index = lookup_misc_func (name);
+
+ if (index == -1)
+ { /* Look for a mangled C++ name for NAME. */
+ int name_len = strlen (name);
+ for (index = misc_function_count; --index >= 0; )
+ /* Assume orginal name is prefix of mangled name. */
+ if (!strncmp (misc_function_vector[index].name, name, name_len))
+ {
+ char *demangled =
+ cplus_demangle(misc_function_vector[index].name, -1);
+ if (demangled != NULL)
+ {
+ int cond = strcmp (demangled, name);
+ free (demangled);
+ if (!cond)
+ break;
+ }
+ }
+ /* Loop terminates on no match with index == -1. */
+ }
+
+ if (index != -1)
+ {
+ ps = find_pc_psymtab (misc_function_vector[index].address);
+ if (ps && !ps->readin)
+ {
+ s = psymtab_to_symtab (ps);
+ bv = BLOCKVECTOR (s);
+ block = BLOCKVECTOR_BLOCK (bv, 0);
+ sym = lookup_block_symbol (block, name, namespace);
+ /* sym == 0 if symbol was found in the psymtab but not
+ in the symtab.
+ Return 0 to use the misc_function definition of "foo_".
+
+ This happens for Fortran "foo_" symbols,
+ which are "foo" in the symtab.
+
+ This can also happen if "asm" is used to make a
+ regular symbol but not a debugging symbol, e.g.
+ asm(".globl _main");
+ asm("_main:");
+ */
+
+ return sym;
+ }
+ }
+ }
+
+ if (psym = lookup_partial_symbol (name, 1, namespace))
+ {
+ ps = psym->pst;
+ s = psymtab_to_symtab(ps);
+ bv = BLOCKVECTOR (s);
+ block = BLOCKVECTOR_BLOCK (bv, 0);
+ sym = lookup_block_symbol (block, name, namespace);
+ if (!sym)
+ fatal ("Internal: global symbol found in psymtab but not in symtab");
+ return sym;
+ }
+
+ /* Now search all per-file blocks.
+ Not strictly correct, but more useful than an error.
+ Do the symtabs first, then check the psymtabs */
+
+ for (s = symtab_list; s; s = s->next)
+ {
+ bv = BLOCKVECTOR (s);
+ block = BLOCKVECTOR_BLOCK (bv, 1);
+ sym = lookup_block_symbol (block, name, namespace);
+ if (sym)
+ {
+ block_found = block;
+ return sym;
+ }
+ }
+
+ if (psym = lookup_partial_symbol(name, 0, namespace))
+ {
+ ps = psym->pst;
+ s = psymtab_to_symtab(ps);
+ bv = BLOCKVECTOR (s);
+ block = BLOCKVECTOR_BLOCK (bv, 1);
+ sym = lookup_block_symbol (block, name, namespace);
+ if (!sym)
+ fatal ("Internal: static symbol found in psymtab but not in symtab");
+ return sym;
+ }
+
+ return 0;
+}
+
+/* Look, in partial_symtab PST, for symbol NAME. Check the global
+ symbols if GLOBAL, the static symbols if not */
+
+static struct partial_symbol *
+lookup_partial_symbol (name, global, namespace)
+ register char *name;
+ register int global;
+ register enum namespace namespace;
+{
+ register struct partial_symbol *start, *psym;
+ register struct partial_symbol *top, *bottom, *center;
+ register struct partial_symtab *pst;
+ register int length;
+
+ if (global)
+ {
+ start = global_psymbols.list;
+ length = global_psymbols.next - start;
+ }
+ else
+ {
+ start = static_psymbols.list;
+ length = static_psymbols.next - start;
+ }
+
+ if (!length)
+ return (struct partial_symbol *) 0;
+
+ /* Binary search. This search is guarranteed to end with center
+ pointing at the earliest partial symbol with the correct
+ name. At that point *all* partial symbols with that name
+ will be checked against the correct namespace. */
+ bottom = start;
+ top = start + length - 1;
+ while (top > bottom)
+ {
+ center = bottom + (top - bottom) / 2;
+
+ assert (center < top);
+
+ if (strcmp (SYMBOL_NAME (center), name) >= 0)
+ top = center;
+ else
+ bottom = center + 1;
+ }
+ assert (top == bottom);
+
+ while (strcmp (SYMBOL_NAME (top), name) == 0)
+ {
+ if (!top->pst->readin && SYMBOL_NAMESPACE (top) == namespace)
+ return top;
+ top ++;
+ }
+
+ return (struct partial_symbol *) 0;
+}
+
+/* Look for a symbol in block BLOCK. */
+
+static struct symbol *
+lookup_block_symbol (block, name, namespace)
+ register struct block *block;
+ char *name;
+ enum namespace namespace;
+{
+ register int bot, top, inc;
+ register struct symbol *sym, *parameter_sym;
+
+ top = BLOCK_NSYMS (block);
+ bot = 0;
+
+ /* If the blocks's symbols were sorted, start with a binary search. */
+
+ if (BLOCK_SHOULD_SORT (block))
+ {
+ /* First, advance BOT to not far before
+ the first symbol whose name is NAME. */
+
+ while (1)
+ {
+ inc = (top - bot + 1);
+ /* No need to keep binary searching for the last few bits worth. */
+ if (inc < 4)
+ break;
+ inc = (inc >> 1) + bot;
+ sym = BLOCK_SYM (block, inc);
+ if (SYMBOL_NAME (sym)[0] < name[0])
+ bot = inc;
+ else if (SYMBOL_NAME (sym)[0] > name[0])
+ top = inc;
+ else if (strcmp (SYMBOL_NAME (sym), name) < 0)
+ bot = inc;
+ else
+ top = inc;
+ }
+
+ /* Now scan forward until we run out of symbols,
+ find one whose name is greater than NAME,
+ or find one we want.
+ If there is more than one symbol with the right name and namespace,
+ we return the first one. dbxread.c is careful to make sure
+ that if one is a register then it comes first. */
+
+ top = BLOCK_NSYMS (block);
+ while (bot < top)
+ {
+ sym = BLOCK_SYM (block, bot);
+ inc = SYMBOL_NAME (sym)[0] - name[0];
+ if (inc == 0)
+ inc = strcmp (SYMBOL_NAME (sym), name);
+ if (inc == 0 && SYMBOL_NAMESPACE (sym) == namespace)
+ return sym;
+ if (inc > 0)
+ return 0;
+ bot++;
+ }
+ return 0;
+ }
+
+ /* Here if block isn't sorted.
+ This loop is equivalent to the loop above,
+ but hacked greatly for speed.
+
+ Note that parameter symbols do not always show up last in the
+ list; this loop makes sure to take anything else other than
+ parameter symbols first; it only uses parameter symbols as a
+ last resort. Note that this only takes up extra computation
+ time on a match. */
+
+ parameter_sym = (struct symbol *) 0;
+ top = BLOCK_NSYMS (block);
+ inc = name[0];
+ while (bot < top)
+ {
+ sym = BLOCK_SYM (block, bot);
+ if (SYMBOL_NAME (sym)[0] == inc
+ && !strcmp (SYMBOL_NAME (sym), name)
+ && SYMBOL_NAMESPACE (sym) == namespace)
+ {
+ if (SYMBOL_CLASS (sym) == LOC_ARG
+ || SYMBOL_CLASS (sym) == LOC_REF_ARG
+ || SYMBOL_CLASS (sym) == LOC_REGPARM)
+ parameter_sym = sym;
+ else
+ return sym;
+ }
+ bot++;
+ }
+ return parameter_sym; /* Will be 0 if not found. */
+}
+
+/* Return the symbol for the function which contains a specified
+ lexical block, described by a struct block BL. */
+
+struct symbol *
+block_function (bl)
+ struct block *bl;
+{
+ while (BLOCK_FUNCTION (bl) == 0 && BLOCK_SUPERBLOCK (bl) != 0)
+ bl = BLOCK_SUPERBLOCK (bl);
+
+ return BLOCK_FUNCTION (bl);
+}
+
+/* Subroutine of find_pc_line */
+
+struct symtab *
+find_pc_symtab (pc)
+ register CORE_ADDR pc;
+{
+ register struct block *b;
+ struct blockvector *bv;
+ register struct symtab *s;
+ register struct partial_symtab *ps;
+
+ /* Search all symtabs for one whose file contains our pc */
+
+ for (s = symtab_list; s; s = s->next)
+ {
+ bv = BLOCKVECTOR (s);
+ b = BLOCKVECTOR_BLOCK (bv, 0);
+ if (BLOCK_START (b) <= pc
+ && BLOCK_END (b) > pc)
+ break;
+ }
+
+ if (!s)
+ {
+ ps = find_pc_psymtab (pc);
+ if (ps && ps->readin)
+ fatal ("Internal error: pc in read in psymtab, but not in symtab.");
+
+ if (ps)
+ s = psymtab_to_symtab (ps);
+ }
+
+ return s;
+}
+
+/* Find the source file and line number for a given PC value.
+ Return a structure containing a symtab pointer, a line number,
+ and a pc range for the entire source line.
+ The value's .pc field is NOT the specified pc.
+ NOTCURRENT nonzero means, if specified pc is on a line boundary,
+ use the line that ends there. Otherwise, in that case, the line
+ that begins there is used. */
+
+struct symtab_and_line
+find_pc_line (pc, notcurrent)
+ CORE_ADDR pc;
+ int notcurrent;
+{
+ struct symtab *s;
+ register struct linetable *l;
+ register int len;
+ register int i;
+ register struct linetable_entry *item;
+ struct symtab_and_line value;
+ struct blockvector *bv;
+
+ /* Info on best line seen so far, and where it starts, and its file. */
+
+ int best_line = 0;
+ CORE_ADDR best_pc = 0;
+ CORE_ADDR best_end = 0;
+ struct symtab *best_symtab = 0;
+
+ /* Store here the first line number
+ of a file which contains the line at the smallest pc after PC.
+ If we don't find a line whose range contains PC,
+ we will use a line one less than this,
+ with a range from the start of that file to the first line's pc. */
+ int alt_line = 0;
+ CORE_ADDR alt_pc = 0;
+ struct symtab *alt_symtab = 0;
+
+ /* Info on best line seen in this file. */
+
+ int prev_line;
+ CORE_ADDR prev_pc;
+
+ /* Info on first line of this file. */
+
+ int first_line;
+ CORE_ADDR first_pc;
+
+ /* If this pc is not from the current frame,
+ it is the address of the end of a call instruction.
+ Quite likely that is the start of the following statement.
+ But what we want is the statement containing the instruction.
+ Fudge the pc to make sure we get that. */
+
+ if (notcurrent) pc -= 1;
+
+ s = find_pc_symtab (pc);
+ if (s == 0)
+ {
+ value.symtab = 0;
+ value.line = 0;
+ value.pc = pc;
+ value.end = 0;
+ return value;
+ }
+
+ bv = BLOCKVECTOR (s);
+
+ /* Look at all the symtabs that share this blockvector.
+ They all have the same apriori range, that we found was right;
+ but they have different line tables. */
+
+ for (; s && BLOCKVECTOR (s) == bv; s = s->next)
+ {
+ /* Find the best line in this symtab. */
+ l = LINETABLE (s);
+ len = l->nitems;
+ prev_line = -1;
+ first_line = -1;
+ for (i = 0; i < len; i++)
+ {
+ item = &(l->item[i]);
+
+ if (first_line < 0)
+ {
+ first_line = item->line;
+ first_pc = item->pc;
+ }
+ /* Return the last line that did not start after PC. */
+ if (pc >= item->pc)
+ {
+ prev_line = item->line;
+ prev_pc = item->pc;
+ }
+ else
+ break;
+ }
+
+ /* Is this file's best line closer than the best in the other files?
+ If so, record this file, and its best line, as best so far. */
+ if (prev_line >= 0 && prev_pc > best_pc)
+ {
+ best_pc = prev_pc;
+ best_line = prev_line;
+ best_symtab = s;
+ if (i < len)
+ best_end = item->pc;
+ else
+ best_end = 0;
+ }
+ /* Is this file's first line closer than the first lines of other files?
+ If so, record this file, and its first line, as best alternate. */
+ if (first_line >= 0 && first_pc > pc
+ && (alt_pc == 0 || first_pc < alt_pc))
+ {
+ alt_pc = first_pc;
+ alt_line = first_line;
+ alt_symtab = s;
+ }
+ }
+ if (best_symtab == 0)
+ {
+ value.symtab = alt_symtab;
+ value.line = alt_line - 1;
+ value.pc = BLOCK_END (BLOCKVECTOR_BLOCK (bv, 0));
+ value.end = alt_pc;
+ }
+ else
+ {
+ value.symtab = best_symtab;
+ value.line = best_line;
+ value.pc = best_pc;
+ value.end = (best_end ? best_end
+ : (alt_pc ? alt_pc
+ : BLOCK_END (BLOCKVECTOR_BLOCK (bv, 0))));
+ }
+ return value;
+}
+
+/* Find the PC value for a given source file and line number.
+ Returns zero for invalid line number.
+ The source file is specified with a struct symtab. */
+
+CORE_ADDR
+find_line_pc (symtab, line)
+ struct symtab *symtab;
+ int line;
+{
+ register struct linetable *l;
+ register int index;
+ int dummy;
+
+ if (symtab == 0)
+ return 0;
+ l = LINETABLE (symtab);
+ index = find_line_common(l, line, &dummy);
+ return index ? l->item[index].pc : 0;
+}
+
+/* Find the range of pc values in a line.
+ Store the starting pc of the line into *STARTPTR
+ and the ending pc (start of next line) into *ENDPTR.
+ Returns 1 to indicate success.
+ Returns 0 if could not find the specified line. */
+
+int
+find_line_pc_range (symtab, thisline, startptr, endptr)
+ struct symtab *symtab;
+ int thisline;
+ CORE_ADDR *startptr, *endptr;
+{
+ register struct linetable *l;
+ register int index;
+ int exact_match; /* did we get an exact linenumber match */
+ register CORE_ADDR prev_pc;
+ CORE_ADDR last_pc;
+
+ if (symtab == 0)
+ return 0;
+
+ l = LINETABLE (symtab);
+ index = find_line_common (l, thisline, &exact_match);
+ if (index)
+ {
+ *startptr = l->item[index].pc;
+ /* If we have not seen an entry for the specified line,
+ assume that means the specified line has zero bytes. */
+ if (!exact_match || index == l->nitems-1)
+ *endptr = *startptr;
+ else
+ /* Perhaps the following entry is for the following line.
+ It's worth a try. */
+ if (l->item[index+1].line == thisline + 1)
+ *endptr = l->item[index+1].pc;
+ else
+ *endptr = find_line_pc (symtab, thisline+1);
+ return 1;
+ }
+
+ return 0;
+}
+
+/* Given a line table and a line number, return the index into the line
+ table for the pc of the nearest line whose number is >= the specified one.
+ Return 0 if none is found. The value is never zero is it is an index.
+
+ Set *EXACT_MATCH nonzero if the value returned is an exact match. */
+
+static int
+find_line_common (l, lineno, exact_match)
+ register struct linetable *l;
+ register int lineno;
+ int *exact_match;
+{
+ register int i;
+ register int len;
+
+ /* BEST is the smallest linenumber > LINENO so far seen,
+ or 0 if none has been seen so far.
+ BEST_INDEX identifies the item for it. */
+
+ int best_index = 0;
+ int best = 0;
+
+ int nextline = -1;
+
+ if (lineno <= 0)
+ return 0;
+
+ len = l->nitems;
+ for (i = 0; i < len; i++)
+ {
+ register struct linetable_entry *item = &(l->item[i]);
+
+ if (item->line == lineno)
+ {
+ *exact_match = 1;
+ return i;
+ }
+
+ if (item->line > lineno && (best == 0 || item->line < best))
+ {
+ best = item->line;
+ best_index = i;
+ }
+ }
+
+ /* If we got here, we didn't get an exact match. */
+
+ *exact_match = 0;
+ return best_index;
+}
+
+int
+find_pc_line_pc_range (pc, startptr, endptr)
+ CORE_ADDR pc;
+ CORE_ADDR *startptr, *endptr;
+{
+ struct symtab_and_line sal;
+ sal = find_pc_line (pc, 0);
+ *startptr = sal.pc;
+ *endptr = sal.end;
+ return sal.symtab != 0;
+}
+
+/* Parse a string that specifies a line number.
+ Pass the address of a char * variable; that variable will be
+ advanced over the characters actually parsed.
+
+ The string can be:
+
+ LINENUM -- that line number in current file. PC returned is 0.
+ FILE:LINENUM -- that line in that file. PC returned is 0.
+ FUNCTION -- line number of openbrace of that function.
+ PC returned is the start of the function.
+ FILE:FUNCTION -- likewise, but prefer functions in that file.
+ *EXPR -- line in which address EXPR appears.
+
+ FUNCTION may be an undebuggable function found in misc_function_vector.
+
+ If the argument FUNFIRSTLINE is nonzero, we want the first line
+ of real code inside a function when a function is specified.
+
+ DEFAULT_SYMTAB specifies the file to use if none is specified.
+ It defaults to current_source_symtab.
+ DEFAULT_LINE specifies the line number to use for relative
+ line numbers (that start with signs). Defaults to current_source_line.
+
+ Note that it is possible to return zero for the symtab
+ if no file is validly specified. Callers must check that.
+ Also, the line number returned may be invalid. */
+
+struct symtabs_and_lines
+decode_line_1 (argptr, funfirstline, default_symtab, default_line)
+ char **argptr;
+ int funfirstline;
+ struct symtab *default_symtab;
+ int default_line;
+{
+ struct symtabs_and_lines decode_line_2 ();
+ struct symtabs_and_lines values;
+ struct symtab_and_line value;
+ register char *p, *p1;
+ register struct symtab *s;
+ register struct symbol *sym;
+ register CORE_ADDR pc;
+ register int i;
+ char *copy;
+ struct symbol *sym_class;
+ char *class_name, *method_name, *phys_name;
+ int method_counter;
+ int i1;
+ struct symbol **sym_arr;
+ struct type *t, *field;
+ char **physnames;
+
+ /* Defaults have defaults. */
+
+ if (default_symtab == 0)
+ {
+ default_symtab = current_source_symtab;
+ default_line = current_source_line;
+ }
+
+ /* See if arg is *PC */
+
+ if (**argptr == '*')
+ {
+ (*argptr)++;
+ pc = parse_and_eval_address_1 (argptr);
+ values.sals = (struct symtab_and_line *)
+ malloc (sizeof (struct symtab_and_line));
+ values.nelts = 1;
+ values.sals[0] = find_pc_line (pc, 0);
+ values.sals[0].pc = pc;
+ return values;
+ }
+
+ /* Maybe arg is FILE : LINENUM or FILE : FUNCTION */
+
+ s = 0;
+
+ for (p = *argptr; *p; p++)
+ {
+ if (p[0] == ':' || p[0] == ' ' || p[0] == '\t')
+ break;
+ }
+ while (p[0] == ' ' || p[0] == '\t') p++;
+
+ if (p[0] == ':')
+ {
+
+ /* C++ */
+ if (p[1] ==':')
+ {
+ /* Extract the class name. */
+ p1 = p;
+ while (p != *argptr && p[-1] == ' ') --p;
+ copy = (char *) alloca (p - *argptr + 1);
+ bcopy (*argptr, copy, p - *argptr);
+ copy[p - *argptr] = 0;
+
+ /* Discard the class name from the arg. */
+ p = p1 + 2;
+ while (*p == ' ' || *p == '\t') p++;
+ *argptr = p;
+
+ sym_class = lookup_symbol (copy, 0, STRUCT_NAMESPACE, 0);
+
+ if (sym_class &&
+ (TYPE_CODE (SYMBOL_TYPE (sym_class)) == TYPE_CODE_STRUCT
+ || TYPE_CODE (SYMBOL_TYPE (sym_class)) == TYPE_CODE_UNION))
+ {
+ /* Arg token is not digits => try it as a function name
+ Find the next token (everything up to end or next whitespace). */
+ p = *argptr;
+ while (*p && *p != ' ' && *p != '\t' && *p != ',' && *p !=':') p++;
+ copy = (char *) alloca (p - *argptr + 1);
+ bcopy (*argptr, copy, p - *argptr);
+ copy[p - *argptr] = '\0';
+
+ /* no line number may be specified */
+ while (*p == ' ' || *p == '\t') p++;
+ *argptr = p;
+
+ sym = 0;
+ i1 = 0; /* counter for the symbol array */
+ t = SYMBOL_TYPE (sym_class);
+ sym_arr = (struct symbol **) alloca(TYPE_NFN_FIELDS_TOTAL (t) * sizeof(struct symbol*));
+ physnames = (char **) alloca (TYPE_NFN_FIELDS_TOTAL (t) * sizeof(char*));
+
+ if (destructor_name_p (copy, t))
+ {
+ /* destructors are a special case. */
+ struct fn_field *f = TYPE_FN_FIELDLIST1 (t, 0);
+ int len = TYPE_FN_FIELDLIST_LENGTH (t, 0) - 1;
+ phys_name = TYPE_FN_FIELD_PHYSNAME (f, len);
+ physnames[i1] = (char *)alloca (strlen (phys_name) + 1);
+ strcpy (physnames[i1], phys_name);
+ sym_arr[i1] = lookup_symbol (phys_name, SYMBOL_BLOCK_VALUE (sym_class), VAR_NAMESPACE, 0);
+ if (sym_arr[i1]) i1++;
+ }
+ else while (t)
+ {
+ class_name = TYPE_NAME (t);
+ /* Ignore this class if it doesn't have a name.
+ This prevents core dumps, but is just a workaround
+ because we might not find the function in
+ certain cases, such as
+ struct D {virtual int f();}
+ struct C : D {virtual int g();}
+ (in this case g++ 1.35.1- does not put out a name
+ for D as such, it defines type 19 (for example) in
+ the same stab as C, and then does a
+ .stabs "D:T19" and a .stabs "D:t19".
+ Thus
+ "break C::f" should not be looking for field f in
+ the class named D,
+ but just for the field f in the baseclasses of C
+ (no matter what their names).
+
+ However, I don't know how to replace the code below
+ that depends on knowing the name of D. */
+ if (class_name)
+ {
+ /* We just want the class name. In the context
+ of C++, stripping off "struct " is always
+ sensible. */
+ if (strncmp("struct ", class_name, 7) == 0)
+ class_name += 7;
+ if (strncmp("union ", class_name, 6) == 0)
+ class_name += 6;
+
+ sym_class = lookup_symbol (class_name, 0, STRUCT_NAMESPACE, 0);
+ for (method_counter = TYPE_NFN_FIELDS (SYMBOL_TYPE (sym_class)) - 1;
+ method_counter >= 0;
+ --method_counter)
+ {
+ int field_counter;
+ struct fn_field *f =
+ TYPE_FN_FIELDLIST1 (SYMBOL_TYPE (sym_class), method_counter);
+
+ method_name = TYPE_FN_FIELDLIST_NAME (SYMBOL_TYPE (sym_class), method_counter);
+ if (!strcmp (copy, method_name))
+ /* Find all the fields with that name. */
+ for (field_counter = TYPE_FN_FIELDLIST_LENGTH (SYMBOL_TYPE (sym_class), method_counter) - 1;
+ field_counter >= 0;
+ --field_counter)
+ {
+ phys_name = TYPE_FN_FIELD_PHYSNAME (f, field_counter);
+ physnames[i1] = (char*) alloca (strlen (phys_name) + 1);
+ strcpy (physnames[i1], phys_name);
+ sym_arr[i1] = lookup_symbol (phys_name, SYMBOL_BLOCK_VALUE (sym_class), VAR_NAMESPACE, 0);
+ if (sym_arr[i1]) i1++;
+ }
+ }
+ }
+ if (TYPE_N_BASECLASSES (t))
+ t = TYPE_BASECLASS(t, 1);
+ else
+ break;
+ }
+
+ if (i1 == 1)
+ {
+ /* There is exactly one field with that name. */
+ sym = sym_arr[0];
+
+ if (sym && SYMBOL_CLASS (sym) == LOC_BLOCK)
+ {
+ /* Arg is the name of a function */
+ pc = BLOCK_START (SYMBOL_BLOCK_VALUE (sym)) + FUNCTION_START_OFFSET;
+ if (funfirstline)
+ SKIP_PROLOGUE (pc);
+ values.sals = (struct symtab_and_line *)malloc (sizeof (struct symtab_and_line));
+ values.nelts = 1;
+ values.sals[0] = find_pc_line (pc, 0);
+ values.sals[0].pc = (values.sals[0].end && values.sals[0].pc != pc) ? values.sals[0].end : pc;
+ }
+ else
+ {
+ values.nelts = 0;
+ }
+ return values;
+ }
+ if (i1 > 0)
+ {
+ /* There is more than one field with that name
+ (overloaded). Ask the user which one to use. */
+ return decode_line_2 (argptr, sym_arr, physnames,
+ i1, funfirstline);
+ }
+ else
+ error ("that class does not have any method named %s",copy);
+ }
+ else
+ error("no class, struct, or union named %s", copy );
+ }
+ /* end of C++ */
+
+
+ /* Extract the file name. */
+ p1 = p;
+ while (p != *argptr && p[-1] == ' ') --p;
+ copy = (char *) alloca (p - *argptr + 1);
+ bcopy (*argptr, copy, p - *argptr);
+ copy[p - *argptr] = 0;
+
+ /* Find that file's data. */
+ s = lookup_symtab (copy);
+ if (s == 0)
+ {
+ if (symtab_list == 0 && partial_symtab_list == 0)
+ error ("No symbol table is loaded. Use the \"symbol-file\" command.");
+ error ("No source file named %s.", copy);
+ }
+
+ /* Discard the file name from the arg. */
+ p = p1 + 1;
+ while (*p == ' ' || *p == '\t') p++;
+ *argptr = p;
+ }
+
+ /* S is specified file's symtab, or 0 if no file specified.
+ arg no longer contains the file name. */
+
+ /* Check whether arg is all digits (and sign) */
+
+ p = *argptr;
+ if (*p == '-' || *p == '+') p++;
+ while (*p >= '0' && *p <= '9')
+ p++;
+
+ if (p != *argptr && (*p == 0 || *p == ' ' || *p == '\t' || *p == ','))
+ {
+ /* We found a token consisting of all digits -- at least one digit. */
+ enum sign {none, plus, minus} sign = none;
+
+ /* This is where we need to make sure that we have good defaults.
+ We must guarrantee that this section of code is never executed
+ when we are called with just a function name, since
+ select_source_symtab calls us with such an argument */
+
+ if (s == 0 && default_symtab == 0)
+ {
+ if (symtab_list == 0 && partial_symtab_list == 0)
+ error ("No symbol table is loaded. Use the \"symbol-file\" command.");
+ select_source_symtab (0);
+ default_symtab = current_source_symtab;
+ default_line = current_source_line;
+ }
+
+ if (**argptr == '+')
+ sign = plus, (*argptr)++;
+ else if (**argptr == '-')
+ sign = minus, (*argptr)++;
+ value.line = atoi (*argptr);
+ switch (sign)
+ {
+ case plus:
+ if (p == *argptr)
+ value.line = 5;
+ if (s == 0)
+ value.line = default_line + value.line;
+ break;
+ case minus:
+ if (p == *argptr)
+ value.line = 15;
+ if (s == 0)
+ value.line = default_line - value.line;
+ else
+ value.line = 1;
+ break;
+ }
+
+ while (*p == ' ' || *p == '\t') p++;
+ *argptr = p;
+ if (s == 0)
+ s = default_symtab;
+ value.symtab = s;
+ value.pc = 0;
+ values.sals = (struct symtab_and_line *)malloc (sizeof (struct symtab_and_line));
+ values.sals[0] = value;
+ values.nelts = 1;
+ return values;
+ }
+
+ /* Arg token is not digits => try it as a function name
+ Find the next token (everything up to end or next whitespace). */
+ p = *argptr;
+ while (*p && *p != ' ' && *p != '\t' && *p != ',') p++;
+ copy = (char *) alloca (p - *argptr + 1);
+ bcopy (*argptr, copy, p - *argptr);
+ copy[p - *argptr] = 0;
+ while (*p == ' ' || *p == '\t') p++;
+ *argptr = p;
+
+ /* Look up that token as a function.
+ If file specified, use that file's per-file block to start with. */
+
+ if (s == 0)
+ /* use current file as default if none is specified. */
+ s = default_symtab;
+
+ sym = lookup_symbol (copy, s ? BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), 1) : 0,
+ VAR_NAMESPACE, 0);
+
+ if (sym && SYMBOL_CLASS (sym) == LOC_BLOCK)
+ {
+ /* Arg is the name of a function */
+ pc = BLOCK_START (SYMBOL_BLOCK_VALUE (sym)) + FUNCTION_START_OFFSET;
+ if (funfirstline)
+ SKIP_PROLOGUE (pc);
+ value = find_pc_line (pc, 0);
+#ifdef PROLOGUE_FIRSTLINE_OVERLAP
+ /* Convex: no need to suppress code on first line, if any */
+ value.pc = pc;
+#else
+ value.pc = (value.end && value.pc != pc) ? value.end : pc;
+#endif
+ values.sals = (struct symtab_and_line *)malloc (sizeof (struct symtab_and_line));
+ values.sals[0] = value;
+ values.nelts = 1;
+ return values;
+ }
+
+ if (sym)
+ error ("%s is not a function.", copy);
+
+ if (symtab_list == 0 && partial_symtab_list == 0)
+ error ("No symbol table is loaded. Use the \"symbol-file\" command.");
+
+ if ((i = lookup_misc_func (copy)) >= 0)
+ {
+ value.symtab = 0;
+ value.line = 0;
+ value.pc = misc_function_vector[i].address + FUNCTION_START_OFFSET;
+ if (funfirstline)
+ SKIP_PROLOGUE (value.pc);
+ values.sals = (struct symtab_and_line *)malloc (sizeof (struct symtab_and_line));
+ values.sals[0] = value;
+ values.nelts = 1;
+ return values;
+ }
+
+ error ("Function %s not defined.", copy);
+}
+
+struct symtabs_and_lines
+decode_line_spec (string, funfirstline)
+ char *string;
+ int funfirstline;
+{
+ struct symtabs_and_lines sals;
+ if (string == 0)
+ error ("Empty line specification.");
+ sals = decode_line_1 (&string, funfirstline,
+ current_source_symtab, current_source_line);
+ if (*string)
+ error ("Junk at end of line specification: %s", string);
+ return sals;
+}
+
+/* Given a list of NELTS symbols in sym_arr (with corresponding
+ mangled names in physnames), return a list of lines to operate on
+ (ask user if necessary). */
+struct symtabs_and_lines
+decode_line_2 (argptr, sym_arr, physnames, nelts, funfirstline)
+ char **argptr;
+ struct symbol *sym_arr[];
+ char *physnames[];
+ int nelts;
+ int funfirstline;
+{
+ char *getenv();
+ struct symtabs_and_lines values, return_values;
+ register CORE_ADDR pc;
+ char *args, *arg1, *command_line_input ();
+ int i;
+ char *prompt;
+
+ values.sals = (struct symtab_and_line *) alloca (nelts * sizeof(struct symtab_and_line));
+ return_values.sals = (struct symtab_and_line *) malloc (nelts * sizeof(struct symtab_and_line));
+
+ i = 0;
+ printf("[0] cancel\n[1] all\n");
+ while (i < nelts)
+ {
+ if (sym_arr[i] && SYMBOL_CLASS (sym_arr[i]) == LOC_BLOCK)
+ {
+ /* Arg is the name of a function */
+ pc = BLOCK_START (SYMBOL_BLOCK_VALUE (sym_arr[i]))
+ + FUNCTION_START_OFFSET;
+ if (funfirstline)
+ SKIP_PROLOGUE (pc);
+ values.sals[i] = find_pc_line (pc, 0);
+ values.sals[i].pc = (values.sals[i].end && values.sals[i].pc != pc) ? values.sals[i].end : pc;
+ printf("[%d] file:%s; line number:%d\n",
+ (i+2), values.sals[i].symtab->filename, values.sals[i].line);
+ }
+ else printf ("?HERE\n");
+ i++;
+ }
+
+ if ((prompt = getenv ("PS2")) == NULL)
+ {
+ prompt = ">";
+ }
+ printf("%s ",prompt);
+ fflush(stdout);
+
+ args = command_line_input (0, 0);
+
+ if (args == 0)
+ error_no_arg ("one or more choice numbers");
+
+ i = 0;
+ while (*args)
+ {
+ int num;
+
+ arg1 = args;
+ while (*arg1 >= '0' && *arg1 <= '9') arg1++;
+ if (*arg1 && *arg1 != ' ' && *arg1 != '\t')
+ error ("Arguments must be choice numbers.");
+
+ num = atoi (args);
+
+ if (num == 0)
+ error ("cancelled");
+ else if (num == 1)
+ {
+ bcopy (values.sals, return_values.sals, (nelts * sizeof(struct symtab_and_line)));
+ return_values.nelts = nelts;
+ return return_values;
+ }
+
+ if (num > nelts + 2)
+ {
+ printf ("No choice number %d.\n", num);
+ }
+ else
+ {
+ num -= 2;
+ if (values.sals[num].pc)
+ {
+ return_values.sals[i++] = values.sals[num];
+ values.sals[num].pc = 0;
+ }
+ else
+ {
+ printf ("duplicate request for %d ignored.\n", num);
+ }
+ }
+
+ args = arg1;
+ while (*args == ' ' || *args == '\t') args++;
+ }
+ return_values.nelts = i;
+ return return_values;
+}
+
+/* hash a symbol ("hashpjw" from Aho, Sethi & Ullman, p.436) */
+
+int
+hash_symbol(str)
+ register char *str;
+{
+ register unsigned int h = 0, g;
+ register unsigned char c;
+
+ while (c = *(unsigned char *)str++) {
+ h = (h << 4) + c;
+ if (g = h & 0xf0000000) {
+ h = h ^ (g >> 24);
+ h = h ^ g;
+ }
+ }
+ return ((int)h);
+}
+
+/* Return the index of misc function named NAME. */
+
+int
+lookup_misc_func (name)
+ register char *name;
+{
+ register int i = hash_symbol(name) & (MISC_FUNC_HASH_SIZE - 1);
+
+ if (misc_function_vector == 0)
+ error("No symbol file");
+
+ i = misc_function_hash_tab[i];
+ while (i >= 0)
+ {
+ if (strcmp(misc_function_vector[i].name, name) == 0)
+ break;
+ i = misc_function_vector[i].next;
+ }
+ return (i);
+}
+
+/*
+ * Slave routine for sources_info. Force line breaks at ,'s.
+ */
+static void
+output_source_filename (name, next)
+char *name;
+int next;
+{
+ static int column = 0;
+
+ if (column != 0 && column + strlen (name) >= 70)
+ {
+ printf_filtered ("\n");
+ column = 0;
+ }
+ else if (column != 0)
+ {
+ printf_filtered (" ");
+ column++;
+ }
+ printf_filtered ("%s", name);
+ column += strlen (name);
+ if (next)
+ {
+ printf_filtered (",");
+ column++;
+ }
+
+ if (!next) column = 0;
+}
+
+static void
+sources_info ()
+{
+ register struct symtab *s;
+ register struct partial_symtab *ps;
+ register int column = 0;
+
+ if (symtab_list == 0 && partial_symtab_list == 0)
+ {
+ printf ("No symbol table is loaded.\n");
+ return;
+ }
+
+ printf_filtered ("Source files for which symbols have been read in:\n\n");
+
+ for (s = symtab_list; s; s = s->next)
+ output_source_filename (s->filename, s->next);
+ printf_filtered ("\n\n");
+
+ printf_filtered ("Source files for which symbols will be read in on demand:\n\n");
+
+ for (ps = partial_symtab_list; ps; ps = ps->next)
+ if (!ps->readin)
+ output_source_filename (ps->filename, ps->next);
+ printf_filtered ("\n");
+}
+
+/* List all symbols (if REGEXP is 0) or all symbols matching REGEXP.
+ If CLASS is zero, list all symbols except functions and type names.
+ If CLASS is 1, list only functions.
+ If CLASS is 2, list only type names. */
+
+static void sort_block_syms ();
+
+static void
+list_symbols (regexp, class)
+ char *regexp;
+ int class;
+{
+ register struct symtab *s;
+ register struct partial_symtab *ps;
+ register struct blockvector *bv;
+ struct blockvector *prev_bv = 0;
+ register struct block *b;
+ register int i, j;
+ register struct symbol *sym;
+ struct partial_symbol *psym, *bound;
+ char *val;
+ static char *classnames[]
+ = {"variable", "function", "type", "method"};
+ int print_count = 0;
+ int found_in_file = 0;
+
+ if (regexp)
+ if (val = (char *) re_comp (regexp))
+ error ("Invalid regexp: %s", val);
+
+ /* Search through the partial_symtab_list *first* for all symbols
+ matching the regexp. That way we don't have to reproduce all of
+ the machinery below. */
+ for (psym = global_psymbols.list, bound = global_psymbols.next; ;
+ psym = static_psymbols.list, bound = static_psymbols.next)
+ {
+ for (; psym < bound; ++psym)
+ {
+ if (psym->pst->readin)
+ continue;
+
+ QUIT;
+ /* If it would match (logic taken from loop below)
+ load the file and go on to the next one */
+ if ((regexp == 0 || re_exec (SYMBOL_NAME (psym)))
+ && ((class == 0 && SYMBOL_CLASS (psym) != LOC_TYPEDEF
+ && SYMBOL_CLASS (psym) != LOC_BLOCK)
+ || (class == 1 && SYMBOL_CLASS (psym) == LOC_BLOCK)
+ || (class == 2 && SYMBOL_CLASS (psym) == LOC_TYPEDEF)
+ || (class == 3 && SYMBOL_CLASS (psym) == LOC_BLOCK)))
+ psymtab_to_symtab(psym->pst);
+ }
+ if (psym == static_psymbols.next)
+ break;
+ }
+
+ /* Printout here so as to get after the "Reading in symbols"
+ messages which will be generated above. */
+ printf_filtered (regexp
+ ? "All %ss matching regular expression \"%s\":\n"
+ : "All defined %ss:\n",
+ classnames[class],
+ regexp);
+
+ /* Here, *if* the class is correct (function only, right now), we
+ should search through the misc function vector for symbols that
+ match and call find_pc_psymtab on them. If find_pc_psymtab returns
+ 0, don't worry about it (already read in or no debugging info). */
+
+ if (class == 1)
+ {
+ for (i = 0; i < misc_function_count; i++)
+ if (regexp == 0 || re_exec (misc_function_vector[i].name))
+ {
+ ps = find_pc_psymtab (misc_function_vector[i].address);
+ if (ps && !ps->readin)
+ psymtab_to_symtab (ps);
+ }
+ }
+
+ for (s = symtab_list; s; s = s->next)
+ {
+ found_in_file = 0;
+ bv = BLOCKVECTOR (s);
+ /* Often many files share a blockvector.
+ Scan each blockvector only once so that
+ we don't get every symbol many times.
+ It happens that the first symtab in the list
+ for any given blockvector is the main file. */
+ if (bv != prev_bv)
+ for (i = 0; i < 2; i++)
+ {
+ b = BLOCKVECTOR_BLOCK (bv, i);
+ /* Skip the sort if this block is always sorted. */
+ if (!BLOCK_SHOULD_SORT (b))
+ sort_block_syms (b);
+ for (j = 0; j < BLOCK_NSYMS (b); j++)
+ {
+ QUIT;
+ sym = BLOCK_SYM (b, j);
+ if ((regexp == 0 || re_exec (SYMBOL_NAME (sym)))
+ && ((class == 0 && SYMBOL_CLASS (sym) != LOC_TYPEDEF
+ && SYMBOL_CLASS (sym) != LOC_BLOCK)
+ || (class == 1 && SYMBOL_CLASS (sym) == LOC_BLOCK)
+ || (class == 2 && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
+ || (class == 3 && SYMBOL_CLASS (sym) == LOC_BLOCK)))
+ {
+ if (!found_in_file)
+ {
+ printf_filtered ("\nFile %s:\n", s->filename);
+ print_count += 2;
+ }
+ found_in_file = 1;
+ if (class != 2 && i == 1)
+ printf_filtered ("static ");
+ if (class == 2
+ && SYMBOL_NAMESPACE (sym) != STRUCT_NAMESPACE)
+ printf_filtered ("typedef ");
+
+ if (class < 3)
+ {
+ type_print (SYMBOL_TYPE (sym),
+ (SYMBOL_CLASS (sym) == LOC_TYPEDEF
+ ? "" : SYMBOL_NAME (sym)),
+ stdout, 0);
+
+ if (class == 2
+ && SYMBOL_NAMESPACE (sym) != STRUCT_NAMESPACE
+ && (TYPE_NAME ((SYMBOL_TYPE (sym))) == 0
+ || 0 != strcmp (TYPE_NAME ((SYMBOL_TYPE (sym))),
+ SYMBOL_NAME (sym))))
+ printf_filtered (" %s", SYMBOL_NAME (sym));
+
+ printf_filtered (";\n");
+ }
+ else
+ {
+# if 0
+ char buf[1024];
+ type_print_base (TYPE_FN_FIELD_TYPE(t, i), stdout, 0, 0);
+ type_print_varspec_prefix (TYPE_FN_FIELD_TYPE(t, i), stdout, 0);
+ sprintf (buf, " %s::", TYPE_NAME (t));
+ type_print_method_args (TYPE_FN_FIELD_ARGS (t, i), buf, name, stdout);
+# endif
+ }
+ }
+ }
+ }
+ prev_bv = bv;
+ }
+}
+
+static void
+variables_info (regexp)
+ char *regexp;
+{
+ list_symbols (regexp, 0);
+}
+
+static void
+functions_info (regexp)
+ char *regexp;
+{
+ list_symbols (regexp, 1);
+}
+
+static void
+types_info (regexp)
+ char *regexp;
+{
+ list_symbols (regexp, 2);
+}
+
+#if 0
+/* Tiemann says: "info methods was never implemented." */
+static void
+methods_info (regexp)
+ char *regexp;
+{
+ list_symbols (regexp, 3);
+}
+#endif /* 0 */
+
+/* Call sort_block_syms to sort alphabetically the symbols of one block. */
+
+static int
+compare_symbols (s1, s2)
+ struct symbol **s1, **s2;
+{
+ /* Names that are less should come first. */
+ register int namediff = strcmp (SYMBOL_NAME (*s1), SYMBOL_NAME (*s2));
+ if (namediff != 0) return namediff;
+ /* For symbols of the same name, registers should come first. */
+ return ((SYMBOL_CLASS (*s2) == LOC_REGISTER)
+ - (SYMBOL_CLASS (*s1) == LOC_REGISTER));
+}
+
+static void
+sort_block_syms (b)
+ register struct block *b;
+{
+ qsort (&BLOCK_SYM (b, 0), BLOCK_NSYMS (b),
+ sizeof (struct symbol *), compare_symbols);
+}
+
+/* Initialize the standard C scalar types. */
+
+static
+struct type *
+init_type (code, length, uns, name)
+ enum type_code code;
+ int length, uns;
+ char *name;
+{
+ register struct type *type;
+
+ type = (struct type *) xmalloc (sizeof (struct type));
+ bzero (type, sizeof *type);
+ TYPE_MAIN_VARIANT (type) = type;
+ TYPE_CODE (type) = code;
+ TYPE_LENGTH (type) = length;
+ TYPE_FLAGS (type) = uns ? TYPE_FLAG_UNSIGNED : 0;
+ TYPE_FLAGS (type) |= TYPE_FLAG_PERM;
+ TYPE_NFIELDS (type) = 0;
+ TYPE_NAME (type) = name;
+
+ /* C++ fancies. */
+ TYPE_NFN_FIELDS (type) = 0;
+ TYPE_N_BASECLASSES (type) = 0;
+ TYPE_BASECLASSES (type) = 0;
+ return type;
+}
+
+/* Return Nonzero if block a is lexically nested within block b,
+ or if a and b have the same pc range.
+ Return zero otherwise. */
+int
+contained_in (a, b)
+ struct block *a, *b;
+{
+ if (!a || !b)
+ return 0;
+ return a->startaddr >= b->startaddr && a->endaddr <= b->endaddr;
+}
+
+
+/* Helper routine for make_symbol_completion_list. */
+
+int return_val_size, return_val_index;
+char **return_val;
+
+void
+completion_list_add_symbol (symname)
+ char *symname;
+{
+ if (return_val_index + 3 > return_val_size)
+ return_val =
+ (char **)xrealloc (return_val,
+ (return_val_size *= 2) * sizeof (char *));
+
+ return_val[return_val_index] =
+ (char *)xmalloc (1 + strlen (symname));
+
+ strcpy (return_val[return_val_index], symname);
+
+ return_val[++return_val_index] = (char *)NULL;
+}
+
+/* Return a NULL terminated array of all symbols (regardless of class) which
+ begin by matching TEXT. If the answer is no symbols, then the return value
+ is an array which contains only a NULL pointer.
+
+ Problem: All of the symbols have to be copied because readline
+ frees them. I'm not going to worry about this; hopefully there
+ won't be that many. */
+
+char **
+make_symbol_completion_list (text)
+ char *text;
+{
+ register struct symtab *s;
+ register struct partial_symtab *ps;
+ register struct blockvector *bv;
+ struct blockvector *prev_bv = 0;
+ register struct block *b, *surrounding_static_block;
+ extern struct block *get_selected_block ();
+ register int i, j;
+ register struct symbol *sym;
+ struct partial_symbol *psym;
+
+ int text_len = strlen (text);
+ return_val_size = 100;
+ return_val_index = 0;
+ return_val =
+ (char **)xmalloc ((1 + return_val_size) *sizeof (char *));
+ return_val[0] = (char *)NULL;
+
+ /* Look through the partial symtabs for all symbols which begin
+ by matching TEXT. Add each one that you find to the list. */
+
+ for (ps = partial_symtab_list; ps; ps = ps->next)
+ {
+ /* If the psymtab's been read in we'll get it when we search
+ through the blockvector. */
+ if (ps->readin) continue;
+
+ for (psym = global_psymbols.list + ps->globals_offset;
+ psym < (global_psymbols.list + ps->globals_offset
+ + ps->n_global_syms);
+ psym++)
+ {
+ QUIT; /* If interrupted, then quit. */
+ if ((strncmp (SYMBOL_NAME (psym), text, text_len) == 0))
+ completion_list_add_symbol (SYMBOL_NAME (psym));
+ }
+
+ for (psym = static_psymbols.list + ps->statics_offset;
+ psym < (static_psymbols.list + ps->statics_offset
+ + ps->n_static_syms);
+ psym++)
+ {
+ QUIT;
+ if ((strncmp (SYMBOL_NAME (psym), text, text_len) == 0))
+ completion_list_add_symbol (SYMBOL_NAME (psym));
+ }
+ }
+
+ /* At this point scan through the misc function vector and add each
+ symbol you find to the list. Eventually we want to ignore
+ anything that isn't a text symbol (everything else will be
+ handled by the psymtab code above). */
+
+ for (i = 0; i < misc_function_count; i++)
+ if (!strncmp (text, misc_function_vector[i].name, text_len))
+ completion_list_add_symbol (misc_function_vector[i].name);
+
+ /* Search upwards from currently selected frame (so that we can
+ complete on local vars. */
+ for (b = get_selected_block (); b; b = BLOCK_SUPERBLOCK (b))
+ {
+ if (!BLOCK_SUPERBLOCK (b))
+ surrounding_static_block = b; /* For elmin of dups */
+
+ /* Also catch fields of types defined in this places which
+ match our text string. Only complete on types visible
+ from current context. */
+ for (i = 0; i < BLOCK_NSYMS (b); i++)
+ {
+ register struct symbol *sym = BLOCK_SYM (b, i);
+
+ if (!strncmp (SYMBOL_NAME (sym), text, text_len))
+ completion_list_add_symbol (SYMBOL_NAME (sym));
+
+ if (SYMBOL_CLASS (sym) == LOC_TYPEDEF)
+ {
+ struct type *t = SYMBOL_TYPE (sym);
+ enum type_code c = TYPE_CODE (t);
+
+ if (c == TYPE_CODE_UNION || c == TYPE_CODE_STRUCT)
+ for (j = 0; j < TYPE_NFIELDS (t); j++)
+ if (TYPE_FIELD_NAME (t, j) &&
+ !strncmp (TYPE_FIELD_NAME (t, j), text, text_len))
+ completion_list_add_symbol (TYPE_FIELD_NAME (t, j));
+ }
+ }
+ }
+
+ /* Go through the symtabs and check the externs and statics for
+ symbols which match. */
+
+ for (s = symtab_list; s; s = s->next)
+ {
+ struct block *b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), 0);
+
+ for (i = 0; i < BLOCK_NSYMS (b); i++)
+ if (!strncmp (SYMBOL_NAME (BLOCK_SYM (b, i)), text, text_len))
+ completion_list_add_symbol (SYMBOL_NAME (BLOCK_SYM (b, i)));
+ }
+
+ for (s = symtab_list; s; s = s->next)
+ {
+ struct block *b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), 1);
+
+ /* Don't do this block twice. */
+ if (b == surrounding_static_block) continue;
+
+ for (i = 0; i < BLOCK_NSYMS (b); i++)
+ if (!strncmp (SYMBOL_NAME (BLOCK_SYM (b, i)), text, text_len))
+ completion_list_add_symbol (SYMBOL_NAME (BLOCK_SYM (b, i)));
+ }
+
+ return (return_val);
+}
+
+void
+_initialize_symtab ()
+{
+ add_info ("variables", variables_info,
+ "All global and static variable names, or those matching REGEXP.");
+ add_info ("functions", functions_info,
+ "All function names, or those matching REGEXP.");
+ add_info ("types", types_info,
+ "All types names, or those matching REGEXP.");
+#if 0
+ add_info ("methods", methods_info,
+ "All method names, or those matching REGEXP::REGEXP.\n\
+If the class qualifier is ommited, it is assumed to be the current scope.\n\
+If the first REGEXP is ommited, then all methods matching the second REGEXP\n\
+are listed.");
+#endif
+ add_info ("sources", sources_info,
+ "Source files in the program.");
+
+ obstack_init (symbol_obstack);
+ obstack_init (psymbol_obstack);
+
+ builtin_type_void = init_type (TYPE_CODE_VOID, 1, 0, "void");
+
+ builtin_type_float = init_type (TYPE_CODE_FLT, sizeof (float), 0, "float");
+ builtin_type_double = init_type (TYPE_CODE_FLT, sizeof (double), 0, "double");
+
+ builtin_type_char = init_type (TYPE_CODE_INT, sizeof (char), 0, "char");
+ builtin_type_short = init_type (TYPE_CODE_INT, sizeof (short), 0, "short");
+ builtin_type_long = init_type (TYPE_CODE_INT, sizeof (long), 0, "long");
+ builtin_type_int = init_type (TYPE_CODE_INT, sizeof (int), 0, "int");
+
+ builtin_type_unsigned_char = init_type (TYPE_CODE_INT, sizeof (char), 1, "unsigned char");
+ builtin_type_unsigned_short = init_type (TYPE_CODE_INT, sizeof (short), 1, "unsigned short");
+ builtin_type_unsigned_long = init_type (TYPE_CODE_INT, sizeof (long), 1, "unsigned long");
+ builtin_type_unsigned_int = init_type (TYPE_CODE_INT, sizeof (int), 1, "unsigned int");
+#ifdef LONG_LONG
+ builtin_type_long_long =
+ init_type (TYPE_CODE_INT, sizeof (long long), 0, "long long");
+ builtin_type_unsigned_long_long =
+ init_type (TYPE_CODE_INT, sizeof (long long), 1, "unsigned long long");
+#endif
+}
+
diff --git a/gnu/usr.bin/kgdb/symtab.h b/gnu/usr.bin/kgdb/symtab.h
new file mode 100644
index 000000000000..fefed6001e5f
--- /dev/null
+++ b/gnu/usr.bin/kgdb/symtab.h
@@ -0,0 +1,384 @@
+/*-
+ * This code is derived from software copyrighted by the Free Software
+ * Foundation.
+ *
+ * Modified 1991 by Donn Seeley at UUNET Technologies, Inc.
+ * Modified 1990 by Van Jacobson at Lawrence Berkeley Laboratory.
+ *
+ * @(#)symtab.h 6.3 (Berkeley) 5/8/91
+ */
+
+/* Symbol table definitions for GDB.
+ Copyright (C) 1986, 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include <obstack.h>
+
+/* An obstack to hold objects that should be freed
+ when we load a new symbol table.
+ This includes the symbols made by dbxread
+ and the types that are not permanent. */
+
+extern struct obstack *symbol_obstack;
+extern struct obstack *psymbol_obstack;
+
+/* Some definitions and declarations to go with use of obstacks. */
+#define obstack_chunk_alloc xmalloc
+#define obstack_chunk_free free
+extern char *xmalloc ();
+extern void free ();
+
+/* gdb can know one or several symbol tables at the same time;
+ the ultimate intent is to have one for each separately-compiled module.
+ Each such symbol table is recorded by a struct symtab, and they
+ are all chained together. */
+
+/* In addition, gdb can record any number of miscellaneous undebuggable
+ functions' addresses. In a system that appends _ to function names,
+ the _'s are removed from the names stored in this table. */
+
+/* Actually, the misc function list is used to store *all* of the
+ global symbols (text, data, bss, and abs). It is sometimes used
+ to figure out what symtabs to read in. The "type" field appears
+ never to be used. */
+
+enum misc_function_type {mf_unknown = 0, mf_text, mf_data, mf_bss, mf_abs};
+
+struct misc_function
+{
+ char *name;
+ CORE_ADDR address;
+ int next; /* index of next in this hash bucket */
+ unsigned char type; /* Really enum misc_function_type. */
+};
+
+/* Address and length of the vector recording all misc function names/addresses. */
+
+struct misc_function *misc_function_vector;
+int misc_function_count;
+#define MISC_FUNC_HASH_SIZE (2048)
+int misc_function_hash_tab[MISC_FUNC_HASH_SIZE];
+
+#include "symseg.h"
+
+/* Each source file is represented by a struct symtab. */
+/* These objects are chained through the `next' field. */
+
+struct symtab
+ {
+ /* Chain of all existing symtabs. */
+ struct symtab *next;
+ /* List of all symbol scope blocks for this symtab. */
+ struct blockvector *blockvector;
+ /* Table mapping core addresses to line numbers for this file. */
+ struct linetable *linetable;
+ /* Vector containing all types defined for this symtab. */
+ struct typevector *typevector;
+ /* Name of this source file. */
+ char *filename;
+ /* This component says how to free the data we point to:
+ free_contents => do a tree walk and free each object.
+ free_nothing => do nothing; some other symtab will free
+ the data this one uses.
+ free_linetable => free just the linetable. */
+ enum free_code {free_nothing, free_contents, free_linetable}
+ free_code;
+ /* Pointer to one block of storage to be freed, if nonzero. */
+ char *free_ptr;
+ /* Total number of lines found in source file. */
+ int nlines;
+ /* Array mapping line number to character position. */
+ int *line_charpos;
+ /* Language of this source file. */
+ enum language language;
+ /* String of version information. May be zero. */
+ char *version;
+ /* String of compilation information. May be zero. */
+ char *compilation;
+ /* Offset within loader symbol table
+ of first local symbol for this file. */
+ int ldsymoff;
+ /* Full name of file as found by searching the source path.
+ 0 if not yet known. */
+ char *fullname;
+ };
+
+/*
+ * Each source file that has not been fully read in is represented by
+ * a partial_symtab. This contains the information on where in the
+ * executable the debugging symbols for a specific file are, and a
+ * list of names of global symbols which are located in this file.
+ */
+struct partial_symtab
+{
+ /* Chain of all existing partial symtabs. */
+ struct partial_symtab *next;
+ /* Name of the source file which this partial_symtab defines */
+ char *filename;
+ /* Offset within loader symbol table of first local symbol for this
+ file and length (in bytes) of the section of the symbol table
+ devoted to this file's symbols (actually, the section bracketed
+ may contain more than just this files symbols
+ If ldsymlen is 0, the only reason for this things existence is
+ the dependency list below. Nothing else will happen when it is
+ read in. */
+ int ldsymoff, ldsymlen;
+ /* Range of text addresses covered by this file; texthigh is the
+ beginning of the next section. */
+ int textlow, texthigh;
+ /* Non-zero if the symtab corresponding to this psymtab has been
+ readin */
+ unsigned char readin;
+ /* Array of pointers to all of the partial_symtab s which this one
+ depends one. Since this array can only be set to previous or
+ the current (?) psymtab, this dependency tree is guarranteed not
+ to have any loops. */
+ struct partial_symtab **dependencies;
+ int number_of_dependencies;
+ /* Global symbol list. This list will be sorted after readin to
+ improve access. Binary search will be the usual method of
+ finding a symbol within it. globals_offset is an integer offset
+ within ps_globals */
+ int globals_offset, n_global_syms;
+ /* Static symbol list. This list will *not* be sorted after readin;
+ to find a symbol in it, exhaustive search must be used. This is
+ reasonable because searches through this list will eventually
+ lead to either the read in of a files symbols for real (assumed
+ to take a *lot* of time; check) or an error (and we don't care
+ how long errors take). */
+ int statics_offset, n_static_syms;
+};
+
+/* This is the list of struct symtab's that gdb considers current. */
+
+struct symtab *symtab_list;
+
+/* This is the list of struct partial_symtab's that gdb may need to access */
+
+struct partial_symtab *partial_symtab_list;
+
+/* This symtab variable specifies the current file for printing source lines */
+
+struct symtab *current_source_symtab;
+
+/* This is the next line to print for listing source lines. */
+
+int current_source_line;
+
+#define BLOCKLIST(symtab) (symtab)->blockvector
+#define BLOCKVECTOR(symtab) (symtab)->blockvector
+
+#define TYPEVECTOR(symtab) (symtab)->typevector
+
+#define LINELIST(symtab) (symtab)->linetable
+#define LINETABLE(symtab) (symtab)->linetable
+
+/* Macros normally used to access components of symbol table structures. */
+
+#define BLOCKLIST_NBLOCKS(blocklist) (blocklist)->nblocks
+#define BLOCKLIST_BLOCK(blocklist,n) (blocklist)->block[n]
+#define BLOCKVECTOR_NBLOCKS(blocklist) (blocklist)->nblocks
+#define BLOCKVECTOR_BLOCK(blocklist,n) (blocklist)->block[n]
+
+#define TYPEVECTOR_NTYPES(typelist) (typelist)->length
+#define TYPEVECTOR_TYPE(typelist,n) (typelist)->type[n]
+
+#define BLOCK_START(bl) (bl)->startaddr
+#define BLOCK_END(bl) (bl)->endaddr
+#define BLOCK_NSYMS(bl) (bl)->nsyms
+#define BLOCK_SYM(bl, n) (bl)->sym[n]
+#define BLOCK_FUNCTION(bl) (bl)->function
+#define BLOCK_SUPERBLOCK(bl) (bl)->superblock
+#define BLOCK_GCC_COMPILED(bl) (bl)->gcc_compile_flag
+
+/* Nonzero if symbols of block BL should be sorted alphabetically. */
+#define BLOCK_SHOULD_SORT(bl) ((bl)->nsyms >= 40)
+
+#define SYMBOL_NAME(symbol) (symbol)->name
+#define SYMBOL_NAMESPACE(symbol) (symbol)->namespace
+#define SYMBOL_CLASS(symbol) (symbol)->class
+#define SYMBOL_VALUE(symbol) (symbol)->value.value
+#define SYMBOL_VALUE_BYTES(symbol) (symbol)->value.bytes
+#define SYMBOL_BLOCK_VALUE(symbol) (symbol)->value.block
+#define SYMBOL_TYPE(symbol) (symbol)->type
+
+/* Some macros for bitfields. */
+#define B_SET(a,x) (a[x>>5] |= (1 << (x&31)))
+#define B_CLR(a,x) (a[x>>5] &= ~(1 << (x&31)))
+#define B_TST(a,x) (a[x>>5] & (1 << (x&31)))
+
+#define TYPE_NAME(thistype) (thistype)->name
+#define TYPE_TARGET_TYPE(thistype) (thistype)->target_type
+#define TYPE_POINTER_TYPE(thistype) (thistype)->pointer_type
+#define TYPE_REFERENCE_TYPE(thistype) (thistype)->reference_type
+#define TYPE_FUNCTION_TYPE(thistype) (thistype)->function_type
+#define TYPE_MAIN_VARIANT(thistype) (thistype)->main_variant
+#define TYPE_NEXT_VARIANT(thistype) (thistype)->next_variant
+#define TYPE_LENGTH(thistype) (thistype)->length
+#define TYPE_FLAGS(thistype) (thistype)->flags
+#define TYPE_UNSIGNED(thistype) ((thistype)->flags & TYPE_FLAG_UNSIGNED)
+#define TYPE_CODE(thistype) (thistype)->code
+#define TYPE_NFIELDS(thistype) (thistype)->nfields
+#define TYPE_FIELDS(thistype) (thistype)->fields
+/* C++ */
+#define TYPE_VPTR_BASETYPE(thistype) (thistype)->vptr_basetype
+#define TYPE_DOMAIN_TYPE(thistype) (thistype)->vptr_basetype
+#define TYPE_VPTR_FIELDNO(thistype) (thistype)->vptr_fieldno
+#define TYPE_FN_FIELDS(thistype) (thistype)->fn_fields
+#define TYPE_NFN_FIELDS(thistype) (thistype)->nfn_fields
+#define TYPE_NFN_FIELDS_TOTAL(thistype) (thistype)->nfn_fields_total
+#define TYPE_BASECLASSES(thistype) (thistype)->baseclasses
+#define TYPE_ARG_TYPES(thistype) (thistype)->arg_types
+#define TYPE_BASECLASS(thistype,index) (thistype)->baseclasses[index]
+#define TYPE_N_BASECLASSES(thistype) (thistype)->n_baseclasses
+#define TYPE_VIA_PUBLIC(thistype) ((thistype)->flags & TYPE_FLAG_VIA_PUBLIC)
+#define TYPE_VIA_VIRTUAL(thistype) ((thistype)->flags & TYPE_FLAG_VIA_VIRTUAL)
+
+#define TYPE_FIELD(thistype, n) (thistype)->fields[n]
+#define TYPE_FIELD_TYPE(thistype, n) (thistype)->fields[n].type
+#define TYPE_FIELD_NAME(thistype, n) (thistype)->fields[n].name
+#define TYPE_FIELD_VALUE(thistype, n) (* (int*) &(thistype)->fields[n].type)
+#define TYPE_FIELD_BITPOS(thistype, n) (thistype)->fields[n].bitpos
+#define TYPE_FIELD_BITSIZE(thistype, n) (thistype)->fields[n].bitsize
+#define TYPE_FIELD_PACKED(thistype, n) (thistype)->fields[n].bitsize
+
+#define TYPE_FIELD_PRIVATE_BITS(thistype) (thistype)->private_field_bits
+#define TYPE_FIELD_PROTECTED_BITS(thistype) (thistype)->protected_field_bits
+#define SET_TYPE_FIELD_PRIVATE(thistype, n) B_SET ((thistype)->private_field_bits, (n))
+#define SET_TYPE_FIELD_PROTECTED(thistype, n) B_SET ((thistype)->protected_field_bits, (n))
+#define TYPE_FIELD_PRIVATE(thistype, n) B_TST((thistype)->private_field_bits, (n))
+#define TYPE_FIELD_PROTECTED(thistype, n) B_TST((thistype)->protected_field_bits, (n))
+
+#define TYPE_HAS_DESTRUCTOR(thistype) ((thistype)->flags & TYPE_FLAG_HAS_DESTRUCTOR)
+#define TYPE_HAS_CONSTRUCTOR(thistype) ((thistype)->flags & TYPE_FLAG_HAS_CONSTRUCTOR)
+
+#define TYPE_FIELD_STATIC(thistype, n) ((thistype)->fields[n].bitpos == -1)
+#define TYPE_FIELD_STATIC_PHYSNAME(thistype, n) ((char *)(thistype)->fields[n].bitsize)
+
+#define TYPE_FN_FIELDLISTS(thistype) (thistype)->fn_fieldlists
+#define TYPE_FN_FIELDLIST(thistype, n) (thistype)->fn_fieldlists[n]
+#define TYPE_FN_FIELDLIST1(thistype, n) (thistype)->fn_fieldlists[n].fn_fields
+#define TYPE_FN_FIELDLIST_NAME(thistype, n) (thistype)->fn_fieldlists[n].name
+#define TYPE_FN_FIELDLIST_LENGTH(thistype, n) (thistype)->fn_fieldlists[n].length
+
+#define TYPE_FN_FIELD(thistype, n) (thistype)[n]
+#define TYPE_FN_FIELD_NAME(thistype, n) (thistype)[n].name
+#define TYPE_FN_FIELD_TYPE(thistype, n) (thistype)[n].type
+#define TYPE_FN_FIELD_ARGS(thistype, n) (thistype)[n].args
+#define TYPE_FN_FIELD_PHYSNAME(thistype, n) (thistype)[n].physname
+#define TYPE_FN_FIELD_VIRTUAL_P(thistype, n) ((thistype)[n].voffset < 0)
+#define TYPE_FN_FIELD_STATIC_P(thistype, n) ((thistype)[n].voffset > 0)
+#define TYPE_FN_FIELD_VOFFSET(thistype, n) ((thistype)[n].voffset-1)
+
+#define TYPE_FN_PRIVATE_BITS(thistype) (thistype).private_fn_field_bits
+#define TYPE_FN_PROTECTED_BITS(thistype) (thistype).protected_fn_field_bits
+#define SET_TYPE_FN_PRIVATE(thistype, n) B_SET ((thistype).private_fn_field_bits, n)
+#define SET_TYPE_FN_PROTECTED(thistype, n) B_SET ((thistype).protected_fn_field_bits, n)
+#define TYPE_FN_PRIVATE(thistype, n) B_TST ((thistype).private_fn_field_bits, n)
+#define TYPE_FN_PROTECTED(thistype, n) B_TST ((thistype).protected_fn_field_bits, n)
+
+/* Functions that work on the objects described above */
+
+extern struct symtab *lookup_symtab ();
+extern struct symbol *lookup_symbol ();
+extern struct type *lookup_typename ();
+extern struct type *lookup_unsigned_typename ();
+extern struct type *lookup_struct ();
+extern struct type *lookup_union ();
+extern struct type *lookup_enum ();
+extern struct type *lookup_struct_elt_type ();
+extern struct type *lookup_pointer_type ();
+extern struct type *lookup_function_type ();
+extern struct type *lookup_basetype_type ();
+extern struct type *create_array_type ();
+extern struct symbol *block_function ();
+extern struct symbol *find_pc_function ();
+extern int find_pc_partial_function ();
+extern struct partial_symtab *find_pc_psymtab ();
+extern struct symtab *find_pc_symtab ();
+extern struct partial_symbol *find_pc_psymbol ();
+extern int find_pc_misc_function ();
+
+/* C++ stuff. */
+extern struct type *lookup_reference_type ();
+extern struct type *lookup_member_type ();
+extern struct type *lookup_class ();
+/* end of C++ stuff. */
+
+extern struct type *builtin_type_void;
+extern struct type *builtin_type_char;
+extern struct type *builtin_type_short;
+extern struct type *builtin_type_int;
+extern struct type *builtin_type_long;
+extern struct type *builtin_type_unsigned_char;
+extern struct type *builtin_type_unsigned_short;
+extern struct type *builtin_type_unsigned_int;
+extern struct type *builtin_type_unsigned_long;
+extern struct type *builtin_type_float;
+extern struct type *builtin_type_double;
+
+#ifdef LONG_LONG
+extern struct type *builtin_type_long_long;
+extern struct type *builtin_type_unsigned_long_long;
+
+#ifndef BUILTIN_TYPE_LONGEST
+#define BUILTIN_TYPE_LONGEST builtin_type_long_long
+#endif
+
+#ifndef BUILTIN_TYPE_UNSIGNED_LONGEST
+#define BUILTIN_TYPE_UNSIGNED_LONGEST builtin_type_unsigned_long_long
+#endif
+
+#else /* LONG_LONG */
+
+#ifndef BUILTIN_TYPE_LONGEST
+#define BUILTIN_TYPE_LONGEST builtin_type_long
+#endif
+
+#ifndef BUILTIN_TYPE_UNSIGNED_LONGEST
+#define BUILTIN_TYPE_UNSIGNED_LONGEST builtin_type_unsigned_long
+#endif
+
+#endif
+
+struct symtab_and_line
+{
+ struct symtab *symtab;
+ int line;
+ CORE_ADDR pc;
+ CORE_ADDR end;
+};
+
+struct symtabs_and_lines
+{
+ struct symtab_and_line *sals;
+ int nelts;
+};
+
+/* Given a pc value, return line number it is in.
+ Second arg nonzero means if pc is on the boundary
+ use the previous statement's line number. */
+
+struct symtab_and_line find_pc_line ();
+
+/* Given a string, return the line specified by it.
+ For commands like "list" and "breakpoint". */
+
+struct symtabs_and_lines decode_line_spec ();
+struct symtabs_and_lines decode_line_spec_1 ();
+struct symtabs_and_lines decode_line_1 ();
diff --git a/gnu/usr.bin/kgdb/utils.c b/gnu/usr.bin/kgdb/utils.c
new file mode 100644
index 000000000000..67ff50585193
--- /dev/null
+++ b/gnu/usr.bin/kgdb/utils.c
@@ -0,0 +1,1094 @@
+/*-
+ * This code is derived from software copyrighted by the Free Software
+ * Foundation.
+ *
+ * Modified 1991 by Donn Seeley at UUNET Technologies, Inc.
+ * Modified 1990 by Van Jacobson at Lawrence Berkeley Laboratory.
+ *
+ * $Header: /home/ncvs/src/gnu/usr.bin/kgdb/utils.c,v 1.3 1995/05/30 05:01:24 rgrimes Exp $;
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)utils.c 6.4 (Berkeley) 5/8/91";
+#endif /* not lint */
+
+/* General utility routines for GDB, the GNU debugger.
+ Copyright (C) 1986, 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include "param.h"
+
+#include <stdio.h>
+#include <ctype.h>
+#include <signal.h>
+#include <sys/ioctl.h>
+#include <sys/param.h>
+#include <pwd.h>
+#include "defs.h"
+#ifdef HAVE_TERMIO
+#include <termio.h>
+#endif
+
+/* If this definition isn't overridden by the header files, assume
+ that isatty and fileno exist on this system. */
+#ifndef ISATTY
+#define ISATTY(FP) (isatty (fileno (FP)))
+#endif
+
+extern FILE *instream;
+
+void error ();
+void fatal ();
+
+/* Chain of cleanup actions established with make_cleanup,
+ to be executed if an error happens. */
+
+static struct cleanup *cleanup_chain;
+
+/* Nonzero means a quit has been requested. */
+
+int quit_flag;
+
+/* Nonzero means quit immediately if Control-C is typed now,
+ rather than waiting until QUIT is executed. */
+
+int immediate_quit;
+
+/* Add a new cleanup to the cleanup_chain,
+ and return the previous chain pointer
+ to be passed later to do_cleanups or discard_cleanups.
+ Args are FUNCTION to clean up with, and ARG to pass to it. */
+
+struct cleanup *
+make_cleanup (function, arg)
+ void (*function) ();
+ int arg;
+{
+ register struct cleanup *new
+ = (struct cleanup *) xmalloc (sizeof (struct cleanup));
+ register struct cleanup *old_chain = cleanup_chain;
+
+ new->next = cleanup_chain;
+ new->function = function;
+ new->arg = arg;
+ cleanup_chain = new;
+
+ return old_chain;
+}
+
+/* Discard cleanups and do the actions they describe
+ until we get back to the point OLD_CHAIN in the cleanup_chain. */
+
+void
+do_cleanups (old_chain)
+ register struct cleanup *old_chain;
+{
+ register struct cleanup *ptr;
+ while ((ptr = cleanup_chain) != old_chain)
+ {
+ (*ptr->function) (ptr->arg);
+ cleanup_chain = ptr->next;
+ free (ptr);
+ }
+}
+
+/* Discard cleanups, not doing the actions they describe,
+ until we get back to the point OLD_CHAIN in the cleanup_chain. */
+
+void
+discard_cleanups (old_chain)
+ register struct cleanup *old_chain;
+{
+ register struct cleanup *ptr;
+ while ((ptr = cleanup_chain) != old_chain)
+ {
+ cleanup_chain = ptr->next;
+ free (ptr);
+ }
+}
+
+/* Set the cleanup_chain to 0, and return the old cleanup chain. */
+struct cleanup *
+save_cleanups ()
+{
+ struct cleanup *old_chain = cleanup_chain;
+
+ cleanup_chain = 0;
+ return old_chain;
+}
+
+/* Restore the cleanup chain from a previously saved chain. */
+void
+restore_cleanups (chain)
+ struct cleanup *chain;
+{
+ cleanup_chain = chain;
+}
+
+/* This function is useful for cleanups.
+ Do
+
+ foo = xmalloc (...);
+ old_chain = make_cleanup (free_current_contents, &foo);
+
+ to arrange to free the object thus allocated. */
+
+void
+free_current_contents (location)
+ char **location;
+{
+ free (*location);
+}
+
+/* Generally useful subroutines used throughout the program. */
+
+/* Like malloc but get error if no storage available. */
+
+char *
+xmalloc (size)
+ long size;
+{
+ register char *val = (char *) malloc (size);
+ if (!val)
+ fatal ("virtual memory exhausted.", 0);
+ return val;
+}
+
+/* Like realloc but get error if no storage available. */
+
+char *
+xrealloc (ptr, size)
+ char *ptr;
+ long size;
+{
+ register char *val = (char *) realloc (ptr, size);
+ if (!val)
+ fatal ("virtual memory exhausted.", 0);
+ return val;
+}
+
+/* Print the system error message for errno, and also mention STRING
+ as the file name for which the error was encountered.
+ Then return to command level. */
+
+void
+perror_with_name (string)
+ char *string;
+{
+ extern int sys_nerr;
+ extern int errno;
+ char *err;
+ char *combined;
+
+ if (errno < sys_nerr)
+ err = sys_errlist[errno];
+ else
+ err = "unknown error";
+
+ combined = (char *) alloca (strlen (err) + strlen (string) + 3);
+ strcpy (combined, string);
+ strcat (combined, ": ");
+ strcat (combined, err);
+
+ error ("%s.", combined);
+}
+
+/* Print the system error message for ERRCODE, and also mention STRING
+ as the file name for which the error was encountered. */
+
+void
+print_sys_errmsg (string, errcode)
+ char *string;
+ int errcode;
+{
+ extern int sys_nerr;
+ char *err;
+ char *combined;
+
+ if (errcode < sys_nerr)
+ err = sys_errlist[errcode];
+ else
+ err = "unknown error";
+
+ combined = (char *) alloca (strlen (err) + strlen (string) + 3);
+ strcpy (combined, string);
+ strcat (combined, ": ");
+ strcat (combined, err);
+
+ printf ("%s.\n", combined);
+}
+
+void
+quit ()
+{
+#ifdef HAVE_TERMIO
+ ioctl (fileno (stdout), TCFLSH, 1);
+#else /* not HAVE_TERMIO */
+ ioctl (fileno (stdout), TIOCFLUSH, 0);
+#endif /* not HAVE_TERMIO */
+#ifdef TIOCGPGRP
+ error ("Quit");
+#else
+ error ("Quit (expect signal %d when inferior is resumed)", SIGINT);
+#endif /* TIOCGPGRP */
+}
+
+/* Control C comes here */
+
+void
+request_quit ()
+{
+ extern int remote_debugging;
+
+ quit_flag = 1;
+
+#ifdef USG
+ /* Restore the signal handler. */
+ signal (SIGINT, request_quit);
+#endif
+
+ if (immediate_quit)
+ quit();
+}
+
+/* Print an error message and return to command level.
+ STRING is the error message, used as a fprintf string,
+ and ARG is passed as an argument to it. */
+
+void
+error (string, arg1, arg2, arg3)
+ char *string;
+ int arg1, arg2, arg3;
+{
+ terminal_ours (); /* Should be ok even if no inf. */
+ fflush (stdout);
+ fprintf (stderr, string, arg1, arg2, arg3);
+ fprintf (stderr, "\n");
+ return_to_top_level ();
+}
+
+/* Print an error message and exit reporting failure.
+ This is for a error that we cannot continue from.
+ STRING and ARG are passed to fprintf. */
+
+void
+fatal (string, arg)
+ char *string;
+ int arg;
+{
+ fprintf (stderr, "gdb: ");
+ fprintf (stderr, string, arg);
+ fprintf (stderr, "\n");
+ exit (1);
+}
+
+/* Print an error message and exit, dumping core.
+ STRING is a printf-style control string, and ARG is a corresponding
+ argument. */
+void
+fatal_dump_core (string, arg)
+ char *string;
+ int arg;
+{
+ /* "internal error" is always correct, since GDB should never dump
+ core, no matter what the input. */
+ fprintf (stderr, "gdb internal error: ");
+ fprintf (stderr, string, arg);
+ fprintf (stderr, "\n");
+ signal (SIGQUIT, SIG_DFL);
+ kill (getpid (), SIGQUIT);
+ /* We should never get here, but just in case... */
+ exit (1);
+}
+
+/* Make a copy of the string at PTR with SIZE characters
+ (and add a null character at the end in the copy).
+ Uses malloc to get the space. Returns the address of the copy. */
+
+char *
+savestring (ptr, size)
+ char *ptr;
+ int size;
+{
+ register char *p = (char *) xmalloc (size + 1);
+ bcopy (ptr, p, size);
+ p[size] = 0;
+ return p;
+}
+
+char *
+concat (s1, s2, s3)
+ char *s1, *s2, *s3;
+{
+ register int len = strlen (s1) + strlen (s2) + strlen (s3) + 1;
+ register char *val = (char *) xmalloc (len);
+ strcpy (val, s1);
+ strcat (val, s2);
+ strcat (val, s3);
+ return val;
+}
+
+void
+print_spaces (n, file)
+ register int n;
+ register FILE *file;
+{
+ while (n-- > 0)
+ fputc (' ', file);
+}
+
+/* Ask user a y-or-n question and return 1 iff answer is yes.
+ Takes three args which are given to printf to print the question.
+ The first, a control string, should end in "? ".
+ It should not say how to answer, because we do that. */
+
+int
+query (ctlstr, arg1, arg2)
+ char *ctlstr;
+{
+ register int answer;
+
+ /* Automatically answer "yes" if input is not from a terminal. */
+ if (!input_from_terminal_p ())
+ return 1;
+
+ while (1)
+ {
+ printf (ctlstr, arg1, arg2);
+ printf ("(y or n) ");
+ fflush (stdout);
+ answer = fgetc (stdin);
+ clearerr (stdin); /* in case of C-d */
+ if (answer != '\n')
+ while (fgetc (stdin) != '\n') clearerr (stdin);
+ if (answer >= 'a')
+ answer -= 040;
+ if (answer == 'Y')
+ return 1;
+ if (answer == 'N')
+ return 0;
+ printf ("Please answer y or n.\n");
+ }
+}
+
+/* Parse a C escape sequence. STRING_PTR points to a variable
+ containing a pointer to the string to parse. That pointer
+ is updated past the characters we use. The value of the
+ escape sequence is returned.
+
+ A negative value means the sequence \ newline was seen,
+ which is supposed to be equivalent to nothing at all.
+
+ If \ is followed by a null character, we return a negative
+ value and leave the string pointer pointing at the null character.
+
+ If \ is followed by 000, we return 0 and leave the string pointer
+ after the zeros. A value of 0 does not mean end of string. */
+
+int
+parse_escape (string_ptr)
+ char **string_ptr;
+{
+ register int c = *(*string_ptr)++;
+ switch (c)
+ {
+ case 'a':
+ return '\a';
+ case 'b':
+ return '\b';
+ case 'e':
+ return 033;
+ case 'f':
+ return '\f';
+ case 'n':
+ return '\n';
+ case 'r':
+ return '\r';
+ case 't':
+ return '\t';
+ case 'v':
+ return '\v';
+ case '\n':
+ return -2;
+ case 0:
+ (*string_ptr)--;
+ return 0;
+ case '^':
+ c = *(*string_ptr)++;
+ if (c == '\\')
+ c = parse_escape (string_ptr);
+ if (c == '?')
+ return 0177;
+ return (c & 0200) | (c & 037);
+
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ {
+ register int i = c - '0';
+ register int count = 0;
+ while (++count < 3)
+ {
+ if ((c = *(*string_ptr)++) >= '0' && c <= '7')
+ {
+ i *= 8;
+ i += c - '0';
+ }
+ else
+ {
+ (*string_ptr)--;
+ break;
+ }
+ }
+ return i;
+ }
+ default:
+ return c;
+ }
+}
+
+/* Print the character CH on STREAM as part of the contents
+ of a literal string whose delimiter is QUOTER. */
+
+void
+printchar (ch, stream, quoter)
+ unsigned char ch;
+ FILE *stream;
+ int quoter;
+{
+ register int c = ch;
+ if (c < 040 || c >= 0177)
+ switch (c)
+ {
+ case '\n':
+ fputs_filtered ("\\n", stream);
+ break;
+ case '\b':
+ fputs_filtered ("\\b", stream);
+ break;
+ case '\t':
+ fputs_filtered ("\\t", stream);
+ break;
+ case '\f':
+ fputs_filtered ("\\f", stream);
+ break;
+ case '\r':
+ fputs_filtered ("\\r", stream);
+ break;
+ case '\033':
+ fputs_filtered ("\\e", stream);
+ break;
+ case '\007':
+ fputs_filtered ("\\a", stream);
+ break;
+ default:
+ fprintf_filtered (stream, "\\%.3o", (unsigned int) c);
+ break;
+ }
+ else
+ {
+ if (c == '\\' || c == quoter)
+ fputs_filtered ("\\", stream);
+ fprintf_filtered (stream, "%c", c);
+ }
+}
+
+static int lines_per_page, lines_printed, chars_per_line, chars_printed;
+
+/* Set values of page and line size. */
+static void
+set_screensize_command (arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ char *p = arg;
+ char *p1;
+ int tolinesize = lines_per_page;
+ int tocharsize = chars_per_line;
+
+ if (p == 0)
+ error_no_arg ("set screensize");
+
+ while (*p >= '0' && *p <= '9')
+ p++;
+
+ if (*p && *p != ' ' && *p != '\t')
+ error ("Non-integral argument given to \"set screensize\".");
+
+ tolinesize = atoi (arg);
+
+ while (*p == ' ' || *p == '\t')
+ p++;
+
+ if (*p)
+ {
+ p1 = p;
+ while (*p1 >= '0' && *p1 <= '9')
+ p1++;
+
+ if (*p1)
+ error ("Non-integral second argument given to \"set screensize\".");
+
+ tocharsize = atoi (p);
+ }
+
+ lines_per_page = tolinesize;
+ chars_per_line = tocharsize;
+}
+
+static void
+instream_cleanup(stream)
+ FILE *stream;
+{
+ instream = stream;
+}
+
+static void
+prompt_for_continue ()
+{
+ if (ISATTY(stdin) && ISATTY(stdout))
+ {
+ struct cleanup *old_chain = make_cleanup(instream_cleanup, instream);
+ char *cp, *gdb_readline();
+
+ instream = stdin;
+ immediate_quit++;
+ if (cp = gdb_readline ("---Type <return> to continue---"))
+ free(cp);
+ chars_printed = lines_printed = 0;
+ immediate_quit--;
+ do_cleanups(old_chain);
+ }
+}
+
+/* Reinitialize filter; ie. tell it to reset to original values. */
+
+void
+reinitialize_more_filter ()
+{
+ lines_printed = 0;
+ chars_printed = 0;
+}
+
+static void
+screensize_info (arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ if (arg)
+ error ("\"info screensize\" does not take any arguments.");
+
+ if (!lines_per_page)
+ printf ("Output more filtering is disabled.\n");
+ else
+ {
+ printf ("Output more filtering is enabled with\n");
+ printf ("%d lines per page and %d characters per line.\n",
+ lines_per_page, chars_per_line);
+ }
+}
+
+/* Like fputs but pause after every screenful.
+ Unlike fputs, fputs_filtered does not return a value.
+ It is OK for LINEBUFFER to be NULL, in which case just don't print
+ anything.
+
+ Note that a longjmp to top level may occur in this routine
+ (since prompt_for_continue may do so) so this routine should not be
+ called when cleanups are not in place. */
+
+void
+fputs_filtered (linebuffer, stream)
+ char *linebuffer;
+ FILE *stream;
+{
+ char *lineptr;
+
+ if (linebuffer == 0)
+ return;
+
+ /* Don't do any filtering if it is disabled. */
+ if (stream != stdout || !ISATTY(stdout) || lines_per_page == 0)
+ {
+ fputs (linebuffer, stream);
+ return;
+ }
+
+ /* Go through and output each character. Show line extension
+ when this is necessary; prompt user for new page when this is
+ necessary. */
+
+ lineptr = linebuffer;
+ while (*lineptr)
+ {
+ /* Possible new page. */
+ if (lines_printed >= lines_per_page - 1)
+ prompt_for_continue ();
+
+ while (*lineptr && *lineptr != '\n')
+ {
+ /* Print a single line. */
+ if (*lineptr == '\t')
+ {
+ putc ('\t', stream);
+ /* Shifting right by 3 produces the number of tab stops
+ we have already passed, and then adding one and
+ shifting left 3 advances to the next tab stop. */
+ chars_printed = ((chars_printed >> 3) + 1) << 3;
+ lineptr++;
+ }
+ else
+ {
+ putc (*lineptr, stream);
+ chars_printed++;
+ lineptr++;
+ }
+
+ if (chars_printed >= chars_per_line)
+ {
+ chars_printed = 0;
+ lines_printed++;
+ /* Possible new page. */
+ if (lines_printed >= lines_per_page - 1)
+ prompt_for_continue ();
+ }
+ }
+
+ if (*lineptr == '\n')
+ {
+ lines_printed++;
+ putc ('\n', stream);
+ lineptr++;
+ chars_printed = 0;
+ }
+ }
+}
+
+/* fputs_demangled is a variant of fputs_filtered that
+ demangles g++ names.*/
+
+void
+fputs_demangled (linebuffer, stream, arg_mode)
+ char *linebuffer;
+ FILE *stream;
+{
+#ifdef __STDC__
+ extern char *cplus_demangle (const char *, int);
+#else
+ extern char *cplus_demangle ();
+#endif
+#define SYMBOL_MAX 1024
+
+#define SYMBOL_CHAR(c) (isascii(c) && (isalnum(c) || (c) == '_' || (c) == '$'))
+
+ char buf[SYMBOL_MAX+1];
+ char *p;
+
+ if (linebuffer == NULL)
+ return;
+
+ p = linebuffer;
+
+ while ( *p != (char) 0 ) {
+ int i = 0;
+
+ /* collect non-interesting characters into buf */
+ while ( *p != (char) 0 && !SYMBOL_CHAR(*p) ) {
+ buf[i++] = *p;
+ p++;
+ }
+ if (i > 0) {
+ /* output the non-interesting characters without demangling */
+ buf[i] = (char) 0;
+ fputs_filtered(buf, stream);
+ i = 0; /* reset buf */
+ }
+
+ /* and now the interesting characters */
+ while (i < SYMBOL_MAX && *p != (char) 0 && SYMBOL_CHAR(*p) ) {
+ buf[i++] = *p;
+ p++;
+ }
+ buf[i] = (char) 0;
+ if (i > 0) {
+ char * result;
+
+ if ( (result = cplus_demangle(buf, arg_mode)) != NULL ) {
+ fputs_filtered(result, stream);
+ free(result);
+ }
+ else {
+ fputs_filtered(buf, stream);
+ }
+ }
+ }
+}
+
+/* Print ARG1, ARG2, and ARG3 on stdout using format FORMAT. If this
+ information is going to put the amount written since the last call
+ to INIIALIZE_MORE_FILTER or the last page break over the page size,
+ print out a pause message and do a gdb_readline to get the users
+ permision to continue.
+
+ Unlike fprintf, this function does not return a value.
+
+ Note that this routine has a restriction that the length of the
+ final output line must be less than 255 characters *or* it must be
+ less than twice the size of the format string. This is a very
+ arbitrary restriction, but it is an internal restriction, so I'll
+ put it in. This means that the %s format specifier is almost
+ useless; unless the caller can GUARANTEE that the string is short
+ enough, fputs_filtered should be used instead.
+
+ Note also that a longjmp to top level may occur in this routine
+ (since prompt_for_continue may do so) so this routine should not be
+ called when cleanups are not in place. */
+
+void
+fprintf_filtered (stream, format, arg1, arg2, arg3, arg4, arg5, arg6)
+ FILE *stream;
+ char *format;
+ int arg1, arg2, arg3, arg4, arg5, arg6;
+{
+ static char *linebuffer = (char *) 0;
+ static int line_size;
+ int format_length = strlen (format);
+ int numchars;
+
+ /* Allocated linebuffer for the first time. */
+ if (!linebuffer)
+ {
+ linebuffer = (char *) xmalloc (255);
+ line_size = 255;
+ }
+
+ /* Reallocate buffer to a larger size if this is necessary. */
+ if (format_length * 2 > line_size)
+ {
+ line_size = format_length * 2;
+
+ /* You don't have to copy. */
+ free (linebuffer);
+ linebuffer = (char *) xmalloc (line_size);
+ }
+
+ /* This won't blow up if the restrictions described above are
+ followed. */
+ (void) sprintf (linebuffer, format, arg1, arg2, arg3, arg4, arg5, arg6);
+
+ fputs_filtered (linebuffer, stream);
+}
+
+void
+printf_filtered (format, arg1, arg2, arg3, arg4, arg5, arg6)
+ char *format;
+ int arg1, arg2, arg3, arg4, arg5, arg6;
+{
+ fprintf_filtered (stdout, format, arg1, arg2, arg3, arg4, arg5, arg6);
+}
+
+/* Print N spaces. */
+void
+print_spaces_filtered (n, stream)
+ int n;
+ FILE *stream;
+{
+ register char *s = (char *) alloca (n + 1);
+ register char *t = s;
+
+ while (n--)
+ *t++ = ' ';
+ *t = '\0';
+
+ fputs_filtered (s, stream);
+}
+
+
+#ifdef USG
+bcopy (from, to, count)
+char *from, *to;
+{
+ memcpy (to, from, count);
+}
+
+bcmp (from, to, count)
+{
+ return (memcmp (to, from, count));
+}
+
+bzero (to, count)
+char *to;
+{
+ while (count--)
+ *to++ = 0;
+}
+
+getwd (buf)
+char *buf;
+{
+ getcwd (buf, MAXPATHLEN);
+}
+
+char *
+index (s, c)
+ char *s;
+{
+ char *strchr ();
+ return strchr (s, c);
+}
+
+char *
+rindex (s, c)
+ char *s;
+{
+ char *strrchr ();
+ return strrchr (s, c);
+}
+
+#ifndef USG
+char *sys_siglist[32] = {
+ "SIG0",
+ "SIGHUP",
+ "SIGINT",
+ "SIGQUIT",
+ "SIGILL",
+ "SIGTRAP",
+ "SIGIOT",
+ "SIGEMT",
+ "SIGFPE",
+ "SIGKILL",
+ "SIGBUS",
+ "SIGSEGV",
+ "SIGSYS",
+ "SIGPIPE",
+ "SIGALRM",
+ "SIGTERM",
+ "SIGUSR1",
+ "SIGUSR2",
+ "SIGCLD",
+ "SIGPWR",
+ "SIGWIND",
+ "SIGPHONE",
+ "SIGPOLL",
+};
+#endif
+
+/* Queue routines */
+
+struct queue {
+ struct queue *forw;
+ struct queue *back;
+};
+
+insque (item, after)
+struct queue *item;
+struct queue *after;
+{
+ item->forw = after->forw;
+ after->forw->back = item;
+
+ item->back = after;
+ after->forw = item;
+}
+
+remque (item)
+struct queue *item;
+{
+ item->forw->back = item->back;
+ item->back->forw = item->forw;
+}
+#endif /* USG */
+
+#ifdef USG
+/* There is too much variation in Sys V signal numbers and names, so
+ we must initialize them at runtime. */
+static char undoc[] = "(undocumented)";
+
+char *sys_siglist[NSIG];
+#endif /* USG */
+
+extern struct cmd_list_element *setlist;
+
+void
+_initialize_utils ()
+{
+ int i;
+ add_cmd ("screensize", class_support, set_screensize_command,
+ "Change gdb's notion of the size of the output screen.\n\
+The first argument is the number of lines on a page.\n\
+The second argument (optional) is the number of characters on a line.",
+ &setlist);
+ add_info ("screensize", screensize_info,
+ "Show gdb's current notion of the size of the output screen.");
+
+ /* These defaults will be used if we are unable to get the correct
+ values from termcap. */
+ lines_per_page = 24;
+ chars_per_line = 80;
+ /* Initialize the screen height and width from termcap. */
+ {
+ int termtype = getenv ("TERM");
+
+ /* Positive means success, nonpositive means failure. */
+ int status;
+
+ /* 2048 is large enough for all known terminals, according to the
+ GNU termcap manual. */
+ char term_buffer[2048];
+
+ if (termtype)
+ {
+ status = tgetent (term_buffer, termtype);
+ if (status > 0)
+ {
+ int val;
+
+ val = tgetnum ("li");
+ if (val >= 0)
+ lines_per_page = val;
+ else
+ /* The number of lines per page is not mentioned
+ in the terminal description. This probably means
+ that paging is not useful (e.g. emacs shell window),
+ so disable paging. */
+ lines_per_page = 0;
+
+ val = tgetnum ("co");
+ if (val >= 0)
+ chars_per_line = val;
+ }
+ }
+ }
+
+#ifdef USG
+ /* Initialize signal names. */
+ for (i = 0; i < NSIG; i++)
+ sys_siglist[i] = undoc;
+
+#ifdef SIGHUP
+ sys_siglist[SIGHUP ] = "SIGHUP";
+#endif
+#ifdef SIGINT
+ sys_siglist[SIGINT ] = "SIGINT";
+#endif
+#ifdef SIGQUIT
+ sys_siglist[SIGQUIT ] = "SIGQUIT";
+#endif
+#ifdef SIGILL
+ sys_siglist[SIGILL ] = "SIGILL";
+#endif
+#ifdef SIGTRAP
+ sys_siglist[SIGTRAP ] = "SIGTRAP";
+#endif
+#ifdef SIGIOT
+ sys_siglist[SIGIOT ] = "SIGIOT";
+#endif
+#ifdef SIGEMT
+ sys_siglist[SIGEMT ] = "SIGEMT";
+#endif
+#ifdef SIGFPE
+ sys_siglist[SIGFPE ] = "SIGFPE";
+#endif
+#ifdef SIGKILL
+ sys_siglist[SIGKILL ] = "SIGKILL";
+#endif
+#ifdef SIGBUS
+ sys_siglist[SIGBUS ] = "SIGBUS";
+#endif
+#ifdef SIGSEGV
+ sys_siglist[SIGSEGV ] = "SIGSEGV";
+#endif
+#ifdef SIGSYS
+ sys_siglist[SIGSYS ] = "SIGSYS";
+#endif
+#ifdef SIGPIPE
+ sys_siglist[SIGPIPE ] = "SIGPIPE";
+#endif
+#ifdef SIGALRM
+ sys_siglist[SIGALRM ] = "SIGALRM";
+#endif
+#ifdef SIGTERM
+ sys_siglist[SIGTERM ] = "SIGTERM";
+#endif
+#ifdef SIGUSR1
+ sys_siglist[SIGUSR1 ] = "SIGUSR1";
+#endif
+#ifdef SIGUSR2
+ sys_siglist[SIGUSR2 ] = "SIGUSR2";
+#endif
+#ifdef SIGCLD
+ sys_siglist[SIGCLD ] = "SIGCLD";
+#endif
+#ifdef SIGCHLD
+ sys_siglist[SIGCHLD ] = "SIGCHLD";
+#endif
+#ifdef SIGPWR
+ sys_siglist[SIGPWR ] = "SIGPWR";
+#endif
+#ifdef SIGTSTP
+ sys_siglist[SIGTSTP ] = "SIGTSTP";
+#endif
+#ifdef SIGTTIN
+ sys_siglist[SIGTTIN ] = "SIGTTIN";
+#endif
+#ifdef SIGTTOU
+ sys_siglist[SIGTTOU ] = "SIGTTOU";
+#endif
+#ifdef SIGSTOP
+ sys_siglist[SIGSTOP ] = "SIGSTOP";
+#endif
+#ifdef SIGXCPU
+ sys_siglist[SIGXCPU ] = "SIGXCPU";
+#endif
+#ifdef SIGXFSZ
+ sys_siglist[SIGXFSZ ] = "SIGXFSZ";
+#endif
+#ifdef SIGVTALRM
+ sys_siglist[SIGVTALRM ] = "SIGVTALRM";
+#endif
+#ifdef SIGPROF
+ sys_siglist[SIGPROF ] = "SIGPROF";
+#endif
+#ifdef SIGWINCH
+ sys_siglist[SIGWINCH ] = "SIGWINCH";
+#endif
+#ifdef SIGCONT
+ sys_siglist[SIGCONT ] = "SIGCONT";
+#endif
+#ifdef SIGURG
+ sys_siglist[SIGURG ] = "SIGURG";
+#endif
+#ifdef SIGIO
+ sys_siglist[SIGIO ] = "SIGIO";
+#endif
+#ifdef SIGWIND
+ sys_siglist[SIGWIND ] = "SIGWIND";
+#endif
+#ifdef SIGPHONE
+ sys_siglist[SIGPHONE ] = "SIGPHONE";
+#endif
+#ifdef SIGPOLL
+ sys_siglist[SIGPOLL ] = "SIGPOLL";
+#endif
+#endif /* USG */
+}
diff --git a/gnu/usr.bin/kgdb/valarith.c b/gnu/usr.bin/kgdb/valarith.c
new file mode 100644
index 000000000000..9cbd30a3a1c9
--- /dev/null
+++ b/gnu/usr.bin/kgdb/valarith.c
@@ -0,0 +1,690 @@
+/*-
+ * This code is derived from software copyrighted by the Free Software
+ * Foundation.
+ *
+ * Modified 1991 by Donn Seeley at UUNET Technologies, Inc.
+ * Modified 1990 by Van Jacobson at Lawrence Berkeley Laboratory.
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)valarith.c 6.3 (Berkeley) 5/8/91";
+#endif /* not lint */
+
+/* Perform arithmetic and other operations on values, for GDB.
+ Copyright (C) 1986, 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include "defs.h"
+#include "param.h"
+#include "symtab.h"
+#include "value.h"
+#include "expression.h"
+
+
+value value_x_binop ();
+value value_subscripted_rvalue ();
+
+value
+value_add (arg1, arg2)
+ value arg1, arg2;
+{
+ register value val, valint, valptr;
+ register int len;
+
+ COERCE_ARRAY (arg1);
+ COERCE_ARRAY (arg2);
+
+ if ((TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_PTR
+ || TYPE_CODE (VALUE_TYPE (arg2)) == TYPE_CODE_PTR)
+ &&
+ (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_INT
+ || TYPE_CODE (VALUE_TYPE (arg2)) == TYPE_CODE_INT))
+ /* Exactly one argument is a pointer, and one is an integer. */
+ {
+ if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_PTR)
+ {
+ valptr = arg1;
+ valint = arg2;
+ }
+ else
+ {
+ valptr = arg2;
+ valint = arg1;
+ }
+ len = TYPE_LENGTH (TYPE_TARGET_TYPE (VALUE_TYPE (valptr)));
+ if (len == 0) len = 1; /* For (void *) */
+ val = value_from_long (builtin_type_long,
+ value_as_long (valptr)
+ + (len * value_as_long (valint)));
+ VALUE_TYPE (val) = VALUE_TYPE (valptr);
+ return val;
+ }
+
+ return value_binop (arg1, arg2, BINOP_ADD);
+}
+
+value
+value_sub (arg1, arg2)
+ value arg1, arg2;
+{
+ register value val;
+
+ COERCE_ARRAY (arg1);
+ COERCE_ARRAY (arg2);
+
+ if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_PTR
+ &&
+ TYPE_CODE (VALUE_TYPE (arg2)) == TYPE_CODE_INT)
+ {
+ val = value_from_long (builtin_type_long,
+ value_as_long (arg1)
+ - TYPE_LENGTH (TYPE_TARGET_TYPE (VALUE_TYPE (arg1))) * value_as_long (arg2));
+ VALUE_TYPE (val) = VALUE_TYPE (arg1);
+ return val;
+ }
+
+ if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_PTR
+ &&
+ VALUE_TYPE (arg1) == VALUE_TYPE (arg2))
+ {
+ val = value_from_long (builtin_type_long,
+ (value_as_long (arg1) - value_as_long (arg2))
+ / TYPE_LENGTH (TYPE_TARGET_TYPE (VALUE_TYPE (arg1))));
+ return val;
+ }
+
+ return value_binop (arg1, arg2, BINOP_SUB);
+}
+
+/* Return the value of ARRAY[IDX]. */
+
+value
+value_subscript (array, idx)
+ value array, idx;
+{
+ if (TYPE_CODE (VALUE_TYPE (array)) == TYPE_CODE_ARRAY
+ && VALUE_LVAL (array) != lval_memory)
+ return value_subscripted_rvalue (array, idx);
+ else
+ return value_ind (value_add (array, idx));
+}
+
+/* Return the value of EXPR[IDX], expr an aggregate rvalue
+ (eg, a vector register) */
+
+value
+value_subscripted_rvalue (array, idx)
+ value array, idx;
+{
+ struct type *elt_type = TYPE_TARGET_TYPE (VALUE_TYPE (array));
+ int elt_size = TYPE_LENGTH (elt_type);
+ int elt_offs = elt_size * value_as_long (idx);
+ value v;
+
+ if (elt_offs >= TYPE_LENGTH (VALUE_TYPE (array)))
+ error ("no such vector element");
+
+ if (TYPE_CODE (elt_type) == TYPE_CODE_FLT)
+ {
+ if (elt_size == sizeof (float))
+ v = value_from_double (elt_type, (double) *(float *)
+ (VALUE_CONTENTS (array) + elt_offs));
+ else
+ v = value_from_double (elt_type, *(double *)
+ (VALUE_CONTENTS (array) + elt_offs));
+ }
+ else
+ {
+ int offs;
+ union {int i; char c;} test;
+ test.i = 1;
+ if (test.c == 1)
+ offs = 0;
+ else
+ offs = sizeof (LONGEST) - elt_size;
+ v = value_from_long (elt_type, *(LONGEST *)
+ (VALUE_CONTENTS (array) + elt_offs - offs));
+ }
+
+ if (VALUE_LVAL (array) == lval_internalvar)
+ VALUE_LVAL (v) = lval_internalvar_component;
+ else
+ VALUE_LVAL (v) = not_lval;
+ VALUE_ADDRESS (v) = VALUE_ADDRESS (array);
+ VALUE_OFFSET (v) = VALUE_OFFSET (array) + elt_offs;
+ VALUE_BITSIZE (v) = elt_size * 8;
+ return v;
+}
+
+/* Check to see if either argument is a structure. This is called so
+ we know whether to go ahead with the normal binop or look for a
+ user defined function instead.
+
+ For now, we do not overload the `=' operator. */
+
+int
+binop_user_defined_p (op, arg1, arg2)
+ enum exp_opcode op;
+ value arg1, arg2;
+{
+ if (op == BINOP_ASSIGN)
+ return 0;
+ return (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_STRUCT
+ || TYPE_CODE (VALUE_TYPE (arg2)) == TYPE_CODE_STRUCT
+ || (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_REF
+ && TYPE_CODE (TYPE_TARGET_TYPE (VALUE_TYPE (arg1))) == TYPE_CODE_STRUCT)
+ || (TYPE_CODE (VALUE_TYPE (arg2)) == TYPE_CODE_REF
+ && TYPE_CODE (TYPE_TARGET_TYPE (VALUE_TYPE (arg2))) == TYPE_CODE_STRUCT));
+}
+
+/* Check to see if argument is a structure. This is called so
+ we know whether to go ahead with the normal unop or look for a
+ user defined function instead.
+
+ For now, we do not overload the `&' operator. */
+
+int unop_user_defined_p (op, arg1)
+ enum exp_opcode op;
+ value arg1;
+{
+ if (op == UNOP_ADDR)
+ return 0;
+ return (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_STRUCT
+ || (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_REF
+ && TYPE_CODE (TYPE_TARGET_TYPE (VALUE_TYPE (arg1))) == TYPE_CODE_STRUCT));
+}
+
+/* We know either arg1 or arg2 is a structure, so try to find the right
+ user defined function. Create an argument vector that calls
+ arg1.operator @ (arg1,arg2) and return that value (where '@' is any
+ binary operator which is legal for GNU C++). */
+
+value
+value_x_binop (arg1, arg2, op, otherop)
+ value arg1, arg2;
+ int op, otherop;
+{
+ value * argvec;
+ char *ptr;
+ char tstr[13];
+ int static_memfuncp;
+
+ COERCE_ENUM (arg1);
+ COERCE_ENUM (arg2);
+
+ /* now we know that what we have to do is construct our
+ arg vector and find the right function to call it with. */
+
+ if (TYPE_CODE (VALUE_TYPE (arg1)) != TYPE_CODE_STRUCT)
+ error ("friend functions not implemented yet");
+
+ argvec = (value *) alloca (sizeof (value) * 4);
+ argvec[1] = value_addr (arg1);
+ argvec[2] = arg2;
+ argvec[3] = 0;
+
+ /* make the right function name up */
+ strcpy(tstr, "operator __");
+ ptr = tstr+9;
+ switch (op)
+ {
+ case BINOP_ADD: strcpy(ptr,"+"); break;
+ case BINOP_SUB: strcpy(ptr,"-"); break;
+ case BINOP_MUL: strcpy(ptr,"*"); break;
+ case BINOP_DIV: strcpy(ptr,"/"); break;
+ case BINOP_REM: strcpy(ptr,"%"); break;
+ case BINOP_LSH: strcpy(ptr,"<<"); break;
+ case BINOP_RSH: strcpy(ptr,">>"); break;
+ case BINOP_LOGAND: strcpy(ptr,"&"); break;
+ case BINOP_LOGIOR: strcpy(ptr,"|"); break;
+ case BINOP_LOGXOR: strcpy(ptr,"^"); break;
+ case BINOP_AND: strcpy(ptr,"&&"); break;
+ case BINOP_OR: strcpy(ptr,"||"); break;
+ case BINOP_MIN: strcpy(ptr,"<?"); break;
+ case BINOP_MAX: strcpy(ptr,">?"); break;
+ case BINOP_ASSIGN: strcpy(ptr,"="); break;
+ case BINOP_ASSIGN_MODIFY:
+ switch (otherop)
+ {
+ case BINOP_ADD: strcpy(ptr,"+="); break;
+ case BINOP_SUB: strcpy(ptr,"-="); break;
+ case BINOP_MUL: strcpy(ptr,"*="); break;
+ case BINOP_DIV: strcpy(ptr,"/="); break;
+ case BINOP_REM: strcpy(ptr,"%="); break;
+ case BINOP_LOGAND: strcpy(ptr,"&="); break;
+ case BINOP_LOGIOR: strcpy(ptr,"|="); break;
+ case BINOP_LOGXOR: strcpy(ptr,"^="); break;
+ default:
+ error ("Invalid binary operation specified.");
+ }
+ break;
+ case BINOP_SUBSCRIPT: strcpy(ptr,"[]"); break;
+ case BINOP_EQUAL: strcpy(ptr,"=="); break;
+ case BINOP_NOTEQUAL: strcpy(ptr,"!="); break;
+ case BINOP_LESS: strcpy(ptr,"<"); break;
+ case BINOP_GTR: strcpy(ptr,">"); break;
+ case BINOP_GEQ: strcpy(ptr,">="); break;
+ case BINOP_LEQ: strcpy(ptr,"<="); break;
+ default:
+ error ("Invalid binary operation specified.");
+ }
+ argvec[0] = value_struct_elt (arg1, argvec+1, tstr, &static_memfuncp, "structure");
+ if (argvec[0])
+ {
+ if (static_memfuncp)
+ {
+ argvec[1] = argvec[0];
+ argvec++;
+ }
+ return call_function (argvec[0], 2 - static_memfuncp, argvec + 1);
+ }
+ error ("member function %s not found", tstr);
+}
+
+/* We know that arg1 is a structure, so try to find a unary user
+ defined operator that matches the operator in question.
+ Create an argument vector that calls arg1.operator @ (arg1)
+ and return that value (where '@' is (almost) any unary operator which
+ is legal for GNU C++). */
+
+value
+value_x_unop (arg1, op)
+ value arg1;
+ int op;
+{
+ value * argvec;
+ char *ptr;
+ char tstr[13];
+ int static_memfuncp;
+
+ COERCE_ENUM (arg1);
+
+ /* now we know that what we have to do is construct our
+ arg vector and find the right function to call it with. */
+
+ if (TYPE_CODE (VALUE_TYPE (arg1)) != TYPE_CODE_STRUCT)
+ error ("friend functions not implemented yet");
+
+ argvec = (value *) alloca (sizeof (value) * 3);
+ argvec[1] = value_addr (arg1);
+ argvec[2] = 0;
+
+ /* make the right function name up */
+ strcpy(tstr,"operator __");
+ ptr = tstr+9;
+ switch (op)
+ {
+ case UNOP_PREINCREMENT: strcpy(ptr,"++"); break;
+ case UNOP_PREDECREMENT: strcpy(ptr,"++"); break;
+ case UNOP_POSTINCREMENT: strcpy(ptr,"++"); break;
+ case UNOP_POSTDECREMENT: strcpy(ptr,"++"); break;
+ case UNOP_ZEROP: strcpy(ptr,"!"); break;
+ case UNOP_LOGNOT: strcpy(ptr,"~"); break;
+ case UNOP_NEG: strcpy(ptr,"-"); break;
+ default:
+ error ("Invalid binary operation specified.");
+ }
+ argvec[0] = value_struct_elt (arg1, argvec+1, tstr, &static_memfuncp, "structure");
+ if (argvec[0])
+ {
+ if (static_memfuncp)
+ {
+ argvec[1] = argvec[0];
+ argvec++;
+ }
+ return call_function (argvec[0], 1 - static_memfuncp, argvec + 1);
+ }
+ error ("member function %s not found", tstr);
+}
+
+/* Perform a binary operation on two integers or two floats.
+ Does not support addition and subtraction on pointers;
+ use value_add or value_sub if you want to handle those possibilities. */
+
+value
+value_binop (arg1, arg2, op)
+ value arg1, arg2;
+ int op;
+{
+ register value val;
+
+ COERCE_ENUM (arg1);
+ COERCE_ENUM (arg2);
+
+ if ((TYPE_CODE (VALUE_TYPE (arg1)) != TYPE_CODE_FLT
+ &&
+ TYPE_CODE (VALUE_TYPE (arg1)) != TYPE_CODE_INT)
+ ||
+ (TYPE_CODE (VALUE_TYPE (arg2)) != TYPE_CODE_FLT
+ &&
+ TYPE_CODE (VALUE_TYPE (arg2)) != TYPE_CODE_INT))
+ error ("Argument to arithmetic operation not a number.");
+
+ if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_FLT
+ ||
+ TYPE_CODE (VALUE_TYPE (arg2)) == TYPE_CODE_FLT)
+ {
+ double v1, v2, v;
+ v1 = value_as_double (arg1);
+ v2 = value_as_double (arg2);
+ switch (op)
+ {
+ case BINOP_ADD:
+ v = v1 + v2;
+ break;
+
+ case BINOP_SUB:
+ v = v1 - v2;
+ break;
+
+ case BINOP_MUL:
+ v = v1 * v2;
+ break;
+
+ case BINOP_DIV:
+ v = v1 / v2;
+ break;
+
+ default:
+ error ("Integer-only operation on floating point number.");
+ }
+
+ val = allocate_value (builtin_type_double);
+ *(double *) VALUE_CONTENTS (val) = v;
+ }
+ else
+ /* Integral operations here. */
+ {
+ /* Should we promote to unsigned longest? */
+ if ((TYPE_UNSIGNED (VALUE_TYPE (arg1))
+ || TYPE_UNSIGNED (VALUE_TYPE (arg2)))
+ && (TYPE_LENGTH (VALUE_TYPE (arg1)) >= sizeof (unsigned LONGEST)
+ || TYPE_LENGTH (VALUE_TYPE (arg2)) >= sizeof (unsigned LONGEST)))
+ {
+ unsigned LONGEST v1, v2, v;
+ v1 = (unsigned LONGEST) value_as_long (arg1);
+ v2 = (unsigned LONGEST) value_as_long (arg2);
+
+ switch (op)
+ {
+ case BINOP_ADD:
+ v = v1 + v2;
+ break;
+
+ case BINOP_SUB:
+ v = v1 - v2;
+ break;
+
+ case BINOP_MUL:
+ v = v1 * v2;
+ break;
+
+ case BINOP_DIV:
+ v = v1 / v2;
+ break;
+
+ case BINOP_REM:
+ v = v1 % v2;
+ break;
+
+ case BINOP_LSH:
+ v = v1 << v2;
+ break;
+
+ case BINOP_RSH:
+ v = v1 >> v2;
+ break;
+
+ case BINOP_LOGAND:
+ v = v1 & v2;
+ break;
+
+ case BINOP_LOGIOR:
+ v = v1 | v2;
+ break;
+
+ case BINOP_LOGXOR:
+ v = v1 ^ v2;
+ break;
+
+ case BINOP_AND:
+ v = v1 && v2;
+ break;
+
+ case BINOP_OR:
+ v = v1 || v2;
+ break;
+
+ case BINOP_MIN:
+ v = v1 < v2 ? v1 : v2;
+ break;
+
+ case BINOP_MAX:
+ v = v1 > v2 ? v1 : v2;
+ break;
+
+ default:
+ error ("Invalid binary operation on numbers.");
+ }
+
+ val = allocate_value (BUILTIN_TYPE_UNSIGNED_LONGEST);
+ *(unsigned LONGEST *) VALUE_CONTENTS (val) = v;
+ }
+ else
+ {
+ LONGEST v1, v2, v;
+ v1 = value_as_long (arg1);
+ v2 = value_as_long (arg2);
+
+ switch (op)
+ {
+ case BINOP_ADD:
+ v = v1 + v2;
+ break;
+
+ case BINOP_SUB:
+ v = v1 - v2;
+ break;
+
+ case BINOP_MUL:
+ v = v1 * v2;
+ break;
+
+ case BINOP_DIV:
+ v = v1 / v2;
+ break;
+
+ case BINOP_REM:
+ v = v1 % v2;
+ break;
+
+ case BINOP_LSH:
+ v = v1 << v2;
+ break;
+
+ case BINOP_RSH:
+ v = v1 >> v2;
+ break;
+
+ case BINOP_LOGAND:
+ v = v1 & v2;
+ break;
+
+ case BINOP_LOGIOR:
+ v = v1 | v2;
+ break;
+
+ case BINOP_LOGXOR:
+ v = v1 ^ v2;
+ break;
+
+ case BINOP_AND:
+ v = v1 && v2;
+ break;
+
+ case BINOP_OR:
+ v = v1 || v2;
+ break;
+
+ case BINOP_MIN:
+ v = v1 < v2 ? v1 : v2;
+ break;
+
+ case BINOP_MAX:
+ v = v1 > v2 ? v1 : v2;
+ break;
+
+ default:
+ error ("Invalid binary operation on numbers.");
+ }
+
+ val = allocate_value (BUILTIN_TYPE_LONGEST);
+ *(LONGEST *) VALUE_CONTENTS (val) = v;
+ }
+ }
+
+ return val;
+}
+
+/* Simulate the C operator ! -- return 1 if ARG1 contains zeros. */
+
+int
+value_zerop (arg1)
+ value arg1;
+{
+ register int len;
+ register char *p;
+
+ COERCE_ARRAY (arg1);
+
+ len = TYPE_LENGTH (VALUE_TYPE (arg1));
+ p = VALUE_CONTENTS (arg1);
+
+ while (--len >= 0)
+ {
+ if (*p++)
+ break;
+ }
+
+ return len < 0;
+}
+
+/* Simulate the C operator == by returning a 1
+ iff ARG1 and ARG2 have equal contents. */
+
+int
+value_equal (arg1, arg2)
+ register value arg1, arg2;
+
+{
+ register int len;
+ register char *p1, *p2;
+ enum type_code code1;
+ enum type_code code2;
+
+ COERCE_ARRAY (arg1);
+ COERCE_ARRAY (arg2);
+
+ code1 = TYPE_CODE (VALUE_TYPE (arg1));
+ code2 = TYPE_CODE (VALUE_TYPE (arg2));
+
+ if (code1 == TYPE_CODE_INT && code2 == TYPE_CODE_INT)
+ return value_as_long (arg1) == value_as_long (arg2);
+ else if ((code1 == TYPE_CODE_FLT || code1 == TYPE_CODE_INT)
+ && (code2 == TYPE_CODE_FLT || code2 == TYPE_CODE_INT))
+ return value_as_double (arg1) == value_as_double (arg2);
+ else if ((code1 == TYPE_CODE_PTR && code2 == TYPE_CODE_INT)
+ || (code2 == TYPE_CODE_PTR && code1 == TYPE_CODE_INT))
+ return (char *) value_as_long (arg1) == (char *) value_as_long (arg2);
+ else if (code1 == code2
+ && ((len = TYPE_LENGTH (VALUE_TYPE (arg1)))
+ == TYPE_LENGTH (VALUE_TYPE (arg2))))
+ {
+ p1 = VALUE_CONTENTS (arg1);
+ p2 = VALUE_CONTENTS (arg2);
+ while (--len >= 0)
+ {
+ if (*p1++ != *p2++)
+ break;
+ }
+ return len < 0;
+ }
+ else
+ error ("Invalid type combination in equality test.");
+}
+
+/* Simulate the C operator < by returning 1
+ iff ARG1's contents are less than ARG2's. */
+
+int
+value_less (arg1, arg2)
+ register value arg1, arg2;
+{
+ register enum type_code code1;
+ register enum type_code code2;
+
+ COERCE_ARRAY (arg1);
+ COERCE_ARRAY (arg2);
+
+ code1 = TYPE_CODE (VALUE_TYPE (arg1));
+ code2 = TYPE_CODE (VALUE_TYPE (arg2));
+
+ if (code1 == TYPE_CODE_INT && code2 == TYPE_CODE_INT)
+ return value_as_long (arg1) < value_as_long (arg2);
+ else if ((code1 == TYPE_CODE_FLT || code1 == TYPE_CODE_INT)
+ && (code2 == TYPE_CODE_FLT || code2 == TYPE_CODE_INT))
+ return value_as_double (arg1) < value_as_double (arg2);
+ else if ((code1 == TYPE_CODE_PTR || code1 == TYPE_CODE_INT)
+ && (code2 == TYPE_CODE_PTR || code2 == TYPE_CODE_INT))
+ return (char *) value_as_long (arg1) < (char *) value_as_long (arg2);
+ else
+ error ("Invalid type combination in ordering comparison.");
+}
+
+/* The unary operators - and ~. Both free the argument ARG1. */
+
+value
+value_neg (arg1)
+ register value arg1;
+{
+ register struct type *type;
+
+ COERCE_ENUM (arg1);
+
+ type = VALUE_TYPE (arg1);
+
+ if (TYPE_CODE (type) == TYPE_CODE_FLT)
+ return value_from_double (type, - value_as_double (arg1));
+ else if (TYPE_CODE (type) == TYPE_CODE_INT)
+ return value_from_long (type, - value_as_long (arg1));
+ else
+ error ("Argument to negate operation not a number.");
+}
+
+value
+value_lognot (arg1)
+ register value arg1;
+{
+ COERCE_ENUM (arg1);
+
+ if (TYPE_CODE (VALUE_TYPE (arg1)) != TYPE_CODE_INT)
+ error ("Argument to complement operation not an integer.");
+
+ return value_from_long (VALUE_TYPE (arg1), ~ value_as_long (arg1));
+}
+
diff --git a/gnu/usr.bin/kgdb/valops.c b/gnu/usr.bin/kgdb/valops.c
new file mode 100644
index 000000000000..5efb89477599
--- /dev/null
+++ b/gnu/usr.bin/kgdb/valops.c
@@ -0,0 +1,1418 @@
+/*-
+ * This code is derived from software copyrighted by the Free Software
+ * Foundation.
+ *
+ * Modified 1991 by Donn Seeley at UUNET Technologies, Inc.
+ * Modified 1990 by Van Jacobson at Lawrence Berkeley Laboratory.
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)valops.c 6.4 (Berkeley) 5/8/91";
+#endif /* not lint */
+
+/* Perform non-arithmetic operations on values, for GDB.
+ Copyright (C) 1986, 1987, 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include "stdio.h"
+#include "defs.h"
+#include "param.h"
+#include "symtab.h"
+#include "value.h"
+#include "frame.h"
+#include "inferior.h"
+
+/* Cast value ARG2 to type TYPE and return as a value.
+ More general than a C cast: accepts any two types of the same length,
+ and if ARG2 is an lvalue it can be cast into anything at all. */
+
+value
+value_cast (type, arg2)
+ struct type *type;
+ register value arg2;
+{
+ register enum type_code code1;
+ register enum type_code code2;
+ register int scalar;
+
+ /* Coerce arrays but not enums. Enums will work as-is
+ and coercing them would cause an infinite recursion. */
+ if (TYPE_CODE (VALUE_TYPE (arg2)) != TYPE_CODE_ENUM)
+ COERCE_ARRAY (arg2);
+
+ code1 = TYPE_CODE (type);
+ code2 = TYPE_CODE (VALUE_TYPE (arg2));
+ scalar = (code2 == TYPE_CODE_INT || code2 == TYPE_CODE_FLT
+ || code2 == TYPE_CODE_ENUM);
+
+ if (code1 == TYPE_CODE_FLT && scalar)
+ return value_from_double (type, value_as_double (arg2));
+ else if ((code1 == TYPE_CODE_INT || code1 == TYPE_CODE_ENUM)
+ && (scalar || code2 == TYPE_CODE_PTR))
+ return value_from_long (type, value_as_long (arg2));
+ else if (TYPE_LENGTH (type) == TYPE_LENGTH (VALUE_TYPE (arg2)))
+ {
+ VALUE_TYPE (arg2) = type;
+ return arg2;
+ }
+ else if (VALUE_LVAL (arg2) == lval_memory)
+ {
+ return value_at (type, VALUE_ADDRESS (arg2) + VALUE_OFFSET (arg2));
+ }
+ else
+ error ("Invalid cast.");
+}
+
+/* Create a value of type TYPE that is zero, and return it. */
+
+value
+value_zero (type, lv)
+ struct type *type;
+ enum lval_type lv;
+{
+ register value val = allocate_value (type);
+
+ bzero (VALUE_CONTENTS (val), TYPE_LENGTH (type));
+ VALUE_LVAL (val) = lv;
+
+ return val;
+}
+
+/* Return the value with a specified type located at specified address. */
+
+value
+value_at (type, addr)
+ struct type *type;
+ CORE_ADDR addr;
+{
+ register value val = allocate_value (type);
+ int temp;
+
+ temp = read_memory (addr, VALUE_CONTENTS (val), TYPE_LENGTH (type));
+ if (temp)
+ {
+ if (have_inferior_p () && !remote_debugging)
+ print_sys_errmsg ("ptrace", temp);
+ /* Actually, address between addr and addr + len was out of bounds. */
+ error ("Cannot read memory: address 0x%x out of bounds.", addr);
+ }
+
+ VALUE_LVAL (val) = lval_memory;
+ VALUE_ADDRESS (val) = addr;
+
+ return val;
+}
+
+/* Store the contents of FROMVAL into the location of TOVAL.
+ Return a new value with the location of TOVAL and contents of FROMVAL. */
+
+value
+value_assign (toval, fromval)
+ register value toval, fromval;
+{
+ register struct type *type = VALUE_TYPE (toval);
+ register value val;
+ char raw_buffer[MAX_REGISTER_RAW_SIZE];
+ char virtual_buffer[MAX_REGISTER_VIRTUAL_SIZE];
+ int use_buffer = 0;
+
+ extern CORE_ADDR find_saved_register ();
+
+ COERCE_ARRAY (fromval);
+
+ if (VALUE_LVAL (toval) != lval_internalvar)
+ fromval = value_cast (type, fromval);
+
+ /* If TOVAL is a special machine register requiring conversion
+ of program values to a special raw format,
+ convert FROMVAL's contents now, with result in `raw_buffer',
+ and set USE_BUFFER to the number of bytes to write. */
+
+ if (VALUE_REGNO (toval) >= 0
+ && REGISTER_CONVERTIBLE (VALUE_REGNO (toval)))
+ {
+ int regno = VALUE_REGNO (toval);
+ if (VALUE_TYPE (fromval) != REGISTER_VIRTUAL_TYPE (regno))
+ fromval = value_cast (REGISTER_VIRTUAL_TYPE (regno), fromval);
+ bcopy (VALUE_CONTENTS (fromval), virtual_buffer,
+ REGISTER_VIRTUAL_SIZE (regno));
+ REGISTER_CONVERT_TO_RAW (regno, virtual_buffer, raw_buffer);
+ use_buffer = REGISTER_RAW_SIZE (regno);
+ }
+
+ switch (VALUE_LVAL (toval))
+ {
+ case lval_internalvar:
+ set_internalvar (VALUE_INTERNALVAR (toval), fromval);
+ break;
+
+ case lval_internalvar_component:
+ set_internalvar_component (VALUE_INTERNALVAR (toval),
+ VALUE_OFFSET (toval),
+ VALUE_BITPOS (toval),
+ VALUE_BITSIZE (toval),
+ fromval);
+ break;
+
+ case lval_memory:
+ if (VALUE_BITSIZE (toval))
+ {
+ int val;
+ read_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
+ &val, sizeof val);
+ modify_field (&val, (int) value_as_long (fromval),
+ VALUE_BITPOS (toval), VALUE_BITSIZE (toval));
+ write_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
+ &val, sizeof val);
+ }
+ else if (use_buffer)
+ write_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
+ raw_buffer, use_buffer);
+ else
+ write_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
+ VALUE_CONTENTS (fromval), TYPE_LENGTH (type));
+ break;
+
+ case lval_register:
+ if (VALUE_BITSIZE (toval))
+ {
+ int val;
+
+ read_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
+ &val, sizeof val);
+ modify_field (&val, (int) value_as_long (fromval),
+ VALUE_BITPOS (toval), VALUE_BITSIZE (toval));
+ write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
+ &val, sizeof val);
+ }
+ else if (use_buffer)
+ write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
+ raw_buffer, use_buffer);
+ else
+ write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
+ VALUE_CONTENTS (fromval), TYPE_LENGTH (type));
+ break;
+
+ case lval_reg_frame_relative:
+ {
+ /* value is stored in a series of registers in the frame
+ specified by the structure. Copy that value out, modify
+ it, and copy it back in. */
+ int amount_to_copy = (VALUE_BITSIZE (toval) ? 1 : TYPE_LENGTH (type));
+ int reg_size = REGISTER_RAW_SIZE (VALUE_FRAME_REGNUM (toval));
+ int byte_offset = VALUE_OFFSET (toval) % reg_size;
+ int reg_offset = VALUE_OFFSET (toval) / reg_size;
+ int amount_copied;
+ char *buffer = (char *) alloca (amount_to_copy);
+ int regno;
+ FRAME frame;
+ CORE_ADDR addr;
+
+ /* Figure out which frame this is in currently. */
+ for (frame = get_current_frame ();
+ frame && FRAME_FP (frame) != VALUE_FRAME (toval);
+ frame = get_prev_frame (frame))
+ ;
+
+ if (!frame)
+ error ("Value being assigned to is no longer active.");
+
+ amount_to_copy += (reg_size - amount_to_copy % reg_size);
+
+ /* Copy it out. */
+ for ((regno = VALUE_FRAME_REGNUM (toval) + reg_offset,
+ amount_copied = 0);
+ amount_copied < amount_to_copy;
+ amount_copied += reg_size, regno++)
+ {
+ addr = find_saved_register (frame, regno);
+ if (addr == 0)
+ read_register_bytes (REGISTER_BYTE (regno),
+ buffer + amount_copied,
+ reg_size);
+ else
+ read_memory (addr, buffer + amount_copied, reg_size);
+ }
+
+ /* Modify what needs to be modified. */
+ if (VALUE_BITSIZE (toval))
+ modify_field (buffer + byte_offset,
+ (int) value_as_long (fromval),
+ VALUE_BITPOS (toval), VALUE_BITSIZE (toval));
+ else if (use_buffer)
+ bcopy (raw_buffer, buffer + byte_offset, use_buffer);
+ else
+ bcopy (VALUE_CONTENTS (fromval), buffer + byte_offset,
+ TYPE_LENGTH (type));
+
+ /* Copy it back. */
+ for ((regno = VALUE_FRAME_REGNUM (toval) + reg_offset,
+ amount_copied = 0);
+ amount_copied < amount_to_copy;
+ amount_copied += reg_size, regno++)
+ {
+ addr = find_saved_register (frame, regno);
+ if (addr == 0)
+ write_register_bytes (REGISTER_BYTE (regno),
+ buffer + amount_copied,
+ reg_size);
+ else
+ write_memory (addr, buffer + amount_copied, reg_size);
+ }
+ }
+ break;
+
+
+ default:
+ error ("Left side of = operation is not an lvalue.");
+ }
+
+ /* Return a value just like TOVAL except with the contents of FROMVAL
+ (except in the case of the type if TOVAL is an internalvar). */
+
+ if (VALUE_LVAL (toval) == lval_internalvar
+ || VALUE_LVAL (toval) == lval_internalvar_component)
+ {
+ type = VALUE_TYPE (fromval);
+ }
+
+ val = allocate_value (type);
+ bcopy (toval, val, VALUE_CONTENTS (val) - (char *) val);
+ bcopy (VALUE_CONTENTS (fromval), VALUE_CONTENTS (val), TYPE_LENGTH (type));
+ VALUE_TYPE (val) = type;
+
+ return val;
+}
+
+/* Extend a value VAL to COUNT repetitions of its type. */
+
+value
+value_repeat (arg1, count)
+ value arg1;
+ int count;
+{
+ register value val;
+
+ if (VALUE_LVAL (arg1) != lval_memory)
+ error ("Only values in memory can be extended with '@'.");
+ if (count < 1)
+ error ("Invalid number %d of repetitions.", count);
+
+ val = allocate_repeat_value (VALUE_TYPE (arg1), count);
+
+ read_memory (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1),
+ VALUE_CONTENTS (val),
+ TYPE_LENGTH (VALUE_TYPE (val)) * count);
+ VALUE_LVAL (val) = lval_memory;
+ VALUE_ADDRESS (val) = VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1);
+
+ return val;
+}
+
+value
+value_of_variable (var)
+ struct symbol *var;
+{
+ return read_var_value (var, (FRAME) 0);
+}
+
+/* Given a value which is an array, return a value which is
+ a pointer to its first element. */
+
+value
+value_coerce_array (arg1)
+ value arg1;
+{
+ register struct type *type;
+ register value val;
+
+ if (VALUE_LVAL (arg1) != lval_memory)
+ error ("Attempt to take address of value not located in memory.");
+
+ /* Get type of elements. */
+ if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_ARRAY)
+ type = TYPE_TARGET_TYPE (VALUE_TYPE (arg1));
+ else
+ /* A phony array made by value_repeat.
+ Its type is the type of the elements, not an array type. */
+ type = VALUE_TYPE (arg1);
+
+ /* Get the type of the result. */
+ type = lookup_pointer_type (type);
+ val = value_from_long (builtin_type_long,
+ (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
+ VALUE_TYPE (val) = type;
+ return val;
+}
+
+/* Return a pointer value for the object for which ARG1 is the contents. */
+
+value
+value_addr (arg1)
+ value arg1;
+{
+ register struct type *type;
+ register value val, arg1_coerced;
+
+ /* Taking the address of an array is really a no-op
+ once the array is coerced to a pointer to its first element. */
+ arg1_coerced = arg1;
+ COERCE_ARRAY (arg1_coerced);
+ if (arg1 != arg1_coerced)
+ return arg1_coerced;
+
+ if (VALUE_LVAL (arg1) != lval_memory)
+ error ("Attempt to take address of value not located in memory.");
+
+ /* Get the type of the result. */
+ type = lookup_pointer_type (VALUE_TYPE (arg1));
+ val = value_from_long (builtin_type_long,
+ (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
+ VALUE_TYPE (val) = type;
+ return val;
+}
+
+/* Given a value of a pointer type, apply the C unary * operator to it. */
+
+value
+value_ind (arg1)
+ value arg1;
+{
+ /* Must do this before COERCE_ARRAY, otherwise an infinite loop
+ will result */
+ if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_REF)
+ return value_at (TYPE_TARGET_TYPE (VALUE_TYPE (arg1)),
+ (CORE_ADDR) value_as_long (arg1));
+
+ COERCE_ARRAY (arg1);
+
+ if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_MEMBER)
+ error ("not implemented: member types in value_ind");
+
+ /* Allow * on an integer so we can cast it to whatever we want.
+ This returns an int, which seems like the most C-like thing
+ to do. "long long" variables are rare enough that
+ BUILTIN_TYPE_LONGEST would seem to be a mistake. */
+ if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_INT)
+ return value_at (builtin_type_int,
+ (CORE_ADDR) value_as_long (arg1));
+ else if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_PTR)
+ return value_at (TYPE_TARGET_TYPE (VALUE_TYPE (arg1)),
+ (CORE_ADDR) value_as_long (arg1));
+ else if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_REF)
+ return value_at (TYPE_TARGET_TYPE (VALUE_TYPE (arg1)),
+ (CORE_ADDR) value_as_long (arg1));
+ error ("Attempt to take contents of a non-pointer value.");
+}
+
+/* Pushing small parts of stack frames. */
+
+/* Push one word (the size of object that a register holds). */
+
+CORE_ADDR
+push_word (sp, buffer)
+ CORE_ADDR sp;
+ REGISTER_TYPE buffer;
+{
+ register int len = sizeof (REGISTER_TYPE);
+
+#if 1 INNER_THAN 2
+ sp -= len;
+ write_memory (sp, &buffer, len);
+#else /* stack grows upward */
+ write_memory (sp, &buffer, len);
+ sp += len;
+#endif /* stack grows upward */
+
+ return sp;
+}
+
+/* Push LEN bytes with data at BUFFER. */
+
+CORE_ADDR
+push_bytes (sp, buffer, len)
+ CORE_ADDR sp;
+ char *buffer;
+ int len;
+{
+#if 1 INNER_THAN 2
+ sp -= len;
+ write_memory (sp, buffer, len);
+#else /* stack grows upward */
+ write_memory (sp, buffer, len);
+ sp += len;
+#endif /* stack grows upward */
+
+ return sp;
+}
+
+/* Push onto the stack the specified value VALUE. */
+
+CORE_ADDR
+value_push (sp, arg)
+ register CORE_ADDR sp;
+ value arg;
+{
+ register int len = TYPE_LENGTH (VALUE_TYPE (arg));
+
+#if 1 INNER_THAN 2
+ sp -= len;
+ write_memory (sp, VALUE_CONTENTS (arg), len);
+#else /* stack grows upward */
+ write_memory (sp, VALUE_CONTENTS (arg), len);
+ sp += len;
+#endif /* stack grows upward */
+
+ return sp;
+}
+
+/* Perform the standard coercions that are specified
+ for arguments to be passed to C functions. */
+
+value
+value_arg_coerce (arg)
+ value arg;
+{
+ register struct type *type;
+
+ COERCE_ENUM (arg);
+
+ type = VALUE_TYPE (arg);
+
+ if (TYPE_CODE (type) == TYPE_CODE_INT
+ && TYPE_LENGTH (type) < sizeof (int))
+ return value_cast (builtin_type_int, arg);
+
+ if (type == builtin_type_float)
+ return value_cast (builtin_type_double, arg);
+
+ return arg;
+}
+
+/* Push the value ARG, first coercing it as an argument
+ to a C function. */
+
+CORE_ADDR
+value_arg_push (sp, arg)
+ register CORE_ADDR sp;
+ value arg;
+{
+ return value_push (sp, value_arg_coerce (arg));
+}
+
+#ifdef NEW_CALL_FUNCTION
+
+int
+arg_stacklen(nargs, args)
+ int nargs;
+ value *args;
+{
+ int len = 0;
+
+ while (--nargs >= 0)
+ len += TYPE_LENGTH(VALUE_TYPE(value_arg_coerce(args[nargs])));
+
+ return len;
+}
+
+CORE_ADDR
+function_address(function, type)
+ value function;
+ struct type **type;
+{
+ register CORE_ADDR funaddr;
+ register struct type *ftype = VALUE_TYPE(function);
+ register enum type_code code = TYPE_CODE(ftype);
+
+ /*
+ * If it's a member function, just look at the function part
+ * of it.
+ */
+
+ /* Determine address to call. */
+ if (code == TYPE_CODE_FUNC || code == TYPE_CODE_METHOD) {
+ funaddr = VALUE_ADDRESS(function);
+ *type = TYPE_TARGET_TYPE(ftype);
+ } else if (code == TYPE_CODE_PTR) {
+ funaddr = value_as_long(function);
+ if (TYPE_CODE(TYPE_TARGET_TYPE(ftype)) == TYPE_CODE_FUNC
+ || TYPE_CODE(TYPE_TARGET_TYPE(ftype)) == TYPE_CODE_METHOD)
+ *type = TYPE_TARGET_TYPE(TYPE_TARGET_TYPE(ftype));
+ else
+ *type = builtin_type_int;
+ } else if (code == TYPE_CODE_INT) {
+ /*
+ * Handle the case of functions lacking debugging
+ * info. Their values are characters since their
+ * addresses are char
+ */
+ if (TYPE_LENGTH(ftype) == 1)
+
+ funaddr = value_as_long(value_addr(function));
+ else
+ /*
+ * Handle integer used as address of a
+ * function.
+ */
+ funaddr = value_as_long(function);
+
+ *type = builtin_type_int;
+ } else
+ error("Invalid data type for function to be called.");
+
+ return funaddr;
+}
+
+/* Perform a function call in the inferior.
+ ARGS is a vector of values of arguments (NARGS of them).
+ FUNCTION is a value, the function to be called.
+ Returns a value representing what the function returned.
+ May fail to return, if a breakpoint or signal is hit
+ during the execution of the function. */
+
+value
+call_function(function, nargs, args)
+ value function;
+ int nargs;
+ value *args;
+{
+ register CORE_ADDR sp, pc;
+ struct type *value_type;
+ struct inferior_status inf_status;
+ struct cleanup *old_chain;
+ register CORE_ADDR funaddr;
+ int struct_return_bytes;
+ char retbuf[REGISTER_BYTES];
+
+ if (!have_inferior_p())
+ error("Cannot invoke functions if the inferior is not running.");
+
+ save_inferior_status(&inf_status, 1);
+ old_chain = make_cleanup(restore_inferior_status, &inf_status);
+
+ sp = read_register(SP_REGNUM);
+ funaddr = function_address(function, &value_type);
+ /*
+ * Are we returning a value using a structure return or a
+ * normal value return?
+ */
+ if (using_struct_return(function, funaddr, value_type))
+ struct_return_bytes = TYPE_LENGTH(value_type);
+ else
+ struct_return_bytes = 0;
+ /*
+ * Create a call sequence customized for this function and
+ * the number of arguments for it.
+ */
+ pc = setup_dummy(sp, funaddr, nargs, args,
+ struct_return_bytes, value_arg_push);
+
+ /*
+ * Execute the stack dummy stub. The register state will be
+ * returned in retbuf. It is restored below.
+ */
+ run_stack_dummy(pc, retbuf);
+
+ /*
+ * This will restore the register context that existed before
+ * we called the dummy function.
+ */
+ do_cleanups(old_chain);
+
+ return value_being_returned(value_type, retbuf, struct_return_bytes);
+}
+#else
+
+/* Perform a function call in the inferior.
+ ARGS is a vector of values of arguments (NARGS of them).
+ FUNCTION is a value, the function to be called.
+ Returns a value representing what the function returned.
+ May fail to return, if a breakpoint or signal is hit
+ during the execution of the function. */
+
+value
+call_function (function, nargs, args)
+ value function;
+ int nargs;
+ value *args;
+{
+ register CORE_ADDR sp;
+ register int i;
+ CORE_ADDR start_sp;
+ static REGISTER_TYPE dummy[] = CALL_DUMMY;
+ REGISTER_TYPE dummy1[sizeof dummy / sizeof (REGISTER_TYPE)];
+ CORE_ADDR old_sp;
+ struct type *value_type;
+ unsigned char struct_return;
+ CORE_ADDR struct_addr;
+ struct inferior_status inf_status;
+ struct cleanup *old_chain;
+
+ if (!have_inferior_p ())
+ error ("Cannot invoke functions if the inferior is not running.");
+
+ save_inferior_status (&inf_status, 1);
+ old_chain = make_cleanup (restore_inferior_status, &inf_status);
+
+ /* PUSH_DUMMY_FRAME is responsible for saving the inferior registers
+ (and POP_FRAME for restoring them). (At least on most machines)
+ they are saved on the stack in the inferior. */
+ PUSH_DUMMY_FRAME;
+
+ old_sp = sp = read_register (SP_REGNUM);
+
+#if 1 INNER_THAN 2 /* Stack grows down */
+ sp -= sizeof dummy;
+ start_sp = sp;
+#else /* Stack grows up */
+ start_sp = sp;
+ sp += sizeof dummy;
+#endif
+
+ {
+ register CORE_ADDR funaddr;
+ register struct type *ftype = VALUE_TYPE (function);
+ register enum type_code code = TYPE_CODE (ftype);
+
+ /* If it's a member function, just look at the function
+ part of it. */
+
+ /* Determine address to call. */
+ if (code == TYPE_CODE_FUNC || code == TYPE_CODE_METHOD)
+ {
+ funaddr = VALUE_ADDRESS (function);
+ value_type = TYPE_TARGET_TYPE (ftype);
+ }
+ else if (code == TYPE_CODE_PTR)
+ {
+ funaddr = value_as_long (function);
+ if (TYPE_CODE (TYPE_TARGET_TYPE (ftype)) == TYPE_CODE_FUNC
+ || TYPE_CODE (TYPE_TARGET_TYPE (ftype)) == TYPE_CODE_METHOD)
+ value_type = TYPE_TARGET_TYPE (TYPE_TARGET_TYPE (ftype));
+ else
+ value_type = builtin_type_int;
+ }
+ else if (code == TYPE_CODE_INT)
+ {
+ /* Handle the case of functions lacking debugging info.
+ Their values are characters since their addresses are char */
+ if (TYPE_LENGTH (ftype) == 1)
+ funaddr = value_as_long (value_addr (function));
+ else
+ /* Handle integer used as address of a function. */
+ funaddr = value_as_long (function);
+
+ value_type = builtin_type_int;
+ }
+ else
+ error ("Invalid data type for function to be called.");
+
+ /* Are we returning a value using a structure return or a normal
+ value return? */
+
+ struct_return = using_struct_return (function, funaddr, value_type);
+
+ /* Create a call sequence customized for this function
+ and the number of arguments for it. */
+ bcopy (dummy, dummy1, sizeof dummy);
+ FIX_CALL_DUMMY (dummy1, start_sp, funaddr, nargs, value_type);
+ }
+
+#ifndef CANNOT_EXECUTE_STACK
+ write_memory (start_sp, dummy1, sizeof dummy);
+
+#else
+ /* Convex Unix prohibits executing in the stack segment. */
+ /* Hope there is empty room at the top of the text segment. */
+ {
+ extern CORE_ADDR text_end;
+ static checked = 0;
+ if (!checked)
+ for (start_sp = text_end - sizeof dummy; start_sp < text_end; ++start_sp)
+ if (read_memory_integer (start_sp, 1) != 0)
+ error ("text segment full -- no place to put call");
+ checked = 1;
+ sp = old_sp;
+ start_sp = text_end - sizeof dummy;
+ write_memory (start_sp, dummy1, sizeof dummy);
+ }
+#endif /* CANNOT_EXECUTE_STACK */
+#ifdef STACK_ALIGN
+ /* If stack grows down, we must leave a hole at the top. */
+ {
+ int len = 0;
+
+ /* Reserve space for the return structure to be written on the
+ stack, if necessary */
+
+ if (struct_return)
+ len += TYPE_LENGTH (value_type);
+
+ for (i = nargs - 1; i >= 0; i--)
+ len += TYPE_LENGTH (VALUE_TYPE (value_arg_coerce (args[i])));
+#ifdef CALL_DUMMY_STACK_ADJUST
+ len += CALL_DUMMY_STACK_ADJUST;
+#endif
+#if 1 INNER_THAN 2
+ sp -= STACK_ALIGN (len) - len;
+#else
+ sp += STACK_ALIGN (len) - len;
+#endif
+ }
+#endif /* STACK_ALIGN */
+
+ /* Reserve space for the return structure to be written on the
+ stack, if necessary */
+
+ if (struct_return)
+ {
+#if 1 INNER_THAN 2
+ sp -= TYPE_LENGTH (value_type);
+ struct_addr = sp;
+#else
+ struct_addr = sp;
+ sp += TYPE_LENGTH (value_type);
+#endif
+ }
+
+ for (i = nargs - 1; i >= 0; i--)
+ sp = value_arg_push (sp, args[i]);
+
+#ifdef CALL_DUMMY_STACK_ADJUST
+#if 1 INNER_THAN 2
+ sp -= CALL_DUMMY_STACK_ADJUST;
+#else
+ sp += CALL_DUMMY_STACK_ADJUST;
+#endif
+#endif /* CALL_DUMMY_STACK_ADJUST */
+
+ /* Store the address at which the structure is supposed to be
+ written. Note that this (and the code which reserved the space
+ above) assumes that gcc was used to compile this function. Since
+ it doesn't cost us anything but space and if the function is pcc
+ it will ignore this value, we will make that assumption.
+
+ Also note that on some machines (like the sparc) pcc uses this
+ convention in a slightly twisted way also. */
+
+ if (struct_return)
+ STORE_STRUCT_RETURN (struct_addr, sp);
+
+ /* Write the stack pointer. This is here because the statement above
+ might fool with it */
+ write_register (SP_REGNUM, sp);
+
+ /* Figure out the value returned by the function. */
+ {
+ char retbuf[REGISTER_BYTES];
+
+ /* Execute the stack dummy routine, calling FUNCTION.
+ When it is done, discard the empty frame
+ after storing the contents of all regs into retbuf. */
+ run_stack_dummy (start_sp + CALL_DUMMY_START_OFFSET, retbuf);
+
+ do_cleanups (old_chain);
+
+ return value_being_returned (value_type, retbuf, struct_return);
+ }
+}
+#endif
+
+/* Create a value for a string constant:
+ Call the function malloc in the inferior to get space for it,
+ then copy the data into that space
+ and then return the address with type char *.
+ PTR points to the string constant data; LEN is number of characters. */
+
+value
+value_string (ptr, len)
+ char *ptr;
+ int len;
+{
+ register value val;
+ register struct symbol *sym;
+ value blocklen;
+ register char *copy = (char *) alloca (len + 1);
+ char *i = ptr;
+ register char *o = copy, *ibeg = ptr;
+ register int c;
+#ifdef KERNELDEBUG
+ extern int kernel_debugging;
+
+ if (kernel_debugging)
+ error("Can't stuff string constants into kernel (yet).");
+#endif
+
+ /* Copy the string into COPY, processing escapes.
+ We could not conveniently process them in expread
+ because the string there wants to be a substring of the input. */
+
+ while (i - ibeg < len)
+ {
+ c = *i++;
+ if (c == '\\')
+ {
+ c = parse_escape (&i);
+ if (c == -1)
+ continue;
+ }
+ *o++ = c;
+ }
+ *o = 0;
+
+ /* Get the length of the string after escapes are processed. */
+
+ len = o - copy;
+
+ /* Find the address of malloc in the inferior. */
+
+ sym = lookup_symbol ("malloc", 0, VAR_NAMESPACE, 0);
+ if (sym != 0)
+ {
+ if (SYMBOL_CLASS (sym) != LOC_BLOCK)
+ error ("\"malloc\" exists in this program but is not a function.");
+ val = value_of_variable (sym);
+ }
+ else
+ {
+ register int i;
+ for (i = 0; i < misc_function_count; i++)
+ if (!strcmp (misc_function_vector[i].name, "malloc"))
+ break;
+ if (i < misc_function_count)
+ val = value_from_long (builtin_type_long,
+ (LONGEST) misc_function_vector[i].address);
+ else
+ error ("String constants require the program to have a function \"malloc\".");
+ }
+
+ blocklen = value_from_long (builtin_type_int, (LONGEST) (len + 1));
+ val = call_function (val, 1, &blocklen);
+ if (value_zerop (val))
+ error ("No memory available for string constant.");
+ write_memory ((CORE_ADDR) value_as_long (val), copy, len + 1);
+ VALUE_TYPE (val) = lookup_pointer_type (builtin_type_char);
+ return val;
+}
+
+static int
+type_field_index(t, name)
+ register struct type *t;
+ register char *name;
+{
+ register int i;
+
+ for (i = TYPE_NFIELDS(t); --i >= 0;)
+ {
+ register char *t_field_name = TYPE_FIELD_NAME (t, i);
+
+ if (t_field_name && !strcmp (t_field_name, name))
+ break;
+ }
+ return (i);
+}
+
+/* Given ARG1, a value of type (pointer to a)* structure/union,
+ extract the component named NAME from the ultimate target structure/union
+ and return it as a value with its appropriate type.
+ ERR is used in the error message if ARG1's type is wrong.
+
+ C++: ARGS is a list of argument types to aid in the selection of
+ an appropriate method. Also, handle derived types.
+
+ STATIC_MEMFUNCP, if non-NULL, points to a caller-supplied location
+ where the truthvalue of whether the function that was resolved was
+ a static member function or not.
+
+ ERR is an error message to be printed in case the field is not found. */
+
+value
+value_struct_elt (arg1, args, name, static_memfuncp, err)
+ register value arg1, *args;
+ char *name;
+ int *static_memfuncp;
+ char *err;
+{
+ register struct type *t;
+ register int i;
+ int found = 0;
+
+ struct type *baseclass;
+
+ COERCE_ARRAY (arg1);
+
+ t = VALUE_TYPE (arg1);
+
+ /* Check for the usual case: we have pointer, target type is a struct
+ * and `name' is a legal field of the struct. In this case, we can
+ * just snarf the value of the field & not waste time while value_ind
+ * sucks over the entire struct. */
+ if (! args)
+ {
+ if (TYPE_CODE(t) == TYPE_CODE_PTR
+ && (TYPE_CODE((baseclass = TYPE_TARGET_TYPE(t))) == TYPE_CODE_STRUCT
+ || TYPE_CODE(baseclass) == TYPE_CODE_UNION)
+ && (i = type_field_index(baseclass, name)) >= 0)
+ {
+ register int offset;
+ register struct type *f = TYPE_FIELD_TYPE(baseclass, i);
+
+ offset = TYPE_FIELD_BITPOS(baseclass, i) >> 3;
+ if (TYPE_FIELD_BITSIZE(baseclass, i) == 0)
+ return value_at(f, (CORE_ADDR)(value_as_long(arg1) + offset));
+ }
+ }
+
+ /* Follow pointers until we get to a non-pointer. */
+
+ while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
+ {
+ arg1 = value_ind (arg1);
+ COERCE_ARRAY (arg1);
+ t = VALUE_TYPE (arg1);
+ }
+
+ if (TYPE_CODE (t) == TYPE_CODE_MEMBER)
+ error ("not implemented: member type in value_struct_elt");
+
+ if (TYPE_CODE (t) != TYPE_CODE_STRUCT
+ && TYPE_CODE (t) != TYPE_CODE_UNION)
+ error ("Attempt to extract a component of a value that is not a %s.", err);
+
+ baseclass = t;
+
+ /* Assume it's not, unless we see that it is. */
+ if (static_memfuncp)
+ *static_memfuncp =0;
+
+ if (!args)
+ {
+ /* if there are no arguments ...do this... */
+
+ /* Try as a variable first, because if we succeed, there
+ is less work to be done. */
+ while (t)
+ {
+ i = type_field_index(t, name);
+ if (i >= 0)
+ return TYPE_FIELD_STATIC (t, i)
+ ? value_static_field (t, name, i) : value_field (arg1, i);
+
+ if (TYPE_N_BASECLASSES (t) == 0)
+ break;
+
+ t = TYPE_BASECLASS (t, 1);
+ VALUE_TYPE (arg1) = t; /* side effect! */
+ }
+
+ /* C++: If it was not found as a data field, then try to
+ return it as a pointer to a method. */
+ t = baseclass;
+ VALUE_TYPE (arg1) = t; /* side effect! */
+
+ if (destructor_name_p (name, t))
+ error ("use `info method' command to print out value of destructor");
+
+ while (t)
+ {
+ for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
+ {
+ if (! strcmp (TYPE_FN_FIELDLIST_NAME (t, i), name))
+ {
+ error ("use `info method' command to print value of method \"%s\"", name);
+ }
+ }
+
+ if (TYPE_N_BASECLASSES (t) == 0)
+ break;
+
+ t = TYPE_BASECLASS (t, 1);
+ }
+
+ error ("There is no field named %s.", name);
+ return 0;
+ }
+
+ if (destructor_name_p (name, t))
+ {
+ if (!args[1])
+ {
+ /* destructors are a special case. */
+ return (value)value_fn_field (arg1, 0,
+ TYPE_FN_FIELDLIST_LENGTH (t, 0));
+ }
+ else
+ {
+ error ("destructor should not have any argument");
+ }
+ }
+
+ /* This following loop is for methods with arguments. */
+ while (t)
+ {
+ /* Look up as method first, because that is where we
+ expect to find it first. */
+ for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; i--)
+ {
+ struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
+
+ if (!strcmp (TYPE_FN_FIELDLIST_NAME (t, i), name))
+ {
+ int j;
+ struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
+
+ found = 1;
+ for (j = TYPE_FN_FIELDLIST_LENGTH (t, i) - 1; j >= 0; --j)
+ if (!typecmp (TYPE_FN_FIELD_STATIC_P (f, j),
+ TYPE_FN_FIELD_ARGS (f, j), args))
+ {
+ if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
+ return (value)value_virtual_fn_field (arg1, f, j, t);
+ if (TYPE_FN_FIELD_STATIC_P (f, j) && static_memfuncp)
+ *static_memfuncp = 1;
+ return (value)value_fn_field (arg1, i, j);
+ }
+ }
+ }
+
+ if (TYPE_N_BASECLASSES (t) == 0)
+ break;
+
+ t = TYPE_BASECLASS (t, 1);
+ VALUE_TYPE (arg1) = t; /* side effect! */
+ }
+
+ if (found)
+ {
+ error ("Structure method %s not defined for arglist.", name);
+ return 0;
+ }
+ else
+ {
+ /* See if user tried to invoke data as function */
+ t = baseclass;
+ while (t)
+ {
+ i = type_field_index(t, name);
+ if (i >= 0)
+ return TYPE_FIELD_STATIC (t, i)
+ ? value_static_field (t, name, i) : value_field (arg1, i);
+
+ if (TYPE_N_BASECLASSES (t) == 0)
+ break;
+
+ t = TYPE_BASECLASS (t, 1);
+ VALUE_TYPE (arg1) = t; /* side effect! */
+ }
+ error ("Structure has no component named %s.", name);
+ }
+}
+
+/* C++: return 1 is NAME is a legitimate name for the destructor
+ of type TYPE. If TYPE does not have a destructor, or
+ if NAME is inappropriate for TYPE, an error is signaled. */
+int
+destructor_name_p (name, type)
+ char *name;
+ struct type *type;
+{
+ /* destructors are a special case. */
+ char *dname = TYPE_NAME (type);
+
+ if (name[0] == '~')
+ {
+ if (! TYPE_HAS_DESTRUCTOR (type))
+ error ("type `%s' does not have destructor defined",
+ TYPE_NAME (type));
+ /* Skip past the "struct " at the front. */
+ while (*dname++ != ' ') ;
+ if (strcmp (dname, name+1))
+ error ("destructor specification error");
+ else
+ return 1;
+ }
+ return 0;
+}
+
+/* C++: Given ARG1, a value of type (pointer to a)* structure/union,
+ return 1 if the component named NAME from the ultimate
+ target structure/union is defined, otherwise, return 0. */
+
+int
+check_field (arg1, name)
+ register value arg1;
+ char *name;
+{
+ register struct type *t;
+ register int i;
+ int found = 0;
+
+ struct type *baseclass;
+
+ COERCE_ARRAY (arg1);
+
+ t = VALUE_TYPE (arg1);
+
+ /* Follow pointers until we get to a non-pointer. */
+
+ while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
+ t = TYPE_TARGET_TYPE (t);
+
+ if (TYPE_CODE (t) == TYPE_CODE_MEMBER)
+ error ("not implemented: member type in check_field");
+
+ if (TYPE_CODE (t) != TYPE_CODE_STRUCT
+ && TYPE_CODE (t) != TYPE_CODE_UNION)
+ error ("Internal error: `this' is not an aggregate");
+
+ baseclass = t;
+
+ while (t)
+ {
+ for (i = TYPE_NFIELDS (t) - 1; i >= 0; i--)
+ {
+ char *t_field_name = TYPE_FIELD_NAME (t, i);
+ if (t_field_name && !strcmp (t_field_name, name))
+ goto success;
+ }
+ if (TYPE_N_BASECLASSES (t) == 0)
+ break;
+
+ t = TYPE_BASECLASS (t, 1);
+ VALUE_TYPE (arg1) = t; /* side effect! */
+ }
+
+ /* C++: If it was not found as a data field, then try to
+ return it as a pointer to a method. */
+ t = baseclass;
+
+ /* Destructors are a special case. */
+ if (destructor_name_p (name, t))
+ goto success;
+
+ while (t)
+ {
+ for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
+ {
+ if (!strcmp (TYPE_FN_FIELDLIST_NAME (t, i), name))
+ return 1;
+ }
+
+ if (TYPE_N_BASECLASSES (t) == 0)
+ break;
+
+ t = TYPE_BASECLASS (t, 1);
+ }
+ return 0;
+
+ success:
+ t = VALUE_TYPE (arg1);
+ while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
+ {
+ arg1 = value_ind (arg1);
+ COERCE_ARRAY (arg1);
+ t = VALUE_TYPE (arg1);
+ }
+}
+
+/* C++: Given an aggregate type DOMAIN, and a member name NAME,
+ return the address of this member as a pointer to member
+ type. If INTYPE is non-null, then it will be the type
+ of the member we are looking for. This will help us resolve
+ pointers to member functions. */
+
+value
+value_struct_elt_for_address (domain, intype, name)
+ struct type *domain, *intype;
+ char *name;
+{
+ register struct type *t = domain;
+ register int i;
+ int found = 0;
+ value v;
+
+ struct type *baseclass;
+
+ if (TYPE_CODE (t) != TYPE_CODE_STRUCT
+ && TYPE_CODE (t) != TYPE_CODE_UNION)
+ error ("Internal error: non-aggregate type to value_struct_elt_for_address");
+
+ baseclass = t;
+
+ while (t)
+ {
+ for (i = TYPE_NFIELDS (t) - 1; i >= 0; i--)
+ {
+ char *t_field_name = TYPE_FIELD_NAME (t, i);
+ if (t_field_name && !strcmp (t_field_name, name))
+ {
+ if (TYPE_FIELD_PACKED (t, i))
+ error ("pointers to bitfield members not allowed");
+
+ v = value_from_long (builtin_type_int,
+ (LONGEST) (TYPE_FIELD_BITPOS (t, i) >> 3));
+ VALUE_TYPE (v) = lookup_pointer_type (
+ lookup_member_type (TYPE_FIELD_TYPE (t, i), baseclass));
+ return v;
+ }
+ }
+
+ if (TYPE_N_BASECLASSES (t) == 0)
+ break;
+
+ t = TYPE_BASECLASS (t, 1);
+ }
+
+ /* C++: If it was not found as a data field, then try to
+ return it as a pointer to a method. */
+ t = baseclass;
+
+ /* Destructors are a special case. */
+ if (destructor_name_p (name, t))
+ {
+ error ("pointers to destructors not implemented yet");
+ }
+
+ /* Perform all necessary dereferencing. */
+ while (intype && TYPE_CODE (intype) == TYPE_CODE_PTR)
+ intype = TYPE_TARGET_TYPE (intype);
+
+ while (t)
+ {
+ for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
+ {
+ if (!strcmp (TYPE_FN_FIELDLIST_NAME (t, i), name))
+ {
+ int j = TYPE_FN_FIELDLIST_LENGTH (t, i);
+ struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
+
+ if (intype == 0 && j > 1)
+ error ("non-unique member `%s' requires type instantiation", name);
+ if (intype)
+ {
+ while (j--)
+ if (TYPE_FN_FIELD_TYPE (f, j) == intype)
+ break;
+ if (j < 0)
+ error ("no member function matches that type instantiation");
+ }
+ else
+ j = 0;
+
+ if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
+ {
+ v = value_from_long (builtin_type_long,
+ (LONGEST) TYPE_FN_FIELD_VOFFSET (f, j));
+ }
+ else
+ {
+ struct symbol *s = lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
+ 0, VAR_NAMESPACE, 0);
+ v = locate_var_value (s, 0);
+ }
+ VALUE_TYPE (v) = lookup_pointer_type (lookup_member_type (TYPE_FN_FIELD_TYPE (f, j), baseclass));
+ return v;
+ }
+ }
+
+ if (TYPE_N_BASECLASSES (t) == 0)
+ break;
+
+ t = TYPE_BASECLASS (t, 1);
+ }
+ return 0;
+}
+
+/* Compare two argument lists and return the position in which they differ,
+ or zero if equal.
+
+ STATICP is nonzero if the T1 argument list came from a
+ static member function.
+
+ For non-static member functions, we ignore the first argument,
+ which is the type of the instance variable. This is because we want
+ to handle calls with objects from derived classes. This is not
+ entirely correct: we should actually check to make sure that a
+ requested operation is type secure, shouldn't we? */
+
+int
+typecmp (staticp, t1, t2)
+ int staticp;
+ struct type *t1[];
+ value t2[];
+{
+ int i;
+
+ if (staticp && t1 == 0)
+ return t2[1] != 0;
+ if (t1 == 0)
+ return 1;
+ if (t1[0]->code == TYPE_CODE_VOID) return 0;
+ if (t1[!staticp] == 0) return 0;
+ for (i = !staticp; t1[i] && t1[i]->code != TYPE_CODE_VOID; i++)
+ {
+ if (! t2[i]
+ || t1[i]->code != t2[i]->type->code
+ || t1[i]->target_type != t2[i]->type->target_type)
+ return i+1;
+ }
+ if (!t1[i]) return 0;
+ return t2[i] ? i+1 : 0;
+}
+
+/* C++: return the value of the class instance variable, if one exists.
+ Flag COMPLAIN signals an error if the request is made in an
+ inappropriate context. */
+value
+value_of_this (complain)
+ int complain;
+{
+ extern FRAME selected_frame;
+ struct symbol *func, *sym;
+ char *funname = 0;
+ struct block *b;
+ int i;
+
+ if (selected_frame == 0)
+ if (complain)
+ error ("no frame selected");
+ else return 0;
+
+ func = get_frame_function (selected_frame);
+ if (func)
+ funname = SYMBOL_NAME (func);
+ else
+ if (complain)
+ error ("no `this' in nameless context");
+ else return 0;
+
+ b = SYMBOL_BLOCK_VALUE (func);
+ i = BLOCK_NSYMS (b);
+ if (i <= 0)
+ if (complain)
+ error ("no args, no `this'");
+ else return 0;
+
+ sym = BLOCK_SYM (b, 0);
+ if (strncmp ("$this", SYMBOL_NAME (sym), 5))
+ if (complain)
+ error ("current stack frame not in method");
+ else return 0;
+
+ return read_var_value (sym, selected_frame);
+}
diff --git a/gnu/usr.bin/kgdb/valprint.c b/gnu/usr.bin/kgdb/valprint.c
new file mode 100644
index 000000000000..15a0c5637e77
--- /dev/null
+++ b/gnu/usr.bin/kgdb/valprint.c
@@ -0,0 +1,1430 @@
+/*-
+ * This code is derived from software copyrighted by the Free Software
+ * Foundation.
+ *
+ * Modified 1991 by Donn Seeley at UUNET Technologies, Inc.
+ * Modified 1990 by Van Jacobson at Lawrence Berkeley Laboratory.
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)valprint.c 6.5 (Berkeley) 5/8/91";
+#endif /* not lint */
+
+/* Print values for GNU debugger gdb.
+ Copyright (C) 1986, 1988, 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include <stdio.h>
+#include "defs.h"
+#include "param.h"
+#include "symtab.h"
+#include "value.h"
+
+/* GNU software is only expected to run on systems with 32-bit integers. */
+#define UINT_MAX 0xffffffff
+
+/* Maximum number of chars to print for a string pointer value
+ or vector contents, or UINT_MAX for no limit. */
+
+static unsigned int print_max;
+
+static void type_print_varspec_suffix ();
+static void type_print_varspec_prefix ();
+static void type_print_base ();
+static void type_print_method_args ();
+
+
+char **unsigned_type_table;
+char **signed_type_table;
+char **float_type_table;
+
+
+/* Print repeat counts if there are more than this
+ many repetitions of an element in an array. */
+#define REPEAT_COUNT_THRESHOLD 10
+
+/* Print the character string STRING, printing at most LENGTH characters.
+ Printing stops early if the number hits print_max; repeat counts
+ are printed as appropriate. Print ellipses at the end if we
+ had to stop before printing LENGTH characters, or if FORCE_ELLIPSES. */
+
+void
+print_string (stream, string, length, force_ellipses)
+ FILE *stream;
+ char *string;
+ unsigned int length;
+ int force_ellipses;
+{
+ register unsigned int i;
+ unsigned int things_printed = 0;
+ int in_quotes = 0;
+ int need_comma = 0;
+
+ if (length == 0)
+ {
+ fputs_filtered ("\"\"", stdout);
+ return;
+ }
+
+ for (i = 0; i < length && things_printed < print_max; ++i)
+ {
+ /* Position of the character we are examining
+ to see whether it is repeated. */
+ unsigned int rep1;
+ /* Number of repititions we have detected so far. */
+ unsigned int reps;
+
+ QUIT;
+
+ if (need_comma)
+ {
+ fputs_filtered (", ", stream);
+ need_comma = 0;
+ }
+
+ rep1 = i + 1;
+ reps = 1;
+ while (rep1 < length && string[rep1] == string[i])
+ {
+ ++rep1;
+ ++reps;
+ }
+
+ if (reps > REPEAT_COUNT_THRESHOLD)
+ {
+ if (in_quotes)
+ {
+ fputs_filtered ("\", ", stream);
+ in_quotes = 0;
+ }
+ fputs_filtered ("'", stream);
+ printchar (string[i], stream, '\'');
+ fprintf_filtered (stream, "' <repeats %u times>", reps);
+ i = rep1 - 1;
+ things_printed += REPEAT_COUNT_THRESHOLD;
+ need_comma = 1;
+ }
+ else
+ {
+ if (!in_quotes)
+ {
+ fputs_filtered ("\"", stream);
+ in_quotes = 1;
+ }
+ printchar (string[i], stream, '"');
+ ++things_printed;
+ }
+ }
+
+ /* Terminate the quotes if necessary. */
+ if (in_quotes)
+ fputs_filtered ("\"", stream);
+
+ if (force_ellipses || i < length)
+ fputs_filtered ("...", stream);
+}
+
+/* Print the value VAL in C-ish syntax on stream STREAM.
+ FORMAT is a format-letter, or 0 for print in natural format of data type.
+ If the object printed is a string pointer, returns
+ the number of string bytes printed. */
+
+int
+value_print (val, stream, format, pretty)
+ value val;
+ FILE *stream;
+ char format;
+ enum val_prettyprint pretty;
+{
+ register unsigned int i, n, typelen;
+
+ /* A "repeated" value really contains several values in a row.
+ They are made by the @ operator.
+ Print such values as if they were arrays. */
+
+ if (VALUE_REPEATED (val))
+ {
+ n = VALUE_REPETITIONS (val);
+ typelen = TYPE_LENGTH (VALUE_TYPE (val));
+ fprintf_filtered (stream, "{");
+ /* Print arrays of characters using string syntax. */
+ if (typelen == 1 && TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_INT
+ && format == 0)
+ print_string (stream, VALUE_CONTENTS (val), n, 0);
+ else
+ {
+ unsigned int things_printed = 0;
+
+ for (i = 0; i < n && things_printed < print_max; i++)
+ {
+ /* Position of the array element we are examining to see
+ whether it is repeated. */
+ unsigned int rep1;
+ /* Number of repititions we have detected so far. */
+ unsigned int reps;
+
+ if (i != 0)
+ fprintf_filtered (stream, ", ");
+
+ rep1 = i + 1;
+ reps = 1;
+ while (rep1 < n
+ && !bcmp (VALUE_CONTENTS (val) + typelen * i,
+ VALUE_CONTENTS (val) + typelen * rep1, typelen))
+ {
+ ++reps;
+ ++rep1;
+ }
+
+ if (reps > REPEAT_COUNT_THRESHOLD)
+ {
+ val_print (VALUE_TYPE (val),
+ VALUE_CONTENTS (val) + typelen * i,
+ VALUE_ADDRESS (val) + typelen * i,
+ stream, format, 1, 0, pretty);
+ fprintf (stream, " <repeats %u times>", reps);
+ i = rep1 - 1;
+ things_printed += REPEAT_COUNT_THRESHOLD;
+ }
+ else
+ {
+ val_print (VALUE_TYPE (val),
+ VALUE_CONTENTS (val) + typelen * i,
+ VALUE_ADDRESS (val) + typelen * i,
+ stream, format, 1, 0, pretty);
+ things_printed++;
+ }
+ }
+ if (i < n)
+ fprintf_filtered (stream, "...");
+ }
+ fprintf_filtered (stream, "}");
+ return n * typelen;
+ }
+ else
+ {
+ /* If it is a pointer, indicate what it points to.
+
+ Print type also if it is a reference.
+
+ C++: if it is a member pointer, we will take care
+ of that when we print it. */
+ if (TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_PTR
+ || TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_REF)
+ {
+ fprintf_filtered (stream, "(");
+ type_print (VALUE_TYPE (val), "", stream, -1);
+ fprintf_filtered (stream, ") ");
+
+ /* If this is a function pointer, try to print what
+ function it is pointing to by name. */
+ if (TYPE_CODE (TYPE_TARGET_TYPE (VALUE_TYPE (val)))
+ == TYPE_CODE_FUNC)
+ {
+ print_address (((int *) VALUE_CONTENTS (val))[0], stream);
+ /* Return value is irrelevant except for string pointers. */
+ return 0;
+ }
+ }
+ return val_print (VALUE_TYPE (val), VALUE_CONTENTS (val),
+ VALUE_ADDRESS (val), stream, format, 1, 0, pretty);
+ }
+}
+
+static int prettyprint; /* Controls prettyprinting of structures. */
+int unionprint; /* Controls printing of nested unions. */
+static void scalar_print_hack();
+void (*default_scalar_print)() = scalar_print_hack;
+
+/* Print data of type TYPE located at VALADDR (within GDB),
+ which came from the inferior at address ADDRESS,
+ onto stdio stream STREAM according to FORMAT
+ (a letter or 0 for natural format).
+
+ If the data are a string pointer, returns the number of
+ sting characters printed.
+
+ if DEREF_REF is nonzero, then dereference references,
+ otherwise just print them like pointers.
+
+ The PRETTY parameter controls prettyprinting. */
+
+int
+val_print (type, valaddr, address, stream, format,
+ deref_ref, recurse, pretty)
+ struct type *type;
+ char *valaddr;
+ CORE_ADDR address;
+ FILE *stream;
+ char format;
+ int deref_ref;
+ int recurse;
+ enum val_prettyprint pretty;
+{
+ register unsigned int i;
+ int len, n_baseclasses;
+ struct type *elttype;
+ int eltlen;
+ LONGEST val;
+ unsigned char c;
+
+ if (pretty == Val_pretty_default)
+ {
+ pretty = prettyprint ? Val_prettyprint : Val_no_prettyprint;
+ }
+
+ QUIT;
+
+ if (TYPE_FLAGS (type) & TYPE_FLAG_STUB)
+ {
+ fprintf_filtered (stream, "<Type not defined in this context>");
+ fflush (stream);
+ return 0;
+ }
+
+ switch (TYPE_CODE (type))
+ {
+ case TYPE_CODE_ARRAY:
+ if (TYPE_LENGTH (type) >= 0
+ && TYPE_LENGTH (TYPE_TARGET_TYPE (type)) > 0)
+ {
+ elttype = TYPE_TARGET_TYPE (type);
+ eltlen = TYPE_LENGTH (elttype);
+ len = TYPE_LENGTH (type) / eltlen;
+ fprintf_filtered (stream, "{");
+ /* For an array of chars, print with string syntax. */
+ if (eltlen == 1 && TYPE_CODE (elttype) == TYPE_CODE_INT
+ && format == 0)
+ print_string (stream, valaddr, len, 0);
+ else
+ {
+ unsigned int things_printed = 0;
+
+ for (i = 0; i < len && things_printed < print_max; i++)
+ {
+ /* Position of the array element we are examining to see
+ whether it is repeated. */
+ unsigned int rep1;
+ /* Number of repititions we have detected so far. */
+ unsigned int reps;
+
+ if (i > 0)
+ fprintf_filtered (stream, ", ");
+
+ rep1 = i + 1;
+ reps = 1;
+ while (rep1 < len
+ && !bcmp (valaddr + i * eltlen,
+ valaddr + rep1 * eltlen, eltlen))
+ {
+ ++reps;
+ ++rep1;
+ }
+
+ if (reps > REPEAT_COUNT_THRESHOLD)
+ {
+ val_print (elttype, valaddr + i * eltlen,
+ 0, stream, format, deref_ref,
+ recurse + 1, pretty);
+ fprintf_filtered (stream, " <repeats %u times>", reps);
+ i = rep1 - 1;
+ things_printed += REPEAT_COUNT_THRESHOLD;
+ }
+ else
+ {
+ val_print (elttype, valaddr + i * eltlen,
+ 0, stream, format, deref_ref,
+ recurse + 1, pretty);
+ things_printed++;
+ }
+ }
+ if (i < len)
+ fprintf_filtered (stream, "...");
+ }
+ fprintf_filtered (stream, "}");
+ break;
+ }
+ /* Array of unspecified length: treat like pointer to first elt. */
+ valaddr = (char *) &address;
+
+ case TYPE_CODE_PTR:
+ if (format)
+ {
+ print_scalar_formatted (valaddr, type, format, 0, stream);
+ break;
+ }
+ if (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_METHOD)
+ {
+ struct type *domain = TYPE_DOMAIN_TYPE (TYPE_TARGET_TYPE (type));
+ struct type *target = TYPE_TARGET_TYPE (TYPE_TARGET_TYPE (type));
+ struct fn_field *f;
+ int j, len2;
+ char *kind = "";
+
+ val = unpack_long (builtin_type_int, valaddr);
+ if (val < 128)
+ {
+ len = TYPE_NFN_FIELDS (domain);
+ for (i = 0; i < len; i++)
+ {
+ f = TYPE_FN_FIELDLIST1 (domain, i);
+ len2 = TYPE_FN_FIELDLIST_LENGTH (domain, i);
+
+ for (j = 0; j < len2; j++)
+ {
+ QUIT;
+ if (TYPE_FN_FIELD_VOFFSET (f, j) == val)
+ {
+ kind = "virtual";
+ goto common;
+ }
+ }
+ }
+ }
+ else
+ {
+ struct symbol *sym = find_pc_function ((CORE_ADDR) val);
+ if (sym == 0)
+ error ("invalid pointer to member function");
+ len = TYPE_NFN_FIELDS (domain);
+ for (i = 0; i < len; i++)
+ {
+ f = TYPE_FN_FIELDLIST1 (domain, i);
+ len2 = TYPE_FN_FIELDLIST_LENGTH (domain, i);
+
+ for (j = 0; j < len2; j++)
+ {
+ QUIT;
+ if (!strcmp (SYMBOL_NAME (sym), TYPE_FN_FIELD_PHYSNAME (f, j)))
+ goto common;
+ }
+ }
+ }
+ common:
+ if (i < len)
+ {
+ fprintf_filtered (stream, "&");
+ type_print_varspec_prefix (TYPE_FN_FIELD_TYPE (f, j), stream, 0, 0);
+ fprintf (stream, kind);
+ if (TYPE_FN_FIELD_PHYSNAME (f, j)[0] == '_'
+ && TYPE_FN_FIELD_PHYSNAME (f, j)[1] == '$')
+ type_print_method_args
+ (TYPE_FN_FIELD_ARGS (f, j) + 1, "~",
+ TYPE_FN_FIELDLIST_NAME (domain, i), 0, stream);
+ else
+ type_print_method_args
+ (TYPE_FN_FIELD_ARGS (f, j), "",
+ TYPE_FN_FIELDLIST_NAME (domain, i), 0, stream);
+ break;
+ }
+ fprintf_filtered (stream, "(");
+ type_print (type, "", stream, -1);
+ fprintf_filtered (stream, ") %d", (int) val >> 3);
+ }
+ else if (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_MEMBER)
+ {
+ struct type *domain = TYPE_DOMAIN_TYPE (TYPE_TARGET_TYPE (type));
+ struct type *target = TYPE_TARGET_TYPE (TYPE_TARGET_TYPE (type));
+ char *kind = "";
+
+ /* VAL is a byte offset into the structure type DOMAIN.
+ Find the name of the field for that offset and
+ print it. */
+ int extra = 0;
+ int bits = 0;
+ len = TYPE_NFIELDS (domain);
+ /* @@ Make VAL into bit offset */
+ val = unpack_long (builtin_type_int, valaddr) << 3;
+ for (i = 0; i < len; i++)
+ {
+ int bitpos = TYPE_FIELD_BITPOS (domain, i);
+ QUIT;
+ if (val == bitpos)
+ break;
+ if (val < bitpos && i > 0)
+ {
+ int ptrsize = (TYPE_LENGTH (builtin_type_char) * TYPE_LENGTH (target));
+ /* Somehow pointing into a field. */
+ i -= 1;
+ extra = (val - TYPE_FIELD_BITPOS (domain, i));
+ if (extra & 0x3)
+ bits = 1;
+ else
+ extra >>= 3;
+ break;
+ }
+ }
+ if (i < len)
+ {
+ fprintf_filtered (stream, "&");
+ type_print_base (domain, stream, 0, 0);
+ fprintf_filtered (stream, "::");
+ fputs_filtered (TYPE_FIELD_NAME (domain, i), stream);
+ if (extra)
+ fprintf_filtered (stream, " + %d bytes", extra);
+ if (bits)
+ fprintf_filtered (stream, " (offset in bits)");
+ break;
+ }
+ fprintf_filtered (stream, "%d", val >> 3);
+ }
+ else
+ {
+ fprintf_filtered (stream, "0x%x", * (int *) valaddr);
+ /* For a pointer to char or unsigned char,
+ also print the string pointed to, unless pointer is null. */
+
+ /* For an array of chars, print with string syntax. */
+ elttype = TYPE_TARGET_TYPE (type);
+ i = 0; /* Number of characters printed. */
+ if (TYPE_LENGTH (elttype) == 1
+ && TYPE_CODE (elttype) == TYPE_CODE_INT
+ && format == 0
+ && unpack_long (type, valaddr) != 0
+ /* If print_max is UINT_MAX, the alloca below will fail.
+ In that case don't try to print the string. */
+ && print_max < UINT_MAX)
+ {
+ fprintf_filtered (stream, " ");
+
+ /* Get first character. */
+ if (read_memory ( (CORE_ADDR) unpack_long (type, valaddr),
+ &c, 1))
+ {
+ /* First address out of bounds. */
+ fprintf_filtered (stream, "<Address 0x%x out of bounds>",
+ (* (int *) valaddr));
+ break;
+ }
+ else
+ {
+ /* A real string. */
+ int out_of_bounds = 0;
+ char *string = (char *) alloca (print_max);
+
+ /* If the loop ends by us hitting print_max characters,
+ we need to have elipses at the end. */
+ int force_ellipses = 1;
+
+ /* This loop only fetches print_max characters, even
+ though print_string might want to print more
+ (with repeated characters). This is so that
+ we don't spend forever fetching if we print
+ a long string consisting of the same character
+ repeated. */
+ while (i < print_max)
+ {
+ QUIT;
+ if (read_memory ((CORE_ADDR) unpack_long (type, valaddr)
+ + i, &c, 1))
+ {
+ out_of_bounds = 1;
+ force_ellipses = 0;
+ break;
+ }
+ else if (c == '\0')
+ {
+ force_ellipses = 0;
+ break;
+ }
+ else
+ string[i++] = c;
+ }
+
+ if (i != 0)
+ print_string (stream, string, i, force_ellipses);
+ if (out_of_bounds)
+ fprintf_filtered (stream,
+ " <Address 0x%x out of bounds>",
+ (*(int *) valaddr) + i);
+ }
+
+ fflush (stream);
+ }
+ /* Return number of characters printed, plus one for the
+ terminating null if we have "reached the end". */
+ return i + (print_max && i != print_max);
+ }
+ break;
+
+ case TYPE_CODE_MEMBER:
+ error ("not implemented: member type in val_print");
+ break;
+
+ case TYPE_CODE_REF:
+ fprintf_filtered (stream, "(0x%x &) = ", * (int *) valaddr);
+ /* De-reference the reference. */
+ if (deref_ref)
+ {
+ if (TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_UNDEF)
+ {
+ value val = value_at (TYPE_TARGET_TYPE (type), * (int *) valaddr);
+ val_print (VALUE_TYPE (val), VALUE_CONTENTS (val),
+ VALUE_ADDRESS (val), stream, format,
+ deref_ref, recurse + 1, pretty);
+ }
+ else
+ fprintf_filtered (stream, "???");
+ }
+ break;
+
+ case TYPE_CODE_UNION:
+ if (recurse && !unionprint)
+ {
+ fprintf_filtered (stream, "{...}");
+ break;
+ }
+ /* Fall through. */
+ case TYPE_CODE_STRUCT:
+ fprintf_filtered (stream, "{");
+ len = TYPE_NFIELDS (type);
+ n_baseclasses = TYPE_N_BASECLASSES (type);
+ for (i = 1; i <= n_baseclasses; i++)
+ {
+ fprintf_filtered (stream, "\n");
+ if (pretty)
+ print_spaces_filtered (2 + 2 * recurse, stream);
+ fputs_filtered ("<", stream);
+ fputs_filtered (TYPE_NAME (TYPE_BASECLASS (type, i)), stream);
+ fputs_filtered ("> = ", stream);
+ val_print (TYPE_FIELD_TYPE (type, 0),
+ valaddr + TYPE_FIELD_BITPOS (type, i-1) / 8,
+ 0, stream, 0, 0, recurse + 1, pretty);
+ }
+ if (i > 1) {
+ fprintf_filtered (stream, "\n");
+ print_spaces_filtered (2 + 2 * recurse, stream);
+ fputs_filtered ("members of ", stream);
+ fputs_filtered (TYPE_NAME (type), stream);
+ fputs_filtered (": ", stream);
+ }
+ if (!len && i == 1)
+ fprintf_filtered (stream, "<No data fields>");
+ else
+ {
+ for (i -= 1; i < len; i++)
+ {
+ if (i > n_baseclasses) fprintf_filtered (stream, ", ");
+ if (pretty)
+ {
+ fprintf_filtered (stream, "\n");
+ print_spaces_filtered (2 + 2 * recurse, stream);
+ }
+ fputs_filtered (TYPE_FIELD_NAME (type, i), stream);
+ fputs_filtered (" = ", stream);
+ /* check if static field */
+ if (TYPE_FIELD_STATIC (type, i))
+ {
+ value v;
+
+ v = value_static_field (type, TYPE_FIELD_NAME (type, i), i);
+ val_print (TYPE_FIELD_TYPE (type, i),
+ VALUE_CONTENTS (v), 0, stream, format,
+ deref_ref, recurse + 1, pretty);
+ }
+ else if (TYPE_FIELD_PACKED (type, i))
+ {
+ char *valp = (char *) & val;
+ union {int i; char c;} test;
+ test.i = 1;
+ if (test.c != 1)
+ valp += sizeof val - TYPE_LENGTH (TYPE_FIELD_TYPE (type, i));
+ val = unpack_field_as_long (type, valaddr, i);
+ val_print (TYPE_FIELD_TYPE (type, i), valp, 0,
+ stream, format, deref_ref, recurse + 1, pretty);
+ }
+ else
+ {
+ val_print (TYPE_FIELD_TYPE (type, i),
+ valaddr + TYPE_FIELD_BITPOS (type, i) / 8,
+ 0, stream, format, deref_ref,
+ recurse + 1, pretty);
+ }
+ }
+ if (pretty)
+ {
+ fprintf_filtered (stream, "\n");
+ print_spaces_filtered (2 * recurse, stream);
+ }
+ }
+ fprintf_filtered (stream, "}");
+ break;
+
+ case TYPE_CODE_ENUM:
+ if (format)
+ {
+ print_scalar_formatted (valaddr, type, format, 0, stream);
+ break;
+ }
+ len = TYPE_NFIELDS (type);
+ val = unpack_long (builtin_type_int, valaddr);
+ for (i = 0; i < len; i++)
+ {
+ QUIT;
+ if (val == TYPE_FIELD_BITPOS (type, i))
+ break;
+ }
+ if (i < len)
+ fputs_filtered (TYPE_FIELD_NAME (type, i), stream);
+ else
+ fprintf_filtered (stream, "%d", (int) val);
+ break;
+
+ case TYPE_CODE_FUNC:
+ if (format)
+ {
+ print_scalar_formatted (valaddr, type, format, 0, stream);
+ break;
+ }
+ fprintf_filtered (stream, "{");
+ type_print (type, "", stream, -1);
+ fprintf_filtered (stream, "} ");
+ fprintf_filtered (stream, "0x%x", address);
+ break;
+
+ case TYPE_CODE_INT:
+ if (format)
+ print_scalar_formatted (valaddr, type, format, 0, stream);
+ else
+ {
+ (*default_scalar_print)(stream, type, unpack_long(type, valaddr));
+#ifdef notdef
+ if (TYPE_LENGTH (type) == 1)
+ {
+ fprintf_filtered (stream, " '");
+ printchar ((unsigned char) unpack_long (type, valaddr),
+ stream, '\'');
+ fprintf_filtered (stream, "'");
+ }
+#endif
+ }
+ break;
+
+ case TYPE_CODE_FLT:
+ if (format)
+ print_scalar_formatted (valaddr, type, format, 0, stream);
+ else
+ print_floating (valaddr, type, stream);
+ break;
+
+ case TYPE_CODE_VOID:
+ fprintf_filtered (stream, "void");
+ break;
+
+ default:
+ error ("Invalid type code in symbol table.");
+ }
+ fflush (stream);
+ return 0;
+}
+
+/* Print a description of a type TYPE
+ in the form of a declaration of a variable named VARSTRING.
+ Output goes to STREAM (via stdio).
+ If SHOW is positive, we show the contents of the outermost level
+ of structure even if there is a type name that could be used instead.
+ If SHOW is negative, we never show the details of elements' types. */
+
+void
+type_print (type, varstring, stream, show)
+ struct type *type;
+ char *varstring;
+ FILE *stream;
+ int show;
+{
+ type_print_1 (type, varstring, stream, show, 0);
+}
+
+/* LEVEL is the depth to indent lines by. */
+
+void
+type_print_1 (type, varstring, stream, show, level)
+ struct type *type;
+ char *varstring;
+ FILE *stream;
+ int show;
+ int level;
+{
+ register enum type_code code;
+ type_print_base (type, stream, show, level);
+ code = TYPE_CODE (type);
+ if ((varstring && *varstring)
+ ||
+ /* Need a space if going to print stars or brackets;
+ but not if we will print just a type name. */
+ ((show > 0 || TYPE_NAME (type) == 0)
+ &&
+ (code == TYPE_CODE_PTR || code == TYPE_CODE_FUNC
+ || code == TYPE_CODE_METHOD
+ || code == TYPE_CODE_ARRAY
+ || code == TYPE_CODE_MEMBER
+ || code == TYPE_CODE_REF)))
+ fprintf_filtered (stream, " ");
+ type_print_varspec_prefix (type, stream, show, 0);
+ fputs_filtered (varstring, stream);
+ type_print_varspec_suffix (type, stream, show, 0);
+}
+
+/* Print the method arguments ARGS to the file STREAM. */
+static void
+type_print_method_args (args, prefix, varstring, staticp, stream)
+ struct type **args;
+ char *prefix, *varstring;
+ int staticp;
+ FILE *stream;
+{
+ int i;
+
+ fputs_filtered (" ", stream);
+ fputs_filtered (prefix, stream);
+ fputs_filtered (varstring, stream);
+ fputs_filtered (" (", stream);
+ if (args && args[!staticp] && args[!staticp]->code != TYPE_CODE_VOID)
+ {
+ i = !staticp; /* skip the class variable */
+ while (1)
+ {
+ type_print (args[i++], "", stream, 0);
+ if (!args[i])
+ {
+ fprintf_filtered (stream, " ...");
+ break;
+ }
+ else if (args[i]->code != TYPE_CODE_VOID)
+ {
+ fprintf_filtered (stream, ", ");
+ }
+ else break;
+ }
+ }
+ fprintf_filtered (stream, ")");
+}
+
+/* If TYPE is a derived type, then print out derivation
+ information. Print out all layers of the type heirarchy
+ until we encounter one with multiple inheritance.
+ At that point, print out that ply, and return. */
+static void
+type_print_derivation_info (stream, type)
+ FILE *stream;
+ struct type *type;
+{
+ char *name;
+ int i, n_baseclasses = TYPE_N_BASECLASSES (type);
+ struct type *basetype = 0;
+
+ while (type && n_baseclasses == 1)
+ {
+ basetype = TYPE_BASECLASS (type, 1);
+ if (TYPE_NAME (basetype) && (name = TYPE_NAME (basetype)))
+ {
+ while (*name != ' ') name++;
+ fprintf_filtered (stream, ": %s%s ",
+ TYPE_VIA_PUBLIC (basetype) ? "public" : "private",
+ TYPE_VIA_VIRTUAL (basetype) ? " virtual" : "");
+ fputs_filtered (name + 1, stream);
+ fputs_filtered (" ", stream);
+ }
+ n_baseclasses = TYPE_N_BASECLASSES (basetype);
+ type = basetype;
+ }
+
+ if (type)
+ {
+ if (n_baseclasses != 0)
+ fprintf_filtered (stream, ": ");
+ for (i = 1; i <= n_baseclasses; i++)
+ {
+ basetype = TYPE_BASECLASS (type, i);
+ if (TYPE_NAME (basetype) && (name = TYPE_NAME (basetype)))
+ {
+ while (*name != ' ') name++;
+ fprintf_filtered (stream, "%s%s ",
+ TYPE_VIA_PUBLIC (basetype) ? "public" : "private",
+ TYPE_VIA_VIRTUAL (basetype) ? " virtual" : "");
+ fputs_filtered (name + 1, stream);
+ }
+ if (i < n_baseclasses)
+ fprintf_filtered (stream, ", ");
+ }
+ fprintf_filtered (stream, " ");
+ }
+}
+
+/* Print any asterisks or open-parentheses needed before the
+ variable name (to describe its type).
+
+ On outermost call, pass 0 for PASSED_A_PTR.
+ On outermost call, SHOW > 0 means should ignore
+ any typename for TYPE and show its details.
+ SHOW is always zero on recursive calls. */
+
+static void
+type_print_varspec_prefix (type, stream, show, passed_a_ptr)
+ struct type *type;
+ FILE *stream;
+ int show;
+ int passed_a_ptr;
+{
+ if (type == 0)
+ return;
+
+ if (TYPE_NAME (type) && show <= 0)
+ return;
+
+ QUIT;
+
+ switch (TYPE_CODE (type))
+ {
+ case TYPE_CODE_PTR:
+ type_print_varspec_prefix (TYPE_TARGET_TYPE (type), stream, 0, 1);
+ fprintf_filtered (stream, "*");
+ break;
+
+ case TYPE_CODE_MEMBER:
+ if (passed_a_ptr)
+ fprintf_filtered (stream, "(");
+ type_print_varspec_prefix (TYPE_TARGET_TYPE (type), stream, 0,
+ 0);
+ fprintf_filtered (stream, " ");
+ type_print_base (TYPE_DOMAIN_TYPE (type), stream, 0,
+ passed_a_ptr);
+ fprintf_filtered (stream, "::");
+ break;
+
+ case TYPE_CODE_METHOD:
+ if (passed_a_ptr)
+ fprintf (stream, "(");
+ type_print_varspec_prefix (TYPE_TARGET_TYPE (type), stream, 0,
+ 0);
+ fprintf_filtered (stream, " ");
+ type_print_base (TYPE_DOMAIN_TYPE (type), stream, 0,
+ passed_a_ptr);
+ fprintf_filtered (stream, "::");
+ break;
+
+ case TYPE_CODE_REF:
+ type_print_varspec_prefix (TYPE_TARGET_TYPE (type), stream, 0, 1);
+ fprintf_filtered (stream, "&");
+ break;
+
+ case TYPE_CODE_FUNC:
+ type_print_varspec_prefix (TYPE_TARGET_TYPE (type), stream, 0,
+ 0);
+ if (passed_a_ptr)
+ fprintf_filtered (stream, "(");
+ break;
+
+ case TYPE_CODE_ARRAY:
+ type_print_varspec_prefix (TYPE_TARGET_TYPE (type), stream, 0,
+ 0);
+ if (passed_a_ptr)
+ fprintf_filtered (stream, "(");
+ }
+}
+
+/* Print any array sizes, function arguments or close parentheses
+ needed after the variable name (to describe its type).
+ Args work like type_print_varspec_prefix. */
+
+static void
+type_print_varspec_suffix (type, stream, show, passed_a_ptr)
+ struct type *type;
+ FILE *stream;
+ int show;
+ int passed_a_ptr;
+{
+ if (type == 0)
+ return;
+
+ if (TYPE_NAME (type) && show <= 0)
+ return;
+
+ QUIT;
+
+ switch (TYPE_CODE (type))
+ {
+ case TYPE_CODE_ARRAY:
+ if (passed_a_ptr)
+ fprintf_filtered (stream, ")");
+
+ fprintf_filtered (stream, "[");
+ if (TYPE_LENGTH (type) >= 0
+ && TYPE_LENGTH (TYPE_TARGET_TYPE (type)) > 0)
+ fprintf_filtered (stream, "%d",
+ (TYPE_LENGTH (type)
+ / TYPE_LENGTH (TYPE_TARGET_TYPE (type))));
+ fprintf_filtered (stream, "]");
+
+ type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0,
+ 0);
+ break;
+
+ case TYPE_CODE_MEMBER:
+ if (passed_a_ptr)
+ fprintf_filtered (stream, ")");
+ type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0, 0);
+ break;
+
+ case TYPE_CODE_METHOD:
+ if (passed_a_ptr)
+ fprintf_filtered (stream, ")");
+ type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0, 0);
+ if (passed_a_ptr)
+ {
+ int i;
+ struct type **args = TYPE_ARG_TYPES (type);
+
+ fprintf_filtered (stream, "(");
+ if (args[1] == 0)
+ fprintf_filtered (stream, "...");
+ else for (i = 1; args[i] != 0 && args[i]->code != TYPE_CODE_VOID; i++)
+ {
+ type_print_1 (args[i], "", stream, -1, 0);
+ if (args[i+1] == 0)
+ fprintf_filtered (stream, "...");
+ else if (args[i+1]->code != TYPE_CODE_VOID)
+ fprintf_filtered (stream, ",");
+ }
+ fprintf_filtered (stream, ")");
+ }
+ break;
+
+ case TYPE_CODE_PTR:
+ case TYPE_CODE_REF:
+ type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0, 1);
+ break;
+
+ case TYPE_CODE_FUNC:
+ type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0,
+ passed_a_ptr);
+ if (passed_a_ptr)
+ fprintf_filtered (stream, ")");
+ fprintf_filtered (stream, "()");
+ break;
+ }
+}
+
+/* Print the name of the type (or the ultimate pointer target,
+ function value or array element), or the description of a
+ structure or union.
+
+ SHOW nonzero means don't print this type as just its name;
+ show its real definition even if it has a name.
+ SHOW zero means print just typename or struct tag if there is one
+ SHOW negative means abbreviate structure elements.
+ SHOW is decremented for printing of structure elements.
+
+ LEVEL is the depth to indent by.
+ We increase it for some recursive calls. */
+
+static void
+type_print_base (type, stream, show, level)
+ struct type *type;
+ FILE *stream;
+ int show;
+ int level;
+{
+ char *name;
+ register int i;
+ register int len;
+ register int lastval;
+
+ QUIT;
+
+ if (type == 0)
+ {
+ fprintf_filtered (stream, "type unknown");
+ return;
+ }
+
+ if (TYPE_NAME (type) && show <= 0)
+ {
+ fputs_filtered (TYPE_NAME (type), stream);
+ return;
+ }
+
+ switch (TYPE_CODE (type))
+ {
+ case TYPE_CODE_ARRAY:
+ case TYPE_CODE_PTR:
+ case TYPE_CODE_MEMBER:
+ case TYPE_CODE_REF:
+ case TYPE_CODE_FUNC:
+ case TYPE_CODE_METHOD:
+ type_print_base (TYPE_TARGET_TYPE (type), stream, show, level);
+ break;
+
+ case TYPE_CODE_STRUCT:
+ fprintf_filtered (stream, "struct ");
+ goto struct_union;
+
+ case TYPE_CODE_UNION:
+ fprintf_filtered (stream, "union ");
+ struct_union:
+ if (TYPE_NAME (type) && (name = TYPE_NAME (type)))
+ {
+ while (*name != ' ') name++;
+ fputs_filtered (name + 1, stream);
+ fputs_filtered (" ", stream);
+ }
+ if (show < 0)
+ fprintf_filtered (stream, "{...}");
+ else
+ {
+ int i;
+
+ type_print_derivation_info (stream, type);
+
+ fprintf_filtered (stream, "{");
+ len = TYPE_NFIELDS (type);
+ if (len)
+ fprintf_filtered (stream, "\n");
+ else
+ {
+ if (TYPE_FLAGS (type) & TYPE_FLAG_STUB)
+ fprintf_filtered (stream, "<incomplete type>\n");
+ else
+ fprintf_filtered (stream, "<no data fields>\n");
+ }
+
+ /* If there is a base class for this type,
+ do not print the field that it occupies. */
+ for (i = TYPE_N_BASECLASSES (type); i < len; i++)
+ {
+ QUIT;
+ /* Don't print out virtual function table. */
+ if (! strncmp (TYPE_FIELD_NAME (type, i),
+ "_vptr$", 6))
+ continue;
+
+ print_spaces_filtered (level + 4, stream);
+ if (TYPE_FIELD_STATIC (type, i))
+ {
+ fprintf_filtered (stream, "static ");
+ }
+ type_print_1 (TYPE_FIELD_TYPE (type, i),
+ TYPE_FIELD_NAME (type, i),
+ stream, show - 1, level + 4);
+ if (!TYPE_FIELD_STATIC (type, i)
+ && TYPE_FIELD_PACKED (type, i))
+ {
+ /* It is a bitfield. This code does not attempt
+ to look at the bitpos and reconstruct filler,
+ unnamed fields. This would lead to misleading
+ results if the compiler does not put out fields
+ for such things (I don't know what it does). */
+ fprintf_filtered (stream, " : %d",
+ TYPE_FIELD_BITSIZE (type, i));
+ }
+ fprintf_filtered (stream, ";\n");
+ }
+
+ /* C++: print out the methods */
+ len = TYPE_NFN_FIELDS (type);
+ if (len) fprintf_filtered (stream, "\n");
+ for (i = 0; i < len; i++)
+ {
+ struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
+ int j, len2 = TYPE_FN_FIELDLIST_LENGTH (type, i);
+
+ for (j = 0; j < len2; j++)
+ {
+ QUIT;
+ print_spaces_filtered (level + 4, stream);
+ if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
+ fprintf_filtered (stream, "virtual ");
+ else if (TYPE_FN_FIELD_STATIC_P (f, j))
+ fprintf_filtered (stream, "static ");
+ type_print (TYPE_TARGET_TYPE (TYPE_FN_FIELD_TYPE (f, j)), "", stream, 0);
+ if (TYPE_FN_FIELD_PHYSNAME (f, j)[0] == '_'
+ && TYPE_FN_FIELD_PHYSNAME (f, j)[1] == '$')
+ type_print_method_args
+ (TYPE_FN_FIELD_ARGS (f, j) + 1, "~",
+ TYPE_FN_FIELDLIST_NAME (type, i), 0, stream);
+ else
+ type_print_method_args
+ (TYPE_FN_FIELD_ARGS (f, j), "",
+ TYPE_FN_FIELDLIST_NAME (type, i),
+ TYPE_FN_FIELD_STATIC_P (f, j), stream);
+
+ fprintf_filtered (stream, ";\n");
+ }
+ if (len2) fprintf_filtered (stream, "\n");
+ }
+
+ print_spaces_filtered (level, stream);
+ fprintf_filtered (stream, "}");
+ }
+ break;
+
+ case TYPE_CODE_ENUM:
+ fprintf_filtered (stream, "enum ");
+ if (TYPE_NAME (type))
+ {
+ name = TYPE_NAME (type);
+ while (*name != ' ') name++;
+ fputs_filtered (name + 1, stream);
+ fputs_filtered (" ", stream);
+ }
+ if (show < 0)
+ fprintf_filtered (stream, "{...}");
+ else
+ {
+ fprintf_filtered (stream, "{");
+ len = TYPE_NFIELDS (type);
+ lastval = 0;
+ for (i = 0; i < len; i++)
+ {
+ QUIT;
+ if (i) fprintf_filtered (stream, ", ");
+ fputs_filtered (TYPE_FIELD_NAME (type, i), stream);
+ if (lastval != TYPE_FIELD_BITPOS (type, i))
+ {
+ fprintf_filtered (stream, " : %d", TYPE_FIELD_BITPOS (type, i));
+ lastval = TYPE_FIELD_BITPOS (type, i);
+ }
+ lastval++;
+ }
+ fprintf_filtered (stream, "}");
+ }
+ break;
+
+ case TYPE_CODE_INT:
+ if (TYPE_UNSIGNED (type))
+ name = unsigned_type_table[TYPE_LENGTH (type)];
+ else
+ name = signed_type_table[TYPE_LENGTH (type)];
+ fputs_filtered (name, stream);
+ break;
+
+ case TYPE_CODE_FLT:
+ name = float_type_table[TYPE_LENGTH (type)];
+ fputs_filtered (name, stream);
+ break;
+
+ case TYPE_CODE_VOID:
+ fprintf_filtered (stream, "void");
+ break;
+
+ case 0:
+ fprintf_filtered (stream, "struct unknown");
+ break;
+
+ default:
+ error ("Invalid type code in symbol table.");
+ }
+}
+
+static void
+scalar_print_decimal(stream, type, val)
+ FILE *stream;
+ struct type *type;
+ LONGEST val;
+{
+ fprintf_filtered(stream, TYPE_UNSIGNED(type)? "%lu":"%ld", val);
+}
+
+static void
+scalar_print_hex(stream, type, val)
+ FILE *stream;
+ struct type *type;
+ LONGEST val;
+{
+ switch (TYPE_LENGTH(type)) {
+ case 1:
+ fprintf_filtered (stream, "0x%02lx", val);
+ break;
+ case 2:
+ fprintf_filtered (stream, "0x%04lx", val);
+ break;
+ case 4:
+ fprintf_filtered (stream, "0x%08lx", val);
+ break;
+ default:
+ fprintf_filtered (stream, "0x%lx", val);
+ break;
+ }
+}
+
+static void
+scalar_print_octal(stream, type, val)
+ FILE *stream;
+ struct type *type;
+ LONGEST val;
+{
+ switch (TYPE_LENGTH(type)) {
+ case 1:
+ fprintf_filtered (stream, "0%03lo", val);
+ break;
+ case 2:
+ fprintf_filtered (stream, "0%06lo", val);
+ break;
+ case 4:
+ fprintf_filtered (stream, "0%012lo", val);
+ break;
+ default:
+ fprintf_filtered (stream, "0%lo", val);
+ break;
+ }
+}
+
+static void
+scalar_print_hack(stream, type, val)
+ FILE *stream;
+ struct type *type;
+ LONGEST val;
+{
+ if (TYPE_UNSIGNED(type))
+ scalar_print_hex(stream, type, val);
+ else
+ scalar_print_decimal(stream, type, val);
+}
+
+static void
+set_maximum_command (arg)
+ char *arg;
+{
+ if (!arg) error_no_arg ("value for maximum elements to print");
+ print_max = parse_and_eval_address (arg);
+ if (print_max == 0)
+ print_max = UINT_MAX;
+}
+
+static void
+set_base_command(arg)
+ char *arg;
+{
+ int base;
+
+ if (!arg)
+ base = 0;
+ else
+ base = parse_and_eval_address (arg);
+ switch (base) {
+ default:
+ default_scalar_print = scalar_print_hack;
+ break;
+ case 8:
+ default_scalar_print = scalar_print_octal;
+ break;
+ case 10:
+ default_scalar_print = scalar_print_decimal;
+ break;
+ case 16:
+ default_scalar_print = scalar_print_hex;
+ break;
+ }
+}
+
+static void
+set_prettyprint_command (arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ prettyprint = parse_binary_operation ("set prettyprint", arg);
+}
+
+static void
+set_unionprint_command (arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ unionprint = parse_binary_operation ("set unionprint", arg);
+}
+
+format_info (arg, from_tty)
+ char *arg;
+ int from_tty;
+{
+ if (arg)
+ error ("\"info format\" does not take any arguments.");
+ printf ("Prettyprinting of structures is %s.\n",
+ prettyprint ? "on" : "off");
+ printf ("Printing of unions interior to structures is %s.\n",
+ unionprint ? "on" : "off");
+ if (print_max == UINT_MAX)
+ printf_filtered
+ ("There is no maximum number of array elements printed.\n");
+ else
+ printf_filtered
+ ("The maximum number of array elements printed is %d.\n", print_max);
+}
+
+extern struct cmd_list_element *setlist;
+
+void
+_initialize_valprint ()
+{
+ add_cmd ("base", class_support, set_base_command,
+ "Change default integer print radix to 8, 10 or 16\n\
+No args returns to the ad-hoc default of `16' for unsigned values\n\
+and `10' otherwise.",
+ &setlist);
+ add_cmd ("array-max", class_vars, set_maximum_command,
+ "Set NUMBER as limit on string chars or array elements to print.\n\
+\"set array-max 0\" causes there to be no limit.",
+ &setlist);
+
+ add_cmd ("prettyprint", class_support, set_prettyprint_command,
+ "Turn prettyprinting of structures on and off.",
+ &setlist);
+ add_alias_cmd ("pp", "prettyprint", class_support, 1, &setlist);
+
+ add_cmd ("unionprint", class_support, set_unionprint_command,
+ "Turn printing of unions interior to structures on and off.",
+ &setlist);
+
+ add_info ("format", format_info,
+ "Show current settings of data formatting options.");
+
+ /* Give people the defaults which they are used to. */
+ prettyprint = 0;
+ unionprint = 1;
+
+ print_max = 200;
+
+ unsigned_type_table
+ = (char **) xmalloc ((1 + sizeof (unsigned LONGEST)) * sizeof (char *));
+ bzero (unsigned_type_table, (1 + sizeof (unsigned LONGEST)));
+ unsigned_type_table[sizeof (unsigned char)] = "unsigned char";
+ unsigned_type_table[sizeof (unsigned short)] = "unsigned short";
+ unsigned_type_table[sizeof (unsigned long)] = "unsigned long";
+ unsigned_type_table[sizeof (unsigned int)] = "unsigned int";
+#ifdef LONG_LONG
+ unsigned_type_table[sizeof (unsigned long long)] = "unsigned long long";
+#endif
+
+ signed_type_table
+ = (char **) xmalloc ((1 + sizeof (LONGEST)) * sizeof (char *));
+ bzero (signed_type_table, (1 + sizeof (LONGEST)));
+ signed_type_table[sizeof (char)] = "char";
+ signed_type_table[sizeof (short)] = "short";
+ signed_type_table[sizeof (long)] = "long";
+ signed_type_table[sizeof (int)] = "int";
+#ifdef LONG_LONG
+ signed_type_table[sizeof (long long)] = "long long";
+#endif
+
+ float_type_table
+ = (char **) xmalloc ((1 + sizeof (double)) * sizeof (char *));
+ bzero (float_type_table, (1 + sizeof (double)));
+ float_type_table[sizeof (float)] = "float";
+ float_type_table[sizeof (double)] = "double";
+}
+
diff --git a/gnu/usr.bin/kgdb/value.h b/gnu/usr.bin/kgdb/value.h
new file mode 100644
index 000000000000..b8af93a24e31
--- /dev/null
+++ b/gnu/usr.bin/kgdb/value.h
@@ -0,0 +1,212 @@
+/* Definitions for values of C expressions, for GDB.
+ Copyright (C) 1986, 1987, 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+/*
+ * The structure which defines the type of a value. It should never
+ * be possible for a program lval value to survive over a call to the inferior
+ * (ie to be put into the history list or an internal variable).
+ */
+enum lval_type {
+ /* Not an lval. */
+ not_lval,
+ /* In memory. Could be a saved register. */
+ lval_memory,
+ /* In a register. */
+ lval_register,
+ /* In a gdb internal variable. */
+ lval_internalvar,
+ /* Part of a gdb internal variable (structure field). */
+ lval_internalvar_component,
+ /* In a register series in a frame not the current one, which may have been
+ partially saved or saved in different places (otherwise would be
+ lval_register or lval_memory). */
+ lval_reg_frame_relative,
+};
+
+struct value
+ {
+ /* Type of value; either not an lval, or one of the various
+ different possible kinds of lval. */
+ enum lval_type lval;
+ /* Location of value (if lval). */
+ union
+ {
+ /* Address in inferior or byte of registers structure. */
+ CORE_ADDR address;
+ /* Pointer to interrnal variable. */
+ struct internalvar *internalvar;
+ /* Number of register. Only used with
+ lval_reg_frame_relative. */
+ int regnum;
+ } location;
+ /* Describes offset of a value within lval a structure in bytes. */
+ int offset;
+ /* Only used for bitfields; number of bits contained in them. */
+ int bitsize;
+ /* Only used for bitfields; position of start of field. */
+ int bitpos;
+ /* Frame value is relative to. In practice, this address is only
+ used if the value is stored in several registers in other than
+ the current frame, and these registers have not all been saved
+ at the same place in memory. This will be described in the
+ lval enum above as "lval_reg_frame_relative". */
+ CORE_ADDR frame_addr;
+ /* Type of the value. */
+ struct type *type;
+ /* Values are stored in a chain, so that they can be deleted
+ easily over calls to the inferior. Values assigned to internal
+ variables or put into the value history are taken off this
+ list. */
+ struct value *next;
+ /* If an lval is forced to repeat, a new value is created with
+ these fields set. The new value is not an lval. */
+ short repeated;
+ short repetitions;
+ /* Register number if the value is from a register. Is not kept
+ if you take a field of a structure that is stored in a
+ register. Shouldn't it be? */
+ short regno;
+ /* Actual contents of the value. For use of this value; setting
+ it uses the stuff above. */
+ long contents[1];
+ };
+
+typedef struct value *value;
+
+#define VALUE_TYPE(val) (val)->type
+#define VALUE_CONTENTS(val) ((char *) (val)->contents)
+#define VALUE_LVAL(val) (val)->lval
+#define VALUE_ADDRESS(val) (val)->location.address
+#define VALUE_INTERNALVAR(val) (val)->location.internalvar
+#define VALUE_FRAME_REGNUM(val) ((val)->location.regnum)
+#define VALUE_FRAME(val) ((val)->frame_addr)
+#define VALUE_OFFSET(val) (val)->offset
+#define VALUE_BITSIZE(val) (val)->bitsize
+#define VALUE_BITPOS(val) (val)->bitpos
+#define VALUE_NEXT(val) (val)->next
+#define VALUE_REPEATED(val) (val)->repeated
+#define VALUE_REPETITIONS(val) (val)->repetitions
+#define VALUE_REGNO(val) (val)->regno
+
+/* If ARG is an array, convert it to a pointer.
+ If ARG is an enum, convert it to an integer.
+
+ References are dereferenced. */
+
+#define COERCE_ARRAY(arg) \
+{ if (TYPE_CODE ( VALUE_TYPE (arg)) == TYPE_CODE_REF) \
+ arg = value_ind (arg); \
+ if (VALUE_REPEATED (arg) \
+ || TYPE_CODE (VALUE_TYPE (arg)) == TYPE_CODE_ARRAY) \
+ arg = value_coerce_array (arg); \
+ if (TYPE_CODE (VALUE_TYPE (arg)) == TYPE_CODE_ENUM) \
+ arg = value_cast (builtin_type_unsigned_int, arg); \
+}
+
+/* If ARG is an enum, convert it to an integer. */
+
+#define COERCE_ENUM(arg) \
+{ if (TYPE_CODE ( VALUE_TYPE (arg)) == TYPE_CODE_REF) \
+ arg = value_ind (arg); \
+ if (TYPE_CODE (VALUE_TYPE (arg)) == TYPE_CODE_ENUM) \
+ arg = value_cast (builtin_type_unsigned_int, arg); \
+}
+
+/* Internal variables (variables for convenience of use of debugger)
+ are recorded as a chain of these structures. */
+
+struct internalvar
+{
+ struct internalvar *next;
+ char *name;
+ value value;
+};
+
+LONGEST value_as_long ();
+double value_as_double ();
+LONGEST unpack_long ();
+double unpack_double ();
+long unpack_field_as_long ();
+value value_from_long ();
+value value_from_double ();
+value value_at ();
+value value_from_register ();
+value value_of_variable ();
+value value_of_register ();
+value read_var_value ();
+value locate_var_value ();
+value allocate_value ();
+value allocate_repeat_value ();
+value value_string ();
+
+value value_binop ();
+value value_add ();
+value value_sub ();
+value value_coerce_array ();
+value value_ind ();
+value value_addr ();
+value value_assign ();
+value value_neg ();
+value value_lognot ();
+value value_struct_elt (), value_struct_elt_for_address ();
+value value_field ();
+value value_cast ();
+value value_zero ();
+value value_repeat ();
+value value_subscript ();
+
+value call_function ();
+value value_being_returned ();
+int using_struct_return ();
+
+value evaluate_expression ();
+value evaluate_type ();
+value parse_and_eval ();
+value parse_to_comma_and_eval ();
+
+value access_value_history ();
+value value_of_internalvar ();
+struct internalvar *lookup_internalvar ();
+
+int value_equal ();
+int value_less ();
+int value_zerop ();
+
+/* C++ */
+value value_of_this ();
+value value_static_field ();
+value value_x_binop ();
+value value_x_unop ();
+int binop_user_defined_p ();
+int unop_user_defined_p ();
+
+void read_register_bytes ();
+void modify_field ();
+void type_print ();
+void type_print_1 ();
+
+/* Possibilities for prettyprint parameters to routines which print
+ things. */
+enum val_prettyprint {
+ Val_no_prettyprint = 0,
+ Val_prettyprint,
+ /* Use the default setting which the user has specified. */
+ Val_pretty_default
+ };
+
diff --git a/gnu/usr.bin/kgdb/values.c b/gnu/usr.bin/kgdb/values.c
new file mode 100644
index 000000000000..8d3314043d82
--- /dev/null
+++ b/gnu/usr.bin/kgdb/values.c
@@ -0,0 +1,1059 @@
+/*-
+ * This code is derived from software copyrighted by the Free Software
+ * Foundation.
+ *
+ * Modified 1991 by Donn Seeley at UUNET Technologies, Inc.
+ * Modified 1990 by Van Jacobson at Lawrence Berkeley Laboratory.
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)values.c 6.3 (Berkeley) 5/8/91";
+#endif /* not lint */
+
+/* Low level packing and unpacking of values for GDB.
+ Copyright (C) 1986, 1987, 1989 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include <stdio.h>
+#include "defs.h"
+#include "param.h"
+#include "symtab.h"
+#include "value.h"
+
+/* The value-history records all the values printed
+ by print commands during this session. Each chunk
+ records 60 consecutive values. The first chunk on
+ the chain records the most recent values.
+ The total number of values is in value_history_count. */
+
+#define VALUE_HISTORY_CHUNK 60
+
+struct value_history_chunk
+{
+ struct value_history_chunk *next;
+ value values[VALUE_HISTORY_CHUNK];
+};
+
+/* Chain of chunks now in use. */
+
+static struct value_history_chunk *value_history_chain;
+
+static int value_history_count; /* Abs number of last entry stored */
+
+
+/* List of all value objects currently allocated
+ (except for those released by calls to release_value)
+ This is so they can be freed after each command. */
+
+static value all_values;
+
+/* Allocate a value that has the correct length for type TYPE. */
+
+value
+allocate_value (type)
+ struct type *type;
+{
+ register value val;
+
+ /* If the type we want had no definition in the file it first
+ * appeared in, it will be marked a `stub'. The real definition
+ * probably appeared later so try to find it. */
+ if (TYPE_FLAGS(type) & TYPE_FLAG_STUB)
+ {
+ register char *cp;
+ register struct symbol *sym;
+ extern char *index();
+
+ if (cp = index(TYPE_NAME(type), ' '))
+ ++cp;
+ else
+ cp = TYPE_NAME(type);
+
+ sym = lookup_symbol(cp, 0, STRUCT_NAMESPACE, 0);
+
+ if (sym && TYPE_CODE(SYMBOL_TYPE(sym)) == TYPE_CODE(type))
+ bcopy (SYMBOL_TYPE (sym), type, sizeof (*type));
+ }
+ val = (value) xmalloc (sizeof (struct value) + TYPE_LENGTH (type));
+ VALUE_NEXT (val) = all_values;
+ all_values = val;
+ VALUE_TYPE (val) = type;
+ VALUE_LVAL (val) = not_lval;
+ VALUE_ADDRESS (val) = 0;
+ VALUE_FRAME (val) = 0;
+ VALUE_OFFSET (val) = 0;
+ VALUE_BITPOS (val) = 0;
+ VALUE_BITSIZE (val) = 0;
+ VALUE_REPEATED (val) = 0;
+ VALUE_REPETITIONS (val) = 0;
+ VALUE_REGNO (val) = -1;
+ return val;
+}
+
+/* Allocate a value that has the correct length
+ for COUNT repetitions type TYPE. */
+
+value
+allocate_repeat_value (type, count)
+ struct type *type;
+ int count;
+{
+ register value val;
+
+ val = (value) xmalloc (sizeof (struct value) + TYPE_LENGTH (type) * count);
+ VALUE_NEXT (val) = all_values;
+ all_values = val;
+ VALUE_TYPE (val) = type;
+ VALUE_LVAL (val) = not_lval;
+ VALUE_ADDRESS (val) = 0;
+ VALUE_FRAME (val) = 0;
+ VALUE_OFFSET (val) = 0;
+ VALUE_BITPOS (val) = 0;
+ VALUE_BITSIZE (val) = 0;
+ VALUE_REPEATED (val) = 1;
+ VALUE_REPETITIONS (val) = count;
+ VALUE_REGNO (val) = -1;
+ return val;
+}
+
+/* Free all the values that have been allocated (except for those released).
+ Called after each command, successful or not. */
+
+void
+free_all_values ()
+{
+ register value val, next;
+
+ for (val = all_values; val; val = next)
+ {
+ next = VALUE_NEXT (val);
+ free (val);
+ }
+
+ all_values = 0;
+}
+
+/* Remove VAL from the chain all_values
+ so it will not be freed automatically. */
+
+void
+release_value (val)
+ register value val;
+{
+ register value v;
+
+ if (all_values == val)
+ {
+ all_values = val->next;
+ return;
+ }
+
+ for (v = all_values; v; v = v->next)
+ {
+ if (v->next == val)
+ {
+ v->next = val->next;
+ break;
+ }
+ }
+}
+
+/* Return a copy of the value ARG.
+ It contains the same contents, for same memory address,
+ but it's a different block of storage. */
+
+static value
+value_copy (arg)
+ value arg;
+{
+ register value val;
+ register struct type *type = VALUE_TYPE (arg);
+ if (VALUE_REPEATED (arg))
+ val = allocate_repeat_value (type, VALUE_REPETITIONS (arg));
+ else
+ val = allocate_value (type);
+ VALUE_LVAL (val) = VALUE_LVAL (arg);
+ VALUE_ADDRESS (val) = VALUE_ADDRESS (arg);
+ VALUE_OFFSET (val) = VALUE_OFFSET (arg);
+ VALUE_BITPOS (val) = VALUE_BITPOS (arg);
+ VALUE_BITSIZE (val) = VALUE_BITSIZE (arg);
+ VALUE_REGNO (val) = VALUE_REGNO (arg);
+ bcopy (VALUE_CONTENTS (arg), VALUE_CONTENTS (val),
+ TYPE_LENGTH (VALUE_TYPE (arg))
+ * (VALUE_REPEATED (arg) ? VALUE_REPETITIONS (arg) : 1));
+ return val;
+}
+
+/* Access to the value history. */
+
+/* Record a new value in the value history.
+ Returns the absolute history index of the entry. */
+
+int
+record_latest_value (val)
+ value val;
+{
+ int i;
+ double foo;
+
+ /* Check error now if about to store an invalid float. We return -1
+ to the caller, but allow them to continue, e.g. to print it as "Nan". */
+ if (TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_FLT) {
+ foo = unpack_double (VALUE_TYPE (val), VALUE_CONTENTS (val), &i);
+ if (i) return -1; /* Indicate value not saved in history */
+ }
+
+ /* Here we treat value_history_count as origin-zero
+ and applying to the value being stored now. */
+
+ i = value_history_count % VALUE_HISTORY_CHUNK;
+ if (i == 0)
+ {
+ register struct value_history_chunk *new
+ = (struct value_history_chunk *)
+ xmalloc (sizeof (struct value_history_chunk));
+ bzero (new->values, sizeof new->values);
+ new->next = value_history_chain;
+ value_history_chain = new;
+ }
+
+ value_history_chain->values[i] = val;
+ release_value (val);
+
+ /* Now we regard value_history_count as origin-one
+ and applying to the value just stored. */
+
+ return ++value_history_count;
+}
+
+/* Return a copy of the value in the history with sequence number NUM. */
+
+value
+access_value_history (num)
+ int num;
+{
+ register struct value_history_chunk *chunk;
+ register int i;
+ register int absnum = num;
+
+ if (absnum <= 0)
+ absnum += value_history_count;
+
+ if (absnum <= 0)
+ {
+ if (num == 0)
+ error ("The history is empty.");
+ else if (num == 1)
+ error ("There is only one value in the history.");
+ else
+ error ("History does not go back to $$%d.", -num);
+ }
+ if (absnum > value_history_count)
+ error ("History has not yet reached $%d.", absnum);
+
+ absnum--;
+
+ /* Now absnum is always absolute and origin zero. */
+
+ chunk = value_history_chain;
+ for (i = (value_history_count - 1) / VALUE_HISTORY_CHUNK - absnum / VALUE_HISTORY_CHUNK;
+ i > 0; i--)
+ chunk = chunk->next;
+
+ return value_copy (chunk->values[absnum % VALUE_HISTORY_CHUNK]);
+}
+
+/* Clear the value history entirely.
+ Must be done when new symbol tables are loaded,
+ because the type pointers become invalid. */
+
+void
+clear_value_history ()
+{
+ register struct value_history_chunk *next;
+ register int i;
+ register value val;
+
+ while (value_history_chain)
+ {
+ for (i = 0; i < VALUE_HISTORY_CHUNK; i++)
+ if (val = value_history_chain->values[i])
+ free (val);
+ next = value_history_chain->next;
+ free (value_history_chain);
+ value_history_chain = next;
+ }
+ value_history_count = 0;
+}
+
+static void
+value_history_info (num_exp, from_tty)
+ char *num_exp;
+ int from_tty;
+{
+ register int i;
+ register value val;
+ static int num = 1;
+
+ if (num_exp)
+ {
+ if (num_exp[0] == '+' && num_exp[1] == '\0')
+ /* "info history +" should print from the stored position. */
+ ;
+ else
+ /* "info history <exp>" should print around value number <exp>. */
+ num = parse_and_eval_address (num_exp) - 5;
+ }
+ else
+ {
+ /* "info history" means print the last 10 values. */
+ num = value_history_count - 9;
+ }
+
+ if (num <= 0)
+ num = 1;
+
+ for (i = num; i < num + 10 && i <= value_history_count; i++)
+ {
+ val = access_value_history (i);
+ printf_filtered ("$%d = ", i);
+ value_print (val, stdout, 0, Val_pretty_default);
+ printf_filtered ("\n");
+ }
+
+ /* The next "info history +" should start after what we just printed. */
+ num += 10;
+
+ /* Hitting just return after this command should do the same thing as
+ "info history +". If num_exp is null, this is unnecessary, since
+ "info history +" is not useful after "info history". */
+ if (from_tty && num_exp)
+ {
+ num_exp[0] = '+';
+ num_exp[1] = '\0';
+ }
+}
+
+/* Internal variables. These are variables within the debugger
+ that hold values assigned by debugger commands.
+ The user refers to them with a '$' prefix
+ that does not appear in the variable names stored internally. */
+
+static struct internalvar *internalvars;
+
+/* Look up an internal variable with name NAME. NAME should not
+ normally include a dollar sign.
+
+ If the specified internal variable does not exist,
+ one is created, with a void value. */
+
+struct internalvar *
+lookup_internalvar (name)
+ char *name;
+{
+ register struct internalvar *var;
+
+ for (var = internalvars; var; var = var->next)
+ if (!strcmp (var->name, name))
+ return var;
+
+ var = (struct internalvar *) xmalloc (sizeof (struct internalvar));
+ var->name = concat (name, "", "");
+ var->value = allocate_value (builtin_type_void);
+ release_value (var->value);
+ var->next = internalvars;
+ internalvars = var;
+ return var;
+}
+
+value
+value_of_internalvar (var)
+ struct internalvar *var;
+{
+ register value val;
+
+#ifdef IS_TRAPPED_INTERNALVAR
+ if (IS_TRAPPED_INTERNALVAR (var->name))
+ return VALUE_OF_TRAPPED_INTERNALVAR (var);
+#endif
+
+ val = value_copy (var->value);
+ VALUE_LVAL (val) = lval_internalvar;
+ VALUE_INTERNALVAR (val) = var;
+ return val;
+}
+
+void
+set_internalvar_component (var, offset, bitpos, bitsize, newval)
+ struct internalvar *var;
+ int offset, bitpos, bitsize;
+ value newval;
+{
+ register char *addr = VALUE_CONTENTS (var->value) + offset;
+
+#ifdef IS_TRAPPED_INTERNALVAR
+ if (IS_TRAPPED_INTERNALVAR (var->name))
+ SET_TRAPPED_INTERNALVAR (var, newval, bitpos, bitsize, offset);
+#endif
+
+ if (bitsize)
+ modify_field (addr, (int) value_as_long (newval),
+ bitpos, bitsize);
+ else
+ bcopy (VALUE_CONTENTS (newval), addr,
+ TYPE_LENGTH (VALUE_TYPE (newval)));
+}
+
+void
+set_internalvar (var, val)
+ struct internalvar *var;
+ value val;
+{
+#ifdef IS_TRAPPED_INTERNALVAR
+ if (IS_TRAPPED_INTERNALVAR (var->name))
+ SET_TRAPPED_INTERNALVAR (var, val, 0, 0, 0);
+#endif
+
+ free (var->value);
+ var->value = value_copy (val);
+ release_value (var->value);
+}
+
+char *
+internalvar_name (var)
+ struct internalvar *var;
+{
+ return var->name;
+}
+
+/* Free all internalvars. Done when new symtabs are loaded,
+ because that makes the values invalid. */
+
+void
+clear_internalvars ()
+{
+ register struct internalvar *var;
+
+ while (internalvars)
+ {
+ var = internalvars;
+ internalvars = var->next;
+ free (var->name);
+ free (var->value);
+ free (var);
+ }
+}
+
+static void
+convenience_info ()
+{
+ register struct internalvar *var;
+ int varseen = 0;
+
+ for (var = internalvars; var; var = var->next)
+ {
+#ifdef IS_TRAPPED_INTERNALVAR
+ if (IS_TRAPPED_INTERNALVAR (var->name))
+ continue;
+#endif
+ if (!varseen)
+ {
+ printf ("Debugger convenience variables:\n\n");
+ varseen = 1;
+ }
+ printf ("$%s: ", var->name);
+ value_print (var->value, stdout, 0, Val_pretty_default);
+ printf ("\n");
+ }
+ if (!varseen)
+ printf ("No debugger convenience variables now defined.\n\
+Convenience variables have names starting with \"$\";\n\
+use \"set\" as in \"set $foo = 5\" to define them.\n");
+}
+
+/* Extract a value as a C number (either long or double).
+ Knows how to convert fixed values to double, or
+ floating values to long.
+ Does not deallocate the value. */
+
+LONGEST
+value_as_long (val)
+ register value val;
+{
+ return unpack_long (VALUE_TYPE (val), VALUE_CONTENTS (val));
+}
+
+double
+value_as_double (val)
+ register value val;
+{
+ double foo;
+ int inv;
+
+ foo = unpack_double (VALUE_TYPE (val), VALUE_CONTENTS (val), &inv);
+ if (inv)
+ error ("Invalid floating value found in program.");
+ return foo;
+}
+
+/* Unpack raw data (copied from debugee) at VALADDR
+ as a long, or as a double, assuming the raw data is described
+ by type TYPE. Knows how to convert different sizes of values
+ and can convert between fixed and floating point.
+
+ C++: It is assumed that the front-end has taken care of
+ all matters concerning pointers to members. A pointer
+ to member which reaches here is considered to be equivalent
+ to an INT (or some size). After all, it is only an offset. */
+
+LONGEST
+unpack_long (type, valaddr)
+ struct type *type;
+ char *valaddr;
+{
+ register enum type_code code = TYPE_CODE (type);
+ register int len = TYPE_LENGTH (type);
+ register int nosign = TYPE_UNSIGNED (type);
+
+ if (code == TYPE_CODE_ENUM)
+ code = TYPE_CODE_INT;
+ if (code == TYPE_CODE_FLT)
+ {
+ if (len == sizeof (float))
+ return * (float *) valaddr;
+
+ if (len == sizeof (double))
+ return * (double *) valaddr;
+ }
+ else if (code == TYPE_CODE_INT && nosign)
+ {
+ if (len == sizeof (char))
+ return * (unsigned char *) valaddr;
+
+ if (len == sizeof (short))
+ return * (unsigned short *) valaddr;
+
+ if (len == sizeof (int))
+ return * (unsigned int *) valaddr;
+
+ if (len == sizeof (long))
+ return * (unsigned long *) valaddr;
+#ifdef LONG_LONG
+ if (len == sizeof (long long))
+ return * (unsigned long long *) valaddr;
+#endif
+ }
+ else if (code == TYPE_CODE_INT)
+ {
+ if (len == sizeof (char))
+ return * (char *) valaddr;
+
+ if (len == sizeof (short))
+ return * (short *) valaddr;
+
+ if (len == sizeof (int))
+ return * (int *) valaddr;
+
+ if (len == sizeof (long))
+ return * (long *) valaddr;
+
+#ifdef LONG_LONG
+ if (len == sizeof (long long))
+ return * (long long *) valaddr;
+#endif
+ }
+ else if (code == TYPE_CODE_PTR
+ || code == TYPE_CODE_REF)
+ {
+ if (len == sizeof (char *))
+ return (CORE_ADDR) * (char **) valaddr;
+ }
+ else if (code == TYPE_CODE_MEMBER)
+ error ("not implemented: member types in unpack_long");
+
+ error ("Value not integer or pointer.");
+}
+
+/* Return a double value from the specified type and address.
+ INVP points to an int which is set to 0 for valid value,
+ 1 for invalid value (bad float format). In either case,
+ the returned double is OK to use. */
+
+double
+unpack_double (type, valaddr, invp)
+ struct type *type;
+ char *valaddr;
+ int *invp;
+{
+ register enum type_code code = TYPE_CODE (type);
+ register int len = TYPE_LENGTH (type);
+ register int nosign = TYPE_UNSIGNED (type);
+
+ *invp = 0; /* Assume valid. */
+ if (code == TYPE_CODE_FLT)
+ {
+ if (INVALID_FLOAT (valaddr, len))
+ {
+ *invp = 1;
+ return 1.234567891011121314;
+ }
+
+ if (len == sizeof (float))
+ return * (float *) valaddr;
+
+ if (len == sizeof (double))
+ {
+ /* Some machines require doubleword alignment for doubles.
+ This code works on them, and on other machines. */
+ double temp;
+ bcopy ((char *) valaddr, (char *) &temp, sizeof (double));
+ return temp;
+ }
+ }
+ else if (code == TYPE_CODE_INT && nosign)
+ {
+ if (len == sizeof (char))
+ return * (unsigned char *) valaddr;
+
+ if (len == sizeof (short))
+ return * (unsigned short *) valaddr;
+
+ if (len == sizeof (int))
+ return * (unsigned int *) valaddr;
+
+ if (len == sizeof (long))
+ return * (unsigned long *) valaddr;
+
+#ifdef LONG_LONG
+ if (len == sizeof (long long))
+ return * (unsigned long long *) valaddr;
+#endif
+ }
+ else if (code == TYPE_CODE_INT)
+ {
+ if (len == sizeof (char))
+ return * (char *) valaddr;
+
+ if (len == sizeof (short))
+ return * (short *) valaddr;
+
+ if (len == sizeof (int))
+ return * (int *) valaddr;
+
+ if (len == sizeof (long))
+ return * (long *) valaddr;
+
+#ifdef LONG_LONG
+ if (len == sizeof (long long))
+ return * (long long *) valaddr;
+#endif
+ }
+
+ error ("Value not floating number.");
+ /* NOTREACHED */
+ return (double) 0; /* To silence compiler warning. */
+}
+
+/* Given a value ARG1 of a struct or union type,
+ extract and return the value of one of its fields.
+ FIELDNO says which field.
+
+ For C++, must also be able to return values from static fields */
+
+value
+value_field (arg1, fieldno)
+ register value arg1;
+ register int fieldno;
+{
+ register value v;
+ register struct type *type = TYPE_FIELD_TYPE (VALUE_TYPE (arg1), fieldno);
+ register int offset;
+
+ /* Handle packed fields */
+
+ offset = TYPE_FIELD_BITPOS (VALUE_TYPE (arg1), fieldno) / 8;
+ if (TYPE_FIELD_BITSIZE (VALUE_TYPE (arg1), fieldno))
+ {
+ v = value_from_long (type,
+ unpack_field_as_long (VALUE_TYPE (arg1),
+ VALUE_CONTENTS (arg1),
+ fieldno));
+ VALUE_BITPOS (v) = TYPE_FIELD_BITPOS (VALUE_TYPE (arg1), fieldno) % 8;
+ VALUE_BITSIZE (v) = TYPE_FIELD_BITSIZE (VALUE_TYPE (arg1), fieldno);
+ }
+ else
+ {
+ v = allocate_value (type);
+ bcopy (VALUE_CONTENTS (arg1) + offset,
+ VALUE_CONTENTS (v),
+ TYPE_LENGTH (type));
+ }
+ VALUE_LVAL (v) = VALUE_LVAL (arg1);
+ if (VALUE_LVAL (arg1) == lval_internalvar)
+ VALUE_LVAL (v) = lval_internalvar_component;
+ VALUE_ADDRESS (v) = VALUE_ADDRESS (arg1);
+ VALUE_OFFSET (v) = offset + VALUE_OFFSET (arg1);
+ return v;
+}
+
+value
+value_fn_field (arg1, fieldno, subfieldno)
+ register value arg1;
+ register int fieldno;
+{
+ register value v;
+ struct fn_field *f = TYPE_FN_FIELDLIST1 (VALUE_TYPE (arg1), fieldno);
+ register struct type *type = TYPE_FN_FIELD_TYPE (f, subfieldno);
+ struct symbol *sym;
+
+ sym = lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, subfieldno),
+ 0, VAR_NAMESPACE, 0);
+ if (! sym) error ("Internal error: could not find physical method named %s",
+ TYPE_FN_FIELD_PHYSNAME (f, subfieldno));
+
+ v = allocate_value (type);
+ VALUE_ADDRESS (v) = BLOCK_START (SYMBOL_BLOCK_VALUE (sym));
+ VALUE_TYPE (v) = type;
+ return v;
+}
+
+/* Return a virtual function as a value.
+ ARG1 is the object which provides the virtual function
+ table pointer.
+ F is the list of member functions which contains the desired virtual
+ function.
+ J is an index into F which provides the desired virtual function.
+ TYPE is the basetype which first provides the virtual function table. */
+value
+value_virtual_fn_field (arg1, f, j, type)
+ value arg1;
+ struct fn_field *f;
+ int j;
+ struct type *type;
+{
+ /* First, get the virtual function table pointer. That comes
+ with a strange type, so cast it to type `pointer to long' (which
+ should serve just fine as a function type). Then, index into
+ the table, and convert final value to appropriate function type. */
+ value vfn, vtbl;
+ value vi = value_from_long (builtin_type_int,
+ (LONGEST) TYPE_FN_FIELD_VOFFSET (f, j));
+ VALUE_TYPE (arg1) = TYPE_VPTR_BASETYPE (type);
+
+ /* This type may have been defined before its virtual function table
+ was. If so, fill in the virtual function table entry for the
+ type now. */
+ if (TYPE_VPTR_FIELDNO (type) < 0)
+ TYPE_VPTR_FIELDNO (type)
+ = fill_in_vptr_fieldno (type);
+
+ /* The virtual function table is now an array of structures
+ which have the form { int16 offset, delta; void *pfn; }. */
+ vtbl = value_ind (value_field (arg1, TYPE_VPTR_FIELDNO (type)));
+
+ /* Index into the virtual function table. This is hard-coded because
+ looking up a field is not cheap, and it may be important to save
+ time, e.g. if the user has set a conditional breakpoint calling
+ a virtual function. */
+ vfn = value_field (value_subscript (vtbl, vi), 2);
+
+ /* Reinstantiate the function pointer with the correct type. */
+ VALUE_TYPE (vfn) = lookup_pointer_type (TYPE_FN_FIELD_TYPE (f, j));
+ return vfn;
+}
+
+/* The value of a static class member does not depend
+ on its instance, only on its type. If FIELDNO >= 0,
+ then fieldno is a valid field number and is used directly.
+ Otherwise, FIELDNAME is the name of the field we are
+ searching for. If it is not a static field name, an
+ error is signaled. TYPE is the type in which we look for the
+ static field member. */
+value
+value_static_field (type, fieldname, fieldno)
+ register struct type *type;
+ char *fieldname;
+ register int fieldno;
+{
+ register value v;
+ struct symbol *sym;
+
+ if (fieldno < 0)
+ {
+ register struct type *t = type;
+ /* Look for static field. */
+ while (t)
+ {
+ int i;
+ for (i = TYPE_NFIELDS (t) - 1; i >= 0; i--)
+ if (! strcmp (TYPE_FIELD_NAME (t, i), fieldname))
+ {
+ if (TYPE_FIELD_STATIC (t, i))
+ {
+ fieldno = i;
+ goto found;
+ }
+ else
+ error ("field `%s' is not static");
+ }
+ t = TYPE_BASECLASSES (t) ? TYPE_BASECLASS (t, 1) : 0;
+ }
+
+ t = type;
+
+ if (destructor_name_p (fieldname, t))
+ error ("use `info method' command to print out value of destructor");
+
+ while (t)
+ {
+ int i, j;
+
+ for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; i--)
+ {
+ if (! strcmp (TYPE_FN_FIELDLIST_NAME (t, i), fieldname))
+ {
+ error ("use `info method' command to print value of method \"%s\"", fieldname);
+ }
+ }
+ t = TYPE_BASECLASSES (t) ? TYPE_BASECLASS (t, 1) : 0;
+ }
+ error("there is no field named %s", fieldname);
+ }
+
+ found:
+
+ sym = lookup_symbol (TYPE_FIELD_STATIC_PHYSNAME (type, fieldno),
+ 0, VAR_NAMESPACE, 0);
+ if (! sym) error ("Internal error: could not find physical static variable named %s", TYPE_FIELD_BITSIZE (type, fieldno));
+
+ type = TYPE_FIELD_TYPE (type, fieldno);
+ v = value_at (type, (CORE_ADDR)SYMBOL_BLOCK_VALUE (sym));
+ return v;
+}
+
+long
+unpack_field_as_long (type, valaddr, fieldno)
+ struct type *type;
+ char *valaddr;
+ int fieldno;
+{
+ long val;
+ int bitpos = TYPE_FIELD_BITPOS (type, fieldno);
+ int bitsize = TYPE_FIELD_BITSIZE (type, fieldno);
+
+ bcopy (valaddr + bitpos / 8, &val, sizeof val);
+
+ /* Extracting bits depends on endianness of the machine. */
+#ifdef BITS_BIG_ENDIAN
+ val = val >> (sizeof val * 8 - bitpos % 8 - bitsize);
+#else
+ val = val >> (bitpos % 8);
+#endif
+
+ val &= (1 << bitsize) - 1;
+ return val;
+}
+
+void
+modify_field (addr, fieldval, bitpos, bitsize)
+ char *addr;
+ int fieldval;
+ int bitpos, bitsize;
+{
+ long oword;
+
+ /* Reject values too big to fit in the field in question.
+ Otherwise adjoining fields may be corrupted. */
+ if (fieldval & ~((1<<bitsize)-1))
+ error ("Value %d does not fit in %d bits.", fieldval, bitsize);
+
+ bcopy (addr, &oword, sizeof oword);
+
+ /* Shifting for bit field depends on endianness of the machine. */
+#ifdef BITS_BIG_ENDIAN
+ bitpos = sizeof (oword) * 8 - bitpos - bitsize;
+#endif
+
+ oword &= ~(((1 << bitsize) - 1) << bitpos);
+ oword |= fieldval << bitpos;
+ bcopy (&oword, addr, sizeof oword);
+}
+
+/* Convert C numbers into newly allocated values */
+
+value
+value_from_long (type, num)
+ struct type *type;
+ register LONGEST num;
+{
+ register value val = allocate_value (type);
+ register enum type_code code = TYPE_CODE (type);
+ register int len = TYPE_LENGTH (type);
+
+ if (code == TYPE_CODE_INT || code == TYPE_CODE_ENUM)
+ {
+ if (len == sizeof (char))
+ * (char *) VALUE_CONTENTS (val) = num;
+ else if (len == sizeof (short))
+ * (short *) VALUE_CONTENTS (val) = num;
+ else if (len == sizeof (int))
+ * (int *) VALUE_CONTENTS (val) = num;
+ else if (len == sizeof (long))
+ * (long *) VALUE_CONTENTS (val) = num;
+#ifdef LONG_LONG
+ else if (len == sizeof (long long))
+ * (long long *) VALUE_CONTENTS (val) = num;
+#endif
+ else
+ error ("Integer type encountered with unexpected data length.");
+ }
+ else
+ error ("Unexpected type encountered for integer constant.");
+
+ return val;
+}
+
+value
+value_from_double (type, num)
+ struct type *type;
+ double num;
+{
+ register value val = allocate_value (type);
+ register enum type_code code = TYPE_CODE (type);
+ register int len = TYPE_LENGTH (type);
+
+ if (code == TYPE_CODE_FLT)
+ {
+ if (len == sizeof (float))
+ * (float *) VALUE_CONTENTS (val) = num;
+ else if (len == sizeof (double))
+ * (double *) VALUE_CONTENTS (val) = num;
+ else
+ error ("Floating type encountered with unexpected data length.");
+ }
+ else
+ error ("Unexpected type encountered for floating constant.");
+
+ return val;
+}
+
+/* Deal with the value that is "about to be returned". */
+
+/* Return the value that a function returning now
+ would be returning to its caller, assuming its type is VALTYPE.
+ RETBUF is where we look for what ought to be the contents
+ of the registers (in raw form). This is because it is often
+ desirable to restore old values to those registers
+ after saving the contents of interest, and then call
+ this function using the saved values.
+ struct_return is non-zero when the function in question is
+ using the structure return conventions on the machine in question;
+ 0 when it is using the value returning conventions (this often
+ means returning pointer to where structure is vs. returning value). */
+
+value
+value_being_returned (valtype, retbuf, struct_return)
+ register struct type *valtype;
+ char retbuf[REGISTER_BYTES];
+ int struct_return;
+{
+ register value val;
+
+ if (struct_return)
+ return value_at (valtype, EXTRACT_STRUCT_VALUE_ADDRESS (retbuf));
+
+ val = allocate_value (valtype);
+ EXTRACT_RETURN_VALUE (valtype, retbuf, VALUE_CONTENTS (val));
+
+ return val;
+}
+
+/* Return true if the function specified is using the structure returning
+ convention on this machine to return arguments, or 0 if it is using
+ the value returning convention. FUNCTION is the value representing
+ the function, FUNCADDR is the address of the function, and VALUE_TYPE
+ is the type returned by the function */
+
+struct block *block_for_pc ();
+
+int
+using_struct_return (function, funcaddr, value_type)
+ value function;
+ CORE_ADDR funcaddr;
+ struct type *value_type;
+{
+ register enum type_code code = TYPE_CODE (value_type);
+
+ if (code == TYPE_CODE_STRUCT ||
+ code == TYPE_CODE_UNION ||
+ code == TYPE_CODE_ARRAY)
+ {
+ struct block *b = block_for_pc (funcaddr);
+
+ if (!(BLOCK_GCC_COMPILED (b) && TYPE_LENGTH (value_type) < 8))
+ return 1;
+ }
+
+ return 0;
+}
+
+/* Store VAL so it will be returned if a function returns now.
+ Does not verify that VAL's type matches what the current
+ function wants to return. */
+
+void
+set_return_value (val)
+ value val;
+{
+ register enum type_code code = TYPE_CODE (VALUE_TYPE (val));
+ char regbuf[REGISTER_BYTES];
+ double dbuf;
+ LONGEST lbuf;
+
+ if (code == TYPE_CODE_STRUCT
+ || code == TYPE_CODE_UNION)
+ error ("Specifying a struct or union return value is not supported.");
+
+ if (code == TYPE_CODE_FLT)
+ {
+ dbuf = value_as_double (val);
+
+ STORE_RETURN_VALUE (VALUE_TYPE (val), &dbuf);
+ }
+ else
+ {
+ lbuf = value_as_long (val);
+ STORE_RETURN_VALUE (VALUE_TYPE (val), &lbuf);
+ }
+}
+
+void
+_initialize_values ()
+{
+ add_info ("convenience", convenience_info,
+ "Debugger convenience (\"$foo\") variables.\n\
+These variables are created when you assign them values;\n\
+thus, \"print $foo=1\" gives \"$foo\" the value 1. Values may be any type.\n\n\
+A few convenience variables are given values automatically GDB:\n\
+\"$_\"holds the last address examined with \"x\" or \"info lines\",\n\
+\"$__\" holds the contents of the last address examined with \"x\".");
+
+ add_info ("values", value_history_info,
+ "Elements of value history (around item number IDX, or last ten).");
+ add_info_alias ("history", value_history_info, 0);
+}
diff --git a/gnu/usr.bin/kgdb/version.c b/gnu/usr.bin/kgdb/version.c
new file mode 100644
index 000000000000..2f3dd8504301
--- /dev/null
+++ b/gnu/usr.bin/kgdb/version.c
@@ -0,0 +1,20 @@
+/* Define the current version number of GDB.
+ Copyright (C) 1989, Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB 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. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+char *version = "3.5";
diff --git a/secure/lib/libtelnet/getent.c b/gnu/usr.bin/kgdb/wait.h
index 05626f11d413..c431cb6a47a9 100644
--- a/secure/lib/libtelnet/getent.c
+++ b/gnu/usr.bin/kgdb/wait.h
@@ -1,6 +1,9 @@
/*-
- * Copyright (c) 1991, 1993
- * The Regents of the University of California. All rights reserved.
+ * Copyright (c) 1991 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Van Jacobson and Steven McCanne of Lawrence Berkeley Laboratory.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -29,40 +32,50 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
+ *
+ * @(#)wait.h 6.3 (Berkeley) 5/8/91
*/
-#ifndef lint
-static char sccsid[] = "@(#)getent.c 8.2 (Berkeley) 12/15/93";
-#endif /* not lint */
+/* Define how to access the structure that the wait system call stores.
+ On many systems, there is a structure defined for this.
+ But on vanilla-ish USG systems there is not. */
-static char *area;
+#ifndef HAVE_WAIT_STRUCT
-/*ARGSUSED*/
-getent(cp, name)
-char *cp, *name;
-{
-#ifdef HAS_CGETENT
- char *dba[2];
+#define WAITTYPE int
+#define WIFSTOPPED(w) (((w)&0377) == 0177)
+#define WIFSIGNALED(w) (((w)&0377) != 0177 && ((w)&~0377) == 0)
+#define WIFEXITED(w) (((w)&0377) == 0)
+#define WEXITSTATUS(w) ((w) >> 8)
+#define WSTOPSIG(w) ((w) >> 8)
+#define WCOREDUMP(w) (((w)&0200) != 0)
+#define WTERMSIG(w) ((w) & 0177)
+#define WSETEXIT(w, status) ((w) = (status))
+#define WSETSTOP(w,sig) ((w) = (0177 | ((sig) << 8)))
- dba[0] = "/etc/gettytab";
- dba[1] = 0;
- return((cgetent(&area, dba, name) == 0) ? 1 : 0);
#else
- return(0);
+
+#include <sys/wait.h>
+
+#define WAITTYPE union wait
+#ifndef WEXITSTATUS
+#define WEXITSTATUS(w) (w).w_retcode
+#endif
+#ifndef WSTOPSIG
+#define WSTOPSIG(w) (w).w_stopsig
+#endif
+#ifndef WCOREDUMP
+#define WCOREDUMP(w) (w).w_coredump
+#endif
+#ifndef WTERMSIG
+#define WTERMSIG(w) (w).w_termsig
+#endif
+#ifndef WSETEXIT
+#define WSETEXIT(w, status) ((w).w_status = (status))
+#endif
+#ifndef WSETSTOP
+#define WSETSTOP(w,sig) \
+ ((w).w_stopsig = (sig), (w).w_coredump = 0, (w).w_termsig = 0177)
#endif
-}
-#ifndef SOLARIS
-/*ARGSUSED*/
-char *
-getstr(id, cpp)
-char *id, **cpp;
-{
-# ifdef HAS_CGETENT
- char *answer;
- return((cgetstr(area, id, &answer) > 0) ? answer : 0);
-# else
- return(0);
-# endif
-}
#endif
diff --git a/gnu/usr.bin/kgdb/xgdb/Makefile b/gnu/usr.bin/kgdb/xgdb/Makefile
new file mode 100644
index 000000000000..0e5a1b38b54c
--- /dev/null
+++ b/gnu/usr.bin/kgdb/xgdb/Makefile
@@ -0,0 +1,40 @@
+# %W% (Berkeley) %G%
+
+.include "../config/Makefile.$(MACHINE)"
+
+PROG= xgdb
+SRCS= xgdb.c xgdbinit.c
+GDBOBJS+= $(CONFIGSRCS:R:S/$/.o/g) \
+ blockframe.o breakpoint.o command.o copying.o core.o \
+ cplus-dem.o dbxread.o environ.o eval.o expprint.o \
+ expread.o findvar.o infcmd.o inflow.o infrun.o \
+ main.o obstack.o printcmd.o regex.o remote.o \
+ remote-sl.o source.o stack.o symmisc.o symtab.o \
+ utils.o valarith.o valops.o valprint.o values.o \
+ version.o \
+ funmap.o history.o keymaps.o readline.o
+CFLAGS+= -I.. -I$(.CURDIR)/.. -I$(.CURDIR)/../config \
+ -DHAVE_VPRINTF -DVI_MODE -DKERNELDEBUG
+# XXX objects should be in OBJS so that bsd.prog.mk handles their dependencies
+DPADD+= $(GDBOBJS:S/^/..\//g)
+# XXX cloned X lib stuff from xditview/Makefile. Should include it
+LDDESTDIR= /usr/X386/lib
+DPADD+= ${LDDESTDIR}/libXaw.a ${LDDESTDIR}/libXmu.a \
+ ${LDDESTDIR}/libXt.a ${LDDESTDIR}/libXext.a \
+ ${LDDESTDIR}/libX11.a
+DPADD+= ${LINTERM}
+LDADD+= $(GDBOBJS:S/^/..\//g) -lXaw -lXmu -lXt -lXext -lX11 -ltermcap
+NOMAN= noman
+
+.include "../../Makefile.inc"
+.include <bsd.prog.mk>
+
+#
+# Generate the constructor
+#
+xgdbinit.c: ../init.c xgdb.c
+ -(sed -e '/^}$$/d' ../init.c; \
+ egrep -h '^_initialize_[^ ]* *\(\)' $(.CURDIR)/xgdb.c; \
+ echo ';}') > xgdbinit.c
+
+CLEANFILES+= xgdbinit.c
diff --git a/gnu/usr.bin/kgdb/xgdb/xgdb.c b/gnu/usr.bin/kgdb/xgdb/xgdb.c
new file mode 100644
index 000000000000..cbf86e38874e
--- /dev/null
+++ b/gnu/usr.bin/kgdb/xgdb/xgdb.c
@@ -0,0 +1,700 @@
+/*-
+ * This code is derived from software copyrighted by the Free Software
+ * Foundation.
+ *
+ * Modified 1991 by Donn Seeley at UUNET Technologies, Inc.
+ * Modified 1990 by Van Jacobson at Lawrence Berkeley Laboratory.
+ *
+ * static char rcsid[] = "$Header: /home/ncvs/src/gnu/usr.bin/kgdb/xgdb/xgdb.c,v 1.2 1995/05/30 05:01:41 rgrimes Exp $";
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)xgdb.c 6.3 (Berkeley) 5/8/91";
+#endif /* not lint */
+
+/*
+ * Interface from GDB to X windows. Copyright (C) 1987 Free Software
+ * Foundation, Inc.
+ *
+ * GDB is distributed in the hope that it will be useful, but WITHOUT ANY
+ * WARRANTY. No author or distributor accepts responsibility to anyone for
+ * the consequences of using it or for whether it serves any particular
+ * purpose or works at all, unless he says so in writing. Refer to the GDB
+ * General Public License for full details.
+ *
+ * Everyone is granted permission to copy, modify and redistribute GDB, but only
+ * under the conditions described in the GDB General Public License. A copy
+ * of this license is supposed to have been given to you along with GDB so
+ * you can know your rights and responsibilities. It should be in a file
+ * named COPYING. Among other things, the copyright notice and this notice
+ * must be preserved on all copies.
+ *
+ * In other words, go ahead and share GDB, but don't try to stop anyone else
+ * from sharing it farther. Help stamp out software hoarding!
+ */
+
+/*
+ * Original version was contributed by Derek Beatty, 30 June 87.
+ * This version is essentially a re-write of the original by Van
+ * Jacobson (van@helios.ee.lbl.gov), Nov, 90.
+ */
+
+#include "defs.h"
+#include "param.h"
+#include "symtab.h"
+#include "frame.h"
+
+extern int stop_breakpoint;
+
+#include <X11/IntrinsicP.h>
+#include <X11/StringDefs.h>
+#include <X11/Xaw/AsciiSink.h>
+#include <X11/Xaw/AsciiText.h>
+#include <X11/Xaw/Box.h>
+#include <X11/Xaw/Command.h>
+#include <X11/Xaw/Label.h>
+#include <X11/Xaw/Paned.h>
+#include <X11/Xaw/Text.h>
+
+#include <stdio.h>
+#include <ctype.h>
+#include <sys/file.h>
+#include <sys/errno.h>
+
+extern int errno;
+extern char *getenv();
+extern char *malloc();
+extern void bcopy();
+extern int select();
+
+extern int get_filename_and_charpos();
+extern int source_line_charpos();
+extern int source_charpos_line();
+extern void execute_command();
+extern void error_no_arg();
+extern void add_com();
+
+/* The X display where the window appears. */
+
+static char *displayname;
+static Display *display;
+
+static XtAppContext app_context;
+
+/* Windows manipulated by this package. */
+
+static Widget main_widget;
+static Widget containing_widget;
+static Widget source_name_widget;
+static Widget source_text_widget;
+static Widget button_box_widget;
+
+/* Source text display. */
+
+static struct frame_info *last_fi;
+static CORE_ADDR last_pc;
+static struct symtab *last_cur_symtab;
+static int last_cur_line;
+
+static int source_window_line;
+static char *source_window_file;
+static struct symtab *source_window_symtab;
+
+static char version_label[64];
+extern char *version;
+
+/* Forward declarations */
+
+static Widget create_text_widget();
+
+static int
+safe_strcmp(a, b)
+ register char *a, *b;
+{
+ register int i;
+
+ if (a == b)
+ return (0);
+ if (!a && b)
+ return (1);
+ if (a && !b)
+ return (-1);
+ return (strcmp(a, b));
+}
+
+
+/* Display an appropriate piece of source code in the source window. */
+
+void
+xgdb_display_source()
+{
+ char *filename = NULL;
+ struct symtab_and_line get_selected_frame_sal();
+ struct symtab_and_line sal;
+ struct frame_info *fi;
+
+ /* Do nothing if called before we are initialized */
+
+ if (!containing_widget)
+ return;
+
+ /*
+ * Figure out what to display (the appropriate hooks to tell
+ * us don't exist so we guess): If there's a current frame
+ * and it or its pc changed from the last time we were here,
+ * display appropriate source line. Otherwise if the current
+ * source symtab or line is different, display that line.
+ * Otherwise nothing changed so leave the display alone.
+ */
+ fi = get_frame_info(selected_frame);
+ if (fi && (fi != last_fi || fi->pc != last_pc)) {
+ last_fi = fi;
+ last_pc = fi->pc;
+ sal = find_pc_line(fi->pc, fi->next_frame);
+ if (sal.symtab == NULL) { /* XXX */
+ sal.symtab = current_source_symtab;
+ sal.line = current_source_line;
+ }
+ current_source_symtab = sal.symtab;
+ current_source_line = sal.line;
+ } else if (current_source_symtab != last_cur_symtab ||
+ current_source_line != last_cur_line) {
+ sal.symtab = last_cur_symtab = current_source_symtab;
+ sal.line = last_cur_line = current_source_line;
+ } else
+ return;
+ /*
+ * Do a path search and get the exact filename of this source file.
+ * Also scan it and find its source lines if not already done.
+ */
+ if (sal.symtab && filename == NULL) {
+ if (get_filename_and_charpos(sal.symtab, sal.line, &filename))
+ /* line numbers may have changed - force highlight */
+ source_window_line = -1;
+ }
+
+ /*
+ * If the source window is wrong, destroy it and make a new one.
+ */
+ if (safe_strcmp(filename, source_window_file)) {
+ Arg args[1];
+ Widget src = XawTextGetSource(source_text_widget);
+
+ if (filename) {
+ XtSetArg(args[0], XtNstring, filename);
+ XtSetValues(src, args, XtNumber(args));
+ args[0].name = XtNlabel;
+ XtSetValues(source_name_widget, args, XtNumber(args));
+ } else {
+ XtSetArg(args[0], XtNstring, "/dev/null");
+ XtSetValues(src, args, XtNumber(args));
+ XtSetArg(args[0], XtNlabel, "");
+ XtSetValues(source_name_widget, args, XtNumber(args));
+ }
+ if (source_window_file)
+ free(source_window_file);
+ source_window_file = filename;
+ source_window_line = sal.line + 1; /* force highlight */
+ }
+ if (sal.symtab && source_window_line != sal.line) {
+ /*
+ * Update display and cursor positions as necessary.
+ * Cursor should be placed on line sal.line.
+ */
+ XawTextPosition l, r;
+
+ source_window_symtab = sal.symtab;
+ source_window_line = sal.line;
+ l = source_line_charpos(source_window_symtab, sal.line);
+ r = source_line_charpos(source_window_symtab, sal.line + 1);
+ if (r < l)
+ r = l + 1;
+ XawTextSetSelection(source_text_widget, l, r);
+ XawTextScrollToLine(source_text_widget, l, 10, 3);
+ XawTextSetInsertionPoint(source_text_widget, l);
+ }
+}
+
+
+/*
+ * Handlers for buttons.
+ */
+
+static int
+current_lineno()
+{
+ XawTextPosition start, finish;
+
+ XawTextGetSelectionPos(source_text_widget, &start, &finish);
+ if (start >= finish)
+ start = XawTextGetInsertionPoint(source_text_widget);
+
+ return (source_charpos_line(source_window_symtab, start));
+}
+
+static char *
+append_selection(cp)
+ char *cp;
+{
+ int len;
+ XawTextPosition l, r;
+
+ XawTextGetSelectionPos(source_text_widget, &l, &r);
+ if ((len = r - l) > 0) {
+ Widget src = XawTextGetSource(source_text_widget);
+
+ while (len > 0) {
+ XawTextBlock tb;
+
+ XawTextSourceRead(src, l, &tb, len);
+ bcopy(tb.ptr, cp, tb.length);
+ cp += tb.length;
+ len -= tb.length;
+ }
+ if (cp[-1] == 0)
+ --cp;
+ }
+ return (cp);
+}
+
+static char *
+append_selection_word(cp)
+ register char *cp;
+{
+ register int len;
+ XawTextPosition l, r;
+ XawTextBlock tb;
+ register char c;
+ register Widget src = XawTextGetSource(source_text_widget);
+
+ XawTextGetSelectionPos(source_text_widget, &l, &r);
+ if ((len = r - l) <= 0) {
+ l = XawTextGetInsertionPoint(source_text_widget);
+ len = 128; /* XXX */
+
+ /* might have clicked in middle of word -- back up to start */
+ for ( ; l > 0; --l) {
+ XawTextSourceRead(src, l - 1, &tb, 1);
+ c = tb.ptr[0];
+ if (! isalnum(c) && c != '_' && c != '$')
+ break;
+ }
+ }
+ while (len > 0) {
+ char *sp;
+ int i;
+
+ XawTextSourceRead(src, l, &tb, len);
+ for (sp = tb.ptr, i = tb.length; --i >= 0; ) {
+ c = *sp++;
+ if (!isalnum(c) && c != '_' && c != '$')
+ return (cp);
+ *cp++ = c;
+ }
+ len -= tb.length;
+ }
+ return (cp);
+}
+
+static char *
+append_selection_expr(cp)
+ char *cp;
+{
+ int len;
+ XawTextPosition l, r;
+ Widget src = XawTextGetSource(source_text_widget);
+ XawTextBlock tb;
+ char *sp;
+ char c;
+
+ XawTextGetSelectionPos(source_text_widget, &l, &r);
+ if (r > l)
+ return (append_selection(cp));
+
+ l = XawTextGetInsertionPoint(source_text_widget);
+
+ /* might have clicked in middle of word -- back up to start */
+ for ( ; l > 0; --l) {
+ XawTextSourceRead(src, l - 1, &tb, 1);
+ c = tb.ptr[0];
+ if (! isalnum(c) && c != '_' && c != '$')
+ break;
+ }
+
+ len = 128; /* XXX */
+ while (len > 0) {
+ int i;
+ char pstack[64];
+ int pcnt = 0;
+
+ XawTextSourceRead(src, l, &tb, len);
+ for (sp = tb.ptr, i = tb.length; --i >= 0; ) {
+ switch (c = *sp++) {
+ case '\n':
+ case ';':
+ return (cp);
+ case '=':
+ if (cp[-1] != '=')
+ return (cp - 1);
+ if (len == 128)
+ return (cp);
+ break;
+ case ',':
+ if (pcnt <= 0)
+ return (cp);
+ break;
+ case '(':
+ pstack[pcnt] = ')';
+ if (++pcnt >= sizeof(pstack))
+ return (cp);
+ break;
+ case '[':
+ pstack[pcnt] = ']';
+ if (++pcnt >= sizeof(pstack))
+ return (cp);
+ break;
+ case ')':
+ case ']':
+ if (--pcnt < 0 || pstack[pcnt] != c)
+ return (cp);
+ break;
+ }
+ *cp++ = c;
+ }
+ len -= tb.length;
+ }
+ return (cp);
+}
+
+static int input_avail; /* XXX kluge: do_command sets this when command
+ * data from button is avaialble to force top level
+ * to break out of its loop. */
+/*
+ * Handle a button by running the command COMMAND.
+ */
+static void
+do_command(w, command, call_data)
+ Widget w;
+ register char *command;
+ caddr_t call_data;
+{
+ char cmd_line[256];
+ char buf[256];
+ register char *out = cmd_line;
+ char *cp;
+ register char c;
+ extern char *finish_command_input();
+
+ while (c = *command++) {
+ if (c == '%') {
+ switch (*command++) {
+ case 's': /* current selection */
+ out = append_selection(out);
+ break;
+ case 'S': /* 1st selected "word" at curor */
+ out = append_selection_word(out);
+ break;
+ case 'e': /* echo cmd before executing */
+ break;
+ case 'E': /* 1st selected expression at curor */
+ out = append_selection_expr(out);
+ break;
+
+ case 'l': /* current line number */
+ (void) sprintf(buf, "%d", current_lineno());
+ for (cp = buf; c = *cp++; *out++ = c)
+ ;
+ break;
+ case 'L': /* line we're stopped at */
+ (void) sprintf(buf, "%d", source_window_line);
+ for (cp = buf; c = *cp++; *out++ = c)
+ ;
+ break;
+ case 'f': /* current file name */
+ for (cp = source_window_symtab->filename;
+ c = *cp++; *out++ = c)
+ ;
+ break;
+ case 'b': /* break # we're stopped at */
+ if (stop_breakpoint <= 0)
+ /* if no breakpoint, don't do cmd */
+ return;
+
+ (void) sprintf(buf, "%d", stop_breakpoint);
+ for (cp = buf; c = *cp++; *out++ = c)
+ ;
+ break;
+ }
+ } else
+ *out++ = c;
+ }
+ *out = 0;
+ reinitialize_more_filter();
+ /* have to exit via readline or tty modes stay messed up */
+ for (cp = cmd_line; c = *cp++; )
+ rl_stuff_char(c);
+ rl_stuff_char('\n');
+ input_avail = 1;
+}
+
+/*
+ * Define and display all the buttons.
+ */
+static void
+addbutton(parent, name, function, closure)
+ Widget parent;
+ char *name;
+ void (*function) ();
+ caddr_t closure;
+{
+ static XtCallbackRec Callback[] = {
+ {NULL, (caddr_t) NULL},
+ {NULL, (caddr_t) NULL},
+ };
+ static Arg commandArgs[] = {
+ {XtNlabel, (XtArgVal) NULL},
+ {XtNcallback, (XtArgVal) Callback},
+ };
+ Widget w;
+ char wname[128];
+ register char *cp;
+
+ strcpy(wname, name);
+ while ((cp = index(wname, '*')) || (cp = index(wname, '.')))
+ *cp -= 0x10;
+
+ if (w = XtNameToWidget(parent, wname))
+ XtDestroyWidget(w);
+
+ Callback[0].callback = (XtCallbackProc) function;
+ Callback[0].closure = (caddr_t) closure;
+ commandArgs[0].value = (XtArgVal) name;
+ XtCreateManagedWidget(wname, commandWidgetClass, parent,
+ commandArgs, XtNumber(commandArgs));
+}
+
+/*
+ * Create the button windows and store them in `buttons'.
+ */
+static void
+create_buttons(parent)
+ Widget parent;
+{
+ addbutton(parent, "quit", do_command, "quit");
+}
+
+static void
+button_command(arg)
+ char *arg;
+{
+ char *label;
+ unsigned int len;
+
+ if (! arg)
+ error_no_arg("button label and command");
+
+ for (len = strlen(arg); len > 0 && isspace(arg[len - 1]); --len)
+ ;
+ if (len == 0)
+ error_no_arg("button label and command");
+ arg[len] = 0;
+
+ /* make a copy of button label & command for toolkit to use */
+ label = malloc(len + 1);
+ strcpy(label, arg);
+
+ /* find the end of the label */
+ if (*label == '"') {
+ if ((arg = index(++label, '"')) == 0) {
+ printf("button label missing closing quote\n");
+ return;
+ }
+ *arg++ = 0;
+ } else if (arg = index(label, ' '))
+ *arg++ = 0;
+ else
+ arg = label;
+
+ while (*arg && isspace(*arg))
+ ++arg;
+
+ addbutton(button_box_widget, label, do_command, arg);
+}
+
+static void
+button_delete_command(arg)
+ char *arg;
+{
+ unsigned int len;
+ Widget w;
+ register char *cp;
+
+ if (! arg)
+ error_no_arg("button name");
+
+ for (len = strlen(arg); len > 0 && isspace(arg[len - 1]); --len)
+ ;
+ if (len == 0)
+ error_no_arg("button name");
+ arg[len] = 0;
+
+ /* find the end of the label */
+ if (*arg == '"') {
+ if ((cp = index(++arg, '"')) == 0) {
+ printf("button label missing closing quote\n");
+ return;
+ }
+ *cp++ = 0;
+ }
+ while ((cp = index(arg, '*')) || (cp = index(arg, '.')))
+ *cp -= 0x10;
+
+ if (w = XtNameToWidget(button_box_widget, arg))
+ XtDestroyWidget(w);
+}
+
+/*
+ * Create a "label window" that just displays the string LABEL.
+ */
+static Widget
+create_label(name, label)
+ char *name, *label;
+{
+ Arg args[1];
+ Widget w;
+
+ XtSetArg(args[0], XtNlabel, label);
+ w = XtCreateManagedWidget(name, labelWidgetClass, containing_widget,
+ args, XtNumber(args));
+ return (w);
+}
+
+/*
+ * Create a subwindow of PARENT that displays and scrolls the contents of
+ * file FILENAME.
+ */
+static Widget
+create_text_widget(parent, filename)
+ Widget parent;
+ char *filename;
+{
+ static Arg arg[] = {
+ {XtNstring, NULL},
+ {XtNtype, XawAsciiFile},
+ {XtNcursor, None},
+ };
+ Widget text_widget;
+
+ arg[0].value = (XtArgVal)filename;
+ text_widget = XtCreateManagedWidget("src", asciiTextWidgetClass,
+ parent, arg, XtNumber(arg));
+ return (text_widget);
+}
+
+/*
+ * Entry point to create the widgets representing our display.
+ */
+void
+xgdb_create_window()
+{
+ /* initialize toolkit, setup defaults */
+#ifdef notyet
+ main_widget = XtAppInitialize(&app_context, "Xgdb", NULL, 0,
+ argcptr, argv, NULL, NULL, 0);
+#else
+ char *dummy_argv[] = { "xgdb", 0 };
+ int dummy_argc = 1;
+ main_widget = XtAppInitialize(&app_context, "Xgdb", NULL, 0,
+ &dummy_argc, dummy_argv, NULL, NULL, 0);
+#endif
+ display = XtDisplay(main_widget);
+ containing_widget = XtCreateManagedWidget("frame", panedWidgetClass,
+ main_widget, NULL, 0);
+
+ sprintf(version_label, "XGDB %s", version);
+ button_box_widget = XtCreateManagedWidget("buttons", boxWidgetClass,
+ containing_widget, NULL, 0);
+ create_buttons(button_box_widget);
+ source_name_widget = create_label("srcLabel", "No source file yet.");
+ source_text_widget = create_text_widget(containing_widget, "/dev/null");
+
+ XtRealizeWidget(main_widget);
+ XFlush(display);
+}
+
+/*
+ * If we use an X window, the readline input loop is told to call
+ * this function before reading a character from stdin.
+ */
+/*ARGSUSED*/
+static void
+xgdb_window_hook()
+{
+ register int inmask = 1 << fileno(stdin);
+ register int xmask = 1 << ConnectionNumber(display);
+ register int nfds, pend;
+ int input_rfds;
+ XEvent ev;
+
+ /*
+ * Display our current idea of the `interesting' source file then
+ * loop, dispatching window events until data is available on
+ * stdin. Then return so the input data can be processed.
+ */
+ input_avail = 0;
+ xgdb_display_source();
+
+ input_rfds = 0;
+ while (input_avail == 0 && (input_rfds & inmask) == 0) {
+ pend = XPending(display);
+ if (!pend) {
+ input_rfds = inmask | xmask;
+ nfds = select(32, &input_rfds, 0, 0,
+ (struct timeval *)0);
+ if (nfds == -1 && errno == EINTR)
+ continue;
+ }
+ if (pend || (input_rfds & xmask)) {
+ XNextEvent(display, &ev);
+ XtDispatchEvent(&ev);
+ }
+ }
+}
+
+void
+_initialize_xgdb()
+{
+ extern void (*window_hook) ();
+ extern int inhibit_windows;
+ extern struct cmd_list_element *deletelist;
+
+ if (inhibit_windows)
+ return;
+
+ if (! displayname) {
+ displayname = getenv("DISPLAY");
+ if (! displayname) {
+ fprintf(stderr, "xgdb: no display name\n");
+ inhibit_windows = 1;
+ return;
+ }
+ }
+ xgdb_create_window();
+ window_hook = xgdb_window_hook;
+ add_com("button", class_support, button_command,
+"Add command button to xgdb window. First argument is button\n\
+label, second is command associated with button. Command can\n\
+include printf-like escapes:\n\
+ %s for current selection,\n\
+ %S for first 'word' of current selection,\n\
+ %e for current selection or expression at insertion pt,\n\
+ %E for current selection or expression at insertion pt,\n\
+ %l for current line number,\n\
+ %L for line program stopped at,\n\
+ %f for current file name,\n\
+ %b for current breakpoint number.");
+ add_cmd("button", class_support, button_delete_command,
+"Delete a button from the xgdb window.\n\
+Argument is name of button to be deleted.",
+ &deletelist);
+}
diff --git a/gnu/usr.bin/ld/Makefile b/gnu/usr.bin/ld/Makefile
index 218164eee68e..91d4acdbc4bb 100644
--- a/gnu/usr.bin/ld/Makefile
+++ b/gnu/usr.bin/ld/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.15 1994/08/19 12:24:45 davidg Exp $
+# $Id: Makefile,v 1.16 1994/12/23 22:30:29 nate Exp $
#
PROG= ld
diff --git a/gnu/usr.bin/ld/PORTING b/gnu/usr.bin/ld/PORTING
index fc6f918a9146..cc6f0ab8b2b0 100644
--- a/gnu/usr.bin/ld/PORTING
+++ b/gnu/usr.bin/ld/PORTING
@@ -1,4 +1,4 @@
-$Id$
+$Id: PORTING,v 1.1 1994/12/23 22:56:08 nate Exp $
This document describes some of the machine dependent parts in ld(1) and rtld(?)
Most of the machine dependencies are a result of different ways in which
diff --git a/gnu/usr.bin/ld/cplus-dem.c b/gnu/usr.bin/ld/cplus-dem.c
index 27f56ef6d392..30333965c889 100644
--- a/gnu/usr.bin/ld/cplus-dem.c
+++ b/gnu/usr.bin/ld/cplus-dem.c
@@ -5,7 +5,7 @@
#ifndef lint
/*static char sccsid[] = "from: @(#)cplus-dem.c 5.4 (Berkeley) 4/30/91";*/
-static char rcsid[] = "$Id: cplus-dem.c,v 1.3 1993/11/09 04:18:51 paul Exp $";
+static char rcsid[] = "$Id: cplus-dem.c,v 1.4 1995/05/30 05:01:42 rgrimes Exp $";
#endif /* not lint */
/* Demangler for GNU C++
diff --git a/gnu/usr.bin/ld/etc.c b/gnu/usr.bin/ld/etc.c
index 59e0a18c6de4..b33db7618eda 100644
--- a/gnu/usr.bin/ld/etc.c
+++ b/gnu/usr.bin/ld/etc.c
@@ -1,5 +1,5 @@
/*
- * $Id: etc.c,v 1.7 1994/02/13 20:41:05 jkh Exp $
+ * $Id: etc.c,v 1.8 1994/06/15 22:39:32 rich Exp $
*/
#include <err.h>
diff --git a/gnu/usr.bin/ld/i386/md-static-funcs.c b/gnu/usr.bin/ld/i386/md-static-funcs.c
index 47416856e4e9..f52ce066f19b 100644
--- a/gnu/usr.bin/ld/i386/md-static-funcs.c
+++ b/gnu/usr.bin/ld/i386/md-static-funcs.c
@@ -1,5 +1,5 @@
/*
- * $Id: md-static-funcs.c,v 1.2 1993/12/08 10:14:44 pk Exp $
+ * $Id: md-static-funcs.c,v 1.2 1994/02/13 20:42:06 jkh Exp $
*
* Called by ld.so when onanating.
* This *must* be a static function, so it is not called through a jmpslot.
diff --git a/gnu/usr.bin/ld/i386/md.c b/gnu/usr.bin/ld/i386/md.c
index 07271fc344ad..e00404b48397 100644
--- a/gnu/usr.bin/ld/i386/md.c
+++ b/gnu/usr.bin/ld/i386/md.c
@@ -27,7 +27,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: md.c,v 1.11 1994/12/23 22:31:12 nate Exp $
+ * $Id: md.c,v 1.12 1995/03/04 17:46:20 nate Exp $
*/
#include <sys/param.h>
diff --git a/gnu/usr.bin/ld/i386/md.h b/gnu/usr.bin/ld/i386/md.h
index da5283de4645..b5d6bc85107f 100644
--- a/gnu/usr.bin/ld/i386/md.h
+++ b/gnu/usr.bin/ld/i386/md.h
@@ -27,7 +27,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: md.h,v 1.11 1994/12/23 22:31:14 nate Exp $
+ * $Id: md.h,v 1.12 1995/03/04 17:46:21 nate Exp $
*/
diff --git a/gnu/usr.bin/ld/i386/mdprologue.S b/gnu/usr.bin/ld/i386/mdprologue.S
index 1de0f7200f1a..79bf4dadd486 100644
--- a/gnu/usr.bin/ld/i386/mdprologue.S
+++ b/gnu/usr.bin/ld/i386/mdprologue.S
@@ -27,7 +27,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: mdprologue.S,v 1.7 1994/12/04 07:42:44 mycroft Exp $
+ * $Id: mdprologue.S,v 1.6 1995/03/04 17:46:22 nate Exp $
*/
/*
diff --git a/gnu/usr.bin/ld/ld.1 b/gnu/usr.bin/ld/ld.1
index f3a12c448c2d..8d96c1c4d7db 100644
--- a/gnu/usr.bin/ld/ld.1
+++ b/gnu/usr.bin/ld/ld.1
@@ -27,7 +27,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.\" $Id: ld.1,v 1.8 1994/12/11 21:39:31 ats Exp $
+.\" $Id: ld.1,v 1.9 1994/12/23 22:30:33 nate Exp $
.\"
.Dd October 14, 1993
.Dt LD 1
diff --git a/gnu/usr.bin/ld/ld.c b/gnu/usr.bin/ld/ld.c
index 7796307bc66a..7425206e62c4 100644
--- a/gnu/usr.bin/ld/ld.c
+++ b/gnu/usr.bin/ld/ld.c
@@ -32,7 +32,7 @@ static char sccsid[] = "@(#)ld.c 6.10 (Berkeley) 5/22/91";
Set, indirect, and warning symbol features added by Randy Smith. */
/*
- * $Id: ld.c,v 1.27.4.1 1995/06/28 05:54:50 davidg Exp $
+ * $Id: ld.c,v 1.27.4.2 1995/08/25 04:39:51 davidg Exp $
*/
/* Define how to initialize system-dependent header fields. */
diff --git a/gnu/usr.bin/ld/ld.h b/gnu/usr.bin/ld/ld.h
index 82f88e8b10df..2e3533da5c6a 100644
--- a/gnu/usr.bin/ld/ld.h
+++ b/gnu/usr.bin/ld/ld.h
@@ -1,5 +1,5 @@
/*
- * $Id: ld.h,v 1.13 1995/03/04 17:46:07 nate Exp $
+ * $Id: ld.h,v 1.14 1995/05/30 05:01:45 rgrimes Exp $
*/
/*-
* This code is derived from software copyrighted by the Free Software
diff --git a/gnu/usr.bin/ld/ldconfig/Makefile b/gnu/usr.bin/ld/ldconfig/Makefile
index 28cbe5180ea4..08582c3a0044 100644
--- a/gnu/usr.bin/ld/ldconfig/Makefile
+++ b/gnu/usr.bin/ld/ldconfig/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.6 1994/02/13 20:42:18 jkh Exp $
+# $Id: Makefile,v 1.7 1994/04/13 20:49:42 ats Exp $
PROG= ldconfig
SRCS= ldconfig.c shlib.c etc.c
diff --git a/gnu/usr.bin/ld/ldconfig/ldconfig.8 b/gnu/usr.bin/ld/ldconfig/ldconfig.8
index a297fe54c46f..706d0ed0d4bb 100644
--- a/gnu/usr.bin/ld/ldconfig/ldconfig.8
+++ b/gnu/usr.bin/ld/ldconfig/ldconfig.8
@@ -27,7 +27,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.\" $Id: ldconfig.8,v 1.7 1995/06/24 10:08:43 asami Exp $
+.\" $Id: ldconfig.8,v 1.6.4.1 1995/08/13 13:26:24 jkh Exp $
.\"
.Dd October 3, 1993
.Dt LDCONFIG 8
diff --git a/gnu/usr.bin/ld/ldconfig/ldconfig.c b/gnu/usr.bin/ld/ldconfig/ldconfig.c
index 23978c2a888a..aa36d0d9ee30 100644
--- a/gnu/usr.bin/ld/ldconfig/ldconfig.c
+++ b/gnu/usr.bin/ld/ldconfig/ldconfig.c
@@ -27,7 +27,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: ldconfig.c,v 1.9.4.1 1995/08/13 13:26:25 jkh Exp $
+ * $Id: ldconfig.c,v 1.9.4.2 1995/08/25 04:41:14 davidg Exp $
*/
#include <sys/param.h>
diff --git a/gnu/usr.bin/ld/ldd/Makefile b/gnu/usr.bin/ld/ldd/Makefile
index 282a8fdb57f6..2d2473fa7661 100644
--- a/gnu/usr.bin/ld/ldd/Makefile
+++ b/gnu/usr.bin/ld/ldd/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.2 1993/11/09 04:19:24 paul Exp $
+# $Id: Makefile,v 1.3 1993/12/16 21:51:27 nate Exp $
PROG= ldd
SRCS= ldd.c
diff --git a/gnu/usr.bin/ld/ldd/ldd.c b/gnu/usr.bin/ld/ldd/ldd.c
index 2f548063e019..c4d381afc655 100644
--- a/gnu/usr.bin/ld/ldd/ldd.c
+++ b/gnu/usr.bin/ld/ldd/ldd.c
@@ -27,7 +27,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: ldd.c,v 1.4 1994/06/15 22:41:03 rich Exp $
+ * $Id: ldd.c,v 1.5 1994/12/23 22:31:31 nate Exp $
*/
#include <sys/types.h>
diff --git a/gnu/usr.bin/ld/lib.c b/gnu/usr.bin/ld/lib.c
index 78d692610f14..acff58908ad1 100644
--- a/gnu/usr.bin/ld/lib.c
+++ b/gnu/usr.bin/ld/lib.c
@@ -1,5 +1,5 @@
/*
- * $Id: lib.c,v 1.14 1995/04/07 05:08:28 nate Exp $ - library routines
+ * $Id: lib.c,v 1.15 1995/05/30 05:01:46 rgrimes Exp $ - library routines
*/
#include <sys/param.h>
diff --git a/gnu/usr.bin/ld/rrs.c b/gnu/usr.bin/ld/rrs.c
index 2d1b3bc21164..30e521c0c4a3 100644
--- a/gnu/usr.bin/ld/rrs.c
+++ b/gnu/usr.bin/ld/rrs.c
@@ -27,7 +27,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: rrs.c,v 1.13 1994/12/23 22:30:48 nate Exp $
+ * $Id: rrs.c,v 1.14 1995/03/04 17:46:09 nate Exp $
*/
#include <sys/param.h>
diff --git a/gnu/usr.bin/ld/rtld/Makefile b/gnu/usr.bin/ld/rtld/Makefile
index 74e3c31425ec..f879023452ba 100644
--- a/gnu/usr.bin/ld/rtld/Makefile
+++ b/gnu/usr.bin/ld/rtld/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.14 1995/03/04 17:46:23 nate Exp $
+# $Id: Makefile,v 1.14.4.1 1995/08/30 07:05:48 davidg Exp $
PROG= ld.so
SRCS= mdprologue.S rtld.c malloc.c shlib.c etc.c md.c
diff --git a/gnu/usr.bin/ld/rtld/malloc.c b/gnu/usr.bin/ld/rtld/malloc.c
index 60e6ec3be768..6ac2751d13fa 100644
--- a/gnu/usr.bin/ld/rtld/malloc.c
+++ b/gnu/usr.bin/ld/rtld/malloc.c
@@ -33,7 +33,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)malloc.c 5.11 (Berkeley) 2/23/91";*/
-static char *rcsid = "$Id: malloc.c,v 1.3 1995/03/04 17:46:24 nate Exp $";
+static char *rcsid = "$Id: malloc.c,v 1.4 1995/05/30 05:01:48 rgrimes Exp $";
#endif /* LIBC_SCCS and not lint */
/*
diff --git a/gnu/usr.bin/ld/rtld/rtld.1 b/gnu/usr.bin/ld/rtld/rtld.1
index 29fa48d3bb15..97201155674d 100644
--- a/gnu/usr.bin/ld/rtld/rtld.1
+++ b/gnu/usr.bin/ld/rtld/rtld.1
@@ -1,4 +1,4 @@
-.\" $Id: rtld.1,v 1.2 1995/10/05 05:16:52 nate Exp $
+.\" $Id: rtld.1,v 1.1.2.1 1995/10/05 19:59:15 davidg Exp $
.\"
.\" Copyright (c) 1995 Paul Kranenburg
.\" All rights reserved.
diff --git a/gnu/usr.bin/ld/rtld/rtld.c b/gnu/usr.bin/ld/rtld/rtld.c
index f2c631a2b154..27eff002f97b 100644
--- a/gnu/usr.bin/ld/rtld/rtld.c
+++ b/gnu/usr.bin/ld/rtld/rtld.c
@@ -27,7 +27,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: rtld.c,v 1.24.4.1 1995/08/25 07:08:26 davidg Exp $
+ * $Id: rtld.c,v 1.24.4.2 1995/09/28 13:26:25 davidg Exp $
*/
#include <sys/param.h>
diff --git a/gnu/usr.bin/ld/rtld/sbrk.c b/gnu/usr.bin/ld/rtld/sbrk.c
index 2d2c610dedb9..aee02e065e02 100644
--- a/gnu/usr.bin/ld/rtld/sbrk.c
+++ b/gnu/usr.bin/ld/rtld/sbrk.c
@@ -27,7 +27,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id$
+ * $Id: sbrk.c,v 1.1 1993/12/11 21:06:36 jkh Exp $
*/
#include <machine/vmparam.h>
diff --git a/gnu/usr.bin/ld/shlib.c b/gnu/usr.bin/ld/shlib.c
index f256508b55d7..c0d468230a97 100644
--- a/gnu/usr.bin/ld/shlib.c
+++ b/gnu/usr.bin/ld/shlib.c
@@ -27,7 +27,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: shlib.c,v 1.12 1995/03/04 17:46:09 nate Exp $
+ * $Id: shlib.c,v 1.13 1995/03/19 21:20:09 nate Exp $
*/
#include <sys/param.h>
diff --git a/gnu/usr.bin/ld/sparc/md-static-funcs.c b/gnu/usr.bin/ld/sparc/md-static-funcs.c
index 2672cb596be6..8446daa5256c 100644
--- a/gnu/usr.bin/ld/sparc/md-static-funcs.c
+++ b/gnu/usr.bin/ld/sparc/md-static-funcs.c
@@ -1,6 +1,6 @@
/*
- * $Id: md-static-funcs.c,v 1.2 1993/12/08 10:28:56 pk Exp $
+ * $Id: md-static-funcs.c,v 1.2 1993/12/11 12:02:08 jkh Exp $
*
* Simple SPARC relocations for the benefit of self-relocation of ld.so
* avoiding the use of global variables (ie. reloc_bitshift[] et. al.).
diff --git a/gnu/usr.bin/ld/sparc/md.c b/gnu/usr.bin/ld/sparc/md.c
index 508d37de41f4..077f6853d851 100644
--- a/gnu/usr.bin/ld/sparc/md.c
+++ b/gnu/usr.bin/ld/sparc/md.c
@@ -27,7 +27,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: md.c,v 1.7 1994/02/13 20:43:03 jkh Exp $
+ * $Id: md.c,v 1.8 1994/06/15 22:41:19 rich Exp $
*/
#include <sys/param.h>
diff --git a/gnu/usr.bin/ld/sparc/md.h b/gnu/usr.bin/ld/sparc/md.h
index f83c1ff91b56..86f5e944687a 100644
--- a/gnu/usr.bin/ld/sparc/md.h
+++ b/gnu/usr.bin/ld/sparc/md.h
@@ -27,7 +27,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: md.h,v 1.6 1994/02/13 20:43:07 jkh Exp $
+ * $Id: md.h,v 1.7 1995/03/04 17:46:25 nate Exp $
*/
/*
diff --git a/gnu/usr.bin/ld/sparc/mdprologue.S b/gnu/usr.bin/ld/sparc/mdprologue.S
index d3236a386671..6a0ec5cc810b 100644
--- a/gnu/usr.bin/ld/sparc/mdprologue.S
+++ b/gnu/usr.bin/ld/sparc/mdprologue.S
@@ -27,7 +27,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: mdprologue.S,v 1.3 1994/02/13 20:43:13 jkh Exp $
+ * $Id: mdprologue.S,v 1.4 1995/03/04 17:46:26 nate Exp $
*/
/*
diff --git a/gnu/usr.bin/ld/symbol.c b/gnu/usr.bin/ld/symbol.c
index c07637ed5ebe..7891e39c3c54 100644
--- a/gnu/usr.bin/ld/symbol.c
+++ b/gnu/usr.bin/ld/symbol.c
@@ -1,5 +1,5 @@
/*
- * $Id: symbol.c,v 1.5 1994/06/15 22:39:56 rich Exp $ - symbol table routines
+ * $Id: symbol.c,v 1.6 1994/12/23 22:30:54 nate Exp $ - symbol table routines
*/
/* Create the symbol table entries for `etext', `edata' and `end'. */
diff --git a/gnu/usr.bin/ld/symseg.h b/gnu/usr.bin/ld/symseg.h
index 112dd6f0a7f5..0b9a58476bd5 100644
--- a/gnu/usr.bin/ld/symseg.h
+++ b/gnu/usr.bin/ld/symseg.h
@@ -4,7 +4,7 @@
* Foundation.
*
* from: @(#)symseg.h 5.4 (Berkeley) 4/30/91
- * $Id: symseg.h,v 1.3 1993/11/09 04:19:05 paul Exp $
+ * $Id: symseg.h,v 1.4 1995/05/30 05:01:47 rgrimes Exp $
*/
/* GDB symbol table format definitions.
diff --git a/gnu/usr.bin/ld/warnings.c b/gnu/usr.bin/ld/warnings.c
index 3c65a2258363..e17287ddae24 100644
--- a/gnu/usr.bin/ld/warnings.c
+++ b/gnu/usr.bin/ld/warnings.c
@@ -1,5 +1,5 @@
/*
- * $Id: warnings.c,v 1.9 1994/12/23 22:30:57 nate Exp $
+ * $Id: warnings.c,v 1.10 1995/03/04 17:46:10 nate Exp $
*/
#include <sys/param.h>
diff --git a/gnu/usr.bin/ld/xbits.c b/gnu/usr.bin/ld/xbits.c
index 6374bebe23c5..ef25234db9a5 100644
--- a/gnu/usr.bin/ld/xbits.c
+++ b/gnu/usr.bin/ld/xbits.c
@@ -27,7 +27,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: xbits.c,v 1.2 1993/11/09 04:19:08 paul Exp $
+ * $Id: xbits.c,v 1.3 1994/02/13 20:41:50 jkh Exp $
*/
/*
diff --git a/gnu/usr.bin/man/apropos/Makefile b/gnu/usr.bin/man/apropos/Makefile
index bc6bdec90242..f1a2b0566f3b 100644
--- a/gnu/usr.bin/man/apropos/Makefile
+++ b/gnu/usr.bin/man/apropos/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.7 1994/06/05 21:57:03 csgr Exp $
+# $Id: Makefile,v 1.8 1994/08/28 18:33:42 bde Exp $
.if exists(${.CURDIR}/obj)
MAN1= ${.CURDIR}/obj/apropos.1
diff --git a/gnu/usr.bin/man/catman/catman.1 b/gnu/usr.bin/man/catman/catman.1
index 09749777b026..9731974d77e5 100644
--- a/gnu/usr.bin/man/catman/catman.1
+++ b/gnu/usr.bin/man/catman/catman.1
@@ -30,7 +30,7 @@
.\"
.\" E-mail: Wolfram Schneider <wosch@cs.tu-berlin.de>
.\"
-.\" $Id: catman.1,v 1.4 1995/03/31 04:00:17 joerg Exp $
+.\" $Id: catman.1,v 1.5 1995/05/06 19:04:06 joerg Exp $
.\"
.Dd Mar 12, 1995
diff --git a/gnu/usr.bin/man/catman/catman.perl b/gnu/usr.bin/man/catman/catman.perl
index d21562fcb66c..cc6dc7628d6d 100644
--- a/gnu/usr.bin/man/catman/catman.perl
+++ b/gnu/usr.bin/man/catman/catman.perl
@@ -35,7 +35,7 @@
#
# Email: Wolfram Schneider <wosch@cs.tu-berlin.de>
#
-# $Id: catman.perl,v 1.12 1995/05/19 21:07:26 w Exp w $
+# $Id: catman.perl,v 1.6 1995/05/20 19:02:53 ache Exp $
sub usage {
diff --git a/gnu/usr.bin/man/makewhatis/makewhatis.1 b/gnu/usr.bin/man/makewhatis/makewhatis.1
index 4570b58d617e..ec48e1a534cc 100644
--- a/gnu/usr.bin/man/makewhatis/makewhatis.1
+++ b/gnu/usr.bin/man/makewhatis/makewhatis.1
@@ -30,7 +30,7 @@
.\"
.\" Email: Wolfram Schneider <wosch@cs.tu-berlin.de>
.\"
-.\" $Id: makewhatis.1,v 1.1 1995/02/15 22:52:51 joerg Exp $
+.\" $Id: makewhatis.1,v 1.2 1995/03/31 04:00:51 joerg Exp $
.\"
.Dd Jan, 12, 1995
diff --git a/gnu/usr.bin/man/makewhatis/makewhatis.perl b/gnu/usr.bin/man/makewhatis/makewhatis.perl
index af2fc5d1a1ff..c0fa966bb931 100644
--- a/gnu/usr.bin/man/makewhatis/makewhatis.perl
+++ b/gnu/usr.bin/man/makewhatis/makewhatis.perl
@@ -35,7 +35,7 @@
#
# E-Mail: Wolfram Schneider <wosch@cs.tu-berlin.de>
#
-# $Id: makewhatis.perl,v 1.5 1995/03/31 04:00:53 joerg Exp $
+# $Id: makewhatis.perl,v 1.6 1995/04/01 11:43:09 joerg Exp $
#
sub usage {
diff --git a/gnu/usr.bin/patch/EXTERN.h b/gnu/usr.bin/patch/EXTERN.h
index 96dd888a933d..aec505cf463e 100644
--- a/gnu/usr.bin/patch/EXTERN.h
+++ b/gnu/usr.bin/patch/EXTERN.h
@@ -1,6 +1,9 @@
-/* $Header: /home/ncvs/src/gnu/usr.bin/patch/EXTERN.h,v 1.1.1.1 1993/06/19 14:21:52 paul Exp $
+/* $Header: /home/ncvs/src/gnu/usr.bin/patch/EXTERN.h,v 1.2 1995/05/30 05:02:26 rgrimes Exp $
*
* $Log: EXTERN.h,v $
+ * Revision 1.2 1995/05/30 05:02:26 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1993/06/19 14:21:52 paul
* b-maked patch-2.10
*
diff --git a/gnu/usr.bin/patch/INTERN.h b/gnu/usr.bin/patch/INTERN.h
index b718b1d4cc9f..e59d7a515b35 100644
--- a/gnu/usr.bin/patch/INTERN.h
+++ b/gnu/usr.bin/patch/INTERN.h
@@ -1,6 +1,9 @@
-/* $Header: /home/ncvs/src/gnu/usr.bin/patch/INTERN.h,v 1.1.1.1 1993/06/19 14:21:52 paul Exp $
+/* $Header: /home/ncvs/src/gnu/usr.bin/patch/INTERN.h,v 1.2 1995/05/30 05:02:27 rgrimes Exp $
*
* $Log: INTERN.h,v $
+ * Revision 1.2 1995/05/30 05:02:27 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1993/06/19 14:21:52 paul
* b-maked patch-2.10
*
diff --git a/gnu/usr.bin/patch/common.h b/gnu/usr.bin/patch/common.h
index 4bb99e024819..ff9052b79adf 100644
--- a/gnu/usr.bin/patch/common.h
+++ b/gnu/usr.bin/patch/common.h
@@ -1,6 +1,9 @@
-/* $Header: /home/ncvs/src/gnu/usr.bin/patch/common.h,v 1.2 1993/09/22 16:51:03 rich Exp $
+/* $Header: /home/ncvs/src/gnu/usr.bin/patch/common.h,v 1.3 1995/05/30 05:02:30 rgrimes Exp $
*
* $Log: common.h,v $
+ * Revision 1.3 1995/05/30 05:02:30 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.2 1993/09/22 16:51:03 rich
* Increaed the fixed static buffer sizes and maximum hunk size that
* otherwise causes the XFree86 1.3 patch set to fail.
diff --git a/gnu/usr.bin/patch/inp.c b/gnu/usr.bin/patch/inp.c
index e8e1531776df..211deba46d8e 100644
--- a/gnu/usr.bin/patch/inp.c
+++ b/gnu/usr.bin/patch/inp.c
@@ -1,6 +1,9 @@
-/* $Header: /home/ncvs/src/gnu/usr.bin/patch/inp.c,v 1.2 1995/01/12 22:09:39 hsu Exp $
+/* $Header: /home/ncvs/src/gnu/usr.bin/patch/inp.c,v 1.3 1995/05/30 05:02:31 rgrimes Exp $
*
* $Log: inp.c,v $
+ * Revision 1.3 1995/05/30 05:02:31 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.2 1995/01/12 22:09:39 hsu
* Fix bug that created new files even when running in -C check mode.
* Reviewed by: phk
diff --git a/gnu/usr.bin/patch/inp.h b/gnu/usr.bin/patch/inp.h
index ea07ee89d8a1..4bd6884d5410 100644
--- a/gnu/usr.bin/patch/inp.h
+++ b/gnu/usr.bin/patch/inp.h
@@ -1,6 +1,9 @@
-/* $Header: /home/ncvs/src/gnu/usr.bin/patch/inp.h,v 1.1.1.1 1993/06/19 14:21:52 paul Exp $
+/* $Header: /home/ncvs/src/gnu/usr.bin/patch/inp.h,v 1.2 1995/05/30 05:02:33 rgrimes Exp $
*
* $Log: inp.h,v $
+ * Revision 1.2 1995/05/30 05:02:33 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1993/06/19 14:21:52 paul
* b-maked patch-2.10
*
diff --git a/gnu/usr.bin/patch/patch.1 b/gnu/usr.bin/patch/patch.1
index 6af062a28896..1a44746e03ef 100644
--- a/gnu/usr.bin/patch/patch.1
+++ b/gnu/usr.bin/patch/patch.1
@@ -1,8 +1,11 @@
.\" -*- nroff -*-
.rn '' }`
-'\" $Header: /home/cvs/386BSD/src/gnu/usr.bin/patch/patch.1,v 1.3 1994/02/17 22:20:33 jkh Exp $
+'\" $Header: /home/ncvs/src/gnu/usr.bin/patch/patch.1,v 1.4 1994/02/25 21:45:59 phk Exp $
'\"
'\" $Log: patch.1,v $
+.\" Revision 1.4 1994/02/25 21:45:59 phk
+.\" added the -C/-check again.
+.\"
.\" Revision 1.3 1994/02/17 22:20:33 jkh
.\" Put this back - I was somehow under the erroneous impression that patch was in
.\" ports, until I saw the the commit messages, that is! :-) All changed backed out.
diff --git a/gnu/usr.bin/patch/patch.c b/gnu/usr.bin/patch/patch.c
index b03d065af555..6ee2d828b6af 100644
--- a/gnu/usr.bin/patch/patch.c
+++ b/gnu/usr.bin/patch/patch.c
@@ -1,5 +1,5 @@
char rcsid[] =
- "$Header: /home/ncvs/src/gnu/usr.bin/patch/patch.c,v 1.5 1995/01/12 22:09:40 hsu Exp $";
+ "$Header: /home/ncvs/src/gnu/usr.bin/patch/patch.c,v 1.6 1995/05/30 05:02:34 rgrimes Exp $";
/* patch - a program to apply diffs to original files
*
@@ -9,6 +9,9 @@ char rcsid[] =
* money off of it, or pretend that you wrote it.
*
* $Log: patch.c,v $
+ * Revision 1.6 1995/05/30 05:02:34 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.5 1995/01/12 22:09:40 hsu
* Fix bug that created new files even when running in -C check mode.
* Reviewed by: phk
diff --git a/gnu/usr.bin/patch/pch.c b/gnu/usr.bin/patch/pch.c
index c9dde92baaa4..54f9cd684e77 100644
--- a/gnu/usr.bin/patch/pch.c
+++ b/gnu/usr.bin/patch/pch.c
@@ -1,6 +1,9 @@
-/* $Header: /home/ncvs/src/gnu/usr.bin/patch/pch.c,v 1.6 1995/09/14 04:33:35 gibbs Exp $
+/* $Header: /home/ncvs/src/gnu/usr.bin/patch/pch.c,v 1.5.4.1 1995/09/17 06:39:59 davidg Exp $
*
* $Log: pch.c,v $
+ * Revision 1.5.4.1 1995/09/17 06:39:59 davidg
+ * Brought in changes from rev 1.6: Give 'Index:' priority over other paths.
+ *
* Revision 1.6 1995/09/14 04:33:35 gibbs
* Give "Index" specified filenames preference over other filenames specified
* in the diff. This makes it so that diffs containing files in different
diff --git a/gnu/usr.bin/patch/pch.h b/gnu/usr.bin/patch/pch.h
index 49670816989f..d33a51fe154d 100644
--- a/gnu/usr.bin/patch/pch.h
+++ b/gnu/usr.bin/patch/pch.h
@@ -1,6 +1,9 @@
-/* $Header: /home/ncvs/src/gnu/usr.bin/patch/pch.h,v 1.1.1.1 1993/06/19 14:21:52 paul Exp $
+/* $Header: /home/ncvs/src/gnu/usr.bin/patch/pch.h,v 1.2 1995/05/30 05:02:36 rgrimes Exp $
*
* $Log: pch.h,v $
+ * Revision 1.2 1995/05/30 05:02:36 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1993/06/19 14:21:52 paul
* b-maked patch-2.10
*
diff --git a/gnu/usr.bin/patch/util.h b/gnu/usr.bin/patch/util.h
index c56b4c304004..4bc8fa8fcc87 100644
--- a/gnu/usr.bin/patch/util.h
+++ b/gnu/usr.bin/patch/util.h
@@ -1,6 +1,9 @@
-/* $Header: /home/ncvs/src/gnu/usr.bin/patch/util.h,v 1.1.1.1 1993/06/19 14:21:52 paul Exp $
+/* $Header: /home/ncvs/src/gnu/usr.bin/patch/util.h,v 1.2 1995/05/30 05:02:38 rgrimes Exp $
*
* $Log: util.h,v $
+ * Revision 1.2 1995/05/30 05:02:38 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1993/06/19 14:21:52 paul
* b-maked patch-2.10
*
diff --git a/gnu/usr.bin/patch/version.c b/gnu/usr.bin/patch/version.c
index dfd2e9a6bb86..9b4208e3f339 100644
--- a/gnu/usr.bin/patch/version.c
+++ b/gnu/usr.bin/patch/version.c
@@ -1,6 +1,9 @@
-/* $Header: /home/ncvs/src/gnu/usr.bin/patch/version.c,v 1.1.1.1 1993/06/19 14:21:52 paul Exp $
+/* $Header: /home/ncvs/src/gnu/usr.bin/patch/version.c,v 1.2 1995/05/30 05:02:39 rgrimes Exp $
*
* $Log: version.c,v $
+ * Revision 1.2 1995/05/30 05:02:39 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1993/06/19 14:21:52 paul
* b-maked patch-2.10
*
diff --git a/gnu/usr.bin/patch/version.h b/gnu/usr.bin/patch/version.h
index f59ee261e639..7566273848b5 100644
--- a/gnu/usr.bin/patch/version.h
+++ b/gnu/usr.bin/patch/version.h
@@ -1,6 +1,9 @@
-/* $Header: /home/ncvs/src/gnu/usr.bin/patch/version.h,v 1.1.1.1 1993/06/19 14:21:52 paul Exp $
+/* $Header: /home/ncvs/src/gnu/usr.bin/patch/version.h,v 1.2 1995/05/30 05:02:40 rgrimes Exp $
*
* $Log: version.h,v $
+ * Revision 1.2 1995/05/30 05:02:40 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1993/06/19 14:21:52 paul
* b-maked patch-2.10
*
diff --git a/gnu/usr.bin/perl/eg/ADB b/gnu/usr.bin/perl/eg/ADB
index 09b93c302aae..1d6da1a3465f 100644
--- a/gnu/usr.bin/perl/eg/ADB
+++ b/gnu/usr.bin/perl/eg/ADB
@@ -1,6 +1,6 @@
#!/usr/bin/perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/eg/ADB,v 1.1.1.1 1993/08/23 21:29:43 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/eg/ADB,v 1.1.1.1 1994/09/10 06:27:46 gclarkii Exp $
# This script is only useful when used in your crash directory.
diff --git a/gnu/usr.bin/perl/eg/changes b/gnu/usr.bin/perl/eg/changes
index 9835e1b6ddc2..e6acacb35f09 100644
--- a/gnu/usr.bin/perl/eg/changes
+++ b/gnu/usr.bin/perl/eg/changes
@@ -1,6 +1,6 @@
#!/usr/bin/perl -P
-# $Header: /home/cvs/386BSD/ports/lang/perl/eg/changes,v 1.1.1.1 1993/08/23 21:29:43 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/eg/changes,v 1.1.1.1 1994/09/10 06:27:47 gclarkii Exp $
($dir, $days) = @ARGV;
$dir = '/' if $dir eq '';
diff --git a/gnu/usr.bin/perl/eg/dus b/gnu/usr.bin/perl/eg/dus
index 94c648bd7626..d2903576975a 100644
--- a/gnu/usr.bin/perl/eg/dus
+++ b/gnu/usr.bin/perl/eg/dus
@@ -1,6 +1,6 @@
#!/usr/bin/perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/eg/dus,v 1.1.1.1 1993/08/23 21:29:43 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/eg/dus,v 1.1.1.1 1994/09/10 06:27:47 gclarkii Exp $
# This script does a du -s on any directories in the current directory that
# are not mount points for another filesystem.
diff --git a/gnu/usr.bin/perl/eg/findcp b/gnu/usr.bin/perl/eg/findcp
index 47e443820d88..96c8ebc9f2ee 100644
--- a/gnu/usr.bin/perl/eg/findcp
+++ b/gnu/usr.bin/perl/eg/findcp
@@ -1,6 +1,6 @@
#!/usr/bin/perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/eg/findcp,v 1.1.1.1 1993/08/23 21:29:43 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/eg/findcp,v 1.1.1.1 1994/09/10 06:27:47 gclarkii Exp $
# This is a wrapper around the find command that pretends find has a switch
# of the form -cp host:destination. It presumes your find implements -ls.
diff --git a/gnu/usr.bin/perl/eg/findtar b/gnu/usr.bin/perl/eg/findtar
index a60f10f76c32..1c9f823beea5 100644
--- a/gnu/usr.bin/perl/eg/findtar
+++ b/gnu/usr.bin/perl/eg/findtar
@@ -1,6 +1,6 @@
#!/usr/bin/perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/eg/findtar,v 1.1.1.1 1993/08/23 21:29:43 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/eg/findtar,v 1.1.1.1 1994/09/10 06:27:47 gclarkii Exp $
# findtar takes find-style arguments and spits out a tarfile on stdout.
# It won't work unless your find supports -ls and your tar the I flag.
diff --git a/gnu/usr.bin/perl/eg/g/gcp b/gnu/usr.bin/perl/eg/g/gcp
index 3e44a9cf182b..dca3cd6e03f3 100644
--- a/gnu/usr.bin/perl/eg/g/gcp
+++ b/gnu/usr.bin/perl/eg/g/gcp
@@ -1,6 +1,6 @@
#!/usr/bin/perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/eg/g/gcp,v 1.1.1.1 1993/08/23 21:29:44 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/eg/g/gcp,v 1.1.1.1 1994/09/10 06:27:48 gclarkii Exp $
# Here is a script to do global rcps. See man page.
diff --git a/gnu/usr.bin/perl/eg/g/gcp.man b/gnu/usr.bin/perl/eg/g/gcp.man
index 8985742fa473..c188dc9698cb 100644
--- a/gnu/usr.bin/perl/eg/g/gcp.man
+++ b/gnu/usr.bin/perl/eg/g/gcp.man
@@ -1,4 +1,4 @@
-.\" $Header: /home/cvs/386BSD/ports/lang/perl/eg/g/gcp.man,v 1.1.1.1 1993/08/23 21:29:44 nate Exp $
+.\" $Header: /home/ncvs/src/gnu/usr.bin/perl/eg/g/gcp.man,v 1.1.1.1 1994/09/10 06:27:48 gclarkii Exp $
.TH GCP 1C "13 May 1988"
.SH NAME
gcp \- global file copy
diff --git a/gnu/usr.bin/perl/eg/g/ged b/gnu/usr.bin/perl/eg/g/ged
index d296a84c913a..ecc72103dac7 100644
--- a/gnu/usr.bin/perl/eg/g/ged
+++ b/gnu/usr.bin/perl/eg/g/ged
@@ -1,6 +1,6 @@
#!/usr/bin/perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/eg/g/ged,v 1.1.1.1 1993/08/23 21:29:44 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/eg/g/ged,v 1.1.1.1 1994/09/10 06:27:48 gclarkii Exp $
# Does inplace edits on a set of files on a set of machines.
#
diff --git a/gnu/usr.bin/perl/eg/g/gsh b/gnu/usr.bin/perl/eg/g/gsh
index 3322a02ff74f..3d9cd6a09a82 100644
--- a/gnu/usr.bin/perl/eg/g/gsh
+++ b/gnu/usr.bin/perl/eg/g/gsh
@@ -1,6 +1,6 @@
#! /usr/bin/perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/eg/g/gsh,v 1.1.1.1 1993/08/23 21:29:44 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/eg/g/gsh,v 1.1.1.1 1994/09/10 06:27:48 gclarkii Exp $
# Do rsh globally--see man page
diff --git a/gnu/usr.bin/perl/eg/g/gsh.man b/gnu/usr.bin/perl/eg/g/gsh.man
index 00eafb66d8c2..6675ca33ac91 100644
--- a/gnu/usr.bin/perl/eg/g/gsh.man
+++ b/gnu/usr.bin/perl/eg/g/gsh.man
@@ -1,4 +1,4 @@
-.\" $Header: /home/cvs/386BSD/ports/lang/perl/eg/g/gsh.man,v 1.1.1.1 1993/08/23 21:29:44 nate Exp $
+.\" $Header: /home/ncvs/src/gnu/usr.bin/perl/eg/g/gsh.man,v 1.1.1.1 1994/09/10 06:27:48 gclarkii Exp $
.TH GSH 8 "13 May 1988"
.SH NAME
gsh \- global shell
diff --git a/gnu/usr.bin/perl/eg/muck.man b/gnu/usr.bin/perl/eg/muck.man
index 1b45ee0325c0..c485cfd5811e 100644
--- a/gnu/usr.bin/perl/eg/muck.man
+++ b/gnu/usr.bin/perl/eg/muck.man
@@ -1,4 +1,4 @@
-.\" $Header: /home/cvs/386BSD/ports/lang/perl/eg/muck.man,v 1.1.1.1 1993/08/23 21:29:43 nate Exp $
+.\" $Header: /home/ncvs/src/gnu/usr.bin/perl/eg/muck.man,v 1.1.1.1 1994/09/10 06:27:47 gclarkii Exp $
.TH MUCK 1 "10 Jan 1989"
.SH NAME
muck \- make usage checker
diff --git a/gnu/usr.bin/perl/eg/myrup b/gnu/usr.bin/perl/eg/myrup
index b3185896ef98..52d8339ecad5 100644
--- a/gnu/usr.bin/perl/eg/myrup
+++ b/gnu/usr.bin/perl/eg/myrup
@@ -1,6 +1,6 @@
#!/usr/bin/perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/eg/myrup,v 1.1.1.1 1993/08/23 21:29:43 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/eg/myrup,v 1.1.1.1 1994/09/10 06:27:47 gclarkii Exp $
# This was a customization of ruptime requested by someone here who wanted
# to be able to find the least loaded machine easily. It uses the
diff --git a/gnu/usr.bin/perl/eg/nih b/gnu/usr.bin/perl/eg/nih
index a376142cdd75..059eabb190a4 100644
--- a/gnu/usr.bin/perl/eg/nih
+++ b/gnu/usr.bin/perl/eg/nih
@@ -1,7 +1,7 @@
eval "exec /usr/bin/perl -Spi.bak $0 $*"
if $running_under_some_shell;
-# $Header: /home/cvs/386BSD/ports/lang/perl/eg/nih,v 1.1.1.1 1993/08/23 21:29:43 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/eg/nih,v 1.1.1.1 1994/09/10 06:27:47 gclarkii Exp $
# This script makes #! scripts directly executable on machines that don't
# support #!. It edits in place any scripts mentioned on the command line.
diff --git a/gnu/usr.bin/perl/eg/relink b/gnu/usr.bin/perl/eg/relink
index 69956c9a6738..3b000f3f9c3d 100644
--- a/gnu/usr.bin/perl/eg/relink
+++ b/gnu/usr.bin/perl/eg/relink
@@ -2,9 +2,12 @@
'di';
'ig00';
#
-# $Header: /home/cvs/386BSD/ports/lang/perl/eg/relink,v 1.1.1.1 1993/08/23 21:29:43 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/eg/relink,v 1.1.1.1 1994/09/10 06:27:47 gclarkii Exp $
#
# $Log: relink,v $
+# Revision 1.1.1.1 1994/09/10 06:27:47 gclarkii
+# Initial import of Perl 4.046 bmaked
+#
# Revision 1.1.1.1 1993/08/23 21:29:43 nate
# PERL!
#
diff --git a/gnu/usr.bin/perl/eg/rename b/gnu/usr.bin/perl/eg/rename
index b568406f8603..37266289a677 100644
--- a/gnu/usr.bin/perl/eg/rename
+++ b/gnu/usr.bin/perl/eg/rename
@@ -2,9 +2,12 @@
'di';
'ig00';
#
-# $Header: /home/cvs/386BSD/ports/lang/perl/eg/rename,v 1.1.1.1 1993/08/23 21:29:43 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/eg/rename,v 1.1.1.1 1994/09/10 06:27:47 gclarkii Exp $
#
# $Log: rename,v $
+# Revision 1.1.1.1 1994/09/10 06:27:47 gclarkii
+# Initial import of Perl 4.046 bmaked
+#
# Revision 1.1.1.1 1993/08/23 21:29:43 nate
# PERL!
#
diff --git a/gnu/usr.bin/perl/eg/rmfrom b/gnu/usr.bin/perl/eg/rmfrom
index 0c8fa2c86aaf..18a9fc794fe2 100644
--- a/gnu/usr.bin/perl/eg/rmfrom
+++ b/gnu/usr.bin/perl/eg/rmfrom
@@ -1,6 +1,6 @@
#!/usr/bin/perl -n
-# $Header: /home/cvs/386BSD/ports/lang/perl/eg/rmfrom,v 1.1.1.1 1993/08/23 21:29:43 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/eg/rmfrom,v 1.1.1.1 1994/09/10 06:27:47 gclarkii Exp $
# A handy (but dangerous) script to put after a find ... -print.
diff --git a/gnu/usr.bin/perl/eg/scan/scan_df b/gnu/usr.bin/perl/eg/scan/scan_df
index 688738710a53..2db989bb3557 100644
--- a/gnu/usr.bin/perl/eg/scan/scan_df
+++ b/gnu/usr.bin/perl/eg/scan/scan_df
@@ -1,6 +1,6 @@
#!/usr/bin/perl -P
-# $Header: /home/cvs/386BSD/ports/lang/perl/eg/scan/scan_df,v 1.1.1.1 1993/08/23 21:29:44 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/eg/scan/scan_df,v 1.1.1.1 1994/09/10 06:27:49 gclarkii Exp $
# This report points out filesystems that are in danger of overflowing.
diff --git a/gnu/usr.bin/perl/eg/scan/scan_last b/gnu/usr.bin/perl/eg/scan/scan_last
index 6621120d3e44..6c109b43d499 100644
--- a/gnu/usr.bin/perl/eg/scan/scan_last
+++ b/gnu/usr.bin/perl/eg/scan/scan_last
@@ -1,6 +1,6 @@
#!/usr/bin/perl -P
-# $Header: /home/cvs/386BSD/ports/lang/perl/eg/scan/scan_last,v 1.1.1.1 1993/08/23 21:29:45 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/eg/scan/scan_last,v 1.1.1.1 1994/09/10 06:27:49 gclarkii Exp $
# This reports who was logged on at weird hours
diff --git a/gnu/usr.bin/perl/eg/scan/scan_messages b/gnu/usr.bin/perl/eg/scan/scan_messages
index a28cda858a17..81fc714dcf4e 100644
--- a/gnu/usr.bin/perl/eg/scan/scan_messages
+++ b/gnu/usr.bin/perl/eg/scan/scan_messages
@@ -1,6 +1,6 @@
#!/usr/bin/perl -P
-# $Header: /home/cvs/386BSD/ports/lang/perl/eg/scan/scan_messages,v 1.1.1.1 1993/08/23 21:29:44 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/eg/scan/scan_messages,v 1.1.1.1 1994/09/10 06:27:49 gclarkii Exp $
# This prints out extraordinary console messages. You'll need to customize.
diff --git a/gnu/usr.bin/perl/eg/scan/scan_passwd b/gnu/usr.bin/perl/eg/scan/scan_passwd
index f9c53c7d2385..9cfa77f4b135 100644
--- a/gnu/usr.bin/perl/eg/scan/scan_passwd
+++ b/gnu/usr.bin/perl/eg/scan/scan_passwd
@@ -1,6 +1,6 @@
#!/usr/bin/perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/eg/scan/scan_passwd,v 1.1.1.1 1993/08/23 21:29:45 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/eg/scan/scan_passwd,v 1.1.1.1 1994/09/10 06:27:49 gclarkii Exp $
# This scans passwd file for security holes.
diff --git a/gnu/usr.bin/perl/eg/scan/scan_ps b/gnu/usr.bin/perl/eg/scan/scan_ps
index b0480d544c30..9a99d1dddb18 100644
--- a/gnu/usr.bin/perl/eg/scan/scan_ps
+++ b/gnu/usr.bin/perl/eg/scan/scan_ps
@@ -1,6 +1,6 @@
#!/usr/bin/perl -P
-# $Header: /home/cvs/386BSD/ports/lang/perl/eg/scan/scan_ps,v 1.1.1.1 1993/08/23 21:29:45 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/eg/scan/scan_ps,v 1.1.1.1 1994/09/10 06:27:49 gclarkii Exp $
# This looks for looping processes.
diff --git a/gnu/usr.bin/perl/eg/scan/scan_sudo b/gnu/usr.bin/perl/eg/scan/scan_sudo
index a95a6092b467..81e014872d44 100644
--- a/gnu/usr.bin/perl/eg/scan/scan_sudo
+++ b/gnu/usr.bin/perl/eg/scan/scan_sudo
@@ -1,6 +1,6 @@
#!/usr/bin/perl -P
-# $Header: /home/cvs/386BSD/ports/lang/perl/eg/scan/scan_sudo,v 1.1.1.1 1993/08/23 21:29:45 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/eg/scan/scan_sudo,v 1.1.1.1 1994/09/10 06:27:49 gclarkii Exp $
# Analyze the sudo log.
diff --git a/gnu/usr.bin/perl/eg/scan/scan_suid b/gnu/usr.bin/perl/eg/scan/scan_suid
index a730e0aaee16..8a694e5f2014 100644
--- a/gnu/usr.bin/perl/eg/scan/scan_suid
+++ b/gnu/usr.bin/perl/eg/scan/scan_suid
@@ -1,6 +1,6 @@
#!/usr/bin/perl -P
-# $Header: /home/cvs/386BSD/ports/lang/perl/eg/scan/scan_suid,v 1.1.1.1 1993/08/23 21:29:44 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/eg/scan/scan_suid,v 1.1.1.1 1994/09/10 06:27:49 gclarkii Exp $
# Look for new setuid root files.
diff --git a/gnu/usr.bin/perl/eg/scan/scanner b/gnu/usr.bin/perl/eg/scan/scanner
index f773e87e8f8a..64e2469aa0ea 100644
--- a/gnu/usr.bin/perl/eg/scan/scanner
+++ b/gnu/usr.bin/perl/eg/scan/scanner
@@ -1,6 +1,6 @@
#!/usr/bin/perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/eg/scan/scanner,v 1.1.1.1 1993/08/23 21:29:44 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/eg/scan/scanner,v 1.1.1.1 1994/09/10 06:27:48 gclarkii Exp $
# This runs all the scan_* routines on all the machines in /etc/ghosts.
# We run this every morning at about 6 am:
diff --git a/gnu/usr.bin/perl/eg/shmkill b/gnu/usr.bin/perl/eg/shmkill
index e8d1b11b3630..67513f2c0a86 100644
--- a/gnu/usr.bin/perl/eg/shmkill
+++ b/gnu/usr.bin/perl/eg/shmkill
@@ -1,6 +1,6 @@
#!/usr/bin/perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/eg/shmkill,v 1.1.1.1 1993/08/23 21:29:43 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/eg/shmkill,v 1.1.1.1 1994/09/10 06:27:47 gclarkii Exp $
# A script to call from crontab periodically when people are leaving shared
# memory sitting around unattached.
diff --git a/gnu/usr.bin/perl/eg/van/empty b/gnu/usr.bin/perl/eg/van/empty
index ee656e68563f..ca9e5de64e6e 100644
--- a/gnu/usr.bin/perl/eg/van/empty
+++ b/gnu/usr.bin/perl/eg/van/empty
@@ -1,6 +1,6 @@
#!/usr/bin/perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/eg/van/empty,v 1.1.1.1 1993/08/23 21:29:45 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/eg/van/empty,v 1.1.1.1 1994/09/10 06:27:49 gclarkii Exp $
# This script empties a trashcan.
diff --git a/gnu/usr.bin/perl/eg/van/unvanish b/gnu/usr.bin/perl/eg/van/unvanish
index 50459821546b..06e1aa1245d1 100644
--- a/gnu/usr.bin/perl/eg/van/unvanish
+++ b/gnu/usr.bin/perl/eg/van/unvanish
@@ -1,6 +1,6 @@
#!/usr/bin/perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/eg/van/unvanish,v 1.1.1.1 1993/08/23 21:29:45 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/eg/van/unvanish,v 1.1.1.1 1994/09/10 06:27:50 gclarkii Exp $
sub it {
if ($olddir ne '.') {
diff --git a/gnu/usr.bin/perl/eg/van/vanexp b/gnu/usr.bin/perl/eg/van/vanexp
index 79b78854d54c..e30df855d472 100644
--- a/gnu/usr.bin/perl/eg/van/vanexp
+++ b/gnu/usr.bin/perl/eg/van/vanexp
@@ -1,6 +1,6 @@
#!/usr/bin/perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/eg/van/vanexp,v 1.1.1.1 1993/08/23 21:29:45 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/eg/van/vanexp,v 1.1.1.1 1994/09/10 06:27:50 gclarkii Exp $
# This is for running from a find at night to expire old .deleteds
diff --git a/gnu/usr.bin/perl/eg/van/vanish b/gnu/usr.bin/perl/eg/van/vanish
index b79776a4ebdc..769789ea2ad3 100644
--- a/gnu/usr.bin/perl/eg/van/vanish
+++ b/gnu/usr.bin/perl/eg/van/vanish
@@ -1,6 +1,6 @@
#!/usr/bin/perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/eg/van/vanish,v 1.1.1.1 1993/08/23 21:29:45 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/eg/van/vanish,v 1.1.1.1 1994/09/10 06:27:50 gclarkii Exp $
sub it {
if ($olddir ne '.') {
diff --git a/gnu/usr.bin/perl/emacs/perldb.pl b/gnu/usr.bin/perl/emacs/perldb.pl
index 7c9e6513ea0c..6d8488ebee47 100644
--- a/gnu/usr.bin/perl/emacs/perldb.pl
+++ b/gnu/usr.bin/perl/emacs/perldb.pl
@@ -3,7 +3,7 @@ package DB;
# modified Perl debugger, to be run from Emacs in perldb-mode
# Ray Lischner (uunet!mntgfx!lisch) as of 5 Nov 1990
-$header = '$Header: /home/cvs/386BSD/ports/lang/perl/emacs/perldb.pl,v 1.1.1.1 1993/08/23 21:29:46 nate Exp $';
+$header = '$Header: /home/ncvs/src/gnu/usr.bin/perl/emacs/perldb.pl,v 1.1.1.1 1994/09/10 06:27:50 gclarkii Exp $';
#
# This file is automatically included if you do perl -d.
# It's probably not useful to include this yourself.
@@ -13,6 +13,9 @@ $header = '$Header: /home/cvs/386BSD/ports/lang/perl/emacs/perldb.pl,v 1.1.1.1 1
# have a breakpoint. It also inserts a do 'perldb.pl' before the first line.
#
# $Log: perldb.pl,v $
+# Revision 1.1.1.1 1994/09/10 06:27:50 gclarkii
+# Initial import of Perl 4.046 bmaked
+#
# Revision 1.1.1.1 1993/08/23 21:29:46 nate
# PERL!
#
diff --git a/gnu/usr.bin/perl/lib/ctime.pl b/gnu/usr.bin/perl/lib/ctime.pl
index 4c59754b7b81..4a5686c52548 100644
--- a/gnu/usr.bin/perl/lib/ctime.pl
+++ b/gnu/usr.bin/perl/lib/ctime.pl
@@ -3,7 +3,7 @@
;# Waldemar Kebsch, Federal Republic of Germany, November 1988
;# kebsch.pad@nixpbe.UUCP
;# Modified March 1990, Feb 1991 to properly handle timezones
-;# $RCSfile: ctime.pl,v $$Revision: 1.1.1.1 $$Date: 1993/08/23 21:29:52 $
+;# $RCSfile: ctime.pl,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:52 $
;# Marion Hakanson (hakanson@cse.ogi.edu)
;# Oregon Graduate Institute of Science and Technology
;#
diff --git a/gnu/usr.bin/perl/lib/getopt.pl b/gnu/usr.bin/perl/lib/getopt.pl
index 6772d54aae20..6c3c4996f087 100644
--- a/gnu/usr.bin/perl/lib/getopt.pl
+++ b/gnu/usr.bin/perl/lib/getopt.pl
@@ -1,4 +1,4 @@
-;# $RCSfile: getopt.pl,v $$Revision: 1.1.1.1 $$Date: 1993/08/23 21:29:52 $
+;# $RCSfile: getopt.pl,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:52 $
;# Process single-character switches with switch clustering. Pass one argument
;# which is a string containing all switches that take an argument. For each
diff --git a/gnu/usr.bin/perl/lib/importenv.pl b/gnu/usr.bin/perl/lib/importenv.pl
index c9ad330b6d03..2d7b7ee12e9f 100644
--- a/gnu/usr.bin/perl/lib/importenv.pl
+++ b/gnu/usr.bin/perl/lib/importenv.pl
@@ -1,4 +1,4 @@
-;# $Header: /home/cvs/386BSD/ports/lang/perl/lib/importenv.pl,v 1.1.1.1 1993/08/23 21:29:53 nate Exp $
+;# $Header: /home/ncvs/src/gnu/usr.bin/perl/lib/importenv.pl,v 1.1.1.1 1994/09/10 06:27:52 gclarkii Exp $
;# This file, when interpreted, pulls the environment into normal variables.
;# Usage:
diff --git a/gnu/usr.bin/perl/lib/perldb.pl b/gnu/usr.bin/perl/lib/perldb.pl
index 1aadb934e979..a406f0b626d9 100644
--- a/gnu/usr.bin/perl/lib/perldb.pl
+++ b/gnu/usr.bin/perl/lib/perldb.pl
@@ -4,7 +4,7 @@ package DB;
# Ray Lischner (uunet!mntgfx!lisch) as of 5 Nov 1990
# Johan Vromans -- upgrade to 4.0 pl 10
-$header = '$RCSfile: perldb.pl,v $$Revision: 1.1.1.1 $$Date: 1993/08/23 21:29:51 $';
+$header = '$RCSfile: perldb.pl,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:53 $';
#
# This file is automatically included if you do perl -d.
# It's probably not useful to include this yourself.
@@ -14,6 +14,9 @@ $header = '$RCSfile: perldb.pl,v $$Revision: 1.1.1.1 $$Date: 1993/08/23 21:29:51
# have a breakpoint. It also inserts a do 'perldb.pl' before the first line.
#
# $Log: perldb.pl,v $
+# Revision 1.1.1.1 1994/09/10 06:27:53 gclarkii
+# Initial import of Perl 4.046 bmaked
+#
# Revision 1.1.1.1 1993/08/23 21:29:51 nate
# PERL!
#
diff --git a/gnu/usr.bin/perl/lib/pwd.pl b/gnu/usr.bin/perl/lib/pwd.pl
index 16baadcdcdd4..0b95af37cc65 100644
--- a/gnu/usr.bin/perl/lib/pwd.pl
+++ b/gnu/usr.bin/perl/lib/pwd.pl
@@ -1,8 +1,11 @@
;# pwd.pl - keeps track of current working directory in PWD environment var
;#
-;# $RCSfile: pwd.pl,v $$Revision: 1.1.1.1 $$Date: 1993/08/23 21:29:52 $
+;# $RCSfile: pwd.pl,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:53 $
;#
;# $Log: pwd.pl,v $
+# Revision 1.1.1.1 1994/09/10 06:27:53 gclarkii
+# Initial import of Perl 4.046 bmaked
+#
# Revision 1.1.1.1 1993/08/23 21:29:52 nate
# PERL!
#
diff --git a/gnu/usr.bin/perl/lib/stat.pl b/gnu/usr.bin/perl/lib/stat.pl
index 6186f5428d18..cd9321c9966c 100644
--- a/gnu/usr.bin/perl/lib/stat.pl
+++ b/gnu/usr.bin/perl/lib/stat.pl
@@ -1,4 +1,4 @@
-;# $Header: /home/cvs/386BSD/ports/lang/perl/lib/stat.pl,v 1.1.1.1 1993/08/23 21:29:53 nate Exp $
+;# $Header: /home/ncvs/src/gnu/usr.bin/perl/lib/stat.pl,v 1.1.1.1 1994/09/10 06:27:53 gclarkii Exp $
;# Usage:
;# require 'stat.pl';
diff --git a/gnu/usr.bin/perl/lib/syslog.pl b/gnu/usr.bin/perl/lib/syslog.pl
index 94a4f6a19a00..bf850c013abb 100644
--- a/gnu/usr.bin/perl/lib/syslog.pl
+++ b/gnu/usr.bin/perl/lib/syslog.pl
@@ -2,6 +2,9 @@
# syslog.pl
#
# $Log: syslog.pl,v $
+# Revision 1.1.1.1 1994/09/10 06:27:53 gclarkii
+# Initial import of Perl 4.046 bmaked
+#
# Revision 1.1.1.1 1993/08/23 21:29:51 nate
# PERL!
#
diff --git a/gnu/usr.bin/perl/lib/termcap.pl b/gnu/usr.bin/perl/lib/termcap.pl
index 81556dbd3fb4..2e173baa33cf 100644
--- a/gnu/usr.bin/perl/lib/termcap.pl
+++ b/gnu/usr.bin/perl/lib/termcap.pl
@@ -1,4 +1,4 @@
-;# $RCSfile: termcap.pl,v $$Revision: 1.1.1.1 $$Date: 1993/08/23 21:29:52 $
+;# $RCSfile: termcap.pl,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:53 $
;#
;# Usage:
;# require 'ioctl.pl';
diff --git a/gnu/usr.bin/perl/lib/validate.pl b/gnu/usr.bin/perl/lib/validate.pl
index 4b901b6c314e..df92731c9f7b 100644
--- a/gnu/usr.bin/perl/lib/validate.pl
+++ b/gnu/usr.bin/perl/lib/validate.pl
@@ -1,4 +1,4 @@
-;# $Header: /home/cvs/386BSD/ports/lang/perl/lib/validate.pl,v 1.1.1.1 1993/08/23 21:29:51 nate Exp $
+;# $Header: /home/ncvs/src/gnu/usr.bin/perl/lib/validate.pl,v 1.1.1.1 1994/09/10 06:27:53 gclarkii Exp $
;# The validate routine takes a single multiline string consisting of
;# lines containing a filename plus a file test to try on it. (The
diff --git a/gnu/usr.bin/perl/misc/c2ph b/gnu/usr.bin/perl/misc/c2ph
index 1a2e4b8306ea..7214e3b1d43c 100644
--- a/gnu/usr.bin/perl/misc/c2ph
+++ b/gnu/usr.bin/perl/misc/c2ph
@@ -10,7 +10,7 @@
# See the usage message for more. If this isn't enough, read the code.
#
-$RCSID = '$RCSfile: c2ph,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:31 $';
+$RCSID = '$RCSfile: c2ph,v $$Revision: 1.2 $$Date: 1994/10/29 07:14:38 $';
######################################################################
diff --git a/gnu/usr.bin/perl/misc/pstruct b/gnu/usr.bin/perl/misc/pstruct
index 5dfea04776f6..c9f9a04aa4ea 100644
--- a/gnu/usr.bin/perl/misc/pstruct
+++ b/gnu/usr.bin/perl/misc/pstruct
@@ -10,7 +10,7 @@
# See the usage message for more. If this isn't enough, read the code.
#
-$RCSID = '$RCSfile: pstruct,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:31 $';
+$RCSID = '$RCSfile: pstruct,v $$Revision: 1.2 $$Date: 1994/10/29 07:14:39 $';
######################################################################
diff --git a/gnu/usr.bin/perl/perl/EXTERN.h b/gnu/usr.bin/perl/perl/EXTERN.h
index fec95bf60906..6c87d4b717b3 100644
--- a/gnu/usr.bin/perl/perl/EXTERN.h
+++ b/gnu/usr.bin/perl/perl/EXTERN.h
@@ -1,4 +1,4 @@
-/* $RCSfile: EXTERN.h,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:34 $
+/* $RCSfile: EXTERN.h,v $$Revision: 1.2 $$Date: 1995/05/30 05:02:46 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: EXTERN.h,v $
+ * Revision 1.2 1995/05/30 05:02:46 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:34 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/perl/INTERN.h b/gnu/usr.bin/perl/perl/INTERN.h
index d1792d852ea3..f335ab315067 100644
--- a/gnu/usr.bin/perl/perl/INTERN.h
+++ b/gnu/usr.bin/perl/perl/INTERN.h
@@ -1,4 +1,4 @@
-/* $RCSfile: INTERN.h,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:34 $
+/* $RCSfile: INTERN.h,v $$Revision: 1.2 $$Date: 1995/05/30 05:02:47 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: INTERN.h,v $
+ * Revision 1.2 1995/05/30 05:02:47 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:34 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/perl/arg.h b/gnu/usr.bin/perl/perl/arg.h
index b3f8d5a050cc..93bc65019c30 100644
--- a/gnu/usr.bin/perl/perl/arg.h
+++ b/gnu/usr.bin/perl/perl/arg.h
@@ -1,4 +1,4 @@
-/* $RCSfile: arg.h,v $$Revision: 1.2 $$Date: 1994/09/11 03:17:24 $
+/* $RCSfile: arg.h,v $$Revision: 1.3 $$Date: 1995/05/30 05:02:49 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: arg.h,v $
+ * Revision 1.3 1995/05/30 05:02:49 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.2 1994/09/11 03:17:24 gclarkii
* Changed AF_LOCAL to AF_LOCAL_XX so as not to conflict with 4.4 socket.h
* Added casts to shutup warnings in doio.c
diff --git a/gnu/usr.bin/perl/perl/array.c b/gnu/usr.bin/perl/perl/array.c
index a413e3b2a670..a5e12ef02fe6 100644
--- a/gnu/usr.bin/perl/perl/array.c
+++ b/gnu/usr.bin/perl/perl/array.c
@@ -1,4 +1,4 @@
-/* $RCSfile: array.c,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:31 $
+/* $RCSfile: array.c,v $$Revision: 1.2 $$Date: 1995/05/30 05:02:50 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: array.c,v $
+ * Revision 1.2 1995/05/30 05:02:50 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:31 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/perl/array.h b/gnu/usr.bin/perl/perl/array.h
index 9b2207be765c..58b2a2c28020 100644
--- a/gnu/usr.bin/perl/perl/array.h
+++ b/gnu/usr.bin/perl/perl/array.h
@@ -1,4 +1,4 @@
-/* $RCSfile: array.h,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:34 $
+/* $RCSfile: array.h,v $$Revision: 1.2 $$Date: 1995/05/30 05:02:51 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: array.h,v $
+ * Revision 1.2 1995/05/30 05:02:51 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:34 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/perl/cmd.c b/gnu/usr.bin/perl/perl/cmd.c
index 162926d0a316..e3cbcbc053d3 100644
--- a/gnu/usr.bin/perl/perl/cmd.c
+++ b/gnu/usr.bin/perl/perl/cmd.c
@@ -1,4 +1,4 @@
-/* $RCSfile: cmd.c,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:32 $
+/* $RCSfile: cmd.c,v $$Revision: 1.2 $$Date: 1995/05/30 05:02:52 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: cmd.c,v $
+ * Revision 1.2 1995/05/30 05:02:52 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:32 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/perl/cmd.h b/gnu/usr.bin/perl/perl/cmd.h
index da0fa8e7696d..88659826cd45 100644
--- a/gnu/usr.bin/perl/perl/cmd.h
+++ b/gnu/usr.bin/perl/perl/cmd.h
@@ -1,4 +1,4 @@
-/* $RCSfile: cmd.h,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:34 $
+/* $RCSfile: cmd.h,v $$Revision: 1.2 $$Date: 1995/05/30 05:02:54 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: cmd.h,v $
+ * Revision 1.2 1995/05/30 05:02:54 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:34 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/perl/cons.c b/gnu/usr.bin/perl/perl/cons.c
index bbf783ef7843..07207a388271 100644
--- a/gnu/usr.bin/perl/perl/cons.c
+++ b/gnu/usr.bin/perl/perl/cons.c
@@ -1,4 +1,4 @@
-/* $RCSfile: cons.c,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:32 $
+/* $RCSfile: cons.c,v $$Revision: 1.2 $$Date: 1995/05/30 05:02:56 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: cons.c,v $
+ * Revision 1.2 1995/05/30 05:02:56 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:32 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/perl/consarg.c b/gnu/usr.bin/perl/perl/consarg.c
index d0d59b73c92a..da795d34efbb 100644
--- a/gnu/usr.bin/perl/perl/consarg.c
+++ b/gnu/usr.bin/perl/perl/consarg.c
@@ -1,4 +1,4 @@
-/* $RCSfile: consarg.c,v $$Revision: 1.2 $$Date: 1994/09/11 03:17:29 $
+/* $RCSfile: consarg.c,v $$Revision: 1.3 $$Date: 1995/05/30 05:02:57 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: consarg.c,v $
+ * Revision 1.3 1995/05/30 05:02:57 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.2 1994/09/11 03:17:29 gclarkii
* Changed AF_LOCAL to AF_LOCAL_XX so as not to conflict with 4.4 socket.h
* Added casts to shutup warnings in doio.c
diff --git a/gnu/usr.bin/perl/perl/crypt.c b/gnu/usr.bin/perl/perl/crypt.c
index 3e95f452cf7f..fac3d61b4df5 100644
--- a/gnu/usr.bin/perl/perl/crypt.c
+++ b/gnu/usr.bin/perl/perl/crypt.c
@@ -36,7 +36,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/* from static char sccsid[] = "@(#)crypt.c 5.11 (Berkeley) 6/25/91"; */
-static char rcsid[] = "$Header: /home/ncvs/src/gnu/usr.bin/perl/perl/crypt.c,v 1.1.1.1 1994/09/10 06:27:37 gclarkii Exp $";
+static char rcsid[] = "$Header: /home/ncvs/src/gnu/usr.bin/perl/perl/crypt.c,v 1.2 1995/05/30 05:02:58 rgrimes Exp $";
#endif /* LIBC_SCCS and not lint */
#include <unistd.h>
diff --git a/gnu/usr.bin/perl/perl/doarg.c b/gnu/usr.bin/perl/perl/doarg.c
index 2a647875b536..134f9237d71a 100644
--- a/gnu/usr.bin/perl/perl/doarg.c
+++ b/gnu/usr.bin/perl/perl/doarg.c
@@ -1,4 +1,4 @@
-/* $RCSfile: doarg.c,v $$Revision: 1.2 $$Date: 1994/09/11 03:17:30 $
+/* $RCSfile: doarg.c,v $$Revision: 1.3 $$Date: 1995/05/30 05:02:59 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: doarg.c,v $
+ * Revision 1.3 1995/05/30 05:02:59 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.2 1994/09/11 03:17:30 gclarkii
* Changed AF_LOCAL to AF_LOCAL_XX so as not to conflict with 4.4 socket.h
* Added casts to shutup warnings in doio.c
diff --git a/gnu/usr.bin/perl/perl/doio.c b/gnu/usr.bin/perl/perl/doio.c
index 9c0731f6099f..b25733cfbfe7 100644
--- a/gnu/usr.bin/perl/perl/doio.c
+++ b/gnu/usr.bin/perl/perl/doio.c
@@ -1,4 +1,4 @@
-/* $RCSfile: doio.c,v $$Revision: 1.2 $$Date: 1994/09/11 03:17:32 $
+/* $RCSfile: doio.c,v $$Revision: 1.3 $$Date: 1995/05/30 05:03:00 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: doio.c,v $
+ * Revision 1.3 1995/05/30 05:03:00 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.2 1994/09/11 03:17:32 gclarkii
* Changed AF_LOCAL to AF_LOCAL_XX so as not to conflict with 4.4 socket.h
* Added casts to shutup warnings in doio.c
diff --git a/gnu/usr.bin/perl/perl/dolist.c b/gnu/usr.bin/perl/perl/dolist.c
index 448a260ad4e7..6ca20c4a180b 100644
--- a/gnu/usr.bin/perl/perl/dolist.c
+++ b/gnu/usr.bin/perl/perl/dolist.c
@@ -1,4 +1,4 @@
-/* $RCSfile: dolist.c,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:32 $
+/* $RCSfile: dolist.c,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:01 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: dolist.c,v $
+ * Revision 1.2 1995/05/30 05:03:01 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:32 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/perl/dump.c b/gnu/usr.bin/perl/perl/dump.c
index 7a07135efb37..6c4c6dece527 100644
--- a/gnu/usr.bin/perl/perl/dump.c
+++ b/gnu/usr.bin/perl/perl/dump.c
@@ -1,4 +1,4 @@
-/* $RCSfile: dump.c,v $$Revision: 1.2 $$Date: 1994/09/11 03:17:33 $
+/* $RCSfile: dump.c,v $$Revision: 1.3 $$Date: 1995/05/30 05:03:02 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: dump.c,v $
+ * Revision 1.3 1995/05/30 05:03:02 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.2 1994/09/11 03:17:33 gclarkii
* Changed AF_LOCAL to AF_LOCAL_XX so as not to conflict with 4.4 socket.h
* Added casts to shutup warnings in doio.c
diff --git a/gnu/usr.bin/perl/perl/eval.c b/gnu/usr.bin/perl/perl/eval.c
index 40155f5549fc..e0ae43859f60 100644
--- a/gnu/usr.bin/perl/perl/eval.c
+++ b/gnu/usr.bin/perl/perl/eval.c
@@ -1,4 +1,4 @@
-/* $RCSfile: eval.c,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:32 $
+/* $RCSfile: eval.c,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:03 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: eval.c,v $
+ * Revision 1.2 1995/05/30 05:03:03 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:32 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/perl/form.c b/gnu/usr.bin/perl/perl/form.c
index cfb7aed218c8..65e4773afe79 100644
--- a/gnu/usr.bin/perl/perl/form.c
+++ b/gnu/usr.bin/perl/perl/form.c
@@ -1,4 +1,4 @@
-/* $RCSfile: form.c,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:33 $
+/* $RCSfile: form.c,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:04 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: form.c,v $
+ * Revision 1.2 1995/05/30 05:03:04 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:33 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/perl/form.h b/gnu/usr.bin/perl/perl/form.h
index 3f63289744ca..56cfbd0b6229 100644
--- a/gnu/usr.bin/perl/perl/form.h
+++ b/gnu/usr.bin/perl/perl/form.h
@@ -1,4 +1,4 @@
-/* $RCSfile: form.h,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:34 $
+/* $RCSfile: form.h,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:05 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: form.h,v $
+ * Revision 1.2 1995/05/30 05:03:05 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:34 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/perl/handy.h b/gnu/usr.bin/perl/perl/handy.h
index df719841233b..e3bbeb28dcba 100644
--- a/gnu/usr.bin/perl/perl/handy.h
+++ b/gnu/usr.bin/perl/perl/handy.h
@@ -1,4 +1,4 @@
-/* $RCSfile: handy.h,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:34 $
+/* $RCSfile: handy.h,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:06 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: handy.h,v $
+ * Revision 1.2 1995/05/30 05:03:06 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:34 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/perl/hash.c b/gnu/usr.bin/perl/perl/hash.c
index 5d9b5940a90d..7e39b3c4b2c2 100644
--- a/gnu/usr.bin/perl/perl/hash.c
+++ b/gnu/usr.bin/perl/perl/hash.c
@@ -1,4 +1,4 @@
-/* $RCSfile: hash.c,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:33 $
+/* $RCSfile: hash.c,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:07 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: hash.c,v $
+ * Revision 1.2 1995/05/30 05:03:07 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:33 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/perl/hash.h b/gnu/usr.bin/perl/perl/hash.h
index ddf2a11b064e..c86387726d23 100644
--- a/gnu/usr.bin/perl/perl/hash.h
+++ b/gnu/usr.bin/perl/perl/hash.h
@@ -1,4 +1,4 @@
-/* $RCSfile: hash.h,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:35 $
+/* $RCSfile: hash.h,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:08 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: hash.h,v $
+ * Revision 1.2 1995/05/30 05:03:08 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:35 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/perl/malloc.c b/gnu/usr.bin/perl/perl/malloc.c
index 5cc86d910882..09d8164e09b0 100644
--- a/gnu/usr.bin/perl/perl/malloc.c
+++ b/gnu/usr.bin/perl/perl/malloc.c
@@ -1,6 +1,9 @@
-/* $RCSfile: malloc.c,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:33 $
+/* $RCSfile: malloc.c,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:09 $
*
* $Log: malloc.c,v $
+ * Revision 1.2 1995/05/30 05:03:09 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:33 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/perl/perl.1 b/gnu/usr.bin/perl/perl/perl.1
index 15791c22b691..28391f9963f1 100644
--- a/gnu/usr.bin/perl/perl/perl.1
+++ b/gnu/usr.bin/perl/perl/perl.1
@@ -1,7 +1,13 @@
.rn '' }`
-''' $RCSfile: perl.1,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:36 $
+''' $RCSfile: perl.1,v $$Revision: 1.2 $$Date: 1994/10/27 23:16:52 $
'''
''' $Log: perl.1,v $
+.\" Revision 1.2 1994/10/27 23:16:52 wollman
+.\" Convince Perl to that is is part of the system, as /usr/bin/perl (binary)
+.\" and /usr/share/perl (library). The latter was chosen as analogous to other
+.\" directories already present in /usr/share, like /usr/share/groff_font and
+.\" (particularly) /usr/share/mk.
+.\"
.\" Revision 1.1.1.1 1994/09/10 06:27:36 gclarkii
.\" Initial import of Perl 4.046 bmaked
.\"
diff --git a/gnu/usr.bin/perl/perl/perl.c b/gnu/usr.bin/perl/perl/perl.c
index 4d1a7ae6bd4c..820d221c0f7c 100644
--- a/gnu/usr.bin/perl/perl/perl.c
+++ b/gnu/usr.bin/perl/perl/perl.c
@@ -1,4 +1,4 @@
-char rcsid[] = "$RCSfile: perl.c,v $$Revision: 1.3 $$Date: 1995/05/28 19:21:54 $\nPatch level: ###\n";
+char rcsid[] = "$RCSfile: perl.c,v $$Revision: 1.4 $$Date: 1995/05/30 05:03:10 $\nPatch level: ###\n";
/*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@ char rcsid[] = "$RCSfile: perl.c,v $$Revision: 1.3 $$Date: 1995/05/28 19:21:54 $
* License or the Artistic License, as specified in the README file.
*
* $Log: perl.c,v $
+ * Revision 1.4 1995/05/30 05:03:10 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.3 1995/05/28 19:21:54 ache
* Fix $] variable value (version number), close PR 449
* Submitted by: Bill Fenner <fenner@parc.xerox.com>
diff --git a/gnu/usr.bin/perl/perl/perl.h b/gnu/usr.bin/perl/perl/perl.h
index 7693aa0c8157..bf6e63b4c854 100644
--- a/gnu/usr.bin/perl/perl/perl.h
+++ b/gnu/usr.bin/perl/perl/perl.h
@@ -1,4 +1,4 @@
-/* $RCSfile: perl.h,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:35 $
+/* $RCSfile: perl.h,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:11 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: perl.h,v $
+ * Revision 1.2 1995/05/30 05:03:11 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:35 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/perl/regcomp.c b/gnu/usr.bin/perl/perl/regcomp.c
index 0287778f2878..449b01a35f5e 100644
--- a/gnu/usr.bin/perl/perl/regcomp.c
+++ b/gnu/usr.bin/perl/perl/regcomp.c
@@ -7,9 +7,12 @@
* blame Henry for some of the lack of readability.
*/
-/* $RCSfile: regcomp.c,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:33 $
+/* $RCSfile: regcomp.c,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:14 $
*
* $Log: regcomp.c,v $
+ * Revision 1.2 1995/05/30 05:03:14 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:33 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/perl/regcomp.h b/gnu/usr.bin/perl/perl/regcomp.h
index b6b8c182aa3b..fea24d80c1ed 100644
--- a/gnu/usr.bin/perl/perl/regcomp.h
+++ b/gnu/usr.bin/perl/perl/regcomp.h
@@ -1,6 +1,9 @@
-/* $RCSfile: regcomp.h,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:35 $
+/* $RCSfile: regcomp.h,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:15 $
*
* $Log: regcomp.h,v $
+ * Revision 1.2 1995/05/30 05:03:15 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:35 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/perl/regexec.c b/gnu/usr.bin/perl/perl/regexec.c
index b8353061b256..5c44b18908a7 100644
--- a/gnu/usr.bin/perl/perl/regexec.c
+++ b/gnu/usr.bin/perl/perl/regexec.c
@@ -7,9 +7,12 @@
* blame Henry for some of the lack of readability.
*/
-/* $RCSfile: regexec.c,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:33 $
+/* $RCSfile: regexec.c,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:16 $
*
* $Log: regexec.c,v $
+ * Revision 1.2 1995/05/30 05:03:16 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:33 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/perl/regexp.h b/gnu/usr.bin/perl/perl/regexp.h
index 634b19b913ce..7cc19071db48 100644
--- a/gnu/usr.bin/perl/perl/regexp.h
+++ b/gnu/usr.bin/perl/perl/regexp.h
@@ -5,9 +5,12 @@
* not the System V one.
*/
-/* $RCSfile: regexp.h,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:35 $
+/* $RCSfile: regexp.h,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:17 $
*
* $Log: regexp.h,v $
+ * Revision 1.2 1995/05/30 05:03:17 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:35 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/perl/spat.h b/gnu/usr.bin/perl/perl/spat.h
index 7c392b0de11a..66272c121451 100644
--- a/gnu/usr.bin/perl/perl/spat.h
+++ b/gnu/usr.bin/perl/perl/spat.h
@@ -1,4 +1,4 @@
-/* $RCSfile: spat.h,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:35 $
+/* $RCSfile: spat.h,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:18 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: spat.h,v $
+ * Revision 1.2 1995/05/30 05:03:18 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:35 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/perl/stab.c b/gnu/usr.bin/perl/perl/stab.c
index e34aa94028b7..eac6c91bc632 100644
--- a/gnu/usr.bin/perl/perl/stab.c
+++ b/gnu/usr.bin/perl/perl/stab.c
@@ -1,4 +1,4 @@
-/* $RCSfile: stab.c,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:33 $
+/* $RCSfile: stab.c,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:19 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: stab.c,v $
+ * Revision 1.2 1995/05/30 05:03:19 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:33 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/perl/stab.h b/gnu/usr.bin/perl/perl/stab.h
index 9da5a4ac5282..b2d07dcab743 100644
--- a/gnu/usr.bin/perl/perl/stab.h
+++ b/gnu/usr.bin/perl/perl/stab.h
@@ -1,4 +1,4 @@
-/* $RCSfile: stab.h,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:35 $
+/* $RCSfile: stab.h,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:20 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: stab.h,v $
+ * Revision 1.2 1995/05/30 05:03:20 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:35 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/perl/str.c b/gnu/usr.bin/perl/perl/str.c
index 0f8b36d793c7..74f7a1eedd9b 100644
--- a/gnu/usr.bin/perl/perl/str.c
+++ b/gnu/usr.bin/perl/perl/str.c
@@ -1,4 +1,4 @@
-/* $RCSfile: str.c,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:33 $
+/* $RCSfile: str.c,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:21 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: str.c,v $
+ * Revision 1.2 1995/05/30 05:03:21 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:33 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/perl/str.h b/gnu/usr.bin/perl/perl/str.h
index 8e95749e246a..67ed1e38e9f4 100644
--- a/gnu/usr.bin/perl/perl/str.h
+++ b/gnu/usr.bin/perl/perl/str.h
@@ -1,4 +1,4 @@
-/* $RCSfile: str.h,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:35 $
+/* $RCSfile: str.h,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:22 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: str.h,v $
+ * Revision 1.2 1995/05/30 05:03:22 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:35 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/perl/t/TEST b/gnu/usr.bin/perl/perl/t/TEST
index 957a868c5cdd..445ab6c4f74a 100755
--- a/gnu/usr.bin/perl/perl/t/TEST
+++ b/gnu/usr.bin/perl/perl/t/TEST
@@ -1,6 +1,6 @@
#!./perl
-# $RCSfile: TEST,v $$Revision: 1.1.1.1 $$Date: 1993/08/23 21:30:01 $
+# $RCSfile: TEST,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:38 $
# This is written in a peculiar style, since we're trying to avoid
# most of the constructs we'll be testing for.
diff --git a/gnu/usr.bin/perl/perl/t/base/cond.t b/gnu/usr.bin/perl/perl/t/base/cond.t
index 7d49f4e9b591..ec9e3222090f 100755
--- a/gnu/usr.bin/perl/perl/t/base/cond.t
+++ b/gnu/usr.bin/perl/perl/t/base/cond.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/base/cond.t,v 1.1.1.1 1993/08/23 21:30:05 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/base/cond.t,v 1.1.1.1 1994/09/10 06:27:39 gclarkii Exp $
# make sure conditional operators work
diff --git a/gnu/usr.bin/perl/perl/t/base/if.t b/gnu/usr.bin/perl/perl/t/base/if.t
index 2a9b82c77e7d..627324b86304 100755
--- a/gnu/usr.bin/perl/perl/t/base/if.t
+++ b/gnu/usr.bin/perl/perl/t/base/if.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/base/if.t,v 1.1.1.1 1993/08/23 21:30:05 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/base/if.t,v 1.1.1.1 1994/09/10 06:27:39 gclarkii Exp $
print "1..2\n";
diff --git a/gnu/usr.bin/perl/perl/t/base/lex.t b/gnu/usr.bin/perl/perl/t/base/lex.t
index cd6321d9f081..a3535cc91bd5 100755
--- a/gnu/usr.bin/perl/perl/t/base/lex.t
+++ b/gnu/usr.bin/perl/perl/t/base/lex.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/base/lex.t,v 1.1.1.1 1993/08/23 21:30:05 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/base/lex.t,v 1.1.1.1 1994/09/10 06:27:39 gclarkii Exp $
print "1..18\n";
diff --git a/gnu/usr.bin/perl/perl/t/base/pat.t b/gnu/usr.bin/perl/perl/t/base/pat.t
index 2c8d9a9f2b85..61c0d08fac8a 100755
--- a/gnu/usr.bin/perl/perl/t/base/pat.t
+++ b/gnu/usr.bin/perl/perl/t/base/pat.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/base/pat.t,v 1.1.1.1 1993/08/23 21:30:05 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/base/pat.t,v 1.1.1.1 1994/09/10 06:27:39 gclarkii Exp $
print "1..2\n";
diff --git a/gnu/usr.bin/perl/perl/t/base/term.t b/gnu/usr.bin/perl/perl/t/base/term.t
index c049c5872364..aaa59baaccad 100755
--- a/gnu/usr.bin/perl/perl/t/base/term.t
+++ b/gnu/usr.bin/perl/perl/t/base/term.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/base/term.t,v 1.1.1.1 1993/08/23 21:30:05 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/base/term.t,v 1.1.1.1 1994/09/10 06:27:39 gclarkii Exp $
print "1..6\n";
diff --git a/gnu/usr.bin/perl/perl/t/cmd/elsif.t b/gnu/usr.bin/perl/perl/t/cmd/elsif.t
index 0e3457f6ad1f..332a16b41de0 100755
--- a/gnu/usr.bin/perl/perl/t/cmd/elsif.t
+++ b/gnu/usr.bin/perl/perl/t/cmd/elsif.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/cmd/elsif.t,v 1.1.1.1 1993/08/23 21:30:05 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/cmd/elsif.t,v 1.1.1.1 1994/09/10 06:27:39 gclarkii Exp $
sub foo {
if ($_[0] == 1) {
diff --git a/gnu/usr.bin/perl/perl/t/cmd/for.t b/gnu/usr.bin/perl/perl/t/cmd/for.t
index 4a0c9226bae8..4a27fc8a97e9 100755
--- a/gnu/usr.bin/perl/perl/t/cmd/for.t
+++ b/gnu/usr.bin/perl/perl/t/cmd/for.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/cmd/for.t,v 1.1.1.1 1993/08/23 21:30:05 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/cmd/for.t,v 1.1.1.1 1994/09/10 06:27:39 gclarkii Exp $
print "1..7\n";
diff --git a/gnu/usr.bin/perl/perl/t/cmd/mod.t b/gnu/usr.bin/perl/perl/t/cmd/mod.t
index eeb44d97b5d8..0b18a348cbbb 100755
--- a/gnu/usr.bin/perl/perl/t/cmd/mod.t
+++ b/gnu/usr.bin/perl/perl/t/cmd/mod.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/cmd/mod.t,v 1.1.1.1 1993/08/23 21:30:05 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/cmd/mod.t,v 1.1.1.1 1994/09/10 06:27:39 gclarkii Exp $
print "1..7\n";
diff --git a/gnu/usr.bin/perl/perl/t/cmd/subval.t b/gnu/usr.bin/perl/perl/t/cmd/subval.t
index f7f411b34ab1..e7795f931223 100755
--- a/gnu/usr.bin/perl/perl/t/cmd/subval.t
+++ b/gnu/usr.bin/perl/perl/t/cmd/subval.t
@@ -1,6 +1,6 @@
#!./perl
-# $RCSfile: subval.t,v $$Revision: 1.1.1.1 $$Date: 1993/08/23 21:30:05 $
+# $RCSfile: subval.t,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:39 $
sub foo1 {
'true1';
diff --git a/gnu/usr.bin/perl/perl/t/cmd/switch.t b/gnu/usr.bin/perl/perl/t/cmd/switch.t
index d0d4c932ad0d..724d567ca869 100755
--- a/gnu/usr.bin/perl/perl/t/cmd/switch.t
+++ b/gnu/usr.bin/perl/perl/t/cmd/switch.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/cmd/switch.t,v 1.1.1.1 1993/08/23 21:30:05 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/cmd/switch.t,v 1.1.1.1 1994/09/10 06:27:39 gclarkii Exp $
print "1..18\n";
diff --git a/gnu/usr.bin/perl/perl/t/cmd/while.t b/gnu/usr.bin/perl/perl/t/cmd/while.t
index 006e251a9d2e..58719f70d14b 100755
--- a/gnu/usr.bin/perl/perl/t/cmd/while.t
+++ b/gnu/usr.bin/perl/perl/t/cmd/while.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/cmd/while.t,v 1.1.1.1 1993/08/23 21:30:05 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/cmd/while.t,v 1.1.1.1 1994/09/10 06:27:39 gclarkii Exp $
print "1..10\n";
diff --git a/gnu/usr.bin/perl/perl/t/comp/cmdopt.t b/gnu/usr.bin/perl/perl/t/comp/cmdopt.t
index 3c47130602ca..902126a5dceb 100755
--- a/gnu/usr.bin/perl/perl/t/comp/cmdopt.t
+++ b/gnu/usr.bin/perl/perl/t/comp/cmdopt.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/comp/cmdopt.t,v 1.1.1.1 1993/08/23 21:30:06 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/comp/cmdopt.t,v 1.1.1.1 1994/09/10 06:27:40 gclarkii Exp $
print "1..40\n";
diff --git a/gnu/usr.bin/perl/perl/t/comp/cpp.t b/gnu/usr.bin/perl/perl/t/comp/cpp.t
index 8cceb73ca8a0..656ea25d3918 100755
--- a/gnu/usr.bin/perl/perl/t/comp/cpp.t
+++ b/gnu/usr.bin/perl/perl/t/comp/cpp.t
@@ -1,6 +1,6 @@
#!./perl -P
-# $RCSfile: cpp.t,v $$Revision: 1.1.1.1 $$Date: 1993/08/23 21:30:06 $
+# $RCSfile: cpp.t,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:40 $
open(CONFIG,"../config.sh") || die;
while (<CONFIG>) {
diff --git a/gnu/usr.bin/perl/perl/t/comp/decl.t b/gnu/usr.bin/perl/perl/t/comp/decl.t
index f1c84c2190ce..81f921e576af 100755
--- a/gnu/usr.bin/perl/perl/t/comp/decl.t
+++ b/gnu/usr.bin/perl/perl/t/comp/decl.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/comp/decl.t,v 1.1.1.1 1993/08/23 21:30:07 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/comp/decl.t,v 1.1.1.1 1994/09/10 06:27:40 gclarkii Exp $
# check to see if subroutine declarations work everwhere
diff --git a/gnu/usr.bin/perl/perl/t/comp/multiline.t b/gnu/usr.bin/perl/perl/t/comp/multiline.t
index 78df482d3e7c..49e43f77308e 100755
--- a/gnu/usr.bin/perl/perl/t/comp/multiline.t
+++ b/gnu/usr.bin/perl/perl/t/comp/multiline.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/comp/multiline.t,v 1.1.1.1 1993/08/23 21:30:06 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/comp/multiline.t,v 1.1.1.1 1994/09/10 06:27:40 gclarkii Exp $
print "1..5\n";
diff --git a/gnu/usr.bin/perl/perl/t/comp/script.t b/gnu/usr.bin/perl/perl/t/comp/script.t
index 9dcf90195856..820230668ee8 100755
--- a/gnu/usr.bin/perl/perl/t/comp/script.t
+++ b/gnu/usr.bin/perl/perl/t/comp/script.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/comp/script.t,v 1.1.1.1 1993/08/23 21:30:06 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/comp/script.t,v 1.1.1.1 1994/09/10 06:27:40 gclarkii Exp $
print "1..3\n";
diff --git a/gnu/usr.bin/perl/perl/t/comp/term.t b/gnu/usr.bin/perl/perl/t/comp/term.t
index 70b23fd8a6ae..47589f736649 100755
--- a/gnu/usr.bin/perl/perl/t/comp/term.t
+++ b/gnu/usr.bin/perl/perl/t/comp/term.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/comp/term.t,v 1.1.1.1 1993/08/23 21:30:06 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/comp/term.t,v 1.1.1.1 1994/09/10 06:27:40 gclarkii Exp $
# tests that aren't important enough for base.term
diff --git a/gnu/usr.bin/perl/perl/t/io/argv.t b/gnu/usr.bin/perl/perl/t/io/argv.t
index 99c593620eee..cc1d6d68ec42 100755
--- a/gnu/usr.bin/perl/perl/t/io/argv.t
+++ b/gnu/usr.bin/perl/perl/t/io/argv.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/io/argv.t,v 1.1.1.1 1993/08/23 21:30:06 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/io/argv.t,v 1.1.1.1 1994/09/10 06:27:40 gclarkii Exp $
print "1..5\n";
diff --git a/gnu/usr.bin/perl/perl/t/io/dup.t b/gnu/usr.bin/perl/perl/t/io/dup.t
index 8d11eca79973..efa205537108 100755
--- a/gnu/usr.bin/perl/perl/t/io/dup.t
+++ b/gnu/usr.bin/perl/perl/t/io/dup.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/io/dup.t,v 1.1.1.1 1993/08/23 21:30:06 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/io/dup.t,v 1.1.1.1 1994/09/10 06:27:40 gclarkii Exp $
print "1..6\n";
diff --git a/gnu/usr.bin/perl/perl/t/io/fs.t b/gnu/usr.bin/perl/perl/t/io/fs.t
index 1d95cdc3530c..95f85d5572b3 100755
--- a/gnu/usr.bin/perl/perl/t/io/fs.t
+++ b/gnu/usr.bin/perl/perl/t/io/fs.t
@@ -1,6 +1,6 @@
#!./perl
-# $RCSfile: fs.t,v $$Revision: 1.1.1.1 $$Date: 1993/08/23 21:30:05 $
+# $RCSfile: fs.t,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:40 $
print "1..22\n";
diff --git a/gnu/usr.bin/perl/perl/t/io/inplace.t b/gnu/usr.bin/perl/perl/t/io/inplace.t
index b22afdaa4b98..82cc096fdae4 100755
--- a/gnu/usr.bin/perl/perl/t/io/inplace.t
+++ b/gnu/usr.bin/perl/perl/t/io/inplace.t
@@ -2,7 +2,7 @@
$^I = '.bak';
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/io/inplace.t,v 1.1.1.1 1993/08/23 21:30:05 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/io/inplace.t,v 1.1.1.1 1994/09/10 06:27:40 gclarkii Exp $
print "1..2\n";
diff --git a/gnu/usr.bin/perl/perl/t/io/pipe.t b/gnu/usr.bin/perl/perl/t/io/pipe.t
index 791a9c715f85..d52a4b929326 100755
--- a/gnu/usr.bin/perl/perl/t/io/pipe.t
+++ b/gnu/usr.bin/perl/perl/t/io/pipe.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/io/pipe.t,v 1.1.1.1 1993/08/23 21:30:06 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/io/pipe.t,v 1.1.1.1 1994/09/10 06:27:40 gclarkii Exp $
$| = 1;
print "1..8\n";
diff --git a/gnu/usr.bin/perl/perl/t/io/print.t b/gnu/usr.bin/perl/perl/t/io/print.t
index 11854427410b..38e1dcf827a5 100755
--- a/gnu/usr.bin/perl/perl/t/io/print.t
+++ b/gnu/usr.bin/perl/perl/t/io/print.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/io/print.t,v 1.1.1.1 1993/08/23 21:30:06 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/io/print.t,v 1.1.1.1 1994/09/10 06:27:40 gclarkii Exp $
print "1..16\n";
diff --git a/gnu/usr.bin/perl/perl/t/io/tell.t b/gnu/usr.bin/perl/perl/t/io/tell.t
index 27e69a0fd7ee..669a176ad274 100755
--- a/gnu/usr.bin/perl/perl/t/io/tell.t
+++ b/gnu/usr.bin/perl/perl/t/io/tell.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/io/tell.t,v 1.1.1.1 1993/08/23 21:30:06 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/io/tell.t,v 1.1.1.1 1994/09/10 06:27:40 gclarkii Exp $
print "1..13\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/append.t b/gnu/usr.bin/perl/perl/t/op/append.t
index 92c6f48e80c4..3bf47989ccbe 100755
--- a/gnu/usr.bin/perl/perl/t/op/append.t
+++ b/gnu/usr.bin/perl/perl/t/op/append.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/append.t,v 1.1.1.1 1993/08/23 21:30:04 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/append.t,v 1.1.1.1 1994/09/10 06:27:41 gclarkii Exp $
print "1..3\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/array.t b/gnu/usr.bin/perl/perl/t/op/array.t
index 39e05e3fbbb4..708f8b9f885a 100755
--- a/gnu/usr.bin/perl/perl/t/op/array.t
+++ b/gnu/usr.bin/perl/perl/t/op/array.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/array.t,v 1.1.1.1 1993/08/23 21:30:02 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/array.t,v 1.1.1.1 1994/09/10 06:27:41 gclarkii Exp $
print "1..36\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/auto.t b/gnu/usr.bin/perl/perl/t/op/auto.t
index 5301f934d8ed..4e6f65918bf5 100755
--- a/gnu/usr.bin/perl/perl/t/op/auto.t
+++ b/gnu/usr.bin/perl/perl/t/op/auto.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/auto.t,v 1.1.1.1 1993/08/23 21:30:01 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/auto.t,v 1.1.1.1 1994/09/10 06:27:41 gclarkii Exp $
print "1..34\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/chop.t b/gnu/usr.bin/perl/perl/t/op/chop.t
index d691d734105b..86938fb757ba 100755
--- a/gnu/usr.bin/perl/perl/t/op/chop.t
+++ b/gnu/usr.bin/perl/perl/t/op/chop.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/chop.t,v 1.1.1.1 1993/08/23 21:30:04 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/chop.t,v 1.1.1.1 1994/09/10 06:27:41 gclarkii Exp $
print "1..4\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/cond.t b/gnu/usr.bin/perl/perl/t/op/cond.t
index 054a5ff7f0d7..d9277387f500 100755
--- a/gnu/usr.bin/perl/perl/t/op/cond.t
+++ b/gnu/usr.bin/perl/perl/t/op/cond.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/cond.t,v 1.1.1.1 1993/08/23 21:30:04 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/cond.t,v 1.1.1.1 1994/09/10 06:27:41 gclarkii Exp $
print "1..4\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/dbm.t b/gnu/usr.bin/perl/perl/t/op/dbm.t
index 23d4d98c9412..f5bd08e15690 100755
--- a/gnu/usr.bin/perl/perl/t/op/dbm.t
+++ b/gnu/usr.bin/perl/perl/t/op/dbm.t
@@ -1,6 +1,6 @@
#!./perl
-# $RCSfile: dbm.t,v $$Revision: 1.1.1.1 $$Date: 1993/08/23 21:30:02 $
+# $RCSfile: dbm.t,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:41 $
if (!-r '/usr/include/dbm.h' && !-r '/usr/include/ndbm.h'
&& !-r '/usr/include/rpcsvc/dbm.h') {
diff --git a/gnu/usr.bin/perl/perl/t/op/delete.t b/gnu/usr.bin/perl/perl/t/op/delete.t
index e4e1fea10658..4ebeb5e6f275 100755
--- a/gnu/usr.bin/perl/perl/t/op/delete.t
+++ b/gnu/usr.bin/perl/perl/t/op/delete.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/delete.t,v 1.1.1.1 1993/08/23 21:30:03 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/delete.t,v 1.1.1.1 1994/09/10 06:27:41 gclarkii Exp $
print "1..6\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/do.t b/gnu/usr.bin/perl/perl/t/op/do.t
index 370012c129b1..247925b0cbdb 100755
--- a/gnu/usr.bin/perl/perl/t/op/do.t
+++ b/gnu/usr.bin/perl/perl/t/op/do.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/do.t,v 1.1.1.1 1993/08/23 21:30:03 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/do.t,v 1.1.1.1 1994/09/10 06:27:41 gclarkii Exp $
sub foo1
{
diff --git a/gnu/usr.bin/perl/perl/t/op/each.t b/gnu/usr.bin/perl/perl/t/op/each.t
index 532d1b01f3f4..578638fd5e37 100755
--- a/gnu/usr.bin/perl/perl/t/op/each.t
+++ b/gnu/usr.bin/perl/perl/t/op/each.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/each.t,v 1.1.1.1 1993/08/23 21:30:03 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/each.t,v 1.1.1.1 1994/09/10 06:27:42 gclarkii Exp $
print "1..3\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/eval.t b/gnu/usr.bin/perl/perl/t/op/eval.t
index b21b44d8354c..bb3bf1297a22 100755
--- a/gnu/usr.bin/perl/perl/t/op/eval.t
+++ b/gnu/usr.bin/perl/perl/t/op/eval.t
@@ -1,6 +1,6 @@
#!./perl
-# $RCSfile: eval.t,v $$Revision: 1.1.1.1 $$Date: 1993/08/23 21:30:02 $
+# $RCSfile: eval.t,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:42 $
print "1..16\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/exec.t b/gnu/usr.bin/perl/perl/t/op/exec.t
index 69909f740790..5fb9f43157c7 100755
--- a/gnu/usr.bin/perl/perl/t/op/exec.t
+++ b/gnu/usr.bin/perl/perl/t/op/exec.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/exec.t,v 1.1.1.1 1993/08/23 21:30:03 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/exec.t,v 1.1.1.1 1994/09/10 06:27:42 gclarkii Exp $
$| = 1; # flush stdout
print "1..8\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/exp.t b/gnu/usr.bin/perl/perl/t/op/exp.t
index 2195e54067d6..26b1ee671aa6 100755
--- a/gnu/usr.bin/perl/perl/t/op/exp.t
+++ b/gnu/usr.bin/perl/perl/t/op/exp.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/exp.t,v 1.1.1.1 1993/08/23 21:30:03 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/exp.t,v 1.1.1.1 1994/09/10 06:27:42 gclarkii Exp $
print "1..6\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/flip.t b/gnu/usr.bin/perl/perl/t/op/flip.t
index 74ba5085ac5f..a38a60fbf914 100755
--- a/gnu/usr.bin/perl/perl/t/op/flip.t
+++ b/gnu/usr.bin/perl/perl/t/op/flip.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/flip.t,v 1.1.1.1 1993/08/23 21:30:04 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/flip.t,v 1.1.1.1 1994/09/10 06:27:42 gclarkii Exp $
print "1..8\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/fork.t b/gnu/usr.bin/perl/perl/t/op/fork.t
index 10b54a2a2c5b..0024a33544d0 100755
--- a/gnu/usr.bin/perl/perl/t/op/fork.t
+++ b/gnu/usr.bin/perl/perl/t/op/fork.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/fork.t,v 1.1.1.1 1993/08/23 21:30:04 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/fork.t,v 1.1.1.1 1994/09/10 06:27:42 gclarkii Exp $
$| = 1;
print "1..2\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/glob.t b/gnu/usr.bin/perl/perl/t/op/glob.t
index 68b0844cad74..e467249ca4cf 100755
--- a/gnu/usr.bin/perl/perl/t/op/glob.t
+++ b/gnu/usr.bin/perl/perl/t/op/glob.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/glob.t,v 1.1.1.1 1993/08/23 21:30:04 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/glob.t,v 1.1.1.1 1994/09/10 06:27:42 gclarkii Exp $
print "1..4\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/goto.t b/gnu/usr.bin/perl/perl/t/op/goto.t
index 44ef343201e4..8bd9ace214bb 100755
--- a/gnu/usr.bin/perl/perl/t/op/goto.t
+++ b/gnu/usr.bin/perl/perl/t/op/goto.t
@@ -1,6 +1,6 @@
#!./perl
-# $RCSfile: goto.t,v $$Revision: 1.1.1.1 $$Date: 1993/08/23 21:30:03 $
+# $RCSfile: goto.t,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:42 $
print "1..3\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/index.t b/gnu/usr.bin/perl/perl/t/op/index.t
index 769314b5e37f..a663ec36ad33 100755
--- a/gnu/usr.bin/perl/perl/t/op/index.t
+++ b/gnu/usr.bin/perl/perl/t/op/index.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/index.t,v 1.1.1.1 1993/08/23 21:30:01 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/index.t,v 1.1.1.1 1994/09/10 06:27:42 gclarkii Exp $
print "1..20\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/int.t b/gnu/usr.bin/perl/perl/t/op/int.t
index 09434b8675a6..1a5a2a023fdb 100755
--- a/gnu/usr.bin/perl/perl/t/op/int.t
+++ b/gnu/usr.bin/perl/perl/t/op/int.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/int.t,v 1.1.1.1 1993/08/23 21:30:04 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/int.t,v 1.1.1.1 1994/09/10 06:27:42 gclarkii Exp $
print "1..4\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/join.t b/gnu/usr.bin/perl/perl/t/op/join.t
index a6678e979011..d79b341a1345 100755
--- a/gnu/usr.bin/perl/perl/t/op/join.t
+++ b/gnu/usr.bin/perl/perl/t/op/join.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/join.t,v 1.1.1.1 1993/08/23 21:30:02 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/join.t,v 1.1.1.1 1994/09/10 06:27:42 gclarkii Exp $
print "1..3\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/list.t b/gnu/usr.bin/perl/perl/t/op/list.t
index 52b2347bfd30..850709da569c 100755
--- a/gnu/usr.bin/perl/perl/t/op/list.t
+++ b/gnu/usr.bin/perl/perl/t/op/list.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/list.t,v 1.1.1.1 1993/08/23 21:30:02 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/list.t,v 1.1.1.1 1994/09/10 06:27:42 gclarkii Exp $
print "1..27\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/local.t b/gnu/usr.bin/perl/perl/t/op/local.t
index 67396e7cddeb..a962f44533c4 100755
--- a/gnu/usr.bin/perl/perl/t/op/local.t
+++ b/gnu/usr.bin/perl/perl/t/op/local.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/local.t,v 1.1.1.1 1993/08/23 21:30:03 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/local.t,v 1.1.1.1 1994/09/10 06:27:42 gclarkii Exp $
print "1..20\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/magic.t b/gnu/usr.bin/perl/perl/t/op/magic.t
index 1f47a9936ace..e3ae1045a10a 100755
--- a/gnu/usr.bin/perl/perl/t/op/magic.t
+++ b/gnu/usr.bin/perl/perl/t/op/magic.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/magic.t,v 1.1.1.1 1993/08/23 21:30:03 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/magic.t,v 1.1.1.1 1994/09/10 06:27:42 gclarkii Exp $
$| = 1; # command buffering
diff --git a/gnu/usr.bin/perl/perl/t/op/mkdir.t b/gnu/usr.bin/perl/perl/t/op/mkdir.t
index 0290ed4e5bbc..17660b378ef6 100755
--- a/gnu/usr.bin/perl/perl/t/op/mkdir.t
+++ b/gnu/usr.bin/perl/perl/t/op/mkdir.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/mkdir.t,v 1.1.1.1 1993/08/23 21:30:04 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/mkdir.t,v 1.1.1.1 1994/09/10 06:27:43 gclarkii Exp $
print "1..7\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/oct.t b/gnu/usr.bin/perl/perl/t/op/oct.t
index 9322cf0e73e1..f26ddbe8d984 100755
--- a/gnu/usr.bin/perl/perl/t/op/oct.t
+++ b/gnu/usr.bin/perl/perl/t/op/oct.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/oct.t,v 1.1.1.1 1993/08/23 21:30:04 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/oct.t,v 1.1.1.1 1994/09/10 06:27:43 gclarkii Exp $
print "1..3\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/ord.t b/gnu/usr.bin/perl/perl/t/op/ord.t
index 9d319882d4fe..e766c85bfbc9 100755
--- a/gnu/usr.bin/perl/perl/t/op/ord.t
+++ b/gnu/usr.bin/perl/perl/t/op/ord.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/ord.t,v 1.1.1.1 1993/08/23 21:30:04 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/ord.t,v 1.1.1.1 1994/09/10 06:27:43 gclarkii Exp $
print "1..2\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/pack.t b/gnu/usr.bin/perl/perl/t/op/pack.t
index 1dfaddf370ef..90faade78df6 100755
--- a/gnu/usr.bin/perl/perl/t/op/pack.t
+++ b/gnu/usr.bin/perl/perl/t/op/pack.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/pack.t,v 1.1.1.1 1993/08/23 21:30:03 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/pack.t,v 1.1.1.1 1994/09/10 06:27:43 gclarkii Exp $
print "1..3\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/pat.t b/gnu/usr.bin/perl/perl/t/op/pat.t
index ce9f35c6ee66..c6d6a50f8632 100755
--- a/gnu/usr.bin/perl/perl/t/op/pat.t
+++ b/gnu/usr.bin/perl/perl/t/op/pat.t
@@ -1,6 +1,6 @@
#!./perl
-# $RCSfile: pat.t,v $$Revision: 1.1.1.1 $$Date: 1993/08/23 21:30:01 $
+# $RCSfile: pat.t,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:43 $
print "1..51\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/push.t b/gnu/usr.bin/perl/perl/t/op/push.t
index 3d738acfbda3..105f07f1b945 100755
--- a/gnu/usr.bin/perl/perl/t/op/push.t
+++ b/gnu/usr.bin/perl/perl/t/op/push.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/push.t,v 1.1.1.1 1993/08/23 21:30:03 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/push.t,v 1.1.1.1 1994/09/10 06:27:43 gclarkii Exp $
@tests = split(/\n/, <<EOF);
0 3, 0 1 2, 3 4 5 6 7
diff --git a/gnu/usr.bin/perl/perl/t/op/range.t b/gnu/usr.bin/perl/perl/t/op/range.t
index 6214f9527b99..e40e436df130 100755
--- a/gnu/usr.bin/perl/perl/t/op/range.t
+++ b/gnu/usr.bin/perl/perl/t/op/range.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/range.t,v 1.1.1.1 1993/08/23 21:30:03 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/range.t,v 1.1.1.1 1994/09/10 06:27:43 gclarkii Exp $
print "1..8\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/read.t b/gnu/usr.bin/perl/perl/t/op/read.t
index 4151e5c6a674..471a2a85a46c 100755
--- a/gnu/usr.bin/perl/perl/t/op/read.t
+++ b/gnu/usr.bin/perl/perl/t/op/read.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/read.t,v 1.1.1.1 1993/08/23 21:30:04 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/read.t,v 1.1.1.1 1994/09/10 06:27:43 gclarkii Exp $
print "1..4\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/regexp.t b/gnu/usr.bin/perl/perl/t/op/regexp.t
index 58f6666e6949..3b5ea3521d63 100755
--- a/gnu/usr.bin/perl/perl/t/op/regexp.t
+++ b/gnu/usr.bin/perl/perl/t/op/regexp.t
@@ -1,6 +1,6 @@
#!./perl
-# $RCSfile: regexp.t,v $$Revision: 1.1.1.1 $$Date: 1993/08/23 21:30:03 $
+# $RCSfile: regexp.t,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:43 $
open(TESTS,'op/re_tests') || open(TESTS,'t/op/re_tests')
|| die "Can't open re_tests";
diff --git a/gnu/usr.bin/perl/perl/t/op/repeat.t b/gnu/usr.bin/perl/perl/t/op/repeat.t
index 68c61fc6a05e..c06aa00b71c1 100755
--- a/gnu/usr.bin/perl/perl/t/op/repeat.t
+++ b/gnu/usr.bin/perl/perl/t/op/repeat.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/repeat.t,v 1.1.1.1 1993/08/23 21:30:02 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/repeat.t,v 1.1.1.1 1994/09/10 06:27:43 gclarkii Exp $
print "1..19\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/s.t b/gnu/usr.bin/perl/perl/t/op/s.t
index 59300209cd39..3a8a3ded864d 100755
--- a/gnu/usr.bin/perl/perl/t/op/s.t
+++ b/gnu/usr.bin/perl/perl/t/op/s.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/s.t,v 1.1.1.1 1993/08/23 21:30:01 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/s.t,v 1.1.1.1 1994/09/10 06:27:43 gclarkii Exp $
print "1..51\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/sleep.t b/gnu/usr.bin/perl/perl/t/op/sleep.t
index 81113712d343..5ae30739672c 100755
--- a/gnu/usr.bin/perl/perl/t/op/sleep.t
+++ b/gnu/usr.bin/perl/perl/t/op/sleep.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/sleep.t,v 1.1.1.1 1993/08/23 21:30:04 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/sleep.t,v 1.1.1.1 1994/09/10 06:27:45 gclarkii Exp $
print "1..1\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/sort.t b/gnu/usr.bin/perl/perl/t/op/sort.t
index 4692ee4422fb..10a7e375ee16 100755
--- a/gnu/usr.bin/perl/perl/t/op/sort.t
+++ b/gnu/usr.bin/perl/perl/t/op/sort.t
@@ -1,6 +1,6 @@
#!./perl
-# $RCSfile: sort.t,v $$Revision: 1.1.1.1 $$Date: 1993/08/23 21:30:02 $
+# $RCSfile: sort.t,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:46 $
print "1..10\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/split.t b/gnu/usr.bin/perl/perl/t/op/split.t
index 63bf3c7c76da..89834b39aef9 100755
--- a/gnu/usr.bin/perl/perl/t/op/split.t
+++ b/gnu/usr.bin/perl/perl/t/op/split.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/split.t,v 1.1.1.1 1993/08/23 21:30:02 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/split.t,v 1.1.1.1 1994/09/10 06:27:46 gclarkii Exp $
print "1..12\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/sprintf.t b/gnu/usr.bin/perl/perl/t/op/sprintf.t
index cdb4af5a2244..d2760227f0ec 100755
--- a/gnu/usr.bin/perl/perl/t/op/sprintf.t
+++ b/gnu/usr.bin/perl/perl/t/op/sprintf.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/sprintf.t,v 1.1.1.1 1993/08/23 21:30:01 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/sprintf.t,v 1.1.1.1 1994/09/10 06:27:46 gclarkii Exp $
print "1..1\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/stat.t b/gnu/usr.bin/perl/perl/t/op/stat.t
index a5db14fd124e..2cfff0170950 100755
--- a/gnu/usr.bin/perl/perl/t/op/stat.t
+++ b/gnu/usr.bin/perl/perl/t/op/stat.t
@@ -1,6 +1,6 @@
#!./perl
-# $RCSfile: stat.t,v $$Revision: 1.1.1.1 $$Date: 1993/08/23 21:30:01 $
+# $RCSfile: stat.t,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:46 $
print "1..56\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/study.t b/gnu/usr.bin/perl/perl/t/op/study.t
index a0fdc4cd273c..7f7ba3576e73 100755
--- a/gnu/usr.bin/perl/perl/t/op/study.t
+++ b/gnu/usr.bin/perl/perl/t/op/study.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/study.t,v 1.1.1.1 1993/08/23 21:30:02 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/study.t,v 1.1.1.1 1994/09/10 06:27:46 gclarkii Exp $
print "1..24\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/substr.t b/gnu/usr.bin/perl/perl/t/op/substr.t
index 09f312f83762..1de2da75ba85 100755
--- a/gnu/usr.bin/perl/perl/t/op/substr.t
+++ b/gnu/usr.bin/perl/perl/t/op/substr.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/substr.t,v 1.1.1.1 1993/08/23 21:30:01 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/substr.t,v 1.1.1.1 1994/09/10 06:27:46 gclarkii Exp $
print "1..22\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/time.t b/gnu/usr.bin/perl/perl/t/op/time.t
index f8e5545f7b41..e48de9057baa 100755
--- a/gnu/usr.bin/perl/perl/t/op/time.t
+++ b/gnu/usr.bin/perl/perl/t/op/time.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/time.t,v 1.1.1.1 1993/08/23 21:30:03 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/time.t,v 1.1.1.1 1994/09/10 06:27:46 gclarkii Exp $
print "1..5\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/undef.t b/gnu/usr.bin/perl/perl/t/op/undef.t
index b4827db0c547..0d263090a380 100755
--- a/gnu/usr.bin/perl/perl/t/op/undef.t
+++ b/gnu/usr.bin/perl/perl/t/op/undef.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/undef.t,v 1.1.1.1 1993/08/23 21:30:02 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/undef.t,v 1.1.1.1 1994/09/10 06:27:46 gclarkii Exp $
print "1..21\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/unshift.t b/gnu/usr.bin/perl/perl/t/op/unshift.t
index 53d73883822b..fcdf9e8070ae 100755
--- a/gnu/usr.bin/perl/perl/t/op/unshift.t
+++ b/gnu/usr.bin/perl/perl/t/op/unshift.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/unshift.t,v 1.1.1.1 1993/08/23 21:30:02 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/unshift.t,v 1.1.1.1 1994/09/10 06:27:46 gclarkii Exp $
print "1..2\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/vec.t b/gnu/usr.bin/perl/perl/t/op/vec.t
index 51344769b6cf..94113edd66ce 100755
--- a/gnu/usr.bin/perl/perl/t/op/vec.t
+++ b/gnu/usr.bin/perl/perl/t/op/vec.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/vec.t,v 1.1.1.1 1993/08/23 21:30:03 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/vec.t,v 1.1.1.1 1994/09/10 06:27:46 gclarkii Exp $
print "1..13\n";
diff --git a/gnu/usr.bin/perl/perl/t/op/write.t b/gnu/usr.bin/perl/perl/t/op/write.t
index d17f1951bb76..f1b7fdd0d862 100755
--- a/gnu/usr.bin/perl/perl/t/op/write.t
+++ b/gnu/usr.bin/perl/perl/t/op/write.t
@@ -1,6 +1,6 @@
#!./perl
-# $Header: /home/cvs/386BSD/ports/lang/perl/t/op/write.t,v 1.1.1.1 1993/08/23 21:30:02 nate Exp $
+# $Header: /home/ncvs/src/gnu/usr.bin/perl/perl/t/op/write.t,v 1.1.1.1 1994/09/10 06:27:46 gclarkii Exp $
print "1..3\n";
diff --git a/gnu/usr.bin/perl/perl/tdoio.c b/gnu/usr.bin/perl/perl/tdoio.c
index 1cd6269e8c70..87e88ff17a7d 100644
--- a/gnu/usr.bin/perl/perl/tdoio.c
+++ b/gnu/usr.bin/perl/perl/tdoio.c
@@ -1,4 +1,4 @@
-/* $RCSfile: tdoio.c,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:36 $
+/* $RCSfile: tdoio.c,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:23 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: tdoio.c,v $
+ * Revision 1.2 1995/05/30 05:03:23 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:36 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/perl/toke.c b/gnu/usr.bin/perl/perl/toke.c
index bf2e1163f27b..73a93cac2437 100644
--- a/gnu/usr.bin/perl/perl/toke.c
+++ b/gnu/usr.bin/perl/perl/toke.c
@@ -1,4 +1,4 @@
-/* $RCSfile: toke.c,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:34 $
+/* $RCSfile: toke.c,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:26 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: toke.c,v $
+ * Revision 1.2 1995/05/30 05:03:26 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:34 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/perl/usersub.c b/gnu/usr.bin/perl/perl/usersub.c
index 8c7cb65c47f6..1066d9562f43 100644
--- a/gnu/usr.bin/perl/perl/usersub.c
+++ b/gnu/usr.bin/perl/perl/usersub.c
@@ -1,10 +1,13 @@
-/* $RCSfile: usersub.c,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:34 $
+/* $RCSfile: usersub.c,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:27 $
*
* This file contains stubs for routines that the user may define to
* set up glue routines for C libraries or to decrypt encrypted scripts
* for execution.
*
* $Log: usersub.c,v $
+ * Revision 1.2 1995/05/30 05:03:27 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:34 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/perl/util.c b/gnu/usr.bin/perl/perl/util.c
index fd4b43602934..7066d2262e16 100644
--- a/gnu/usr.bin/perl/perl/util.c
+++ b/gnu/usr.bin/perl/perl/util.c
@@ -1,4 +1,4 @@
-/* $RCSfile: util.c,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:34 $
+/* $RCSfile: util.c,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:28 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: util.c,v $
+ * Revision 1.2 1995/05/30 05:03:28 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:34 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/perl/util.h b/gnu/usr.bin/perl/perl/util.h
index 003e44386010..8238025d2043 100644
--- a/gnu/usr.bin/perl/perl/util.h
+++ b/gnu/usr.bin/perl/perl/util.h
@@ -1,4 +1,4 @@
-/* $RCSfile: util.h,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:35 $
+/* $RCSfile: util.h,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:29 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: util.h,v $
+ * Revision 1.2 1995/05/30 05:03:29 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:35 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/usub/curses.mus b/gnu/usr.bin/perl/usub/curses.mus
index 03269c3415e9..07d9efad4813 100644
--- a/gnu/usr.bin/perl/usub/curses.mus
+++ b/gnu/usr.bin/perl/usub/curses.mus
@@ -1,6 +1,9 @@
-/* $RCSfile: curses.mus,v $$Revision: 1.1 $$Date: 1995/03/24 04:33:49 $
+/* $RCSfile: curses.mus,v $$Revision: 1.2 $$Date: 1995/04/02 13:11:14 $
*
* $Log: curses.mus,v $
+# Revision 1.2 1995/04/02 13:11:14 bde
+# Fix compiler warnings: don't declare enum types as static.
+#
# Revision 1.1 1995/03/24 04:33:49 jkh
# Bring back perl/usub as usub/, this time containing an updated curseperl
# which is also installed by default (the reason for which should also be
diff --git a/gnu/usr.bin/perl/usub/usersub.c b/gnu/usr.bin/perl/usub/usersub.c
index 26fbcbccf62e..33d77c9c78e7 100644
--- a/gnu/usr.bin/perl/usub/usersub.c
+++ b/gnu/usr.bin/perl/usub/usersub.c
@@ -1,6 +1,9 @@
-/* $RCSfile: usersub.c,v $$Revision: 1.1 $$Date: 1995/03/24 04:33:54 $
+/* $RCSfile: usersub.c,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:33 $
*
* $Log: usersub.c,v $
+ * Revision 1.2 1995/05/30 05:03:33 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1 1995/03/24 04:33:54 jkh
* Bring back perl/usub as usub/, this time containing an updated curseperl
* which is also installed by default (the reason for which should also be
diff --git a/gnu/usr.bin/perl/x2p/EXTERN.h b/gnu/usr.bin/perl/x2p/EXTERN.h
index b0bb6d0162fb..1f6daf61a8d7 100644
--- a/gnu/usr.bin/perl/x2p/EXTERN.h
+++ b/gnu/usr.bin/perl/x2p/EXTERN.h
@@ -1,4 +1,4 @@
-/* $RCSfile: EXTERN.h,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:54 $
+/* $RCSfile: EXTERN.h,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:35 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: EXTERN.h,v $
+ * Revision 1.2 1995/05/30 05:03:35 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:54 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/x2p/INTERN.h b/gnu/usr.bin/perl/x2p/INTERN.h
index d8a8a3e2a349..f6f80c856dea 100644
--- a/gnu/usr.bin/perl/x2p/INTERN.h
+++ b/gnu/usr.bin/perl/x2p/INTERN.h
@@ -1,4 +1,4 @@
-/* $RCSfile: INTERN.h,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:54 $
+/* $RCSfile: INTERN.h,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:36 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: INTERN.h,v $
+ * Revision 1.2 1995/05/30 05:03:36 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:54 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/x2p/a2p.1 b/gnu/usr.bin/perl/x2p/a2p.1
index 58d8c077fafd..43e8574aa8af 100644
--- a/gnu/usr.bin/perl/x2p/a2p.1
+++ b/gnu/usr.bin/perl/x2p/a2p.1
@@ -1,7 +1,10 @@
.rn '' }`
-''' $Header: /home/cvs/386BSD/ports/lang/perl/x2p/a2p.man,v 1.1.1.1 1993/08/23 21:30:10 nate Exp $
+''' $Header: /home/ncvs/src/gnu/usr.bin/perl/x2p/a2p.1,v 1.1.1.1 1994/09/10 06:27:55 gclarkii Exp $
'''
-''' $Log: a2p.man,v $
+''' $Log: a2p.1,v $
+.\" Revision 1.1.1.1 1994/09/10 06:27:55 gclarkii
+.\" Initial import of Perl 4.046 bmaked
+.\"
.\" Revision 1.1.1.1 1993/08/23 21:30:10 nate
.\" PERL!
.\"
diff --git a/gnu/usr.bin/perl/x2p/a2p.h b/gnu/usr.bin/perl/x2p/a2p.h
index cc59fb7ddf8e..64416e88c90d 100644
--- a/gnu/usr.bin/perl/x2p/a2p.h
+++ b/gnu/usr.bin/perl/x2p/a2p.h
@@ -1,4 +1,4 @@
-/* $RCSfile: a2p.h,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:53 $
+/* $RCSfile: a2p.h,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:37 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: a2p.h,v $
+ * Revision 1.2 1995/05/30 05:03:37 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:53 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/x2p/a2p.y b/gnu/usr.bin/perl/x2p/a2p.y
index bc86632dd417..372834b9a95f 100644
--- a/gnu/usr.bin/perl/x2p/a2p.y
+++ b/gnu/usr.bin/perl/x2p/a2p.y
@@ -1,5 +1,5 @@
%{
-/* $RCSfile: a2p.y,v $$Revision: 1.1.1.1 $$Date: 1993/08/23 21:30:09 $
+/* $RCSfile: a2p.y,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:53 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -7,6 +7,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: a2p.y,v $
+ * Revision 1.1.1.1 1994/09/10 06:27:53 gclarkii
+ * Initial import of Perl 4.046 bmaked
+ *
* Revision 1.1.1.1 1993/08/23 21:30:09 nate
* PERL!
*
diff --git a/gnu/usr.bin/perl/x2p/a2py.c b/gnu/usr.bin/perl/x2p/a2py.c
index fcc196b640f2..59d746257f79 100644
--- a/gnu/usr.bin/perl/x2p/a2py.c
+++ b/gnu/usr.bin/perl/x2p/a2py.c
@@ -1,4 +1,4 @@
-/* $RCSfile: a2py.c,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:53 $
+/* $RCSfile: a2py.c,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:38 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: a2py.c,v $
+ * Revision 1.2 1995/05/30 05:03:38 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:53 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/x2p/handy.h b/gnu/usr.bin/perl/x2p/handy.h
index 1db94d4bfae2..ae91184530da 100644
--- a/gnu/usr.bin/perl/x2p/handy.h
+++ b/gnu/usr.bin/perl/x2p/handy.h
@@ -1,4 +1,4 @@
-/* $RCSfile: handy.h,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:54 $
+/* $RCSfile: handy.h,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:40 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: handy.h,v $
+ * Revision 1.2 1995/05/30 05:03:40 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:54 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/x2p/hash.c b/gnu/usr.bin/perl/x2p/hash.c
index d1ae8ac44a56..fc66f2113d28 100644
--- a/gnu/usr.bin/perl/x2p/hash.c
+++ b/gnu/usr.bin/perl/x2p/hash.c
@@ -1,4 +1,4 @@
-/* $RCSfile: hash.c,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:54 $
+/* $RCSfile: hash.c,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:40 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: hash.c,v $
+ * Revision 1.2 1995/05/30 05:03:40 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:54 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/x2p/hash.h b/gnu/usr.bin/perl/x2p/hash.h
index 452321cd557c..a180cc23f4cb 100644
--- a/gnu/usr.bin/perl/x2p/hash.h
+++ b/gnu/usr.bin/perl/x2p/hash.h
@@ -1,4 +1,4 @@
-/* $RCSfile: hash.h,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:54 $
+/* $RCSfile: hash.h,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:42 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: hash.h,v $
+ * Revision 1.2 1995/05/30 05:03:42 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:54 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/x2p/malloc.c b/gnu/usr.bin/perl/x2p/malloc.c
index e7fff7f25c0f..ab393db5a4ce 100644
--- a/gnu/usr.bin/perl/x2p/malloc.c
+++ b/gnu/usr.bin/perl/x2p/malloc.c
@@ -1,6 +1,9 @@
-/* $RCSfile: malloc.c,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:54 $
+/* $RCSfile: malloc.c,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:43 $
*
* $Log: malloc.c,v $
+ * Revision 1.2 1995/05/30 05:03:43 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:54 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/x2p/s2p b/gnu/usr.bin/perl/x2p/s2p
index c110e5ef5720..1f65c55c6359 100755
--- a/gnu/usr.bin/perl/x2p/s2p
+++ b/gnu/usr.bin/perl/x2p/s2p
@@ -5,9 +5,20 @@ eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
$bin = '/usr/bin';
-# $RCSfile: s2p,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:54 $
+# $RCSfile: s2p,v $$Revision: 1.2 $$Date: 1994/10/29 07:14:55 $
#
# $Log: s2p,v $
+# Revision 1.2 1994/10/29 07:14:55 pst
+# Test test test! sigh!
+#
+# Perl's scripts are still trying to execute perl out of /usr/gnu/bin/perl.
+#
+# The hack Larry was using for h2ph.1 doesn't work with the new macros, so
+# make it a real man page.
+#
+# Also, we weren't building the .ph files, add them as an afterinstall rule
+# in the x2p subdirectory.
+#
# Revision 1.1.1.1 1994/09/10 06:27:54 gclarkii
# Initial import of Perl 4.046 bmaked
#
diff --git a/gnu/usr.bin/perl/x2p/s2p.1 b/gnu/usr.bin/perl/x2p/s2p.1
index ab74717833fc..dc09510d3d94 100644
--- a/gnu/usr.bin/perl/x2p/s2p.1
+++ b/gnu/usr.bin/perl/x2p/s2p.1
@@ -1,7 +1,10 @@
.rn '' }`
-''' $RCSfile: s2p.man,v $$Revision: 1.1.1.1 $$Date: 1993/08/23 21:30:10 $
+''' $RCSfile: s2p.1,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:53 $
'''
-''' $Log: s2p.man,v $
+''' $Log: s2p.1,v $
+.\" Revision 1.1.1.1 1994/09/10 06:27:53 gclarkii
+.\" Initial import of Perl 4.046 bmaked
+.\"
.\" Revision 1.1.1.1 1993/08/23 21:30:10 nate
.\" PERL!
.\"
diff --git a/gnu/usr.bin/perl/x2p/str.c b/gnu/usr.bin/perl/x2p/str.c
index 4e078a6600fe..2a8cac3f8921 100644
--- a/gnu/usr.bin/perl/x2p/str.c
+++ b/gnu/usr.bin/perl/x2p/str.c
@@ -1,4 +1,4 @@
-/* $RCSfile: str.c,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:54 $
+/* $RCSfile: str.c,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:44 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: str.c,v $
+ * Revision 1.2 1995/05/30 05:03:44 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:54 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/x2p/str.h b/gnu/usr.bin/perl/x2p/str.h
index 642e18e66400..5bca1fba6468 100644
--- a/gnu/usr.bin/perl/x2p/str.h
+++ b/gnu/usr.bin/perl/x2p/str.h
@@ -1,4 +1,4 @@
-/* $RCSfile: str.h,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:55 $
+/* $RCSfile: str.h,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:45 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: str.h,v $
+ * Revision 1.2 1995/05/30 05:03:45 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:55 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/x2p/util.c b/gnu/usr.bin/perl/x2p/util.c
index 70a6cd7a647f..13a20e8fc84f 100644
--- a/gnu/usr.bin/perl/x2p/util.c
+++ b/gnu/usr.bin/perl/x2p/util.c
@@ -1,4 +1,4 @@
-/* $RCSfile: util.c,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:55 $
+/* $RCSfile: util.c,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:45 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: util.c,v $
+ * Revision 1.2 1995/05/30 05:03:45 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:55 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/x2p/util.h b/gnu/usr.bin/perl/x2p/util.h
index ad94422bf32a..a30f72dd2997 100644
--- a/gnu/usr.bin/perl/x2p/util.h
+++ b/gnu/usr.bin/perl/x2p/util.h
@@ -1,4 +1,4 @@
-/* $RCSfile: util.h,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:55 $
+/* $RCSfile: util.h,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:46 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: util.h,v $
+ * Revision 1.2 1995/05/30 05:03:46 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:55 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/perl/x2p/walk.c b/gnu/usr.bin/perl/x2p/walk.c
index c7e5e4445bf5..e8f25e398637 100644
--- a/gnu/usr.bin/perl/x2p/walk.c
+++ b/gnu/usr.bin/perl/x2p/walk.c
@@ -1,4 +1,4 @@
-/* $RCSfile: walk.c,v $$Revision: 1.1.1.1 $$Date: 1994/09/10 06:27:55 $
+/* $RCSfile: walk.c,v $$Revision: 1.2 $$Date: 1995/05/30 05:03:47 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: walk.c,v $
+ * Revision 1.2 1995/05/30 05:03:47 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/10 06:27:55 gclarkii
* Initial import of Perl 4.046 bmaked
*
diff --git a/gnu/usr.bin/rcs/ci/ci.1 b/gnu/usr.bin/rcs/ci/ci.1
index 5736dc95a001..4b89605edb8e 100644
--- a/gnu/usr.bin/rcs/ci/ci.1
+++ b/gnu/usr.bin/rcs/ci/ci.1
@@ -2,7 +2,7 @@
.ds Rv \\$3
.ds Dt \\$4
..
-.Id $Id: ci.1,v 5.9 1991/10/07 17:32:46 eggert Exp $
+.Id $Id: ci.1,v 1.1.1.1 1993/06/18 04:22:11 jkh Exp $
.ds r \&\s-1RCS\s0
.if n .ds - \%--
.if t .ds - \(em
diff --git a/gnu/usr.bin/rcs/ci/ci.c b/gnu/usr.bin/rcs/ci/ci.c
index 3d2e6f770d2e..84eb9b1d1e4e 100644
--- a/gnu/usr.bin/rcs/ci/ci.c
+++ b/gnu/usr.bin/rcs/ci/ci.c
@@ -35,6 +35,9 @@ Report problems and direct all questions to:
/* $Log: ci.c,v $
+ * Revision 1.2 1995/05/30 05:03:54 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1993/06/18 04:22:10 jkh
* Updated GNU utilities
*
@@ -241,7 +244,7 @@ static struct hshentry newdelta; /* new delta to be inserted */
static struct stat workstat;
static struct Symrev *assoclst, *lastassoc;
-mainProg(ciId, "ci", "$Id: ci.c,v 1.1.1.1 1993/06/18 04:22:10 jkh Exp $")
+mainProg(ciId, "ci", "$Id: ci.c,v 1.2 1995/05/30 05:03:54 rgrimes Exp $")
{
static char const cmdusage[] =
"\nci usage: ci -{fklqru}[rev] -mmsg -{nN}name -sstate -t[textfile] -Vn file ...";
diff --git a/gnu/usr.bin/rcs/co/co.1 b/gnu/usr.bin/rcs/co/co.1
index 1fce152cf8f9..41d774348808 100644
--- a/gnu/usr.bin/rcs/co/co.1
+++ b/gnu/usr.bin/rcs/co/co.1
@@ -2,7 +2,7 @@
.ds Rv \\$3
.ds Dt \\$4
..
-.Id $Id: co.1,v 1.1.1.1 1993/06/18 04:22:11 jkh Exp $
+.Id $Id: co.1,v 1.2 1994/05/14 07:00:09 rgrimes Exp $
.ds g \&\s-1UTC\s0
.ds r \&\s-1RCS\s0
.if n .ds - \%--
diff --git a/gnu/usr.bin/rcs/co/co.c b/gnu/usr.bin/rcs/co/co.c
index 6a1579da6c00..bc01bd87f66b 100644
--- a/gnu/usr.bin/rcs/co/co.c
+++ b/gnu/usr.bin/rcs/co/co.c
@@ -34,10 +34,13 @@ Report problems and direct all questions to:
/* $Log: co.c,v $
+ * Revision 1.3 1995/05/30 05:03:58 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.2 1994/05/14 07:00:10 rgrimes
* Add new option -K from David Dawes that allows you to turn on and off
* specific keyword substitution during a rcs co command.
- * Add the new keyword FreeBSD that is IDENTICAL in operation to $Id$.
+ * Add the new keyword FreeBSD that is IDENTICAL in operation to $Id: co.c,v 1.3 1995/05/30 05:03:58 rgrimes Exp $.
*
* Revision 1.1.1.1 1993/06/18 04:22:11 jkh
* Updated GNU utilities
@@ -172,7 +175,7 @@ static struct hshentries *gendeltas; /* deltas to be generated */
static struct hshentry *targetdelta; /* final delta to be generated */
static struct stat workstat;
-mainProg(coId, "co", "$Id: co.c,v 1.2 1994/05/14 07:00:10 rgrimes Exp $")
+mainProg(coId, "co", "$Id: co.c,v 1.3 1995/05/30 05:03:58 rgrimes Exp $")
{
static char const cmdusage[] =
"\nco usage: co -{flpqru}[rev] -ddate -jjoinlist -sstate -w[login] -Vn file ...";
diff --git a/gnu/usr.bin/rcs/doc/rcs.ms b/gnu/usr.bin/rcs/doc/rcs.ms
index 7b3f80772699..a41ffb6c0342 100644
--- a/gnu/usr.bin/rcs/doc/rcs.ms
+++ b/gnu/usr.bin/rcs/doc/rcs.ms
@@ -27,7 +27,7 @@
.de Id
.ND \\$4
..
-.Id $Id: rcs.ms,v 5.2 1991/01/03 10:57:28 eggert Exp $
+.Id $Id: rcs.ms,v 1.1.1.1 1993/06/18 04:22:10 jkh Exp $
.RP
.TL
RCS\*-A System for Version Control
diff --git a/gnu/usr.bin/rcs/ident/ident.1 b/gnu/usr.bin/rcs/ident/ident.1
index 37c8eda202a3..cf94558a02d7 100644
--- a/gnu/usr.bin/rcs/ident/ident.1
+++ b/gnu/usr.bin/rcs/ident/ident.1
@@ -3,7 +3,7 @@
.ds Dt \\$4
.ds iD \\$3 \\$4 \\$5 \\$6 \\$7
..
-.Id $Id: ident.1,v 5.0 1990/08/22 09:09:36 eggert Exp $
+.Id $Id: ident.1,v 1.1.1.1 1993/06/18 04:22:12 jkh Exp $
.ds r \s-1RCS\s0
.if n .ds - \%--
.if t .ds - \(em
diff --git a/gnu/usr.bin/rcs/ident/ident.c b/gnu/usr.bin/rcs/ident/ident.c
index e3e723c0c24b..b9ee68d6cf07 100644
--- a/gnu/usr.bin/rcs/ident/ident.c
+++ b/gnu/usr.bin/rcs/ident/ident.c
@@ -29,6 +29,9 @@ Report problems and direct all questions to:
*/
/* $Log: ident.c,v $
+ * Revision 1.2 1995/05/30 05:04:00 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1993/06/18 04:22:11 jkh
* Updated GNU utilities
*
@@ -86,7 +89,7 @@ Report problems and direct all questions to:
static int match P((FILE*));
static void scanfile P((FILE*,char const*,int));
-mainProg(identId, "ident", "$Id: ident.c,v 1.1.1.1 1993/06/18 04:22:11 jkh Exp $")
+mainProg(identId, "ident", "$Id: ident.c,v 1.2 1995/05/30 05:04:00 rgrimes Exp $")
/* Ident searches the named files for all occurrences
* of the pattern $keyword:...$, where the keywords are
* Author, Date, Header, Id, Log, RCSfile, Revision, Source, and State.
diff --git a/gnu/usr.bin/rcs/lib/conf.h b/gnu/usr.bin/rcs/lib/conf.h
index b8f4abdc9962..9352a7058121 100644
--- a/gnu/usr.bin/rcs/lib/conf.h
+++ b/gnu/usr.bin/rcs/lib/conf.h
@@ -1,6 +1,6 @@
/* RCS compile-time configuration */
- /* $Id: conf.h,v 1.2 1994/08/05 22:33:44 wollman Exp $ */
+ /* $Id: conf.h,v 1.3 1994/08/09 15:15:04 jkh Exp $ */
/*
* This file is generated automatically.
diff --git a/gnu/usr.bin/rcs/lib/maketime.c b/gnu/usr.bin/rcs/lib/maketime.c
index b87d744b3e40..fe60b9b1496a 100644
--- a/gnu/usr.bin/rcs/lib/maketime.c
+++ b/gnu/usr.bin/rcs/lib/maketime.c
@@ -21,6 +21,9 @@
* (ARPANET: KLH @ SRI)
*/
/* $Log: maketime.c,v $
+ * Revision 1.2 1995/05/30 05:04:02 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1993/06/18 04:22:13 jkh
* Updated GNU utilities
*
@@ -74,7 +77,7 @@
#include "rcsbase.h"
-libId(maketId, "$Id: maketime.c,v 1.1.1.1 1993/06/18 04:22:13 jkh Exp $")
+libId(maketId, "$Id: maketime.c,v 1.2 1995/05/30 05:04:02 rgrimes Exp $")
static struct tm const *time2tm P((time_t));
diff --git a/gnu/usr.bin/rcs/lib/merger.c b/gnu/usr.bin/rcs/lib/merger.c
index 7162ffa58eb7..9b30f8ad083e 100644
--- a/gnu/usr.bin/rcs/lib/merger.c
+++ b/gnu/usr.bin/rcs/lib/merger.c
@@ -27,7 +27,7 @@ Report problems and direct all questions to:
#include "rcsbase.h"
-libId(mergerId, "$Id: merger.c,v 1.3 1991/08/20 23:05:00 eggert Exp $")
+libId(mergerId, "$Id: merger.c,v 1.1.1.1 1993/06/18 04:22:13 jkh Exp $")
static char const *
normalize_arg(s, b)
diff --git a/gnu/usr.bin/rcs/lib/partime.c b/gnu/usr.bin/rcs/lib/partime.c
index 6c2c2a1fd250..7ebb4dc788b2 100644
--- a/gnu/usr.bin/rcs/lib/partime.c
+++ b/gnu/usr.bin/rcs/lib/partime.c
@@ -21,6 +21,9 @@
*/
/* $Log: partime.c,v $
+ * Revision 1.2 1995/05/30 05:04:04 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1993/06/18 04:22:13 jkh
* Updated GNU utilities
*
@@ -65,7 +68,7 @@
#include "rcsbase.h"
-libId(partId, "$Id: partime.c,v 1.1.1.1 1993/06/18 04:22:13 jkh Exp $")
+libId(partId, "$Id: partime.c,v 1.2 1995/05/30 05:04:04 rgrimes Exp $")
#define given(v) (0 <= (v))
#define TMNULL (-1) /* Items not given are given this value */
diff --git a/gnu/usr.bin/rcs/lib/rcsbase.h b/gnu/usr.bin/rcs/lib/rcsbase.h
index 788ea5d6793c..81b5f3463577 100644
--- a/gnu/usr.bin/rcs/lib/rcsbase.h
+++ b/gnu/usr.bin/rcs/lib/rcsbase.h
@@ -2,7 +2,7 @@
/*
* RCS common definitions and data structures
*/
-#define RCSBASE "$Id: rcsbase.h,v 1.2 1994/05/14 07:00:20 rgrimes Exp $"
+#define RCSBASE "$Id: rcsbase.h,v 1.3 1995/05/30 05:04:05 rgrimes Exp $"
/* Copyright (C) 1982, 1988, 1989 Walter Tichy
Copyright 1990, 1991 by Paul Eggert
@@ -43,10 +43,13 @@ Report problems and direct all questions to:
/* $Log: rcsbase.h,v $
+ * Revision 1.3 1995/05/30 05:04:05 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.2 1994/05/14 07:00:20 rgrimes
* Add new option -K from David Dawes that allows you to turn on and off
* specific keyword substitution during a rcs co command.
- * Add the new keyword FreeBSD that is IDENTICAL in operation to $Id$.
+ * Add the new keyword FreeBSD that is IDENTICAL in operation to $Id: rcsbase.h,v 1.3 1995/05/30 05:04:05 rgrimes Exp $.
*
* Revision 1.1.1.1 1993/06/18 04:22:13 jkh
* Updated GNU utilities
diff --git a/gnu/usr.bin/rcs/lib/rcsedit.c b/gnu/usr.bin/rcs/lib/rcsedit.c
index 32ff7e29a6aa..08e203efd9e2 100644
--- a/gnu/usr.bin/rcs/lib/rcsedit.c
+++ b/gnu/usr.bin/rcs/lib/rcsedit.c
@@ -36,10 +36,13 @@ Report problems and direct all questions to:
/* $Log: rcsedit.c,v $
+ * Revision 1.3 1995/05/30 05:04:06 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.2 1994/05/14 07:00:22 rgrimes
* Add new option -K from David Dawes that allows you to turn on and off
* specific keyword substitution during a rcs co command.
- * Add the new keyword FreeBSD that is IDENTICAL in operation to $Id$.
+ * Add the new keyword FreeBSD that is IDENTICAL in operation to $Id: rcsedit.c,v 1.3 1995/05/30 05:04:06 rgrimes Exp $.
*
* Revision 1.1.1.1 1993/06/18 04:22:12 jkh
* Updated GNU utilities
@@ -162,7 +165,7 @@ Report problems and direct all questions to:
#include "rcsbase.h"
-libId(editId, "$Id: rcsedit.c,v 1.2 1994/05/14 07:00:22 rgrimes Exp $")
+libId(editId, "$Id: rcsedit.c,v 1.3 1995/05/30 05:04:06 rgrimes Exp $")
static void keyreplace P((enum markers,struct hshentry const*,FILE*));
diff --git a/gnu/usr.bin/rcs/lib/rcsfcmp.c b/gnu/usr.bin/rcs/lib/rcsfcmp.c
index d8bb555948a0..a653943b44af 100644
--- a/gnu/usr.bin/rcs/lib/rcsfcmp.c
+++ b/gnu/usr.bin/rcs/lib/rcsfcmp.c
@@ -38,6 +38,9 @@ Report problems and direct all questions to:
/* $Log: rcsfcmp.c,v $
+ * Revision 1.2 1995/05/30 05:04:08 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1993/06/18 04:22:13 jkh
* Updated GNU utilities
*
@@ -104,7 +107,7 @@ Report problems and direct all questions to:
#include "rcsbase.h"
-libId(fcmpId, "$Id: rcsfcmp.c,v 1.1.1.1 1993/06/18 04:22:13 jkh Exp $")
+libId(fcmpId, "$Id: rcsfcmp.c,v 1.2 1995/05/30 05:04:08 rgrimes Exp $")
static int
discardkeyval(c, f)
diff --git a/gnu/usr.bin/rcs/lib/rcsfnms.c b/gnu/usr.bin/rcs/lib/rcsfnms.c
index 93c96b9cade4..b2b7d3167f6d 100644
--- a/gnu/usr.bin/rcs/lib/rcsfnms.c
+++ b/gnu/usr.bin/rcs/lib/rcsfnms.c
@@ -38,6 +38,9 @@ Report problems and direct all questions to:
/* $Log: rcsfnms.c,v $
+ * Revision 1.2 1995/05/30 05:04:10 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1993/06/18 04:22:13 jkh
* Updated GNU utilities
*
@@ -143,7 +146,7 @@ Report problems and direct all questions to:
#include "rcsbase.h"
-libId(fnmsId, "$Id: rcsfnms.c,v 1.1.1.1 1993/06/18 04:22:13 jkh Exp $")
+libId(fnmsId, "$Id: rcsfnms.c,v 1.2 1995/05/30 05:04:10 rgrimes Exp $")
char const *RCSfilename;
char *workfilename;
diff --git a/gnu/usr.bin/rcs/lib/rcsgen.c b/gnu/usr.bin/rcs/lib/rcsgen.c
index dfb03c105b79..2968da21a52e 100644
--- a/gnu/usr.bin/rcs/lib/rcsgen.c
+++ b/gnu/usr.bin/rcs/lib/rcsgen.c
@@ -31,6 +31,9 @@ Report problems and direct all questions to:
/* $Log: rcsgen.c,v $
+ * Revision 1.2 1995/05/30 05:04:12 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1993/06/18 04:22:12 jkh
* Updated GNU utilities
*
@@ -125,7 +128,7 @@ Report problems and direct all questions to:
#include "rcsbase.h"
-libId(genId, "$Id: rcsgen.c,v 1.1.1.1 1993/06/18 04:22:12 jkh Exp $")
+libId(genId, "$Id: rcsgen.c,v 1.2 1995/05/30 05:04:12 rgrimes Exp $")
int interactiveflag; /* Should we act as if stdin is a tty? */
struct buf curlogbuf; /* buffer for current log message */
diff --git a/gnu/usr.bin/rcs/lib/rcskeep.c b/gnu/usr.bin/rcs/lib/rcskeep.c
index 232a616360de..a045d9c11861 100644
--- a/gnu/usr.bin/rcs/lib/rcskeep.c
+++ b/gnu/usr.bin/rcs/lib/rcskeep.c
@@ -36,6 +36,9 @@ Report problems and direct all questions to:
/* $Log: rcskeep.c,v $
+ * Revision 1.2 1995/05/30 05:04:13 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1993/06/18 04:22:13 jkh
* Updated GNU utilities
*
@@ -96,7 +99,7 @@ Report problems and direct all questions to:
#include "rcsbase.h"
-libId(keepId, "$Id: rcskeep.c,v 1.1.1.1 1993/06/18 04:22:13 jkh Exp $")
+libId(keepId, "$Id: rcskeep.c,v 1.2 1995/05/30 05:04:13 rgrimes Exp $")
static int checknum P((char const*,int));
static int getval P((RILE*,struct buf*,int));
diff --git a/gnu/usr.bin/rcs/lib/rcskeys.c b/gnu/usr.bin/rcs/lib/rcskeys.c
index b45105c33b38..07ea4791194e 100644
--- a/gnu/usr.bin/rcs/lib/rcskeys.c
+++ b/gnu/usr.bin/rcs/lib/rcskeys.c
@@ -31,6 +31,9 @@ Report problems and direct all questions to:
/* $Log: rcskeys.c,v $
+ * Revision 1.5 1995/05/30 05:04:14 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.4 1994/06/22 00:51:42 rgrimes
* Fix serious off by one error for FreeBSD keyword, this has been driving
* me nuts as it was on by default and that is NOT what I wanted.
@@ -43,7 +46,7 @@ Report problems and direct all questions to:
* Revision 1.2 1994/05/14 07:00:23 rgrimes
* Add new option -K from David Dawes that allows you to turn on and off
* specific keyword substitution during a rcs co command.
- * Add the new keyword FreeBSD that is IDENTICAL in operation to $Id: rcskeys.c,v 1.4 1994/06/22 00:51:42 rgrimes Exp $.
+ * Add the new keyword FreeBSD that is IDENTICAL in operation to $Id: rcskeys.c,v 1.5 1995/05/30 05:04:14 rgrimes Exp $.
*
* Revision 1.1.1.1 1993/06/18 04:22:12 jkh
* Updated GNU utilities
@@ -77,7 +80,7 @@ Report problems and direct all questions to:
#include "rcsbase.h"
-libId(keysId, "$Id: rcskeys.c,v 1.4 1994/06/22 00:51:42 rgrimes Exp $")
+libId(keysId, "$Id: rcskeys.c,v 1.5 1995/05/30 05:04:14 rgrimes Exp $")
char const *const Keyword[] = {
diff --git a/gnu/usr.bin/rcs/lib/rcslex.c b/gnu/usr.bin/rcs/lib/rcslex.c
index 621d4924bff9..8e855f66a42c 100644
--- a/gnu/usr.bin/rcs/lib/rcslex.c
+++ b/gnu/usr.bin/rcs/lib/rcslex.c
@@ -39,6 +39,9 @@ Report problems and direct all questions to:
/* $Log: rcslex.c,v $
+ * Revision 1.3 1995/05/30 05:04:15 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.2 1993/06/28 19:13:10 nate
* Added Chris Demetriou's FSYNC_ALL option which causes all writes to be
* flushed immediately. (In case of a crash in the middle of CVS/RCS commits
@@ -139,7 +142,7 @@ Report problems and direct all questions to:
#include "rcsbase.h"
-libId(lexId, "$Id: rcslex.c,v 1.2 1993/06/28 19:13:10 nate Exp $")
+libId(lexId, "$Id: rcslex.c,v 1.3 1995/05/30 05:04:15 rgrimes Exp $")
static struct hshentry *nexthsh; /*pointer to next hash entry, set by lookup*/
diff --git a/gnu/usr.bin/rcs/lib/rcsmap.c b/gnu/usr.bin/rcs/lib/rcsmap.c
index 0e7b23c85f4a..7bf845f4edf1 100644
--- a/gnu/usr.bin/rcs/lib/rcsmap.c
+++ b/gnu/usr.bin/rcs/lib/rcsmap.c
@@ -28,7 +28,7 @@ Report problems and direct all questions to:
#include "rcsbase.h"
-libId(mapId, "$Id: rcsmap.c,v 5.2 1991/08/19 03:13:55 eggert Exp $")
+libId(mapId, "$Id: rcsmap.c,v 1.1.1.1 1993/06/18 04:22:12 jkh Exp $")
/* map of character types */
/* ISO 8859/1 (Latin-1) */
diff --git a/gnu/usr.bin/rcs/lib/rcsrev.c b/gnu/usr.bin/rcs/lib/rcsrev.c
index 96eb9e6c41db..03bec6aa21b2 100644
--- a/gnu/usr.bin/rcs/lib/rcsrev.c
+++ b/gnu/usr.bin/rcs/lib/rcsrev.c
@@ -32,6 +32,9 @@ Report problems and direct all questions to:
/* $Log: rcsrev.c,v $
+ * Revision 1.2 1995/05/30 05:04:16 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1993/06/18 04:22:13 jkh
* Updated GNU utilities
*
@@ -97,7 +100,7 @@ Report problems and direct all questions to:
#include "rcsbase.h"
-libId(revId, "$Id: rcsrev.c,v 1.1.1.1 1993/06/18 04:22:13 jkh Exp $")
+libId(revId, "$Id: rcsrev.c,v 1.2 1995/05/30 05:04:16 rgrimes Exp $")
static char const *branchtip P((char const*));
static struct hshentry *genbranch P((struct hshentry const*,char const*,unsigned,char const*,char const*,char const*,struct hshentries**));
diff --git a/gnu/usr.bin/rcs/lib/rcssyn.c b/gnu/usr.bin/rcs/lib/rcssyn.c
index 10b6147a55ab..f35573d2502b 100644
--- a/gnu/usr.bin/rcs/lib/rcssyn.c
+++ b/gnu/usr.bin/rcs/lib/rcssyn.c
@@ -37,6 +37,9 @@ Report problems and direct all questions to:
/* $Log: rcssyn.c,v $
+ * Revision 1.2 1995/05/30 05:04:17 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1993/06/18 04:22:12 jkh
* Updated GNU utilities
*
@@ -136,7 +139,7 @@ Report problems and direct all questions to:
#include "rcsbase.h"
-libId(synId, "$Id: rcssyn.c,v 1.1.1.1 1993/06/18 04:22:12 jkh Exp $")
+libId(synId, "$Id: rcssyn.c,v 1.2 1995/05/30 05:04:17 rgrimes Exp $")
/* forward */
static char const *getkeyval P((char const*,enum tokens,int));
diff --git a/gnu/usr.bin/rcs/lib/rcsutil.c b/gnu/usr.bin/rcs/lib/rcsutil.c
index 55140c2e4793..de4d4c4fbde7 100644
--- a/gnu/usr.bin/rcs/lib/rcsutil.c
+++ b/gnu/usr.bin/rcs/lib/rcsutil.c
@@ -32,6 +32,9 @@ Report problems and direct all questions to:
/* $Log: rcsutil.c,v $
+ * Revision 1.2 1995/05/30 05:04:18 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1993/06/18 04:22:13 jkh
* Updated GNU utilities
*
@@ -139,7 +142,7 @@ Report problems and direct all questions to:
#include "rcsbase.h"
-libId(utilId, "$Id: rcsutil.c,v 1.1.1.1 1993/06/18 04:22:13 jkh Exp $")
+libId(utilId, "$Id: rcsutil.c,v 1.2 1995/05/30 05:04:18 rgrimes Exp $")
#if !has_memcmp
int
diff --git a/gnu/usr.bin/rcs/merge/merge.1 b/gnu/usr.bin/rcs/merge/merge.1
index 8b1957fca099..53ad9a49a752 100644
--- a/gnu/usr.bin/rcs/merge/merge.1
+++ b/gnu/usr.bin/rcs/merge/merge.1
@@ -2,7 +2,7 @@
.ds Rv \\$3
.ds Dt \\$4
..
-.Id $Id: merge.1,v 5.3 1991/02/28 19:18:45 eggert Exp $
+.Id $Id: merge.1,v 1.1.1.1 1993/06/18 04:22:14 jkh Exp $
.TH MERGE 1 \*(Dt GNU
.SH NAME
merge \- three-way file merge
diff --git a/gnu/usr.bin/rcs/merge/merge.c b/gnu/usr.bin/rcs/merge/merge.c
index 4067c184a255..9445963f0203 100644
--- a/gnu/usr.bin/rcs/merge/merge.c
+++ b/gnu/usr.bin/rcs/merge/merge.c
@@ -39,7 +39,7 @@ badoption(a)
}
-mainProg(mergeId, "merge", "$Id: merge.c,v 1.2 1991/08/19 03:13:55 eggert Exp $")
+mainProg(mergeId, "merge", "$Id: merge.c,v 1.1.1.1 1993/06/18 04:22:14 jkh Exp $")
{
register char const *a;
char const *label[2], *arg[3];
diff --git a/gnu/usr.bin/rcs/rcs/rcs.1 b/gnu/usr.bin/rcs/rcs/rcs.1
index 9866a9c0054f..6f17eb8f32d2 100644
--- a/gnu/usr.bin/rcs/rcs/rcs.1
+++ b/gnu/usr.bin/rcs/rcs/rcs.1
@@ -2,7 +2,7 @@
.ds Rv \\$3
.ds Dt \\$4
..
-.Id $Id: rcs.1,v 5.6 1991/09/26 23:16:17 eggert Exp $
+.Id $Id: rcs.1,v 1.1.1.1 1993/06/18 04:22:14 jkh Exp $
.ds r \&\s-1RCS\s0
.if n .ds - \%--
.if t .ds - \(em
diff --git a/gnu/usr.bin/rcs/rcs/rcs.c b/gnu/usr.bin/rcs/rcs/rcs.c
index 6a83770f5b83..30d48b58ba8f 100644
--- a/gnu/usr.bin/rcs/rcs/rcs.c
+++ b/gnu/usr.bin/rcs/rcs/rcs.c
@@ -31,6 +31,9 @@ Report problems and direct all questions to:
/* $Log: rcs.c,v $
+ * Revision 1.2 1995/05/30 05:04:21 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1993/06/18 04:22:14 jkh
* Updated GNU utilities
*
@@ -241,7 +244,7 @@ static struct delrevpair delrev;
static struct hshentry *cuthead, *cuttail, *delstrt;
static struct hshentries *gendeltas;
-mainProg(rcsId, "rcs", "$Id: rcs.c,v 1.1.1.1 1993/06/18 04:22:14 jkh Exp $")
+mainProg(rcsId, "rcs", "$Id: rcs.c,v 1.2 1995/05/30 05:04:21 rgrimes Exp $")
{
static char const cmdusage[] =
"\nrcs usage: rcs -{ae}logins -Afile -{blu}[rev] -cstring -{iLU} -{nNs}name[:rev] -orange -t[file] -Vn file ...";
diff --git a/gnu/usr.bin/rcs/rcs/rcsfile.5 b/gnu/usr.bin/rcs/rcs/rcsfile.5
index d0dbbb80cbbb..e761a1da678c 100644
--- a/gnu/usr.bin/rcs/rcs/rcsfile.5
+++ b/gnu/usr.bin/rcs/rcs/rcsfile.5
@@ -2,7 +2,7 @@
.ds Rv \\$3
.ds Dt \\$4
..
-.Id $Id: rcsfile.5,v 5.1 1991/08/19 03:13:55 eggert Exp $
+.Id $Id: rcsfile.5,v 1.1.1.1 1993/06/18 04:22:15 jkh Exp $
.ds r \s-1RCS\s0
.if n .ds - \%--
.if t .ds - \(em
diff --git a/gnu/usr.bin/rcs/rcs/rcsintro.1 b/gnu/usr.bin/rcs/rcs/rcsintro.1
index a76caa0ee2d9..30afb1341a09 100644
--- a/gnu/usr.bin/rcs/rcs/rcsintro.1
+++ b/gnu/usr.bin/rcs/rcs/rcsintro.1
@@ -2,7 +2,7 @@
.ds Rv \\$3
.ds Dt \\$4
..
-.Id $Id: rcsintro.1,v 5.1 1991/04/21 12:00:46 eggert Exp $
+.Id $Id: rcsintro.1,v 1.1.1.1 1993/06/18 04:22:14 jkh Exp $
.ds r \&\s-1RCS\s0
.if n .ds - \%--
.if t .ds - \(em
diff --git a/gnu/usr.bin/rcs/rcsclean/rcsclean.1 b/gnu/usr.bin/rcs/rcsclean/rcsclean.1
index 07ed7228b679..88d8305963ad 100644
--- a/gnu/usr.bin/rcs/rcsclean/rcsclean.1
+++ b/gnu/usr.bin/rcs/rcsclean/rcsclean.1
@@ -2,7 +2,7 @@
.ds Rv \\$3
.ds Dt \\$4
..
-.Id $Id: rcsclean.1,v 1.8 1991/11/03 01:09:19 eggert Exp $
+.Id $Id: rcsclean.1,v 1.1.1.1 1993/06/18 04:22:15 jkh Exp $
.ds r \&\s-1RCS\s0
.if n .ds - \%--
.if t .ds - \(em
diff --git a/gnu/usr.bin/rcs/rcsclean/rcsclean.c b/gnu/usr.bin/rcs/rcsclean/rcsclean.c
index ba24ab77e0b3..3f9b8a06dd3d 100644
--- a/gnu/usr.bin/rcs/rcsclean/rcsclean.c
+++ b/gnu/usr.bin/rcs/rcsclean/rcsclean.c
@@ -37,7 +37,7 @@ static void cleanup P((void));
static RILE *workptr;
static int exitstatus;
-mainProg(rcscleanId, "rcsclean", "$Id: rcsclean.c,v 5.1 1991/11/03 01:11:44 eggert Exp $")
+mainProg(rcscleanId, "rcsclean", "$Id: rcsclean.c,v 1.1.1.1 1993/06/18 04:22:15 jkh Exp $")
{
static char const usage[] =
"\nrcsclean: usage: rcsclean [-ksubst] [-{nqru}[rev]] [-Vn] [-xsuffixes] [file ...]";
diff --git a/gnu/usr.bin/rcs/rcsdiff/rcsdiff.1 b/gnu/usr.bin/rcs/rcsdiff/rcsdiff.1
index b78bbdd17c1f..482250dc5649 100644
--- a/gnu/usr.bin/rcs/rcsdiff/rcsdiff.1
+++ b/gnu/usr.bin/rcs/rcsdiff/rcsdiff.1
@@ -2,7 +2,7 @@
.ds Rv \\$3
.ds Dt \\$4
..
-.Id $Id: rcsdiff.1,v 5.3 1991/04/21 12:00:46 eggert Exp $
+.Id $Id: rcsdiff.1,v 1.1.1.1 1993/06/18 04:22:16 jkh Exp $
.ds r \&\s-1RCS\s0
.if n .ds - \%--
.if t .ds - \(em
diff --git a/gnu/usr.bin/rcs/rcsdiff/rcsdiff.c b/gnu/usr.bin/rcs/rcsdiff/rcsdiff.c
index 01d19420c5b6..81c91b38b550 100644
--- a/gnu/usr.bin/rcs/rcsdiff/rcsdiff.c
+++ b/gnu/usr.bin/rcs/rcsdiff/rcsdiff.c
@@ -36,6 +36,9 @@ Report problems and direct all questions to:
/* $Log: rcsdiff.c,v $
+ * Revision 1.2 1995/05/30 05:04:25 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1993/06/18 04:22:16 jkh
* Updated GNU utilities
*
@@ -132,7 +135,7 @@ static int exitstatus;
static RILE *workptr;
static struct stat workstat;
-mainProg(rcsdiffId, "rcsdiff", "$Id: rcsdiff.c,v 1.1.1.1 1993/06/18 04:22:16 jkh Exp $")
+mainProg(rcsdiffId, "rcsdiff", "$Id: rcsdiff.c,v 1.2 1995/05/30 05:04:25 rgrimes Exp $")
{
static char const cmdusage[] =
"\nrcsdiff usage: rcsdiff [-q] [-rrev1 [-rrev2]] [-Vn] [diff options] file ...";
diff --git a/gnu/usr.bin/rcs/rcsfreeze/rcsfreeze.1 b/gnu/usr.bin/rcs/rcsfreeze/rcsfreeze.1
index be669a9f2a0d..42a99a8c4fbe 100644
--- a/gnu/usr.bin/rcs/rcsfreeze/rcsfreeze.1
+++ b/gnu/usr.bin/rcs/rcsfreeze/rcsfreeze.1
@@ -2,7 +2,7 @@
.ds Rv \\$3
.ds Dt \\$4
..
-.Id $Id: rcsfreeze.1,v 4.4 1990/11/13 15:43:42 hammer Exp $
+.Id $Id: rcsfreeze.1,v 1.1.1.1 1993/06/18 04:22:16 jkh Exp $
.ds r \s-1RCS\s0
.TH RCSFREEZE 1 \*(Dt GNU
.SH NAME
diff --git a/gnu/usr.bin/rcs/rcsfreeze/rcsfreeze.sh b/gnu/usr.bin/rcs/rcsfreeze/rcsfreeze.sh
index 421997946b76..b24569bff487 100644
--- a/gnu/usr.bin/rcs/rcsfreeze/rcsfreeze.sh
+++ b/gnu/usr.bin/rcs/rcsfreeze/rcsfreeze.sh
@@ -2,7 +2,7 @@
# rcsfreeze - assign a symbolic revision number to a configuration of RCS files
-# $Id: rcsfreeze.sh,v 4.4 1991/04/21 11:58:24 eggert Exp $
+# $Id: rcsfreeze.sh,v 1.1.1.1 1993/06/18 04:22:16 jkh Exp $
# The idea is to run rcsfreeze each time a new version is checked
# in. A unique symbolic revision number (C_[number], where number
diff --git a/gnu/usr.bin/rcs/rcsmerge/rcsmerge.1 b/gnu/usr.bin/rcs/rcsmerge/rcsmerge.1
index 82871b033bfd..05d6c01fe067 100644
--- a/gnu/usr.bin/rcs/rcsmerge/rcsmerge.1
+++ b/gnu/usr.bin/rcs/rcsmerge/rcsmerge.1
@@ -2,7 +2,7 @@
.ds Rv \\$3
.ds Dt \\$4
..
-.Id $Id: rcsmerge.1,v 5.3 1991/08/19 03:13:55 eggert Exp $
+.Id $Id: rcsmerge.1,v 1.1.1.1 1993/06/18 04:22:16 jkh Exp $
.ds r \&\s-1RCS\s0
.if n .ds - \%--
.if t .ds - \(em
diff --git a/gnu/usr.bin/rcs/rcsmerge/rcsmerge.c b/gnu/usr.bin/rcs/rcsmerge/rcsmerge.c
index f5c46a82db65..38a7b7601c32 100644
--- a/gnu/usr.bin/rcs/rcsmerge/rcsmerge.c
+++ b/gnu/usr.bin/rcs/rcsmerge/rcsmerge.c
@@ -35,6 +35,9 @@ Report problems and direct all questions to:
/* $Log: rcsmerge.c,v $
+ * Revision 1.2 1995/05/30 05:04:30 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1993/06/18 04:22:16 jkh
* Updated GNU utilities
*
@@ -101,7 +104,7 @@ Report problems and direct all questions to:
static char const co[] = CO;
-mainProg(rcsmergeId, "rcsmerge", "$Id: rcsmerge.c,v 1.1.1.1 1993/06/18 04:22:16 jkh Exp $")
+mainProg(rcsmergeId, "rcsmerge", "$Id: rcsmerge.c,v 1.2 1995/05/30 05:04:30 rgrimes Exp $")
{
static char const cmdusage[] =
"\nrcsmerge usage: rcsmerge -rrev1 [-rrev2] [-p] [-Vn] file";
diff --git a/gnu/usr.bin/rcs/rcstest b/gnu/usr.bin/rcs/rcstest
index e0b6c828f7c5..7363a6d26602 100755
--- a/gnu/usr.bin/rcs/rcstest
+++ b/gnu/usr.bin/rcs/rcstest
@@ -15,7 +15,7 @@
# The current directory and ./RCS must be readable, writable, and searchable.
-# $Id: rcstest,v 5.8 1991/11/20 17:58:10 eggert Exp $
+# $Id: rcstest,v 1.1.1.1 1993/06/18 04:22:10 jkh Exp $
# Copyright 1990, 1991 by Paul Eggert
diff --git a/gnu/usr.bin/rcs/rlog/rlog.1 b/gnu/usr.bin/rcs/rlog/rlog.1
index e3deb6871ee9..bffd2c307a9e 100644
--- a/gnu/usr.bin/rcs/rlog/rlog.1
+++ b/gnu/usr.bin/rcs/rlog/rlog.1
@@ -2,7 +2,7 @@
.ds Rv \\$3
.ds Dt \\$4
..
-.Id $Id: rlog.1,v 1.2 1994/05/11 22:39:43 phk Exp $
+.Id $Id: rlog.1,v 1.3 1994/05/12 00:37:57 phk Exp $
.ds g \&\s-1UTC\s0
.ds r \&\s-1RCS\s0
.if n .ds - \%--
diff --git a/gnu/usr.bin/rcs/rlog/rlog.c b/gnu/usr.bin/rcs/rlog/rlog.c
index 80912bd79da3..bbbb03d77386 100644
--- a/gnu/usr.bin/rcs/rlog/rlog.c
+++ b/gnu/usr.bin/rcs/rlog/rlog.c
@@ -36,6 +36,9 @@ Report problems and direct all questions to:
/* $Log: rlog.c,v $
+ * Revision 1.6 1995/05/30 05:04:34 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.5 1994/05/12 00:42:59 phk
* typo.
*
@@ -207,7 +210,7 @@ static struct lockers *lockerlist;
static struct stateattri *statelist;
-mainProg(rlogId, "rlog", "$Id: rlog.c,v 1.5 1994/05/12 00:42:59 phk Exp $")
+mainProg(rlogId, "rlog", "$Id: rlog.c,v 1.6 1995/05/30 05:04:34 rgrimes Exp $")
{
static char const cmdusage[] =
"\nrlog usage: rlog -{bhLRt} [-v[string]] -ddates -l[lockers] -rrevs -sstates -w[logins] -Vn file ...";
diff --git a/gnu/usr.bin/tar/getdate.y b/gnu/usr.bin/tar/getdate.y
index aa8f6b512a33..941af0cfacb3 100644
--- a/gnu/usr.bin/tar/getdate.y
+++ b/gnu/usr.bin/tar/getdate.y
@@ -1,5 +1,5 @@
%{
-/* $Revision: 1.1.1.1 $
+/* $Revision: 1.2 $
**
** Originally written by Steven M. Bellovin <smb@research.att.com> while
** at the University of North Carolina at Chapel Hill. Later tweaked by
@@ -98,7 +98,7 @@ extern struct tm *localtime();
#if !defined(lint) && !defined(SABER)
static char RCS[] =
- "$Header: /home/ncvs/src/gnu/usr.bin/tar/getdate.y,v 1.1.1.1 1993/06/18 04:22:21 jkh Exp $";
+ "$Header: /home/ncvs/src/gnu/usr.bin/tar/getdate.y,v 1.2 1994/11/04 02:12:22 jkh Exp $";
#endif /* !defined(lint) && !defined(SABER) */
diff --git a/gnu/usr.bin/tar/tar.1 b/gnu/usr.bin/tar/tar.1
index e97edc5c153c..f2ade73b05a9 100644
--- a/gnu/usr.bin/tar/tar.1
+++ b/gnu/usr.bin/tar/tar.1
@@ -3,7 +3,7 @@
.\"
.\" Written by John F. Woods <jfw@jfwhome.funhouse.com>
.\"
-.\" $Id: tar.1,v 1.2 1995/01/31 04:36:48 jkh Exp $
+.\" $Id: tar.1,v 1.3 1995/04/10 11:47:34 jkh Exp $
.\"
.Dd 6 August 1994
.Os FreeBSD
diff --git a/gnu/usr.bin/texinfo/Makefile b/gnu/usr.bin/texinfo/Makefile
index 172255cc53c1..8412b422c689 100644
--- a/gnu/usr.bin/texinfo/Makefile
+++ b/gnu/usr.bin/texinfo/Makefile
@@ -1,6 +1,6 @@
#
# Bmake file for texinfo
-# $Id: Makefile,v 1.2 1994/09/15 12:09:35 jkh Exp $
+# $Id: Makefile,v 1.3 1995/01/22 22:44:45 ache Exp $
#
SUBDIR= info info-files makedoc makeinfo texindex doc
diff --git a/gnu/usr.bin/texinfo/Makefile.inc b/gnu/usr.bin/texinfo/Makefile.inc
index 9b2886022b7e..2aa30701b803 100644
--- a/gnu/usr.bin/texinfo/Makefile.inc
+++ b/gnu/usr.bin/texinfo/Makefile.inc
@@ -1,5 +1,5 @@
# Texinfo defaults.
-# $Id$
+# $Id: Makefile.inc,v 1.2 1994/09/15 12:09:36 jkh Exp $
INFODIR?= /usr/share/info
diff --git a/gnu/usr.bin/texinfo/makedoc/Makefile b/gnu/usr.bin/texinfo/makedoc/Makefile
index d97ec098c31c..08291ba44bde 100644
--- a/gnu/usr.bin/texinfo/makedoc/Makefile
+++ b/gnu/usr.bin/texinfo/makedoc/Makefile
@@ -1,7 +1,7 @@
#
# Bmakefile for GNU info
#
-# $Id: Makefile,v 1.2 1994/09/15 13:10:41 jkh Exp $
+# $Id: Makefile,v 1.3 1995/05/30 05:05:09 rgrimes Exp $
#
PROG= makedoc
diff --git a/gnu/usr.bin/texinfo/makeinfo/Makefile b/gnu/usr.bin/texinfo/makeinfo/Makefile
index e102200dc7ae..b933c9410429 100644
--- a/gnu/usr.bin/texinfo/makeinfo/Makefile
+++ b/gnu/usr.bin/texinfo/makeinfo/Makefile
@@ -1,7 +1,7 @@
#
# Bmakefile for GNU info
#
-# $Id: Makefile,v 1.2 1994/09/15 13:11:36 jkh Exp $
+# $Id: Makefile,v 1.3 1995/05/30 05:05:12 rgrimes Exp $
#
PROG= makeinfo
diff --git a/gnu/usr.bin/texinfo/texindex/Makefile b/gnu/usr.bin/texinfo/texindex/Makefile
index aee14dfc9d09..0e52b27b83d9 100644
--- a/gnu/usr.bin/texinfo/texindex/Makefile
+++ b/gnu/usr.bin/texinfo/texindex/Makefile
@@ -1,7 +1,7 @@
#
# Bmakefile for GNU info
#
-# $Id: Makefile,v 1.2 1994/09/15 13:12:23 jkh Exp $
+# $Id: Makefile,v 1.3 1995/05/30 05:05:18 rgrimes Exp $
#
PROG= texindex
diff --git a/gnu/usr.bin/yppush/Makefile b/gnu/usr.bin/yppush/Makefile
index 374760aa302c..dcee477ec871 100644
--- a/gnu/usr.bin/yppush/Makefile
+++ b/gnu/usr.bin/yppush/Makefile
@@ -1,5 +1,5 @@
# from: @(#)Makefile 5.8 (Berkeley) 7/28/90
-# $Id: Makefile,v 1.7 1995/05/30 05:05:19 rgrimes Exp $
+# $Id: Makefile,v 1.7.4.1 1995/08/30 07:16:34 davidg Exp $
PROG= yppush
SRCS= yp_clnt.c yppush.c
diff --git a/gnu/usr.bin/yppush/yppush.8 b/gnu/usr.bin/yppush/yppush.8
index 92e140540b02..5a2c45537796 100644
--- a/gnu/usr.bin/yppush/yppush.8
+++ b/gnu/usr.bin/yppush/yppush.8
@@ -29,7 +29,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $Id$
+.\" $Id: yppush.8,v 1.1 1995/02/05 21:48:04 wpaul Exp $
.\"
.Dd February 5, 1995
.Dt YPPUSH 8
diff --git a/gnu/usr.bin/yppush/yppush.c b/gnu/usr.bin/yppush/yppush.c
index aca50af6464a..3d026f43fe54 100644
--- a/gnu/usr.bin/yppush/yppush.c
+++ b/gnu/usr.bin/yppush/yppush.c
@@ -18,7 +18,7 @@
Modified for use with FreeBSD 2.x by Bill Paul (wpaul@ctr.columbia.edu)
- $Id: yppush.c,v 1.6.2.1 1995/06/04 17:15:49 davidg Exp $
+ $Id: yppush.c,v 1.7 1995/06/11 19:28:55 rgrimes Exp $
*/
#include <stdio.h>
diff --git a/gnu/usr.sbin/Makefile b/gnu/usr.sbin/Makefile
index e86265cc82de..015692ca153a 100644
--- a/gnu/usr.sbin/Makefile
+++ b/gnu/usr.sbin/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.20 1995/01/19 17:03:28 bde Exp $
+# $Id: Makefile,v 1.1 1995/01/31 09:14:01 wpaul Exp $
SUBDIR= yppasswdd ypserv yp_mkdb
diff --git a/gnu/usr.sbin/Makefile.inc b/gnu/usr.sbin/Makefile.inc
index 1fa8c0e074f6..dce1db05c712 100644
--- a/gnu/usr.sbin/Makefile.inc
+++ b/gnu/usr.sbin/Makefile.inc
@@ -1,3 +1,3 @@
-# $Id$
+# $Id: Makefile.inc,v 1.1 1995/01/31 09:14:03 wpaul Exp $
BINDIR?= /usr/sbin
diff --git a/gnu/usr.sbin/isdn/dbg/dbg.c b/gnu/usr.sbin/isdn/dbg/dbg.c
index b57b5c7899f7..f746bbb57b90 100644
--- a/gnu/usr.sbin/isdn/dbg/dbg.c
+++ b/gnu/usr.sbin/isdn/dbg/dbg.c
@@ -1,6 +1,6 @@
-static char rcsid[] = "@(#)$Id: dbg.c,v 1.1 1995/01/25 14:06:18 jkr Exp jkr $";
+static char rcsid[] = "@(#)$Id: dbg.c,v 1.1.1.1 1995/02/15 00:46:20 jkh Exp $";
/*******************************************************************************
- * II - Version 0.1 $Revision: 1.1 $ $State: Exp $
+ * II - Version 0.1 $Revision: 1.1.1.1 $ $State: Exp $
*
* Copyright 1994 Dietmar Friede
*******************************************************************************
@@ -10,6 +10,10 @@ static char rcsid[] = "@(#)$Id: dbg.c,v 1.1 1995/01/25 14:06:18 jkr Exp jkr
*
*******************************************************************************
* $Log: dbg.c,v $
+ * Revision 1.1.1.1 1995/02/15 00:46:20 jkh
+ * Import the ISDN userland utilities. Just about ready to start shaking
+ * this baby out in earnest..
+ *
*
******************************************************************************/
diff --git a/gnu/usr.sbin/isdn/dbg/dbg_3008.c b/gnu/usr.sbin/isdn/dbg/dbg_3008.c
index 945257290f37..defc4a8ca488 100644
--- a/gnu/usr.sbin/isdn/dbg/dbg_3008.c
+++ b/gnu/usr.sbin/isdn/dbg/dbg_3008.c
@@ -1,6 +1,6 @@
-static char rcsid[] = "@(#)$Id: dbg_3008.c,v 1.1 1995/01/25 14:06:18 jkr Exp jkr $";
+static char rcsid[] = "@(#)$Id: dbg_3008.c,v 1.1.1.1 1995/02/15 00:46:20 jkh Exp $";
/*******************************************************************************
- * II - Version 0.1 $Revision: 1.1 $ $State: Exp $
+ * II - Version 0.1 $Revision: 1.1.1.1 $ $State: Exp $
*
* Copyright 1994 Dietmar Friede
*******************************************************************************
@@ -10,6 +10,10 @@ static char rcsid[] = "@(#)$Id: dbg_3008.c,v 1.1 1995/01/25 14:06:18 jkr Exp
*
*******************************************************************************
* $Log: dbg_3008.c,v $
+ * Revision 1.1.1.1 1995/02/15 00:46:20 jkh
+ * Import the ISDN userland utilities. Just about ready to start shaking
+ * this baby out in earnest..
+ *
*
******************************************************************************/
diff --git a/gnu/usr.sbin/isdn/dbg/dbg_3009.c b/gnu/usr.sbin/isdn/dbg/dbg_3009.c
index eee5932dc5d1..04bc71ed021e 100644
--- a/gnu/usr.sbin/isdn/dbg/dbg_3009.c
+++ b/gnu/usr.sbin/isdn/dbg/dbg_3009.c
@@ -1,6 +1,6 @@
-static char rcsid[] = "@(#)$Id: dbg_3009.c,v 1.1 1995/01/25 14:06:18 jkr Exp jkr $";
+static char rcsid[] = "@(#)$Id: dbg_3009.c,v 1.1.1.1 1995/02/15 00:46:20 jkh Exp $";
/*******************************************************************************
- * II - Version 0.1 $Revision: 1.1 $ $State: Exp $
+ * II - Version 0.1 $Revision: 1.1.1.1 $ $State: Exp $
*
* Copyright 1994 Dietmar Friede
*******************************************************************************
@@ -10,6 +10,10 @@ static char rcsid[] = "@(#)$Id: dbg_3009.c,v 1.1 1995/01/25 14:06:18 jkr Exp
*
*******************************************************************************
* $Log: dbg_3009.c,v $
+ * Revision 1.1.1.1 1995/02/15 00:46:20 jkh
+ * Import the ISDN userland utilities. Just about ready to start shaking
+ * this baby out in earnest..
+ *
*
******************************************************************************/
diff --git a/gnu/usr.sbin/isdn/dbg/dbg_5000.c b/gnu/usr.sbin/isdn/dbg/dbg_5000.c
index 8711232a7dfa..cc99435e0576 100644
--- a/gnu/usr.sbin/isdn/dbg/dbg_5000.c
+++ b/gnu/usr.sbin/isdn/dbg/dbg_5000.c
@@ -1,6 +1,6 @@
-static char rcsid[] = "@(#)$Id: dbg_5000.c,v 1.1 1995/01/25 14:06:18 jkr Exp jkr $";
+static char rcsid[] = "@(#)$Id: dbg_5000.c,v 1.1.1.1 1995/02/15 00:46:20 jkh Exp $";
/*******************************************************************************
- * II - Version 0.1 $Revision: 1.1 $ $State: Exp $
+ * II - Version 0.1 $Revision: 1.1.1.1 $ $State: Exp $
*
* Copyright 1994 Dietmar Friede
*******************************************************************************
@@ -10,6 +10,10 @@ static char rcsid[] = "@(#)$Id: dbg_5000.c,v 1.1 1995/01/25 14:06:18 jkr Exp
*
*******************************************************************************
* $Log: dbg_5000.c,v $
+ * Revision 1.1.1.1 1995/02/15 00:46:20 jkh
+ * Import the ISDN userland utilities. Just about ready to start shaking
+ * this baby out in earnest..
+ *
*
******************************************************************************/
diff --git a/gnu/usr.sbin/isdn/iid/Changes b/gnu/usr.sbin/isdn/iid/Changes
index 49b1bbbd5dec..fbc3bfe6a989 100644
--- a/gnu/usr.sbin/isdn/iid/Changes
+++ b/gnu/usr.sbin/isdn/iid/Changes
@@ -1,11 +1,11 @@
1c1
-< static char rcsid[] = "@(#)$Id: iid.c,v 1.1 1994/12/19 07:25:48 jkr Exp $";
+< static char rcsid[] = "@(#)$Id: Changes,v 1.1.1.1 1995/02/15 00:46:21 jkh Exp $";
---
-> static char rcsid[] = "@(#)$Id: iid.c,v 1.2 1994/12/22 16:53:13 jkr Exp $";
+> static char rcsid[] = "@(#)$Id: Changes,v 1.1.1.1 1995/02/15 00:46:21 jkh Exp $";
3c3
-< * ISDN System - $Revision: 1.1 $ $State: Exp $
+< * ISDN System - $Revision: 1.1.1.1 $ $State: Exp $
---
-> * ISDN System - $Revision: 1.2 $ $State: Exp $
+> * ISDN System - $Revision: 1.1.1.1 $ $State: Exp $
13a14,17
> * Revision 1.2 1994/12/22 16:53:13 jkr
> * changes for rescan/signal
diff --git a/gnu/usr.sbin/isdn/iid/iid.c b/gnu/usr.sbin/isdn/iid/iid.c
index 11b8c36b8128..50b67ba2ad0c 100644
--- a/gnu/usr.sbin/isdn/iid/iid.c
+++ b/gnu/usr.sbin/isdn/iid/iid.c
@@ -1,6 +1,6 @@
-static char rcsid[] = "@(#)$Id: iid.c,v 1.4 1995/01/25 13:42:33 jkr Exp jkr $";
+static char rcsid[] = "@(#)$Id: iid.c,v 1.1.1.1 1995/02/15 00:46:20 jkh Exp $";
/*******************************************************************************
- * II - Version 0.1 $Revision: 1.4 $ $State: Exp $
+ * II - Version 0.1 $Revision: 1.1.1.1 $ $State: Exp $
*
* Copyright 1994 Dietmar Friede
*******************************************************************************
@@ -10,6 +10,10 @@ static char rcsid[] = "@(#)$Id: iid.c,v 1.4 1995/01/25 13:42:33 jkr Exp jkr
*
*******************************************************************************
* $Log: iid.c,v $
+ * Revision 1.1.1.1 1995/02/15 00:46:20 jkh
+ * Import the ISDN userland utilities. Just about ready to start shaking
+ * this baby out in earnest..
+ *
*
******************************************************************************/
diff --git a/gnu/usr.sbin/isdn/ispy/ispy.c b/gnu/usr.sbin/isdn/ispy/ispy.c
index 5c2ac5a7477b..2dd7faeee172 100644
--- a/gnu/usr.sbin/isdn/ispy/ispy.c
+++ b/gnu/usr.sbin/isdn/ispy/ispy.c
@@ -1,6 +1,6 @@
-static char rcsid[] = "@(#)$Id: ispy.c,v 1.2 1995/01/25 13:41:55 jkr Exp jkr $";
+static char rcsid[] = "@(#)$Id: ispy.c,v 1.1.1.1 1995/02/15 00:46:22 jkh Exp $";
/*******************************************************************************
- * II - Version 0.1 $Revision: 1.2 $ $State: Exp $
+ * II - Version 0.1 $Revision: 1.1.1.1 $ $State: Exp $
*
* Copyright 1994 Dietmar Friede
*******************************************************************************
@@ -10,6 +10,10 @@ static char rcsid[] = "@(#)$Id: ispy.c,v 1.2 1995/01/25 13:41:55 jkr Exp jkr
*
*******************************************************************************
* $Log: ispy.c,v $
+ * Revision 1.1.1.1 1995/02/15 00:46:22 jkh
+ * Import the ISDN userland utilities. Just about ready to start shaking
+ * this baby out in earnest..
+ *
*
******************************************************************************/
diff --git a/gnu/usr.sbin/isdn/itel/iteld.c b/gnu/usr.sbin/isdn/itel/iteld.c
index 8df099c109a7..c345720c9dbe 100644
--- a/gnu/usr.sbin/isdn/itel/iteld.c
+++ b/gnu/usr.sbin/isdn/itel/iteld.c
@@ -1,6 +1,6 @@
-static char rcsid[] = "@(#)$Id: iteld.c,v 1.2 1995/01/25 13:58:28 jkr Exp jkr $";
+static char rcsid[] = "@(#)$Id: iteld.c,v 1.1.1.1 1995/02/15 00:46:19 jkh Exp $";
/*******************************************************************************
- * II - Version 0.1 $Revision: 1.2 $ $State: Exp $
+ * II - Version 0.1 $Revision: 1.1.1.1 $ $State: Exp $
*
* Copyright 1994 Dietmar Friede
*******************************************************************************
@@ -10,6 +10,10 @@ static char rcsid[] = "@(#)$Id: iteld.c,v 1.2 1995/01/25 13:58:28 jkr Exp jk
*
*******************************************************************************
* $Log: iteld.c,v $
+ * Revision 1.1.1.1 1995/02/15 00:46:19 jkh
+ * Import the ISDN userland utilities. Just about ready to start shaking
+ * this baby out in earnest..
+ *
*
******************************************************************************/
diff --git a/gnu/usr.sbin/isdn/ittd/ittd.c b/gnu/usr.sbin/isdn/ittd/ittd.c
index efb152a72051..ce89f51fdd81 100644
--- a/gnu/usr.sbin/isdn/ittd/ittd.c
+++ b/gnu/usr.sbin/isdn/ittd/ittd.c
@@ -1,6 +1,6 @@
-static char rcsid[] = "@(#)$Id: ittd.c,v 1.2 1995/01/25 14:01:28 jkr Exp jkr $";
+static char rcsid[] = "@(#)$Id: ittd.c,v 1.1.1.1 1995/02/15 00:46:23 jkh Exp $";
/*******************************************************************************
- * II Version 0.1 - $Revision: 1.2 $ $State: Exp $
+ * II Version 0.1 - $Revision: 1.1.1.1 $ $State: Exp $
*
* Copyright 1994 Dietmar Friede
*******************************************************************************
@@ -10,6 +10,10 @@ static char rcsid[] = "@(#)$Id: ittd.c,v 1.2 1995/01/25 14:01:28 jkr Exp jkr
*
*******************************************************************************
* $Log: ittd.c,v $
+ * Revision 1.1.1.1 1995/02/15 00:46:23 jkh
+ * Import the ISDN userland utilities. Just about ready to start shaking
+ * this baby out in earnest..
+ *
*
******************************************************************************/
diff --git a/gnu/usr.sbin/isdn/load/load.c b/gnu/usr.sbin/isdn/load/load.c
index fa9e6001e378..208d7d88b3b8 100644
--- a/gnu/usr.sbin/isdn/load/load.c
+++ b/gnu/usr.sbin/isdn/load/load.c
@@ -1,6 +1,6 @@
-static char rcsid[] = "@(#)$Id: load.c,v 1.1 1995/01/25 14:06:18 jkr Exp jkr $";
+static char rcsid[] = "@(#)$Id: load.c,v 1.1.1.1 1995/02/15 00:46:23 jkh Exp $";
/*******************************************************************************
- * II - Version 0.1 $Revision: 1.1 $ $State: Exp $
+ * II - Version 0.1 $Revision: 1.1.1.1 $ $State: Exp $
*
* Copyright 1994 Dietmar Friede
*******************************************************************************
@@ -10,6 +10,10 @@ static char rcsid[] = "@(#)$Id: load.c,v 1.1 1995/01/25 14:06:18 jkr Exp jkr
*
*******************************************************************************
* $Log: load.c,v $
+ * Revision 1.1.1.1 1995/02/15 00:46:23 jkh
+ * Import the ISDN userland utilities. Just about ready to start shaking
+ * this baby out in earnest..
+ *
*
******************************************************************************/
diff --git a/gnu/usr.sbin/isdn/misc/stime.c b/gnu/usr.sbin/isdn/misc/stime.c
index 5eb21d4eaf1a..cf1e047b77b8 100644
--- a/gnu/usr.sbin/isdn/misc/stime.c
+++ b/gnu/usr.sbin/isdn/misc/stime.c
@@ -1,6 +1,6 @@
-static char rcsid[] = "@(#)$Id: stime.c,v 1.1 1995/01/25 14:14:58 jkr Exp jkr $";
+static char rcsid[] = "@(#)$Id: stime.c,v 1.1.1.1 1995/02/15 00:46:19 jkh Exp $";
/*******************************************************************************
- * II - Version 0.1 $Revision: 1.1 $ $State: Exp $
+ * II - Version 0.1 $Revision: 1.1.1.1 $ $State: Exp $
*
* Copyright 1994 Dietmar Friede
*******************************************************************************
@@ -10,6 +10,10 @@ static char rcsid[] = "@(#)$Id: stime.c,v 1.1 1995/01/25 14:14:58 jkr Exp jk
*
*******************************************************************************
* $Log: stime.c,v $
+ * Revision 1.1.1.1 1995/02/15 00:46:19 jkh
+ * Import the ISDN userland utilities. Just about ready to start shaking
+ * this baby out in earnest..
+ *
*
******************************************************************************/
diff --git a/gnu/usr.sbin/isdn/misc/tst.c b/gnu/usr.sbin/isdn/misc/tst.c
index 535de1eab73e..aa1f1c3c5b9b 100644
--- a/gnu/usr.sbin/isdn/misc/tst.c
+++ b/gnu/usr.sbin/isdn/misc/tst.c
@@ -1,6 +1,6 @@
-static char rcsid[] = "@(#)$Id: tst.c,v 1.1 1995/01/25 14:14:58 jkr Exp jkr $";
+static char rcsid[] = "@(#)$Id: tst.c,v 1.1.1.1 1995/02/15 00:46:19 jkh Exp $";
/*******************************************************************************
- * II - Version 0.1 $Revision: 1.1 $ $State: Exp $
+ * II - Version 0.1 $Revision: 1.1.1.1 $ $State: Exp $
*
* Copyright 1994 Dietmar Friede
*******************************************************************************
@@ -10,6 +10,10 @@ static char rcsid[] = "@(#)$Id: tst.c,v 1.1 1995/01/25 14:14:58 jkr Exp jkr
*
*******************************************************************************
* $Log: tst.c,v $
+ * Revision 1.1.1.1 1995/02/15 00:46:19 jkh
+ * Import the ISDN userland utilities. Just about ready to start shaking
+ * this baby out in earnest..
+ *
*
******************************************************************************/
diff --git a/gnu/usr.sbin/isdn/nsplit/nsplit.c b/gnu/usr.sbin/isdn/nsplit/nsplit.c
index 2502a58ee91c..f7bb48782a1d 100644
--- a/gnu/usr.sbin/isdn/nsplit/nsplit.c
+++ b/gnu/usr.sbin/isdn/nsplit/nsplit.c
@@ -1,6 +1,6 @@
-static char rcsid[] = "@(#)$Id: nsplit.c,v 1.1 1995/01/25 14:06:18 jkr Exp jkr $";
+static char rcsid[] = "@(#)$Id: nsplit.c,v 1.1.1.1 1995/02/15 00:46:25 jkh Exp $";
/*******************************************************************************
- * II - Version 0.1 $Revision: 1.1 $ $State: Exp $
+ * II - Version 0.1 $Revision: 1.1.1.1 $ $State: Exp $
*
* Copyright 1994 Dietmar Friede
*******************************************************************************
@@ -10,6 +10,10 @@ static char rcsid[] = "@(#)$Id: nsplit.c,v 1.1 1995/01/25 14:06:18 jkr Exp j
*
*******************************************************************************
* $Log: nsplit.c,v $
+ * Revision 1.1.1.1 1995/02/15 00:46:25 jkh
+ * Import the ISDN userland utilities. Just about ready to start shaking
+ * this baby out in earnest..
+ *
*
******************************************************************************/
diff --git a/gnu/usr.sbin/isdn/rst/rst.c b/gnu/usr.sbin/isdn/rst/rst.c
index 331bdba64e6c..b05594a80a3d 100644
--- a/gnu/usr.sbin/isdn/rst/rst.c
+++ b/gnu/usr.sbin/isdn/rst/rst.c
@@ -1,6 +1,6 @@
-static char rcsid[] = "@(#)$Id: rst.c,v 1.1 1995/01/25 14:07:55 jkr Exp jkr $";
+static char rcsid[] = "@(#)$Id: rst.c,v 1.1.1.1 1995/02/15 00:46:24 jkh Exp $";
/*******************************************************************************
- * II - Version 0.1 $Revision: 1.1 $ $State: Exp $
+ * II - Version 0.1 $Revision: 1.1.1.1 $ $State: Exp $
*
* Copyright 1994 Dietmar Friede
*******************************************************************************
@@ -10,6 +10,10 @@ static char rcsid[] = "@(#)$Id: rst.c,v 1.1 1995/01/25 14:07:55 jkr Exp jkr
*
*******************************************************************************
* $Log: rst.c,v $
+ * Revision 1.1.1.1 1995/02/15 00:46:24 jkh
+ * Import the ISDN userland utilities. Just about ready to start shaking
+ * this baby out in earnest..
+ *
*
******************************************************************************/
diff --git a/gnu/usr.sbin/isdn/rstcode/rstcode.c b/gnu/usr.sbin/isdn/rstcode/rstcode.c
index 5a9970b26724..eadb9ffe8a66 100644
--- a/gnu/usr.sbin/isdn/rstcode/rstcode.c
+++ b/gnu/usr.sbin/isdn/rstcode/rstcode.c
@@ -1,6 +1,6 @@
-static char rcsid[] = "@(#)$Id: rstcode.c,v 1.1 1995/01/25 14:06:18 jkr Exp jkr $";
+static char rcsid[] = "@(#)$Id: rstcode.c,v 1.1.1.1 1995/02/15 00:46:25 jkh Exp $";
/*******************************************************************************
- * II - Version 0.1 $Revision: 1.1 $ $State: Exp $
+ * II - Version 0.1 $Revision: 1.1.1.1 $ $State: Exp $
*
* Copyright 1994 Dietmar Friede
*******************************************************************************
@@ -10,6 +10,10 @@ static char rcsid[] = "@(#)$Id: rstcode.c,v 1.1 1995/01/25 14:06:18 jkr Exp
*
*******************************************************************************
* $Log: rstcode.c,v $
+ * Revision 1.1.1.1 1995/02/15 00:46:25 jkh
+ * Import the ISDN userland utilities. Just about ready to start shaking
+ * this baby out in earnest..
+ *
*
******************************************************************************/
#include <sys/types.h>
diff --git a/gnu/usr.sbin/isdn/spy/spy.c b/gnu/usr.sbin/isdn/spy/spy.c
index 1f730c07b350..4ecec3c6bb1a 100644
--- a/gnu/usr.sbin/isdn/spy/spy.c
+++ b/gnu/usr.sbin/isdn/spy/spy.c
@@ -1,6 +1,6 @@
-static char rcsid[] = "@(#)$Id: spy.c,v 1.2 1995/01/25 13:41:44 jkr Exp jkr $";
+static char rcsid[] = "@(#)$Id: spy.c,v 1.1.1.1 1995/02/15 00:46:24 jkh Exp $";
/*******************************************************************************
- * II - Version 0.1 $Revision: 1.2 $ $State: Exp $
+ * II - Version 0.1 $Revision: 1.1.1.1 $ $State: Exp $
*
* Copyright 1994 Dietmar Friede
*******************************************************************************
@@ -10,6 +10,10 @@ static char rcsid[] = "@(#)$Id: spy.c,v 1.2 1995/01/25 13:41:44 jkr Exp jkr
*
*******************************************************************************
* $Log: spy.c,v $
+ * Revision 1.1.1.1 1995/02/15 00:46:24 jkh
+ * Import the ISDN userland utilities. Just about ready to start shaking
+ * this baby out in earnest..
+ *
*
******************************************************************************/
diff --git a/gnu/usr.sbin/yp_mkdb/Makefile b/gnu/usr.sbin/yp_mkdb/Makefile
index 324bdf467b78..e07e601bdd1b 100644
--- a/gnu/usr.sbin/yp_mkdb/Makefile
+++ b/gnu/usr.sbin/yp_mkdb/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 7/19/93
-# $Id$
+# $Id: Makefile,v 1.2 1995/02/04 04:26:19 wpaul Exp $
PROG= yp_mkdb
MAN8= yp_mkdb.8
diff --git a/gnu/usr.sbin/yp_mkdb/yp_mkdb.c b/gnu/usr.sbin/yp_mkdb/yp_mkdb.c
index bf648a07836b..8c796ad2fdb6 100644
--- a/gnu/usr.sbin/yp_mkdb/yp_mkdb.c
+++ b/gnu/usr.sbin/yp_mkdb/yp_mkdb.c
@@ -20,7 +20,7 @@
*/
/*
- * $Id: yp_mkdb.c,v 1.2 1995/03/31 19:45:13 wpaul Exp $
+ * $Id: yp_mkdb.c,v 1.3 1995/05/30 05:05:26 rgrimes Exp $
*/
#define BUFFERSIZE 4096
diff --git a/gnu/usr.sbin/yppasswdd/Makefile b/gnu/usr.sbin/yppasswdd/Makefile
index b2109f6e229b..2cd5a2dd40af 100644
--- a/gnu/usr.sbin/yppasswdd/Makefile
+++ b/gnu/usr.sbin/yppasswdd/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.5 1995/04/01 19:23:11 wpaul Exp $
+# $Id: Makefile,v 1.5.4.1 1995/08/25 11:11:17 davidg Exp $
# @(#)Makefile 8.3 (Berkeley) 4/2/94
PROG= yppasswdd
diff --git a/gnu/usr.sbin/ypserv/Makefile b/gnu/usr.sbin/ypserv/Makefile
index 3138c17de2b0..c0f759db590a 100644
--- a/gnu/usr.sbin/ypserv/Makefile
+++ b/gnu/usr.sbin/ypserv/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.6 1995/02/15 04:33:52 wpaul Exp $
+# $Id: Makefile,v 1.6.4.1 1995/08/25 11:18:34 davidg Exp $
# From: @(#)Makefile 8.3 (Berkeley) 4/2/94
PROG= ypserv
diff --git a/gnu/usr.sbin/ypserv/Makefile.yp b/gnu/usr.sbin/ypserv/Makefile.yp
index 28c7c8b83c92..21b79dfb0151 100644
--- a/gnu/usr.sbin/ypserv/Makefile.yp
+++ b/gnu/usr.sbin/ypserv/Makefile.yp
@@ -1,7 +1,7 @@
#
# Makefile for the NIS databases
#
-# $Id: Makefile.yp,v 1.7 1995/05/30 05:05:34 rgrimes Exp $
+# $Id: Makefile.yp,v 1.7.4.1 1995/08/25 11:18:36 davidg Exp $
#
# This Makefile should only be run on the NIS master server of a domain.
# All updated maps will be pushed to all NIS slave servers listed in the
diff --git a/gnu/usr.sbin/ypserv/dnslookup.c b/gnu/usr.sbin/ypserv/dnslookup.c
index 9d10ecfde76c..df57cd48cdbc 100644
--- a/gnu/usr.sbin/ypserv/dnslookup.c
+++ b/gnu/usr.sbin/ypserv/dnslookup.c
@@ -28,7 +28,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: dnslookup.c,v 1.1 1995/01/31 08:58:52 wpaul Exp $
+ * $Id: dnslookup.c,v 1.2 1995/02/03 20:25:59 bde Exp $
*/
/*
diff --git a/gnu/usr.sbin/ypserv/server.c b/gnu/usr.sbin/ypserv/server.c
index 9ac2e7069d2a..ed6e43a4360f 100644
--- a/gnu/usr.sbin/ypserv/server.c
+++ b/gnu/usr.sbin/ypserv/server.c
@@ -24,7 +24,7 @@
** Ported to FreeBSD and hacked all to pieces
** by Bill Paul <wpaul@ctr.columbia.edu>
**
-** $Id: server.c,v 1.12 1995/09/24 17:21:52 wpaul Exp $
+** $Id: server.c,v 1.6.4.2 1995/10/05 20:02:57 davidg Exp $
**
*/
diff --git a/gnu/usr.sbin/ypserv/svc_run.c b/gnu/usr.sbin/ypserv/svc_run.c
index 6f4a52c0b8a6..5c16ab4266f2 100644
--- a/gnu/usr.sbin/ypserv/svc_run.c
+++ b/gnu/usr.sbin/ypserv/svc_run.c
@@ -30,7 +30,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)svc_run.c 1.1 87/10/13 Copyr 1984 Sun Micro";*/
/*static char *sccsid = "from: @(#)svc_run.c 2.1 88/07/29 4.0 RPCSRC";*/
-static char *rcsid = "$Id: svc_run.c,v 1.2 1995/05/30 05:41:35 rgrimes Exp $";
+static char *rcsid = "$Id: svc_run.c,v 1.2 1995/07/14 01:56:51 wpaul Exp $";
#endif
/*
diff --git a/gnu/usr.sbin/ypserv/system.h b/gnu/usr.sbin/ypserv/system.h
index 838430a38c4e..88663b780cad 100644
--- a/gnu/usr.sbin/ypserv/system.h
+++ b/gnu/usr.sbin/ypserv/system.h
@@ -1,5 +1,5 @@
/*
- * $Id$
+ * $Id: system.h,v 1.1 1995/01/31 08:58:54 wpaul Exp $
*/
#if (defined(__sun__) || defined(sun)) && !defined(__svr4__)
diff --git a/gnu/usr.sbin/ypserv/yp.h b/gnu/usr.sbin/ypserv/yp.h
index 5a3b33a9124d..82d5555184a2 100644
--- a/gnu/usr.sbin/ypserv/yp.h
+++ b/gnu/usr.sbin/ypserv/yp.h
@@ -10,7 +10,7 @@
* Modification history:
* 940716 pen@signum.se Change "ypreq_key" to "ypreq_nokey" for FIRST.
*
- * $Id: yp.h,v 1.1 1995/01/31 08:58:55 wpaul Exp $
+ * $Id: yp.h,v 1.2 1995/05/30 05:05:36 rgrimes Exp $
*/
#ifndef _YP_H_RPCGEN
diff --git a/gnu/usr.sbin/ypserv/yp_svc.c b/gnu/usr.sbin/ypserv/yp_svc.c
index ceeee2d6bc97..9d560d91fdaa 100644
--- a/gnu/usr.sbin/ypserv/yp_svc.c
+++ b/gnu/usr.sbin/ypserv/yp_svc.c
@@ -6,7 +6,7 @@
* And thus replied Lpd@NannyMUD:
* Who cares? :-) /Peter Eriksson <pen@signum.se>
*
- * $Id: yp_svc.c,v 1.3 1995/05/30 05:05:37 rgrimes Exp $
+ * $Id: yp_svc.c,v 1.3.4.1 1995/08/25 11:18:41 davidg Exp $
*/
#include "system.h"
diff --git a/gnu/usr.sbin/ypserv/yp_xdr.c b/gnu/usr.sbin/ypserv/yp_xdr.c
index 9e8864578be3..0aa8b9f2a534 100644
--- a/gnu/usr.sbin/ypserv/yp_xdr.c
+++ b/gnu/usr.sbin/ypserv/yp_xdr.c
@@ -11,7 +11,7 @@
* 940616 pen@signum.se Major cleanups.
* 940713 pen@signum.se Added SunOS 4 prototypes.
*
- * $Id: yp_xdr.c,v 1.1 1995/01/31 08:58:57 wpaul Exp $
+ * $Id: yp_xdr.c,v 1.2 1995/05/30 05:05:38 rgrimes Exp $
*/
#include "system.h"
diff --git a/gnu/usr.sbin/ypserv/ypserv.8 b/gnu/usr.sbin/ypserv/ypserv.8
index 43ac853e9784..1eaf60afc362 100644
--- a/gnu/usr.sbin/ypserv/ypserv.8
+++ b/gnu/usr.sbin/ypserv/ypserv.8
@@ -29,7 +29,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $Id: ypserv.8,v 1.2 1995/02/07 05:04:51 wpaul Exp $
+.\" $Id: ypserv.8,v 1.3 1995/04/05 03:23:40 wpaul Exp $
.\"
.Dd February 4, 1995
.Dt YPSERV 8
diff --git a/include/Makefile b/include/Makefile
index 3ff370093ac2..227127e34681 100644
--- a/include/Makefile
+++ b/include/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.2 (Berkeley) 1/4/94
-# $Id: Makefile,v 1.25.4.1 1995/07/13 10:58:49 rgrimes Exp $
+# $Id: Makefile,v 1.25.4.2 1995/08/31 21:30:59 davidg Exp $
#
# Doing a make install builds /usr/include
#
diff --git a/include/link.h b/include/link.h
index 15277a725a8e..c71a1fcbd539 100644
--- a/include/link.h
+++ b/include/link.h
@@ -27,7 +27,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: link.h,v 1.4 1995/03/04 17:49:20 nate Exp $
+ * $Id: link.h,v 1.4.4.1 1995/08/25 07:08:07 davidg Exp $
*/
/*
diff --git a/include/netdb.h b/include/netdb.h
index 3fd20df003c1..4ea2f630342d 100644
--- a/include/netdb.h
+++ b/include/netdb.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)netdb.h 8.1 (Berkeley) 6/2/93
- * $Id: netdb.h,v 1.2 1995/05/30 04:54:41 rgrimes Exp $
+ * $Id: netdb.h,v 1.2.4.1 1995/08/30 04:06:24 davidg Exp $
* -
* Portions Copyright (c) 1993 by Digital Equipment Corporation.
*
diff --git a/include/nl_types.h b/include/nl_types.h
index ac8b43353f98..c938fa48b21c 100644
--- a/include/nl_types.h
+++ b/include/nl_types.h
@@ -1,4 +1,4 @@
-/* $Id: nl_types.h,v 1.1 1995/03/30 12:47:56 jkh Exp $ */
+/* $Id: nl_types.h,v 1.2 1995/05/30 04:54:42 rgrimes Exp $ */
/***********************************************************
Copyright 1990, by Alfalfa Software Incorporated, Cambridge, Massachusetts.
diff --git a/include/nlist.h b/include/nlist.h
index b80c0b21f717..48779f50c191 100644
--- a/include/nlist.h
+++ b/include/nlist.h
@@ -37,7 +37,7 @@
*
* @(#)nlist.h 8.2 (Berkeley) 1/21/94
*
- * $Id$
+ * $Id: nlist.h,v 1.2 1994/12/23 22:32:48 nate Exp $
*/
#ifndef _NLIST_H_
diff --git a/include/resolv.h b/include/resolv.h
index fe77da2b6451..b7e24e7d02dc 100644
--- a/include/resolv.h
+++ b/include/resolv.h
@@ -53,7 +53,7 @@
*
* @(#)resolv.h 8.1 (Berkeley) 6/2/93
* From Id: resolv.h,v 4.9.1.2 1993/05/17 09:59:01 vixie Exp
- * $Id: resolv.h,v 1.3 1995/05/30 04:54:44 rgrimes Exp $
+ * $Id: resolv.h,v 1.3.4.1 1995/08/30 04:06:27 davidg Exp $
*/
#ifndef _RESOLV_H_
diff --git a/include/rpc/auth.h b/include/rpc/auth.h
index 8d0836b93b7a..5ac0f61d0be1 100644
--- a/include/rpc/auth.h
+++ b/include/rpc/auth.h
@@ -28,7 +28,7 @@
*
* from: @(#)auth.h 1.17 88/02/08 SMI
* from: @(#)auth.h 2.3 88/08/07 4.0 RPCSRC
- * $Id: auth.h,v 1.2 1994/08/07 18:40:53 wollman Exp $
+ * $Id: auth.h,v 1.3 1995/05/30 04:55:09 rgrimes Exp $
*/
/*
diff --git a/include/rpc/auth_unix.h b/include/rpc/auth_unix.h
index 3888ed52f45f..4699ada38f9e 100644
--- a/include/rpc/auth_unix.h
+++ b/include/rpc/auth_unix.h
@@ -28,7 +28,7 @@
*
* from: @(#)auth_unix.h 1.8 88/02/08 SMI
* from: @(#)auth_unix.h 2.2 88/07/29 4.0 RPCSRC
- * $Id: auth_unix.h,v 1.2 1994/08/07 18:40:54 wollman Exp $
+ * $Id: auth_unix.h,v 1.3 1995/05/30 04:55:11 rgrimes Exp $
*/
/*
diff --git a/include/rpc/clnt.h b/include/rpc/clnt.h
index 7f35067da1c7..12b1f20d2854 100644
--- a/include/rpc/clnt.h
+++ b/include/rpc/clnt.h
@@ -28,7 +28,7 @@
*
* from: @(#)clnt.h 1.31 88/02/08 SMI
* from: @(#)clnt.h 2.1 88/07/29 4.0 RPCSRC
- * $Id: clnt.h,v 1.2 1994/08/07 18:40:55 wollman Exp $
+ * $Id: clnt.h,v 1.3 1995/05/30 04:55:14 rgrimes Exp $
*/
/*
diff --git a/include/rpc/pmap_clnt.h b/include/rpc/pmap_clnt.h
index ff40799232c9..72c9c4398e45 100644
--- a/include/rpc/pmap_clnt.h
+++ b/include/rpc/pmap_clnt.h
@@ -28,7 +28,7 @@
*
* from: @(#)pmap_clnt.h 1.11 88/02/08 SMI
* from: @(#)pmap_clnt.h 2.1 88/07/29 4.0 RPCSRC
- * $Id: pmap_clnt.h,v 1.2 1994/08/07 18:40:56 wollman Exp $
+ * $Id: pmap_clnt.h,v 1.3 1995/05/30 04:55:16 rgrimes Exp $
*/
/*
diff --git a/include/rpc/pmap_prot.h b/include/rpc/pmap_prot.h
index d2bb793f2bc9..7263a0fed84b 100644
--- a/include/rpc/pmap_prot.h
+++ b/include/rpc/pmap_prot.h
@@ -28,7 +28,7 @@
*
* from: @(#)pmap_prot.h 1.14 88/02/08 SMI
* from: @(#)pmap_prot.h 2.1 88/07/29 4.0 RPCSRC
- * $Id: pmap_prot.h,v 1.2 1994/08/07 18:40:56 wollman Exp $
+ * $Id: pmap_prot.h,v 1.3 1995/05/30 04:55:18 rgrimes Exp $
*/
/*
diff --git a/include/rpc/pmap_rmt.h b/include/rpc/pmap_rmt.h
index 7c461521f452..95d1f94f85cd 100644
--- a/include/rpc/pmap_rmt.h
+++ b/include/rpc/pmap_rmt.h
@@ -28,7 +28,7 @@
*
* from: @(#)pmap_rmt.h 1.2 88/02/08 SMI
* from: @(#)pmap_rmt.h 2.1 88/07/29 4.0 RPCSRC
- * $Id: pmap_rmt.h,v 1.2 1994/08/07 18:40:57 wollman Exp $
+ * $Id: pmap_rmt.h,v 1.3 1995/05/30 04:55:20 rgrimes Exp $
*/
/*
diff --git a/include/rpc/rpc.h b/include/rpc/rpc.h
index b4a4de399696..9ec14a4bec34 100644
--- a/include/rpc/rpc.h
+++ b/include/rpc/rpc.h
@@ -28,7 +28,7 @@
*
* from: @(#)rpc.h 1.9 88/02/08 SMI
* from: @(#)rpc.h 2.4 89/07/11 4.0 RPCSRC
- * $Id: rpc.h,v 1.3 1995/02/24 08:57:44 phk Exp $
+ * $Id: rpc.h,v 1.4 1995/05/30 04:55:23 rgrimes Exp $
*/
/*
diff --git a/include/rpc/rpc_msg.h b/include/rpc/rpc_msg.h
index aec7aa01d7c5..0e8a74fc7d4b 100644
--- a/include/rpc/rpc_msg.h
+++ b/include/rpc/rpc_msg.h
@@ -28,7 +28,7 @@
*
* from: @(#)rpc_msg.h 1.7 86/07/16 SMI
* from: @(#)rpc_msg.h 2.1 88/07/29 4.0 RPCSRC
- * $Id: rpc_msg.h,v 1.3 1995/03/12 12:13:37 bde Exp $
+ * $Id: rpc_msg.h,v 1.4 1995/05/30 04:55:25 rgrimes Exp $
*/
/*
diff --git a/include/rpc/svc.h b/include/rpc/svc.h
index 859a15bf8925..c9872d4560e3 100644
--- a/include/rpc/svc.h
+++ b/include/rpc/svc.h
@@ -28,7 +28,7 @@
*
* from: @(#)svc.h 1.20 88/02/08 SMI
* from: @(#)svc.h 2.2 88/07/29 4.0 RPCSRC
- * $Id: svc.h,v 1.3 1995/02/24 08:57:45 phk Exp $
+ * $Id: svc.h,v 1.4 1995/05/30 04:55:28 rgrimes Exp $
*/
/*
diff --git a/include/rpc/svc_auth.h b/include/rpc/svc_auth.h
index f01d070cc6bf..360e93430170 100644
--- a/include/rpc/svc_auth.h
+++ b/include/rpc/svc_auth.h
@@ -28,7 +28,7 @@
*
* from: @(#)svc_auth.h 1.6 86/07/16 SMI
* from: @(#)svc_auth.h 2.1 88/07/29 4.0 RPCSRC
- * $Id: svc_auth.h,v 1.2 1994/08/07 18:41:01 wollman Exp $
+ * $Id: svc_auth.h,v 1.3 1995/05/30 04:55:32 rgrimes Exp $
*/
/*
diff --git a/include/rpc/types.h b/include/rpc/types.h
index db2b6a3b04a0..3cdaee3fcd00 100644
--- a/include/rpc/types.h
+++ b/include/rpc/types.h
@@ -28,7 +28,7 @@
*
* from: @(#)types.h 1.18 87/07/24 SMI
* from: @(#)types.h 2.3 88/08/15 4.0 RPCSRC
- * $Id: types.h,v 1.2 1994/08/07 18:41:01 wollman Exp $
+ * $Id: types.h,v 1.3 1995/05/30 04:55:35 rgrimes Exp $
*/
/*
diff --git a/include/rpc/xdr.h b/include/rpc/xdr.h
index 552c355e45d8..87075abbe8fe 100644
--- a/include/rpc/xdr.h
+++ b/include/rpc/xdr.h
@@ -28,7 +28,7 @@
*
* from: @(#)xdr.h 1.19 87/04/22 SMI
* from: @(#)xdr.h 2.2 88/07/29 4.0 RPCSRC
- * $Id: xdr.h,v 1.2 1994/08/07 18:41:02 wollman Exp $
+ * $Id: xdr.h,v 1.3 1995/05/30 04:55:38 rgrimes Exp $
*/
/*
diff --git a/include/rpcsvc/Makefile b/include/rpcsvc/Makefile
index 2517df84c24e..d9d24e22a20c 100644
--- a/include/rpcsvc/Makefile
+++ b/include/rpcsvc/Makefile
@@ -1,5 +1,5 @@
# from: @(#)Makefile 2.3 88/08/11 4.0 RPCSRC
-# $Id: Makefile,v 1.3 1995/03/18 07:04:23 rgrimes Exp $
+# $Id: Makefile,v 1.3.4.1 1995/08/30 07:24:54 davidg Exp $
.SUFFIXES: .x
diff --git a/include/rpcsvc/klm_prot.x b/include/rpcsvc/klm_prot.x
index 6bc4f27074c2..c84b9b2d98d9 100644
--- a/include/rpcsvc/klm_prot.x
+++ b/include/rpcsvc/klm_prot.x
@@ -40,7 +40,7 @@
%#ifndef lint
%/*static char sccsid[] = "from: @(#)klm_prot.x 1.7 87/07/08 Copyr 1987 Sun Micro";*/
%/*static char sccsid[] = "from: @(#)klm_prot.x 2.1 88/08/01 4.0 RPCSRC";*/
-%static char rcsid[] = "$Id: klm_prot.x,v 1.1 1993/09/14 17:42:42 jtc Exp $";
+%static char rcsid[] = "$Id: klm_prot.x,v 1.1 1994/08/04 19:01:45 wollman Exp $";
%#endif /* not lint */
#endif
diff --git a/include/rpcsvc/mount.x b/include/rpcsvc/mount.x
index 758b47cfbdd1..8c38b75c10d1 100644
--- a/include/rpcsvc/mount.x
+++ b/include/rpcsvc/mount.x
@@ -35,7 +35,7 @@
%#ifndef lint
%/*static char sccsid[] = "from: @(#)mount.x 1.2 87/09/18 Copyr 1987 Sun Micro";*/
%/*static char sccsid[] = "from: @(#)mount.x 2.1 88/08/01 4.0 RPCSRC";*/
-%static char rcsid[] = "$Id: mount.x,v 1.1 1993/09/14 17:42:43 jtc Exp $";
+%static char rcsid[] = "$Id: mount.x,v 1.1 1994/08/04 19:01:46 wollman Exp $";
%#endif /* not lint */
#endif
diff --git a/include/rpcsvc/nfs_prot.x b/include/rpcsvc/nfs_prot.x
index 74d46ba5300b..819b93280ee1 100644
--- a/include/rpcsvc/nfs_prot.x
+++ b/include/rpcsvc/nfs_prot.x
@@ -31,7 +31,7 @@
%#ifndef lint
%/*static char sccsid[] = "from: @(#)nfs_prot.x 1.2 87/10/12 Copyr 1987 Sun Micro";*/
%/*static char sccsid[] = "from: @(#)nfs_prot.x 2.1 88/08/01 4.0 RPCSRC";*/
-%static char rcsid[] = "$Id: nfs_prot.x,v 1.1 1993/09/14 17:42:44 jtc Exp $";
+%static char rcsid[] = "$Id: nfs_prot.x,v 1.1 1994/08/04 19:01:47 wollman Exp $";
%#endif /* not lint */
#endif
diff --git a/include/rpcsvc/nlm_prot.x b/include/rpcsvc/nlm_prot.x
index b0711243dc3b..04721e28e3ff 100644
--- a/include/rpcsvc/nlm_prot.x
+++ b/include/rpcsvc/nlm_prot.x
@@ -12,7 +12,7 @@
%#ifndef lint
%/*static char sccsid[] = "from: @(#)nlm_prot.x 1.8 87/09/21 Copyr 1987 Sun Micro";*/
%/*static char sccsid[] = "from: * @(#)nlm_prot.x 2.1 88/08/01 4.0 RPCSRC";*/
-%static char rcsid[] = "$Id: nlm_prot.x,v 1.1 1993/09/14 17:42:45 jtc Exp $";
+%static char rcsid[] = "$Id: nlm_prot.x,v 1.1 1994/08/04 19:01:48 wollman Exp $";
%#endif /* not lint */
#endif
diff --git a/include/rpcsvc/rex.x b/include/rpcsvc/rex.x
index 7609cc8b26f7..f027d28eef90 100644
--- a/include/rpcsvc/rex.x
+++ b/include/rpcsvc/rex.x
@@ -35,7 +35,7 @@
%#ifndef lint
%/*static char sccsid[] = "from: @(#)rex.x 1.3 87/09/18 Copyr 1987 Sun Micro";*/
%/*static char sccsid[] = "from: @(#)rex.x 2.1 88/08/01 4.0 RPCSRC";*/
-%static char rcsid[] = "$Id: rex.x,v 1.1 1993/09/14 17:42:46 jtc Exp $";
+%static char rcsid[] = "$Id: rex.x,v 1.1 1994/08/04 19:01:49 wollman Exp $";
%#endif /* not lint */
#endif
diff --git a/include/rpcsvc/rnusers.x b/include/rpcsvc/rnusers.x
index 034c5c25f7cc..bf6dafbfbe04 100644
--- a/include/rpcsvc/rnusers.x
+++ b/include/rpcsvc/rnusers.x
@@ -35,7 +35,7 @@
%#ifndef lint
%/*static char sccsid[] = "from: @(#)rnusers.x 1.2 87/09/20 Copyr 1987 Sun Micro";*/
%/*static char sccsid[] = "from: @(#)rnusers.x 2.1 88/08/01 4.0 RPCSRC";*/
-%static char rcsid[] = "$Id: rnusers.x,v 1.1 1993/09/14 17:42:46 jtc Exp $";
+%static char rcsid[] = "$Id: rnusers.x,v 1.1 1994/08/04 19:01:50 wollman Exp $";
%#endif /* not lint */
#endif
diff --git a/include/rpcsvc/rquota.x b/include/rpcsvc/rquota.x
index 0900c6581936..476d76bd2be1 100644
--- a/include/rpcsvc/rquota.x
+++ b/include/rpcsvc/rquota.x
@@ -7,7 +7,7 @@
%#ifndef lint
%/*static char sccsid[] = "from: @(#)rquota.x 1.2 87/09/20 Copyr 1987 Sun Micro";*/
%/*static char sccsid[] = "from: @(#)rquota.x 2.1 88/08/01 4.0 RPCSRC";*/
-%static char rcsid[] = "$Id: rquota.x,v 1.1 1993/09/14 17:42:49 jtc Exp $";
+%static char rcsid[] = "$Id: rquota.x,v 1.1 1994/08/04 19:01:50 wollman Exp $";
%#endif /* not lint */
#endif
diff --git a/include/rpcsvc/rstat.x b/include/rpcsvc/rstat.x
index 2099b4f4994d..0c55005cca17 100644
--- a/include/rpcsvc/rstat.x
+++ b/include/rpcsvc/rstat.x
@@ -47,7 +47,7 @@
%#ifndef lint
%/*static char sccsid[] = "from: @(#)rstat.x 1.2 87/09/18 Copyr 1987 Sun Micro";*/
%/*static char sccsid[] = "from: @(#)rstat.x 2.2 88/08/01 4.0 RPCSRC";*/
-%static char rcsid[] = "$Id: rstat.x,v 1.3 1993/11/30 20:31:41 ats Exp $";
+%static char rcsid[] = "$Id: rstat.x,v 1.1 1994/08/04 19:01:51 wollman Exp $";
%#endif /* not lint */
#endif /* def RPC_HDR */
diff --git a/include/rpcsvc/rwall.x b/include/rpcsvc/rwall.x
index 08e2c98e3d6d..7541bca4ddf4 100644
--- a/include/rpcsvc/rwall.x
+++ b/include/rpcsvc/rwall.x
@@ -35,7 +35,7 @@
#ifndef RPC_HDR
%#ifndef lint
-%static char rcsid[] = "$Id: rwall.x,v 1.1 1993/09/14 17:42:50 jtc Exp $";
+%static char rcsid[] = "$Id: rwall.x,v 1.1 1994/08/04 19:01:52 wollman Exp $";
%#endif /* not lint */
#endif
diff --git a/include/rpcsvc/sm_inter.x b/include/rpcsvc/sm_inter.x
index f66570bdd867..49a93044f8fd 100644
--- a/include/rpcsvc/sm_inter.x
+++ b/include/rpcsvc/sm_inter.x
@@ -37,7 +37,7 @@
%#ifndef lint
%/*static char sccsid[] = "from: @(#)sm_inter.x 1.7 87/06/24 Copyr 1987 Sun Micro";*/
%/*static char sccsid[] = "from: @(#)sm_inter.x 2.2 88/08/01 4.0 RPCSRC";*/
-%static char rcsid[] = "$Id: sm_inter.x,v 1.1 1993/09/14 17:42:51 jtc Exp $";
+%static char rcsid[] = "$Id: sm_inter.x,v 1.1 1994/08/04 19:01:53 wollman Exp $";
%#endif /* not lint */
#endif
diff --git a/include/rpcsvc/spray.x b/include/rpcsvc/spray.x
index d580722dec1e..5ae7a4d1780d 100644
--- a/include/rpcsvc/spray.x
+++ b/include/rpcsvc/spray.x
@@ -36,7 +36,7 @@
%#ifndef lint
%/*static char sccsid[] = "from: @(#)spray.x 1.2 87/09/18 Copyr 1987 Sun Micro";*/
%/*static char sccsid[] = "from: @(#)spray.x 2.1 88/08/01 4.0 RPCSRC";*/
-%static char rcsid[] = "$Id: spray.x,v 1.1 1993/09/14 17:42:52 jtc Exp $";
+%static char rcsid[] = "$Id: spray.x,v 1.1 1994/08/04 19:01:54 wollman Exp $";
%#endif /* not lint */
#endif
diff --git a/include/rpcsvc/yp.x b/include/rpcsvc/yp.x
index f20dee00c3ae..7e3175e1d521 100644
--- a/include/rpcsvc/yp.x
+++ b/include/rpcsvc/yp.x
@@ -34,7 +34,7 @@
#ifndef RPC_HDR
%#ifndef lint
%/*static char sccsid[] = "from: @(#)yp.x 2.1 88/08/01 4.0 RPCSRC";*/
-%static char rcsid[] = "$Id: yp.x,v 1.1 1993/09/14 17:42:53 jtc Exp $";
+%static char rcsid[] = "$Id: yp.x,v 1.1 1994/08/04 19:01:55 wollman Exp $";
%#endif /* not lint */
#endif
diff --git a/include/rpcsvc/yp_prot.h b/include/rpcsvc/yp_prot.h
index 11a1f5cfecae..7daf9a1402c7 100644
--- a/include/rpcsvc/yp_prot.h
+++ b/include/rpcsvc/yp_prot.h
@@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: yp_prot.h,v 1.1 1994/08/04 19:01:56 wollman Exp $
+ * $Id: yp_prot.h,v 1.2 1995/05/30 04:55:47 rgrimes Exp $
*/
#ifndef _YP_PROT_H_
diff --git a/include/rpcsvc/ypclnt.h b/include/rpcsvc/ypclnt.h
index 816801255125..91b64868b1ce 100644
--- a/include/rpcsvc/ypclnt.h
+++ b/include/rpcsvc/ypclnt.h
@@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: ypclnt.h,v 1.2 1995/04/21 18:07:34 wpaul Exp $
+ * $Id: ypclnt.h,v 1.3 1995/05/30 04:55:49 rgrimes Exp $
*/
#ifndef _YPCLNT_H_
diff --git a/include/rpcsvc/yppasswd.x b/include/rpcsvc/yppasswd.x
index 0b9197e99bf0..4cad50d2cfdf 100644
--- a/include/rpcsvc/yppasswd.x
+++ b/include/rpcsvc/yppasswd.x
@@ -36,7 +36,7 @@
%#ifndef lint
%/*static char sccsid[] = "from: @(#)yppasswd.x 1.1 87/04/13 Copyr 1987 Sun Micro";*/
%/*static char sccsid[] = "from: @(#)yppasswd.x 2.1 88/08/01 4.0 RPCSRC";*/
-%static char rcsid[] = "$Id: yppasswd.x,v 1.1 1993/09/14 17:42:55 jtc Exp $";
+%static char rcsid[] = "$Id: yppasswd.x,v 1.1 1994/08/04 19:01:57 wollman Exp $";
%#endif /* not lint */
#endif
diff --git a/include/strhash.h b/include/strhash.h
index 7533fb9c7711..a05f84b8fd6f 100644
--- a/include/strhash.h
+++ b/include/strhash.h
@@ -1,7 +1,7 @@
#ifndef _STRHASH_H_INCLUDE
#define _STRHASH_H_INCLUDE
-/* $Header: /home/ncvs/src/include/strhash.h,v 1.1 1995/03/26 10:12:53 jkh Exp $ */
+/* $Header: /home/ncvs/src/include/strhash.h,v 1.2 1995/05/30 04:54:49 rgrimes Exp $ */
/*
*
diff --git a/lib/csu/i386/Makefile b/lib/csu/i386/Makefile
index 5c484e7ddad9..145fd5e27186 100644
--- a/lib/csu/i386/Makefile
+++ b/lib/csu/i386/Makefile
@@ -1,5 +1,5 @@
# from: @(#)Makefile 5.6 (Berkeley) 5/22/91
-# $Id: Makefile,v 1.15 1995/03/30 06:40:31 phk Exp $
+# $Id: Makefile,v 1.15.4.1 1995/08/30 07:31:12 davidg Exp $
CFLAGS+= -DLIBC_SCCS -DDYNAMIC
OBJS= crt0.o gcrt0.o c++rt0.o
diff --git a/lib/csu/i386/c++rt0.c b/lib/csu/i386/c++rt0.c
index aa281093be80..99bfffb84e0d 100644
--- a/lib/csu/i386/c++rt0.c
+++ b/lib/csu/i386/c++rt0.c
@@ -27,7 +27,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: c++rt0.c,v 1.2 1995/05/30 05:39:36 rgrimes Exp $
+ * $Id: c++rt0.c,v 1.2.4.1 1995/08/25 07:08:32 davidg Exp $
*/
/*
diff --git a/lib/csu/i386/crt0.c b/lib/csu/i386/crt0.c
index f13613dd2510..e656c463e247 100644
--- a/lib/csu/i386/crt0.c
+++ b/lib/csu/i386/crt0.c
@@ -27,7 +27,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: crt0.c,v 1.16.4.1 1995/08/25 07:08:38 davidg Exp $
+ * $Id: crt0.c,v 1.16.4.2 1995/09/28 13:16:24 davidg Exp $
*/
diff --git a/lib/libc/db/doc/hash.usenix.ps b/lib/libc/db/doc/hash.usenix.ps
index c884778830d2..5943f8b7f741 100644
--- a/lib/libc/db/doc/hash.usenix.ps
+++ b/lib/libc/db/doc/hash.usenix.ps
@@ -7,7 +7,7 @@
% lib/psdit.pro -- prolog for psdit (ditroff) files
% Copyright (c) 1984, 1985 Adobe Systems Incorporated. All Rights Reserved.
% last edit: shore Sat Nov 23 20:28:03 1985
-% RCSID: $Header: psdit.pro,v 2.1 85/11/24 12:19:43 shore Rel $
+% RCSID: $Header: /home/ncvs/src/lib/libc/db/doc/hash.usenix.ps,v 1.2 1994/08/05 01:17:43 wollman Exp $
% Changed by Edward Wang (edward@ucbarpa.berkeley.edu) to handle graphics,
% 17 Feb, 87.
diff --git a/lib/libc/db/doc/libtp.usenix.ps b/lib/libc/db/doc/libtp.usenix.ps
index ea821a9145e2..dad42e7dcaa5 100644
--- a/lib/libc/db/doc/libtp.usenix.ps
+++ b/lib/libc/db/doc/libtp.usenix.ps
@@ -7,7 +7,7 @@
% lib/psdit.pro -- prolog for psdit (ditroff) files
% Copyright (c) 1984, 1985 Adobe Systems Incorporated. All Rights Reserved.
% last edit: shore Sat Nov 23 20:28:03 1985
-% RCSID: $Header: psdit.pro,v 2.1 85/11/24 12:19:43 shore Rel $
+% RCSID: $Header: /home/ncvs/src/lib/libc/db/doc/libtp.usenix.ps,v 1.2 1994/08/05 01:17:46 wollman Exp $
% Changed by Edward Wang (edward@ucbarpa.berkeley.edu) to handle graphics,
% 17 Feb, 87.
diff --git a/lib/libc/gen/Makefile.inc b/lib/libc/gen/Makefile.inc
index 69a434d85daa..f91be48502df 100644
--- a/lib/libc/gen/Makefile.inc
+++ b/lib/libc/gen/Makefile.inc
@@ -1,5 +1,5 @@
# From: @(#)Makefile.inc 8.3 (Berkeley) 4/16/94
-# $Id: Makefile.inc,v 1.15 1994/12/18 14:06:38 guido Exp $
+# $Id: Makefile.inc,v 1.16 1995/05/30 05:40:08 rgrimes Exp $
# machine-independent gen sources
.PATH: ${.CURDIR}/${MACHINE}/gen ${.CURDIR}/gen
diff --git a/lib/libc/gen/config.c b/lib/libc/gen/config.c
index ffe276697990..a86e864e42fe 100644
--- a/lib/libc/gen/config.c
+++ b/lib/libc/gen/config.c
@@ -6,12 +6,12 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id: config.c,v 1.1 1994/11/13 20:47:43 phk Exp $
+ * $Id: config.c,v 1.2 1995/05/30 05:40:09 rgrimes Exp $
*
*/
#if defined(LIBC_SCCS) && !defined(lint)
-static char rcsid[] = "$Id: config.c,v 1.1 1994/11/13 20:47:43 phk Exp $";
+static char rcsid[] = "$Id: config.c,v 1.2 1995/05/30 05:40:09 rgrimes Exp $";
#endif /* LIBC_SCCS and not lint */
/*
diff --git a/lib/libc/gen/config_open.3 b/lib/libc/gen/config_open.3
index f51bc6cd01f8..8ebcaa170ce8 100644
--- a/lib/libc/gen/config_open.3
+++ b/lib/libc/gen/config_open.3
@@ -5,7 +5,7 @@
.\" this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
.\" ----------------------------------------------------------------------------
.\"
-.\" $Id$
+.\" $Id: config_open.3,v 1.1 1994/11/13 20:47:44 phk Exp $
.\"
.Dd November 13, 1994
.Dt config_open 3
diff --git a/lib/libc/gen/crypt.c b/lib/libc/gen/crypt.c
index 1ffb7366a760..8212b3136a5e 100644
--- a/lib/libc/gen/crypt.c
+++ b/lib/libc/gen/crypt.c
@@ -36,7 +36,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/* from static char sccsid[] = "@(#)crypt.c 5.11 (Berkeley) 6/25/91"; */
-static char rcsid[] = "$Header: /home/ncvs/src/lib/libc/gen/crypt.c,v 1.2 1994/08/22 20:38:00 csgr Exp $";
+static char rcsid[] = "$Header: /home/ncvs/src/lib/libc/gen/crypt.c,v 1.3 1995/05/30 05:40:10 rgrimes Exp $";
#endif /* LIBC_SCCS and not lint */
#include <unistd.h>
diff --git a/lib/libc/gen/err.3 b/lib/libc/gen/err.3
index a80edeb4c607..4926dc536c0c 100644
--- a/lib/libc/gen/err.3
+++ b/lib/libc/gen/err.3
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" From: @(#)err.3 8.1 (Berkeley) 6/9/93
-.\" $Id$
+.\" $Id: err.3,v 1.2 1995/04/13 18:04:05 wollman Exp $
.\"
.Dd April 13, 1995
.Dt ERR 3
diff --git a/lib/libc/gen/getbootfile.3 b/lib/libc/gen/getbootfile.3
index cfab748d529a..9a14a0b9d48c 100644
--- a/lib/libc/gen/getbootfile.3
+++ b/lib/libc/gen/getbootfile.3
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" From: @(#)gethostname.3 8.1 (Berkeley) 6/4/93
-.\" $Id$
+.\" $Id: getbootfile.3,v 1.1 1994/09/23 20:21:59 wollman Exp $
.\"
.Dd September 23, 1994
.Dt GETBOOTFILE 3
diff --git a/lib/libc/gen/getbootfile.c b/lib/libc/gen/getbootfile.c
index 3d038514051e..cd42924b4a13 100644
--- a/lib/libc/gen/getbootfile.c
+++ b/lib/libc/gen/getbootfile.c
@@ -34,7 +34,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char sccsid[] = "From: @(#)gethostname.c 8.1 (Berkeley) 6/4/93";*/
static const char rcsid[] =
- "$Id: getbootfile.c,v 1.1 1994/09/23 20:22:01 wollman Exp $";
+ "$Id: getbootfile.c,v 1.2 1994/09/24 00:10:13 wollman Exp $";
#endif /* LIBC_SCCS and not lint */
#include <sys/param.h>
diff --git a/lib/libc/gen/getdomainname.3 b/lib/libc/gen/getdomainname.3
index 8ba5995017ad..f36b995b216c 100644
--- a/lib/libc/gen/getdomainname.3
+++ b/lib/libc/gen/getdomainname.3
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" from: @(#)getdomainname.2 6.7 (Berkeley) 3/10/91
-.\" $Id: getdomainname.2,v 1.1 1993/10/25 03:11:30 rgrimes Exp $
+.\" $Id: getdomainname.3,v 1.1 1994/12/18 14:06:39 guido Exp $
.\"
.Dd March 10, 1991
.Dt GETDOMAINNAME 3
diff --git a/lib/libc/gen/getdomainname.c b/lib/libc/gen/getdomainname.c
index 990d9f32bf40..a1c0b0338459 100644
--- a/lib/libc/gen/getdomainname.c
+++ b/lib/libc/gen/getdomainname.c
@@ -36,7 +36,7 @@
static char sccsid[] = "From: @(#)gethostname.c 8.1 (Berkeley) 6/4/93";
*/
static const char rcsid[] =
- "$Id$";
+ "$Id: getdomainname.c,v 1.1 1994/08/08 00:40:23 wollman Exp $";
#endif /* LIBC_SCCS and not lint */
#include <sys/param.h>
diff --git a/lib/libc/gen/getgrent.3 b/lib/libc/gen/getgrent.3
index 132ba6b06707..5a71601e7158 100644
--- a/lib/libc/gen/getgrent.3
+++ b/lib/libc/gen/getgrent.3
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" From: @(#)getgrent.3 8.2 (Berkeley) 4/19/94
-.\" $Id$
+.\" $Id: getgrent.3,v 1.2 1994/09/20 22:02:20 wollman Exp $
.\"
.Dd September 29, 1994
.Dt GETGRENT 3
diff --git a/lib/libc/gen/getosreldate.c b/lib/libc/gen/getosreldate.c
index 808e16b56e70..24ca54305721 100644
--- a/lib/libc/gen/getosreldate.c
+++ b/lib/libc/gen/getosreldate.c
@@ -36,7 +36,7 @@
static char sccsid[] = "@(#)gethostid.c 8.1 (Berkeley) 6/2/93";
*/
static const char rcsid[] =
- "$Id$";
+ "$Id: getosreldate.c,v 1.1 1994/08/10 06:27:35 wollman Exp $";
#endif /* LIBC_SCCS and not lint */
#include <sys/param.h>
diff --git a/lib/libc/gen/getvfsent.3 b/lib/libc/gen/getvfsent.3
index a8151b0ae317..0b79e5dcb00a 100644
--- a/lib/libc/gen/getvfsent.3
+++ b/lib/libc/gen/getvfsent.3
@@ -1,4 +1,4 @@
-.\" $Id$
+.\" $Id: getvfsent.3,v 1.1 1994/09/25 01:38:30 wollman Exp $
.\" Written by Garrett A. Wollman, September 1994.
.\" This manual page is in the public domain.
.\"
diff --git a/lib/libc/gen/ntp_gettime.c b/lib/libc/gen/ntp_gettime.c
index feae846fbc2e..4f832b98f888 100644
--- a/lib/libc/gen/ntp_gettime.c
+++ b/lib/libc/gen/ntp_gettime.c
@@ -33,7 +33,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
static const char rcsid[] =
- "$Id: ntp_gettime.c,v 1.1 1994/09/18 20:29:46 wollman Exp $";
+ "$Id: ntp_gettime.c,v 1.2 1994/09/19 22:04:28 ache Exp $";
#endif /* LIBC_SCCS and not lint */
#include <sys/param.h>
diff --git a/lib/libc/gen/setdomainname.c b/lib/libc/gen/setdomainname.c
index 6471762f4abe..72f8da4b689b 100644
--- a/lib/libc/gen/setdomainname.c
+++ b/lib/libc/gen/setdomainname.c
@@ -36,7 +36,7 @@
static char sccsid[] = "From: @(#)sethostname.c 8.1 (Berkeley) 6/4/93";
*/
static const char rcsid[] =
- "$Id$";
+ "$Id: setdomainname.c,v 1.1 1994/08/08 00:40:24 wollman Exp $";
#endif /* LIBC_SCCS and not lint */
#include <sys/param.h>
diff --git a/lib/libc/gen/shmat.c b/lib/libc/gen/shmat.c
index b38a6a5e0938..0b3ae765f439 100644
--- a/lib/libc/gen/shmat.c
+++ b/lib/libc/gen/shmat.c
@@ -1,5 +1,5 @@
#if defined(LIBC_SCCS) && !defined(lint)
-static char *rcsid = "$Id: shmat.c,v 1.2 1993/10/10 12:01:26 rgrimes Exp $";
+static char *rcsid = "$Id: shmat.c,v 1.1 1994/09/13 14:52:28 dfr Exp $";
#endif /* LIBC_SCCS and not lint */
#include <sys/types.h>
diff --git a/lib/libc/gen/shmctl.c b/lib/libc/gen/shmctl.c
index 1bb384cff063..2e43c666632b 100644
--- a/lib/libc/gen/shmctl.c
+++ b/lib/libc/gen/shmctl.c
@@ -1,5 +1,5 @@
#if defined(LIBC_SCCS) && !defined(lint)
-static char *rcsid = "$Id: shmctl.c,v 1.2 1993/10/10 12:01:28 rgrimes Exp $";
+static char *rcsid = "$Id: shmctl.c,v 1.1 1994/09/13 14:52:30 dfr Exp $";
#endif /* LIBC_SCCS and not lint */
#include <sys/types.h>
diff --git a/lib/libc/gen/shmdt.c b/lib/libc/gen/shmdt.c
index fde6078704e7..989a52401491 100644
--- a/lib/libc/gen/shmdt.c
+++ b/lib/libc/gen/shmdt.c
@@ -1,5 +1,5 @@
#if defined(LIBC_SCCS) && !defined(lint)
-static char *rcsid = "$Id: shmdt.c,v 1.2 1993/10/10 12:01:29 rgrimes Exp $";
+static char *rcsid = "$Id: shmdt.c,v 1.1 1994/09/13 14:52:31 dfr Exp $";
#endif /* LIBC_SCCS and not lint */
#include <sys/types.h>
diff --git a/lib/libc/gen/shmget.c b/lib/libc/gen/shmget.c
index 455ea888a869..dc4c40ddc89b 100644
--- a/lib/libc/gen/shmget.c
+++ b/lib/libc/gen/shmget.c
@@ -1,5 +1,5 @@
#if defined(LIBC_SCCS) && !defined(lint)
-static char *rcsid = "$Id: shmget.c,v 1.1 1993/09/27 00:57:49 rgrimes Exp $";
+static char *rcsid = "$Id: shmget.c,v 1.1 1994/09/13 14:52:32 dfr Exp $";
#endif /* LIBC_SCCS and not lint */
#include <sys/types.h>
diff --git a/lib/libc/gen/uname.c b/lib/libc/gen/uname.c
index 93f659e57843..bd8f053acf2b 100644
--- a/lib/libc/gen/uname.c
+++ b/lib/libc/gen/uname.c
@@ -34,7 +34,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char sccsid[] = "From: @(#)uname.c 8.1 (Berkeley) 1/4/94";*/
static const char rcsid[] =
- "$Id: uname.c,v 1.3 1995/05/30 05:40:29 rgrimes Exp $";
+ "$Id: uname.c,v 1.3.4.1 1995/08/25 11:35:37 davidg Exp $";
#endif /* LIBC_SCCS and not lint */
#include <sys/param.h>
diff --git a/lib/libc/i386/DEFS.h b/lib/libc/i386/DEFS.h
index 6df18a13def7..27240d7df76c 100644
--- a/lib/libc/i386/DEFS.h
+++ b/lib/libc/i386/DEFS.h
@@ -35,7 +35,7 @@
*
* from: @(#)DEFS.h 5.1 (Berkeley) 4/23/90
*
- * $Id: DEFS.h,v 1.4 1994/05/03 16:29:13 jkh Exp $
+ * $Id: DEFS.h,v 1.2 1994/08/05 01:17:56 wollman Exp $
*/
/* XXX should use align 4,0x90 for -m486. */
diff --git a/lib/libc/i386/SYS.h b/lib/libc/i386/SYS.h
index 53837ab541f5..bbd2a1d95eb6 100644
--- a/lib/libc/i386/SYS.h
+++ b/lib/libc/i386/SYS.h
@@ -35,7 +35,7 @@
*
* from: @(#)SYS.h 5.5 (Berkeley) 5/7/91
*
- * $Id: SYS.h,v 1.3 1993/11/04 00:01:17 paul Exp $
+ * $Id: SYS.h,v 1.2 1994/08/05 01:17:57 wollman Exp $
*/
#include <sys/syscall.h>
diff --git a/lib/libc/i386/gen/Makefile.inc b/lib/libc/i386/gen/Makefile.inc
index 9d6915254f68..87873af521c9 100644
--- a/lib/libc/i386/gen/Makefile.inc
+++ b/lib/libc/i386/gen/Makefile.inc
@@ -1,5 +1,5 @@
# @(#)Makefile.inc 8.1 (Berkeley) 6/4/93
-# $Id$
+# $Id: Makefile.inc,v 1.5 1995/01/23 01:26:39 davidg Exp $
SRCS+= isinf.c infinity.c
SRCS+= _setjmp.S alloca.S fabs.S ldexp.c modf.S setjmp.S sigsetjmp.S
diff --git a/lib/libc/i386/gen/_setjmp.S b/lib/libc/i386/gen/_setjmp.S
index abd268486565..876f3c0aadf8 100644
--- a/lib/libc/i386/gen/_setjmp.S
+++ b/lib/libc/i386/gen/_setjmp.S
@@ -33,12 +33,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: _setjmp.S,v 1.3 1995/01/23 01:26:41 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id$"
+ .asciz "$Id: _setjmp.S,v 1.3 1995/01/23 01:26:41 davidg Exp $"
#endif /* LIBC_RCS and not lint */
/*
diff --git a/lib/libc/i386/gen/alloca.S b/lib/libc/i386/gen/alloca.S
index f76b37bc1a15..ce9cb1901ee1 100644
--- a/lib/libc/i386/gen/alloca.S
+++ b/lib/libc/i386/gen/alloca.S
@@ -33,12 +33,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: alloca.S,v 1.2 1995/01/23 01:26:44 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id$"
+ .asciz "$Id: alloca.S,v 1.2 1995/01/23 01:26:44 davidg Exp $"
#endif /* LIBC_RCS and not lint */
/* like alloc, but automatic automatic free in return */
diff --git a/lib/libc/i386/gen/divsi3.S b/lib/libc/i386/gen/divsi3.S
index 3b09580d2478..68918c0a7fb7 100644
--- a/lib/libc/i386/gen/divsi3.S
+++ b/lib/libc/i386/gen/divsi3.S
@@ -33,12 +33,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: divsi3.S,v 1.2 1995/01/23 01:26:46 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id$"
+ .asciz "$Id: divsi3.S,v 1.2 1995/01/23 01:26:46 davidg Exp $"
#endif /* LIBC_RCS and not lint */
.globl ___divsi3
diff --git a/lib/libc/i386/gen/fabs.S b/lib/libc/i386/gen/fabs.S
index 5ae53705ffa6..dc7c470db912 100644
--- a/lib/libc/i386/gen/fabs.S
+++ b/lib/libc/i386/gen/fabs.S
@@ -33,12 +33,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: fabs.S,v 1.2 1995/01/23 01:26:48 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id$"
+ .asciz "$Id: fabs.S,v 1.2 1995/01/23 01:26:48 davidg Exp $"
#endif /* LIBC_RCS and not lint */
#include "DEFS.h"
diff --git a/lib/libc/i386/gen/fixdfsi.S b/lib/libc/i386/gen/fixdfsi.S
index 398506c6c832..f54084b17138 100644
--- a/lib/libc/i386/gen/fixdfsi.S
+++ b/lib/libc/i386/gen/fixdfsi.S
@@ -1,5 +1,5 @@
/*
- * $Id$
+ * $Id: fixdfsi.S,v 1.2 1995/01/23 01:26:50 davidg Exp $
*/
.file "__fixdfsi.s"
diff --git a/lib/libc/i386/gen/fixunsdfsi.S b/lib/libc/i386/gen/fixunsdfsi.S
index eb576ba5baae..021bd703ec43 100644
--- a/lib/libc/i386/gen/fixunsdfsi.S
+++ b/lib/libc/i386/gen/fixunsdfsi.S
@@ -34,12 +34,12 @@
* SUCH DAMAGE.
*
* from: @(#)fixunsdfsi.s 5.1 12/17/90
- * $Id: fixunsdfsi.S,v 1.2 1994/12/27 13:37:38 bde Exp $
+ * $Id: fixunsdfsi.S,v 1.3 1995/01/23 01:26:52 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id: fixunsdfsi.S,v 1.2 1994/12/27 13:37:38 bde Exp $"
+ .asciz "$Id: fixunsdfsi.S,v 1.3 1995/01/23 01:26:52 davidg Exp $"
#endif /* LIBC_RCS and not lint */
#include "DEFS.h"
diff --git a/lib/libc/i386/gen/frexp.c b/lib/libc/i386/gen/frexp.c
index aba48025ff5a..1d703c29df07 100644
--- a/lib/libc/i386/gen/frexp.c
+++ b/lib/libc/i386/gen/frexp.c
@@ -30,11 +30,11 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: frexp.c,v 1.2 1995/01/23 01:26:55 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
-static const char rcsid[] = "$Id$";
+static const char rcsid[] = "$Id: frexp.c,v 1.2 1995/01/23 01:26:55 davidg Exp $";
#endif /* LIBC_RCS and not lint */
#include <sys/types.h>
diff --git a/lib/libc/i386/gen/infinity.c b/lib/libc/i386/gen/infinity.c
index e46f676a3f6d..11929ba9ce25 100644
--- a/lib/libc/i386/gen/infinity.c
+++ b/lib/libc/i386/gen/infinity.c
@@ -1,6 +1,6 @@
/*
* infinity.c
- * $Id$
+ * $Id: infinity.c,v 1.2 1995/01/23 01:26:57 davidg Exp $
*/
#include <math.h>
diff --git a/lib/libc/i386/gen/isinf.c b/lib/libc/i386/gen/isinf.c
index c32844933fbe..d7ecde4e6f2a 100644
--- a/lib/libc/i386/gen/isinf.c
+++ b/lib/libc/i386/gen/isinf.c
@@ -30,11 +30,11 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: isinf.c,v 1.2 1995/01/23 01:27:00 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
-static const char rcsid[] = "$Id$";
+static const char rcsid[] = "$Id: isinf.c,v 1.2 1995/01/23 01:27:00 davidg Exp $";
#endif /* LIBC_RCS and not lint */
#include <sys/types.h>
diff --git a/lib/libc/i386/gen/ldexp.c b/lib/libc/i386/gen/ldexp.c
index 8b63f528dc8c..9c10f9b46a59 100644
--- a/lib/libc/i386/gen/ldexp.c
+++ b/lib/libc/i386/gen/ldexp.c
@@ -33,11 +33,11 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: ldexp.c,v 1.3 1995/01/23 01:27:02 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
-static const char rcsid[] = "$Id$";
+static const char rcsid[] = "$Id: ldexp.c,v 1.3 1995/01/23 01:27:02 davidg Exp $";
#endif /* LIBC_RCS and not lint */
/*
diff --git a/lib/libc/i386/gen/modf.S b/lib/libc/i386/gen/modf.S
index 35b993ab1f70..bce5a3519ed1 100644
--- a/lib/libc/i386/gen/modf.S
+++ b/lib/libc/i386/gen/modf.S
@@ -33,12 +33,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: modf.S,v 1.2 1995/01/23 01:27:05 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id$"
+ .asciz "$Id: modf.S,v 1.2 1995/01/23 01:27:05 davidg Exp $"
#endif /* LIBC_RCS and not lint */
/*
diff --git a/lib/libc/i386/gen/setjmp.S b/lib/libc/i386/gen/setjmp.S
index fa52b830ea1a..449ea3747fde 100644
--- a/lib/libc/i386/gen/setjmp.S
+++ b/lib/libc/i386/gen/setjmp.S
@@ -33,12 +33,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: setjmp.S,v 1.3 1995/01/23 01:27:08 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id$"
+ .asciz "$Id: setjmp.S,v 1.3 1995/01/23 01:27:08 davidg Exp $"
#endif /* LIBC_RCS and not lint */
/*
diff --git a/lib/libc/i386/gen/sigsetjmp.S b/lib/libc/i386/gen/sigsetjmp.S
index 4f592a32a113..4ec4538f3453 100644
--- a/lib/libc/i386/gen/sigsetjmp.S
+++ b/lib/libc/i386/gen/sigsetjmp.S
@@ -33,12 +33,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: sigsetjmp.S,v 1.3 1994/12/27 13:34:04 bde Exp $
+ * $Id: sigsetjmp.S,v 1.4 1995/01/23 01:27:10 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id: sigsetjmp.S,v 1.3 1994/12/27 13:34:04 bde Exp $"
+ .asciz "$Id: sigsetjmp.S,v 1.4 1995/01/23 01:27:10 davidg Exp $"
#endif /* LIBC_RCS and not lint */
#include "DEFS.h"
diff --git a/lib/libc/i386/gen/udivsi3.S b/lib/libc/i386/gen/udivsi3.S
index 55a326bea974..54fe27aed393 100644
--- a/lib/libc/i386/gen/udivsi3.S
+++ b/lib/libc/i386/gen/udivsi3.S
@@ -33,12 +33,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: udivsi3.S,v 1.2 1995/01/23 01:27:12 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id$"
+ .asciz "$Id: udivsi3.S,v 1.2 1995/01/23 01:27:12 davidg Exp $"
#endif /* LIBC_RCS and not lint */
.globl ___udivsi3
diff --git a/lib/libc/i386/net/Makefile.inc b/lib/libc/i386/net/Makefile.inc
index dff7fd1066b7..c53f780add9d 100644
--- a/lib/libc/i386/net/Makefile.inc
+++ b/lib/libc/i386/net/Makefile.inc
@@ -1,4 +1,4 @@
# @(#)Makefile.inc 8.1 (Berkeley) 6/4/93
-# $Id$
+# $Id: Makefile.inc,v 1.3 1995/01/23 01:27:57 davidg Exp $
SRCS+= htonl.S htons.S ntohl.S ntohs.S
diff --git a/lib/libc/i386/net/htonl.S b/lib/libc/i386/net/htonl.S
index 095c40a6fa73..226d3b5dc4d2 100644
--- a/lib/libc/i386/net/htonl.S
+++ b/lib/libc/i386/net/htonl.S
@@ -33,12 +33,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: htonl.S,v 1.2 1995/01/23 01:28:00 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id$"
+ .asciz "$Id: htonl.S,v 1.2 1995/01/23 01:28:00 davidg Exp $"
#endif /* LIBC_RCS and not lint */
/* netorder = htonl(hostorder) */
diff --git a/lib/libc/i386/net/htons.S b/lib/libc/i386/net/htons.S
index 238dfc24d36b..832b9e6495c9 100644
--- a/lib/libc/i386/net/htons.S
+++ b/lib/libc/i386/net/htons.S
@@ -33,12 +33,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: htons.S,v 1.2 1995/01/23 01:28:03 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id$"
+ .asciz "$Id: htons.S,v 1.2 1995/01/23 01:28:03 davidg Exp $"
#endif /* LIBC_RCS and not lint */
/* netorder = htons(hostorder) */
diff --git a/lib/libc/i386/net/ntohl.S b/lib/libc/i386/net/ntohl.S
index 5af5008c437b..76a3bb95825c 100644
--- a/lib/libc/i386/net/ntohl.S
+++ b/lib/libc/i386/net/ntohl.S
@@ -33,12 +33,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: ntohl.S,v 1.2 1995/01/23 01:28:05 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id$"
+ .asciz "$Id: ntohl.S,v 1.2 1995/01/23 01:28:05 davidg Exp $"
#endif /* LIBC_RCS and not lint */
/* hostorder = ntohl(netorder) */
diff --git a/lib/libc/i386/net/ntohs.S b/lib/libc/i386/net/ntohs.S
index 4bed4a2c19c8..b63bd87c6bfe 100644
--- a/lib/libc/i386/net/ntohs.S
+++ b/lib/libc/i386/net/ntohs.S
@@ -33,12 +33,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: ntohs.S,v 1.2 1995/01/23 01:28:09 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id$"
+ .asciz "$Id: ntohs.S,v 1.2 1995/01/23 01:28:09 davidg Exp $"
#endif /* LIBC_RCS and not lint */
/* hostorder = ntohs(netorder) */
diff --git a/lib/libc/i386/stdlib/Makefile.inc b/lib/libc/i386/stdlib/Makefile.inc
index 65ce3481497f..8b544afb20e4 100644
--- a/lib/libc/i386/stdlib/Makefile.inc
+++ b/lib/libc/i386/stdlib/Makefile.inc
@@ -1,4 +1,4 @@
# @(#)Makefile.inc 8.1 (Berkeley) 6/4/93
-# $Id$
+# $Id: Makefile.inc,v 1.3 1995/01/23 01:28:28 davidg Exp $
SRCS+= abs.S
diff --git a/lib/libc/i386/stdlib/abs.S b/lib/libc/i386/stdlib/abs.S
index 4915d16641b5..35139c89bc81 100644
--- a/lib/libc/i386/stdlib/abs.S
+++ b/lib/libc/i386/stdlib/abs.S
@@ -33,12 +33,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: abs.S,v 1.3 1995/01/23 01:28:31 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id$"
+ .asciz "$Id: abs.S,v 1.3 1995/01/23 01:28:31 davidg Exp $"
#endif /* LIBC_RCS and not lint */
#include "DEFS.h"
diff --git a/lib/libc/i386/stdlib/div.S b/lib/libc/i386/stdlib/div.S
index b4f89d280955..394e79dd196f 100644
--- a/lib/libc/i386/stdlib/div.S
+++ b/lib/libc/i386/stdlib/div.S
@@ -27,12 +27,12 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: div.S,v 1.1 1993/12/04 21:46:15 ats Exp $
+ * $Id: div.S,v 1.1 1994/08/05 01:18:19 wollman Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id: div.S,v 1.1 1993/12/04 21:46:15 ats Exp $"
+ .asciz "$Id: div.S,v 1.1 1994/08/05 01:18:19 wollman Exp $"
#endif /* LIBC_RCS and not lint */
#include "DEFS.h"
diff --git a/lib/libc/i386/stdlib/labs.S b/lib/libc/i386/stdlib/labs.S
index 5c5afe142bbc..ea86cf3532e2 100644
--- a/lib/libc/i386/stdlib/labs.S
+++ b/lib/libc/i386/stdlib/labs.S
@@ -33,12 +33,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: labs.S,v 1.3 1995/01/23 01:28:33 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id$"
+ .asciz "$Id: labs.S,v 1.3 1995/01/23 01:28:33 davidg Exp $"
#endif /* LIBC_RCS and not lint */
#include "DEFS.h"
diff --git a/lib/libc/i386/stdlib/ldiv.S b/lib/libc/i386/stdlib/ldiv.S
index de7bb948ab4c..2fd7b1735787 100644
--- a/lib/libc/i386/stdlib/ldiv.S
+++ b/lib/libc/i386/stdlib/ldiv.S
@@ -27,12 +27,12 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: ldiv.S,v 1.1 1993/12/04 21:46:17 ats Exp $
+ * $Id: ldiv.S,v 1.1 1994/08/05 01:18:21 wollman Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id: ldiv.S,v 1.1 1993/12/04 21:46:17 ats Exp $"
+ .asciz "$Id: ldiv.S,v 1.1 1994/08/05 01:18:21 wollman Exp $"
#endif /* LIBC_RCS and not lint */
#include "DEFS.h"
diff --git a/lib/libc/i386/string/Makefile.inc b/lib/libc/i386/string/Makefile.inc
index be5827f0e4cf..df9bf9855ea2 100644
--- a/lib/libc/i386/string/Makefile.inc
+++ b/lib/libc/i386/string/Makefile.inc
@@ -1,5 +1,5 @@
# @(#)Makefile.inc 8.1 (Berkeley) 6/4/93
-# $Id$
+# $Id: Makefile.inc,v 1.4 1995/01/23 01:28:45 davidg Exp $
SRCS+= bcmp.S bcopy.S bzero.S ffs.S index.S memchr.S memcmp.S \
memmove.S memset.S \
diff --git a/lib/libc/i386/string/bcmp.S b/lib/libc/i386/string/bcmp.S
index c15975a3b685..8452fdf8728a 100644
--- a/lib/libc/i386/string/bcmp.S
+++ b/lib/libc/i386/string/bcmp.S
@@ -27,12 +27,12 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: bcmp.S,v 1.1 1994/08/05 01:18:23 wollman Exp $
+ * $Id: bcmp.S,v 1.2 1995/01/23 01:28:47 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id: bcmp.S,v 1.1 1994/08/05 01:18:23 wollman Exp $"
+ .asciz "$Id: bcmp.S,v 1.2 1995/01/23 01:28:47 davidg Exp $"
#endif /* LIBC_RCS and not lint */
#include "DEFS.h"
diff --git a/lib/libc/i386/string/bcopy.S b/lib/libc/i386/string/bcopy.S
index 1a6762cb99a0..facfc3a96231 100644
--- a/lib/libc/i386/string/bcopy.S
+++ b/lib/libc/i386/string/bcopy.S
@@ -32,12 +32,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: bcopy.S,v 1.1 1994/08/05 01:18:24 wollman Exp $
+ * $Id: bcopy.S,v 1.2 1995/01/23 01:28:49 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id: bcopy.S,v 1.1 1994/08/05 01:18:24 wollman Exp $"
+ .asciz "$Id: bcopy.S,v 1.2 1995/01/23 01:28:49 davidg Exp $"
#endif /* LIBC_RCS and not lint */
#include "DEFS.h"
diff --git a/lib/libc/i386/string/bzero.S b/lib/libc/i386/string/bzero.S
index 74a1d03c46ee..1fe7299449c4 100644
--- a/lib/libc/i386/string/bzero.S
+++ b/lib/libc/i386/string/bzero.S
@@ -27,12 +27,12 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: bzero.S,v 1.1 1994/08/05 01:18:25 wollman Exp $
+ * $Id: bzero.S,v 1.2 1995/01/23 01:28:52 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id: bzero.S,v 1.1 1994/08/05 01:18:25 wollman Exp $"
+ .asciz "$Id: bzero.S,v 1.2 1995/01/23 01:28:52 davidg Exp $"
#endif /* LIBC_RCS and not lint */
#include "DEFS.h"
diff --git a/lib/libc/i386/string/ffs.S b/lib/libc/i386/string/ffs.S
index 69ef90e17ec6..e42c8a1b74c4 100644
--- a/lib/libc/i386/string/ffs.S
+++ b/lib/libc/i386/string/ffs.S
@@ -27,12 +27,12 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: ffs.S,v 1.1 1994/08/05 01:18:26 wollman Exp $
+ * $Id: ffs.S,v 1.2 1995/01/23 01:28:54 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id: ffs.S,v 1.1 1994/08/05 01:18:26 wollman Exp $"
+ .asciz "$Id: ffs.S,v 1.2 1995/01/23 01:28:54 davidg Exp $"
#endif /* LIBC_RCS and not lint */
#include "DEFS.h"
diff --git a/lib/libc/i386/string/index.S b/lib/libc/i386/string/index.S
index f7b0d8d53e85..a9984f6f79d2 100644
--- a/lib/libc/i386/string/index.S
+++ b/lib/libc/i386/string/index.S
@@ -27,12 +27,12 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: index.S,v 1.1 1994/08/05 01:18:27 wollman Exp $
+ * $Id: index.S,v 1.2 1995/01/23 01:28:56 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id: index.S,v 1.1 1994/08/05 01:18:27 wollman Exp $"
+ .asciz "$Id: index.S,v 1.2 1995/01/23 01:28:56 davidg Exp $"
#endif /* LIBC_RCS and not lint */
#include "DEFS.h"
diff --git a/lib/libc/i386/string/memchr.S b/lib/libc/i386/string/memchr.S
index dd989d4c01f0..236f7d8f12ec 100644
--- a/lib/libc/i386/string/memchr.S
+++ b/lib/libc/i386/string/memchr.S
@@ -27,12 +27,12 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: memchr.S,v 1.4 1994/11/25 08:58:53 davidg Exp $
+ * $Id: memchr.S,v 1.5 1995/01/23 01:28:58 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id: memchr.S,v 1.4 1994/11/25 08:58:53 davidg Exp $"
+ .asciz "$Id: memchr.S,v 1.5 1995/01/23 01:28:58 davidg Exp $"
#endif /* LIBC_RCS and not lint */
#include "DEFS.h"
diff --git a/lib/libc/i386/string/memcmp.S b/lib/libc/i386/string/memcmp.S
index f43329d8e724..919632f0d634 100644
--- a/lib/libc/i386/string/memcmp.S
+++ b/lib/libc/i386/string/memcmp.S
@@ -27,12 +27,12 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: memcmp.S,v 1.1 1994/08/05 01:18:29 wollman Exp $
+ * $Id: memcmp.S,v 1.2 1995/01/23 01:29:00 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id: memcmp.S,v 1.1 1994/08/05 01:18:29 wollman Exp $"
+ .asciz "$Id: memcmp.S,v 1.2 1995/01/23 01:29:00 davidg Exp $"
#endif /* LIBC_RCS and not lint */
#include "DEFS.h"
diff --git a/lib/libc/i386/string/memmove.S b/lib/libc/i386/string/memmove.S
index 1c74561d5e2d..27d6d3178bf0 100644
--- a/lib/libc/i386/string/memmove.S
+++ b/lib/libc/i386/string/memmove.S
@@ -32,12 +32,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: memmove.S,v 1.1 1994/08/05 01:18:29 wollman Exp $
+ * $Id: memmove.S,v 1.2 1995/01/23 01:29:02 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id: memmove.S,v 1.1 1994/08/05 01:18:29 wollman Exp $"
+ .asciz "$Id: memmove.S,v 1.2 1995/01/23 01:29:02 davidg Exp $"
#endif /* LIBC_RCS and not lint */
#include "DEFS.h"
diff --git a/lib/libc/i386/string/memset.S b/lib/libc/i386/string/memset.S
index 412bcbb2cca9..3b84777b4b9d 100644
--- a/lib/libc/i386/string/memset.S
+++ b/lib/libc/i386/string/memset.S
@@ -27,12 +27,12 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: memset.S,v 1.1 1994/08/05 01:18:30 wollman Exp $
+ * $Id: memset.S,v 1.2 1995/01/23 01:29:04 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id: memset.S,v 1.1 1994/08/05 01:18:30 wollman Exp $"
+ .asciz "$Id: memset.S,v 1.2 1995/01/23 01:29:04 davidg Exp $"
#endif /* LIBC_RCS and not lint */
#include "DEFS.h"
diff --git a/lib/libc/i386/string/rindex.S b/lib/libc/i386/string/rindex.S
index 53af042ab185..5d7718ae2a1b 100644
--- a/lib/libc/i386/string/rindex.S
+++ b/lib/libc/i386/string/rindex.S
@@ -27,12 +27,12 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: rindex.S,v 1.1 1994/08/05 01:18:31 wollman Exp $
+ * $Id: rindex.S,v 1.2 1995/01/23 01:29:06 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id: rindex.S,v 1.1 1994/08/05 01:18:31 wollman Exp $"
+ .asciz "$Id: rindex.S,v 1.2 1995/01/23 01:29:06 davidg Exp $"
#endif /* LIBC_RCS and not lint */
#include "DEFS.h"
diff --git a/lib/libc/i386/string/strcat.S b/lib/libc/i386/string/strcat.S
index 9d5e119cb56b..f5166a5e68b0 100644
--- a/lib/libc/i386/string/strcat.S
+++ b/lib/libc/i386/string/strcat.S
@@ -27,12 +27,12 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: strcat.S,v 1.1 1994/08/05 01:18:32 wollman Exp $
+ * $Id: strcat.S,v 1.2 1995/01/23 01:29:09 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id: strcat.S,v 1.1 1994/08/05 01:18:32 wollman Exp $"
+ .asciz "$Id: strcat.S,v 1.2 1995/01/23 01:29:09 davidg Exp $"
#endif /* LIBC_RCS and not lint */
#include "DEFS.h"
diff --git a/lib/libc/i386/string/strchr.S b/lib/libc/i386/string/strchr.S
index dd2e680545a2..97ed471e42de 100644
--- a/lib/libc/i386/string/strchr.S
+++ b/lib/libc/i386/string/strchr.S
@@ -27,12 +27,12 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: strchr.S,v 1.1 1994/08/05 01:18:33 wollman Exp $
+ * $Id: strchr.S,v 1.2 1995/01/23 01:29:12 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id: strchr.S,v 1.1 1994/08/05 01:18:33 wollman Exp $"
+ .asciz "$Id: strchr.S,v 1.2 1995/01/23 01:29:12 davidg Exp $"
#endif /* LIBC_RCS and not lint */
#include "DEFS.h"
diff --git a/lib/libc/i386/string/strcmp.S b/lib/libc/i386/string/strcmp.S
index ef076c51dd28..434a0aed91c3 100644
--- a/lib/libc/i386/string/strcmp.S
+++ b/lib/libc/i386/string/strcmp.S
@@ -27,12 +27,12 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: strcmp.S,v 1.1 1994/08/05 01:18:34 wollman Exp $
+ * $Id: strcmp.S,v 1.2 1995/01/23 01:29:14 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id: strcmp.S,v 1.1 1994/08/05 01:18:34 wollman Exp $"
+ .asciz "$Id: strcmp.S,v 1.2 1995/01/23 01:29:14 davidg Exp $"
#endif /* LIBC_RCS and not lint */
#include "DEFS.h"
diff --git a/lib/libc/i386/string/strcpy.S b/lib/libc/i386/string/strcpy.S
index 2d93e4645526..c74651cfbb06 100644
--- a/lib/libc/i386/string/strcpy.S
+++ b/lib/libc/i386/string/strcpy.S
@@ -27,12 +27,12 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: strcpy.S,v 1.1 1994/08/05 01:18:34 wollman Exp $
+ * $Id: strcpy.S,v 1.2 1995/01/23 01:29:17 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id: strcpy.S,v 1.1 1994/08/05 01:18:34 wollman Exp $"
+ .asciz "$Id: strcpy.S,v 1.2 1995/01/23 01:29:17 davidg Exp $"
#endif /* LIBC_RCS and not lint */
#include "DEFS.h"
diff --git a/lib/libc/i386/string/strlen.S b/lib/libc/i386/string/strlen.S
index 16eee1aba456..00da10187875 100644
--- a/lib/libc/i386/string/strlen.S
+++ b/lib/libc/i386/string/strlen.S
@@ -27,12 +27,12 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: strlen.S,v 1.1 1994/08/05 01:18:35 wollman Exp $
+ * $Id: strlen.S,v 1.2 1995/01/23 01:29:19 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id: strlen.S,v 1.1 1994/08/05 01:18:35 wollman Exp $"
+ .asciz "$Id: strlen.S,v 1.2 1995/01/23 01:29:19 davidg Exp $"
#endif /* LIBC_RCS and not lint */
#include "DEFS.h"
diff --git a/lib/libc/i386/string/strncmp.S b/lib/libc/i386/string/strncmp.S
index 20788bd9eadc..adea7752dd54 100644
--- a/lib/libc/i386/string/strncmp.S
+++ b/lib/libc/i386/string/strncmp.S
@@ -27,12 +27,12 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: strncmp.S,v 1.2 1994/12/27 13:12:34 bde Exp $
+ * $Id: strncmp.S,v 1.3 1995/01/23 01:29:21 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id: strncmp.S,v 1.2 1994/12/27 13:12:34 bde Exp $"
+ .asciz "$Id: strncmp.S,v 1.3 1995/01/23 01:29:21 davidg Exp $"
#endif /* LIBC_RCS and not lint */
#include "DEFS.h"
diff --git a/lib/libc/i386/string/strrchr.S b/lib/libc/i386/string/strrchr.S
index 28f063795ad1..8ee670d8c974 100644
--- a/lib/libc/i386/string/strrchr.S
+++ b/lib/libc/i386/string/strrchr.S
@@ -27,12 +27,12 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: strrchr.S,v 1.1 1994/08/05 01:18:37 wollman Exp $
+ * $Id: strrchr.S,v 1.2 1995/01/23 01:29:23 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id: strrchr.S,v 1.1 1994/08/05 01:18:37 wollman Exp $"
+ .asciz "$Id: strrchr.S,v 1.2 1995/01/23 01:29:23 davidg Exp $"
#endif /* LIBC_RCS and not lint */
#include "DEFS.h"
diff --git a/lib/libc/i386/string/swab.S b/lib/libc/i386/string/swab.S
index 87deded2443b..6e062449521d 100644
--- a/lib/libc/i386/string/swab.S
+++ b/lib/libc/i386/string/swab.S
@@ -27,12 +27,12 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: swab.S,v 1.1 1995/01/22 21:36:15 davidg Exp $
+ * $Id: swab.S,v 1.2 1995/01/23 01:29:25 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id: swab.S,v 1.1 1995/01/22 21:36:15 davidg Exp $"
+ .asciz "$Id: swab.S,v 1.2 1995/01/23 01:29:25 davidg Exp $"
#endif
#include "DEFS.h"
diff --git a/lib/libc/i386/sys/Makefile.inc b/lib/libc/i386/sys/Makefile.inc
index 6774dd3425a9..4bbec8b7a7b6 100644
--- a/lib/libc/i386/sys/Makefile.inc
+++ b/lib/libc/i386/sys/Makefile.inc
@@ -1,5 +1,5 @@
# from: Makefile.inc,v 1.1 1993/09/03 19:04:23 jtc Exp
-# $Id$
+# $Id: Makefile.inc,v 1.2 1994/02/21 05:19:06 rgrimes Exp $
.PATH: ${.CURDIR}/${MACHINE}/sys
diff --git a/lib/libc/i386/sys/Ovfork.S b/lib/libc/i386/sys/Ovfork.S
index 06e3eb6a4812..a941be2d7182 100644
--- a/lib/libc/i386/sys/Ovfork.S
+++ b/lib/libc/i386/sys/Ovfork.S
@@ -33,12 +33,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: Ovfork.S,v 1.1 1994/08/05 01:18:38 wollman Exp $
+ * $Id: Ovfork.S,v 1.2 1995/01/23 01:29:37 davidg Exp $
*/
#if defined(SYSLIBC_RCS) && !defined(lint)
.text
- .asciz "$Id$"
+ .asciz "$Id: Ovfork.S,v 1.2 1995/01/23 01:29:37 davidg Exp $"
#endif /* SYSLIBC_RCS and not lint */
#include "SYS.h"
diff --git a/lib/libc/i386/sys/brk.S b/lib/libc/i386/sys/brk.S
index c8311bbf9723..c66add4905fc 100644
--- a/lib/libc/i386/sys/brk.S
+++ b/lib/libc/i386/sys/brk.S
@@ -33,12 +33,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: brk.S,v 1.1 1994/08/05 01:18:39 wollman Exp $
+ * $Id: brk.S,v 1.2 1995/01/23 01:29:39 davidg Exp $
*/
#if defined(SYSLIBC_RCS) && !defined(lint)
.text
- .asciz "$Id$"
+ .asciz "$Id: brk.S,v 1.2 1995/01/23 01:29:39 davidg Exp $"
#endif /* SYSLIBC_RCS and not lint */
#include "SYS.h"
diff --git a/lib/libc/i386/sys/cerror.S b/lib/libc/i386/sys/cerror.S
index 875f6db37219..8c49bd4aeab4 100644
--- a/lib/libc/i386/sys/cerror.S
+++ b/lib/libc/i386/sys/cerror.S
@@ -33,12 +33,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: cerror.S,v 1.2 1994/08/13 14:00:26 davidg Exp $
+ * $Id: cerror.S,v 1.3 1995/01/23 01:29:43 davidg Exp $
*/
#if defined(SYSLIBC_RCS) && !defined(lint)
.text
- .asciz "$Id$"
+ .asciz "$Id: cerror.S,v 1.3 1995/01/23 01:29:43 davidg Exp $"
#endif /* SYSLIBC_RCS and not lint */
#include "SYS.h"
diff --git a/lib/libc/i386/sys/exect.S b/lib/libc/i386/sys/exect.S
index 74a055bd5d28..9fe53d21bc57 100644
--- a/lib/libc/i386/sys/exect.S
+++ b/lib/libc/i386/sys/exect.S
@@ -33,12 +33,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: exect.S,v 1.1 1994/08/05 01:18:42 wollman Exp $
+ * $Id: exect.S,v 1.2 1995/01/23 01:29:46 davidg Exp $
*/
#if defined(SYSLIBC_RCS) && !defined(lint)
.text
- .asciz "$Id$"
+ .asciz "$Id: exect.S,v 1.2 1995/01/23 01:29:46 davidg Exp $"
#endif /* SYSLIBC_RCS and not lint */
#include "SYS.h"
diff --git a/lib/libc/i386/sys/fork.S b/lib/libc/i386/sys/fork.S
index fe4c36d58011..8b8507711339 100644
--- a/lib/libc/i386/sys/fork.S
+++ b/lib/libc/i386/sys/fork.S
@@ -33,12 +33,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: fork.S,v 1.1 1994/08/05 01:18:44 wollman Exp $
+ * $Id: fork.S,v 1.2 1995/01/23 01:29:48 davidg Exp $
*/
#if defined(SYSLIBC_RCS) && !defined(lint)
.text
- .asciz "$Id$"
+ .asciz "$Id: fork.S,v 1.2 1995/01/23 01:29:48 davidg Exp $"
#endif /* SYSLIBC_RCS and not lint */
#include "SYS.h"
diff --git a/lib/libc/i386/sys/i386_get_ldt.2 b/lib/libc/i386/sys/i386_get_ldt.2
index ade7e10b139f..8d131c9628a3 100644
--- a/lib/libc/i386/sys/i386_get_ldt.2
+++ b/lib/libc/i386/sys/i386_get_ldt.2
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" from: @(#)fork.2 6.5 (Berkeley) 3/10/91
-.\" $Id: i386_get_ldt.2,v 1.2 1993/10/09 00:59:10 cgd Exp $
+.\" $Id: i386_get_ldt.2,v 1.1 1994/01/31 12:05:30 davidg Exp $
.\"
.Dd September 20, 1993
.Dt I386_GET_LDT 2
diff --git a/lib/libc/i386/sys/i386_get_ldt.c b/lib/libc/i386/sys/i386_get_ldt.c
index 8c4e5d221a06..5267839ec0ef 100644
--- a/lib/libc/i386/sys/i386_get_ldt.c
+++ b/lib/libc/i386/sys/i386_get_ldt.c
@@ -25,11 +25,11 @@
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: i386_get_ldt.c,v 1.2 1995/01/23 01:29:50 davidg Exp $
+ * $Id: i386_get_ldt.c,v 1.3 1995/05/30 05:40:37 rgrimes Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
-static const char rcsid[] = "$Id: i386_get_ldt.c,v 1.2 1995/01/23 01:29:50 davidg Exp $";
+static const char rcsid[] = "$Id: i386_get_ldt.c,v 1.3 1995/05/30 05:40:37 rgrimes Exp $";
#endif /* LIBC_RCS and not lint */
#include <sys/cdefs.h>
diff --git a/lib/libc/i386/sys/i386_set_ldt.c b/lib/libc/i386/sys/i386_set_ldt.c
index 8754fd12344e..3c81a2cf36fd 100644
--- a/lib/libc/i386/sys/i386_set_ldt.c
+++ b/lib/libc/i386/sys/i386_set_ldt.c
@@ -25,11 +25,11 @@
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: i386_set_ldt.c,v 1.2 1995/01/23 01:29:53 davidg Exp $
+ * $Id: i386_set_ldt.c,v 1.3 1995/05/30 05:40:38 rgrimes Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
-static const char rcsid[] = "$Id: i386_set_ldt.c,v 1.2 1995/01/23 01:29:53 davidg Exp $";
+static const char rcsid[] = "$Id: i386_set_ldt.c,v 1.3 1995/05/30 05:40:38 rgrimes Exp $";
#endif /* LIBC_RCS and not lint */
#include <sys/cdefs.h>
diff --git a/lib/libc/i386/sys/mount.S b/lib/libc/i386/sys/mount.S
index 3fbcd637db8c..a28af7a08184 100644
--- a/lib/libc/i386/sys/mount.S
+++ b/lib/libc/i386/sys/mount.S
@@ -33,12 +33,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: mount.S,v 1.1 1994/08/05 01:18:45 wollman Exp $
+ * $Id: mount.S,v 1.2 1995/01/23 01:29:55 davidg Exp $
*/
#if defined(SYSLIBC_RCS) && !defined(lint)
.text
- .asciz "$Id$"
+ .asciz "$Id: mount.S,v 1.2 1995/01/23 01:29:55 davidg Exp $"
#endif /* SYSLIBC_RCS and not lint */
#include "SYS.h"
diff --git a/lib/libc/i386/sys/pipe.S b/lib/libc/i386/sys/pipe.S
index cf3264c9c495..1741cd24e7d1 100644
--- a/lib/libc/i386/sys/pipe.S
+++ b/lib/libc/i386/sys/pipe.S
@@ -33,12 +33,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: pipe.S,v 1.1 1994/08/05 01:18:46 wollman Exp $
+ * $Id: pipe.S,v 1.2 1995/01/23 01:29:57 davidg Exp $
*/
#if defined(SYSLIBC_RCS) && !defined(lint)
.text
- .asciz "$Id$"
+ .asciz "$Id: pipe.S,v 1.2 1995/01/23 01:29:57 davidg Exp $"
#endif /* SYSLIBC_RCS and not lint */
#include "SYS.h"
diff --git a/lib/libc/i386/sys/ptrace.S b/lib/libc/i386/sys/ptrace.S
index e3ac3a5b667c..d18dd0a193a4 100644
--- a/lib/libc/i386/sys/ptrace.S
+++ b/lib/libc/i386/sys/ptrace.S
@@ -33,12 +33,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: ptrace.S,v 1.1 1994/08/05 01:18:47 wollman Exp $
+ * $Id: ptrace.S,v 1.2 1995/01/23 01:29:59 davidg Exp $
*/
#if defined(SYSLIBC_RCS) && !defined(lint)
.text
- .asciz "$Id$"
+ .asciz "$Id: ptrace.S,v 1.2 1995/01/23 01:29:59 davidg Exp $"
#endif /* SYSLIBC_RCS and not lint */
#include "SYS.h"
diff --git a/lib/libc/i386/sys/reboot.S b/lib/libc/i386/sys/reboot.S
index f90cca00cb41..5bfd77ea9759 100644
--- a/lib/libc/i386/sys/reboot.S
+++ b/lib/libc/i386/sys/reboot.S
@@ -33,12 +33,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: reboot.S,v 1.1 1994/08/05 01:18:48 wollman Exp $
+ * $Id: reboot.S,v 1.2 1995/01/23 01:30:02 davidg Exp $
*/
#if defined(SYSLIBC_RCS) && !defined(lint)
.text
- .asciz "$Id$"
+ .asciz "$Id: reboot.S,v 1.2 1995/01/23 01:30:02 davidg Exp $"
#endif /* SYSLIBC_RCS and not lint */
#include "SYS.h"
diff --git a/lib/libc/i386/sys/sbrk.S b/lib/libc/i386/sys/sbrk.S
index b0324ae3f527..90729f651ca6 100644
--- a/lib/libc/i386/sys/sbrk.S
+++ b/lib/libc/i386/sys/sbrk.S
@@ -33,12 +33,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: sbrk.S,v 1.1 1994/08/05 01:18:49 wollman Exp $
+ * $Id: sbrk.S,v 1.2 1995/01/23 01:30:04 davidg Exp $
*/
#if defined(SYSLIBC_RCS) && !defined(lint)
.text
- .asciz "$Id$"
+ .asciz "$Id: sbrk.S,v 1.2 1995/01/23 01:30:04 davidg Exp $"
#endif /* SYSLIBC_RCS and not lint */
#include "SYS.h"
diff --git a/lib/libc/i386/sys/setlogin.S b/lib/libc/i386/sys/setlogin.S
index 96c7886ec808..27e23a74ca3b 100644
--- a/lib/libc/i386/sys/setlogin.S
+++ b/lib/libc/i386/sys/setlogin.S
@@ -33,12 +33,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: setlogin.S,v 1.1 1994/08/05 01:18:50 wollman Exp $
+ * $Id: setlogin.S,v 1.2 1995/01/23 01:30:06 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id$"
+ .asciz "$Id: setlogin.S,v 1.2 1995/01/23 01:30:06 davidg Exp $"
#endif /* LIBC_RCS and not lint */
#include "SYS.h"
diff --git a/lib/libc/i386/sys/sigpending.S b/lib/libc/i386/sys/sigpending.S
index fdc1e9fb3603..d42a765dbf32 100644
--- a/lib/libc/i386/sys/sigpending.S
+++ b/lib/libc/i386/sys/sigpending.S
@@ -33,12 +33,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: sigpending.S,v 1.1 1994/08/05 01:18:51 wollman Exp $
+ * $Id: sigpending.S,v 1.2 1995/01/23 01:30:08 davidg Exp $
*/
#if defined(SYSLIBC_RCS) && !defined(lint)
.text
- .asciz "$Id$"
+ .asciz "$Id: sigpending.S,v 1.2 1995/01/23 01:30:08 davidg Exp $"
#endif /* SYSLIBC_RCS and not lint */
#include "SYS.h"
diff --git a/lib/libc/i386/sys/sigprocmask.S b/lib/libc/i386/sys/sigprocmask.S
index 1757a3ab3944..a433522a1aa5 100644
--- a/lib/libc/i386/sys/sigprocmask.S
+++ b/lib/libc/i386/sys/sigprocmask.S
@@ -33,12 +33,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: sigprocmask.S,v 1.1 1994/08/05 01:18:52 wollman Exp $
+ * $Id: sigprocmask.S,v 1.2 1995/01/23 01:30:11 davidg Exp $
*/
#if defined(SYSLIBC_RCS) && !defined(lint)
.text
- .asciz "$Id$"
+ .asciz "$Id: sigprocmask.S,v 1.2 1995/01/23 01:30:11 davidg Exp $"
#endif /* SYSLIBC_RCS and not lint */
#include "SYS.h"
diff --git a/lib/libc/i386/sys/sigreturn.S b/lib/libc/i386/sys/sigreturn.S
index ac0ffd653471..884fb1ebc58e 100644
--- a/lib/libc/i386/sys/sigreturn.S
+++ b/lib/libc/i386/sys/sigreturn.S
@@ -33,12 +33,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: sigreturn.S,v 1.1 1994/08/05 01:18:53 wollman Exp $
+ * $Id: sigreturn.S,v 1.2 1995/01/23 01:30:16 davidg Exp $
*/
#if defined(SYSLIBC_RCS) && !defined(lint)
.text
- .asciz "$Id$"
+ .asciz "$Id: sigreturn.S,v 1.2 1995/01/23 01:30:16 davidg Exp $"
#endif /* SYSLIBC_RCS and not lint */
#include "SYS.h"
diff --git a/lib/libc/i386/sys/sigsuspend.S b/lib/libc/i386/sys/sigsuspend.S
index a72154a38610..823204187886 100644
--- a/lib/libc/i386/sys/sigsuspend.S
+++ b/lib/libc/i386/sys/sigsuspend.S
@@ -33,12 +33,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: sigsuspend.S,v 1.2 1995/01/23 01:30:20 davidg Exp $
*/
#if defined(SYSLIBC_RCS) && !defined(lint)
.text
- .asciz "$Id$"
+ .asciz "$Id: sigsuspend.S,v 1.2 1995/01/23 01:30:20 davidg Exp $"
#endif /* SYSLIBC_RCS and not lint */
#include "SYS.h"
diff --git a/lib/libc/i386/sys/syscall.S b/lib/libc/i386/sys/syscall.S
index 8fcbec9cc1a6..89e91e9c6d50 100644
--- a/lib/libc/i386/sys/syscall.S
+++ b/lib/libc/i386/sys/syscall.S
@@ -33,12 +33,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: syscall.S,v 1.1 1994/08/05 01:18:55 wollman Exp $
+ * $Id: syscall.S,v 1.2 1995/01/23 01:30:24 davidg Exp $
*/
#if defined(SYSLIBC_RCS) && !defined(lint)
.text
- .asciz "$Id$"
+ .asciz "$Id: syscall.S,v 1.2 1995/01/23 01:30:24 davidg Exp $"
#endif /* SYSLIBC_RCS and not lint */
#include "SYS.h"
diff --git a/lib/libc/locale/collate.c b/lib/libc/locale/collate.c
index bdcf6a486440..d06bd5c3ad3d 100644
--- a/lib/libc/locale/collate.c
+++ b/lib/libc/locale/collate.c
@@ -24,7 +24,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: collate.c,v 1.3 1995/02/18 01:42:02 ache Exp $
+ * $Id: collate.c,v 1.4 1995/05/30 05:40:40 rgrimes Exp $
*/
#include <rune.h>
diff --git a/lib/libc/locale/collate.h b/lib/libc/locale/collate.h
index c7c0b6d668b6..80b60ea20a0a 100644
--- a/lib/libc/locale/collate.h
+++ b/lib/libc/locale/collate.h
@@ -24,7 +24,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: collate.h,v 1.4 1995/01/27 12:51:06 alex Exp alex $
+ * $Id: collate.h,v 1.1 1995/02/16 04:24:32 ache Exp $
*/
#ifndef COLLATE_H_INCLUDED
diff --git a/lib/libc/net/ether_addr.c b/lib/libc/net/ether_addr.c
index 711bb7d93a05..b287f2e361e4 100644
--- a/lib/libc/net/ether_addr.c
+++ b/lib/libc/net/ether_addr.c
@@ -35,7 +35,7 @@
* Center for Telecommunications Research
* Columbia University, New York City
*
- * $Id: ether_addr.c,v 1.1 1995/04/02 01:31:17 wpaul Exp $
+ * $Id: ether_addr.c,v 1.1.4.1 1995/08/25 11:46:33 davidg Exp $
*/
diff --git a/lib/libc/net/ethers.3 b/lib/libc/net/ethers.3
index 337618e4288b..0ee4b6c912d1 100644
--- a/lib/libc/net/ethers.3
+++ b/lib/libc/net/ethers.3
@@ -28,7 +28,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $Id$
+.\" $Id: ethers.3,v 1.1 1995/04/12 22:28:49 wpaul Exp $
.\"
.Dd April 12, 1995
.Dt ETHERS 3
diff --git a/lib/libc/net/gethostbydns.c b/lib/libc/net/gethostbydns.c
index c091abbfcac0..4f8bb090f8c8 100644
--- a/lib/libc/net/gethostbydns.c
+++ b/lib/libc/net/gethostbydns.c
@@ -53,7 +53,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
static char sccsid[] = "@(#)gethostnamadr.c 8.1 (Berkeley) 6/4/93";
-static char rcsid[] = "$Id: gethostbydns.c,v 1.4 1995/05/30 05:40:43 rgrimes Exp $";
+static char rcsid[] = "$Id: gethostbydns.c,v 1.4.4.1 1995/08/30 04:06:40 davidg Exp $";
#endif /* LIBC_SCCS and not lint */
#include <sys/param.h>
diff --git a/lib/libc/net/gethostbyht.c b/lib/libc/net/gethostbyht.c
index 4b616cd65cde..97f8d1f484f1 100644
--- a/lib/libc/net/gethostbyht.c
+++ b/lib/libc/net/gethostbyht.c
@@ -53,7 +53,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
static char sccsid[] = "@(#)gethostnamadr.c 8.1 (Berkeley) 6/4/93";
-static char rcsid[] = "$Id: gethostbyht.c,v 1.1 1994/09/25 02:12:11 pst Exp $";
+static char rcsid[] = "$Id: gethostbyht.c,v 1.2 1995/05/30 05:40:44 rgrimes Exp $";
#endif /* LIBC_SCCS and not lint */
#include <sys/param.h>
diff --git a/lib/libc/net/gethostbynis.c b/lib/libc/net/gethostbynis.c
index 53b426d19a21..397e2fa4308c 100644
--- a/lib/libc/net/gethostbynis.c
+++ b/lib/libc/net/gethostbynis.c
@@ -24,8 +24,8 @@
*/
#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "@(#)$Id$";
-static char rcsid[] = "$Id$";
+static char sccsid[] = "@(#)$Id: gethostbynis.c,v 1.1 1994/09/25 02:12:14 pst Exp $";
+static char rcsid[] = "$Id: gethostbynis.c,v 1.1 1994/09/25 02:12:14 pst Exp $";
#endif /* LIBC_SCCS and not lint */
#include <sys/param.h>
diff --git a/lib/libc/net/gethostnamadr.c b/lib/libc/net/gethostnamadr.c
index 54f78d01fa82..e1f4627bd033 100644
--- a/lib/libc/net/gethostnamadr.c
+++ b/lib/libc/net/gethostnamadr.c
@@ -24,8 +24,8 @@
*/
#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "@(#)$Id: gethostnamadr.c,v 1.6 1995/03/24 15:38:54 ache Exp $";
-static char rcsid[] = "$Id: gethostnamadr.c,v 1.6 1995/03/24 15:38:54 ache Exp $";
+static char sccsid[] = "@(#)$Id: gethostnamadr.c,v 1.7 1995/05/30 05:40:45 rgrimes Exp $";
+static char rcsid[] = "$Id: gethostnamadr.c,v 1.7 1995/05/30 05:40:45 rgrimes Exp $";
#endif /* LIBC_SCCS and not lint */
#include <sys/param.h>
diff --git a/lib/libc/net/getnetbydns.c b/lib/libc/net/getnetbydns.c
index f0a224fd5b0c..6b3eb44a3011 100644
--- a/lib/libc/net/getnetbydns.c
+++ b/lib/libc/net/getnetbydns.c
@@ -53,7 +53,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
static char sccsid[] = "@(#)gethostnamadr.c 8.1 (Berkeley) 6/4/93";
-static char rcsid[] = "$Id: getnetbydns.c,v 1.2 1994/09/25 17:45:38 pst Exp $";
+static char rcsid[] = "$Id: getnetbydns.c,v 1.3 1995/05/30 05:40:46 rgrimes Exp $";
#endif /* LIBC_SCCS and not lint */
#include <sys/param.h>
diff --git a/lib/libc/net/getnetbynis.c b/lib/libc/net/getnetbynis.c
index 21f17b9cda15..85c719eb1b15 100644
--- a/lib/libc/net/getnetbynis.c
+++ b/lib/libc/net/getnetbynis.c
@@ -24,8 +24,8 @@
*/
#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "@(#)$Id: getnetbynis.c,v 1.2 1994/09/26 02:50:43 wollman Exp $";
-static char rcsid[] = "$Id: getnetbynis.c,v 1.2 1994/09/26 02:50:43 wollman Exp $";
+static char sccsid[] = "@(#)$Id: getnetbynis.c,v 1.3 1995/05/30 05:40:47 rgrimes Exp $";
+static char rcsid[] = "$Id: getnetbynis.c,v 1.3 1995/05/30 05:40:47 rgrimes Exp $";
#endif /* LIBC_SCCS and not lint */
#include <sys/param.h>
diff --git a/lib/libc/net/getnetnamadr.c b/lib/libc/net/getnetnamadr.c
index 5d99c8f9c9d8..550776149e6e 100644
--- a/lib/libc/net/getnetnamadr.c
+++ b/lib/libc/net/getnetnamadr.c
@@ -24,8 +24,8 @@
*/
#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "@(#)$Id: getnetnamadr.c,v 1.3 1995/03/24 15:51:30 ache Exp $";
-static char rcsid[] = "$Id: getnetnamadr.c,v 1.3 1995/03/24 15:51:30 ache Exp $";
+static char sccsid[] = "@(#)$Id: getnetnamadr.c,v 1.4 1995/05/30 05:40:48 rgrimes Exp $";
+static char rcsid[] = "$Id: getnetnamadr.c,v 1.4 1995/05/30 05:40:48 rgrimes Exp $";
#endif /* LIBC_SCCS and not lint */
#include <sys/param.h>
diff --git a/lib/libc/net/herror.c b/lib/libc/net/herror.c
index 9b94ee400120..207445358c61 100644
--- a/lib/libc/net/herror.c
+++ b/lib/libc/net/herror.c
@@ -53,7 +53,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
static char sccsid[] = "@(#)herror.c 8.1 (Berkeley) 6/4/93";
-static char rcsid[] = "$Id: herror.c,v 1.2 1995/05/30 05:40:49 rgrimes Exp $";
+static char rcsid[] = "$Id: herror.c,v 1.2.4.1 1995/08/30 04:06:46 davidg Exp $";
#endif /* LIBC_SCCS and not lint */
#include <sys/types.h>
diff --git a/lib/libc/net/res_comp.c b/lib/libc/net/res_comp.c
index a78a7986629e..58b26deada88 100644
--- a/lib/libc/net/res_comp.c
+++ b/lib/libc/net/res_comp.c
@@ -53,7 +53,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
static char sccsid[] = "@(#)res_comp.c 8.1 (Berkeley) 6/4/93";
-static char rcsid[] = "$Id: res_comp.c,v 1.2 1994/09/25 02:12:32 pst Exp $";
+static char rcsid[] = "$Id: res_comp.c,v 1.3 1995/05/30 05:40:54 rgrimes Exp $";
#endif /* LIBC_SCCS and not lint */
#include <sys/param.h>
diff --git a/lib/libc/net/res_debug.c b/lib/libc/net/res_debug.c
index 08b699e3223d..74aef85b538f 100644
--- a/lib/libc/net/res_debug.c
+++ b/lib/libc/net/res_debug.c
@@ -53,7 +53,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
static char sccsid[] = "@(#)res_debug.c 8.1 (Berkeley) 6/4/93";
-static char rcsid[] = "$Id: res_debug.c,v 1.3 1995/05/30 05:40:54 rgrimes Exp $";
+static char rcsid[] = "$Id: res_debug.c,v 1.3.4.1 1995/08/30 04:06:48 davidg Exp $";
#endif /* LIBC_SCCS and not lint */
#include <sys/param.h>
diff --git a/lib/libc/net/res_init.c b/lib/libc/net/res_init.c
index 68f35c256d81..2e5e396aab74 100644
--- a/lib/libc/net/res_init.c
+++ b/lib/libc/net/res_init.c
@@ -53,7 +53,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
static char sccsid[] = "@(#)res_init.c 8.1 (Berkeley) 6/7/93";
-static char rcsid[] = "$Id: res_init.c,v 1.4 1995/05/30 05:40:55 rgrimes Exp $";
+static char rcsid[] = "$Id: res_init.c,v 1.4.4.1 1995/08/30 04:06:52 davidg Exp $";
#endif /* LIBC_SCCS and not lint */
#include <sys/param.h>
diff --git a/lib/libc/net/res_mkquery.c b/lib/libc/net/res_mkquery.c
index 2e38bf13d852..c942a2e3a62e 100644
--- a/lib/libc/net/res_mkquery.c
+++ b/lib/libc/net/res_mkquery.c
@@ -53,7 +53,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
static char sccsid[] = "@(#)res_mkquery.c 8.1 (Berkeley) 6/4/93";
-static char rcsid[] = "$Id: res_mkquery.c,v 1.4 1995/05/30 05:40:56 rgrimes Exp $";
+static char rcsid[] = "$Id: res_mkquery.c,v 1.4.4.1 1995/08/30 04:06:54 davidg Exp $";
#endif /* LIBC_SCCS and not lint */
#include <sys/param.h>
diff --git a/lib/libc/net/res_query.c b/lib/libc/net/res_query.c
index f31a185bfd10..2a1ce53a1329 100644
--- a/lib/libc/net/res_query.c
+++ b/lib/libc/net/res_query.c
@@ -53,7 +53,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
static char sccsid[] = "@(#)res_query.c 8.1 (Berkeley) 6/4/93";
-static char rcsid[] = "$Id: res_query.c,v 1.4 1995/05/30 05:40:57 rgrimes Exp $";
+static char rcsid[] = "$Id: res_query.c,v 1.4.4.1 1995/08/30 04:06:57 davidg Exp $";
#endif /* LIBC_SCCS and not lint */
#include <sys/param.h>
diff --git a/lib/libc/net/res_send.c b/lib/libc/net/res_send.c
index 8d3e410f9e65..b3ea98c4b390 100644
--- a/lib/libc/net/res_send.c
+++ b/lib/libc/net/res_send.c
@@ -53,7 +53,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
static char sccsid[] = "@(#)res_send.c 8.1 (Berkeley) 6/4/93";
-static char rcsid[] = "$Id: res_send.c,v 1.4 1995/05/30 05:40:58 rgrimes Exp $";
+static char rcsid[] = "$Id: res_send.c,v 1.4.4.1 1995/08/30 04:06:59 davidg Exp $";
#endif /* LIBC_SCCS and not lint */
/* change this to "0"
diff --git a/lib/libc/nls/catclose.3 b/lib/libc/nls/catclose.3
index f9803ffcaff7..8b46e0977fad 100644
--- a/lib/libc/nls/catclose.3
+++ b/lib/libc/nls/catclose.3
@@ -1,4 +1,4 @@
-.\" $Id$
+.\" $Id: catclose.3,v 1.1 1995/03/30 12:47:20 jkh Exp $
.\"
.\" Copyright (c) 1994 Winning Strategies, Inc.
.\" All rights reserved.
diff --git a/lib/libc/nls/catclose.c b/lib/libc/nls/catclose.c
index 341f6643aa80..501269292f6c 100644
--- a/lib/libc/nls/catclose.c
+++ b/lib/libc/nls/catclose.c
@@ -1,4 +1,4 @@
-/* $Id$ */
+/* $Id: catclose.c,v 1.1 1995/03/30 12:47:21 jkh Exp $ */
/*
* Written by J.T. Conklin, 10/05/94
diff --git a/lib/libc/nls/catgets.3 b/lib/libc/nls/catgets.3
index 3747d82390ed..f644130f343a 100644
--- a/lib/libc/nls/catgets.3
+++ b/lib/libc/nls/catgets.3
@@ -1,4 +1,4 @@
-.\" $Id$
+.\" $Id: catgets.3,v 1.1 1995/03/30 12:47:23 jkh Exp $
.\"
.\" Copyright (c) 1994 Winning Strategies, Inc.
.\" All rights reserved.
diff --git a/lib/libc/nls/catgets.c b/lib/libc/nls/catgets.c
index c29cf6468414..f2792787e96e 100644
--- a/lib/libc/nls/catgets.c
+++ b/lib/libc/nls/catgets.c
@@ -1,4 +1,4 @@
-/* $Id$ */
+/* $Id: catgets.c,v 1.1 1995/03/30 12:47:23 jkh Exp $ */
/*
* Written by J.T. Conklin, 10/05/94
diff --git a/lib/libc/nls/catopen.3 b/lib/libc/nls/catopen.3
index f581baf03dad..7e4b2f14a2c9 100644
--- a/lib/libc/nls/catopen.3
+++ b/lib/libc/nls/catopen.3
@@ -1,4 +1,4 @@
-.\" $Id$
+.\" $Id: catopen.3,v 1.1 1995/03/30 12:47:24 jkh Exp $
.\"
.\" Copyright (c) 1994 Winning Strategies, Inc.
.\" All rights reserved.
diff --git a/lib/libc/nls/catopen.c b/lib/libc/nls/catopen.c
index 5dfb727c5812..217c9c8ec63a 100644
--- a/lib/libc/nls/catopen.c
+++ b/lib/libc/nls/catopen.c
@@ -1,4 +1,4 @@
-/* $Id$ */
+/* $Id: catopen.c,v 1.1 1995/03/30 12:47:25 jkh Exp $ */
/*
* Written by J.T. Conklin, 10/05/94
diff --git a/lib/libc/nls/msgcat.c b/lib/libc/nls/msgcat.c
index d9dbe29e640a..5bf3947ddd5f 100644
--- a/lib/libc/nls/msgcat.c
+++ b/lib/libc/nls/msgcat.c
@@ -1,4 +1,4 @@
-/* $Id: msgcat.c,v 1.2 1995/05/30 05:40:59 rgrimes Exp $ */
+/* $Id: msgcat.c,v 1.2.4.1 1995/08/28 05:06:51 davidg Exp $ */
/***********************************************************
Copyright 1990, by Alfalfa Software Incorporated, Cambridge, Massachusetts.
diff --git a/lib/libc/nls/msgcat.h b/lib/libc/nls/msgcat.h
index 4fabb591529b..e2636e01a220 100644
--- a/lib/libc/nls/msgcat.h
+++ b/lib/libc/nls/msgcat.h
@@ -1,4 +1,4 @@
-/* $Id: msgcat.h,v 1.1 1995/03/30 12:47:27 jkh Exp $ */
+/* $Id: msgcat.h,v 1.2 1995/05/30 05:41:00 rgrimes Exp $ */
/* -*-c++-*- */
diff --git a/lib/libc/rpc/auth_none.c b/lib/libc/rpc/auth_none.c
index 3701363f3707..9993392bdff6 100644
--- a/lib/libc/rpc/auth_none.c
+++ b/lib/libc/rpc/auth_none.c
@@ -30,7 +30,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)auth_none.c 1.19 87/08/11 Copyr 1984 Sun Micro";*/
/*static char *sccsid = "from: @(#)auth_none.c 2.1 88/07/29 4.0 RPCSRC";*/
-static char *rcsid = "$Id: auth_none.c,v 1.1 1994/08/07 18:35:38 wollman Exp $";
+static char *rcsid = "$Id: auth_none.c,v 1.2 1995/05/30 05:41:11 rgrimes Exp $";
#endif
/*
diff --git a/lib/libc/rpc/auth_unix.c b/lib/libc/rpc/auth_unix.c
index ed374cab72ba..777f42182371 100644
--- a/lib/libc/rpc/auth_unix.c
+++ b/lib/libc/rpc/auth_unix.c
@@ -30,7 +30,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)auth_unix.c 1.19 87/08/11 Copyr 1984 Sun Micro";*/
/*static char *sccsid = "from: @(#)auth_unix.c 2.2 88/08/01 4.0 RPCSRC";*/
-static char *rcsid = "$Id: auth_unix.c,v 1.3 1995/03/18 17:55:03 ache Exp $";
+static char *rcsid = "$Id: auth_unix.c,v 1.4 1995/05/30 05:41:12 rgrimes Exp $";
#endif
/*
diff --git a/lib/libc/rpc/authunix_prot.c b/lib/libc/rpc/authunix_prot.c
index 5a8c2a465ed7..c818ba0de77c 100644
--- a/lib/libc/rpc/authunix_prot.c
+++ b/lib/libc/rpc/authunix_prot.c
@@ -30,7 +30,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)authunix_prot.c 1.15 87/08/11 Copyr 1984 Sun Micro";*/
/*static char *sccsid = "from: @(#)authunix_prot.c 2.1 88/07/29 4.0 RPCSRC";*/
-static char *rcsid = "$Id: authunix_prot.c,v 1.1 1994/08/07 18:35:40 wollman Exp $";
+static char *rcsid = "$Id: authunix_prot.c,v 1.2 1995/05/30 05:41:12 rgrimes Exp $";
#endif
/*
diff --git a/lib/libc/rpc/bindresvport.c b/lib/libc/rpc/bindresvport.c
index 3f48d268845a..e7cfe8bc91b9 100644
--- a/lib/libc/rpc/bindresvport.c
+++ b/lib/libc/rpc/bindresvport.c
@@ -30,7 +30,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)bindresvport.c 1.8 88/02/08 SMI";*/
/*static char *sccsid = "from: @(#)bindresvport.c 2.2 88/07/29 4.0 RPCSRC";*/
-static char *rcsid = "$Id: bindresvport.c,v 1.1 1994/08/07 18:35:42 wollman Exp $";
+static char *rcsid = "$Id: bindresvport.c,v 1.2 1995/05/30 05:41:13 rgrimes Exp $";
#endif
/*
diff --git a/lib/libc/rpc/clnt_generic.c b/lib/libc/rpc/clnt_generic.c
index ef4b969d4fd4..96f4c3de726a 100644
--- a/lib/libc/rpc/clnt_generic.c
+++ b/lib/libc/rpc/clnt_generic.c
@@ -30,7 +30,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)clnt_generic.c 1.4 87/08/11 (C) 1987 SMI";*/
/*static char *sccsid = "from: @(#)clnt_generic.c 2.2 88/08/01 4.0 RPCSRC";*/
-static char *rcsid = "$Id: clnt_generic.c,v 1.1 1994/08/07 18:35:43 wollman Exp $";
+static char *rcsid = "$Id: clnt_generic.c,v 1.2 1995/05/30 05:41:14 rgrimes Exp $";
#endif
/*
diff --git a/lib/libc/rpc/clnt_perror.c b/lib/libc/rpc/clnt_perror.c
index c4076cb192d6..f7ef47fbde09 100644
--- a/lib/libc/rpc/clnt_perror.c
+++ b/lib/libc/rpc/clnt_perror.c
@@ -30,7 +30,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)clnt_perror.c 1.15 87/10/07 Copyr 1984 Sun Micro";*/
/*static char *sccsid = "from: @(#)clnt_perror.c 2.1 88/07/29 4.0 RPCSRC";*/
-static char *rcsid = "$Id: clnt_perror.c,v 1.1 1994/08/07 18:35:44 wollman Exp $";
+static char *rcsid = "$Id: clnt_perror.c,v 1.2 1995/05/30 05:41:15 rgrimes Exp $";
#endif
/*
diff --git a/lib/libc/rpc/clnt_raw.c b/lib/libc/rpc/clnt_raw.c
index 0f86b3e571f5..8f8a3d8d5f9a 100644
--- a/lib/libc/rpc/clnt_raw.c
+++ b/lib/libc/rpc/clnt_raw.c
@@ -30,7 +30,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)clnt_raw.c 1.22 87/08/11 Copyr 1984 Sun Micro";*/
/*static char *sccsid = "from: @(#)clnt_raw.c 2.2 88/08/01 4.0 RPCSRC";*/
-static char *rcsid = "$Id: clnt_raw.c,v 1.1 1994/08/07 18:35:45 wollman Exp $";
+static char *rcsid = "$Id: clnt_raw.c,v 1.2 1995/05/30 05:41:16 rgrimes Exp $";
#endif
/*
diff --git a/lib/libc/rpc/clnt_simple.c b/lib/libc/rpc/clnt_simple.c
index fefef2efc288..df7fbf8df241 100644
--- a/lib/libc/rpc/clnt_simple.c
+++ b/lib/libc/rpc/clnt_simple.c
@@ -30,7 +30,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)clnt_simple.c 1.35 87/08/11 Copyr 1984 Sun Micro";*/
/*static char *sccsid = "from: @(#)clnt_simple.c 2.2 88/08/01 4.0 RPCSRC";*/
-static char *rcsid = "$Id: clnt_simple.c,v 1.1 1994/08/07 18:35:46 wollman Exp $";
+static char *rcsid = "$Id: clnt_simple.c,v 1.2 1995/05/30 05:41:17 rgrimes Exp $";
#endif
/*
diff --git a/lib/libc/rpc/clnt_tcp.c b/lib/libc/rpc/clnt_tcp.c
index 1de9d8e972f9..b7c649777a22 100644
--- a/lib/libc/rpc/clnt_tcp.c
+++ b/lib/libc/rpc/clnt_tcp.c
@@ -30,7 +30,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)clnt_tcp.c 1.37 87/10/05 Copyr 1984 Sun Micro";*/
/*static char *sccsid = "from: @(#)clnt_tcp.c 2.2 88/08/01 4.0 RPCSRC";*/
-static char *rcsid = "$Id: clnt_tcp.c,v 1.1 1994/08/07 18:35:47 wollman Exp $";
+static char *rcsid = "$Id: clnt_tcp.c,v 1.2 1995/05/30 05:41:18 rgrimes Exp $";
#endif
/*
diff --git a/lib/libc/rpc/clnt_udp.c b/lib/libc/rpc/clnt_udp.c
index 5c51fadf3de8..1e2b450e2ec6 100644
--- a/lib/libc/rpc/clnt_udp.c
+++ b/lib/libc/rpc/clnt_udp.c
@@ -30,7 +30,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)clnt_udp.c 1.39 87/08/11 Copyr 1984 Sun Micro";*/
/*static char *sccsid = "from: @(#)clnt_udp.c 2.2 88/08/01 4.0 RPCSRC";*/
-static char *rcsid = "$Id: clnt_udp.c,v 1.3 1995/05/30 05:41:19 rgrimes Exp $";
+static char *rcsid = "$Id: clnt_udp.c,v 1.3.4.1 1995/08/04 19:37:31 davidg Exp $";
#endif
/*
diff --git a/lib/libc/rpc/get_myaddress.c b/lib/libc/rpc/get_myaddress.c
index c5cd91c98c6e..04399c4c57d3 100644
--- a/lib/libc/rpc/get_myaddress.c
+++ b/lib/libc/rpc/get_myaddress.c
@@ -30,7 +30,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)get_myaddress.c 1.4 87/08/11 Copyr 1984 Sun Micro";*/
/*static char *sccsid = "from: @(#)get_myaddress.c 2.1 88/07/29 4.0 RPCSRC";*/
-static char *rcsid = "$Id: get_myaddress.c,v 1.1 1994/08/07 18:35:49 wollman Exp $";
+static char *rcsid = "$Id: get_myaddress.c,v 1.2 1995/05/30 05:41:20 rgrimes Exp $";
#endif
/*
diff --git a/lib/libc/rpc/getrpcent.c b/lib/libc/rpc/getrpcent.c
index f94fcff8f31a..824a81eb39e0 100644
--- a/lib/libc/rpc/getrpcent.c
+++ b/lib/libc/rpc/getrpcent.c
@@ -30,7 +30,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)getrpcent.c 1.14 91/03/11 Copyr 1984 Sun Micro";*/
-static char *rcsid = "$Id: getrpcent.c,v 1.1 1994/08/07 18:35:51 wollman Exp $";
+static char *rcsid = "$Id: getrpcent.c,v 1.2 1995/05/30 05:41:21 rgrimes Exp $";
#endif
/*
diff --git a/lib/libc/rpc/getrpcport.c b/lib/libc/rpc/getrpcport.c
index 75af815580fb..a081dd8771b8 100644
--- a/lib/libc/rpc/getrpcport.c
+++ b/lib/libc/rpc/getrpcport.c
@@ -30,7 +30,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)getrpcport.c 1.3 87/08/11 SMI";*/
/*static char *sccsid = "from: @(#)getrpcport.c 2.1 88/07/29 4.0 RPCSRC";*/
-static char *rcsid = "$Id: getrpcport.c,v 1.1 1994/08/07 18:35:52 wollman Exp $";
+static char *rcsid = "$Id: getrpcport.c,v 1.2 1995/05/30 05:41:22 rgrimes Exp $";
#endif
/*
diff --git a/lib/libc/rpc/pmap_clnt.c b/lib/libc/rpc/pmap_clnt.c
index a69284d917aa..8048e9bcd663 100644
--- a/lib/libc/rpc/pmap_clnt.c
+++ b/lib/libc/rpc/pmap_clnt.c
@@ -30,7 +30,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)pmap_clnt.c 1.37 87/08/11 Copyr 1984 Sun Micro";*/
/*static char *sccsid = "from: @(#)pmap_clnt.c 2.2 88/08/01 4.0 RPCSRC";*/
-static char *rcsid = "$Id: pmap_clnt.c,v 1.1 1994/08/07 18:35:53 wollman Exp $";
+static char *rcsid = "$Id: pmap_clnt.c,v 1.2 1995/05/30 05:41:22 rgrimes Exp $";
#endif
/*
diff --git a/lib/libc/rpc/pmap_getmaps.c b/lib/libc/rpc/pmap_getmaps.c
index 7f43baa63cd6..a5379c521182 100644
--- a/lib/libc/rpc/pmap_getmaps.c
+++ b/lib/libc/rpc/pmap_getmaps.c
@@ -30,7 +30,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)pmap_getmaps.c 1.10 87/08/11 Copyr 1984 Sun Micro";*/
/*static char *sccsid = "from: @(#)pmap_getmaps.c 2.2 88/08/01 4.0 RPCSRC";*/
-static char *rcsid = "$Id: pmap_getmaps.c,v 1.1 1994/08/07 18:35:54 wollman Exp $";
+static char *rcsid = "$Id: pmap_getmaps.c,v 1.2 1995/05/30 05:41:23 rgrimes Exp $";
#endif
/*
diff --git a/lib/libc/rpc/pmap_getport.c b/lib/libc/rpc/pmap_getport.c
index c982fe84977a..c1cc9c6f24e9 100644
--- a/lib/libc/rpc/pmap_getport.c
+++ b/lib/libc/rpc/pmap_getport.c
@@ -30,7 +30,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)pmap_getport.c 1.9 87/08/11 Copyr 1984 Sun Micro";*/
/*static char *sccsid = "from: @(#)pmap_getport.c 2.2 88/08/01 4.0 RPCSRC";*/
-static char *rcsid = "$Id: pmap_getport.c,v 1.1 1994/08/07 18:35:55 wollman Exp $";
+static char *rcsid = "$Id: pmap_getport.c,v 1.2 1995/05/30 05:41:24 rgrimes Exp $";
#endif
/*
diff --git a/lib/libc/rpc/pmap_prot.c b/lib/libc/rpc/pmap_prot.c
index 07b5acd5b2af..fcb9c9997157 100644
--- a/lib/libc/rpc/pmap_prot.c
+++ b/lib/libc/rpc/pmap_prot.c
@@ -30,7 +30,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)pmap_prot.c 1.17 87/08/11 Copyr 1984 Sun Micro";*/
/*static char *sccsid = "from: @(#)pmap_prot.c 2.1 88/07/29 4.0 RPCSRC";*/
-static char *rcsid = "$Id: pmap_prot.c,v 1.1 1994/08/07 18:35:56 wollman Exp $";
+static char *rcsid = "$Id: pmap_prot.c,v 1.2 1995/05/30 05:41:25 rgrimes Exp $";
#endif
/*
diff --git a/lib/libc/rpc/pmap_prot2.c b/lib/libc/rpc/pmap_prot2.c
index 5e937ed7114e..d365080d7252 100644
--- a/lib/libc/rpc/pmap_prot2.c
+++ b/lib/libc/rpc/pmap_prot2.c
@@ -30,7 +30,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)pmap_prot2.c 1.3 87/08/11 Copyr 1984 Sun Micro";*/
/*static char *sccsid = "from: @(#)pmap_prot2.c 2.1 88/07/29 4.0 RPCSRC";*/
-static char *rcsid = "$Id: pmap_prot2.c,v 1.1 1994/08/07 18:35:57 wollman Exp $";
+static char *rcsid = "$Id: pmap_prot2.c,v 1.2 1995/05/30 05:41:26 rgrimes Exp $";
#endif
/*
diff --git a/lib/libc/rpc/pmap_rmt.c b/lib/libc/rpc/pmap_rmt.c
index 6f1b04832183..2a467bd56dae 100644
--- a/lib/libc/rpc/pmap_rmt.c
+++ b/lib/libc/rpc/pmap_rmt.c
@@ -30,7 +30,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)pmap_rmt.c 1.21 87/08/27 Copyr 1984 Sun Micro";*/
/*static char *sccsid = "from: @(#)pmap_rmt.c 2.2 88/08/01 4.0 RPCSRC";*/
-static char *rcsid = "$Id: pmap_rmt.c,v 1.1 1994/08/07 18:35:57 wollman Exp $";
+static char *rcsid = "$Id: pmap_rmt.c,v 1.2 1995/05/30 05:41:27 rgrimes Exp $";
#endif
/*
diff --git a/lib/libc/rpc/rpc_callmsg.c b/lib/libc/rpc/rpc_callmsg.c
index 205280379d62..7077ea40fd0b 100644
--- a/lib/libc/rpc/rpc_callmsg.c
+++ b/lib/libc/rpc/rpc_callmsg.c
@@ -30,7 +30,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)rpc_callmsg.c 1.4 87/08/11 Copyr 1984 Sun Micro";*/
/*static char *sccsid = "from: @(#)rpc_callmsg.c 2.1 88/07/29 4.0 RPCSRC";*/
-static char *rcsid = "$Id: rpc_callmsg.c,v 1.1 1994/08/07 18:36:00 wollman Exp $";
+static char *rcsid = "$Id: rpc_callmsg.c,v 1.2 1995/05/30 05:41:28 rgrimes Exp $";
#endif
/*
diff --git a/lib/libc/rpc/rpc_commondata.c b/lib/libc/rpc/rpc_commondata.c
index aa095265b086..8437b7982a9a 100644
--- a/lib/libc/rpc/rpc_commondata.c
+++ b/lib/libc/rpc/rpc_commondata.c
@@ -29,7 +29,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)rpc_commondata.c 2.1 88/07/29 4.0 RPCSRC";*/
-static char *rcsid = "$Id: rpc_commondata.c,v 1.1 1994/08/07 18:36:01 wollman Exp $";
+static char *rcsid = "$Id: rpc_commondata.c,v 1.2 1995/05/30 05:41:29 rgrimes Exp $";
#endif
#include <rpc/rpc.h>
diff --git a/lib/libc/rpc/rpc_prot.c b/lib/libc/rpc/rpc_prot.c
index 1693b6730c83..56e4e9a455bf 100644
--- a/lib/libc/rpc/rpc_prot.c
+++ b/lib/libc/rpc/rpc_prot.c
@@ -30,7 +30,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)rpc_prot.c 1.36 87/08/11 Copyr 1984 Sun Micro";*/
/*static char *sccsid = "from: @(#)rpc_prot.c 2.3 88/08/07 4.0 RPCSRC";*/
-static char *rcsid = "$Id: rpc_prot.c,v 1.1 1994/08/07 18:36:03 wollman Exp $";
+static char *rcsid = "$Id: rpc_prot.c,v 1.2 1995/05/30 05:41:31 rgrimes Exp $";
#endif
/*
diff --git a/lib/libc/rpc/svc.c b/lib/libc/rpc/svc.c
index de16d2eac71e..8c8354b19c0e 100644
--- a/lib/libc/rpc/svc.c
+++ b/lib/libc/rpc/svc.c
@@ -30,7 +30,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)svc.c 1.44 88/02/08 Copyr 1984 Sun Micro";*/
/*static char *sccsid = "from: @(#)svc.c 2.4 88/08/11 4.0 RPCSRC";*/
-static char *rcsid = "$Id: svc.c,v 1.1 1994/08/07 18:36:06 wollman Exp $";
+static char *rcsid = "$Id: svc.c,v 1.2 1995/05/30 05:41:31 rgrimes Exp $";
#endif
/*
diff --git a/lib/libc/rpc/svc_auth.c b/lib/libc/rpc/svc_auth.c
index 6c1e560c2be1..7680786f7d50 100644
--- a/lib/libc/rpc/svc_auth.c
+++ b/lib/libc/rpc/svc_auth.c
@@ -30,7 +30,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)svc_auth.c 1.19 87/08/11 Copyr 1984 Sun Micro";*/
/*static char *sccsid = "from: @(#)svc_auth.c 2.1 88/08/07 4.0 RPCSRC";*/
-static char *rcsid = "$Id: svc_auth.c,v 1.1 1994/08/07 18:36:07 wollman Exp $";
+static char *rcsid = "$Id: svc_auth.c,v 1.2 1995/05/30 05:41:32 rgrimes Exp $";
#endif
/*
diff --git a/lib/libc/rpc/svc_auth_unix.c b/lib/libc/rpc/svc_auth_unix.c
index d7d342405fd7..7a5d24be0d4f 100644
--- a/lib/libc/rpc/svc_auth_unix.c
+++ b/lib/libc/rpc/svc_auth_unix.c
@@ -30,7 +30,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)svc_auth_unix.c 1.28 88/02/08 Copyr 1984 Sun Micro";*/
/*static char *sccsid = "from: @(#)svc_auth_unix.c 2.3 88/08/01 4.0 RPCSRC";*/
-static char *rcsid = "$Id: svc_auth_unix.c,v 1.1 1994/08/07 18:36:08 wollman Exp $";
+static char *rcsid = "$Id: svc_auth_unix.c,v 1.2 1995/05/30 05:41:33 rgrimes Exp $";
#endif
/*
diff --git a/lib/libc/rpc/svc_raw.c b/lib/libc/rpc/svc_raw.c
index 8f0694be6335..80aa9a126f93 100644
--- a/lib/libc/rpc/svc_raw.c
+++ b/lib/libc/rpc/svc_raw.c
@@ -30,7 +30,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)svc_raw.c 1.15 87/08/11 Copyr 1984 Sun Micro";*/
/*static char *sccsid = "from: @(#)svc_raw.c 2.1 88/07/29 4.0 RPCSRC";*/
-static char *rcsid = "$Id: svc_raw.c,v 1.1 1994/08/07 18:36:08 wollman Exp $";
+static char *rcsid = "$Id: svc_raw.c,v 1.2 1995/05/30 05:41:34 rgrimes Exp $";
#endif
/*
diff --git a/lib/libc/rpc/svc_run.c b/lib/libc/rpc/svc_run.c
index 730acd3f1907..64dc8bc877ec 100644
--- a/lib/libc/rpc/svc_run.c
+++ b/lib/libc/rpc/svc_run.c
@@ -30,7 +30,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)svc_run.c 1.1 87/10/13 Copyr 1984 Sun Micro";*/
/*static char *sccsid = "from: @(#)svc_run.c 2.1 88/07/29 4.0 RPCSRC";*/
-static char *rcsid = "$Id: svc_run.c,v 1.1 1994/08/07 18:36:09 wollman Exp $";
+static char *rcsid = "$Id: svc_run.c,v 1.2 1995/05/30 05:41:35 rgrimes Exp $";
#endif
/*
diff --git a/lib/libc/rpc/svc_simple.c b/lib/libc/rpc/svc_simple.c
index 75125b39a3a0..4b93a331dc82 100644
--- a/lib/libc/rpc/svc_simple.c
+++ b/lib/libc/rpc/svc_simple.c
@@ -30,7 +30,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)svc_simple.c 1.18 87/08/11 Copyr 1984 Sun Micro";*/
/*static char *sccsid = "from: @(#)svc_simple.c 2.2 88/08/01 4.0 RPCSRC";*/
-static char *rcsid = "$Id: svc_simple.c,v 1.1 1994/08/07 18:36:10 wollman Exp $";
+static char *rcsid = "$Id: svc_simple.c,v 1.2 1995/05/30 05:41:37 rgrimes Exp $";
#endif
/*
diff --git a/lib/libc/rpc/svc_tcp.c b/lib/libc/rpc/svc_tcp.c
index 6c20de9cc247..94b5ea1dcb38 100644
--- a/lib/libc/rpc/svc_tcp.c
+++ b/lib/libc/rpc/svc_tcp.c
@@ -30,7 +30,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)svc_tcp.c 1.21 87/08/11 Copyr 1984 Sun Micro";*/
/*static char *sccsid = "from: @(#)svc_tcp.c 2.2 88/08/01 4.0 RPCSRC";*/
-static char *rcsid = "$Id: svc_tcp.c,v 1.1 1994/08/07 18:36:11 wollman Exp $";
+static char *rcsid = "$Id: svc_tcp.c,v 1.2 1995/05/30 05:41:38 rgrimes Exp $";
#endif
/*
diff --git a/lib/libc/rpc/svc_udp.c b/lib/libc/rpc/svc_udp.c
index 58a90fa6e0fe..1491a582aa4f 100644
--- a/lib/libc/rpc/svc_udp.c
+++ b/lib/libc/rpc/svc_udp.c
@@ -30,7 +30,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)svc_udp.c 1.24 87/08/11 Copyr 1984 Sun Micro";*/
/*static char *sccsid = "from: @(#)svc_udp.c 2.2 88/07/29 4.0 RPCSRC";*/
-static char *rcsid = "$Id: svc_udp.c,v 1.2 1994/08/31 12:38:18 csgr Exp $";
+static char *rcsid = "$Id: svc_udp.c,v 1.3 1995/05/30 05:41:39 rgrimes Exp $";
#endif
/*
diff --git a/lib/libc/stdlib/strhash.c b/lib/libc/stdlib/strhash.c
index 0b50ce020fdd..5bc3650e0034 100644
--- a/lib/libc/stdlib/strhash.c
+++ b/lib/libc/stdlib/strhash.c
@@ -1,5 +1,5 @@
#ifndef lint
-static char *rcsid = "$Header: /home/ncvs/src/lib/libc/stdlib/strhash.c,v 1.3 1995/03/28 08:41:02 jkh Exp $";
+static char *rcsid = "$Header: /home/ncvs/src/lib/libc/stdlib/strhash.c,v 1.4 1995/05/30 05:41:55 rgrimes Exp $";
#endif
/*
@@ -37,6 +37,9 @@ static char *rcsid = "$Header: /home/ncvs/src/lib/libc/stdlib/strhash.c,v 1.3 19
/*
* $Log: strhash.c,v $
+ * Revision 1.4 1995/05/30 05:41:55 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.3 1995/03/28 08:41:02 jkh
* Fix a missing _hash() to prevent namespace pollution with the db/hash routines.
* Grrr. If the dbhash routines weren't grossly overengineered I wouldn't
diff --git a/lib/libc/stdtime/Makefile.inc b/lib/libc/stdtime/Makefile.inc
index f72048bb419a..4d93c365ada8 100644
--- a/lib/libc/stdtime/Makefile.inc
+++ b/lib/libc/stdtime/Makefile.inc
@@ -1,4 +1,4 @@
-# $Id: Makefile.inc,v 1.1 1994/09/13 03:50:55 wollman Exp $
+# $Id: Makefile.inc,v 1.2 1994/09/13 21:26:01 wollman Exp $
.PATH: ${.CURDIR}/stdtime
diff --git a/lib/libc/stdtime/strftime.c b/lib/libc/stdtime/strftime.c
index 832417541b9d..b0e82a7d639e 100644
--- a/lib/libc/stdtime/strftime.c
+++ b/lib/libc/stdtime/strftime.c
@@ -17,7 +17,7 @@
#ifdef LIBC_RCS
static const char rcsid[] =
- "$Id: strftime.c,v 1.5 1995/08/07 23:35:41 ache Exp $";
+ "$Id: strftime.c,v 1.2.4.1 1995/08/28 05:07:03 davidg Exp $";
#endif
#ifndef lint
diff --git a/lib/libc/string/strcoll.c b/lib/libc/string/strcoll.c
index 915e649dbd6d..f379822e5176 100644
--- a/lib/libc/string/strcoll.c
+++ b/lib/libc/string/strcoll.c
@@ -24,7 +24,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: strcoll.c,v 1.3 1995/02/18 01:38:58 ache Exp $
+ * $Id: strcoll.c,v 1.4 1995/04/16 22:43:45 ache Exp $
*/
#include <stdlib.h>
diff --git a/lib/libc/string/strxfrm.c b/lib/libc/string/strxfrm.c
index eb02c137c0d2..6031674e2034 100644
--- a/lib/libc/string/strxfrm.c
+++ b/lib/libc/string/strxfrm.c
@@ -24,7 +24,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: strxfrm.c,v 1.3 1995/02/18 01:39:00 ache Exp $
+ * $Id: strxfrm.c,v 1.4 1995/02/18 11:36:33 ache Exp $
*/
#include <stdlib.h>
diff --git a/lib/libc/sys/rtprio.2 b/lib/libc/sys/rtprio.2
index 2c1b4c7f84e7..8b74272999e1 100644
--- a/lib/libc/sys/rtprio.2
+++ b/lib/libc/sys/rtprio.2
@@ -27,7 +27,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $Id: rtprio.2,v 1.2 1994/09/01 12:09:17 davidg Exp $
+.\" $Id: rtprio.2,v 1.2.6.1 1995/08/28 05:07:08 davidg Exp $
.\"
.Dd July 23, 1994
.Dt RTPRIO 2
diff --git a/lib/libc/sys/semctl.2 b/lib/libc/sys/semctl.2
index fe60ce048443..f8d3a31be805 100644
--- a/lib/libc/sys/semctl.2
+++ b/lib/libc/sys/semctl.2
@@ -23,7 +23,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.\" $Id$
+.\" $Id: semctl.2,v 1.1 1995/10/03 19:17:17 joerg Exp $
.\"
.Dd September 12, 1995
.Dt SEMCTL 2
diff --git a/lib/libc/sys/semget.2 b/lib/libc/sys/semget.2
index 323aef47043d..2729309a5733 100644
--- a/lib/libc/sys/semget.2
+++ b/lib/libc/sys/semget.2
@@ -23,7 +23,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.\" $Id$
+.\" $Id: semget.2,v 1.1 1995/10/03 19:17:18 joerg Exp $
.\"
.Dd September 12, 1995
.Dt SEMGET 2
diff --git a/lib/libc/sys/semop.2 b/lib/libc/sys/semop.2
index 74fa01bc7f03..645f841e9fcd 100644
--- a/lib/libc/sys/semop.2
+++ b/lib/libc/sys/semop.2
@@ -23,7 +23,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.\" $Id$
+.\" $Id: semop.2,v 1.1 1995/10/03 19:17:19 joerg Exp $
.\"
.Dd September 22, 1995
.Dt SEMOP 2
diff --git a/lib/libc/sys/send.2 b/lib/libc/sys/send.2
index 77e2ed88df25..f8c9aa5095f2 100644
--- a/lib/libc/sys/send.2
+++ b/lib/libc/sys/send.2
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" From: @(#)send.2 8.2 (Berkeley) 2/21/94
-.\" $Id$
+.\" $Id: send.2,v 1.2 1995/02/15 22:53:02 wollman Exp $
.\"
.Dd February 15, 1995
.Dt SEND 2
diff --git a/lib/libc/sys/shmat.2 b/lib/libc/sys/shmat.2
index 587eebc6cb1d..34a56285fd4b 100644
--- a/lib/libc/sys/shmat.2
+++ b/lib/libc/sys/shmat.2
@@ -23,7 +23,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.\" $Id$
+.\" $Id: shmat.2,v 1.1 1995/10/03 19:17:20 joerg Exp $
.\"
.Dd August 2, 1995
.Dt SHMAT 2
diff --git a/lib/libc/sys/shmctl.2 b/lib/libc/sys/shmctl.2
index b1c5a4bdf6b2..31d46e822996 100644
--- a/lib/libc/sys/shmctl.2
+++ b/lib/libc/sys/shmctl.2
@@ -23,7 +23,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.\" $Id$
+.\" $Id: shmctl.2,v 1.1 1995/10/03 19:17:21 joerg Exp $
.\"
.Dd July 17, 1995
.Dt SHMCTL 2
diff --git a/lib/libc/sys/shmget.2 b/lib/libc/sys/shmget.2
index 3df3272131cd..f2d53dd5de97 100644
--- a/lib/libc/sys/shmget.2
+++ b/lib/libc/sys/shmget.2
@@ -23,7 +23,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.\" $Id$
+.\" $Id: shmget.2,v 1.1 1995/10/03 19:17:21 joerg Exp $
.\"
.Dd July 3, 1995
.Dt SHMGET 2
diff --git a/lib/libc/sys/socket.2 b/lib/libc/sys/socket.2
index e048b4674173..8f0f67f4cd55 100644
--- a/lib/libc/sys/socket.2
+++ b/lib/libc/sys/socket.2
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" From: @(#)socket.2 8.1 (Berkeley) 6/4/93
-.\" $Id$
+.\" $Id: socket.2,v 1.2 1995/02/15 22:53:04 wollman Exp $
.\"
.Dd February 15, 1995
.Dt SOCKET 2
diff --git a/lib/libc/xdr/xdr.c b/lib/libc/xdr/xdr.c
index 92d75929b096..f4530869a709 100644
--- a/lib/libc/xdr/xdr.c
+++ b/lib/libc/xdr/xdr.c
@@ -30,7 +30,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)xdr.c 1.35 87/08/12";*/
/*static char *sccsid = "from: @(#)xdr.c 2.1 88/07/29 4.0 RPCSRC";*/
-static char *rcsid = "$Id: xdr.c,v 1.1 1994/08/07 18:39:30 wollman Exp $";
+static char *rcsid = "$Id: xdr.c,v 1.2 1995/05/30 05:42:03 rgrimes Exp $";
#endif
/*
diff --git a/lib/libc/xdr/xdr_array.c b/lib/libc/xdr/xdr_array.c
index 47cc0afcb380..57b5189ba820 100644
--- a/lib/libc/xdr/xdr_array.c
+++ b/lib/libc/xdr/xdr_array.c
@@ -30,7 +30,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)xdr_array.c 1.10 87/08/11 Copyr 1984 Sun Micro";*/
/*static char *sccsid = "from: @(#)xdr_array.c 2.1 88/07/29 4.0 RPCSRC";*/
-static char *rcsid = "$Id: xdr_array.c,v 1.1 1994/08/07 18:39:31 wollman Exp $";
+static char *rcsid = "$Id: xdr_array.c,v 1.2 1995/05/30 05:42:04 rgrimes Exp $";
#endif
/*
diff --git a/lib/libc/xdr/xdr_float.c b/lib/libc/xdr/xdr_float.c
index 105ca43bbfad..e76f5439849c 100644
--- a/lib/libc/xdr/xdr_float.c
+++ b/lib/libc/xdr/xdr_float.c
@@ -30,7 +30,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)xdr_float.c 1.12 87/08/11 Copyr 1984 Sun Micro";*/
/*static char *sccsid = "from: @(#)xdr_float.c 2.1 88/07/29 4.0 RPCSRC";*/
-static char *rcsid = "$Id: xdr_float.c,v 1.1 1994/08/07 18:39:32 wollman Exp $";
+static char *rcsid = "$Id: xdr_float.c,v 1.2 1995/05/30 05:42:04 rgrimes Exp $";
#endif
/*
diff --git a/lib/libc/xdr/xdr_mem.c b/lib/libc/xdr/xdr_mem.c
index 63cacf727f52..05e01224e957 100644
--- a/lib/libc/xdr/xdr_mem.c
+++ b/lib/libc/xdr/xdr_mem.c
@@ -30,7 +30,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)xdr_mem.c 1.19 87/08/11 Copyr 1984 Sun Micro";*/
/*static char *sccsid = "from: @(#)xdr_mem.c 2.1 88/07/29 4.0 RPCSRC";*/
-static char *rcsid = "$Id: xdr_mem.c,v 1.1 1994/08/07 18:39:33 wollman Exp $";
+static char *rcsid = "$Id: xdr_mem.c,v 1.2 1995/05/30 05:42:06 rgrimes Exp $";
#endif
/*
diff --git a/lib/libc/xdr/xdr_rec.c b/lib/libc/xdr/xdr_rec.c
index 493d4436b235..dbd7d0380360 100644
--- a/lib/libc/xdr/xdr_rec.c
+++ b/lib/libc/xdr/xdr_rec.c
@@ -29,7 +29,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)xdr_rec.c 1.21 87/08/11 Copyr 1984 Sun Micro";*/
/*static char *sccsid = "from: @(#)xdr_rec.c 2.2 88/08/01 4.0 RPCSRC";*/
-static char *rcsid = "$Id: xdr_rec.c,v 1.2 1994/08/07 22:21:14 wollman Exp $";
+static char *rcsid = "$Id: xdr_rec.c,v 1.3 1995/05/30 05:42:09 rgrimes Exp $";
#endif
/*
diff --git a/lib/libc/xdr/xdr_reference.c b/lib/libc/xdr/xdr_reference.c
index d7ef28037df3..b65c8497068b 100644
--- a/lib/libc/xdr/xdr_reference.c
+++ b/lib/libc/xdr/xdr_reference.c
@@ -30,7 +30,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)xdr_reference.c 1.11 87/08/11 SMI";*/
/*static char *sccsid = "from: @(#)xdr_reference.c 2.1 88/07/29 4.0 RPCSRC";*/
-static char *rcsid = "$Id: xdr_reference.c,v 1.1 1994/08/07 18:39:34 wollman Exp $";
+static char *rcsid = "$Id: xdr_reference.c,v 1.2 1995/05/30 05:42:12 rgrimes Exp $";
#endif
/*
diff --git a/lib/libc/xdr/xdr_stdio.c b/lib/libc/xdr/xdr_stdio.c
index 5cfdf205a619..ecf6e4448872 100644
--- a/lib/libc/xdr/xdr_stdio.c
+++ b/lib/libc/xdr/xdr_stdio.c
@@ -30,7 +30,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)xdr_stdio.c 1.16 87/08/11 Copyr 1984 Sun Micro";*/
/*static char *sccsid = "from: @(#)xdr_stdio.c 2.1 88/07/29 4.0 RPCSRC";*/
-static char *rcsid = "$Id: xdr_stdio.c,v 1.1 1994/08/07 18:39:35 wollman Exp $";
+static char *rcsid = "$Id: xdr_stdio.c,v 1.2 1995/05/30 05:42:12 rgrimes Exp $";
#endif
/*
diff --git a/lib/libc/yp/Makefile.inc b/lib/libc/yp/Makefile.inc
index 9afbedf26150..9f87465d3887 100644
--- a/lib/libc/yp/Makefile.inc
+++ b/lib/libc/yp/Makefile.inc
@@ -1,5 +1,5 @@
# from: @(#)Makefile.inc 5.3 (Berkeley) 2/20/91
-# $Id: Makefile.inc,v 1.1 1993/11/01 23:56:27 paul Exp $
+# $Id: Makefile.inc,v 1.1 1994/08/07 23:04:53 wollman Exp $
# yp sources
.PATH: ${.CURDIR}/yp
diff --git a/lib/libc/yp/xdryp.c b/lib/libc/yp/xdryp.c
index c12250b70aa4..daf9874b8e9d 100644
--- a/lib/libc/yp/xdryp.c
+++ b/lib/libc/yp/xdryp.c
@@ -28,7 +28,7 @@
*/
#ifndef LINT
-static char *rcsid = "$Id: xdryp.c,v 1.2 1995/04/02 01:02:17 wpaul Exp $";
+static char *rcsid = "$Id: xdryp.c,v 1.3 1995/04/02 19:58:29 wpaul Exp $";
#endif
#include <sys/param.h>
diff --git a/lib/libc/yp/yplib.c b/lib/libc/yp/yplib.c
index 6e4da17ea3ab..99427f1d27b4 100644
--- a/lib/libc/yp/yplib.c
+++ b/lib/libc/yp/yplib.c
@@ -28,7 +28,7 @@
*/
#ifndef LINT
-static char *rcsid = "$Id: yplib.c,v 1.12 1995/09/02 04:16:21 wpaul Exp $";
+static char *rcsid = "$Id: yplib.c,v 1.10.4.2 1995/10/05 20:22:00 davidg Exp $";
#endif
#include <sys/param.h>
diff --git a/lib/libcom_err/Makefile b/lib/libcom_err/Makefile
index d702d365a2a4..2fee22d86f59 100644
--- a/lib/libcom_err/Makefile
+++ b/lib/libcom_err/Makefile
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile,v 1.1.1.1 1995/01/14 22:23:41 wollman Exp $
LIB= com_err
SRCS= com_err.c error_message.c et_name.c init_et.c
diff --git a/lib/libcom_err/com_err.3 b/lib/libcom_err/com_err.3
index ee4375b0262e..2fcd23aa2d50 100644
--- a/lib/libcom_err/com_err.3
+++ b/lib/libcom_err/com_err.3
@@ -1,7 +1,7 @@
.\" Copyright (c) 1988 Massachusetts Institute of Technology,
.\" Student Information Processing Board. All rights reserved.
.\"
-.\" $Header$
+.\" $Header: /home/ncvs/src/lib/libcom_err/com_err.3,v 1.1.1.1 1995/01/14 22:23:41 wollman Exp $
.\"
.TH COM_ERR 3 "22 Nov 1988" SIPB
.SH NAME
diff --git a/lib/libcom_err/com_err.c b/lib/libcom_err/com_err.c
index 71b520b19f52..a64ab66064ec 100644
--- a/lib/libcom_err/com_err.c
+++ b/lib/libcom_err/com_err.c
@@ -15,7 +15,7 @@
#if ! lint
static const char rcsid[] =
- "$Id: /a/ncvs/src/lib/libcom_err/com_err.c,v 1.1.1.1 1995/01/14 22:23:41 wollman Exp $";
+ "$Id: com_err.c,v 1.2 1995/01/23 22:53:12 wollman Exp $";
#endif /* ! lint */
static void
diff --git a/lib/libcom_err/doc/Makefile b/lib/libcom_err/doc/Makefile
index 7ac02619267e..d4c43b36ac10 100644
--- a/lib/libcom_err/doc/Makefile
+++ b/lib/libcom_err/doc/Makefile
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile,v 1.1.1.1 1995/01/14 22:23:41 wollman Exp $
INFO= com_err
diff --git a/lib/libcom_err/doc/com_err.texinfo b/lib/libcom_err/doc/com_err.texinfo
index 2f4b26612975..c8e45a0cc44e 100644
--- a/lib/libcom_err/doc/com_err.texinfo
+++ b/lib/libcom_err/doc/com_err.texinfo
@@ -1,8 +1,8 @@
\input texinfo @c -*-texinfo-*-
-@c $Header$
-@c $Source$
-@c $Locker$
+@c $Header: /home/ncvs/src/lib/libcom_err/doc/com_err.texinfo,v 1.1.1.1 1995/01/14 22:23:41 wollman Exp $
+@c $Source: /home/ncvs/src/lib/libcom_err/doc/com_err.texinfo,v $
+@c $Locker: $
@c Note that although this source file is in texinfo format (more
@c or less), it is not yet suitable for turning into an ``info''
diff --git a/lib/libcom_err/error_message.c b/lib/libcom_err/error_message.c
index 99dab1e582c8..4b56211aa55a 100644
--- a/lib/libcom_err/error_message.c
+++ b/lib/libcom_err/error_message.c
@@ -1,6 +1,6 @@
/*
- * $Header: error_message.c,v 1.2 89/01/25 09:08:57 shanzer Exp $
- * $Source: /paris/source/4.3/athena.lib/et.new/RCS/error_message.c,v $
+ * $Header: /home/ncvs/src/lib/libcom_err/error_message.c,v 1.1.1.1 1995/01/14 22:23:41 wollman Exp $
+ * $Source: /home/ncvs/src/lib/libcom_err/error_message.c,v $
* $Locker: $
*
* Copyright 1987 by the Student Information Processing Board
@@ -15,7 +15,7 @@
#include "internal.h"
static const char rcsid[] =
- "$Header: error_message.c,v 1.2 89/01/25 09:08:57 shanzer Exp $";
+ "$Header: /home/ncvs/src/lib/libcom_err/error_message.c,v 1.1.1.1 1995/01/14 22:23:41 wollman Exp $";
static const char copyright[] =
"Copyright 1986, 1987, 1988 by the Student Information Processing Board\nand the department of Information Systems\nof the Massachusetts Institute of Technology";
diff --git a/lib/libcom_err/et_name.c b/lib/libcom_err/et_name.c
index a896bab84e18..7af3b549d7f3 100644
--- a/lib/libcom_err/et_name.c
+++ b/lib/libcom_err/et_name.c
@@ -12,7 +12,7 @@
static const char copyright[] =
"Copyright 1987,1988 by Student Information Processing Board, Massachusetts Institute of Technology";
static const char rcsid_et_name_c[] =
- "$Header: et_name.c,v 1.7 89/01/01 06:14:56 raeburn Exp $";
+ "$Header: /home/ncvs/src/lib/libcom_err/et_name.c,v 1.1.1.1 1995/01/14 22:23:41 wollman Exp $";
#endif
static const char char_set[] =
diff --git a/lib/libcom_err/init_et.c b/lib/libcom_err/init_et.c
index 630c2ac4a0b3..281b4cd3e54c 100644
--- a/lib/libcom_err/init_et.c
+++ b/lib/libcom_err/init_et.c
@@ -1,6 +1,6 @@
/*
- * $Header: init_et.c,v 1.5 88/10/27 08:34:54 raeburn Exp $
- * $Source: /mit/raeburn/Work/et/src/RCS/init_et.c,v $
+ * $Header: /home/ncvs/src/lib/libcom_err/init_et.c,v 1.1.1.1 1995/01/14 22:23:41 wollman Exp $
+ * $Source: /home/ncvs/src/lib/libcom_err/init_et.c,v $
* $Locker: $
*
* Copyright 1986, 1987, 1988 by MIT Information Systems and
@@ -19,7 +19,7 @@
#ifndef lint
static const char rcsid_init_et_c[] =
- "$Header: init_et.c,v 1.5 88/10/27 08:34:54 raeburn Exp $";
+ "$Header: /home/ncvs/src/lib/libcom_err/init_et.c,v 1.1.1.1 1995/01/14 22:23:41 wollman Exp $";
#endif
extern char *malloc(), *realloc();
diff --git a/lib/libcompat/4.1/ascftime.c b/lib/libcompat/4.1/ascftime.c
index e842b6e82081..ac3ad8c77530 100644
--- a/lib/libcompat/4.1/ascftime.c
+++ b/lib/libcompat/4.1/ascftime.c
@@ -31,7 +31,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id$
+ * $Id: ascftime.c,v 1.1 1995/04/10 18:47:51 joerg Exp $
*/
#include <time.h>
diff --git a/lib/libcompat/4.1/cftime.3 b/lib/libcompat/4.1/cftime.3
index 5c760a9d5c31..18fa13d30a6b 100644
--- a/lib/libcompat/4.1/cftime.3
+++ b/lib/libcompat/4.1/cftime.3
@@ -32,7 +32,7 @@
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\"
-.\" $Id$
+.\" $Id: cftime.3,v 1.1 1995/04/10 18:47:52 joerg Exp $
.\"
.Dd June 15, 1993
.Os
diff --git a/lib/libcompat/4.1/cftime.c b/lib/libcompat/4.1/cftime.c
index 2e3a34bc71c8..03df0b3cd831 100644
--- a/lib/libcompat/4.1/cftime.c
+++ b/lib/libcompat/4.1/cftime.c
@@ -31,7 +31,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id$
+ * $Id: cftime.c,v 1.1 1995/04/10 18:47:53 joerg Exp $
*/
#include <time.h>
diff --git a/lib/libcompat/4.1/ftime.c b/lib/libcompat/4.1/ftime.c
index ccd3a64beea7..1f1928ee98b5 100644
--- a/lib/libcompat/4.1/ftime.c
+++ b/lib/libcompat/4.1/ftime.c
@@ -29,7 +29,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: ftime.c,v 1.3 1994/05/06 06:42:21 cgd Exp $";
+static char rcsid[] = "$Id: ftime.c,v 1.1.1.1 1994/05/27 10:33:22 rgrimes Exp $";
#endif /* not lint */
#include <sys/types.h>
diff --git a/lib/libcompat/4.1/getpw.c b/lib/libcompat/4.1/getpw.c
index 5ea696af7bdc..4bd48724e59b 100644
--- a/lib/libcompat/4.1/getpw.c
+++ b/lib/libcompat/4.1/getpw.c
@@ -29,7 +29,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: getpw.c,v 1.1 1995/04/10 18:47:55 joerg Exp $
+ * $Id: getpw.c,v 1.2 1995/05/30 05:42:17 rgrimes Exp $
*/
#include <sys/types.h>
diff --git a/lib/libcompat/4.1/gtty.c b/lib/libcompat/4.1/gtty.c
index 7875399a3fd2..d562e9a0eab7 100644
--- a/lib/libcompat/4.1/gtty.c
+++ b/lib/libcompat/4.1/gtty.c
@@ -29,7 +29,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: gtty.c,v 1.1.1.1 1994/05/27 10:33:22 rgrimes Exp $";
+static char rcsid[] = "$Id: gtty.c,v 1.2 1995/04/10 18:47:56 joerg Exp $";
#endif /* not lint */
#include <sgtty.h>
diff --git a/lib/libcompat/4.1/stty.c b/lib/libcompat/4.1/stty.c
index 91d241bce3e6..0fc157cfad18 100644
--- a/lib/libcompat/4.1/stty.c
+++ b/lib/libcompat/4.1/stty.c
@@ -29,7 +29,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: stty.c,v 1.1.1.1 1994/05/27 10:33:22 rgrimes Exp $";
+static char rcsid[] = "$Id: stty.c,v 1.2 1995/04/10 18:47:57 joerg Exp $";
#endif /* not lint */
#include <sgtty.h>
diff --git a/lib/libcompat/4.4/cuserid.3 b/lib/libcompat/4.4/cuserid.3
index 944a9a704fe2..d69021821ce1 100644
--- a/lib/libcompat/4.4/cuserid.3
+++ b/lib/libcompat/4.4/cuserid.3
@@ -29,7 +29,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.\" $Id$
+.\" $Id: cuserid.3,v 1.1 1995/04/10 18:48:03 joerg Exp $
.\"
.Dd April 10, 1995
.Os
diff --git a/lib/libcompat/SysV/ftok.3 b/lib/libcompat/SysV/ftok.3
index 9b25bf2136ac..50a93eb52c50 100644
--- a/lib/libcompat/SysV/ftok.3
+++ b/lib/libcompat/SysV/ftok.3
@@ -23,7 +23,7 @@
.\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
.\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.\" $Id: ftok.3,v 1.1 1994/06/26 16:24:57 jtc Exp $
+.\" $Id: ftok.3,v 1.1 1995/05/01 08:53:16 joerg Exp $
.Dd June 24, 1994
.Os
.Dt ftok 3
diff --git a/lib/libcompat/SysV/ftok.c b/lib/libcompat/SysV/ftok.c
index 8861509a541e..08b77318d37e 100644
--- a/lib/libcompat/SysV/ftok.c
+++ b/lib/libcompat/SysV/ftok.c
@@ -26,7 +26,7 @@
*/
#if defined(LIBC_SCCS) && !defined(lint)
-static char *rcsid = "$Id: ftok.c,v 1.2 1994/06/26 16:27:34 jtc Exp $";
+static char *rcsid = "$Id: ftok.c,v 1.1 1995/05/01 08:53:21 joerg Exp $";
#endif /* LIBC_SCCS and not lint */
#include <sys/types.h>
diff --git a/lib/libcrypt/Makefile b/lib/libcrypt/Makefile
index d4d5057297d2..0ac5a24c32e0 100644
--- a/lib/libcrypt/Makefile
+++ b/lib/libcrypt/Makefile
@@ -1,5 +1,5 @@
#
-# $Id: Makefile,v 1.6 1994/11/14 06:44:45 bde Exp $
+# $Id: Makefile,v 1.7 1995/05/30 05:42:21 rgrimes Exp $
#
LCRYPTBASE= libcrypt
diff --git a/lib/libcrypt/crypt.c b/lib/libcrypt/crypt.c
index 0b475614b358..3f2fe2ef20bb 100644
--- a/lib/libcrypt/crypt.c
+++ b/lib/libcrypt/crypt.c
@@ -6,12 +6,12 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id: crypt.c,v 1.2 1994/11/07 21:07:09 phk Exp $
+ * $Id: crypt.c,v 1.3 1995/05/30 05:42:22 rgrimes Exp $
*
*/
#if defined(LIBC_SCCS) && !defined(lint)
-static char rcsid[] = "$Header: /home/ncvs/src/lib/libcrypt/crypt.c,v 1.2 1994/11/07 21:07:09 phk Exp $";
+static char rcsid[] = "$Header: /home/ncvs/src/lib/libcrypt/crypt.c,v 1.3 1995/05/30 05:42:22 rgrimes Exp $";
#endif /* LIBC_SCCS and not lint */
#include <unistd.h>
diff --git a/lib/libcurses/Makefile b/lib/libcurses/Makefile
index 26e9a145e9ca..fd2e711b8e0a 100644
--- a/lib/libcurses/Makefile
+++ b/lib/libcurses/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.2 (Berkeley) 1/2/94
-# $Id: Makefile,v 1.4 1994/10/12 01:57:56 ache Exp $
+# $Id: Makefile,v 1.5 1995/03/19 21:47:42 nate Exp $
CFLAGS+=#-DTFILE=\"/dev/ttyp0\"
CFLAGS+=-D_CURSES_PRIVATE -I${.CURDIR}
diff --git a/lib/libkvm/kvm_getprocs.3 b/lib/libkvm/kvm_getprocs.3
index 244b991cb728..fa6a71dce60f 100644
--- a/lib/libkvm/kvm_getprocs.3
+++ b/lib/libkvm/kvm_getprocs.3
@@ -34,7 +34,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)kvm_getprocs.3 8.1 (Berkeley) 6/4/93
-.\" $Id: kvm_getprocs.3,v 1.3 1995/06/25 03:35:49 bde Exp $
+.\" $Id: kvm_getprocs.3,v 1.1.1.1.6.1 1995/07/07 07:15:10 rgrimes Exp $
.\"
.Dd June 4, 1993
.Dt KVM_GETPROCS 3
diff --git a/lib/libm/Makefile b/lib/libm/Makefile
index d832963270e5..11fa1f5e1833 100644
--- a/lib/libm/Makefile
+++ b/lib/libm/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 6/4/93
-# $Id$
+# $Id: Makefile,v 1.2 1994/08/05 01:52:05 wollman Exp $
#
# ieee - for most IEEE machines, we hope.
# mc68881 - the, ahem, mc68881.
diff --git a/lib/libmd/mdXhl.c b/lib/libmd/mdXhl.c
index db0703e54f82..550483f93620 100644
--- a/lib/libmd/mdXhl.c
+++ b/lib/libmd/mdXhl.c
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id: mdXhl.c,v 1.6 1995/07/12 09:13:47 phk Exp $
+ * $Id: mdXhl.c,v 1.5.4.1 1995/09/06 14:18:34 davidg Exp $
*
*/
diff --git a/lib/libmytinfo/Makefile b/lib/libmytinfo/Makefile
index a5593c206a53..4f2f8ef44a86 100644
--- a/lib/libmytinfo/Makefile
+++ b/lib/libmytinfo/Makefile
@@ -1,7 +1,7 @@
# Makefile for libmytinfo
# Use 'make update_term_h' manually after changing internal
# mytinfo structures
-# $Id: Makefile,v 1.8 1994/11/16 11:54:09 ache Exp $
+# $Id: Makefile,v 1.8.4.1 1995/08/31 21:41:18 davidg Exp $
LIB= mytinfo
SRCS= addstr.c binorder.c buildpath.c caplist.c capsort.c compar.c\
diff --git a/lib/libmytinfo/TESTS/Makefile b/lib/libmytinfo/TESTS/Makefile
index eeaa6d241172..b21a4e9ddac5 100644
--- a/lib/libmytinfo/TESTS/Makefile
+++ b/lib/libmytinfo/TESTS/Makefile
@@ -1,5 +1,5 @@
# Makefile for libmytinfo tests
-# $Id$
+# $Id: Makefile,v 1.1 1994/10/09 16:37:30 ache Exp $
LIB= mytinfo
diff --git a/lib/libncurses/Makefile b/lib/libncurses/Makefile
index 90fdfd799b3b..a01d0e5b7042 100644
--- a/lib/libncurses/Makefile
+++ b/lib/libncurses/Makefile
@@ -1,5 +1,5 @@
# Makefile for ncurses
-# $Id: Makefile,v 1.13 1995/05/08 16:08:49 ache Exp $
+# $Id: Makefile,v 1.13.4.1 1995/08/31 21:50:02 davidg Exp $
LIB= ncurses
SHLIB_MAJOR= 3
diff --git a/lib/libncurses/TESTS/newdemo.c b/lib/libncurses/TESTS/newdemo.c
index 5573557b08ec..540aba40293f 100644
--- a/lib/libncurses/TESTS/newdemo.c
+++ b/lib/libncurses/TESTS/newdemo.c
@@ -1,4 +1,4 @@
-/* $Header: /home/ncvs/src/lib/libncurses/TESTS/newdemo.c,v 1.1.1.1 1994/10/07 08:58:56 ache Exp $
+/* $Header: /home/ncvs/src/lib/libncurses/TESTS/newdemo.c,v 1.2 1995/05/30 05:47:07 rgrimes Exp $
*
* newdemo.c - A demo program using PDCurses. The program illustrate
* the use of colours for text output.
diff --git a/lib/libpcap/Makefile b/lib/libpcap/Makefile
index 50d6c928b604..bfb6a2c32deb 100644
--- a/lib/libpcap/Makefile
+++ b/lib/libpcap/Makefile
@@ -1,5 +1,5 @@
# Makefile for libpcap
-# $Id: Makefile,v 1.3 1995/02/23 18:47:06 ache Exp $
+# $Id: Makefile,v 1.3.4.1 1995/08/31 21:50:13 davidg Exp $
LIB= pcap
diff --git a/lib/libpcap/bpf_filter.c b/lib/libpcap/bpf_filter.c
index e755b59eb727..c012bd703857 100644
--- a/lib/libpcap/bpf_filter.c
+++ b/lib/libpcap/bpf_filter.c
@@ -38,11 +38,11 @@
* @(#)bpf.c 7.5 (Berkeley) 7/15/91
*
* static char rcsid[] =
- * "$Header: /home/ncvs/src/lib/libpcap/bpf_filter.c,v 1.1.1.1 1995/01/20 04:13:02 jkh Exp $";
+ * "$Header: /home/ncvs/src/lib/libpcap/bpf_filter.c,v 1.2 1995/05/30 05:47:18 rgrimes Exp $";
*/
#if !(defined(lint) || defined(KERNEL))
static char rcsid[] =
- "@(#) $Header: /home/ncvs/src/lib/libpcap/bpf_filter.c,v 1.1.1.1 1995/01/20 04:13:02 jkh Exp $ (LBL)";
+ "@(#) $Header: /home/ncvs/src/lib/libpcap/bpf_filter.c,v 1.2 1995/05/30 05:47:18 rgrimes Exp $ (LBL)";
#endif
#include <sys/param.h>
diff --git a/lib/libpcap/bpf_image.c b/lib/libpcap/bpf_image.c
index e86fa8501835..3dcf22fc9b2a 100644
--- a/lib/libpcap/bpf_image.c
+++ b/lib/libpcap/bpf_image.c
@@ -21,7 +21,7 @@
#ifndef lint
static char rcsid[] =
- "@(#) $Header: bpf_image.c,v 1.12 94/01/31 03:22:34 leres Exp $ (LBL)";
+ "@(#) $Header: /home/ncvs/src/lib/libpcap/bpf_image.c,v 1.1.1.1 1995/01/20 04:13:05 jkh Exp $ (LBL)";
#endif
#include <sys/types.h>
diff --git a/lib/libpcap/etherent.c b/lib/libpcap/etherent.c
index 7045f3dcf04b..01ccbd79479f 100644
--- a/lib/libpcap/etherent.c
+++ b/lib/libpcap/etherent.c
@@ -20,7 +20,7 @@
*/
#ifndef lint
static char rcsid[] =
- "@(#) $Header: etherent.c,v 1.8 94/06/20 19:07:50 leres Exp $ (LBL)";
+ "@(#) $Header: /home/ncvs/src/lib/libpcap/etherent.c,v 1.1.1.1 1995/01/20 04:13:05 jkh Exp $ (LBL)";
#endif
#include <sys/types.h>
diff --git a/lib/libpcap/ethertype.h b/lib/libpcap/ethertype.h
index 37f6920c9601..b639a74d7708 100644
--- a/lib/libpcap/ethertype.h
+++ b/lib/libpcap/ethertype.h
@@ -18,7 +18,7 @@
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * @(#) $Header: ethertype.h,v 1.2 94/06/14 20:03:27 leres Exp $ (LBL)
+ * @(#) $Header: /home/ncvs/src/lib/libpcap/ethertype.h,v 1.1.1.1 1995/01/20 04:13:05 jkh Exp $ (LBL)
*/
/* Map between Ethernet protocol types and names */
diff --git a/lib/libpcap/gencode.c b/lib/libpcap/gencode.c
index 3f237c105c9f..8121322ca958 100644
--- a/lib/libpcap/gencode.c
+++ b/lib/libpcap/gencode.c
@@ -20,7 +20,7 @@
*/
#ifndef lint
static char rcsid[] =
- "@(#) $Header: /home/ncvs/src/lib/libpcap/gencode.c,v 1.1.1.1 1995/01/20 04:13:04 jkh Exp $ (LBL)";
+ "@(#) $Header: /home/ncvs/src/lib/libpcap/gencode.c,v 1.1.1.1.4.1 1995/08/30 08:51:45 davidg Exp $ (LBL)";
#endif
#include <sys/types.h>
diff --git a/lib/libpcap/gencode.h b/lib/libpcap/gencode.h
index 34d4c19ef583..8444684c4c60 100644
--- a/lib/libpcap/gencode.h
+++ b/lib/libpcap/gencode.h
@@ -18,7 +18,7 @@
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * @(#) $Header: /home/ncvs/src/lib/libpcap/gencode.h,v 1.1.1.1 1995/01/20 04:13:06 jkh Exp $ (LBL)
+ * @(#) $Header: /home/ncvs/src/lib/libpcap/gencode.h,v 1.2 1995/05/30 05:47:20 rgrimes Exp $ (LBL)
*/
/*
diff --git a/lib/libpcap/grammar.y b/lib/libpcap/grammar.y
index 4c17bdc81607..a25579b85dde 100644
--- a/lib/libpcap/grammar.y
+++ b/lib/libpcap/grammar.y
@@ -22,7 +22,7 @@
*/
#ifndef lint
static char rcsid[] =
- "@(#) $Header: /home/ncvs/src/lib/libpcap/grammar.y,v 1.1.1.1 1995/01/20 04:13:06 jkh Exp $ (LBL)";
+ "@(#) $Header: /home/ncvs/src/lib/libpcap/grammar.y,v 1.2 1995/02/21 10:46:34 olah Exp $ (LBL)";
#endif
#include <sys/types.h>
diff --git a/lib/libpcap/inet.c b/lib/libpcap/inet.c
index 004e27506bfd..087b7b42283e 100644
--- a/lib/libpcap/inet.c
+++ b/lib/libpcap/inet.c
@@ -33,7 +33,7 @@
#ifndef lint
static char rcsid[] =
- "@(#) $Header: inet.c,v 1.4 94/06/07 01:16:50 leres Exp $ (LBL)";
+ "@(#) $Header: /home/ncvs/src/lib/libpcap/inet.c,v 1.1.1.1 1995/01/20 04:13:03 jkh Exp $ (LBL)";
#endif
#include <sys/param.h>
diff --git a/lib/libpcap/nametoaddr.c b/lib/libpcap/nametoaddr.c
index 9732f97997b7..2594cbac29db 100644
--- a/lib/libpcap/nametoaddr.c
+++ b/lib/libpcap/nametoaddr.c
@@ -24,7 +24,7 @@
#ifndef lint
static char rcsid[] =
- "@(#) $Header: /home/ncvs/src/lib/libpcap/nametoaddr.c,v 1.1.1.1 1995/01/20 04:13:03 jkh Exp $ (LBL)";
+ "@(#) $Header: /home/ncvs/src/lib/libpcap/nametoaddr.c,v 1.2 1995/05/30 05:47:21 rgrimes Exp $ (LBL)";
#endif
#include <sys/param.h>
diff --git a/lib/libpcap/optimize.c b/lib/libpcap/optimize.c
index 50eb88ef6056..760dea96b007 100644
--- a/lib/libpcap/optimize.c
+++ b/lib/libpcap/optimize.c
@@ -22,7 +22,7 @@
*/
#ifndef lint
static char rcsid[] =
- "@(#) $Header: optimize.c,v 1.45 94/06/20 19:07:55 leres Exp $ (LBL)";
+ "@(#) $Header: /home/ncvs/src/lib/libpcap/optimize.c,v 1.1.1.1 1995/01/20 04:13:03 jkh Exp $ (LBL)";
#endif
#include <sys/types.h>
diff --git a/lib/libpcap/pcap-bpf.c b/lib/libpcap/pcap-bpf.c
index 39e61978e377..2493e1aae0e8 100644
--- a/lib/libpcap/pcap-bpf.c
+++ b/lib/libpcap/pcap-bpf.c
@@ -20,7 +20,7 @@
*/
#ifndef lint
static char rcsid[] =
- "@(#)$Header: pcap-bpf.c,v 1.14 94/06/03 19:58:49 leres Exp $ (LBL)";
+ "@(#)$Header: /home/ncvs/src/lib/libpcap/pcap-bpf.c,v 1.1.1.1 1995/01/20 04:13:03 jkh Exp $ (LBL)";
#endif
#include <stdio.h>
diff --git a/lib/libpcap/pcap-dlpi.c b/lib/libpcap/pcap-dlpi.c
index adcffcd1ea0d..a4be23ab5a8e 100644
--- a/lib/libpcap/pcap-dlpi.c
+++ b/lib/libpcap/pcap-dlpi.c
@@ -23,7 +23,7 @@
*/
#ifndef lint
static char rcsid[] =
- "@(#)$Header: pcap-dlpi.c,v 1.22x 94/10/12 20:08:15 leres Exp $ (LBL)";
+ "@(#)$Header: /home/ncvs/src/lib/libpcap/pcap-dlpi.c,v 1.1.1.1 1995/01/20 04:13:03 jkh Exp $ (LBL)";
#endif
/*
diff --git a/lib/libpcap/pcap-int.h b/lib/libpcap/pcap-int.h
index db3677afa180..6a304852cb4f 100644
--- a/lib/libpcap/pcap-int.h
+++ b/lib/libpcap/pcap-int.h
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * @(#) $Header: /home/ncvs/src/lib/libpcap/pcap-int.h,v 1.1.1.1 1995/01/20 04:13:06 jkh Exp $ (LBL)
+ * @(#) $Header: /home/ncvs/src/lib/libpcap/pcap-int.h,v 1.2 1995/05/30 05:47:23 rgrimes Exp $ (LBL)
*/
#ifndef pcap_int_h
diff --git a/lib/libpcap/pcap-namedb.h b/lib/libpcap/pcap-namedb.h
index 347122709df2..2ff846404bd3 100644
--- a/lib/libpcap/pcap-namedb.h
+++ b/lib/libpcap/pcap-namedb.h
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * @(#) $Header: pcap-namedb.h,v 1.2 94/06/14 20:03:34 leres Exp $ (LBL)
+ * @(#) $Header: /home/ncvs/src/lib/libpcap/pcap-namedb.h,v 1.1.1.1 1995/01/20 04:13:05 jkh Exp $ (LBL)
*/
#ifndef lib_pcap_ethers_h
diff --git a/lib/libpcap/pcap-nit.c b/lib/libpcap/pcap-nit.c
index 125e14f9fa08..4233c7c5b2fe 100644
--- a/lib/libpcap/pcap-nit.c
+++ b/lib/libpcap/pcap-nit.c
@@ -20,7 +20,7 @@
*/
#ifndef lint
static char rcsid[] =
- "@(#)$Header: pcap-nit.c,v 1.24 94/02/10 23:02:37 leres Exp $ (LBL)";
+ "@(#)$Header: /home/ncvs/src/lib/libpcap/pcap-nit.c,v 1.1.1.1 1995/01/20 04:13:03 jkh Exp $ (LBL)";
#endif
#include <sys/types.h>
diff --git a/lib/libpcap/pcap-nit.h b/lib/libpcap/pcap-nit.h
index dc1c9e8eec07..f3cbd4267d04 100644
--- a/lib/libpcap/pcap-nit.h
+++ b/lib/libpcap/pcap-nit.h
@@ -15,5 +15,5 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * @(#) $Header: pcap-nit.h,v 1.2 94/06/14 20:06:03 leres Exp $ (LBL)
+ * @(#) $Header: /home/ncvs/src/lib/libpcap/pcap-nit.h,v 1.1.1.1 1995/01/20 04:13:05 jkh Exp $ (LBL)
*/
diff --git a/lib/libpcap/pcap-pf.c b/lib/libpcap/pcap-pf.c
index 483dc975ff7d..5d3785728a73 100644
--- a/lib/libpcap/pcap-pf.c
+++ b/lib/libpcap/pcap-pf.c
@@ -20,7 +20,7 @@
*/
#ifndef lint
static char rcsid[] =
- "@(#)$Header: pcap-pf.c,v 1.32 94/06/10 17:41:01 mccanne Exp $ (LBL)";
+ "@(#)$Header: /home/ncvs/src/lib/libpcap/pcap-pf.c,v 1.1.1.1 1995/01/20 04:13:03 jkh Exp $ (LBL)";
#endif
/*
diff --git a/lib/libpcap/pcap-pf.h b/lib/libpcap/pcap-pf.h
index 65ca067ef082..63c194d20155 100644
--- a/lib/libpcap/pcap-pf.h
+++ b/lib/libpcap/pcap-pf.h
@@ -15,5 +15,5 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * @(#) $Header: pcap-pf.h,v 1.2 94/06/14 20:06:33 leres Exp $ (LBL)
+ * @(#) $Header: /home/ncvs/src/lib/libpcap/pcap-pf.h,v 1.1.1.1 1995/01/20 04:13:05 jkh Exp $ (LBL)
*/
diff --git a/lib/libpcap/pcap-snit.c b/lib/libpcap/pcap-snit.c
index 562b9657a366..6114f2c3c40a 100644
--- a/lib/libpcap/pcap-snit.c
+++ b/lib/libpcap/pcap-snit.c
@@ -20,7 +20,7 @@
*/
#ifndef lint
static char rcsid[] =
- "@(#)$Header: pcap-snit.c,v 1.33 94/06/23 13:51:17 leres Exp $ (LBL)";
+ "@(#)$Header: /home/ncvs/src/lib/libpcap/pcap-snit.c,v 1.1.1.1 1995/01/20 04:13:03 jkh Exp $ (LBL)";
#endif
/*
diff --git a/lib/libpcap/pcap-snoop.c b/lib/libpcap/pcap-snoop.c
index 50f978576684..09c135e65638 100644
--- a/lib/libpcap/pcap-snoop.c
+++ b/lib/libpcap/pcap-snoop.c
@@ -20,7 +20,7 @@
*/
#ifndef lint
static char rcsid[] =
- "@(#)$Header: pcap-snoop.c,v 1.6 94/01/31 05:26:09 leres Exp $ (LBL)";
+ "@(#)$Header: /home/ncvs/src/lib/libpcap/pcap-snoop.c,v 1.1.1.1 1995/01/20 04:13:03 jkh Exp $ (LBL)";
#endif
#include <sys/param.h>
diff --git a/lib/libpcap/pcap.c b/lib/libpcap/pcap.c
index 44d65aeebd00..e0e0c1acb046 100644
--- a/lib/libpcap/pcap.c
+++ b/lib/libpcap/pcap.c
@@ -33,7 +33,7 @@
#ifndef lint
static char rcsid[] =
- "@(#) $Header: /home/ncvs/src/lib/libpcap/pcap.c,v 1.2 1995/02/23 06:55:14 phk Exp $ (LBL)";
+ "@(#) $Header: /home/ncvs/src/lib/libpcap/pcap.c,v 1.3 1995/05/30 05:47:24 rgrimes Exp $ (LBL)";
#endif
#include <sys/types.h>
diff --git a/lib/libpcap/pcap.h b/lib/libpcap/pcap.h
index 506b15b1e6c9..160eda03ff60 100644
--- a/lib/libpcap/pcap.h
+++ b/lib/libpcap/pcap.h
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * @(#) $Header: pcap.h,v 1.15 94/06/14 20:03:34 leres Exp $ (LBL)
+ * @(#) $Header: /home/ncvs/src/lib/libpcap/pcap.h,v 1.1.1.1 1995/01/20 04:13:05 jkh Exp $ (LBL)
*/
#ifndef lib_pcap_h
diff --git a/lib/libpcap/savefile.c b/lib/libpcap/savefile.c
index 90ee7238175f..e64520f0d88e 100644
--- a/lib/libpcap/savefile.c
+++ b/lib/libpcap/savefile.c
@@ -20,7 +20,7 @@
*/
#ifndef lint
static char rcsid[] =
- "@(#)$Header: savefile.c,v 1.16 94/06/20 19:07:56 leres Exp $ (LBL)";
+ "@(#)$Header: /home/ncvs/src/lib/libpcap/savefile.c,v 1.1.1.1 1995/01/20 04:13:03 jkh Exp $ (LBL)";
#endif
/*
diff --git a/lib/libpcap/scanner.l b/lib/libpcap/scanner.l
index c2ff10d98755..499b68a2ae88 100644
--- a/lib/libpcap/scanner.l
+++ b/lib/libpcap/scanner.l
@@ -22,7 +22,7 @@
#ifndef lint
static char rcsid[] =
- "@(#) $Header: scanner.l,v 1.40 94/06/10 17:21:44 mccanne Exp $ (LBL)";
+ "@(#) $Header: /home/ncvs/src/lib/libpcap/scanner.l,v 1.1.1.1 1995/01/20 04:13:06 jkh Exp $ (LBL)";
#endif
#include <sys/types.h>
diff --git a/lib/librpcsvc/Makefile b/lib/librpcsvc/Makefile
index 11779f7cc5dd..aeb6e6fa6510 100644
--- a/lib/librpcsvc/Makefile
+++ b/lib/librpcsvc/Makefile
@@ -1,5 +1,5 @@
# from: @(#)Makefile 5.10 (Berkeley) 6/24/90
-# $Id: Makefile,v 1.3 1994/08/28 17:48:43 bde Exp $
+# $Id: Makefile,v 1.4 1995/03/04 17:39:24 nate Exp $
.PATH: ${DESTDIR}/usr/include/rpcsvc
diff --git a/lib/libscsi/scsi.c b/lib/libscsi/scsi.c
index 29051718fa9f..04b3bbd8c994 100644
--- a/lib/libscsi/scsi.c
+++ b/lib/libscsi/scsi.c
@@ -30,7 +30,7 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
- * $Id: scsi.c,v 1.5 1995/05/05 20:40:02 dufault Exp $
+ * $Id: scsi.c,v 1.6 1995/05/30 05:47:26 rgrimes Exp $
*/
#include <stdlib.h>
#include <stdio.h>
diff --git a/lib/libskey/pathnames.h b/lib/libskey/pathnames.h
index 87c8a2356dfa..137da80d105f 100644
--- a/lib/libskey/pathnames.h
+++ b/lib/libskey/pathnames.h
@@ -1,4 +1,4 @@
-/* $Id: pathnames.h,v 1.1 1994/05/27 07:50:08 pst Exp $ (FreeBSD) */
+/* $Id: pathnames.h,v 1.2 1994/10/19 00:03:14 pst Exp $ (FreeBSD) */
#include <paths.h>
diff --git a/lib/libss/Makefile b/lib/libss/Makefile
index 2f9fa091dbb4..290d1f3e851c 100644
--- a/lib/libss/Makefile
+++ b/lib/libss/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.8 1995/05/30 05:47:36 rgrimes Exp $
+# $Id: Makefile,v 1.8.4.1 1995/08/31 21:50:18 davidg Exp $
LIB= ss
SRCS= ss_err.c data.c error.c execute_cmd.c help.c invocation.c list_rqs.c \
diff --git a/lib/libtelnet/Makefile b/lib/libtelnet/Makefile
index 5ab752297aa4..d215434c37c5 100644
--- a/lib/libtelnet/Makefile
+++ b/lib/libtelnet/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.2 (Berkeley) 12/15/93
-# $Id: Makefile,v 1.3 1994/08/12 22:41:25 csgr Exp $
+# $Id: Makefile,v 1.4 1995/05/30 05:47:41 rgrimes Exp $
LIB= telnet
SRCS= genget.c getent.c misc.c
diff --git a/lib/libtermcap/termcap.h b/lib/libtermcap/termcap.h
index 26ac71c58a6d..afdc8f38580e 100644
--- a/lib/libtermcap/termcap.h
+++ b/lib/libtermcap/termcap.h
@@ -24,7 +24,7 @@
* SUCH DAMAGE.
*/
-/* $Id: termcap.h,v 1.6 1995/08/05 21:21:54 ache Exp $ */
+/* $Id: termcap.h,v 1.4.4.1 1995/09/02 17:42:14 davidg Exp $ */
#ifndef _TERMCAP_H_
#define _TERMCAP_H_
diff --git a/lib/msun/Makefile b/lib/msun/Makefile
index 642b002df6a9..12bf2aeb6ec5 100644
--- a/lib/msun/Makefile
+++ b/lib/msun/Makefile
@@ -1,5 +1,5 @@
# @(#)Makefile 5.1beta 93/09/24
-# $Id: Makefile,v 1.4 1995/03/08 01:41:40 bde Exp $
+# $Id: Makefile,v 1.5 1995/05/30 05:47:47 rgrimes Exp $
#
# ====================================================
# Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
diff --git a/lib/msun/i387/e_acos.S b/lib/msun/i387/e_acos.S
index 8e6f8637316c..854c6bc8af60 100644
--- a/lib/msun/i387/e_acos.S
+++ b/lib/msun/i387/e_acos.S
@@ -35,7 +35,7 @@
#include <machine/asmacros.h>
-RCSID("$Id: e_acos.S,v 1.1.1.1 1994/08/19 09:40:00 jkh Exp $")
+RCSID("$Id: e_acos.S,v 1.2 1994/08/19 11:12:52 jkh Exp $")
/* acos = atan (sqrt(1 - x^2) / x) */
ENTRY(__ieee754_acos)
diff --git a/lib/msun/i387/e_asin.S b/lib/msun/i387/e_asin.S
index 93e62f53da5a..78c4f1d4a73c 100644
--- a/lib/msun/i387/e_asin.S
+++ b/lib/msun/i387/e_asin.S
@@ -35,7 +35,7 @@
#include <machine/asmacros.h>
-RCSID("$Id: e_asin.S,v 1.1.1.1 1994/08/19 09:40:00 jkh Exp $")
+RCSID("$Id: e_asin.S,v 1.2 1994/08/19 11:14:12 jkh Exp $")
/* asin = atan (x / sqrt(1 - x^2)) */
ENTRY(__ieee754_asin)
diff --git a/lib/msun/i387/e_atan2.S b/lib/msun/i387/e_atan2.S
index cd16476ede3c..98d37f56a996 100644
--- a/lib/msun/i387/e_atan2.S
+++ b/lib/msun/i387/e_atan2.S
@@ -35,7 +35,7 @@
#include <machine/asmacros.h>
-RCSID("$Id: e_atan2.S,v 1.1.1.1 1994/08/19 09:40:01 jkh Exp $")
+RCSID("$Id: e_atan2.S,v 1.2 1994/08/19 11:14:13 jkh Exp $")
ENTRY(__ieee754_atan2)
fldl 4(%esp)
diff --git a/lib/msun/i387/e_exp.S b/lib/msun/i387/e_exp.S
index 0e2028edc045..8ef3fbdf840f 100644
--- a/lib/msun/i387/e_exp.S
+++ b/lib/msun/i387/e_exp.S
@@ -35,7 +35,7 @@
#include <machine/asmacros.h>
-RCSID("$Id: e_exp.S,v 1.1.1.1 1994/08/19 09:40:00 jkh Exp $")
+RCSID("$Id: e_exp.S,v 1.2 1994/08/19 11:14:14 jkh Exp $")
/* e^x = 2^(x * log2(e)) */
ENTRY(__ieee754_exp)
diff --git a/lib/msun/i387/e_fmod.S b/lib/msun/i387/e_fmod.S
index bacb4d8527dc..6897c831ef7c 100644
--- a/lib/msun/i387/e_fmod.S
+++ b/lib/msun/i387/e_fmod.S
@@ -35,7 +35,7 @@
#include <machine/asmacros.h>
-RCSID("$Id: e_fmod.S,v 1.1.1.1 1994/08/19 09:40:01 jkh Exp $")
+RCSID("$Id: e_fmod.S,v 1.2 1994/08/19 11:14:15 jkh Exp $")
ENTRY(__ieee754_fmod)
fldl 12(%esp)
diff --git a/lib/msun/i387/e_log.S b/lib/msun/i387/e_log.S
index 28ed68612772..490694a167be 100644
--- a/lib/msun/i387/e_log.S
+++ b/lib/msun/i387/e_log.S
@@ -35,7 +35,7 @@
#include <machine/asmacros.h>
-RCSID("$Id: e_log.S,v 1.1.1.1 1994/08/19 09:40:00 jkh Exp $")
+RCSID("$Id: e_log.S,v 1.2 1994/08/19 11:14:15 jkh Exp $")
ENTRY(__ieee754_log)
fldln2
diff --git a/lib/msun/i387/e_log10.S b/lib/msun/i387/e_log10.S
index 612a374995e0..44ce987943f2 100644
--- a/lib/msun/i387/e_log10.S
+++ b/lib/msun/i387/e_log10.S
@@ -35,7 +35,7 @@
#include <machine/asmacros.h>
-RCSID("$Id: e_log10.S,v 1.1.1.1 1994/08/19 09:40:00 jkh Exp $")
+RCSID("$Id: e_log10.S,v 1.2 1994/08/19 11:14:16 jkh Exp $")
ENTRY(__ieee754_log10)
fldlg2
diff --git a/lib/msun/i387/e_remainder.S b/lib/msun/i387/e_remainder.S
index c67f6ab7492a..ae8aafb616ba 100644
--- a/lib/msun/i387/e_remainder.S
+++ b/lib/msun/i387/e_remainder.S
@@ -35,7 +35,7 @@
#include <machine/asmacros.h>
-RCSID("$Id: e_remainder.S,v 1.1.1.1 1994/08/19 09:40:01 jkh Exp $")
+RCSID("$Id: e_remainder.S,v 1.2 1994/08/19 11:14:18 jkh Exp $")
ENTRY(__ieee754_remainder)
fldl 12(%esp)
diff --git a/lib/msun/i387/e_scalb.S b/lib/msun/i387/e_scalb.S
index e832d1a30f99..7b13bb0d78cc 100644
--- a/lib/msun/i387/e_scalb.S
+++ b/lib/msun/i387/e_scalb.S
@@ -35,7 +35,7 @@
#include <machine/asmacros.h>
-RCSID("$Id: e_scalb.S,v 1.1.1.1 1994/08/19 09:40:00 jkh Exp $")
+RCSID("$Id: e_scalb.S,v 1.2 1994/08/19 11:14:19 jkh Exp $")
ENTRY(__ieee754_scalb)
fldl 12(%esp)
diff --git a/lib/msun/i387/e_sqrt.S b/lib/msun/i387/e_sqrt.S
index 7625e7b91ec3..5207e3308175 100644
--- a/lib/msun/i387/e_sqrt.S
+++ b/lib/msun/i387/e_sqrt.S
@@ -35,7 +35,7 @@
#include <machine/asmacros.h>
-RCSID("$Id: e_sqrt.S,v 1.1.1.1 1994/08/19 09:40:00 jkh Exp $")
+RCSID("$Id: e_sqrt.S,v 1.2 1994/08/19 11:14:20 jkh Exp $")
ENTRY(__ieee754_sqrt)
fldl 4(%esp)
diff --git a/lib/msun/i387/s_atan.S b/lib/msun/i387/s_atan.S
index 266f80ac4572..ef3fa8177250 100644
--- a/lib/msun/i387/s_atan.S
+++ b/lib/msun/i387/s_atan.S
@@ -35,7 +35,7 @@
#include <machine/asmacros.h>
-RCSID("$Id: s_atan.S,v 1.1.1.1 1994/08/19 09:40:00 jkh Exp $")
+RCSID("$Id: s_atan.S,v 1.2 1994/08/19 11:14:20 jkh Exp $")
ENTRY(atan)
fldl 4(%esp)
diff --git a/lib/msun/i387/s_ceil.S b/lib/msun/i387/s_ceil.S
index c500263a1c4a..275206f8afe6 100644
--- a/lib/msun/i387/s_ceil.S
+++ b/lib/msun/i387/s_ceil.S
@@ -35,7 +35,7 @@
#include <machine/asmacros.h>
-RCSID("$Id: s_ceil.S,v 1.1.1.1 1994/08/19 09:40:00 jkh Exp $")
+RCSID("$Id: s_ceil.S,v 1.2 1994/08/19 11:14:21 jkh Exp $")
ENTRY(ceil)
pushl %ebp
diff --git a/lib/msun/i387/s_copysign.S b/lib/msun/i387/s_copysign.S
index 1733af5428f4..3df8d625012c 100644
--- a/lib/msun/i387/s_copysign.S
+++ b/lib/msun/i387/s_copysign.S
@@ -35,7 +35,7 @@
#include <machine/asmacros.h>
-RCSID("$Id: s_copysign.S,v 1.1.1.1 1994/08/19 09:40:00 jkh Exp $")
+RCSID("$Id: s_copysign.S,v 1.2 1994/08/19 11:14:22 jkh Exp $")
ENTRY(copysign)
movl 16(%esp),%edx
diff --git a/lib/msun/i387/s_cos.S b/lib/msun/i387/s_cos.S
index e1a122ff9056..74d1567c92b0 100644
--- a/lib/msun/i387/s_cos.S
+++ b/lib/msun/i387/s_cos.S
@@ -35,7 +35,7 @@
#include <machine/asmacros.h>
-RCSID("$Id: s_cos.S,v 1.1.1.1 1994/08/19 09:40:01 jkh Exp $")
+RCSID("$Id: s_cos.S,v 1.2 1994/08/19 11:14:23 jkh Exp $")
ENTRY(cos)
fldl 4(%esp)
diff --git a/lib/msun/i387/s_finite.S b/lib/msun/i387/s_finite.S
index d80bba6f828f..4e9b6b3cd2ff 100644
--- a/lib/msun/i387/s_finite.S
+++ b/lib/msun/i387/s_finite.S
@@ -35,7 +35,7 @@
#include <machine/asmacros.h>
-RCSID("$Id: s_finite.S,v 1.1.1.1 1994/08/19 09:40:01 jkh Exp $")
+RCSID("$Id: s_finite.S,v 1.2 1994/08/19 11:14:24 jkh Exp $")
ENTRY(finite)
movl 8(%esp),%eax
diff --git a/lib/msun/i387/s_floor.S b/lib/msun/i387/s_floor.S
index 129b01ec2136..9b576eb682fb 100644
--- a/lib/msun/i387/s_floor.S
+++ b/lib/msun/i387/s_floor.S
@@ -35,7 +35,7 @@
#include <machine/asmacros.h>
-RCSID("$Id: s_floor.S,v 1.1.1.1 1994/08/19 09:40:01 jkh Exp $")
+RCSID("$Id: s_floor.S,v 1.2 1994/08/19 11:14:25 jkh Exp $")
ENTRY(floor)
pushl %ebp
diff --git a/lib/msun/i387/s_ilogb.S b/lib/msun/i387/s_ilogb.S
index 57fdf674b745..52fabdc52253 100644
--- a/lib/msun/i387/s_ilogb.S
+++ b/lib/msun/i387/s_ilogb.S
@@ -35,7 +35,7 @@
#include <machine/asmacros.h>
-RCSID("$Id: s_ilogb.S,v 1.1.1.1 1994/08/19 09:40:01 jkh Exp $")
+RCSID("$Id: s_ilogb.S,v 1.2 1994/08/19 11:14:26 jkh Exp $")
ENTRY(ilogb)
pushl %esp
diff --git a/lib/msun/i387/s_log1p.S b/lib/msun/i387/s_log1p.S
index ad511bee358a..58637694807b 100644
--- a/lib/msun/i387/s_log1p.S
+++ b/lib/msun/i387/s_log1p.S
@@ -35,7 +35,7 @@
#include <machine/asmacros.h>
-RCSID("$Id: s_log1p.S,v 1.4 1994/08/19 03:55:57 jtc Exp $")
+RCSID("$Id: s_log1p.S,v 1.3 1994/08/19 23:52:29 jkh Exp $")
/*
* The fyl2xp1 instruction has such a limited range:
diff --git a/lib/msun/i387/s_logb.S b/lib/msun/i387/s_logb.S
index 6992459c939d..d39b4488188c 100644
--- a/lib/msun/i387/s_logb.S
+++ b/lib/msun/i387/s_logb.S
@@ -35,7 +35,7 @@
#include <machine/asmacros.h>
-RCSID("$Id: s_logb.S,v 1.1.1.1 1994/08/19 09:40:01 jkh Exp $")
+RCSID("$Id: s_logb.S,v 1.2 1994/08/19 11:14:28 jkh Exp $")
ENTRY(logb)
fldl 4(%esp)
diff --git a/lib/msun/i387/s_rint.S b/lib/msun/i387/s_rint.S
index 54888078dd99..e3254437f92b 100644
--- a/lib/msun/i387/s_rint.S
+++ b/lib/msun/i387/s_rint.S
@@ -35,7 +35,7 @@
#include <machine/asmacros.h>
-RCSID("$Id: s_rint.S,v 1.1.1.1 1994/08/19 09:40:01 jkh Exp $")
+RCSID("$Id: s_rint.S,v 1.2 1994/08/19 11:14:29 jkh Exp $")
ENTRY(rint)
fldl 4(%esp)
diff --git a/lib/msun/i387/s_scalbn.S b/lib/msun/i387/s_scalbn.S
index 83672ee53edd..8f3f1b7e7c83 100644
--- a/lib/msun/i387/s_scalbn.S
+++ b/lib/msun/i387/s_scalbn.S
@@ -35,7 +35,7 @@
#include <machine/asmacros.h>
-RCSID("$Id: s_scalbn.S,v 1.1.1.1 1994/08/19 09:40:01 jkh Exp $")
+RCSID("$Id: s_scalbn.S,v 1.2 1994/08/19 11:14:30 jkh Exp $")
ENTRY(scalbn)
fildl 12(%esp)
diff --git a/lib/msun/i387/s_significand.S b/lib/msun/i387/s_significand.S
index f980dd60a43a..414211fdce02 100644
--- a/lib/msun/i387/s_significand.S
+++ b/lib/msun/i387/s_significand.S
@@ -35,7 +35,7 @@
#include <machine/asmacros.h>
-RCSID("$Id: s_significand.S,v 1.1.1.1 1994/08/19 09:40:01 jkh Exp $")
+RCSID("$Id: s_significand.S,v 1.2 1994/08/19 11:14:30 jkh Exp $")
ENTRY(significand)
fldl 4(%esp)
diff --git a/lib/msun/i387/s_sin.S b/lib/msun/i387/s_sin.S
index 56d7a7a87243..3b605bb026da 100644
--- a/lib/msun/i387/s_sin.S
+++ b/lib/msun/i387/s_sin.S
@@ -35,7 +35,7 @@
#include <machine/asmacros.h>
-RCSID("$Id: s_sin.S,v 1.1.1.1 1994/08/19 09:40:01 jkh Exp $")
+RCSID("$Id: s_sin.S,v 1.2 1994/08/19 11:14:31 jkh Exp $")
ENTRY(sin)
fldl 4(%esp)
diff --git a/lib/msun/i387/s_tan.S b/lib/msun/i387/s_tan.S
index a124457229e1..bbd26643aef7 100644
--- a/lib/msun/i387/s_tan.S
+++ b/lib/msun/i387/s_tan.S
@@ -35,7 +35,7 @@
#include <machine/asmacros.h>
-RCSID("$Id: s_tan.S,v 1.1.1.1 1994/08/19 09:40:01 jkh Exp $")
+RCSID("$Id: s_tan.S,v 1.2 1994/08/19 11:14:32 jkh Exp $")
ENTRY(tan)
fldl 4(%esp)
diff --git a/lib/msun/man/acos.3 b/lib/msun/man/acos.3
index d7e75c6a1dcd..70504c6e5f05 100644
--- a/lib/msun/man/acos.3
+++ b/lib/msun/man/acos.3
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" from: @(#)acos.3 5.1 (Berkeley) 5/2/91
-.\" $Id: acos.3,v 1.1.1.1 1994/08/19 09:39:41 jkh Exp $
+.\" $Id: acos.3,v 1.2 1995/03/01 05:05:16 jkh Exp $
.\"
.Dd May 2, 1991
.Dt ACOS 3
diff --git a/lib/msun/man/acosh.3 b/lib/msun/man/acosh.3
index f72478dc8545..c15fa3fe7eee 100644
--- a/lib/msun/man/acosh.3
+++ b/lib/msun/man/acosh.3
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" from: @(#)acosh.3 5.2 (Berkeley) 5/6/91
-.\" $Id: acosh.3,v 1.1.1.1 1994/08/19 09:39:41 jkh Exp $
+.\" $Id: acosh.3,v 1.2 1995/03/01 05:05:19 jkh Exp $
.\"
.Dd May 6, 1991
.Dt ACOSH 3
diff --git a/lib/msun/man/asin.3 b/lib/msun/man/asin.3
index ebbdd0f3b303..ab7ebc624631 100644
--- a/lib/msun/man/asin.3
+++ b/lib/msun/man/asin.3
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" from: @(#)asin.3 5.1 (Berkeley) 5/2/91
-.\" $Id: asin.3,v 1.1.1.1 1994/08/19 09:39:41 jkh Exp $
+.\" $Id: asin.3,v 1.2 1995/03/01 05:05:23 jkh Exp $
.\"
.Dd May 2, 1991
.Dt ASIN 3
diff --git a/lib/msun/man/asinh.3 b/lib/msun/man/asinh.3
index f24a60c59dd6..9a11df4b4eb9 100644
--- a/lib/msun/man/asinh.3
+++ b/lib/msun/man/asinh.3
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" from: @(#)asinh.3 6.4 (Berkeley) 5/6/91
-.\" $Id: asinh.3,v 1.1.1.1 1994/08/19 09:39:41 jkh Exp $
+.\" $Id: asinh.3,v 1.2 1995/03/01 05:05:27 jkh Exp $
.\"
.Dd May 6, 1991
.Dt ASINH 3
diff --git a/lib/msun/man/atan.3 b/lib/msun/man/atan.3
index c795351487e0..e6dddb683e86 100644
--- a/lib/msun/man/atan.3
+++ b/lib/msun/man/atan.3
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" from: @(#)atan.3 5.1 (Berkeley) 5/2/91
-.\" $Id: atan.3,v 1.1.1.1 1994/08/19 09:39:41 jkh Exp $
+.\" $Id: atan.3,v 1.2 1995/03/01 05:05:30 jkh Exp $
.\"
.Dd May 2, 1991
.Dt ATAN 3
diff --git a/lib/msun/man/atan2.3 b/lib/msun/man/atan2.3
index 72c358835bef..f23dbd19b46f 100644
--- a/lib/msun/man/atan2.3
+++ b/lib/msun/man/atan2.3
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" from: @(#)atan2.3 5.1 (Berkeley) 5/2/91
-.\" $Id: atan2.3,v 1.1.1.1 1994/08/19 09:39:41 jkh Exp $
+.\" $Id: atan2.3,v 1.2 1995/03/01 05:05:34 jkh Exp $
.\"
.Dd May 2, 1991
.Dt ATAN2 3
diff --git a/lib/msun/man/atanh.3 b/lib/msun/man/atanh.3
index 8b62d6bb8492..3dda59b0d938 100644
--- a/lib/msun/man/atanh.3
+++ b/lib/msun/man/atanh.3
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" from: @(#)atanh.3 5.2 (Berkeley) 5/6/91
-.\" $Id: atanh.3,v 1.1.1.1 1994/08/19 09:39:42 jkh Exp $
+.\" $Id: atanh.3,v 1.2 1995/03/01 05:05:37 jkh Exp $
.\"
.Dd May 6, 1991
.Dt ATANH 3
diff --git a/lib/msun/man/ceil.3 b/lib/msun/man/ceil.3
index c8a1f02d335d..d60ed03b124c 100644
--- a/lib/msun/man/ceil.3
+++ b/lib/msun/man/ceil.3
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" from: @(#)ceil.3 5.1 (Berkeley) 5/2/91
-.\" $Id: ceil.3,v 1.1.1.1 1994/08/19 09:39:42 jkh Exp $
+.\" $Id: ceil.3,v 1.2 1995/03/01 05:05:41 jkh Exp $
.\"
.Dd March 10, 1994
.Dt CEIL 3
diff --git a/lib/msun/man/cos.3 b/lib/msun/man/cos.3
index e44960004415..a5f9c0441008 100644
--- a/lib/msun/man/cos.3
+++ b/lib/msun/man/cos.3
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" from: @(#)cos.3 5.1 (Berkeley) 5/2/91
-.\" $Id: cos.3,v 1.1.1.1 1994/08/19 09:39:42 jkh Exp $
+.\" $Id: cos.3,v 1.2 1995/03/01 05:05:45 jkh Exp $
.\"
.Dd May 2, 1991
.Dt COS 3
diff --git a/lib/msun/man/cosh.3 b/lib/msun/man/cosh.3
index 8944381afd5a..f3f96da4bdf6 100644
--- a/lib/msun/man/cosh.3
+++ b/lib/msun/man/cosh.3
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" from: @(#)cosh.3 5.1 (Berkeley) 5/2/91
-.\" $Id: cosh.3,v 1.1.1.1 1994/08/19 09:39:42 jkh Exp $
+.\" $Id: cosh.3,v 1.2 1995/03/01 05:05:48 jkh Exp $
.\"
.Dd May 2, 1991
.Dt COSH 3
diff --git a/lib/msun/man/erf.3 b/lib/msun/man/erf.3
index 030ca6ace545..c307e8fca1b6 100644
--- a/lib/msun/man/erf.3
+++ b/lib/msun/man/erf.3
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" from: @(#)erf.3 6.4 (Berkeley) 4/20/91
-.\" $Id: erf.3,v 1.1.1.1 1994/08/19 09:39:42 jkh Exp $
+.\" $Id: erf.3,v 1.2 1995/03/01 05:05:52 jkh Exp $
.\"
.Dd April 20, 1991
.Dt ERF 3
diff --git a/lib/msun/man/exp.3 b/lib/msun/man/exp.3
index 8a25ff253e22..783f82346c0d 100644
--- a/lib/msun/man/exp.3
+++ b/lib/msun/man/exp.3
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" from: @(#)exp.3 6.12 (Berkeley) 7/31/91
-.\" $Id: exp.3,v 1.1.1.1 1994/08/19 09:39:42 jkh Exp $
+.\" $Id: exp.3,v 1.2 1995/03/01 05:05:55 jkh Exp $
.\"
.Dd July 31, 1991
.Dt EXP 3
diff --git a/lib/msun/man/fabs.3 b/lib/msun/man/fabs.3
index 9c8b00b66928..276a45f90022 100644
--- a/lib/msun/man/fabs.3
+++ b/lib/msun/man/fabs.3
@@ -31,7 +31,7 @@
.\" SUCH DAMAGE.
.\"
.\" from: @(#)fabs.3 5.1 (Berkeley) 5/2/91
-.\" $Id: fabs.3,v 1.1.1.1 1994/08/19 09:39:42 jkh Exp $
+.\" $Id: fabs.3,v 1.2 1995/03/01 05:05:59 jkh Exp $
.\"
.Dd May 2, 1991
.Dt FABS 3
diff --git a/lib/msun/man/floor.3 b/lib/msun/man/floor.3
index 480862af0bde..e304e456264f 100644
--- a/lib/msun/man/floor.3
+++ b/lib/msun/man/floor.3
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" from: @(#)floor.3 6.5 (Berkeley) 4/19/91
-.\" $Id: floor.3,v 1.1.1.1 1994/08/19 09:39:42 jkh Exp $
+.\" $Id: floor.3,v 1.2 1995/03/01 05:06:02 jkh Exp $
.\"
.Dd March 10, 1994
.Dt FLOOR 3
diff --git a/lib/msun/man/fmod.3 b/lib/msun/man/fmod.3
index 60a848902388..5fb2aafadb49 100644
--- a/lib/msun/man/fmod.3
+++ b/lib/msun/man/fmod.3
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" from: @(#)fmod.3 5.1 (Berkeley) 5/2/91
-.\" $Id: fmod.3,v 1.1.1.1 1994/08/19 09:39:42 jkh Exp $
+.\" $Id: fmod.3,v 1.2 1995/03/01 05:06:06 jkh Exp $
.\"
.Dd May 2, 1991
.Dt FMOD 3
diff --git a/lib/msun/man/hypot.3 b/lib/msun/man/hypot.3
index 09d0da06a714..052aaf2b7b44 100644
--- a/lib/msun/man/hypot.3
+++ b/lib/msun/man/hypot.3
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" from: @(#)hypot.3 6.7 (Berkeley) 5/6/91
-.\" $Id: hypot.3,v 1.1.1.1 1994/08/19 09:39:42 jkh Exp $
+.\" $Id: hypot.3,v 1.2 1995/03/01 05:06:09 jkh Exp $
.\"
.Dd May 6, 1991
.Dt HYPOT 3
diff --git a/lib/msun/man/ieee.3 b/lib/msun/man/ieee.3
index bdd23cd4b9a3..07853894ed42 100644
--- a/lib/msun/man/ieee.3
+++ b/lib/msun/man/ieee.3
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" from: @(#)ieee.3 6.4 (Berkeley) 5/6/91
-.\" $Id: ieee.3,v 1.1.1.1 1994/08/19 09:39:42 jkh Exp $
+.\" $Id: ieee.3,v 1.2 1995/03/01 05:06:12 jkh Exp $
.\"
.Dd Feb 25, 1994
.Dt IEEE 3
diff --git a/lib/msun/man/ieee_test.3 b/lib/msun/man/ieee_test.3
index cdd79a3a48ea..8070cca9f3d3 100644
--- a/lib/msun/man/ieee_test.3
+++ b/lib/msun/man/ieee_test.3
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" from: @(#)ieee.3 6.4 (Berkeley) 5/6/91
-.\" $Id: ieee_test.3,v 1.1.1.1 1994/08/19 09:39:43 jkh Exp $
+.\" $Id: ieee_test.3,v 1.2 1995/03/01 05:06:16 jkh Exp $
.\"
.Dd March 10, 1994
.Dt IEEE_TEST 3
diff --git a/lib/msun/man/j0.3 b/lib/msun/man/j0.3
index da85cf95334b..c85df6dc633a 100644
--- a/lib/msun/man/j0.3
+++ b/lib/msun/man/j0.3
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" from: @(#)j0.3 6.7 (Berkeley) 4/19/91
-.\" $Id: j0.3,v 1.1.1.1 1994/08/19 09:39:42 jkh Exp $
+.\" $Id: j0.3,v 1.2 1995/03/01 05:06:20 jkh Exp $
.\"
.Dd April 19, 1991
.Dt J0 3
diff --git a/lib/msun/man/lgamma.3 b/lib/msun/man/lgamma.3
index 09aaeffa3acc..ab23ac936800 100644
--- a/lib/msun/man/lgamma.3
+++ b/lib/msun/man/lgamma.3
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" from: @(#)lgamma.3 6.6 (Berkeley) 12/3/92
-.\" $Id: lgamma.3,v 1.1.1.1 1994/08/19 09:39:42 jkh Exp $
+.\" $Id: lgamma.3,v 1.2 1995/03/01 05:06:23 jkh Exp $
.\"
.Dd December 3, 1992
.Dt LGAMMA 3
diff --git a/lib/msun/man/math.3 b/lib/msun/man/math.3
index 8e7e52fcaec0..5a683d8afdfe 100644
--- a/lib/msun/man/math.3
+++ b/lib/msun/man/math.3
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" from: @(#)math.3 6.10 (Berkeley) 5/6/91
-.\" $Id: math.3,v 1.1.1.1 1994/08/19 09:39:42 jkh Exp $
+.\" $Id: math.3,v 1.2 1995/03/01 05:06:27 jkh Exp $
.\"
.TH MATH 3M "May 6, 1991"
.UC 4
diff --git a/lib/msun/man/rint.3 b/lib/msun/man/rint.3
index 6b29d74154b5..d94025e50107 100644
--- a/lib/msun/man/rint.3
+++ b/lib/msun/man/rint.3
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" from: @(#)rint.3 5.1 (Berkeley) 5/2/91
-.\" $Id: rint.3,v 1.1.1.1 1994/08/19 09:39:42 jkh Exp $
+.\" $Id: rint.3,v 1.2 1995/03/01 05:06:31 jkh Exp $
.\"
.Dd March 10, 1994
.Dt RINT 3
diff --git a/lib/msun/man/sin.3 b/lib/msun/man/sin.3
index 96e35a3a787f..30607e85243e 100644
--- a/lib/msun/man/sin.3
+++ b/lib/msun/man/sin.3
@@ -31,7 +31,7 @@
.\" SUCH DAMAGE.
.\"
.\" from: @(#)sin.3 6.7 (Berkeley) 4/19/91
-.\" $Id: sin.3,v 1.1.1.1 1994/08/19 09:39:42 jkh Exp $
+.\" $Id: sin.3,v 1.2 1995/03/01 05:06:34 jkh Exp $
.\"
.Dd April 19, 1991
.Dt SIN 3
diff --git a/lib/msun/man/sinh.3 b/lib/msun/man/sinh.3
index ded4f1fe3c75..40c35595c967 100644
--- a/lib/msun/man/sinh.3
+++ b/lib/msun/man/sinh.3
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" from: @(#)sinh.3 6.6 (Berkeley) 4/19/91
-.\" $Id: sinh.3,v 1.1.1.1 1994/08/19 09:39:42 jkh Exp $
+.\" $Id: sinh.3,v 1.2 1995/03/01 05:06:38 jkh Exp $
.Dd April 19, 1991
.Dt SINH 3
.Os
diff --git a/lib/msun/man/sqrt.3 b/lib/msun/man/sqrt.3
index b1e3c2d33cd2..08f2e6de7ffa 100644
--- a/lib/msun/man/sqrt.3
+++ b/lib/msun/man/sqrt.3
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" from: @(#)sqrt.3 6.4 (Berkeley) 5/6/91
-.\" $Id: sqrt.3,v 1.1.1.1 1994/08/19 09:39:42 jkh Exp $
+.\" $Id: sqrt.3,v 1.2 1995/03/01 05:06:41 jkh Exp $
.\"
.Dd May 6, 1991
.Dt SQRT 3
diff --git a/lib/msun/man/tan.3 b/lib/msun/man/tan.3
index 9a0a8e32b3b9..0945496f2170 100644
--- a/lib/msun/man/tan.3
+++ b/lib/msun/man/tan.3
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" from: @(#)tan.3 5.1 (Berkeley) 5/2/91
-.\" $Id: tan.3,v 1.1.1.1 1994/08/19 09:39:43 jkh Exp $
+.\" $Id: tan.3,v 1.2 1995/03/01 05:06:45 jkh Exp $
.\"
.Dd May 2, 1991
.Dt TAN 3
diff --git a/lib/msun/man/tanh.3 b/lib/msun/man/tanh.3
index 7a27ceec0b26..e9a675b5d3a4 100644
--- a/lib/msun/man/tanh.3
+++ b/lib/msun/man/tanh.3
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" from: @(#)tanh.3 5.1 (Berkeley) 5/2/91
-.\" $Id: tanh.3,v 1.1.1.1 1994/08/19 09:39:43 jkh Exp $
+.\" $Id: tanh.3,v 1.2 1995/03/01 05:06:48 jkh Exp $
.\"
.Dd May 2, 1991
.Dt TANH 3
diff --git a/lib/msun/src/e_acos.c b/lib/msun/src/e_acos.c
index 5f09e63d1e62..c4373a9e8fcb 100644
--- a/lib/msun/src/e_acos.c
+++ b/lib/msun/src/e_acos.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_acos.c,v 1.1.1.1 1994/08/19 09:39:43 jkh Exp $";
+static char rcsid[] = "$Id: e_acos.c,v 1.2 1995/05/30 05:47:51 rgrimes Exp $";
#endif
/* __ieee754_acos(x)
diff --git a/lib/msun/src/e_acosf.c b/lib/msun/src/e_acosf.c
index e220a72e20a1..3b981bdbf2a6 100644
--- a/lib/msun/src/e_acosf.c
+++ b/lib/msun/src/e_acosf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_acosf.c,v 1.1.1.1 1994/08/19 09:39:43 jkh Exp $";
+static char rcsid[] = "$Id: e_acosf.c,v 1.2 1995/05/30 05:47:52 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/e_acosh.c b/lib/msun/src/e_acosh.c
index efaefea51a0a..e6d592880702 100644
--- a/lib/msun/src/e_acosh.c
+++ b/lib/msun/src/e_acosh.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_acosh.c,v 1.1.1.1 1994/08/19 09:39:43 jkh Exp $";
+static char rcsid[] = "$Id: e_acosh.c,v 1.2 1995/05/30 05:47:53 rgrimes Exp $";
#endif
/* __ieee754_acosh(x)
diff --git a/lib/msun/src/e_acoshf.c b/lib/msun/src/e_acoshf.c
index 53080e9485df..812046165fc0 100644
--- a/lib/msun/src/e_acoshf.c
+++ b/lib/msun/src/e_acoshf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_acoshf.c,v 1.1.1.1 1994/08/19 09:39:44 jkh Exp $";
+static char rcsid[] = "$Id: e_acoshf.c,v 1.2 1995/05/30 05:47:54 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/e_asin.c b/lib/msun/src/e_asin.c
index 390ea5f4c3de..0d0156205524 100644
--- a/lib/msun/src/e_asin.c
+++ b/lib/msun/src/e_asin.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_asin.c,v 1.1.1.1 1994/08/19 09:39:43 jkh Exp $";
+static char rcsid[] = "$Id: e_asin.c,v 1.2 1995/05/30 05:47:55 rgrimes Exp $";
#endif
/* __ieee754_asin(x)
diff --git a/lib/msun/src/e_asinf.c b/lib/msun/src/e_asinf.c
index 1f075796392a..76fd063d7802 100644
--- a/lib/msun/src/e_asinf.c
+++ b/lib/msun/src/e_asinf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_asinf.c,v 1.1.1.1 1994/08/19 09:39:44 jkh Exp $";
+static char rcsid[] = "$Id: e_asinf.c,v 1.2 1995/05/30 05:47:56 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/e_atan2.c b/lib/msun/src/e_atan2.c
index 233d8b67e2da..8b833afa3a1f 100644
--- a/lib/msun/src/e_atan2.c
+++ b/lib/msun/src/e_atan2.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_atan2.c,v 1.1.1.1 1994/08/19 09:39:43 jkh Exp $";
+static char rcsid[] = "$Id: e_atan2.c,v 1.2 1995/05/30 05:47:57 rgrimes Exp $";
#endif
/* __ieee754_atan2(y,x)
diff --git a/lib/msun/src/e_atan2f.c b/lib/msun/src/e_atan2f.c
index 39aa779eeef9..5eaefe425b89 100644
--- a/lib/msun/src/e_atan2f.c
+++ b/lib/msun/src/e_atan2f.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_atan2f.c,v 1.1.1.1 1994/08/19 09:39:54 jkh Exp $";
+static char rcsid[] = "$Id: e_atan2f.c,v 1.2 1995/05/30 05:47:59 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/e_atanh.c b/lib/msun/src/e_atanh.c
index aeb8a75444fa..3bc134d95cb6 100644
--- a/lib/msun/src/e_atanh.c
+++ b/lib/msun/src/e_atanh.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_atanh.c,v 1.1.1.1 1994/08/19 09:39:43 jkh Exp $";
+static char rcsid[] = "$Id: e_atanh.c,v 1.2 1995/05/30 05:48:01 rgrimes Exp $";
#endif
/* __ieee754_atanh(x)
diff --git a/lib/msun/src/e_atanhf.c b/lib/msun/src/e_atanhf.c
index 1c2cc6450fca..c75915674e5e 100644
--- a/lib/msun/src/e_atanhf.c
+++ b/lib/msun/src/e_atanhf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_atanhf.c,v 1.1.1.1 1994/08/19 09:39:54 jkh Exp $";
+static char rcsid[] = "$Id: e_atanhf.c,v 1.2 1995/05/30 05:48:04 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/e_cosh.c b/lib/msun/src/e_cosh.c
index 2153e6979900..be6f9bec43a8 100644
--- a/lib/msun/src/e_cosh.c
+++ b/lib/msun/src/e_cosh.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_cosh.c,v 1.1.1.1 1994/08/19 09:39:43 jkh Exp $";
+static char rcsid[] = "$Id: e_cosh.c,v 1.2 1995/05/30 05:48:07 rgrimes Exp $";
#endif
/* __ieee754_cosh(x)
diff --git a/lib/msun/src/e_coshf.c b/lib/msun/src/e_coshf.c
index 25bb9e30aa19..00364368d815 100644
--- a/lib/msun/src/e_coshf.c
+++ b/lib/msun/src/e_coshf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_coshf.c,v 1.1.1.1 1994/08/19 09:39:54 jkh Exp $";
+static char rcsid[] = "$Id: e_coshf.c,v 1.2 1995/05/30 05:48:07 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/e_exp.c b/lib/msun/src/e_exp.c
index 9b833be6894a..5fb570a01240 100644
--- a/lib/msun/src/e_exp.c
+++ b/lib/msun/src/e_exp.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_exp.c,v 1.1.1.1 1994/08/19 09:39:43 jkh Exp $";
+static char rcsid[] = "$Id: e_exp.c,v 1.2 1995/05/30 05:48:08 rgrimes Exp $";
#endif
/* __ieee754_exp(x)
diff --git a/lib/msun/src/e_expf.c b/lib/msun/src/e_expf.c
index 19ff4ac2388f..91782a8864b6 100644
--- a/lib/msun/src/e_expf.c
+++ b/lib/msun/src/e_expf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_expf.c,v 1.1.1.1 1994/08/19 09:39:54 jkh Exp $";
+static char rcsid[] = "$Id: e_expf.c,v 1.2 1995/05/30 05:48:09 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/e_fmod.c b/lib/msun/src/e_fmod.c
index d784c6848bac..e059a8a4d593 100644
--- a/lib/msun/src/e_fmod.c
+++ b/lib/msun/src/e_fmod.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_fmod.c,v 1.1.1.1 1994/08/19 09:39:43 jkh Exp $";
+static char rcsid[] = "$Id: e_fmod.c,v 1.2 1995/05/30 05:48:10 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/e_fmodf.c b/lib/msun/src/e_fmodf.c
index 4a54d1818b08..c96947e52d03 100644
--- a/lib/msun/src/e_fmodf.c
+++ b/lib/msun/src/e_fmodf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_fmodf.c,v 1.1.1.1 1994/08/19 09:39:54 jkh Exp $";
+static char rcsid[] = "$Id: e_fmodf.c,v 1.2 1995/05/30 05:48:11 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/e_gamma.c b/lib/msun/src/e_gamma.c
index 699dc54acad6..fe1cd8622c5a 100644
--- a/lib/msun/src/e_gamma.c
+++ b/lib/msun/src/e_gamma.c
@@ -12,7 +12,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_gamma.c,v 1.1.1.1 1994/08/19 09:39:43 jkh Exp $";
+static char rcsid[] = "$Id: e_gamma.c,v 1.2 1995/05/30 05:48:12 rgrimes Exp $";
#endif
/* __ieee754_gamma(x)
diff --git a/lib/msun/src/e_gamma_r.c b/lib/msun/src/e_gamma_r.c
index 699af100b171..f571c963741f 100644
--- a/lib/msun/src/e_gamma_r.c
+++ b/lib/msun/src/e_gamma_r.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_gamma_r.c,v 1.1.1.1 1994/08/19 09:39:43 jkh Exp $";
+static char rcsid[] = "$Id: e_gamma_r.c,v 1.2 1995/05/30 05:48:13 rgrimes Exp $";
#endif
/* __ieee754_gamma_r(x, signgamp)
diff --git a/lib/msun/src/e_gammaf.c b/lib/msun/src/e_gammaf.c
index 039c25784e36..f994b286c342 100644
--- a/lib/msun/src/e_gammaf.c
+++ b/lib/msun/src/e_gammaf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_gammaf.c,v 1.1.1.1 1994/08/19 09:39:54 jkh Exp $";
+static char rcsid[] = "$Id: e_gammaf.c,v 1.2 1995/05/30 05:48:14 rgrimes Exp $";
#endif
/* __ieee754_gammaf(x)
diff --git a/lib/msun/src/e_gammaf_r.c b/lib/msun/src/e_gammaf_r.c
index 93f17fb825b4..0e01afe1d62b 100644
--- a/lib/msun/src/e_gammaf_r.c
+++ b/lib/msun/src/e_gammaf_r.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_gammaf_r.c,v 1.1.1.1 1994/08/19 09:39:54 jkh Exp $";
+static char rcsid[] = "$Id: e_gammaf_r.c,v 1.2 1995/05/30 05:48:15 rgrimes Exp $";
#endif
/* __ieee754_gammaf_r(x, signgamp)
diff --git a/lib/msun/src/e_hypot.c b/lib/msun/src/e_hypot.c
index 2f6e30ff44bf..342acb220c5a 100644
--- a/lib/msun/src/e_hypot.c
+++ b/lib/msun/src/e_hypot.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_hypot.c,v 1.1.1.1 1994/08/19 09:39:44 jkh Exp $";
+static char rcsid[] = "$Id: e_hypot.c,v 1.2 1995/05/30 05:48:16 rgrimes Exp $";
#endif
/* __ieee754_hypot(x,y)
diff --git a/lib/msun/src/e_hypotf.c b/lib/msun/src/e_hypotf.c
index 66b9e17004d9..1a7e484bc02d 100644
--- a/lib/msun/src/e_hypotf.c
+++ b/lib/msun/src/e_hypotf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_hypotf.c,v 1.1.1.1 1994/08/19 09:39:55 jkh Exp $";
+static char rcsid[] = "$Id: e_hypotf.c,v 1.2 1995/05/30 05:48:17 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/e_j0.c b/lib/msun/src/e_j0.c
index 3a11397a3262..16d2d9d05ed8 100644
--- a/lib/msun/src/e_j0.c
+++ b/lib/msun/src/e_j0.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_j0.c,v 1.1.1.1 1994/08/19 09:39:43 jkh Exp $";
+static char rcsid[] = "$Id: e_j0.c,v 1.2 1995/05/30 05:48:18 rgrimes Exp $";
#endif
/* __ieee754_j0(x), __ieee754_y0(x)
diff --git a/lib/msun/src/e_j0f.c b/lib/msun/src/e_j0f.c
index ce416fab70e8..cb54e47e862f 100644
--- a/lib/msun/src/e_j0f.c
+++ b/lib/msun/src/e_j0f.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_j0f.c,v 1.1.1.1 1994/08/19 09:39:55 jkh Exp $";
+static char rcsid[] = "$Id: e_j0f.c,v 1.2 1995/05/30 05:48:19 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/e_j1.c b/lib/msun/src/e_j1.c
index f577368048ed..4012d4a9d656 100644
--- a/lib/msun/src/e_j1.c
+++ b/lib/msun/src/e_j1.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_j1.c,v 1.1.1.1 1994/08/19 09:39:44 jkh Exp $";
+static char rcsid[] = "$Id: e_j1.c,v 1.2 1995/05/30 05:48:20 rgrimes Exp $";
#endif
/* __ieee754_j1(x), __ieee754_y1(x)
diff --git a/lib/msun/src/e_j1f.c b/lib/msun/src/e_j1f.c
index f06b30006f2d..1897cb445922 100644
--- a/lib/msun/src/e_j1f.c
+++ b/lib/msun/src/e_j1f.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_j1f.c,v 1.1.1.1 1994/08/19 09:39:55 jkh Exp $";
+static char rcsid[] = "$Id: e_j1f.c,v 1.2 1995/05/30 05:48:23 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/e_jn.c b/lib/msun/src/e_jn.c
index ae309f0e6b74..9175826d4e93 100644
--- a/lib/msun/src/e_jn.c
+++ b/lib/msun/src/e_jn.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_jn.c,v 1.2 1995/04/07 23:13:42 bde Exp $";
+static char rcsid[] = "$Id: e_jn.c,v 1.3 1995/05/30 05:48:24 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/e_jnf.c b/lib/msun/src/e_jnf.c
index 6393f83df5c1..eeb145ac2130 100644
--- a/lib/msun/src/e_jnf.c
+++ b/lib/msun/src/e_jnf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_jnf.c,v 1.2 1995/04/07 23:13:43 bde Exp $";
+static char rcsid[] = "$Id: e_jnf.c,v 1.3 1995/05/30 05:48:25 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/e_lgamma.c b/lib/msun/src/e_lgamma.c
index 39de847aa175..b11a5d9ad0df 100644
--- a/lib/msun/src/e_lgamma.c
+++ b/lib/msun/src/e_lgamma.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_lgamma.c,v 1.1.1.1 1994/08/19 09:39:44 jkh Exp $";
+static char rcsid[] = "$Id: e_lgamma.c,v 1.2 1995/05/30 05:48:26 rgrimes Exp $";
#endif
/* __ieee754_lgamma(x)
diff --git a/lib/msun/src/e_lgamma_r.c b/lib/msun/src/e_lgamma_r.c
index 57b24d414de4..3ee6368e369a 100644
--- a/lib/msun/src/e_lgamma_r.c
+++ b/lib/msun/src/e_lgamma_r.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_lgamma_r.c,v 1.1.1.1 1994/08/19 09:39:44 jkh Exp $";
+static char rcsid[] = "$Id: e_lgamma_r.c,v 1.2 1995/05/30 05:48:27 rgrimes Exp $";
#endif
/* __ieee754_lgamma_r(x, signgamp)
diff --git a/lib/msun/src/e_lgammaf.c b/lib/msun/src/e_lgammaf.c
index 1d90cdd692a9..6293ffd609ca 100644
--- a/lib/msun/src/e_lgammaf.c
+++ b/lib/msun/src/e_lgammaf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_lgammaf.c,v 1.1.1.1 1994/08/19 09:39:55 jkh Exp $";
+static char rcsid[] = "$Id: e_lgammaf.c,v 1.2 1995/05/30 05:48:28 rgrimes Exp $";
#endif
/* __ieee754_lgammaf(x)
diff --git a/lib/msun/src/e_lgammaf_r.c b/lib/msun/src/e_lgammaf_r.c
index 2cd8ec8ca9c4..419d80785a50 100644
--- a/lib/msun/src/e_lgammaf_r.c
+++ b/lib/msun/src/e_lgammaf_r.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_lgammaf_r.c,v 1.1.1.1 1994/08/19 09:39:55 jkh Exp $";
+static char rcsid[] = "$Id: e_lgammaf_r.c,v 1.2 1995/05/30 05:48:29 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/e_log.c b/lib/msun/src/e_log.c
index 67e2d216b7fa..86a1cec0cf23 100644
--- a/lib/msun/src/e_log.c
+++ b/lib/msun/src/e_log.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_log.c,v 1.1.1.1 1994/08/19 09:39:44 jkh Exp $";
+static char rcsid[] = "$Id: e_log.c,v 1.2 1995/05/30 05:48:30 rgrimes Exp $";
#endif
/* __ieee754_log(x)
diff --git a/lib/msun/src/e_log10.c b/lib/msun/src/e_log10.c
index 4f4ed28933fd..2c482088b7cb 100644
--- a/lib/msun/src/e_log10.c
+++ b/lib/msun/src/e_log10.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_log10.c,v 1.2 1995/04/07 23:23:23 bde Exp $";
+static char rcsid[] = "$Id: e_log10.c,v 1.3 1995/05/30 05:48:30 rgrimes Exp $";
#endif
/* __ieee754_log10(x)
diff --git a/lib/msun/src/e_log10f.c b/lib/msun/src/e_log10f.c
index 3caa25abba35..266100a62969 100644
--- a/lib/msun/src/e_log10f.c
+++ b/lib/msun/src/e_log10f.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_log10f.c,v 1.2 1995/04/07 23:23:23 bde Exp $";
+static char rcsid[] = "$Id: e_log10f.c,v 1.3 1995/05/30 05:48:31 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/e_logf.c b/lib/msun/src/e_logf.c
index 1baef0470b73..1585de78e5e8 100644
--- a/lib/msun/src/e_logf.c
+++ b/lib/msun/src/e_logf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_logf.c,v 1.1.1.1 1994/08/19 09:39:57 jkh Exp $";
+static char rcsid[] = "$Id: e_logf.c,v 1.2 1995/05/30 05:48:32 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/e_pow.c b/lib/msun/src/e_pow.c
index 8bdc8a862e5f..51ddba94abce 100644
--- a/lib/msun/src/e_pow.c
+++ b/lib/msun/src/e_pow.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_pow.c,v 1.1.1.1 1994/08/19 09:39:44 jkh Exp $";
+static char rcsid[] = "$Id: e_pow.c,v 1.2 1995/05/30 05:48:34 rgrimes Exp $";
#endif
/* __ieee754_pow(x,y) return x**y
diff --git a/lib/msun/src/e_powf.c b/lib/msun/src/e_powf.c
index 7b268d36fe23..e5c05d8f762e 100644
--- a/lib/msun/src/e_powf.c
+++ b/lib/msun/src/e_powf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_powf.c,v 1.1.1.1 1994/08/19 09:39:57 jkh Exp $";
+static char rcsid[] = "$Id: e_powf.c,v 1.2 1995/05/30 05:48:36 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/e_rem_pio2.c b/lib/msun/src/e_rem_pio2.c
index 5b1c3bf26403..f9533744f1d4 100644
--- a/lib/msun/src/e_rem_pio2.c
+++ b/lib/msun/src/e_rem_pio2.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_rem_pio2.c,v 1.2 1995/04/07 23:23:24 bde Exp $";
+static char rcsid[] = "$Id: e_rem_pio2.c,v 1.3 1995/05/30 05:48:37 rgrimes Exp $";
#endif
/* __ieee754_rem_pio2(x,y)
diff --git a/lib/msun/src/e_rem_pio2f.c b/lib/msun/src/e_rem_pio2f.c
index 98c305fd9f13..1602501951c3 100644
--- a/lib/msun/src/e_rem_pio2f.c
+++ b/lib/msun/src/e_rem_pio2f.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_rem_pio2f.c,v 1.2 1995/04/07 23:23:25 bde Exp $";
+static char rcsid[] = "$Id: e_rem_pio2f.c,v 1.3 1995/05/30 05:48:38 rgrimes Exp $";
#endif
/* __ieee754_rem_pio2f(x,y)
diff --git a/lib/msun/src/e_remainder.c b/lib/msun/src/e_remainder.c
index 430418d2ea2f..046b0e15f1dc 100644
--- a/lib/msun/src/e_remainder.c
+++ b/lib/msun/src/e_remainder.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_remainder.c,v 1.1.1.1 1994/08/19 09:39:44 jkh Exp $";
+static char rcsid[] = "$Id: e_remainder.c,v 1.2 1995/05/30 05:48:39 rgrimes Exp $";
#endif
/* __ieee754_remainder(x,p)
diff --git a/lib/msun/src/e_remainderf.c b/lib/msun/src/e_remainderf.c
index cc66ba454aec..df3a52ced4a5 100644
--- a/lib/msun/src/e_remainderf.c
+++ b/lib/msun/src/e_remainderf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_remainderf.c,v 1.1.1.1 1994/08/19 09:39:57 jkh Exp $";
+static char rcsid[] = "$Id: e_remainderf.c,v 1.2 1995/05/30 05:48:40 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/e_scalb.c b/lib/msun/src/e_scalb.c
index 1000bc7e1de0..b0902aceecf1 100644
--- a/lib/msun/src/e_scalb.c
+++ b/lib/msun/src/e_scalb.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_scalb.c,v 1.1.1.1 1994/08/19 09:39:44 jkh Exp $";
+static char rcsid[] = "$Id: e_scalb.c,v 1.2 1995/05/30 05:48:43 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/e_scalbf.c b/lib/msun/src/e_scalbf.c
index 0dff855c37c2..8a6e4abf37d6 100644
--- a/lib/msun/src/e_scalbf.c
+++ b/lib/msun/src/e_scalbf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_scalbf.c,v 1.1.1.1 1994/08/19 09:39:57 jkh Exp $";
+static char rcsid[] = "$Id: e_scalbf.c,v 1.2 1995/05/30 05:48:45 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/e_sinh.c b/lib/msun/src/e_sinh.c
index 9f68f4365d0b..0b9ae0f88b09 100644
--- a/lib/msun/src/e_sinh.c
+++ b/lib/msun/src/e_sinh.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_sinh.c,v 1.1.1.1 1994/08/19 09:39:44 jkh Exp $";
+static char rcsid[] = "$Id: e_sinh.c,v 1.2 1995/05/30 05:48:48 rgrimes Exp $";
#endif
/* __ieee754_sinh(x)
diff --git a/lib/msun/src/e_sinhf.c b/lib/msun/src/e_sinhf.c
index 9c6e45bed155..f6e3a8f2cc72 100644
--- a/lib/msun/src/e_sinhf.c
+++ b/lib/msun/src/e_sinhf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_sinhf.c,v 1.1.1.1 1994/08/19 09:39:57 jkh Exp $";
+static char rcsid[] = "$Id: e_sinhf.c,v 1.2 1995/05/30 05:48:49 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/e_sqrt.c b/lib/msun/src/e_sqrt.c
index d805e33ab867..a0f611341d55 100644
--- a/lib/msun/src/e_sqrt.c
+++ b/lib/msun/src/e_sqrt.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_sqrt.c,v 1.1.1.1 1994/08/19 09:39:44 jkh Exp $";
+static char rcsid[] = "$Id: e_sqrt.c,v 1.2 1995/05/30 05:48:50 rgrimes Exp $";
#endif
/* __ieee754_sqrt(x)
diff --git a/lib/msun/src/e_sqrtf.c b/lib/msun/src/e_sqrtf.c
index a4cb172e1bdc..da3c2216e693 100644
--- a/lib/msun/src/e_sqrtf.c
+++ b/lib/msun/src/e_sqrtf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: e_sqrtf.c,v 1.1.1.1 1994/08/19 09:39:57 jkh Exp $";
+static char rcsid[] = "$Id: e_sqrtf.c,v 1.2 1995/05/30 05:48:52 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/k_cos.c b/lib/msun/src/k_cos.c
index 57ebe6219613..be536d89a3f9 100644
--- a/lib/msun/src/k_cos.c
+++ b/lib/msun/src/k_cos.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: k_cos.c,v 1.1.1.1 1994/08/19 09:39:44 jkh Exp $";
+static char rcsid[] = "$Id: k_cos.c,v 1.2 1995/05/30 05:48:53 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/k_cosf.c b/lib/msun/src/k_cosf.c
index 09e2ff72cc2e..f1746d19ad92 100644
--- a/lib/msun/src/k_cosf.c
+++ b/lib/msun/src/k_cosf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: k_cosf.c,v 1.1.1.1 1994/08/19 09:39:57 jkh Exp $";
+static char rcsid[] = "$Id: k_cosf.c,v 1.2 1995/05/30 05:48:55 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/k_rem_pio2.c b/lib/msun/src/k_rem_pio2.c
index 25faf35f40ea..2edb6c50ef15 100644
--- a/lib/msun/src/k_rem_pio2.c
+++ b/lib/msun/src/k_rem_pio2.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: k_rem_pio2.c,v 1.1.1.1 1994/08/19 09:39:45 jkh Exp $";
+static char rcsid[] = "$Id: k_rem_pio2.c,v 1.2 1995/05/30 05:48:57 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/k_rem_pio2f.c b/lib/msun/src/k_rem_pio2f.c
index 10615386eb81..d44f40bf3561 100644
--- a/lib/msun/src/k_rem_pio2f.c
+++ b/lib/msun/src/k_rem_pio2f.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: k_rem_pio2f.c,v 1.1.1.1 1994/08/19 09:39:57 jkh Exp $";
+static char rcsid[] = "$Id: k_rem_pio2f.c,v 1.2 1995/05/30 05:49:00 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/k_sin.c b/lib/msun/src/k_sin.c
index 394df9276811..7e4bed6fb654 100644
--- a/lib/msun/src/k_sin.c
+++ b/lib/msun/src/k_sin.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: k_sin.c,v 1.1.1.1 1994/08/19 09:39:45 jkh Exp $";
+static char rcsid[] = "$Id: k_sin.c,v 1.2 1995/05/30 05:49:05 rgrimes Exp $";
#endif
/* __kernel_sin( x, y, iy)
diff --git a/lib/msun/src/k_sinf.c b/lib/msun/src/k_sinf.c
index b7c3db935dde..faf57de58d19 100644
--- a/lib/msun/src/k_sinf.c
+++ b/lib/msun/src/k_sinf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: k_sinf.c,v 1.1.1.1 1994/08/19 09:39:57 jkh Exp $";
+static char rcsid[] = "$Id: k_sinf.c,v 1.2 1995/05/30 05:49:10 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/k_standard.c b/lib/msun/src/k_standard.c
index d32362e386b8..bfc9001db7d9 100644
--- a/lib/msun/src/k_standard.c
+++ b/lib/msun/src/k_standard.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: k_standard.c,v 1.1.1.1 1994/08/19 09:39:45 jkh Exp $";
+static char rcsid[] = "$Id: k_standard.c,v 1.2 1995/05/30 05:49:13 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/k_tan.c b/lib/msun/src/k_tan.c
index d5851cf2f0f8..7418b653c20c 100644
--- a/lib/msun/src/k_tan.c
+++ b/lib/msun/src/k_tan.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: k_tan.c,v 1.1.1.1 1994/08/19 09:39:45 jkh Exp $";
+static char rcsid[] = "$Id: k_tan.c,v 1.2 1995/05/30 05:49:14 rgrimes Exp $";
#endif
/* __kernel_tan( x, y, k )
diff --git a/lib/msun/src/k_tanf.c b/lib/msun/src/k_tanf.c
index 9be8d378ade6..ec087d3a5e6f 100644
--- a/lib/msun/src/k_tanf.c
+++ b/lib/msun/src/k_tanf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: k_tanf.c,v 1.1.1.1 1994/08/19 09:39:57 jkh Exp $";
+static char rcsid[] = "$Id: k_tanf.c,v 1.2 1995/05/30 05:49:15 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/math.h b/lib/msun/src/math.h
index 74b021ff06a7..7623c942de63 100644
--- a/lib/msun/src/math.h
+++ b/lib/msun/src/math.h
@@ -11,7 +11,7 @@
/*
* from: @(#)fdlibm.h 5.1 93/09/24
- * $Id: math.h,v 1.1.1.1 1994/08/19 09:39:57 jkh Exp $
+ * $Id: math.h,v 1.2 1995/05/30 05:49:16 rgrimes Exp $
*/
#ifndef _MATH_H_
diff --git a/lib/msun/src/math_private.h b/lib/msun/src/math_private.h
index 232f65b8712f..897e32372eb1 100644
--- a/lib/msun/src/math_private.h
+++ b/lib/msun/src/math_private.h
@@ -11,7 +11,7 @@
/*
* from: @(#)fdlibm.h 5.1 93/09/24
- * $Id: math_private.h,v 1.1.1.1 1994/08/19 09:39:57 jkh Exp $
+ * $Id: math_private.h,v 1.2 1995/05/30 05:49:17 rgrimes Exp $
*/
#ifndef _MATH_PRIVATE_H_
diff --git a/lib/msun/src/s_asinh.c b/lib/msun/src/s_asinh.c
index 64de8defe96f..a33b2d9c400a 100644
--- a/lib/msun/src/s_asinh.c
+++ b/lib/msun/src/s_asinh.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_asinh.c,v 1.1.1.1 1994/08/19 09:39:45 jkh Exp $";
+static char rcsid[] = "$Id: s_asinh.c,v 1.2 1995/05/30 05:49:18 rgrimes Exp $";
#endif
/* asinh(x)
diff --git a/lib/msun/src/s_asinhf.c b/lib/msun/src/s_asinhf.c
index e96704fc9bf2..8363c8791afc 100644
--- a/lib/msun/src/s_asinhf.c
+++ b/lib/msun/src/s_asinhf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_asinhf.c,v 1.1.1.1 1994/08/19 09:39:57 jkh Exp $";
+static char rcsid[] = "$Id: s_asinhf.c,v 1.2 1995/05/30 05:49:19 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/s_atan.c b/lib/msun/src/s_atan.c
index f53462bb3895..45cee93441b5 100644
--- a/lib/msun/src/s_atan.c
+++ b/lib/msun/src/s_atan.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_atan.c,v 1.1.1.1 1994/08/19 09:39:45 jkh Exp $";
+static char rcsid[] = "$Id: s_atan.c,v 1.2 1995/05/30 05:49:20 rgrimes Exp $";
#endif
/* atan(x)
diff --git a/lib/msun/src/s_atanf.c b/lib/msun/src/s_atanf.c
index 52beebfcf5ec..3fd85906be40 100644
--- a/lib/msun/src/s_atanf.c
+++ b/lib/msun/src/s_atanf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_atanf.c,v 1.1.1.1 1994/08/19 09:39:57 jkh Exp $";
+static char rcsid[] = "$Id: s_atanf.c,v 1.2 1995/05/30 05:49:22 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/s_cbrt.c b/lib/msun/src/s_cbrt.c
index a3fcc0215b47..c494ab9dcfb1 100644
--- a/lib/msun/src/s_cbrt.c
+++ b/lib/msun/src/s_cbrt.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_cbrt.c,v 1.1.1.1 1994/08/19 09:39:51 jkh Exp $";
+static char rcsid[] = "$Id: s_cbrt.c,v 1.2 1995/05/30 05:49:22 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/s_cbrtf.c b/lib/msun/src/s_cbrtf.c
index 8bee2beb4a57..c86453f451fd 100644
--- a/lib/msun/src/s_cbrtf.c
+++ b/lib/msun/src/s_cbrtf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_cbrtf.c,v 1.1.1.1 1994/08/19 09:39:57 jkh Exp $";
+static char rcsid[] = "$Id: s_cbrtf.c,v 1.2 1995/05/30 05:49:23 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/s_ceil.c b/lib/msun/src/s_ceil.c
index 749bc606bb9a..bfa42d9baefa 100644
--- a/lib/msun/src/s_ceil.c
+++ b/lib/msun/src/s_ceil.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_ceil.c,v 1.1.1.1 1994/08/19 09:39:51 jkh Exp $";
+static char rcsid[] = "$Id: s_ceil.c,v 1.2 1995/05/30 05:49:25 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/s_ceilf.c b/lib/msun/src/s_ceilf.c
index b30f5ba8e816..2b5f42d2e088 100644
--- a/lib/msun/src/s_ceilf.c
+++ b/lib/msun/src/s_ceilf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_ceilf.c,v 1.1.1.1 1994/08/19 09:39:57 jkh Exp $";
+static char rcsid[] = "$Id: s_ceilf.c,v 1.2 1995/05/30 05:49:26 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/s_copysign.c b/lib/msun/src/s_copysign.c
index 30fea0e6a314..4272815594db 100644
--- a/lib/msun/src/s_copysign.c
+++ b/lib/msun/src/s_copysign.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_copysign.c,v 1.1.1.1 1994/08/19 09:39:51 jkh Exp $";
+static char rcsid[] = "$Id: s_copysign.c,v 1.2 1995/05/30 05:49:27 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/s_copysignf.c b/lib/msun/src/s_copysignf.c
index 07b1a530ab14..3192193cf0c3 100644
--- a/lib/msun/src/s_copysignf.c
+++ b/lib/msun/src/s_copysignf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_copysignf.c,v 1.1.1.1 1994/08/19 09:39:57 jkh Exp $";
+static char rcsid[] = "$Id: s_copysignf.c,v 1.2 1995/05/30 05:49:28 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/s_cos.c b/lib/msun/src/s_cos.c
index b3666d33eb48..b1c6a43bc10e 100644
--- a/lib/msun/src/s_cos.c
+++ b/lib/msun/src/s_cos.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_cos.c,v 1.1.1.1 1994/08/19 09:39:51 jkh Exp $";
+static char rcsid[] = "$Id: s_cos.c,v 1.2 1995/05/30 05:49:29 rgrimes Exp $";
#endif
/* cos(x)
diff --git a/lib/msun/src/s_cosf.c b/lib/msun/src/s_cosf.c
index 95fe4e7723d6..700af27cc106 100644
--- a/lib/msun/src/s_cosf.c
+++ b/lib/msun/src/s_cosf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_cosf.c,v 1.1.1.1 1994/08/19 09:39:58 jkh Exp $";
+static char rcsid[] = "$Id: s_cosf.c,v 1.2 1995/05/30 05:49:30 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/s_erf.c b/lib/msun/src/s_erf.c
index 4a06e2043ed2..39a2acd47af0 100644
--- a/lib/msun/src/s_erf.c
+++ b/lib/msun/src/s_erf.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_erf.c,v 1.1.1.1 1994/08/19 09:39:51 jkh Exp $";
+static char rcsid[] = "$Id: s_erf.c,v 1.2 1995/05/30 05:49:31 rgrimes Exp $";
#endif
/* double erf(double x)
diff --git a/lib/msun/src/s_erff.c b/lib/msun/src/s_erff.c
index 15e40b13e400..f72279b43575 100644
--- a/lib/msun/src/s_erff.c
+++ b/lib/msun/src/s_erff.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_erff.c,v 1.1.1.1 1994/08/19 09:39:58 jkh Exp $";
+static char rcsid[] = "$Id: s_erff.c,v 1.2 1995/05/30 05:49:32 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/s_expm1.c b/lib/msun/src/s_expm1.c
index 9c933e24c885..14df0c3663ad 100644
--- a/lib/msun/src/s_expm1.c
+++ b/lib/msun/src/s_expm1.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_expm1.c,v 1.1.1.1 1994/08/19 09:39:51 jkh Exp $";
+static char rcsid[] = "$Id: s_expm1.c,v 1.2 1995/05/30 05:49:33 rgrimes Exp $";
#endif
/* expm1(x)
diff --git a/lib/msun/src/s_expm1f.c b/lib/msun/src/s_expm1f.c
index e7d43514f0cc..fe9a1b428c9c 100644
--- a/lib/msun/src/s_expm1f.c
+++ b/lib/msun/src/s_expm1f.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_expm1f.c,v 1.1.1.1 1994/08/19 09:39:58 jkh Exp $";
+static char rcsid[] = "$Id: s_expm1f.c,v 1.2 1995/05/30 05:49:34 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/s_fabs.c b/lib/msun/src/s_fabs.c
index 590d5594ea2e..1192324a4d59 100644
--- a/lib/msun/src/s_fabs.c
+++ b/lib/msun/src/s_fabs.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_fabs.c,v 1.1.1.1 1994/08/19 09:39:51 jkh Exp $";
+static char rcsid[] = "$Id: s_fabs.c,v 1.2 1995/05/30 05:49:35 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/s_fabsf.c b/lib/msun/src/s_fabsf.c
index e2462725b9a5..9f36414933a3 100644
--- a/lib/msun/src/s_fabsf.c
+++ b/lib/msun/src/s_fabsf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_fabsf.c,v 1.1.1.1 1994/08/19 09:39:58 jkh Exp $";
+static char rcsid[] = "$Id: s_fabsf.c,v 1.2 1995/05/30 05:49:36 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/s_finite.c b/lib/msun/src/s_finite.c
index 5de602467f44..8e8068d031c1 100644
--- a/lib/msun/src/s_finite.c
+++ b/lib/msun/src/s_finite.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_finite.c,v 1.1.1.1 1994/08/19 09:39:51 jkh Exp $";
+static char rcsid[] = "$Id: s_finite.c,v 1.2 1995/05/30 05:49:37 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/s_finitef.c b/lib/msun/src/s_finitef.c
index 28b2f791b375..f42241996f46 100644
--- a/lib/msun/src/s_finitef.c
+++ b/lib/msun/src/s_finitef.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_finitef.c,v 1.1.1.1 1994/08/19 09:39:58 jkh Exp $";
+static char rcsid[] = "$Id: s_finitef.c,v 1.2 1995/05/30 05:49:38 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/s_floor.c b/lib/msun/src/s_floor.c
index 84b5c9db6504..9c8ae1750051 100644
--- a/lib/msun/src/s_floor.c
+++ b/lib/msun/src/s_floor.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_floor.c,v 1.1.1.1 1994/08/19 09:39:51 jkh Exp $";
+static char rcsid[] = "$Id: s_floor.c,v 1.2 1995/05/30 05:49:39 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/s_floorf.c b/lib/msun/src/s_floorf.c
index 885121380886..e2a82485f74d 100644
--- a/lib/msun/src/s_floorf.c
+++ b/lib/msun/src/s_floorf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_floorf.c,v 1.1.1.1 1994/08/19 09:39:58 jkh Exp $";
+static char rcsid[] = "$Id: s_floorf.c,v 1.2 1995/05/30 05:49:40 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/s_frexp.c b/lib/msun/src/s_frexp.c
index 6a1fadf97849..64b254003ac0 100644
--- a/lib/msun/src/s_frexp.c
+++ b/lib/msun/src/s_frexp.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_frexp.c,v 1.2 1995/04/07 23:23:26 bde Exp $";
+static char rcsid[] = "$Id: s_frexp.c,v 1.3 1995/05/30 05:49:41 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/s_frexpf.c b/lib/msun/src/s_frexpf.c
index ee97029b6f4d..33d73bef13a1 100644
--- a/lib/msun/src/s_frexpf.c
+++ b/lib/msun/src/s_frexpf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_frexpf.c,v 1.2 1995/04/07 23:23:27 bde Exp $";
+static char rcsid[] = "$Id: s_frexpf.c,v 1.3 1995/05/30 05:49:44 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/s_ilogb.c b/lib/msun/src/s_ilogb.c
index c6263d80b87a..b378a85466dc 100644
--- a/lib/msun/src/s_ilogb.c
+++ b/lib/msun/src/s_ilogb.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_ilogb.c,v 1.1.1.1 1994/08/19 09:39:52 jkh Exp $";
+static char rcsid[] = "$Id: s_ilogb.c,v 1.2 1995/05/30 05:49:45 rgrimes Exp $";
#endif
/* ilogb(double x)
diff --git a/lib/msun/src/s_ilogbf.c b/lib/msun/src/s_ilogbf.c
index 8c0f162a908d..2014959bd263 100644
--- a/lib/msun/src/s_ilogbf.c
+++ b/lib/msun/src/s_ilogbf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_ilogbf.c,v 1.1.1.1 1994/08/19 09:39:58 jkh Exp $";
+static char rcsid[] = "$Id: s_ilogbf.c,v 1.2 1995/05/30 05:49:46 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/s_isnan.c b/lib/msun/src/s_isnan.c
index 677913f5c114..5f01d48d9de5 100644
--- a/lib/msun/src/s_isnan.c
+++ b/lib/msun/src/s_isnan.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_isnan.c,v 1.1.1.1 1994/08/19 09:39:52 jkh Exp $";
+static char rcsid[] = "$Id: s_isnan.c,v 1.2 1995/05/30 05:49:47 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/s_isnanf.c b/lib/msun/src/s_isnanf.c
index 4c4e69ef01a0..85e68c231107 100644
--- a/lib/msun/src/s_isnanf.c
+++ b/lib/msun/src/s_isnanf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_isnanf.c,v 1.1.1.1 1994/08/19 09:39:58 jkh Exp $";
+static char rcsid[] = "$Id: s_isnanf.c,v 1.2 1995/05/30 05:49:48 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/s_ldexp.c b/lib/msun/src/s_ldexp.c
index 1d11ff2ba4b1..971ecd218a37 100644
--- a/lib/msun/src/s_ldexp.c
+++ b/lib/msun/src/s_ldexp.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_ldexp.c,v 1.1.1.1 1994/08/19 09:39:52 jkh Exp $";
+static char rcsid[] = "$Id: s_ldexp.c,v 1.2 1995/05/30 05:49:51 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/s_ldexpf.c b/lib/msun/src/s_ldexpf.c
index 7cd0ce06e2e2..6bfa0c5efc7a 100644
--- a/lib/msun/src/s_ldexpf.c
+++ b/lib/msun/src/s_ldexpf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_ldexpf.c,v 1.1.1.1 1994/08/19 09:39:58 jkh Exp $";
+static char rcsid[] = "$Id: s_ldexpf.c,v 1.2 1995/05/30 05:49:53 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/s_lib_version.c b/lib/msun/src/s_lib_version.c
index 7936f89dca0d..a02c715bd8c2 100644
--- a/lib/msun/src/s_lib_version.c
+++ b/lib/msun/src/s_lib_version.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_lib_version.c,v 1.1.1.1 1994/08/19 09:39:52 jkh Exp $";
+static char rcsid[] = "$Id: s_lib_version.c,v 1.2 1995/05/30 05:49:56 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/s_log1p.c b/lib/msun/src/s_log1p.c
index 56218d4a720b..6522f155900c 100644
--- a/lib/msun/src/s_log1p.c
+++ b/lib/msun/src/s_log1p.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_log1p.c,v 1.1.1.1 1994/08/19 09:39:52 jkh Exp $";
+static char rcsid[] = "$Id: s_log1p.c,v 1.2 1995/05/30 05:49:57 rgrimes Exp $";
#endif
/* double log1p(double x)
diff --git a/lib/msun/src/s_log1pf.c b/lib/msun/src/s_log1pf.c
index 4c4f65244850..4183da498eba 100644
--- a/lib/msun/src/s_log1pf.c
+++ b/lib/msun/src/s_log1pf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_log1pf.c,v 1.1.1.1 1994/08/19 09:39:58 jkh Exp $";
+static char rcsid[] = "$Id: s_log1pf.c,v 1.2 1995/05/30 05:49:58 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/s_logb.c b/lib/msun/src/s_logb.c
index 96e8fc46b61e..91af73cb7a20 100644
--- a/lib/msun/src/s_logb.c
+++ b/lib/msun/src/s_logb.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_logb.c,v 1.1.1.1 1994/08/19 09:39:52 jkh Exp $";
+static char rcsid[] = "$Id: s_logb.c,v 1.2 1995/05/30 05:49:59 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/s_logbf.c b/lib/msun/src/s_logbf.c
index ddc0a04d8f86..aaa1d675d30c 100644
--- a/lib/msun/src/s_logbf.c
+++ b/lib/msun/src/s_logbf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_logbf.c,v 1.1.1.1 1994/08/19 09:39:58 jkh Exp $";
+static char rcsid[] = "$Id: s_logbf.c,v 1.2 1995/05/30 05:50:00 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/s_matherr.c b/lib/msun/src/s_matherr.c
index 219a88c48b02..0d7288e9f209 100644
--- a/lib/msun/src/s_matherr.c
+++ b/lib/msun/src/s_matherr.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_matherr.c,v 1.1.1.1 1994/08/19 09:39:52 jkh Exp $";
+static char rcsid[] = "$Id: s_matherr.c,v 1.2 1995/05/30 05:50:02 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/s_modf.c b/lib/msun/src/s_modf.c
index b0ebbd0ff03b..0635159192cf 100644
--- a/lib/msun/src/s_modf.c
+++ b/lib/msun/src/s_modf.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_modf.c,v 1.1.1.1 1994/08/19 09:39:52 jkh Exp $";
+static char rcsid[] = "$Id: s_modf.c,v 1.2 1995/05/30 05:50:04 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/s_modff.c b/lib/msun/src/s_modff.c
index d1f0e3257bc1..5adc2f4cb780 100644
--- a/lib/msun/src/s_modff.c
+++ b/lib/msun/src/s_modff.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_modff.c,v 1.1.1.1 1994/08/19 09:39:58 jkh Exp $";
+static char rcsid[] = "$Id: s_modff.c,v 1.2 1995/05/30 05:50:08 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/s_nextafter.c b/lib/msun/src/s_nextafter.c
index 1936fad89e0f..44a28d2c8ea8 100644
--- a/lib/msun/src/s_nextafter.c
+++ b/lib/msun/src/s_nextafter.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_nextafter.c,v 1.1.1.1 1994/08/19 09:39:52 jkh Exp $";
+static char rcsid[] = "$Id: s_nextafter.c,v 1.2 1995/05/30 05:50:11 rgrimes Exp $";
#endif
/* IEEE functions
diff --git a/lib/msun/src/s_nextafterf.c b/lib/msun/src/s_nextafterf.c
index bd870705acc9..a3f3e02787a7 100644
--- a/lib/msun/src/s_nextafterf.c
+++ b/lib/msun/src/s_nextafterf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_nextafterf.c,v 1.1.1.1 1994/08/19 09:39:58 jkh Exp $";
+static char rcsid[] = "$Id: s_nextafterf.c,v 1.2 1995/05/30 05:50:13 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/s_rint.c b/lib/msun/src/s_rint.c
index 3476eeff4cad..e7747c4c0758 100644
--- a/lib/msun/src/s_rint.c
+++ b/lib/msun/src/s_rint.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_rint.c,v 1.1.1.1 1994/08/19 09:39:52 jkh Exp $";
+static char rcsid[] = "$Id: s_rint.c,v 1.2 1995/05/30 05:50:18 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/s_rintf.c b/lib/msun/src/s_rintf.c
index 4e77aab2391d..74d86c6c2bb6 100644
--- a/lib/msun/src/s_rintf.c
+++ b/lib/msun/src/s_rintf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_rintf.c,v 1.1.1.1 1994/08/19 09:39:58 jkh Exp $";
+static char rcsid[] = "$Id: s_rintf.c,v 1.2 1995/05/30 05:50:21 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/s_scalbn.c b/lib/msun/src/s_scalbn.c
index 6549931fb34d..6bfa83c12def 100644
--- a/lib/msun/src/s_scalbn.c
+++ b/lib/msun/src/s_scalbn.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_scalbn.c,v 1.1.1.1 1994/08/19 09:39:52 jkh Exp $";
+static char rcsid[] = "$Id: s_scalbn.c,v 1.2 1995/05/30 05:50:23 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/s_scalbnf.c b/lib/msun/src/s_scalbnf.c
index 08b16406a95a..4f3e004a7df3 100644
--- a/lib/msun/src/s_scalbnf.c
+++ b/lib/msun/src/s_scalbnf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_scalbnf.c,v 1.1.1.1 1994/08/19 09:39:58 jkh Exp $";
+static char rcsid[] = "$Id: s_scalbnf.c,v 1.2 1995/05/30 05:50:24 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/s_significand.c b/lib/msun/src/s_significand.c
index b30e6f290d77..4d539d66eb00 100644
--- a/lib/msun/src/s_significand.c
+++ b/lib/msun/src/s_significand.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_significand.c,v 1.1.1.1 1994/08/19 09:39:52 jkh Exp $";
+static char rcsid[] = "$Id: s_significand.c,v 1.2 1995/05/30 05:50:26 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/s_significandf.c b/lib/msun/src/s_significandf.c
index 445f264151e4..0410f81617f1 100644
--- a/lib/msun/src/s_significandf.c
+++ b/lib/msun/src/s_significandf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_significandf.c,v 1.1.1.1 1994/08/19 09:39:58 jkh Exp $";
+static char rcsid[] = "$Id: s_significandf.c,v 1.2 1995/05/30 05:50:28 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/s_sin.c b/lib/msun/src/s_sin.c
index a06d8b084d28..f249ee777fce 100644
--- a/lib/msun/src/s_sin.c
+++ b/lib/msun/src/s_sin.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_sin.c,v 1.1.1.1 1994/08/19 09:39:52 jkh Exp $";
+static char rcsid[] = "$Id: s_sin.c,v 1.2 1995/05/30 05:50:30 rgrimes Exp $";
#endif
/* sin(x)
diff --git a/lib/msun/src/s_sinf.c b/lib/msun/src/s_sinf.c
index 69b4841191e4..52cfc468a08c 100644
--- a/lib/msun/src/s_sinf.c
+++ b/lib/msun/src/s_sinf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_sinf.c,v 1.1.1.1 1994/08/19 09:39:58 jkh Exp $";
+static char rcsid[] = "$Id: s_sinf.c,v 1.2 1995/05/30 05:50:32 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/s_tan.c b/lib/msun/src/s_tan.c
index 24a406323d27..62b63c497b4d 100644
--- a/lib/msun/src/s_tan.c
+++ b/lib/msun/src/s_tan.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_tan.c,v 1.1.1.1 1994/08/19 09:39:53 jkh Exp $";
+static char rcsid[] = "$Id: s_tan.c,v 1.2 1995/05/30 05:50:33 rgrimes Exp $";
#endif
/* tan(x)
diff --git a/lib/msun/src/s_tanf.c b/lib/msun/src/s_tanf.c
index 0fb7e19c411c..1148a8569e25 100644
--- a/lib/msun/src/s_tanf.c
+++ b/lib/msun/src/s_tanf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_tanf.c,v 1.1.1.1 1994/08/19 09:39:58 jkh Exp $";
+static char rcsid[] = "$Id: s_tanf.c,v 1.2 1995/05/30 05:50:34 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/s_tanh.c b/lib/msun/src/s_tanh.c
index dc1baaab9b9e..046c67895bba 100644
--- a/lib/msun/src/s_tanh.c
+++ b/lib/msun/src/s_tanh.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_tanh.c,v 1.1.1.1 1994/08/19 09:39:53 jkh Exp $";
+static char rcsid[] = "$Id: s_tanh.c,v 1.2 1995/05/30 05:50:35 rgrimes Exp $";
#endif
/* Tanh(x)
diff --git a/lib/msun/src/s_tanhf.c b/lib/msun/src/s_tanhf.c
index 47908316047b..cfe602030d4f 100644
--- a/lib/msun/src/s_tanhf.c
+++ b/lib/msun/src/s_tanhf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: s_tanhf.c,v 1.1.1.1 1994/08/19 09:39:59 jkh Exp $";
+static char rcsid[] = "$Id: s_tanhf.c,v 1.2 1995/05/30 05:50:36 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/w_acos.c b/lib/msun/src/w_acos.c
index af5f0227edf7..31b67b3c9034 100644
--- a/lib/msun/src/w_acos.c
+++ b/lib/msun/src/w_acos.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_acos.c,v 1.1.1.1 1994/08/19 09:39:53 jkh Exp $";
+static char rcsid[] = "$Id: w_acos.c,v 1.2 1995/05/30 05:50:37 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_acosf.c b/lib/msun/src/w_acosf.c
index 1501235e3c40..5ddd21e9f1c1 100644
--- a/lib/msun/src/w_acosf.c
+++ b/lib/msun/src/w_acosf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_acosf.c,v 1.1.1.1 1994/08/19 09:39:59 jkh Exp $";
+static char rcsid[] = "$Id: w_acosf.c,v 1.2 1995/05/30 05:50:38 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_acosh.c b/lib/msun/src/w_acosh.c
index d32cd3d32d47..4b2a98ff22db 100644
--- a/lib/msun/src/w_acosh.c
+++ b/lib/msun/src/w_acosh.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_acosh.c,v 1.1.1.1 1994/08/19 09:39:53 jkh Exp $";
+static char rcsid[] = "$Id: w_acosh.c,v 1.2 1995/05/30 05:50:39 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_acoshf.c b/lib/msun/src/w_acoshf.c
index 232685309174..90fb1991eb06 100644
--- a/lib/msun/src/w_acoshf.c
+++ b/lib/msun/src/w_acoshf.c
@@ -15,7 +15,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_acoshf.c,v 1.1.1.1 1994/08/19 09:39:59 jkh Exp $";
+static char rcsid[] = "$Id: w_acoshf.c,v 1.2 1995/05/30 05:50:40 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_asin.c b/lib/msun/src/w_asin.c
index 7174df657fa1..0079e15ec992 100644
--- a/lib/msun/src/w_asin.c
+++ b/lib/msun/src/w_asin.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_asin.c,v 1.1.1.1 1994/08/19 09:39:53 jkh Exp $";
+static char rcsid[] = "$Id: w_asin.c,v 1.2 1995/05/30 05:50:41 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_asinf.c b/lib/msun/src/w_asinf.c
index fdc08d4b7ff5..e5894361e3c8 100644
--- a/lib/msun/src/w_asinf.c
+++ b/lib/msun/src/w_asinf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_asinf.c,v 1.1.1.1 1994/08/19 09:39:59 jkh Exp $";
+static char rcsid[] = "$Id: w_asinf.c,v 1.2 1995/05/30 05:50:42 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_atan2.c b/lib/msun/src/w_atan2.c
index b408ad6e561a..d6827296f867 100644
--- a/lib/msun/src/w_atan2.c
+++ b/lib/msun/src/w_atan2.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_atan2.c,v 1.1.1.1 1994/08/19 09:39:53 jkh Exp $";
+static char rcsid[] = "$Id: w_atan2.c,v 1.2 1995/05/30 05:50:43 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_atan2f.c b/lib/msun/src/w_atan2f.c
index 403cc52f22d2..319463e35a78 100644
--- a/lib/msun/src/w_atan2f.c
+++ b/lib/msun/src/w_atan2f.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_atan2f.c,v 1.1.1.1 1994/08/19 09:39:59 jkh Exp $";
+static char rcsid[] = "$Id: w_atan2f.c,v 1.2 1995/05/30 05:50:44 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_atanh.c b/lib/msun/src/w_atanh.c
index c0774220be44..14f0b1c97be0 100644
--- a/lib/msun/src/w_atanh.c
+++ b/lib/msun/src/w_atanh.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_atanh.c,v 1.1.1.1 1994/08/19 09:39:53 jkh Exp $";
+static char rcsid[] = "$Id: w_atanh.c,v 1.2 1995/05/30 05:50:45 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_atanhf.c b/lib/msun/src/w_atanhf.c
index 8e6fe1a185e1..d751c8c0aca9 100644
--- a/lib/msun/src/w_atanhf.c
+++ b/lib/msun/src/w_atanhf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_atanhf.c,v 1.1.1.1 1994/08/19 09:39:59 jkh Exp $";
+static char rcsid[] = "$Id: w_atanhf.c,v 1.2 1995/05/30 05:50:46 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_cosh.c b/lib/msun/src/w_cosh.c
index 5386838ffc72..306eab1d33e3 100644
--- a/lib/msun/src/w_cosh.c
+++ b/lib/msun/src/w_cosh.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_cosh.c,v 1.1.1.1 1994/08/19 09:39:53 jkh Exp $";
+static char rcsid[] = "$Id: w_cosh.c,v 1.2 1995/05/30 05:50:49 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_coshf.c b/lib/msun/src/w_coshf.c
index 64fd579640f6..15b44ff31285 100644
--- a/lib/msun/src/w_coshf.c
+++ b/lib/msun/src/w_coshf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_coshf.c,v 1.1.1.1 1994/08/19 09:39:59 jkh Exp $";
+static char rcsid[] = "$Id: w_coshf.c,v 1.2 1995/05/30 05:50:53 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_exp.c b/lib/msun/src/w_exp.c
index 0d592ee5004e..3288c53c109d 100644
--- a/lib/msun/src/w_exp.c
+++ b/lib/msun/src/w_exp.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_exp.c,v 1.1.1.1 1994/08/19 09:39:53 jkh Exp $";
+static char rcsid[] = "$Id: w_exp.c,v 1.2 1995/05/30 05:50:58 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_expf.c b/lib/msun/src/w_expf.c
index e22a951e92c9..276a6d291c58 100644
--- a/lib/msun/src/w_expf.c
+++ b/lib/msun/src/w_expf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_expf.c,v 1.1.1.1 1994/08/19 09:39:59 jkh Exp $";
+static char rcsid[] = "$Id: w_expf.c,v 1.2 1995/05/30 05:51:00 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_fmod.c b/lib/msun/src/w_fmod.c
index 4065409d170e..02d2184d135f 100644
--- a/lib/msun/src/w_fmod.c
+++ b/lib/msun/src/w_fmod.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_fmod.c,v 1.1.1.1 1994/08/19 09:39:53 jkh Exp $";
+static char rcsid[] = "$Id: w_fmod.c,v 1.2 1995/05/30 05:51:02 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_fmodf.c b/lib/msun/src/w_fmodf.c
index 5c0c43209af2..b6681360b27c 100644
--- a/lib/msun/src/w_fmodf.c
+++ b/lib/msun/src/w_fmodf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_fmodf.c,v 1.1.1.1 1994/08/19 09:39:59 jkh Exp $";
+static char rcsid[] = "$Id: w_fmodf.c,v 1.2 1995/05/30 05:51:03 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_gamma.c b/lib/msun/src/w_gamma.c
index bf53f1874931..a1ddf9037f47 100644
--- a/lib/msun/src/w_gamma.c
+++ b/lib/msun/src/w_gamma.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_gamma.c,v 1.1.1.1 1994/08/19 09:39:53 jkh Exp $";
+static char rcsid[] = "$Id: w_gamma.c,v 1.2 1995/05/30 05:51:04 rgrimes Exp $";
#endif
/* double gamma(double x)
diff --git a/lib/msun/src/w_gamma_r.c b/lib/msun/src/w_gamma_r.c
index 7aad6133c320..7db1799f524b 100644
--- a/lib/msun/src/w_gamma_r.c
+++ b/lib/msun/src/w_gamma_r.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_gamma_r.c,v 1.1.1.1 1994/08/19 09:39:53 jkh Exp $";
+static char rcsid[] = "$Id: w_gamma_r.c,v 1.2 1995/05/30 05:51:06 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_gammaf.c b/lib/msun/src/w_gammaf.c
index 89e8f7fa26a1..5aad38ae5d73 100644
--- a/lib/msun/src/w_gammaf.c
+++ b/lib/msun/src/w_gammaf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_gammaf.c,v 1.1.1.1 1994/08/19 09:39:59 jkh Exp $";
+static char rcsid[] = "$Id: w_gammaf.c,v 1.2 1995/05/30 05:51:10 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/w_gammaf_r.c b/lib/msun/src/w_gammaf_r.c
index a2585cbb300a..024c5d4cde23 100644
--- a/lib/msun/src/w_gammaf_r.c
+++ b/lib/msun/src/w_gammaf_r.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_gammaf_r.c,v 1.1.1.1 1994/08/19 09:39:59 jkh Exp $";
+static char rcsid[] = "$Id: w_gammaf_r.c,v 1.2 1995/05/30 05:51:12 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_hypot.c b/lib/msun/src/w_hypot.c
index 9b6f46fcf652..77ccecc891c7 100644
--- a/lib/msun/src/w_hypot.c
+++ b/lib/msun/src/w_hypot.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_hypot.c,v 1.1.1.1 1994/08/19 09:39:53 jkh Exp $";
+static char rcsid[] = "$Id: w_hypot.c,v 1.2 1995/05/30 05:51:13 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_hypotf.c b/lib/msun/src/w_hypotf.c
index 0b126d702cd7..030dd5dadfcb 100644
--- a/lib/msun/src/w_hypotf.c
+++ b/lib/msun/src/w_hypotf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_hypotf.c,v 1.1.1.1 1994/08/19 09:39:59 jkh Exp $";
+static char rcsid[] = "$Id: w_hypotf.c,v 1.2 1995/05/30 05:51:15 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_j0.c b/lib/msun/src/w_j0.c
index c5b9fe053584..2ebba4ef78d2 100644
--- a/lib/msun/src/w_j0.c
+++ b/lib/msun/src/w_j0.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_j0.c,v 1.1.1.1 1994/08/19 09:39:53 jkh Exp $";
+static char rcsid[] = "$Id: w_j0.c,v 1.2 1995/05/30 05:51:16 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_j0f.c b/lib/msun/src/w_j0f.c
index e836edc55f5c..75a02e885973 100644
--- a/lib/msun/src/w_j0f.c
+++ b/lib/msun/src/w_j0f.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_j0f.c,v 1.1.1.1 1994/08/19 09:39:57 jkh Exp $";
+static char rcsid[] = "$Id: w_j0f.c,v 1.2 1995/05/30 05:51:18 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_j1.c b/lib/msun/src/w_j1.c
index c0204bd94c84..7f3b42a604c7 100644
--- a/lib/msun/src/w_j1.c
+++ b/lib/msun/src/w_j1.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_j1.c,v 1.1.1.1 1994/08/19 09:39:53 jkh Exp $";
+static char rcsid[] = "$Id: w_j1.c,v 1.2 1995/05/30 05:51:19 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_j1f.c b/lib/msun/src/w_j1f.c
index 60b9e21abcd2..bcb2366d1995 100644
--- a/lib/msun/src/w_j1f.c
+++ b/lib/msun/src/w_j1f.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_j1f.c,v 1.1.1.1 1994/08/19 09:39:59 jkh Exp $";
+static char rcsid[] = "$Id: w_j1f.c,v 1.2 1995/05/30 05:51:21 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_jn.c b/lib/msun/src/w_jn.c
index 2fb8365ecd99..53f196a2f416 100644
--- a/lib/msun/src/w_jn.c
+++ b/lib/msun/src/w_jn.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_jn.c,v 1.1.1.1 1994/08/19 09:39:53 jkh Exp $";
+static char rcsid[] = "$Id: w_jn.c,v 1.2 1995/05/30 05:51:24 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_jnf.c b/lib/msun/src/w_jnf.c
index 00b2ddfa3de0..4be344a28243 100644
--- a/lib/msun/src/w_jnf.c
+++ b/lib/msun/src/w_jnf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_jnf.c,v 1.1.1.1 1994/08/19 09:39:59 jkh Exp $";
+static char rcsid[] = "$Id: w_jnf.c,v 1.2 1995/05/30 05:51:27 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/w_lgamma.c b/lib/msun/src/w_lgamma.c
index f15cb9d14899..ff197721a1ec 100644
--- a/lib/msun/src/w_lgamma.c
+++ b/lib/msun/src/w_lgamma.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_lgamma.c,v 1.1.1.1 1994/08/19 09:39:53 jkh Exp $";
+static char rcsid[] = "$Id: w_lgamma.c,v 1.2 1995/05/30 05:51:28 rgrimes Exp $";
#endif
/* double lgamma(double x)
diff --git a/lib/msun/src/w_lgamma_r.c b/lib/msun/src/w_lgamma_r.c
index 2cac60c13ba5..cc0621428dee 100644
--- a/lib/msun/src/w_lgamma_r.c
+++ b/lib/msun/src/w_lgamma_r.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_lgamma_r.c,v 1.1.1.1 1994/08/19 09:39:54 jkh Exp $";
+static char rcsid[] = "$Id: w_lgamma_r.c,v 1.2 1995/05/30 05:51:29 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_lgammaf.c b/lib/msun/src/w_lgammaf.c
index e4b2aa20ee79..02b0b6e72b6c 100644
--- a/lib/msun/src/w_lgammaf.c
+++ b/lib/msun/src/w_lgammaf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_lgammaf.c,v 1.1.1.1 1994/08/19 09:39:59 jkh Exp $";
+static char rcsid[] = "$Id: w_lgammaf.c,v 1.2 1995/05/30 05:51:31 rgrimes Exp $";
#endif
#include "math.h"
diff --git a/lib/msun/src/w_lgammaf_r.c b/lib/msun/src/w_lgammaf_r.c
index 3fd4f227c533..067e18baea7d 100644
--- a/lib/msun/src/w_lgammaf_r.c
+++ b/lib/msun/src/w_lgammaf_r.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_lgammaf_r.c,v 1.1.1.1 1994/08/19 09:39:59 jkh Exp $";
+static char rcsid[] = "$Id: w_lgammaf_r.c,v 1.2 1995/05/30 05:51:32 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_log.c b/lib/msun/src/w_log.c
index e5b8afde387f..03f832159968 100644
--- a/lib/msun/src/w_log.c
+++ b/lib/msun/src/w_log.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_log.c,v 1.1.1.1 1994/08/19 09:39:54 jkh Exp $";
+static char rcsid[] = "$Id: w_log.c,v 1.2 1995/05/30 05:51:33 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_log10.c b/lib/msun/src/w_log10.c
index c09deeb78e3f..2fe95b3ab1f9 100644
--- a/lib/msun/src/w_log10.c
+++ b/lib/msun/src/w_log10.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_log10.c,v 1.1.1.1 1994/08/19 09:39:54 jkh Exp $";
+static char rcsid[] = "$Id: w_log10.c,v 1.2 1995/05/30 05:51:34 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_log10f.c b/lib/msun/src/w_log10f.c
index 31a94107239f..d86014a6340f 100644
--- a/lib/msun/src/w_log10f.c
+++ b/lib/msun/src/w_log10f.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_log10f.c,v 1.1.1.1 1994/08/19 09:40:00 jkh Exp $";
+static char rcsid[] = "$Id: w_log10f.c,v 1.2 1995/05/30 05:51:35 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_logf.c b/lib/msun/src/w_logf.c
index 3f3f8d47aab0..fe9b5cd0a7e1 100644
--- a/lib/msun/src/w_logf.c
+++ b/lib/msun/src/w_logf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_logf.c,v 1.1.1.1 1994/08/19 09:40:00 jkh Exp $";
+static char rcsid[] = "$Id: w_logf.c,v 1.2 1995/05/30 05:51:36 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_powf.c b/lib/msun/src/w_powf.c
index 40fb91fc858e..68685ae06f2f 100644
--- a/lib/msun/src/w_powf.c
+++ b/lib/msun/src/w_powf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_powf.c,v 1.1.1.1 1994/08/19 09:40:00 jkh Exp $";
+static char rcsid[] = "$Id: w_powf.c,v 1.2 1995/05/30 05:51:38 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_remainder.c b/lib/msun/src/w_remainder.c
index dd0f11215714..1386f0fa9cb6 100644
--- a/lib/msun/src/w_remainder.c
+++ b/lib/msun/src/w_remainder.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_remainder.c,v 1.1.1.1 1994/08/19 09:39:54 jkh Exp $";
+static char rcsid[] = "$Id: w_remainder.c,v 1.2 1995/05/30 05:51:39 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_remainderf.c b/lib/msun/src/w_remainderf.c
index a7f3e469e6cc..fce589524009 100644
--- a/lib/msun/src/w_remainderf.c
+++ b/lib/msun/src/w_remainderf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_remainderf.c,v 1.1.1.1 1994/08/19 09:40:00 jkh Exp $";
+static char rcsid[] = "$Id: w_remainderf.c,v 1.2 1995/05/30 05:51:40 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_scalb.c b/lib/msun/src/w_scalb.c
index 9e3ce15042c7..1d79db94c620 100644
--- a/lib/msun/src/w_scalb.c
+++ b/lib/msun/src/w_scalb.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_scalb.c,v 1.1.1.1 1994/08/19 09:39:54 jkh Exp $";
+static char rcsid[] = "$Id: w_scalb.c,v 1.2 1995/05/30 05:51:41 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_scalbf.c b/lib/msun/src/w_scalbf.c
index 469525cfc17f..f6a5a4f53c3e 100644
--- a/lib/msun/src/w_scalbf.c
+++ b/lib/msun/src/w_scalbf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_scalbf.c,v 1.1.1.1 1994/08/19 09:40:00 jkh Exp $";
+static char rcsid[] = "$Id: w_scalbf.c,v 1.2 1995/05/30 05:51:42 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_sinh.c b/lib/msun/src/w_sinh.c
index 8498dbe87e33..ab311429cafa 100644
--- a/lib/msun/src/w_sinh.c
+++ b/lib/msun/src/w_sinh.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_sinh.c,v 1.1.1.1 1994/08/19 09:39:54 jkh Exp $";
+static char rcsid[] = "$Id: w_sinh.c,v 1.2 1995/05/30 05:51:43 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_sinhf.c b/lib/msun/src/w_sinhf.c
index 5f1467dc1d22..3edbd4473f9e 100644
--- a/lib/msun/src/w_sinhf.c
+++ b/lib/msun/src/w_sinhf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_sinhf.c,v 1.1.1.1 1994/08/19 09:40:00 jkh Exp $";
+static char rcsid[] = "$Id: w_sinhf.c,v 1.2 1995/05/30 05:51:44 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_sqrt.c b/lib/msun/src/w_sqrt.c
index bdf97d21e086..21672c40fdf7 100644
--- a/lib/msun/src/w_sqrt.c
+++ b/lib/msun/src/w_sqrt.c
@@ -11,7 +11,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_sqrt.c,v 1.1.1.1 1994/08/19 09:39:54 jkh Exp $";
+static char rcsid[] = "$Id: w_sqrt.c,v 1.2 1995/05/30 05:51:46 rgrimes Exp $";
#endif
/*
diff --git a/lib/msun/src/w_sqrtf.c b/lib/msun/src/w_sqrtf.c
index 55631bff8012..7b87e6762c3c 100644
--- a/lib/msun/src/w_sqrtf.c
+++ b/lib/msun/src/w_sqrtf.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: w_sqrtf.c,v 1.1.1.1 1994/08/19 09:40:00 jkh Exp $";
+static char rcsid[] = "$Id: w_sqrtf.c,v 1.2 1995/05/30 05:51:47 rgrimes Exp $";
#endif
/*
diff --git a/libexec/atrun/Makefile b/libexec/atrun/Makefile
index cb69fd16980d..d0d3770c911c 100644
--- a/libexec/atrun/Makefile
+++ b/libexec/atrun/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1 1994/01/05 01:02:56 nate Exp $
+# $Id: Makefile,v 1.2 1995/04/12 02:52:08 ache Exp $
MAINSRC= ${.CURDIR}/../../usr.bin/at
diff --git a/libexec/atrun/atrun.c b/libexec/atrun/atrun.c
index 3ae9ee78decd..c8d12a863cad 100644
--- a/libexec/atrun/atrun.c
+++ b/libexec/atrun/atrun.c
@@ -73,7 +73,7 @@
/* File scope variables */
static char *namep;
-static char rcsid[] = "$Id: atrun.c,v 1.3 1995/04/12 19:21:43 ache Exp $";
+static char rcsid[] = "$Id: atrun.c,v 1.4 1995/05/30 05:45:39 rgrimes Exp $";
static debug = 0;
/* Local functions */
diff --git a/libexec/atrun/atrun.man b/libexec/atrun/atrun.man
index abce667bfacc..2172492ab597 100644
--- a/libexec/atrun/atrun.man
+++ b/libexec/atrun/atrun.man
@@ -1,4 +1,4 @@
-.\" $Id: atrun.man,v 1.1 1994/05/10 18:23:08 kernel Exp $
+.\" $Id: atrun.man,v 1.1 1995/04/12 02:52:21 ache Exp $
.Dd April 12, 1995
.Dt ATRUN 8
.Os "FreeBSD 2.1"
diff --git a/libexec/bootpd/Makefile b/libexec/bootpd/Makefile
index 954761ca4e7d..ccdce28d5294 100644
--- a/libexec/bootpd/Makefile
+++ b/libexec/bootpd/Makefile
@@ -1,5 +1,5 @@
# bootpd/Makefile
-# $Id: Makefile,v 1.3 1995/07/25 23:38:40 wpaul Exp $
+# $Id: Makefile,v 1.2.4.1 1995/08/30 09:03:41 davidg Exp $
PROG= bootpd
CFLAGS+= -DETC_ETHERS
diff --git a/libexec/bootpd/bootp.h b/libexec/bootpd/bootp.h
index 0651aa5dbfb0..c18b0e469583 100644
--- a/libexec/bootpd/bootp.h
+++ b/libexec/bootpd/bootp.h
@@ -23,7 +23,7 @@ SOFTWARE.
/*
* Bootstrap Protocol (BOOTP). RFC951 and RFC1395.
*
- * $Id: bootp.h,v 1.1.1.1 1994/09/10 14:44:54 csgr Exp $
+ * $Id: bootp.h,v 1.1.1.1 1994/09/30 05:45:04 pst Exp $
*
*
* This file specifies the "implementation-independent" BOOTP protocol
diff --git a/libexec/bootpd/bootpd.8 b/libexec/bootpd/bootpd.8
index 359ce53d30ae..e927f972794b 100644
--- a/libexec/bootpd/bootpd.8
+++ b/libexec/bootpd/bootpd.8
@@ -1,6 +1,6 @@
.\" Copyright (c) 1988, 1989, 1991 Carnegie Mellon University
.\"
-.\" $Header: /home/ncvs/src/libexec/bootpd/bootpd.8,v 1.1.1.1 1994/09/30 05:45:04 pst Exp $
+.\" $Header: /home/ncvs/src/libexec/bootpd/bootpd.8,v 1.2 1995/04/12 00:24:48 gpalmer Exp $
.\"
.TH BOOTPD 8 "November 06, 1993" "Carnegie Mellon University"
.SH NAME
diff --git a/libexec/bootpd/bootpd.c b/libexec/bootpd/bootpd.c
index cf693fd6cc0c..9a41e7b55717 100644
--- a/libexec/bootpd/bootpd.c
+++ b/libexec/bootpd/bootpd.c
@@ -21,7 +21,7 @@ SOFTWARE.
************************************************************************/
#ifndef lint
-static char rcsid[] = "$Id: bootpd.c,v 1.1.1.1 1994/09/30 05:45:04 pst Exp $";
+static char rcsid[] = "$Id: bootpd.c,v 1.2 1995/05/30 05:45:47 rgrimes Exp $";
#endif
/*
diff --git a/libexec/bootpd/bootptab.5 b/libexec/bootpd/bootptab.5
index 74953837f6e9..6e11bcf87cfa 100644
--- a/libexec/bootpd/bootptab.5
+++ b/libexec/bootpd/bootptab.5
@@ -1,6 +1,6 @@
.\" Copyright (c) 1988, 1989, 1991 Carnegie Mellon University
.\"
-.\" $Header: /home/ncvs/src/usr.sbin/bootpd/bootptab.5,v 1.1.1.1 1994/09/10 14:44:54 csgr Exp $
+.\" $Header: /home/ncvs/src/libexec/bootpd/bootptab.5,v 1.1.1.1 1994/09/30 05:45:04 pst Exp $
.\"
.TH BOOTPTAB 5 "October 31, 1991" "Carnegie Mellon University"
.UC 6
diff --git a/libexec/bootpd/hash.c b/libexec/bootpd/hash.c
index 2ecda6305a25..3de8c2438b2c 100644
--- a/libexec/bootpd/hash.c
+++ b/libexec/bootpd/hash.c
@@ -21,7 +21,7 @@ SOFTWARE.
************************************************************************/
#ifndef lint
-static char rcsid[] = "$Id: hash.c,v 1.1.1.1 1994/09/10 14:44:55 csgr Exp $";
+static char rcsid[] = "$Id: hash.c,v 1.1.1.1 1994/09/30 05:45:05 pst Exp $";
#endif
diff --git a/libexec/bootpd/readfile.c b/libexec/bootpd/readfile.c
index 4a9d9937dd5c..6189363e15bc 100644
--- a/libexec/bootpd/readfile.c
+++ b/libexec/bootpd/readfile.c
@@ -21,7 +21,7 @@ SOFTWARE.
************************************************************************/
#ifndef lint
-static char rcsid[] = "$Id: readfile.c,v 1.1.1.1 1994/09/10 14:44:55 csgr Exp $";
+static char rcsid[] = "$Id: readfile.c,v 1.1.1.1 1994/09/30 05:45:06 pst Exp $";
#endif
diff --git a/libexec/bootpd/rtmsg.c b/libexec/bootpd/rtmsg.c
index 5942b22d13f4..96801ffdf323 100644
--- a/libexec/bootpd/rtmsg.c
+++ b/libexec/bootpd/rtmsg.c
@@ -39,7 +39,7 @@
/*
* from arp.c 8.2 (Berkeley) 1/2/94
- * $Id: rtmsg.c,v 1.3 1995/01/30 11:11:43 dfr Exp $
+ * $Id: rtmsg.c,v 1.4 1995/05/30 05:45:49 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/libexec/bootpd/tools/Makefile b/libexec/bootpd/tools/Makefile
index b1f38e76ecbd..625bdee24b1b 100644
--- a/libexec/bootpd/tools/Makefile
+++ b/libexec/bootpd/tools/Makefile
@@ -1,5 +1,5 @@
# Makefile
-# $Id$
+# $Id: Makefile,v 1.1.1.1 1994/09/30 05:45:07 pst Exp $
SUBDIR= bootpef bootptest
diff --git a/libexec/bootpd/tools/Makefile.inc b/libexec/bootpd/tools/Makefile.inc
index 0a2ab66f28f4..38b150a65086 100644
--- a/libexec/bootpd/tools/Makefile.inc
+++ b/libexec/bootpd/tools/Makefile.inc
@@ -1,4 +1,4 @@
# Makefile.inc
-# $Id$
+# $Id: Makefile.inc,v 1.1.1.1 1994/09/30 05:45:07 pst Exp $
BINDIR=/usr/sbin
diff --git a/libexec/bootpd/tools/bootpef/Makefile b/libexec/bootpd/tools/bootpef/Makefile
index 7d176069a8d6..eb0c4a5ef87f 100644
--- a/libexec/bootpd/tools/bootpef/Makefile
+++ b/libexec/bootpd/tools/bootpef/Makefile
@@ -1,5 +1,5 @@
# Makefile
-# $Id$
+# $Id: Makefile,v 1.1.1.1 1994/09/30 05:45:07 pst Exp $
PROG= bootpef
MAN8= bootpef.8
diff --git a/libexec/bootpd/tools/bootpef/bootpef.c b/libexec/bootpd/tools/bootpef/bootpef.c
index eb1893501242..81ec8ab40248 100644
--- a/libexec/bootpd/tools/bootpef/bootpef.c
+++ b/libexec/bootpd/tools/bootpef/bootpef.c
@@ -21,7 +21,7 @@ SOFTWARE.
************************************************************************/
#ifndef lint
-static char rcsid[] = "$Id: bootpef.c,v 1.1.1.1 1994/09/10 14:44:54 csgr Exp $";
+static char rcsid[] = "$Id: bootpef.c,v 1.1.1.1 1994/09/30 05:45:07 pst Exp $";
#endif
diff --git a/libexec/bootpd/tools/bootptest/Makefile b/libexec/bootpd/tools/bootptest/Makefile
index 95f99f1e112d..f22520866ab1 100644
--- a/libexec/bootpd/tools/bootptest/Makefile
+++ b/libexec/bootpd/tools/bootptest/Makefile
@@ -1,5 +1,5 @@
# Makefile
-# $Id: Makefile,v 1.3 1995/09/28 17:33:16 bde Exp $
+# $Id: Makefile,v 1.2.4.1 1995/10/05 20:27:09 davidg Exp $
PROG= bootptest
MAN8= bootptest.8
diff --git a/libexec/bootpd/tools/bootptest/print-bootp.c b/libexec/bootpd/tools/bootptest/print-bootp.c
index f4169986920a..c52ecd61cc48 100644
--- a/libexec/bootpd/tools/bootptest/print-bootp.c
+++ b/libexec/bootpd/tools/bootptest/print-bootp.c
@@ -24,7 +24,7 @@
* There is an e-mail list for tcpdump: <tcpdump@ee.lbl.gov>
*/
#ifndef lint
-static char rcsid[] = "$Id: print-bootp.c,v 1.1.1.1 1994/09/10 14:44:55 csgr Exp $";
+static char rcsid[] = "$Id: print-bootp.c,v 1.1.1.1 1994/09/30 05:45:07 pst Exp $";
/* 93/10/10 <gwr@mc.com> New data-driven option print routine. */
#endif
diff --git a/libexec/bootpgw/Makefile b/libexec/bootpgw/Makefile
index a155e0e4f7c3..ee3ec4decdf6 100644
--- a/libexec/bootpgw/Makefile
+++ b/libexec/bootpgw/Makefile
@@ -1,5 +1,5 @@
# Makefile
-# $Id$
+# $Id: Makefile,v 1.1.1.1 1994/09/30 05:43:13 pst Exp $
PROG= bootpgw
NOMAN= true
diff --git a/libexec/bootpgw/bootpgw.c b/libexec/bootpgw/bootpgw.c
index 4e7538bb4def..ec0fa7bb837a 100644
--- a/libexec/bootpgw/bootpgw.c
+++ b/libexec/bootpgw/bootpgw.c
@@ -26,7 +26,7 @@ SOFTWARE.
************************************************************************/
#ifndef lint
-static char rcsid[] = "$Id: bootpgw.c,v 1.1.1.1 1994/09/10 14:44:54 csgr Exp $";
+static char rcsid[] = "$Id: bootpgw.c,v 1.1.1.1 1994/09/30 05:43:13 pst Exp $";
#endif
/*
diff --git a/libexec/ftpd/ftpd.c b/libexec/ftpd/ftpd.c
index 47fbc2ea65f3..b581957ef0e7 100644
--- a/libexec/ftpd/ftpd.c
+++ b/libexec/ftpd/ftpd.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: ftpd.c,v 1.10.4.1 1995/08/26 00:53:52 davidg Exp $
+ * $Id: ftpd.c,v 1.10.4.2 1995/09/01 03:07:17 davidg Exp $
*/
#ifndef lint
diff --git a/libexec/rpc.rstatd/Makefile b/libexec/rpc.rstatd/Makefile
index 312f7cf7c3fe..aa2ce5f9e6d6 100644
--- a/libexec/rpc.rstatd/Makefile
+++ b/libexec/rpc.rstatd/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.2 1993/11/10 03:45:40 smace Exp $
+# $Id: Makefile,v 1.1.1.1 1994/08/28 14:49:03 csgr Exp $
PROG = rpc.rstatd
SRCS = rstatd.c rstat_proc.c
diff --git a/libexec/rpc.rstatd/rpc.rstatd.8 b/libexec/rpc.rstatd/rpc.rstatd.8
index 0644bbbf7f0d..ebf814182709 100644
--- a/libexec/rpc.rstatd/rpc.rstatd.8
+++ b/libexec/rpc.rstatd/rpc.rstatd.8
@@ -31,7 +31,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $Id: rpc.rstatd.8,v 1.1 1993/09/16 00:27:45 jtc Exp $
+.\" $Id: rpc.rstatd.8,v 1.1.1.1 1994/08/28 14:49:04 csgr Exp $
.\"
.Dd June 7, 1993
.Dt RPC.RSTATD 8
diff --git a/libexec/rpc.rstatd/rstat_proc.c b/libexec/rpc.rstatd/rstat_proc.c
index 613ce51cc47b..3e9c49e592c8 100644
--- a/libexec/rpc.rstatd/rstat_proc.c
+++ b/libexec/rpc.rstatd/rstat_proc.c
@@ -29,7 +29,7 @@
#ifndef lint
/*static char sccsid[] = "from: @(#)rpc.rstatd.c 1.1 86/09/25 Copyr 1984 Sun Micro";*/
/*static char sccsid[] = "from: @(#)rstat_proc.c 2.2 88/08/01 4.0 RPCSRC";*/
-static char rcsid[] = "$Id: rstat_proc.c,v 1.2 1994/10/15 13:39:54 davidg Exp $";
+static char rcsid[] = "$Id: rstat_proc.c,v 1.3 1995/05/30 05:46:28 rgrimes Exp $";
#endif
/*
diff --git a/libexec/rpc.rstatd/rstatd.c b/libexec/rpc.rstatd/rstatd.c
index 972974cc101a..4b196e231227 100644
--- a/libexec/rpc.rstatd/rstatd.c
+++ b/libexec/rpc.rstatd/rstatd.c
@@ -32,7 +32,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: rstatd.c,v 1.2 1994/11/18 22:31:05 ats Exp $";
+static char rcsid[] = "$Id: rstatd.c,v 1.3 1995/05/30 05:46:30 rgrimes Exp $";
#endif /* not lint */
#include <stdio.h>
diff --git a/libexec/rpc.rusersd/Makefile b/libexec/rpc.rusersd/Makefile
index 1c689397232d..1146a1d0a48c 100644
--- a/libexec/rpc.rusersd/Makefile
+++ b/libexec/rpc.rusersd/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.2 1993/11/10 03:46:04 smace Exp $
+# $Id: Makefile,v 1.1.1.1 1994/08/28 14:53:44 csgr Exp $
PROG = rpc.rusersd
SRCS = rusersd.c rusers_proc.c
diff --git a/libexec/rpc.rusersd/rpc.rusersd.8 b/libexec/rpc.rusersd/rpc.rusersd.8
index 15947ac8bfbb..94ce38a52413 100644
--- a/libexec/rpc.rusersd/rpc.rusersd.8
+++ b/libexec/rpc.rusersd/rpc.rusersd.8
@@ -31,7 +31,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $Id: rpc.rusersd.8,v 1.1 1993/09/16 00:34:43 jtc Exp $
+.\" $Id: rpc.rusersd.8,v 1.1.1.1 1994/08/28 14:53:44 csgr Exp $
.\"
.Dd June 7, 1993
.Dt RPC.RUSERSD 8
diff --git a/libexec/rpc.rusersd/rusers_proc.c b/libexec/rpc.rusersd/rusers_proc.c
index d472673e8a21..15bcbc7b89af 100644
--- a/libexec/rpc.rusersd/rusers_proc.c
+++ b/libexec/rpc.rusersd/rusers_proc.c
@@ -32,7 +32,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: rusers_proc.c,v 1.3 1994/11/18 23:36:18 ats Exp $";
+static char rcsid[] = "$Id: rusers_proc.c,v 1.4 1995/05/30 05:46:32 rgrimes Exp $";
#endif /* not lint */
#include <signal.h>
diff --git a/libexec/rpc.rusersd/rusersd.c b/libexec/rpc.rusersd/rusersd.c
index 01823060f0b5..80a9cc6c9373 100644
--- a/libexec/rpc.rusersd/rusersd.c
+++ b/libexec/rpc.rusersd/rusersd.c
@@ -32,7 +32,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: rusersd.c,v 1.2 1994/11/18 22:40:11 ats Exp $";
+static char rcsid[] = "$Id: rusersd.c,v 1.3 1995/05/30 05:46:34 rgrimes Exp $";
#endif /* not lint */
#include <stdio.h>
diff --git a/libexec/rpc.rwalld/Makefile b/libexec/rpc.rwalld/Makefile
index 5d7b492a8a40..81cf9784702b 100644
--- a/libexec/rpc.rwalld/Makefile
+++ b/libexec/rpc.rwalld/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.2 1993/11/10 03:46:23 smace Exp $
+# $Id: Makefile,v 1.1.1.1 1994/08/28 14:58:36 csgr Exp $
PROG = rpc.rwalld
SRCS = rwalld.c
diff --git a/libexec/rpc.rwalld/rpc.rwalld.8 b/libexec/rpc.rwalld/rpc.rwalld.8
index eadadf4212b7..ada838542f84 100644
--- a/libexec/rpc.rwalld/rpc.rwalld.8
+++ b/libexec/rpc.rwalld/rpc.rwalld.8
@@ -31,7 +31,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $Id: rpc.rwalld.8,v 1.1 1993/09/16 00:36:43 jtc Exp $
+.\" $Id: rpc.rwalld.8,v 1.1.1.1 1994/08/28 14:58:36 csgr Exp $
.\"
.Dd June 7, 1993
.Dt RPC.RWALLD 8
diff --git a/libexec/rpc.rwalld/rwalld.c b/libexec/rpc.rwalld/rwalld.c
index adb6c3f71b27..9a55e5e1733f 100644
--- a/libexec/rpc.rwalld/rwalld.c
+++ b/libexec/rpc.rwalld/rwalld.c
@@ -28,7 +28,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: rwalld.c,v 1.2 1994/11/18 22:50:22 ats Exp $";
+static char rcsid[] = "$Id: rwalld.c,v 1.3 1995/05/30 05:46:36 rgrimes Exp $";
#endif /* not lint */
#include <unistd.h>
diff --git a/libexec/rshd/Makefile b/libexec/rshd/Makefile
index 984a6b763a33..a1b5fb47f441 100644
--- a/libexec/rshd/Makefile
+++ b/libexec/rshd/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 6/4/93
-# $Id: Makefile,v 1.3 1994/09/29 13:06:37 csgr Exp $
+# $Id: Makefile,v 1.4 1994/11/20 23:20:00 wollman Exp $
PROG= rshd
SRCS= rshd.c
diff --git a/libexec/xtend/Makefile b/libexec/xtend/Makefile
index 75fedeff421f..468dc8b62288 100644
--- a/libexec/xtend/Makefile
+++ b/libexec/xtend/Makefile
@@ -1,5 +1,5 @@
# Makefile for xtend (Stark) 10/30/93
-# $Id$
+# $Id: Makefile,v 1.2 1995/04/18 01:53:56 jkh Exp $
BINMODE= 555
diff --git a/lkm/Makefile b/lkm/Makefile
index 1a267f9c0af7..7cddb8f494c6 100644
--- a/lkm/Makefile
+++ b/lkm/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.9.4.1 1995/09/06 15:16:06 davidg Exp $
+# $Id: Makefile,v 1.9.4.2 1995/09/19 06:49:37 jkh Exp $
SUBDIR= cd9660 coff fdesc ibcs2 if_disc if_ppp if_sl if_tun \
ipfw kernfs linux msdos nfs nullfs \
diff --git a/lkm/Makefile.inc b/lkm/Makefile.inc
index 752e6b0361c6..cc269a9cb868 100644
--- a/lkm/Makefile.inc
+++ b/lkm/Makefile.inc
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile.inc,v 1.1 1994/09/16 20:24:27 wollman Exp $
BINDIR= /lkm
diff --git a/lkm/cd9660/Makefile b/lkm/cd9660/Makefile
index a7ee27b7bf7d..f85e02398982 100644
--- a/lkm/cd9660/Makefile
+++ b/lkm/cd9660/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1 1994/09/16 20:24:28 wollman Exp $
+# $Id: Makefile,v 1.1 1994/09/21 23:27:03 wollman Exp $
.PATH: ${.CURDIR}/../../sys/isofs/cd9660
KMOD= cd9660_mod
diff --git a/lkm/coff/Makefile b/lkm/coff/Makefile
index 3160c9e97555..b82a3bace4f8 100644
--- a/lkm/coff/Makefile
+++ b/lkm/coff/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1 1994/10/14 08:46:11 sos Exp $
+# $Id: Makefile,v 1.2 1994/10/27 23:39:19 wollman Exp $
.PATH: ${.CURDIR}/../../sys/i386/ibcs2
KMOD= ibcs2_coff_mod
diff --git a/lkm/coff/coff.c b/lkm/coff/coff.c
index 6a3bf9b7caa5..d189fc7ee428 100644
--- a/lkm/coff/coff.c
+++ b/lkm/coff/coff.c
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: coff.c,v 1.1 1994/10/14 08:46:12 sos Exp $
+ * $Id: coff.c,v 1.2 1995/05/30 06:06:00 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/lkm/fdesc/Makefile b/lkm/fdesc/Makefile
index 7aa2a7d6a675..b4a36f196278 100644
--- a/lkm/fdesc/Makefile
+++ b/lkm/fdesc/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1 1994/09/16 20:24:28 wollman Exp $
+# $Id: Makefile,v 1.1 1994/09/21 23:27:05 wollman Exp $
.PATH: ${.CURDIR}/../../sys/miscfs/fdesc
KMOD= fdesc_mod
diff --git a/lkm/ibcs2/Makefile b/lkm/ibcs2/Makefile
index 83be90f63eb4..53236398dacb 100644
--- a/lkm/ibcs2/Makefile
+++ b/lkm/ibcs2/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.4 1994/10/27 23:36:57 wollman Exp $
+# $Id: Makefile,v 1.5 1994/12/11 21:27:14 wollman Exp $
.PATH: ${.CURDIR}/../../sys/i386/ibcs2
KMOD= ibcs2_mod
diff --git a/lkm/ibcs2/ibcs2 b/lkm/ibcs2/ibcs2
index 2908e5aba78c..28d17babc7bc 100755
--- a/lkm/ibcs2/ibcs2
+++ b/lkm/ibcs2/ibcs2
@@ -1,5 +1,5 @@
#!/bin/sh
-# $Id: ibcs2,v 1.1 1994/10/14 08:45:15 sos Exp $
+# $Id: ibcs2,v 1.2 1994/10/16 20:39:16 sos Exp $
if [ $# -le 1 ]; then
LOADERS="coff" # elf
fi
diff --git a/lkm/ibcs2/ibcs2.c b/lkm/ibcs2/ibcs2.c
index 53b61368a5a5..5be8f0c6b73a 100644
--- a/lkm/ibcs2/ibcs2.c
+++ b/lkm/ibcs2/ibcs2.c
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: ibcs2.c,v 1.2 1994/10/14 08:45:16 sos Exp $
+ * $Id: ibcs2.c,v 1.3 1995/05/30 06:06:06 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/lkm/if_disc/Makefile b/lkm/if_disc/Makefile
index 492de57e9685..248a6202df0d 100644
--- a/lkm/if_disc/Makefile
+++ b/lkm/if_disc/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1 1994/09/22 22:12:59 wollman Exp $
+# $Id: Makefile,v 1.1 1995/03/20 19:25:46 wollman Exp $
.PATH: ${.CURDIR}/../../sys/net
KMOD= if_disc_mod
diff --git a/lkm/if_ppp/Makefile b/lkm/if_ppp/Makefile
index 7e52fdca4aee..3162d6910f4b 100644
--- a/lkm/if_ppp/Makefile
+++ b/lkm/if_ppp/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.2 1995/03/20 19:33:35 wollman Exp $
+# $Id: Makefile,v 1.3 1995/04/15 17:36:53 ats Exp $
.PATH: ${.CURDIR}/../../sys/net
KMOD= if_ppp_mod
diff --git a/lkm/if_sl/Makefile b/lkm/if_sl/Makefile
index d2cdd81c2dbf..1dc19ce0eecd 100644
--- a/lkm/if_sl/Makefile
+++ b/lkm/if_sl/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1 1995/03/20 19:25:47 wollman Exp $
+# $Id: Makefile,v 1.2 1995/03/20 19:31:47 wollman Exp $
.PATH: ${.CURDIR}/../../sys/net
KMOD= if_sl_mod
diff --git a/lkm/if_tun/Makefile b/lkm/if_tun/Makefile
index 49ca7784e15a..00edaf487baf 100644
--- a/lkm/if_tun/Makefile
+++ b/lkm/if_tun/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1 1994/09/22 22:12:59 wollman Exp $
+# $Id: Makefile,v 1.1 1995/03/20 19:25:49 wollman Exp $
.PATH: ${.CURDIR}/../../sys/net
KMOD= if_tun_mod
diff --git a/lkm/ip_mroute_mod/Makefile b/lkm/ip_mroute_mod/Makefile
index d1f93c3e2185..b273ce1e5336 100644
--- a/lkm/ip_mroute_mod/Makefile
+++ b/lkm/ip_mroute_mod/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1 1994/09/14 22:11:51 wollman Exp $
+# $Id: Makefile,v 1.1 1994/09/16 20:24:28 wollman Exp $
.PATH: ${.CURDIR}/../../sys/netinet
KMOD= ip_mroute_mod
diff --git a/lkm/ipfw/Makefile b/lkm/ipfw/Makefile
index d60aa3369687..a4e1ed2aaaf5 100644
--- a/lkm/ipfw/Makefile
+++ b/lkm/ipfw/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.2 1995/01/12 13:57:51 ugen Exp $
+# $Id: Makefile,v 1.3 1995/05/30 06:06:07 rgrimes Exp $
.PATH: ${.CURDIR}/../../sys/netinet
KMOD= ipfw_mod
diff --git a/lkm/kernfs/Makefile b/lkm/kernfs/Makefile
index 1fbe7f76521e..48b066238189 100644
--- a/lkm/kernfs/Makefile
+++ b/lkm/kernfs/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1 1994/09/16 20:24:28 wollman Exp $
+# $Id: Makefile,v 1.1 1994/09/21 23:27:06 wollman Exp $
.PATH: ${.CURDIR}/../../sys/miscfs/kernfs
KMOD= kernfs_mod
diff --git a/lkm/linux/Makefile b/lkm/linux/Makefile
index 11650c59e833..a0cf91e17ba5 100644
--- a/lkm/linux/Makefile
+++ b/lkm/linux/Makefile
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile,v 1.1 1995/06/25 17:29:46 sos Exp $
.PATH: ${.CURDIR}/../../sys/i386/linux
KMOD= linux_mod
diff --git a/lkm/linux/linux b/lkm/linux/linux
index e4c36068cfa3..327b6cdde517 100644
--- a/lkm/linux/linux
+++ b/lkm/linux/linux
@@ -1,3 +1,3 @@
#!/bin/sh
-# $Id$
+# $Id: linux,v 1.1 1995/06/25 17:29:48 sos Exp $
modload -e linux_init /lkm/linux_mod.o
diff --git a/lkm/linux/linux.c b/lkm/linux/linux.c
index 183ad3e49254..6300f0ff26f2 100644
--- a/lkm/linux/linux.c
+++ b/lkm/linux/linux.c
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: linux.c,v 1.1 1994/10/14 08:46:12 sos Exp $
+ * $Id: linux.c,v 1.1 1995/06/25 17:29:48 sos Exp $
*/
#include <sys/param.h>
diff --git a/lkm/mfs/Makefile b/lkm/mfs/Makefile
index b3aee055aacb..f35ff1abb9c2 100644
--- a/lkm/mfs/Makefile
+++ b/lkm/mfs/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1 1994/09/16 20:24:28 wollman Exp $
+# $Id: Makefile,v 1.1 1994/09/21 23:27:07 wollman Exp $
.PATH: ${.CURDIR}/../../sys/ufs/mfs
KMOD= mfs_mod
diff --git a/lkm/msdos/Makefile b/lkm/msdos/Makefile
index c849011630e7..0791e1543cb6 100644
--- a/lkm/msdos/Makefile
+++ b/lkm/msdos/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1 1994/09/21 23:27:09 wollman Exp $
+# $Id: Makefile,v 1.2 1995/03/03 18:33:04 nate Exp $
.PATH: ${.CURDIR}/../../sys/msdosfs
KMOD= msdos_mod
diff --git a/lkm/nfs/Makefile b/lkm/nfs/Makefile
index e8e89e8367d9..5d2c428a9f42 100644
--- a/lkm/nfs/Makefile
+++ b/lkm/nfs/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1 1994/09/21 23:27:07 wollman Exp $
+# $Id: Makefile,v 1.1 1994/09/22 22:12:59 wollman Exp $
.PATH: ${.CURDIR}/../../sys/nfs
KMOD= nfs_mod
diff --git a/lkm/nullfs/Makefile b/lkm/nullfs/Makefile
index fc71e6a33ea6..612ce01caf86 100644
--- a/lkm/nullfs/Makefile
+++ b/lkm/nullfs/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1 1994/09/16 20:24:28 wollman Exp $
+# $Id: Makefile,v 1.1 1994/09/21 23:27:10 wollman Exp $
.PATH: ${.CURDIR}/../../sys/miscfs/nullfs
KMOD= null_mod
diff --git a/lkm/portal/Makefile b/lkm/portal/Makefile
index 529314d1f6fe..13923f972ede 100644
--- a/lkm/portal/Makefile
+++ b/lkm/portal/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1 1994/09/16 20:24:28 wollman Exp $
+# $Id: Makefile,v 1.1 1994/09/21 23:27:12 wollman Exp $
.PATH: ${.CURDIR}/../../sys/miscfs/portal
KMOD= portal_mod
diff --git a/lkm/procfs/Makefile b/lkm/procfs/Makefile
index 951d65d49b5b..bc5e523e650d 100644
--- a/lkm/procfs/Makefile
+++ b/lkm/procfs/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1 1994/09/16 20:24:28 wollman Exp $
+# $Id: Makefile,v 1.1 1994/09/21 23:27:13 wollman Exp $
.PATH: ${.CURDIR}/../../sys/miscfs/procfs \
${.CURDIR}/../../sys/${MACHINE}/${MACHINE}
diff --git a/lkm/socksys/Makefile b/lkm/socksys/Makefile
index de8b44c1317c..fe3142cb45a5 100644
--- a/lkm/socksys/Makefile
+++ b/lkm/socksys/Makefile
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile,v 1.1 1994/10/16 20:38:49 sos Exp $
.PATH: ${.CURDIR}/../../sys/i386/ibcs2
KMOD= socksys_mod
diff --git a/lkm/socksys/socksys.c b/lkm/socksys/socksys.c
index 59d9aa22d5a1..85e388d1bd76 100644
--- a/lkm/socksys/socksys.c
+++ b/lkm/socksys/socksys.c
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: socksys.c,v 1.2 1995/01/24 04:22:19 bde Exp $
+ * $Id: socksys.c,v 1.3 1995/05/30 06:06:11 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/lkm/syscons/Makefile b/lkm/syscons/Makefile
index edd608e4907a..2a5ddad6d632 100644
--- a/lkm/syscons/Makefile
+++ b/lkm/syscons/Makefile
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile,v 1.1 1995/02/22 13:43:34 sos Exp $
SUBDIR= blank fade green snake star
diff --git a/lkm/syscons/blank/Makefile b/lkm/syscons/blank/Makefile
index b94f1cf0bc5f..90372e266a0b 100644
--- a/lkm/syscons/blank/Makefile
+++ b/lkm/syscons/blank/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1 1995/02/22 13:45:29 sos Exp $
+# $Id: Makefile,v 1.2 1995/02/23 19:45:19 phk Exp $
BINDIR= /lkm
KMOD= blank_saver_mod
diff --git a/lkm/syscons/blank/blank_saver.c b/lkm/syscons/blank/blank_saver.c
index e48e03796e4b..4053cf3d449e 100644
--- a/lkm/syscons/blank/blank_saver.c
+++ b/lkm/syscons/blank/blank_saver.c
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: blank_saver.c,v 1.1 1995/02/22 13:45:30 sos Exp $
+ * $Id: blank_saver.c,v 1.2 1995/05/30 06:06:13 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/lkm/syscons/fade/Makefile b/lkm/syscons/fade/Makefile
index 998900dfdd49..eebf6ce8b542 100644
--- a/lkm/syscons/fade/Makefile
+++ b/lkm/syscons/fade/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1 1995/02/22 13:46:32 sos Exp $
+# $Id: Makefile,v 1.2 1995/02/23 19:45:26 phk Exp $
BINDIR= /lkm
KMOD= fade_saver_mod
diff --git a/lkm/syscons/fade/fade_saver.c b/lkm/syscons/fade/fade_saver.c
index e639fcacbc07..8c600ec129a1 100644
--- a/lkm/syscons/fade/fade_saver.c
+++ b/lkm/syscons/fade/fade_saver.c
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: fade_saver.c,v 1.1 1995/02/22 13:46:32 sos Exp $
+ * $Id: fade_saver.c,v 1.2 1995/05/30 06:06:15 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/lkm/syscons/green/Makefile b/lkm/syscons/green/Makefile
index 0aeccb2b9418..74e1bb2d1dd9 100644
--- a/lkm/syscons/green/Makefile
+++ b/lkm/syscons/green/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1 1995/02/22 13:47:10 sos Exp $
+# $Id: Makefile,v 1.2 1995/02/23 19:45:28 phk Exp $
BINDIR= /lkm
KMOD= green_saver_mod
diff --git a/lkm/syscons/green/green_saver.c b/lkm/syscons/green/green_saver.c
index 8dfe086ef4c9..4ffc34d1b293 100644
--- a/lkm/syscons/green/green_saver.c
+++ b/lkm/syscons/green/green_saver.c
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: green_saver.c,v 1.1 1995/02/22 13:47:14 sos Exp $
+ * $Id: green_saver.c,v 1.2 1995/05/30 06:06:17 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/lkm/syscons/snake/Makefile b/lkm/syscons/snake/Makefile
index 2d674e3e4e16..c1a58c9e80bb 100644
--- a/lkm/syscons/snake/Makefile
+++ b/lkm/syscons/snake/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1 1995/02/22 13:48:06 sos Exp $
+# $Id: Makefile,v 1.2 1995/02/23 19:45:29 phk Exp $
BINDIR= /lkm
KMOD= snake_saver_mod
diff --git a/lkm/syscons/snake/snake_saver.c b/lkm/syscons/snake/snake_saver.c
index 6a8d3e55545d..e0a6908e4a2e 100644
--- a/lkm/syscons/snake/snake_saver.c
+++ b/lkm/syscons/snake/snake_saver.c
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: snake_saver.c,v 1.4 1995/05/30 06:06:18 rgrimes Exp $
+ * $Id: snake_saver.c,v 1.4.4.1 1995/09/17 06:54:30 davidg Exp $
*/
#include <sys/param.h>
diff --git a/lkm/syscons/star/Makefile b/lkm/syscons/star/Makefile
index b22cfc6e9af6..1507906b61bb 100644
--- a/lkm/syscons/star/Makefile
+++ b/lkm/syscons/star/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1 1995/02/22 13:47:35 sos Exp $
+# $Id: Makefile,v 1.2 1995/02/23 19:45:30 phk Exp $
BINDIR= /lkm
KMOD= star_saver_mod
diff --git a/lkm/syscons/star/star_saver.c b/lkm/syscons/star/star_saver.c
index d023228d11f4..048d36822202 100644
--- a/lkm/syscons/star/star_saver.c
+++ b/lkm/syscons/star/star_saver.c
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: star_saver.c,v 1.2 1995/03/30 15:10:03 sos Exp $
+ * $Id: star_saver.c,v 1.3 1995/05/30 06:06:20 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/lkm/umapfs/Makefile b/lkm/umapfs/Makefile
index c8c26c8da2d0..bb93903dd564 100644
--- a/lkm/umapfs/Makefile
+++ b/lkm/umapfs/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1 1994/09/16 20:24:28 wollman Exp $
+# $Id: Makefile,v 1.1 1994/09/21 23:27:14 wollman Exp $
.PATH: ${.CURDIR}/../../sys/miscfs/umapfs
KMOD= umap_mod
diff --git a/lkm/union/Makefile b/lkm/union/Makefile
index 2a1cf7efd3dd..6c0025954d73 100644
--- a/lkm/union/Makefile
+++ b/lkm/union/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1 1994/09/16 20:24:28 wollman Exp $
+# $Id: Makefile,v 1.1 1994/09/21 23:27:16 wollman Exp $
.PATH: ${.CURDIR}/../../sys/miscfs/union
KMOD= union_mod
diff --git a/release/MIRROR.SITES b/release/MIRROR.SITES
index 9a74c774316d..fb585ff17b39 100644
--- a/release/MIRROR.SITES
+++ b/release/MIRROR.SITES
@@ -1,4 +1,4 @@
-$Id: MIRROR.SITES,v 1.1.2.3 1995/10/30 18:05:32 jkh Exp $
+$Id: MIRROR.SITES,v 1.1.2.4 1995/11/03 06:21:47 jkh Exp $
Obtaining FreeBSD
diff --git a/release/Makefile b/release/Makefile
index 9fc788cdbc74..3aad093a2f7f 100644
--- a/release/Makefile
+++ b/release/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.193.2.42 1995/11/12 20:48:43 jkh Exp $
+# $Id: Makefile,v 1.193.2.43 1995/11/15 07:17:18 jkh Exp $
#
# How to roll a release:
#
diff --git a/release/boot_crunch.conf b/release/boot_crunch.conf
index 4f9e6d7e17b6..bb0e7e6f1753 100644
--- a/release/boot_crunch.conf
+++ b/release/boot_crunch.conf
@@ -1,4 +1,4 @@
-# $Id: boot_crunch.conf,v 1.20.2.2 1995/09/25 00:51:56 jkh Exp $
+# $Id: boot_crunch.conf,v 1.20.2.3 1995/10/05 08:58:19 jkh Exp $
srcdirs /usr/src/bin /usr/src/sbin /usr/src/release /usr/src/usr.bin
srcdirs /usr/src/gnu/usr.bin /usr/src/usr.sbin /usr/src/sbin/i386
diff --git a/release/compat20/libgcc.so.261.0.uu b/release/compat20/libgcc.so.261.0.uu
index d52cdb51a194..18e8db331be9 100644
--- a/release/compat20/libgcc.so.261.0.uu
+++ b/release/compat20/libgcc.so.261.0.uu
@@ -1,4 +1,4 @@
-$Id$
+$Id: libgcc.so.261.0.uu,v 1.1 1995/03/14 00:06:11 phk Exp $
begin 444 libgcc.so.261.0
MS`"&@``P````$````````%02```@``````````````!5B>6+10@/KT4,R<,`
diff --git a/release/fixit.profile b/release/fixit.profile
index 38bdf8b94fe1..f5664e8d6eb8 100644
--- a/release/fixit.profile
+++ b/release/fixit.profile
@@ -1,5 +1,5 @@
:
-# $Id$
+# $Id: fixit.profile,v 1.1 1995/03/15 06:14:19 phk Exp $
PATH=/stand
BLOCKSIZE=K
PS1="Fixit# "
diff --git a/release/fixit_crunch.conf b/release/fixit_crunch.conf
index d88848176467..502e86e2c998 100644
--- a/release/fixit_crunch.conf
+++ b/release/fixit_crunch.conf
@@ -1,4 +1,4 @@
-# $Id: fixit_crunch.conf,v 1.3.4.6 1995/10/05 09:08:29 jkh Exp $
+# $Id: fixit_crunch.conf,v 1.3.4.7 1995/10/05 09:27:06 jkh Exp $
# first, we list the source dirs that our programs reside in. These are
# searched in order listed to find the dir containing each program.
diff --git a/release/info.sh b/release/info.sh
index 1f58732e9ab8..1f58732e9ab8 100644..100755
--- a/release/info.sh
+++ b/release/info.sh
diff --git a/release/libdisk/blocks.c b/release/libdisk/blocks.c
index 85a9c44cf707..09a563296f9a 100644
--- a/release/libdisk/blocks.c
+++ b/release/libdisk/blocks.c
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id: blocks.c,v 1.2 1995/04/29 01:55:17 phk Exp $
+ * $Id: blocks.c,v 1.3 1995/04/30 06:09:24 phk Exp $
*
*/
diff --git a/release/libdisk/change.c b/release/libdisk/change.c
index 1ecd22056983..7d7f811cb294 100644
--- a/release/libdisk/change.c
+++ b/release/libdisk/change.c
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id: change.c,v 1.9 1995/06/11 19:29:31 rgrimes Exp $
+ * $Id: change.c,v 1.9.2.1 1995/09/20 10:43:01 jkh Exp $
*
*/
diff --git a/release/libdisk/chunk.c b/release/libdisk/chunk.c
index 906911aa8023..976648dc1fad 100644
--- a/release/libdisk/chunk.c
+++ b/release/libdisk/chunk.c
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id: chunk.c,v 1.14.2.2 1995/06/05 02:24:25 jkh Exp $
+ * $Id: chunk.c,v 1.15 1995/06/11 19:29:32 rgrimes Exp $
*
*/
diff --git a/release/libdisk/create_chunk.c b/release/libdisk/create_chunk.c
index 5981ac15e54c..3f4b1e8be160 100644
--- a/release/libdisk/create_chunk.c
+++ b/release/libdisk/create_chunk.c
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id: create_chunk.c,v 1.21.2.5 1995/11/17 23:04:04 jkh Exp $
+ * $Id: create_chunk.c,v 1.21.2.4 1995/10/20 07:00:40 jkh Exp $
*
*/
@@ -31,7 +31,7 @@
static int
isDebug()
{
- static int debug = 0; /* Allow debugger to tweak it */
+ static int debug = 1; /* Allow debugger to tweak it */
return debug;
}
@@ -261,6 +261,7 @@ MakeDev(struct chunk *c1, char *path)
else if (!strncmp(p, "sd", 2))
bmaj = 4, cmaj = 13;
else {
+ msgDebug("MakeDev: %s is an unknown device type!\n", p);
return 0;
}
p += 2;
diff --git a/release/libdisk/disk.c b/release/libdisk/disk.c
index cfac7b528b2c..1e10a42818f1 100644
--- a/release/libdisk/disk.c
+++ b/release/libdisk/disk.c
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id: disk.c,v 1.19.2.2 1995/06/05 02:24:27 jkh Exp $
+ * $Id: disk.c,v 1.20 1995/06/11 19:29:34 rgrimes Exp $
*
*/
diff --git a/release/libdisk/disklabel.c b/release/libdisk/disklabel.c
index 9714e6c28f2e..f2d94187bbba 100644
--- a/release/libdisk/disklabel.c
+++ b/release/libdisk/disklabel.c
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id$
+ * $Id: disklabel.c,v 1.2 1995/04/29 01:55:22 phk Exp $
*
*/
diff --git a/release/libdisk/libdisk.h b/release/libdisk/libdisk.h
index 48326347180a..e277f876307a 100644
--- a/release/libdisk/libdisk.h
+++ b/release/libdisk/libdisk.h
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id: libdisk.h,v 1.19.2.1 1995/09/20 10:43:03 jkh Exp $
+ * $Id: libdisk.h,v 1.19.2.2 1995/10/13 08:19:12 jkh Exp $
*
*/
diff --git a/release/libdisk/rules.c b/release/libdisk/rules.c
index 1ea9ca85b162..70eda4533e54 100644
--- a/release/libdisk/rules.c
+++ b/release/libdisk/rules.c
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id: rules.c,v 1.10.2.1 1995/06/03 08:40:33 jkh Exp $
+ * $Id: rules.c,v 1.11 1995/06/11 19:29:36 rgrimes Exp $
*
*/
diff --git a/release/libdisk/tst01.c b/release/libdisk/tst01.c
index 93286c7c1065..76e479b6a1b5 100644
--- a/release/libdisk/tst01.c
+++ b/release/libdisk/tst01.c
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id: tst01.c,v 1.15 1995/06/11 19:29:37 rgrimes Exp $
+ * $Id: tst01.c,v 1.15.2.1 1995/09/20 10:43:04 jkh Exp $
*
*/
diff --git a/release/libdisk/write_disk.c b/release/libdisk/write_disk.c
index f592dafae397..ff876104d3f7 100644
--- a/release/libdisk/write_disk.c
+++ b/release/libdisk/write_disk.c
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id: write_disk.c,v 1.14.2.1 1995/07/21 11:22:38 rgrimes Exp $
+ * $Id: write_disk.c,v 1.14.2.2 1995/09/20 10:43:05 jkh Exp $
*
*/
diff --git a/release/root_crunch.conf b/release/root_crunch.conf
index 71332c1d1ec4..15547ef33c05 100644
--- a/release/root_crunch.conf
+++ b/release/root_crunch.conf
@@ -1,4 +1,4 @@
-# $Id: root_crunch.conf,v 1.5.2.2 1995/09/25 01:35:53 jkh Exp $
+# $Id: root_crunch.conf,v 1.5.2.3 1995/10/05 09:31:38 jkh Exp $
# first, we list the source dirs that our programs reside in. These are
# searched in order listed to find the dir containing each program.
diff --git a/release/sysinstall/anonFTP.c b/release/sysinstall/anonFTP.c
index 389f48b569fa..05db66a50624 100644
--- a/release/sysinstall/anonFTP.c
+++ b/release/sysinstall/anonFTP.c
@@ -4,7 +4,7 @@
* This is probably the last program in the `sysinstall' line - the next
* generation being essentially a complete rewrite.
*
- * $Id: anonFTP.c,v 1.5 1995/11/11 11:56:40 jkh Exp $
+ * $Id: anonFTP.c,v 1.6 1995/11/12 07:27:55 jkh Exp $
*
* Copyright (c) 1995
* Coranth Gryphon. All rights reserved.
diff --git a/release/sysinstall/apache.c b/release/sysinstall/apache.c
index 9e2c80b1f3c2..2ebaa1980fc2 100644
--- a/release/sysinstall/apache.c
+++ b/release/sysinstall/apache.c
@@ -4,7 +4,7 @@
* This is probably the last program in the `sysinstall' line - the next
* generation being essentially a complete rewrite.
*
- * $Id: apache.c,v 1.11 1995/11/05 01:00:27 jkh Exp $
+ * $Id: apache.c,v 1.12 1995/11/12 20:39:18 jkh Exp $
*
* Copyright (c) 1995
* Coranth Gryphon. All rights reserved.
diff --git a/release/sysinstall/attr.c b/release/sysinstall/attr.c
index 7d9906b4085f..bcf287a0c06e 100644
--- a/release/sysinstall/attr.c
+++ b/release/sysinstall/attr.c
@@ -4,7 +4,7 @@
* This is probably the last attempt in the `sysinstall' line, the next
* generation being slated to essentially a complete rewrite.
*
- * $Id: attr.c,v 1.3.2.5 1995/10/21 20:02:56 jkh Exp $
+ * $Id: attr.c,v 1.3.2.7 1995/10/22 17:38:56 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
diff --git a/release/sysinstall/cdrom.c b/release/sysinstall/cdrom.c
index 7449699ac691..e3a6f93d9244 100644
--- a/release/sysinstall/cdrom.c
+++ b/release/sysinstall/cdrom.c
@@ -4,7 +4,7 @@
* This is probably the last attempt in the `sysinstall' line, the next
* generation being slated to essentially a complete rewrite.
*
- * $Id: cdrom.c,v 1.7.2.12 1995/11/03 12:02:23 jkh Exp $
+ * $Id: cdrom.c,v 1.7.2.13 1995/11/04 11:08:35 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
diff --git a/release/sysinstall/command.c b/release/sysinstall/command.c
index cedd7aee7657..1b2a022646fc 100644
--- a/release/sysinstall/command.c
+++ b/release/sysinstall/command.c
@@ -4,7 +4,7 @@
* This is probably the last program in the `sysinstall' line - the next
* generation being essentially a complete rewrite.
*
- * $Id: command.c,v 1.11.4.4 1995/11/04 11:42:25 jkh Exp $
+ * $Id: command.c,v 1.11.4.5 1995/11/04 15:45:14 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
diff --git a/release/sysinstall/config.c b/release/sysinstall/config.c
index 03846b1c6098..be5717ad79d4 100644
--- a/release/sysinstall/config.c
+++ b/release/sysinstall/config.c
@@ -4,7 +4,7 @@
* This is probably the last program in the `sysinstall' line - the next
* generation being essentially a complete rewrite.
*
- * $Id: config.c,v 1.16.2.41 1995/11/11 11:44:26 jkh Exp $
+ * $Id: config.c,v 1.16.2.42 1995/11/12 10:35:58 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
diff --git a/release/sysinstall/decode.c b/release/sysinstall/decode.c
index 7a73cc747be2..68f97af9f72b 100644
--- a/release/sysinstall/decode.c
+++ b/release/sysinstall/decode.c
@@ -4,7 +4,7 @@
* This is probably the last program in the `sysinstall' line - the next
* generation being essentially a complete rewrite.
*
- * $Id: decode.c,v 1.6.2.4 1995/10/19 15:54:54 jkh Exp $
+ * $Id: decode.c,v 1.6.2.5 1995/11/03 12:02:26 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
diff --git a/release/sysinstall/dev2c.sh b/release/sysinstall/dev2c.sh
index cbd2e711fda1..e92404f4b6ef 100644
--- a/release/sysinstall/dev2c.sh
+++ b/release/sysinstall/dev2c.sh
@@ -7,7 +7,7 @@
# this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
# ----------------------------------------------------------------------------
#
-# $Id: dev2c.sh,v 1.1 1994/10/26 02:53:08 phk Exp $
+# $Id: dev2c.sh,v 1.1.1.1 1995/04/27 12:50:35 jkh Exp $
#
# During installation, we suffer badly of we have to run MAKEDEV. MAKEDEV
# need sh, ln, chown, mknod, awk, rm, test and probably emacs too when
diff --git a/release/sysinstall/devices.c b/release/sysinstall/devices.c
index c8582208b105..7951422f53fc 100644
--- a/release/sysinstall/devices.c
+++ b/release/sysinstall/devices.c
@@ -4,7 +4,7 @@
* This is probably the last program in the `sysinstall' line - the next
* generation being essentially a complete rewrite.
*
- * $Id: devices.c,v 1.36.2.10 1995/11/08 07:09:16 jkh Exp $
+ * $Id: devices.c,v 1.36.2.11 1995/11/15 06:57:02 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
diff --git a/release/sysinstall/disks.c b/release/sysinstall/disks.c
index 6a481f810739..90e4301a2eee 100644
--- a/release/sysinstall/disks.c
+++ b/release/sysinstall/disks.c
@@ -4,7 +4,7 @@
* This is probably the last program in the `sysinstall' line - the next
* generation being essentially a complete rewrite.
*
- * $Id: disks.c,v 1.31.2.34 1995/11/16 08:10:14 jkh Exp $
+ * $Id: disks.c,v 1.31.2.35 1995/11/16 08:35:16 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
diff --git a/release/sysinstall/dist.c b/release/sysinstall/dist.c
index 181fbb828a5e..510782de9805 100644
--- a/release/sysinstall/dist.c
+++ b/release/sysinstall/dist.c
@@ -4,7 +4,7 @@
* This is probably the last program in the `sysinstall' line - the next
* generation being essentially a complete rewrite.
*
- * $Id: dist.c,v 1.36.2.24 1995/11/07 10:45:35 jkh Exp $
+ * $Id: dist.c,v 1.36.2.25 1995/11/08 07:09:19 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
diff --git a/release/sysinstall/dmenu.c b/release/sysinstall/dmenu.c
index 3e527df543e5..333f9b5e3a8a 100644
--- a/release/sysinstall/dmenu.c
+++ b/release/sysinstall/dmenu.c
@@ -4,7 +4,7 @@
* This is probably the last attempt in the `sysinstall' line, the next
* generation being slated for what's essentially a complete rewrite.
*
- * $Id: dmenu.c,v 1.12.2.4 1995/10/18 00:12:02 jkh Exp $
+ * $Id: dmenu.c,v 1.12.2.5 1995/10/19 15:55:00 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
diff --git a/release/sysinstall/doc.c b/release/sysinstall/doc.c
index 187362ddc64d..6c9d0d77caf5 100644
--- a/release/sysinstall/doc.c
+++ b/release/sysinstall/doc.c
@@ -4,7 +4,7 @@
* This is probably the last program in the `sysinstall' line - the next
* generation being essentially a complete rewrite.
*
- * $Id: doc.c,v 1.9 1995/11/04 08:47:22 jkh Exp $
+ * $Id: doc.c,v 1.10 1995/11/06 12:49:23 jkh Exp $
*
* Jordan Hubbard
*
diff --git a/release/sysinstall/dos.c b/release/sysinstall/dos.c
index 9a248a20a427..2ff7a064fc4e 100644
--- a/release/sysinstall/dos.c
+++ b/release/sysinstall/dos.c
@@ -4,7 +4,7 @@
* This is probably the last attempt in the `sysinstall' line, the next
* generation being slated to essentially a complete rewrite.
*
- * $Id: dos.c,v 1.6.2.8 1995/10/22 17:39:06 jkh Exp $
+ * $Id: dos.c,v 1.6.2.9 1995/11/04 11:08:53 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
diff --git a/release/sysinstall/floppy.c b/release/sysinstall/floppy.c
index e5eddce3045b..f4512a2e2ae5 100644
--- a/release/sysinstall/floppy.c
+++ b/release/sysinstall/floppy.c
@@ -4,7 +4,7 @@
* This is probably the last attempt in the `sysinstall' line, the next
* generation being slated to essentially a complete rewrite.
*
- * $Id: floppy.c,v 1.7.2.6 1995/10/20 21:57:04 jkh Exp $
+ * $Id: floppy.c,v 1.7.2.8 1995/10/22 17:39:07 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
diff --git a/release/sysinstall/ftp.c b/release/sysinstall/ftp.c
index d2bb234df114..e4b2c3eb5e04 100644
--- a/release/sysinstall/ftp.c
+++ b/release/sysinstall/ftp.c
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id: ftp.c,v 1.14 1995/06/11 19:29:55 rgrimes Exp $
+ * $Id: ftp.c,v 1.14.2.1 1995/10/21 14:06:35 jkh Exp $
*
* Return values have been sanitized:
* -1 error, but you (still) have a session.
diff --git a/release/sysinstall/ftp_strat.c b/release/sysinstall/ftp_strat.c
index 154eeabd0fd7..513e0e8674d8 100644
--- a/release/sysinstall/ftp_strat.c
+++ b/release/sysinstall/ftp_strat.c
@@ -4,7 +4,7 @@
* This is probably the last attempt in the `sysinstall' line, the next
* generation being slated to essentially a complete rewrite.
*
- * $Id: ftp_strat.c,v 1.7.2.39 1995/11/04 17:16:40 jkh Exp $
+ * $Id: ftp_strat.c,v 1.7.2.40 1995/11/08 07:09:21 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
diff --git a/release/sysinstall/globals.c b/release/sysinstall/globals.c
index 661f82a74b94..bc303e58d015 100644
--- a/release/sysinstall/globals.c
+++ b/release/sysinstall/globals.c
@@ -4,7 +4,7 @@
* This is probably the last program in the `sysinstall' line - the next
* generation being essentially a complete rewrite.
*
- * $Id: globals.c,v 1.10 1995/06/11 19:29:57 rgrimes Exp $
+ * $Id: globals.c,v 1.10.2.1 1995/10/21 14:06:41 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
diff --git a/release/sysinstall/help/apache.hlp b/release/sysinstall/help/apache.hlp
index 3880dddb2ba6..6edc347afe24 100644
--- a/release/sysinstall/help/apache.hlp
+++ b/release/sysinstall/help/apache.hlp
@@ -2,48 +2,48 @@ There are two sets of options that the Apache HTTP Server needs.
The first set covers how it operates. These are as follows:
- The "HostName" field is the name of this host, as it is
- reported to each client connection. Normally, the fully
- qualified domain name of the host running the server is
- returned. If you want this set to something else, however,
- (usually "www.my.domain") then this can be entered here.
-
- Additionally, the server needs to know how many connections
- are allowed at one time - this is the "Max Connections"
- field. If more than this number of clients attempt to connect
- at once, the additional connections will be refused. This is
- used to limit how much system load will be imposed by the HTTP
- server.
-
- The "Email Address" field is the address of the person (or
- system alias) who is the administrator for this web site. In
- addition to being used by the Apache Server itself, it is also
- put at the bottom of the sample web page that is created.
-
- Finally, the "Default User" and "Default Group" fields specify
- what user id and group id should be used by the server for
- remote connections. Local connections are kept as the UID and
- GID of the local process.
+ The "HostName" field is the name of this host, as it is
+ reported to each client connection. Normally, the fully
+ qualified domain name of the host running the server is
+ returned. If you want this set to something else, however,
+ (usually "www.my.domain") then this can be entered here.
+
+ Additionally, the server needs to know how many connections
+ are allowed at one time - this is the "Max Connections"
+ field. If more than this number of clients attempt to connect
+ at once, the additional connections will be refused. This is
+ used to limit how much system load will be imposed by the HTTP
+ server.
+
+ The "Email Address" field is the address of the person (or
+ system alias) who is the administrator for this web site. In
+ addition to being used by the Apache Server itself, it is also
+ put at the bottom of the sample web page that is created.
+
+ Finally, the "Default User" and "Default Group" fields specify
+ what user id and group id should be used by the server for
+ remote connections. Local connections are kept as the UID and
+ GID of the local process.
The second set of options determine what information is made available
to each client:
- The "Document Root Path" is the top of the tree of documents
- that are made avaliable. For example, if the value is
- "/usr/web", then the URL "http://www.foo.com/doc.html" would
- translate as "/usr/web/doc.html".
-
- Similarly, the "User Directory" is the location in each user's
- home directory where their public web documents are
- stored. Thus if the value if this is "Public", then the URL
- "http://www.foo.com/~joe/doc" would translate to the path
- "~joe/Public/doc".
-
- Finally, if the URL points to a directory, there is always a
- "Default Document" that Apache will use. This field holds the
- name (not the path) of this document. By default, Apache uses
- the file "index.html". However, some sites may be more used to
- using the file "welcome.html".
+ The "Document Root Path" is the top of the tree of documents
+ that are made avaliable. For example, if the value is
+ "/usr/web", then the URL "http://www.foo.com/doc.html" would
+ translate as "/usr/web/doc.html".
+
+ Similarly, the "User Directory" is the location in each user's
+ home directory where their public web documents are
+ stored. Thus if the value if this is "Public", then the URL
+ "http://www.foo.com/~joe/doc" would translate to the path
+ "~joe/Public/doc".
+
+ Finally, if the URL points to a directory, there is always a
+ "Default Document" that Apache will use. This field holds the
+ name (not the path) of this document. By default, Apache uses
+ the file "index.html". However, some sites may be more used to
+ using the file "welcome.html".
There are a number of other options that can be configured with
Apache, such as path aliases, masquerading as multiple hosts, server
diff --git a/release/sysinstall/help/hardware.hlp b/release/sysinstall/help/hardware.hlp
index c28e0a37e1d9..7741c0d63158 100644
--- a/release/sysinstall/help/hardware.hlp
+++ b/release/sysinstall/help/hardware.hlp
@@ -1,4 +1,4 @@
-Hardware Documentation Guide: $Id: hardware.hlp,v 1.1.2.9 1995/10/30 08:04:55 jkh Exp $
+Hardware Documentation Guide: $Id: hardware.hlp,v 1.1.2.10 1995/11/04 08:48:00 jkh Exp $
Table of Contents
-----------------
diff --git a/release/sysinstall/help/install.hlp b/release/sysinstall/help/install.hlp
index b569f061bbd3..a083926820b4 100644
--- a/release/sysinstall/help/install.hlp
+++ b/release/sysinstall/help/install.hlp
@@ -28,8 +28,6 @@ Table of Contents:
3.1 Repairing an existing FreeBSD installation.
-3.2 Upgrading from FreeBSD 2.0.5
-
1.0 DOS user's Question and Answer section
=== ======================================
@@ -48,13 +46,13 @@ DOS 6.xx "DEFRAG" utility or the Norton Disk tools, then run FIPS. It
will prompt you for the rest of the information it needs. Afterwards,
you can reboot and install FreeBSD on the new partition. Also note
that FIPS will create the second partition as a "clone" of the first,
-so you'll actually see that you now have two DOS Primary partitions
-where you formerly had one. Don't be alarmed! You can simply delete
-the extra DOS Primary parititon (making sure it's the right one by
-examining its size! :)
+so you'll actually see that you now have two DOS Primary partitions where
+you formerly had one. Don't be alarmed! You can simply delete the extra
+DOS Primary parititon (making sure it's the right one by examining its size! :)
-See the Distributions menu for an estimation of how much free space
-you'll need for the kind of installation you want.
+See the
+Distributions menu for an estimation of how much free space you'll
+need for the kind of installation you want.
1.2 Can I use compressed DOS filesystems from FreeBSD?
@@ -176,8 +174,8 @@ is still not a bad idea though you don't need to put a DOS filesystem
on each floppy. You can use the `disklabel' and `newfs' commands to
put a UFS filesystem on them instead, like so:
- disklabel -w -r fd0 floppy3 (use floppy5 for 1.2MB disks)
- newfs /dev/rfd0
+ disklabel -w -r fd0 floppy3 (use floppy5 for 1.2MB disks)
+ newfs /dev/rfd0
Then you can mount and write to them like any other file system.
@@ -334,14 +332,14 @@ installation can continue over NFS or FTP.
FTP installation may be done from any mirror site containing a
reasonably up-to-date version of FreeBSD 2.1. A full menu of
reasonable choices for almost any location in the world is
- provided in the FTP site menu.
+ provided in the FTP site menu.
If you are installing from some other FTP site not listed in
- this menu, or you are having troubles getting your name server
- configured properly, you can also specify your own URL by
- selecting the ``Other'' choice in that menu. A URL can
- contain a hostname or an IP address, so the following would
- work in the absence of a name server:
+ this menu, or you are having troubles getting your name server
+ configured properly, you can also specify your own URL by
+ selecting the ``Other'' choice in that menu. A URL can
+ contain a hostname or an IP address, so the following would
+ work in the absence of a name server:
ftp://192.216.191.11/pub/FreeBSD/2.1.0-RELEASE
@@ -350,20 +348,20 @@ installation can continue over NFS or FTP.
o FTP:
For all FTP transfers, use the standard "Active" mode for
- transfers. This will not work through most firewalls but
- will often work best with older ftp servers that do not
- support passive mode. If your connection hangs with
- passive mode, try this one!
+ transfers. This will not work through most firewalls but
+ will often work best with older ftp servers that do not
+ support passive mode. If your connection hangs with
+ passive mode, try this one!
o FTP Passive:
For all FTP transfers, use "Passive" mode. This allows
- the user to pass through firewalls that do not allow
- incoming connections on random port addresses.
+ the user to pass through firewalls that do not allow
+ incoming connections on random port addresses.
NOTE: ACTIVE AND PASSIVE MODES ARE NOT THE SAME AS A `PROXY'
CONNECTIONS, WHERE A PROXY FTP SERVER IS LISTENING ON A
- DIFFERENT PORT!
+ DIFFERENT PORT!
In such instances, you should specify the URL as something like:
@@ -373,8 +371,8 @@ installation can continue over NFS or FTP.
-3.0 Installing FreeBSD
---- ------------------
+3. Installing FreeBSD
+-- ------------------
Once you've taken note of the appropriate preinstallation steps, you
should be able to install FreeBSD without any further trouble.
@@ -464,21 +462,21 @@ follows:
you to chose how your drives will be used for FreeBSD.
If you're dedicating an entire drive to FreeBSD, the
`A' command is probably all you need to type here, otherwise
- move to a partition marked `Unused' (or delete an existing one)
- and use the `C' command to create a FreeBSD partition in its
- place.
+ move to a partition marked `Unused' (or delete an existing one)
+ and use the `C' command to create a FreeBSD partition in its
+ place.
o Next, with the `Label Editor', you can specify how the space
in any FreeBSD partitions should be used by FreeBSD. You
can also mount any non-FreeBSD partitions (such as DOS) in this
- screen. If you want the standard layout, simply type `A' for
- the defaults.
+ screen. If you want the standard layout, simply type `A' for
+ the defaults.
o Next, the `Distributions' menu allows you to specify how much
of FreeBSD you'd like to load. A good choice is the "User"
distribution for a small system or the "Developer" distribution
for someone wanting a more programmer-oriented configuration.
- If none of the existing collections seem applicable, select
+ If none of the existing collections seem applicable, select
Custom to choose the component distributions yourself.
o Next, the `Media' menu allows you to specify what kind of
@@ -518,62 +516,6 @@ under /stand/sysinstall on the installed system.
Good luck! If you really get stuck, you may send mail to our support
mailing list - questions@FreeBSD.org. We'll do our best to help you!
-
-3.1 Repairing an existing FreeBSD installation.
---- -------------------------------------------
-
-FreeBSD 2.1 now features a "Fixit" option in the top menu of the boot
-floppy. To use it, you will also need a fixit.flp image floppy,
-generated in the same fashion as the boot floppy.
-
-To invoke fixit, simply boot the boot floppy, chose the "Fixit"
-item and insert the fixit floppy when asked. You will then be placed
-into a shell with a wide variety of commands available (in the /stand
-and /mnt2/stand directories) for checking, repairing and examining file
-systems and their contents. Some UNIX administration experience *is*
-required to use the fixit option!
-
-
-3.2 Upgrading from FreeBSD 2.0.5
---- ----------------------------
-
-It must first be said that this upgrade DOES NOT take a particularly
-sophisticated approach to the upgrade problem, it being more a question
-of providing what seemed "good enough" at the time. A truly polished
-upgrade that deals properly with the broad spectrum of installed 2.0.5
-systems would be nice to have, but until that gets written what you get is
-this - the brute-force approach!
-
-What this upgrade will attempt to do is best summarized thusly:
-
- 1. fsck and mount all file systems chosen in the label editor.
- 2. Ask for a location to preserve your /etc directory into and do so.
- 3. Extract all selected distributions on top of your existing system.
- 4. Copy certain obvious files back from the preserved /etc, leaving the
- rest of the /etc file merge up to the user.
- 5. Drop user in a shell so that they may perform that merge before
- rebooting into the new system.
-
-And that's it! This "upgrade" is not going to hold your hand in all
-major respects, it's simply provided to make one PART of the upgrade
-easier.
-
-IMPORTANT NOTE: What this upgrade procedure may also do, in fact, is
-completely destroy your system (though much more quickly than you
-would have been able to destroy it yourself). It is simply impossible
-to guarantee that this procedure's crude form of upgrade automation
-will work in all cases and if you do this upgrade without proper
-BACKUPS for any important data then you really must like living life
-close to the edge, that's all we can say!
-
-NOTE to 2.0 users: We're sorry, but the "slice" changes that were
-added in FreeBSD 2.0.5 made automated upgrades pretty difficult due to
-the fact that a complete reinstall is pretty much called for. Things
-may still *work* after a 2.1 upgrade, but you will also no doubt
-receive many warnings at boot time about non-aligned slices and such;
-we really do recommend a fresh installation for 2.0 systems! (But
-back up your user data first :-).
-
Jordan
---- End of Installation Guide ---
diff --git a/release/sysinstall/help/readme.hlp b/release/sysinstall/help/readme.hlp
index 8ede34bf13eb..7fd77bf88b9d 100644
--- a/release/sysinstall/help/readme.hlp
+++ b/release/sysinstall/help/readme.hlp
@@ -99,8 +99,8 @@ searching facilities. If you wish to use Netscape as your browser,
you may install the BSDI version from ftp://ftp.mcom.com or simply
type:
- # cd /usr/ports/net/netscape
- # make all install
+ # cd /usr/ports/net/netscape
+ # make all install
If you have the Ports collection installed (see the Configuration menu
or enable the Ports collection when given the chance to do so during
@@ -118,4 +118,4 @@ syntax in any HTML capable browser.
We sincerely hope you enjoy this release of FreeBSD!
- The FreeBSD Project
+ The FreeBSD Project
diff --git a/release/sysinstall/help/relnotes.hlp b/release/sysinstall/help/relnotes.hlp
index eb495922845b..db22aecf51a1 100644
--- a/release/sysinstall/help/relnotes.hlp
+++ b/release/sysinstall/help/relnotes.hlp
@@ -140,12 +140,12 @@ DAT) and CD ROM drives.
The following CD-ROM type systems are supported at this time:
(cd) SCSI interface (also includes ProAudio Spectrum and
- SoundBlaster SCSI)
+ SoundBlaster SCSI)
(mcd) Mitsumi proprietary interface (all models)
(matcd) Matsushita/Panasonic (Creative SoundBlaster) proprietary
- interface (562/563 models)
+ interface (562/563 models)
(scd) Sony proprietary interface (all models)
-(wcd) ATAPI IDE interface (experimental and should be considered ALPHA
+(wcd) ATAPI IDE interface (experimental and should be considered ALPHA
quality!).
diff --git a/release/sysinstall/index.c b/release/sysinstall/index.c
index 6198a5eaf1ed..4410583a18dd 100644
--- a/release/sysinstall/index.c
+++ b/release/sysinstall/index.c
@@ -4,7 +4,7 @@
* This is probably the last program in the `sysinstall' line - the next
* generation being essentially a complete rewrite.
*
- * $Id: index.c,v 1.19 1995/11/06 22:26:28 jkh Exp $
+ * $Id: index.c,v 1.20 1995/11/12 20:47:12 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
diff --git a/release/sysinstall/install.c b/release/sysinstall/install.c
index dbc35fecf915..741e952356bb 100644
--- a/release/sysinstall/install.c
+++ b/release/sysinstall/install.c
@@ -4,7 +4,7 @@
* This is probably the last program in the `sysinstall' line - the next
* generation being essentially a complete rewrite.
*
- * $Id: install.c,v 1.71.2.81 1995/11/12 07:27:57 jkh Exp $
+ * $Id: install.c,v 1.71.2.82 1995/11/12 11:12:21 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
diff --git a/release/sysinstall/installFinal.c b/release/sysinstall/installFinal.c
index 050e86ed3105..902ecf20f851 100644
--- a/release/sysinstall/installFinal.c
+++ b/release/sysinstall/installFinal.c
@@ -73,21 +73,11 @@ static DMenu MenuSamba = {
#define SMB_CONF "./smb.conf"
-/* Load gated package */
+/* Load gated package and maybe even seek to configure or explain it a little */
int
configGated(char *unused)
{
- if (package_add("gated-3.5a11") == RET_SUCCESS)
- variable_set2("gated", "YES");
- return RET_SUCCESS;
-}
-
-/* Load pcnfsd package */
-int
-configPCNFSD(char *unused)
-{
- if (package_add("pcnfsd-93.02.16") == RET_SUCCESS)
- variable_set2("pcnfsd", "YES");
+ variable_set2("gated", "YES");
return RET_SUCCESS;
}
@@ -98,8 +88,6 @@ configSamba(char *unused)
if (!dmenuOpenSimple(&MenuSamba))
i = RET_FAIL;
- else if (package_add("samba-1.9.14") != RET_SUCCESS)
- i = RET_FAIL;
else {
FILE *fptr;
char tbuf[256], *tptr;
@@ -221,3 +209,4 @@ configNFSServer(char *unused)
variable_set2("nfs_server", "YES");
return RET_SUCCESS;
}
+
diff --git a/release/sysinstall/installPreconfig.c b/release/sysinstall/installPreconfig.c
index e5f323223c7e..86a8d1f64014 100644
--- a/release/sysinstall/installPreconfig.c
+++ b/release/sysinstall/installPreconfig.c
@@ -4,7 +4,7 @@
* This is probably the last program in the `sysinstall' line - the next
* generation being essentially a complete rewrite.
*
- * $Id: installPreconfig.c,v 1.16 1995/10/27 17:00:23 jkh Exp $
+ * $Id: installPreconfig.c,v 1.17 1995/11/03 12:02:35 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
diff --git a/release/sysinstall/installUpgrade.c b/release/sysinstall/installUpgrade.c
index 2a2d19b217ec..b1599cc0ee38 100644
--- a/release/sysinstall/installUpgrade.c
+++ b/release/sysinstall/installUpgrade.c
@@ -72,18 +72,6 @@ doByHand(HitList *h)
"this).", h->name);
}
-static void
-yellSysconfig(HitList *h)
-{
- dialog_clear();
- msgConfirm("/etc/sysconfig is one of those files that this upgrade procedure just isn't\n"
- "smart enough to deal with right now. Unfortunately, your system\n"
- "will also come up with a very different \"personality\" than it had\n"
- "before if you do not merge at LEAST the hostname and ifconfig lines\n"
- "from the old one! This is very important, so please do this merge\n"
- "even if you do no others before the system is allowed to reboot.");
-}
-
/* These are the only meaningful files I know about */
static HitList etc_files [] = {
{ JUST_COPY, "Xaccel.ini", TRUE, NULL },
@@ -144,7 +132,7 @@ static HitList etc_files [] = {
{ JUST_COPY, "skeykeys", TRUE, NULL },
{ JUST_COPY, "spwd.db", TRUE, NULL },
{ JUST_COPY, "supfile", TRUE, NULL },
- { CALL_HANDLER, "sysconfig", FALSE, yellSysconfig },
+ { CALL_HANDLER, "sysconfig", FALSE, doByHand },
{ JUST_COPY, "syslog.conf", TRUE, NULL },
{ JUST_COPY, "termcap", TRUE, NULL },
{ JUST_COPY, "ttys", TRUE, NULL },
diff --git a/release/sysinstall/label.c b/release/sysinstall/label.c
index 2b53e348d569..d0e79bf66eb7 100644
--- a/release/sysinstall/label.c
+++ b/release/sysinstall/label.c
@@ -4,7 +4,7 @@
* This is probably the last program in the `sysinstall' line - the next
* generation being essentially a complete rewrite.
*
- * $Id: label.c,v 1.32.2.28 1995/11/04 15:45:23 jkh Exp $
+ * $Id: label.c,v 1.32.2.29 1995/11/08 07:09:30 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
diff --git a/release/sysinstall/lang.c b/release/sysinstall/lang.c
index b5dcfdb502b7..f39827d41817 100644
--- a/release/sysinstall/lang.c
+++ b/release/sysinstall/lang.c
@@ -4,7 +4,7 @@
* This is probably the last program in the `sysinstall' line - the next
* generation being essentially a complete rewrite.
*
- * $Id: lang.c,v 1.6.2.3 1995/06/05 04:39:59 jkh Exp $
+ * $Id: lang.c,v 1.7 1995/06/11 19:30:01 rgrimes Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
diff --git a/release/sysinstall/main.c b/release/sysinstall/main.c
index e7ff4d3a9249..cbf99932d215 100644
--- a/release/sysinstall/main.c
+++ b/release/sysinstall/main.c
@@ -4,7 +4,7 @@
* This is probably the last attempt in the `sysinstall' line, the next
* generation being slated for what's essentially a complete rewrite.
*
- * $Id: main.c,v 1.13.2.10 1995/10/26 08:55:54 jkh Exp $
+ * $Id: main.c,v 1.13.2.11 1995/10/27 17:00:25 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
diff --git a/release/sysinstall/media.c b/release/sysinstall/media.c
index a8d7cd763c1f..94fb28cd7bd8 100644
--- a/release/sysinstall/media.c
+++ b/release/sysinstall/media.c
@@ -4,7 +4,7 @@
* This is probably the last attempt in the `sysinstall' line, the next
* generation being slated to essentially a complete rewrite.
*
- * $Id: media.c,v 1.25.2.21 1995/10/22 08:33:16 jkh Exp $
+ * $Id: media.c,v 1.25.2.23 1995/10/22 17:39:22 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
diff --git a/release/sysinstall/menus.c b/release/sysinstall/menus.c
index 5c601d241c6c..49ef1a3e7a24 100644
--- a/release/sysinstall/menus.c
+++ b/release/sysinstall/menus.c
@@ -747,7 +747,7 @@ aspects of your system's network configuration.",
{ "Gateway", "This machine will route packets between interfaces",
DMENU_SET_VARIABLE, "gateway=YES", 0, 0, 0 },
{ "Gated", "This machine wants to run gated",
- DMENU_CALL, configGated, 0, 0, 0 },
+ DMENU_SET_VARIABLE, "gated=YES", 0, 0, 0 },
{ "Ntpdate", "Select a clock-syncronization server",
DMENU_SUBMENU, &MenuNTP, (int)"ntpdate", 0, dmenuVarCheck },
{ "Routed", "Set flags for routed (default: -q)",
@@ -761,7 +761,7 @@ aspects of your system's network configuration.",
{ "Samba", "Install Samba for LanManager (NETBUI) access.",
DMENU_CALL, configSamba, 0, 0, 0 },
{ "PCNFSD", "Run authentication server for clients with PC-NFS.",
- DMENU_CALL, configPCNFSD, 0, 0, 0 },
+ DMENU_SET_VARIABLE, "pcnfsd=YES", 0, 0, 0 },
{ NULL } },
};
diff --git a/release/sysinstall/misc.c b/release/sysinstall/misc.c
index bb535b2fe6a9..b4dd63b23890 100644
--- a/release/sysinstall/misc.c
+++ b/release/sysinstall/misc.c
@@ -1,7 +1,7 @@
/*
* Miscellaneous support routines..
*
- * $Id: misc.c,v 1.12.2.7 1995/11/04 11:09:11 jkh Exp $
+ * $Id: misc.c,v 1.12.2.8 1995/11/04 15:08:21 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
diff --git a/release/sysinstall/msg.c b/release/sysinstall/msg.c
index 987becb52340..ae5e3f375c46 100644
--- a/release/sysinstall/msg.c
+++ b/release/sysinstall/msg.c
@@ -4,7 +4,7 @@
* This is probably the last program in the `sysinstall' line - the next
* generation being essentially a complete rewrite.
*
- * $Id: msg.c,v 1.29.2.6 1995/10/22 01:32:54 jkh Exp $
+ * $Id: msg.c,v 1.29.2.8 1995/10/22 21:38:17 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
diff --git a/release/sysinstall/network.c b/release/sysinstall/network.c
index 53993f99054b..7f11af2f2d32 100644
--- a/release/sysinstall/network.c
+++ b/release/sysinstall/network.c
@@ -4,7 +4,7 @@
* This is probably the last attempt in the `sysinstall' line, the next
* generation being slated to essentially a complete rewrite.
*
- * $Id: network.c,v 1.7.2.14 1995/10/26 08:56:02 jkh Exp $
+ * $Id: network.c,v 1.7.2.15 1995/11/04 11:09:14 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
diff --git a/release/sysinstall/nfs.c b/release/sysinstall/nfs.c
index c361295304dd..4dc2b97f1d85 100644
--- a/release/sysinstall/nfs.c
+++ b/release/sysinstall/nfs.c
@@ -4,7 +4,7 @@
* This is probably the last attempt in the `sysinstall' line, the next
* generation being slated to essentially a complete rewrite.
*
- * $Id: nfs.c,v 1.5.2.14 1995/10/26 08:56:04 jkh Exp $
+ * $Id: nfs.c,v 1.5.2.15 1995/11/04 11:09:16 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
diff --git a/release/sysinstall/options.c b/release/sysinstall/options.c
index c9c099afe766..b2a1f55a550a 100644
--- a/release/sysinstall/options.c
+++ b/release/sysinstall/options.c
@@ -4,7 +4,7 @@
* This is probably the last attempt in the `sysinstall' line, the next
* generation being slated for what's essentially a complete rewrite.
*
- * $Id: options.c,v 1.26 1995/11/03 12:02:44 jkh Exp $
+ * $Id: options.c,v 1.27 1995/11/06 12:49:25 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
diff --git a/release/sysinstall/package.c b/release/sysinstall/package.c
index cd75c084f720..2a639006eea7 100644
--- a/release/sysinstall/package.c
+++ b/release/sysinstall/package.c
@@ -4,7 +4,7 @@
* This is probably the last program in the `sysinstall' line - the next
* generation being essentially a complete rewrite.
*
- * $Id: package.c,v 1.26 1995/11/12 11:02:43 jkh Exp $
+ * $Id: package.c,v 1.27 1995/11/12 20:47:15 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
diff --git a/release/sysinstall/sysinstall.h b/release/sysinstall/sysinstall.h
index b2f57ef385b2..2e86c69d50a3 100644
--- a/release/sysinstall/sysinstall.h
+++ b/release/sysinstall/sysinstall.h
@@ -489,7 +489,6 @@ extern Boolean rootExtract(void);
/* installFinal.c */
extern int configGated(char *unused);
extern int configSamba(char *unused);
-extern int configPCNFSD(char *unused);
extern int configNFSServer(char *unused);
/* label.c */
diff --git a/release/sysinstall/system.c b/release/sysinstall/system.c
index 4367c327a13d..b543891e4344 100644
--- a/release/sysinstall/system.c
+++ b/release/sysinstall/system.c
@@ -4,7 +4,7 @@
* This is probably the last program in the `sysinstall' line - the next
* generation being essentially a complete rewrite.
*
- * $Id: system.c,v 1.44.2.16 1995/11/08 07:09:36 jkh Exp $
+ * $Id: system.c,v 1.44.2.17 1995/11/09 02:32:05 jkh Exp $
*
* Jordan Hubbard
*
diff --git a/release/sysinstall/tape.c b/release/sysinstall/tape.c
index d61533655c92..7cc92dd1a7bb 100644
--- a/release/sysinstall/tape.c
+++ b/release/sysinstall/tape.c
@@ -4,7 +4,7 @@
* This is probably the last attempt in the `sysinstall' line, the next
* generation being slated to essentially a complete rewrite.
*
- * $Id: tape.c,v 1.6.2.10 1995/10/22 17:39:29 jkh Exp $
+ * $Id: tape.c,v 1.6.2.11 1995/11/15 06:59:52 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
diff --git a/release/sysinstall/tcpip.c b/release/sysinstall/tcpip.c
index ad744876a933..5bcf7bf7a847 100644
--- a/release/sysinstall/tcpip.c
+++ b/release/sysinstall/tcpip.c
@@ -1,5 +1,5 @@
/*
- * $Id: tcpip.c,v 1.30.2.16 1995/11/06 07:27:31 jkh Exp $
+ * $Id: tcpip.c,v 1.30.2.17 1995/11/06 07:28:51 jkh Exp $
*
* Copyright (c) 1995
* Gary J Palmer. All rights reserved.
diff --git a/release/sysinstall/ufs.c b/release/sysinstall/ufs.c
index 43cd85956e80..0176baccd828 100644
--- a/release/sysinstall/ufs.c
+++ b/release/sysinstall/ufs.c
@@ -4,7 +4,7 @@
* This is probably the last attempt in the `sysinstall' line, the next
* generation being slated to essentially a complete rewrite.
*
- * $Id: ufs.c,v 1.5.2.3 1995/10/18 00:12:47 jkh Exp $
+ * $Id: ufs.c,v 1.5.2.4 1995/10/22 01:33:02 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
diff --git a/release/sysinstall/variable.c b/release/sysinstall/variable.c
index 31c030d43df2..5cbaa847ade0 100644
--- a/release/sysinstall/variable.c
+++ b/release/sysinstall/variable.c
@@ -4,7 +4,7 @@
* This is probably the last program in the `sysinstall' line - the next
* generation being essentially a complete rewrite.
*
- * $Id: variable.c,v 1.6.2.5 1995/10/20 07:02:53 jkh Exp $
+ * $Id: variable.c,v 1.6.2.7 1995/10/26 08:56:18 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
diff --git a/release/sysinstall/version.h b/release/sysinstall/version.h
index b42c26e8937d..a2aa4459d536 100644
--- a/release/sysinstall/version.h
+++ b/release/sysinstall/version.h
@@ -1 +1 @@
-#define RELEASE_NAME "__RELEASE"
+#define RELEASE_NAME "2.1.0-RELEASE"
diff --git a/release/sysinstall/wizard.c b/release/sysinstall/wizard.c
index fae4833c54db..66e2233ddff0 100644
--- a/release/sysinstall/wizard.c
+++ b/release/sysinstall/wizard.c
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id: wizard.c,v 1.6 1995/06/11 19:30:16 rgrimes Exp $
+ * $Id: wizard.c,v 1.6.2.1 1995/09/20 10:43:13 jkh Exp $
*
*/
diff --git a/release/write_mfs_in_kernel.c b/release/write_mfs_in_kernel.c
index 358c7d943c33..886bdd234dd8 100644
--- a/release/write_mfs_in_kernel.c
+++ b/release/write_mfs_in_kernel.c
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id$
+ * $Id: write_mfs_in_kernel.c,v 1.1 1995/04/25 03:45:18 phk Exp $
*
* This program patches a filesystem into a kernel made with MFS_ROOT
* option.
diff --git a/sbin/dumpon/Makefile b/sbin/dumpon/Makefile
index da6f36506679..32359f8ac2c8 100644
--- a/sbin/dumpon/Makefile
+++ b/sbin/dumpon/Makefile
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile,v 1.1 1995/05/12 19:10:08 wollman Exp $
PROG= dumpon
MAN8= dumpon.8
diff --git a/sbin/dumpon/dumpon.8 b/sbin/dumpon/dumpon.8
index 7a1593be22d0..9e6988e1bc9c 100644
--- a/sbin/dumpon/dumpon.8
+++ b/sbin/dumpon/dumpon.8
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" From: @(#)swapon.8 8.1 (Berkeley) 6/5/93
-.\" $Id$
+.\" $Id: dumpon.8,v 1.1 1995/05/12 19:10:08 wollman Exp $
.\"
.Dd May 12, 1995
.Dt DUMPON 8
diff --git a/sbin/dumpon/dumpon.c b/sbin/dumpon/dumpon.c
index dc185e9be6ae..96c9e8ae0a63 100644
--- a/sbin/dumpon/dumpon.c
+++ b/sbin/dumpon/dumpon.c
@@ -40,7 +40,7 @@ static char copyright[] =
#ifndef lint
/*static char sccsid[] = "From: @(#)swapon.c 8.1 (Berkeley) 6/5/93";*/
static const char rcsid[] =
- "$Id: dumpon.c,v 1.1 1995/05/12 19:10:09 wollman Exp $";
+ "$Id: dumpon.c,v 1.2 1995/05/30 06:08:58 rgrimes Exp $";
#endif /* not lint */
#include <errno.h>
diff --git a/sbin/i386/Makefile b/sbin/i386/Makefile
index 7d5c9ce1a240..089a8b5d9a52 100644
--- a/sbin/i386/Makefile
+++ b/sbin/i386/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1.1.1 1994/12/02 23:22:59 wollman Exp $
+# $Id: Makefile,v 1.2 1994/12/02 23:53:23 wollman Exp $
SUBDIR= comcontrol fdisk ft mount_msdos
#NOTYET: cxconfig
diff --git a/sbin/i386/Makefile.inc b/sbin/i386/Makefile.inc
index c961f8568307..2eb7be47d2de 100644
--- a/sbin/i386/Makefile.inc
+++ b/sbin/i386/Makefile.inc
@@ -1,3 +1,3 @@
-# $Id$
+# $Id: Makefile.inc,v 1.1 1994/12/02 23:53:23 wollman Exp $
.include "${.CURDIR}/../../Makefile.inc"
diff --git a/sbin/i386/ft/Makefile b/sbin/i386/ft/Makefile
index ac0878e9bc05..0ef9c19a57a9 100644
--- a/sbin/i386/ft/Makefile
+++ b/sbin/i386/ft/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.5 1995/09/17 06:57:43 davidg Exp $
+# $Id: Makefile,v 1.3.4.1 1995/09/17 06:59:04 davidg Exp $
PROG= ft
MAN8= ft.8
diff --git a/sbin/i386/mount_msdos/Makefile b/sbin/i386/mount_msdos/Makefile
index 19ec0ac78ebd..c0dcb6151eaa 100644
--- a/sbin/i386/mount_msdos/Makefile
+++ b/sbin/i386/mount_msdos/Makefile
@@ -1,5 +1,5 @@
#
-# $Id: Makefile,v 1.1 1994/09/19 15:30:33 dfr Exp $
+# $Id: Makefile,v 1.2 1994/12/04 08:01:24 bde Exp $
#
PROG= mount_msdos
diff --git a/sbin/i386/mount_msdos/mount_msdos.8 b/sbin/i386/mount_msdos/mount_msdos.8
index 63293d8c792e..982e0d5f3fcc 100644
--- a/sbin/i386/mount_msdos/mount_msdos.8
+++ b/sbin/i386/mount_msdos/mount_msdos.8
@@ -27,7 +27,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.\" $Id: mount_msdos.8,v 1.1 1994/09/19 15:30:34 dfr Exp $
+.\" $Id: mount_msdos.8,v 1.2 1994/11/19 17:55:35 nate Exp $
.\"
.Dd April 7, 1994
.Dt MOUNT_MSDOS 8
diff --git a/sbin/i386/mount_msdos/mount_msdos.c b/sbin/i386/mount_msdos/mount_msdos.c
index db652ae3c0fc..9c6d738f3a5e 100644
--- a/sbin/i386/mount_msdos/mount_msdos.c
+++ b/sbin/i386/mount_msdos/mount_msdos.c
@@ -29,7 +29,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: mount_msdos.c,v 1.2 1994/09/22 22:16:35 wollman Exp $";
+static char rcsid[] = "$Id: mount_msdos.c,v 1.3 1994/11/01 23:51:42 wollman Exp $";
#endif /* not lint */
#include <sys/cdefs.h>
diff --git a/sbin/md5/md5.c b/sbin/md5/md5.c
index 5cf91bf11110..f36dc54be241 100644
--- a/sbin/md5/md5.c
+++ b/sbin/md5/md5.c
@@ -1,5 +1,5 @@
/*
- * $Id: md5.c,v 1.6 1995/07/12 09:14:46 phk Exp $
+ * $Id: md5.c,v 1.5.4.1 1995/09/06 14:19:17 davidg Exp $
*
* Derived from:
*/
diff --git a/sbin/modload/Makefile b/sbin/modload/Makefile
index 265869fbaa6a..05619d222c51 100644
--- a/sbin/modload/Makefile
+++ b/sbin/modload/Makefile
@@ -33,7 +33,7 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $Id: Makefile,v 1.4 1994/02/09 15:00:32 deraadt Exp $
+# $Id: Makefile,v 1.1 1994/08/19 12:07:09 davidg Exp $
#
PROG= modload
diff --git a/sbin/modload/modload.8 b/sbin/modload/modload.8
index d2aaac6d9f87..d59627e1e87e 100644
--- a/sbin/modload/modload.8
+++ b/sbin/modload/modload.8
@@ -23,7 +23,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.\" $Id: modload.8,v 1.4 1994/09/18 04:12:12 davidg Exp $
+.\" $Id: modload.8,v 1.5 1994/09/22 22:35:50 wollman Exp $
.\"
.Dd September 22, 1994
.Dt MODLOAD 8
diff --git a/sbin/modload/modload.c b/sbin/modload/modload.c
index 0efd0eab42ab..c57896c388ad 100644
--- a/sbin/modload/modload.c
+++ b/sbin/modload/modload.c
@@ -29,7 +29,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: modload.c,v 1.7 1995/03/16 17:11:21 wollman Exp $
+ * $Id: modload.c,v 1.8 1995/05/30 06:09:20 rgrimes Exp $
*/
#include <stdio.h>
diff --git a/sbin/modload/pathnames.h b/sbin/modload/pathnames.h
index 4359013dd9f3..13c34fab4028 100644
--- a/sbin/modload/pathnames.h
+++ b/sbin/modload/pathnames.h
@@ -1,4 +1,4 @@
-/* $Id$ */
+/* $Id: pathnames.h,v 1.2 1995/01/23 04:08:00 wollman Exp $ */
#include <paths.h>
#define _PATH_LKM "/dev/lkm"
diff --git a/sbin/modunload/Makefile b/sbin/modunload/Makefile
index 3520c48d2f83..8bbbbde93ad7 100644
--- a/sbin/modunload/Makefile
+++ b/sbin/modunload/Makefile
@@ -33,7 +33,7 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $Id: Makefile,v 1.4 1994/02/09 15:00:35 deraadt Exp $
+# $Id: Makefile,v 1.1 1994/08/19 12:07:18 davidg Exp $
#
PROG= modunload
diff --git a/sbin/modunload/modunload.8 b/sbin/modunload/modunload.8
index e98de02f401e..9fe5f5b803fb 100644
--- a/sbin/modunload/modunload.8
+++ b/sbin/modunload/modunload.8
@@ -23,7 +23,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.\" $Id: modunload.8,v 1.2 1994/08/19 13:29:23 davidg Exp $
+.\" $Id: modunload.8,v 1.3 1994/08/19 13:40:41 davidg Exp $
.\"
.Dd June 7, 1993
.Dt MODUNLOAD 8
diff --git a/sbin/modunload/modunload.c b/sbin/modunload/modunload.c
index 88689ff19ba3..c5f78a617153 100644
--- a/sbin/modunload/modunload.c
+++ b/sbin/modunload/modunload.c
@@ -29,7 +29,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: modunload.c,v 1.6 1994/05/23 05:42:58 cgd Exp $
+ * $Id: modunload.c,v 1.1 1994/08/19 12:07:21 davidg Exp $
*/
#include <stdio.h>
diff --git a/sbin/mount_portal/Makefile b/sbin/mount_portal/Makefile
index 85eca128f4db..20bd316d4e2f 100644
--- a/sbin/mount_portal/Makefile
+++ b/sbin/mount_portal/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.3 (Berkeley) 3/27/94
-# $Id$
+# $Id: Makefile,v 1.4 1995/02/21 04:05:17 wollman Exp $
PROG= mount_portal
SRCS= mount_portal.c activate.c conf.c getmntopts.c pt_conf.c \
diff --git a/sbin/mount_portal/activate.c b/sbin/mount_portal/activate.c
index 33617988f7df..963947d484b9 100644
--- a/sbin/mount_portal/activate.c
+++ b/sbin/mount_portal/activate.c
@@ -36,7 +36,7 @@
*
* @(#)activate.c 8.2 (Berkeley) 3/27/94
*
- * $Id: activate.c,v 1.2 1992/05/27 07:09:27 jsp Exp jsp $
+ * $Id: activate.c,v 1.1.1.1 1994/05/26 06:34:32 rgrimes Exp $
*/
#include <stdio.h>
diff --git a/sbin/mount_portal/conf.c b/sbin/mount_portal/conf.c
index 3eb4af3c748b..4a79c7400134 100644
--- a/sbin/mount_portal/conf.c
+++ b/sbin/mount_portal/conf.c
@@ -36,7 +36,7 @@
*
* @(#)conf.c 8.2 (Berkeley) 3/27/94
*
- * $Id: conf.c,v 1.2 1995/02/21 04:05:20 wollman Exp $
+ * $Id: conf.c,v 1.3 1995/05/30 06:09:25 rgrimes Exp $
*/
#include <stdio.h>
diff --git a/sbin/mount_portal/pathnames.h b/sbin/mount_portal/pathnames.h
index 25321145d990..97bde75e7731 100644
--- a/sbin/mount_portal/pathnames.h
+++ b/sbin/mount_portal/pathnames.h
@@ -36,7 +36,7 @@
*
* @(#)pathnames.h 8.1 (Berkeley) 6/5/93
*
- * $Id: pathnames.h,v 1.2 1992/05/27 07:09:27 jsp Exp jsp $
+ * $Id: pathnames.h,v 1.1.1.1 1994/05/26 06:34:32 rgrimes Exp $
*/
#include <paths.h>
diff --git a/sbin/mount_portal/portal.conf b/sbin/mount_portal/portal.conf
index 5b5a773eaa3c..51a88a014cfd 100644
--- a/sbin/mount_portal/portal.conf
+++ b/sbin/mount_portal/portal.conf
@@ -1,5 +1,5 @@
# @(#)portal.conf 8.1 (Berkeley) 6/5/93
-# $Id: portal.conf,v 1.1 1992/05/27 06:50:13 jsp Exp jsp $
+# $Id: portal.conf,v 1.1.1.1 1994/05/26 06:34:33 rgrimes Exp $
tcplisten/ tcplisten tcplisten/
tcp/ tcp tcp/
fs/ file fs/
diff --git a/sbin/mount_portal/portald.h b/sbin/mount_portal/portald.h
index fbe111b1a7ad..9bc75ac34925 100644
--- a/sbin/mount_portal/portald.h
+++ b/sbin/mount_portal/portald.h
@@ -36,7 +36,7 @@
*
* @(#)portald.h 8.1 (Berkeley) 6/5/93
*
- * $Id: portald.h,v 1.1 1992/05/25 21:43:09 jsp Exp jsp $
+ * $Id: portald.h,v 1.1.1.1 1994/05/26 06:34:33 rgrimes Exp $
*/
#include <sys/cdefs.h>
diff --git a/sbin/mount_portal/pt_conf.c b/sbin/mount_portal/pt_conf.c
index d1eba94ea3fe..f84ddf4d08bb 100644
--- a/sbin/mount_portal/pt_conf.c
+++ b/sbin/mount_portal/pt_conf.c
@@ -36,7 +36,7 @@
*
* @(#)pt_conf.c 8.1 (Berkeley) 6/5/93
*
- * $Id: pt_conf.c,v 1.2 1992/05/27 07:09:27 jsp Exp jsp $
+ * $Id: pt_conf.c,v 1.1.1.1 1994/05/26 06:34:33 rgrimes Exp $
*/
#include <sys/types.h>
diff --git a/sbin/mount_portal/pt_exec.c b/sbin/mount_portal/pt_exec.c
index 06e3382da85b..6ae2b834ab3f 100644
--- a/sbin/mount_portal/pt_exec.c
+++ b/sbin/mount_portal/pt_exec.c
@@ -36,7 +36,7 @@
*
* @(#)pt_exec.c 8.1 (Berkeley) 6/5/93
*
- * $Id: pt_exec.c,v 1.1 1992/05/25 21:43:09 jsp Exp jsp $
+ * $Id: pt_exec.c,v 1.1.1.1 1994/05/26 06:34:34 rgrimes Exp $
*/
#include <stdio.h>
diff --git a/sbin/mount_portal/pt_file.c b/sbin/mount_portal/pt_file.c
index a9cd2ca3ea20..940e2b9d50e7 100644
--- a/sbin/mount_portal/pt_file.c
+++ b/sbin/mount_portal/pt_file.c
@@ -36,7 +36,7 @@
*
* @(#)pt_file.c 8.2 (Berkeley) 3/27/94
*
- * $Id: pt_file.c,v 1.2 1994/09/19 13:52:38 ache Exp $
+ * $Id: pt_file.c,v 1.3 1995/04/19 12:24:06 gpalmer Exp $
*/
#include <stdio.h>
diff --git a/sbin/mount_portal/pt_tcp.c b/sbin/mount_portal/pt_tcp.c
index 11f1453cefb8..7485265809b9 100644
--- a/sbin/mount_portal/pt_tcp.c
+++ b/sbin/mount_portal/pt_tcp.c
@@ -36,7 +36,7 @@
*
* @(#)pt_tcp.c 8.3 (Berkeley) 3/27/94
*
- * $Id: pt_tcp.c,v 1.1.1.1 1994/05/26 06:34:34 rgrimes Exp $
+ * $Id: pt_tcp.c,v 1.2 1995/04/19 12:24:08 gpalmer Exp $
*/
#include <stdio.h>
diff --git a/sbin/mountd/Makefile b/sbin/mountd/Makefile
index f32e11b895eb..1eac0032579a 100644
--- a/sbin/mountd/Makefile
+++ b/sbin/mountd/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.3 (Berkeley) 1/25/94
-# $Id$
+# $Id: Makefile,v 1.4 1994/09/22 22:16:48 wollman Exp $
PROG= mountd
CFLAGS+=-DNFS -DMFS -DCD9660 -DMSDOSFS
diff --git a/sbin/mountd/mountd.8 b/sbin/mountd/mountd.8
index 78f95b51a6a2..d2bc2f50ebe5 100644
--- a/sbin/mountd/mountd.8
+++ b/sbin/mountd/mountd.8
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" From: @(#)mountd.8 8.1 (Berkeley) 6/9/93
-.\" $Id: mountd.8,v 1.2 1994/09/22 22:16:49 wollman Exp $
+.\" $Id: mountd.8,v 1.3 1995/02/22 21:42:48 ats Exp $
.\"
.Dd September 22, 1994
.Dt MOUNTD 8
diff --git a/sbin/mountd/mountd.c b/sbin/mountd/mountd.c
index 443424466f1b..8dc1042b5a45 100644
--- a/sbin/mountd/mountd.c
+++ b/sbin/mountd/mountd.c
@@ -43,7 +43,7 @@ static char copyright[] =
#ifndef lint
/*static char sccsid[] = "From: @(#)mountd.c 8.8 (Berkeley) 2/20/94";*/
static const char rcsid[] =
- "$Id: mountd.c,v 1.7.2.1 1995/06/08 04:34:11 davidg Exp $";
+ "$Id: mountd.c,v 1.8 1995/06/11 19:30:46 rgrimes Exp $";
#endif /*not lint*/
#include <sys/param.h>
diff --git a/sbin/nfsiod/nfsiod.8 b/sbin/nfsiod/nfsiod.8
index e2ccc67130d8..92c19597a4e3 100644
--- a/sbin/nfsiod/nfsiod.8
+++ b/sbin/nfsiod/nfsiod.8
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" From: @(#)nfsiod.8 8.2 (Berkeley) 2/22/94
-.\" $Id$
+.\" $Id: nfsiod.8,v 1.2 1994/09/22 22:16:59 wollman Exp $
.\"
.Dd September 22, 1994
.Dt NFSIOD 8
diff --git a/sbin/reboot/boot_i386.8 b/sbin/reboot/boot_i386.8
index 560981334163..a94641c48f6d 100644
--- a/sbin/reboot/boot_i386.8
+++ b/sbin/reboot/boot_i386.8
@@ -36,7 +36,7 @@
.\"
.\" @(#)boot_i386.8 8.2 (Berkeley) 4/19/94
.\"
-.\" $Id: boot_i386.8,v 1.3 1995/10/07 12:05:00 joerg Exp $
+.\" $Id: boot_i386.8,v 1.2.6.1 1995/10/10 01:15:24 davidg Exp $
.\"
.Dd April 19, 1994
.Dt BOOT 8 i386
diff --git a/sbin/savecore/savecore.8 b/sbin/savecore/savecore.8
index 47e0a340b81a..ace4fece9bd6 100644
--- a/sbin/savecore/savecore.8
+++ b/sbin/savecore/savecore.8
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" From: @(#)savecore.8 8.1 (Berkeley) 6/5/93
-.\" $Id$
+.\" $Id: savecore.8,v 1.3 1994/09/24 00:08:21 wollman Exp $
.\"
.Dd September 23, 1994
.Dt SAVECORE 8
diff --git a/sbin/scsi/scsi.8 b/sbin/scsi/scsi.8
index 5735e1badda8..98f379de3785 100644
--- a/sbin/scsi/scsi.8
+++ b/sbin/scsi/scsi.8
@@ -39,7 +39,7 @@
.\" SUCH DAMAGE.
.\"
.\"
-.\" $Id: scsi.8,v 1.4 1995/05/01 12:35:04 dufault Exp $
+.\" $Id: scsi.8,v 1.5 1995/05/05 20:41:58 dufault Exp $
.\"
.Dd October 11, 1993
.Dt SCSI 8
diff --git a/sbin/scsi/scsi.c b/sbin/scsi/scsi.c
index b2e105ef8483..fd280d29638b 100644
--- a/sbin/scsi/scsi.c
+++ b/sbin/scsi/scsi.c
@@ -39,7 +39,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: scsi.c,v 1.8.4.1 1995/07/16 14:00:03 davidg Exp $
+ * $Id: scsi.c,v 1.8.4.2 1995/07/30 18:26:20 davidg Exp $
*/
#include <stdio.h>
diff --git a/sbin/slattach/Makefile b/sbin/slattach/Makefile
index e6dfd0aea492..757b28fd8dc7 100644
--- a/sbin/slattach/Makefile
+++ b/sbin/slattach/Makefile
@@ -1,6 +1,6 @@
# @(#)Makefile 5.4 (Berkeley) 5/11/90
#
-# $Header: /home/ncvs/src/sbin/slattach/Makefile,v 1.6 1995/09/20 12:56:23 ache Exp $
+# $Header: /home/ncvs/src/sbin/slattach/Makefile,v 1.4.6.1 1995/10/25 00:50:32 jkh Exp $
PROG= slattach
SRCS= slattach.c uucplock.c
diff --git a/sbin/slattach/slattach.8 b/sbin/slattach/slattach.8
index 6dfb787eecaa..b3bae1e10fe2 100644
--- a/sbin/slattach/slattach.8
+++ b/sbin/slattach/slattach.8
@@ -31,7 +31,7 @@
.\"
.\" @(#)slattach.8 6.4 (Berkeley) 3/16/91
.\"
-.\" $Header: /home/ncvs/src/sbin/slattach/slattach.8,v 1.7 1995/09/20 04:53:06 ache Exp $
+.\" $Header: /home/ncvs/src/sbin/slattach/slattach.8,v 1.4.4.2 1995/10/25 20:28:18 jkh Exp $
.\"
.Dd April 4, 1993
.Dt SLATTACH 8
diff --git a/sbin/startslip/startslip.c b/sbin/startslip/startslip.c
index 3f4ad05660cc..cc7b69b968da 100644
--- a/sbin/startslip/startslip.c
+++ b/sbin/startslip/startslip.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: startslip.c,v 1.18 1995/09/27 17:15:37 ache Exp $
+ * $Id: startslip.c,v 1.3.4.1 1995/10/23 19:40:47 jkh Exp $
*/
#ifndef lint
diff --git a/secure/Makefile b/secure/Makefile
deleted file mode 100644
index 6aa76cdc28e3..000000000000
--- a/secure/Makefile
+++ /dev/null
@@ -1,10 +0,0 @@
-# $Id: Makefile,v 1.7 1995/07/29 12:48:56 markm Exp $
-
-# lib must be first, or it will not work. This is because we reference
-# the lib's in the directory where they are built from the binaries we
-# want to build.
-
-SUBDIR= lib libexec usr.bin sbin bin
-
-.include <bsd.subdir.mk>
-
diff --git a/secure/Makefile.inc b/secure/Makefile.inc
deleted file mode 100644
index 015770819235..000000000000
--- a/secure/Makefile.inc
+++ /dev/null
@@ -1,15 +0,0 @@
-# $Id: Makefile.inc,v 1.6.4.1 1995/09/16 03:13:19 gibbs Exp $
-
-DISTRIBUTION?=des
-
-.if exists(${.CURDIR}/../../lib/libtelnet/obj)
-TELNETOBJDIR= ${.CURDIR}/../../lib/libtelnet/obj
-.else
-TELNETOBJDIR= ${.CURDIR}/../../lib/libtelnet
-.endif
-
-.if exists(${.CURDIR}/../../lib/libcrypt/obj)
-CRYPTOBJDIR= ${.CURDIR}/../../lib/libcrypt/obj
-.else
-CRYPTOBJDIR= ${.CURDIR}/../../lib/libcrypt
-.endif
diff --git a/secure/bin/Makefile b/secure/bin/Makefile
deleted file mode 100644
index 7af79b32c4e6..000000000000
--- a/secure/bin/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# From: @(#)Makefile 8.1 (Berkeley) 5/31/93
-# $Id: Makefile,v 1.2 1994/09/18 21:25:26 wollman Exp $
-
-SUBDIR= ed
-
-.include <bsd.subdir.mk>
diff --git a/secure/bin/Makefile.inc b/secure/bin/Makefile.inc
deleted file mode 100644
index 98638a362b48..000000000000
--- a/secure/bin/Makefile.inc
+++ /dev/null
@@ -1,5 +0,0 @@
-# @(#)Makefile.inc 8.1 (Berkeley) 5/31/93
-
-BINDIR?= /bin
-NOSHARED?= YES
-.include "${.CURDIR}/../../Makefile.inc"
diff --git a/secure/bin/ed/Makefile b/secure/bin/ed/Makefile
deleted file mode 100644
index bd0494193f0c..000000000000
--- a/secure/bin/ed/Makefile
+++ /dev/null
@@ -1,13 +0,0 @@
-# $Id: Makefile,v 1.2 1994/11/21 02:58:43 phk Exp $
-
-PROG= ed
-SRCS= buf.c cbc.c glbl.c io.c main.c re.c sub.c undo.c
-.PATH: ${.CURDIR}/../../../bin/ed
-LINKS= ${BINDIR}/ed ${BINDIR}/red
-NOMAN= true
-
-CFLAGS+=-DDES
-LDADD+= -L${CRYPTOBJDIR} -ldescrypt
-DPADD+= ${CRYPTOBJDIR}/libdescrypt.a
-
-.include <bsd.prog.mk>
diff --git a/secure/lib/Makefile b/secure/lib/Makefile
deleted file mode 100644
index fbd2785af32a..000000000000
--- a/secure/lib/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# $Id: Makefile,v 1.3 1995/07/29 12:49:14 markm Exp $
-
-SUBDIR= libcipher libcrypt libtelnet
-
-.include <bsd.subdir.mk>
-
diff --git a/secure/lib/Makefile.inc b/secure/lib/Makefile.inc
deleted file mode 100644
index 019e99afab65..000000000000
--- a/secure/lib/Makefile.inc
+++ /dev/null
@@ -1,6 +0,0 @@
-# $Id: Makefile.inc,v 1.3 1994/11/14 20:45:28 phk Exp $
-
-.include "${.CURDIR}/../../Makefile.inc"
-.if exists(${.CURDIR}/../../../lib/Makefile.inc)
-.include "${.CURDIR}/../../../lib/Makefile.inc"
-.endif
diff --git a/secure/lib/libcipher/Makefile b/secure/lib/libcipher/Makefile
deleted file mode 100644
index a6289a4ac0d9..000000000000
--- a/secure/lib/libcipher/Makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# $Id: Makefile,v 1.2 1994/09/07 21:48:45 csgr Exp $
-#
-
-
-LIB= cipher
-SRCS= crypt.c
-PRECIOUSLIB= yes
-NOPROFILE= yes
-
-#MAN3= crypt.0
-#MLINKS= crypt.3 encrypt.3 crypt.3 setkey.3
-#MLINKS+=crypt.3 des_cipher.3 crypt.3 des_setkey.3
-
-#SUBDIR= test
-
-.include <bsd.lib.mk>
diff --git a/secure/lib/libcipher/README b/secure/lib/libcipher/README
deleted file mode 100644
index 53ea2299fbfd..000000000000
--- a/secure/lib/libcipher/README
+++ /dev/null
@@ -1,98 +0,0 @@
-
- FreeSec - NetBSD libcrypt replacement
-
- David Burren <davidb@werj.com.au>
- Release 1.0, March 1994
-
- Document ref: $Id: README,v 1.1 1994/09/07 08:55:24 g89r4222 Exp $
-
-
-Description
-===========
-This library is a drop-in replacement for the libcrypt used in U.S. copies
-of NetBSD, duplicating that library's functionality. A suite of verification
-and benchmark tools is provided.
-
-FreeSec 1.0 is an original implementation of the DES algorithm and the
-crypt(3) interfaces used in Unix-style operating systems. It was produced
-in Australia and as such is not covered by U.S. export restrictions (at
-least for copies that remain outside the U.S.).
-
-
-History
-=======
-An earlier version of the FreeSec library was built using the UFC-crypt
-package that is distributed as part of the GNU library. UFC-crypt did not
-support the des_cipher() or des_setkey() functions, nor the new-style
-crypt with long keys. These were implemented in FreeSec 0.2, but at least
-one bug remained, where encryption would only succeed if either the salt
-or the plaintext was zero. Because of its heritage FreeSec 0.2 was covered
-by the GNU Library Licence.
-
-FreeSec 1.0 is an original implementation by myself, and has been tested
-against the verification suite I'd been using with FreeSec 0.2 (this is not
-encumbered by any licence). FreeSec 1.0 is covered by a Berkeley-style
-licence, which better fits into the *BSD hierarchy than the earlier GNU
-licence.
-
-
-Why should you use FreeSec?
-===========================
-FreeSec is intended as a replacement for the U.S.-only NetBSD libcrypt,
-to act as a baseline for encryption functionality.
-
-Some other packages (such as Eric Young's libdes package) are faster and
-more complete than FreeSec, but typically have different licencing
-arrangements. While some applications will justify the use of these
-packages, the idea here is that everyone should have access to *at least*
-the functionality of FreeSec.
-
-
-Performance of FreeSec 1.0
-==========================
-I compare below the performance of three libcrypt implementations. As can be
-seen, it's between the U.S. library and UFC-crypt. While the performance of
-FreeSec 1.0 is good enough to keep me happy for now, I hope to improve it in
-future versions. I was interested to note that while UFC-crypt is faster on
-a 386, hardware characteristics can have markedly different effects on each
-implementation.
-
-
-386DX40, 128k cache | U.S. BSD | FreeSec 1.0 | FreeSec 0.2
-CFLAGS=-O2 | | |
-========================+===============+===============+==================
-crypt (alternate keys) | 317 | 341 | 395
- crypt/sec | | |
-------------------------+---------------+---------------+------------------
-crypt (constant key) | 317 | 368 | 436
- crypt/sec | | |
-------------------------+---------------+---------------+------------------
-des_cipher( , , , 1) | 6037 | 7459 | 3343
- blocks/sec | | |
-------------------------+---------------+---------------+------------------
-des_cipher( , , , 25) | 8871 | 9627 | 15926
- blocks/sec | | |
-
-Notes: The results tabled here are the average over 10 runs.
- The entry/exit code for FreeSec 0.2's des_cipher() is particularly
- inefficient, thus the anomalous result for single encryptions.
-
-
-As an experiment using a machine with a larger register set and an
-obscenely fast CPU, I obtained the following results:
-
- 60 MHz R4400 | FreeSec 1.0 | FreeSec 0.2
- ========================+=================================
- crypt (alternate keys) | 2545 | 2702
- crypt/sec | |
- ------------------------+---------------------------------
- crypt (constant key) | 2852 | 2981
- crypt/sec | |
- ------------------------+---------------------------------
- des_cipher( , , , 1) | 56443 | 21409
- blocks/sec | |
- ------------------------+---------------------------------
- des_cipher( , , , 25) | 82531 | 18276
- blocks/sec | |
-
-Obviously your mileage will vary with your hardware and your compiler...
diff --git a/secure/lib/libcipher/README.FreeBSD b/secure/lib/libcipher/README.FreeBSD
deleted file mode 100644
index 06b943fa1950..000000000000
--- a/secure/lib/libcipher/README.FreeBSD
+++ /dev/null
@@ -1,6 +0,0 @@
-$Id: README.FreeBSD,v 1.1 1994/09/07 08:55:25 g89r4222 Exp $
-
-This is FreeSec package for NetBSD, unchanged for
-FreeBSD, except for the Makefile.
-
-The other stuff in libcrypt will be added in stages!
diff --git a/secure/lib/libcipher/crypt.3 b/secure/lib/libcipher/crypt.3
deleted file mode 100644
index fb064554994b..000000000000
--- a/secure/lib/libcipher/crypt.3
+++ /dev/null
@@ -1,236 +0,0 @@
-.\" FreeSec: libcrypt for NetBSD
-.\"
-.\" Copyright (c) 1994 David Burren
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 4. Neither the name of the author nor the names of other contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" $Id: crypt.3,v 1.1 1994/09/07 08:55:24 g89r4222 Exp $
-.\"
-.\" Manual page, using -mandoc macros
-.\"
-.Dd March 9, 1994
-.Dt CRYPT 3
-.Os "FreeSec 1.0"
-.Sh NAME
-.Nm crypt ,
-.Nm setkey ,
-.Nm encrypt ,
-.Nm des_setkey ,
-.Nm des_cipher ,
-.Nd DES encryption
-.Sh SYNOPSIS
-.Ft char
-.Fn *crypt "const char *key" "const char *setting"
-.Ft int
-.Fn setkey "char *key"
-.Ft int
-.Fn encrypt "char *block" "int flag"
-.Ft int
-.Fn des_setkey "const char *key"
-.Ft int
-.Fn des_cipher "const char *in" "char *out" "long salt" "int count"
-.Sh DESCRIPTION
-The
-.Fn crypt
-function performs password encryption, based on the
-.Tn NBS
-Data Encryption Standard (DES).
-Additional code has been added to deter key search attempts.
-The first argument to
-.Nm crypt
-is a
-.Dv null Ns -terminated
-string, typically a user's typed password.
-The second is in one of two forms:
-if it begins with an underscore (``_'') then an extended format is used
-in interpreting both the the key and the setting, as outlined below.
-.Ss Extended crypt:
-.Pp
-The
-.Ar key
-is divided into groups of 8 characters (the last group is null-padded)
-and the low-order 7 bits of each each character (56 bits per group) are
-used to form the DES key as follows:
-the first group of 56 bits becomes the initial DES key.
-For each additional group, the XOR of the encryption of the current DES
-key with itself and the group bits becomes the next DES key.
-.Pp
-The setting is a 9-character array consisting of an underscore followed
-by 4 bytes of iteration count and 4 bytes of salt.
-These are encoded as printable characters, 6 bits per character,
-least significant character first.
-The values 0 to 63 are encoded as ``./0-9A-Za-z''.
-This allows 24 bits for both
-.Fa count
-and
-.Fa salt .
-.Ss "Traditional" crypt:
-.Pp
-The first 8 bytes of the key are null-padded, and the low-order 7 bits of
-each character is used to form the 56-bit
-.Tn DES
-key.
-.Pp
-The setting is a 2-character array of the ASCII-encoded salt.
-Thus only 12 bits of
-.Fa salt
-are used.
-.Fa count
-is set to 25.
-.Ss Algorithm:
-.Pp
-The
-.Fa salt
-introduces disorder in the
-.Tn DES
-algorithm in one of 16777216 or 4096 possible ways
-(ie. with 24 or 12 bits: if bit
-.Em i
-of the
-.Ar salt
-is set, then bits
-.Em i
-and
-.Em i+24
-are swapped in the
-.Tn DES
-E-box output).
-.Pp
-The DES key is used to encrypt a 64-bit constant using
-.Ar count
-iterations of
-.Tn DES .
-The value returned is a
-.Dv null Ns -terminated
-string, 20 or 13 bytes (plus null) in length, consisting of the
-.Ar setting
-followed by the encoded 64-bit encryption.
-.Pp
-The functions,
-.Fn encrypt ,
-.Fn setkey ,
-.Fn des_setkey
-and
-.Fn des_cipher
-provide access to the
-.Tn DES
-algorithm itself.
-.Fn setkey
-is passed a 64-byte array of binary values (numeric 0 or 1).
-A 56-bit key is extracted from this array by dividing the
-array into groups of 8, and ignoring the last bit in each group.
-That bit is reserved for a byte parity check by DES, but is ignored
-by these functions.
-.Pp
-The
-.Fa block
-argument to
-.Fn encrypt
-is also a 64-byte array of binary values.
-If the value of
-.Fa flag
-is 0,
-.Fa block
-is encrypted otherwise it is decrypted.
-The result is returned in the original array
-.Fa block
-after using the key specified by
-.Fn setkey
-to process it.
-.Pp
-The argument to
-.Fn des_setkey
-is a character array of length 8.
-The least significant bit (the parity bit) in each character is ignored,
-and the remaining bits are concatenated to form a 56-bit key.
-The function
-.Fn des_cipher
-encrypts (or decrypts if
-.Fa count
-is negative) the 64-bits stored in the 8 characters at
-.Fa in
-using
-.Xr abs 3
-of
-.Fa count
-iterations of
-.Tn DES
-and stores the 64-bit result in the 8 characters at
-.Fa out
-(which may be the same as
-.Fa in
-).
-The
-.Fa salt
-specifies perturbations to the
-.Tn DES
-E-box output as described above.
-.Pp
-The function
-.Fn crypt
-returns a pointer to the encrypted value on success, and NULL on failure.
-The functions
-.Fn setkey ,
-.Fn encrypt ,
-.Fn des_setkey ,
-and
-.Fn des_cipher
-return 0 on success and 1 on failure.
-.Pp
-The
-.Fn crypt ,
-.Fn setkey
-and
-.Fn des_setkey
-functions all manipulate the same key space.
-.Sh SEE ALSO
-.Xr login 1 ,
-.Xr passwd 1 ,
-.Xr getpass 3 ,
-.Xr passwd 5
-.Sh BUGS
-The
-.Fn crypt
-function returns a pointer to static data, and subsequent calls to
-.Fn crypt
-will modify the same object.
-.Sh HISTORY
-A rotor-based
-.Fn crypt
-function appeared in
-.At v6 .
-The current style
-.Fn crypt
-first appeared in
-.At v7 .
-.Pp
-This library (FreeSec 1.0) was developed outside the United States of America
-as an unencumbered replacement for the U.S.-only NetBSD libcrypt encryption
-library.
-Users should be aware that this code (and programs staticly linked with it)
-may not be exported from the U.S., although it apparently can be imported.
-.Sh AUTHOR
-David Burren <davidb@werj.com.au>
diff --git a/secure/lib/libcipher/crypt.c b/secure/lib/libcipher/crypt.c
deleted file mode 100644
index cbdefde6bf96..000000000000
--- a/secure/lib/libcipher/crypt.c
+++ /dev/null
@@ -1,623 +0,0 @@
-/*
- * FreeSec: libcrypt for NetBSD
- *
- * Copyright (c) 1994 David Burren
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 4. Neither the name of the author nor the names of other contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $Id: crypt.c,v 1.2 1994/09/07 21:48:46 csgr Exp $
- *
- * This is an original implementation of the DES and the crypt(3) interfaces
- * by David Burren <davidb@werj.com.au>.
- *
- * An excellent reference on the underlying algorithm (and related
- * algorithms) is:
- *
- * B. Schneier, Applied Cryptography: protocols, algorithms,
- * and source code in C, John Wiley & Sons, 1994.
- *
- * Note that in that book's description of DES the lookups for the initial,
- * pbox, and final permutations are inverted (this has been brought to the
- * attention of the author). A list of errata for this book has been
- * posted to the sci.crypt newsgroup by the author and is available for FTP.
- *
- * ARCHITECTURE ASSUMPTIONS:
- * This code assumes that u_longs are 32 bits. It will probably not
- * operate on 64-bit machines without modifications.
- * It is assumed that the 8-byte arrays passed by reference can be
- * addressed as arrays of u_longs (ie. the CPU is not picky about
- * alignment).
- */
-#include <sys/types.h>
-#include <sys/param.h>
-#include <pwd.h>
-
-#ifdef DEBUG
-# include <stdio.h>
-#endif
-
-
-static u_char IP[64] = {
- 58, 50, 42, 34, 26, 18, 10, 2, 60, 52, 44, 36, 28, 20, 12, 4,
- 62, 54, 46, 38, 30, 22, 14, 6, 64, 56, 48, 40, 32, 24, 16, 8,
- 57, 49, 41, 33, 25, 17, 9, 1, 59, 51, 43, 35, 27, 19, 11, 3,
- 61, 53, 45, 37, 29, 21, 13, 5, 63, 55, 47, 39, 31, 23, 15, 7
-};
-
-static u_char inv_key_perm[64];
-static u_char u_key_perm[56];
-static u_char key_perm[56] = {
- 57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18,
- 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36,
- 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22,
- 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4
-};
-
-static u_char key_shifts[16] = {
- 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1
-};
-
-static u_char inv_comp_perm[56];
-static u_char comp_perm[48] = {
- 14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10,
- 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2,
- 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48,
- 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32
-};
-
-/*
- * No E box is used, as it's replaced by some ANDs, shifts, and ORs.
- */
-
-static u_char u_sbox[8][64];
-static u_char sbox[8][64] = {
- {
- 14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7,
- 0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8,
- 4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0,
- 15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13
- },
- {
- 15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10,
- 3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5,
- 0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15,
- 13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9
- },
- {
- 10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8,
- 13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1,
- 13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7,
- 1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12
- },
- {
- 7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15,
- 13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9,
- 10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4,
- 3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14
- },
- {
- 2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9,
- 14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6,
- 4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14,
- 11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3
- },
- {
- 12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11,
- 10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8,
- 9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6,
- 4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13
- },
- {
- 4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1,
- 13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6,
- 1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2,
- 6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12
- },
- {
- 13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7,
- 1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2,
- 7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8,
- 2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11
- }
-};
-
-static u_char un_pbox[32];
-static u_char pbox[32] = {
- 16, 7, 20, 21, 29, 12, 28, 17, 1, 15, 23, 26, 5, 18, 31, 10,
- 2, 8, 24, 14, 32, 27, 3, 9, 19, 13, 30, 6, 22, 11, 4, 25
-};
-
-static u_long bits32[32] =
-{
- 0x80000000, 0x40000000, 0x20000000, 0x10000000,
- 0x08000000, 0x04000000, 0x02000000, 0x01000000,
- 0x00800000, 0x00400000, 0x00200000, 0x00100000,
- 0x00080000, 0x00040000, 0x00020000, 0x00010000,
- 0x00008000, 0x00004000, 0x00002000, 0x00001000,
- 0x00000800, 0x00000400, 0x00000200, 0x00000100,
- 0x00000080, 0x00000040, 0x00000020, 0x00000010,
- 0x00000008, 0x00000004, 0x00000002, 0x00000001
-};
-
-static u_char bits8[8] = { 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 };
-
-static u_long saltbits;
-static long old_salt;
-static u_long *bits28, *bits24;
-static u_char init_perm[64], final_perm[64];
-static u_long en_keysl[16], en_keysr[16];
-static u_long de_keysl[16], de_keysr[16];
-static int des_initialised = 0;
-static u_char m_sbox[4][4096];
-static u_long psbox[4][256];
-static u_long ip_maskl[8][256], ip_maskr[8][256];
-static u_long fp_maskl[8][256], fp_maskr[8][256];
-static u_long key_perm_maskl[8][128], key_perm_maskr[8][128];
-static u_long comp_maskl[8][128], comp_maskr[8][128];
-static u_long old_rawkey0, old_rawkey1;
-
-static u_char ascii64[] =
- "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
-/* 0000000000111111111122222222223333333333444444444455555555556666 */
-/* 0123456789012345678901234567890123456789012345678901234567890123 */
-
-static inline int
-ascii_to_bin(char ch)
-{
- if (ch > 'z')
- return(0);
- if (ch >= 'a')
- return(ch - 'a' + 38);
- if (ch > 'Z')
- return(0);
- if (ch >= 'A')
- return(ch - 'A' + 12);
- if (ch > '9')
- return(0);
- if (ch >= '.')
- return(ch - '.');
- return(0);
-}
-
-
-static void
-des_init()
-{
- int i, j, b, k, inbit, obit;
- u_long *p, *il, *ir, *fl, *fr;
-
- old_rawkey0 = old_rawkey1 = 0L;
- saltbits = 0L;
- old_salt = 0L;
- bits24 = (bits28 = bits32 + 4) + 4;
-
- /*
- * Invert the S-boxes, reordering the input bits.
- */
- for (i = 0; i < 8; i++)
- for (j = 0; j < 64; j++) {
- b = (j & 0x20) | ((j & 1) << 4) | ((j >> 1) & 0xf);
- u_sbox[i][j] = sbox[i][b];
- }
-
- /*
- * Convert the inverted S-boxes into 4 arrays of 8 bits.
- * Each will handle 12 bits of the S-box input.
- */
- for (b = 0; b < 4; b++)
- for (i = 0; i < 64; i++)
- for (j = 0; j < 64; j++)
- m_sbox[b][(i << 6) | j] =
- (u_sbox[(b << 1)][i] << 4) |
- u_sbox[(b << 1) + 1][j];
-
- /*
- * Set up the initial & final permutations into a useful form, and
- * initialise the inverted key permutation.
- */
- for (i = 0; i < 64; i++) {
- init_perm[final_perm[i] = IP[i] - 1] = i;
- inv_key_perm[i] = 255;
- }
-
- /*
- * Invert the key permutation and initialise the inverted key
- * compression permutation.
- */
- for (i = 0; i < 56; i++) {
- u_key_perm[i] = key_perm[i] - 1;
- inv_key_perm[key_perm[i] - 1] = i;
- inv_comp_perm[i] = 255;
- }
-
- /*
- * Invert the key compression permutation.
- */
- for (i = 0; i < 48; i++) {
- inv_comp_perm[comp_perm[i] - 1] = i;
- }
-
- /*
- * Set up the OR-mask arrays for the initial and final permutations,
- * and for the key initial and compression permutations.
- */
- for (k = 0; k < 8; k++) {
- for (i = 0; i < 256; i++) {
- *(il = &ip_maskl[k][i]) = 0L;
- *(ir = &ip_maskr[k][i]) = 0L;
- *(fl = &fp_maskl[k][i]) = 0L;
- *(fr = &fp_maskr[k][i]) = 0L;
- for (j = 0; j < 8; j++) {
- inbit = 8 * k + j;
- if (i & bits8[j]) {
- if ((obit = init_perm[inbit]) < 32)
- *il |= bits32[obit];
- else
- *ir |= bits32[obit-32];
- if ((obit = final_perm[inbit]) < 32)
- *fl |= bits32[obit];
- else
- *fr |= bits32[obit - 32];
- }
- }
- }
- for (i = 0; i < 128; i++) {
- *(il = &key_perm_maskl[k][i]) = 0L;
- *(ir = &key_perm_maskr[k][i]) = 0L;
- for (j = 0; j < 7; j++) {
- inbit = 8 * k + j;
- if (i & bits8[j + 1]) {
- if ((obit = inv_key_perm[inbit]) == 255)
- continue;
- if (obit < 28)
- *il |= bits28[obit];
- else
- *ir |= bits28[obit - 28];
- }
- }
- *(il = &comp_maskl[k][i]) = 0L;
- *(ir = &comp_maskr[k][i]) = 0L;
- for (j = 0; j < 7; j++) {
- inbit = 7 * k + j;
- if (i & bits8[j + 1]) {
- if ((obit=inv_comp_perm[inbit]) == 255)
- continue;
- if (obit < 24)
- *il |= bits24[obit];
- else
- *ir |= bits24[obit - 24];
- }
- }
- }
- }
-
- /*
- * Invert the P-box permutation, and convert into OR-masks for
- * handling the output of the S-box arrays setup above.
- */
- for (i = 0; i < 32; i++)
- un_pbox[pbox[i] - 1] = i;
-
- for (b = 0; b < 4; b++)
- for (i = 0; i < 256; i++) {
- *(p = &psbox[b][i]) = 0L;
- for (j = 0; j < 8; j++) {
- if (i & bits8[j])
- *p |= bits32[un_pbox[8 * b + j]];
- }
- }
-
- des_initialised = 1;
-}
-
-
-static void
-setup_salt(long salt)
-{
- u_long obit, saltbit;
- int i;
-
- if (salt == old_salt)
- return;
- old_salt = salt;
-
- saltbits = 0L;
- saltbit = 1;
- obit = 0x800000;
- for (i = 0; i < 24; i++) {
- if (salt & saltbit)
- saltbits |= obit;
- saltbit <<= 1;
- obit >>= 1;
- }
-}
-
-
-int
-des_setkey(const char *key)
-{
- u_long k0, k1, rawkey0, rawkey1;
- int shifts, i, b, round;
-
- if (!des_initialised)
- des_init();
-
- rawkey0 = ntohl(*(u_long *) key);
- rawkey1 = ntohl(*(u_long *) (key + 4));
-
- if ((rawkey0 | rawkey1)
- && rawkey0 == old_rawkey0
- && rawkey1 == old_rawkey1) {
- /*
- * Already setup for this key.
- * This optimisation fails on a zero key (which is weak and
- * has bad parity anyway) in order to simplify the starting
- * conditions.
- */
- return(0);
- }
- old_rawkey0 = rawkey0;
- old_rawkey1 = rawkey1;
-
- /*
- * Do key permutation and split into two 28-bit subkeys.
- */
- k0 = key_perm_maskl[0][rawkey0 >> 25]
- | key_perm_maskl[1][(rawkey0 >> 17) & 0x7f]
- | key_perm_maskl[2][(rawkey0 >> 9) & 0x7f]
- | key_perm_maskl[3][(rawkey0 >> 1) & 0x7f]
- | key_perm_maskl[4][rawkey1 >> 25]
- | key_perm_maskl[5][(rawkey1 >> 17) & 0x7f]
- | key_perm_maskl[6][(rawkey1 >> 9) & 0x7f]
- | key_perm_maskl[7][(rawkey1 >> 1) & 0x7f];
- k1 = key_perm_maskr[0][rawkey0 >> 25]
- | key_perm_maskr[1][(rawkey0 >> 17) & 0x7f]
- | key_perm_maskr[2][(rawkey0 >> 9) & 0x7f]
- | key_perm_maskr[3][(rawkey0 >> 1) & 0x7f]
- | key_perm_maskr[4][rawkey1 >> 25]
- | key_perm_maskr[5][(rawkey1 >> 17) & 0x7f]
- | key_perm_maskr[6][(rawkey1 >> 9) & 0x7f]
- | key_perm_maskr[7][(rawkey1 >> 1) & 0x7f];
- /*
- * Rotate subkeys and do compression permutation.
- */
- shifts = 0;
- for (round = 0; round < 16; round++) {
- u_long t0, t1;
- int bit;
-
- shifts += key_shifts[round];
-
- t0 = (k0 << shifts) | (k0 >> (28 - shifts));
- t1 = (k1 << shifts) | (k1 >> (28 - shifts));
-
- de_keysl[15 - round] =
- en_keysl[round] = comp_maskl[0][(t0 >> 21) & 0x7f]
- | comp_maskl[1][(t0 >> 14) & 0x7f]
- | comp_maskl[2][(t0 >> 7) & 0x7f]
- | comp_maskl[3][t0 & 0x7f]
- | comp_maskl[4][(t1 >> 21) & 0x7f]
- | comp_maskl[5][(t1 >> 14) & 0x7f]
- | comp_maskl[6][(t1 >> 7) & 0x7f]
- | comp_maskl[7][t1 & 0x7f];
-
- de_keysr[15 - round] =
- en_keysr[round] = comp_maskr[0][(t0 >> 21) & 0x7f]
- | comp_maskr[1][(t0 >> 14) & 0x7f]
- | comp_maskr[2][(t0 >> 7) & 0x7f]
- | comp_maskr[3][t0 & 0x7f]
- | comp_maskr[4][(t1 >> 21) & 0x7f]
- | comp_maskr[5][(t1 >> 14) & 0x7f]
- | comp_maskr[6][(t1 >> 7) & 0x7f]
- | comp_maskr[7][t1 & 0x7f];
- }
- return(0);
-}
-
-
-static int
-do_des( u_long l_in, u_long r_in, u_long *l_out, u_long *r_out, int count)
-{
- /*
- * l_in, r_in, l_out, and r_out are in pseudo-"big-endian" format.
- */
- u_long mask, rawl, rawr, l, r, *kl, *kr, *kl1, *kr1;
- u_long f, r48l, r48r;
- int i, j, b, round;
-
- if (count == 0) {
- return(1);
- } else if (count > 0) {
- /*
- * Encrypting
- */
- kl1 = en_keysl;
- kr1 = en_keysr;
- } else {
- /*
- * Decrypting
- */
- count = -count;
- kl1 = de_keysl;
- kr1 = de_keysr;
- }
-
- /*
- * Do initial permutation (IP).
- */
- l = ip_maskl[0][l_in >> 24]
- | ip_maskl[1][(l_in >> 16) & 0xff]
- | ip_maskl[2][(l_in >> 8) & 0xff]
- | ip_maskl[3][l_in & 0xff]
- | ip_maskl[4][r_in >> 24]
- | ip_maskl[5][(r_in >> 16) & 0xff]
- | ip_maskl[6][(r_in >> 8) & 0xff]
- | ip_maskl[7][r_in & 0xff];
- r = ip_maskr[0][l_in >> 24]
- | ip_maskr[1][(l_in >> 16) & 0xff]
- | ip_maskr[2][(l_in >> 8) & 0xff]
- | ip_maskr[3][l_in & 0xff]
- | ip_maskr[4][r_in >> 24]
- | ip_maskr[5][(r_in >> 16) & 0xff]
- | ip_maskr[6][(r_in >> 8) & 0xff]
- | ip_maskr[7][r_in & 0xff];
-
- while (count--) {
- /*
- * Do each round.
- */
- kl = kl1;
- kr = kr1;
- round = 16;
- while (round--) {
- /*
- * Expand R to 48 bits (simulate the E-box).
- */
- r48l = ((r & 0x00000001) << 23)
- | ((r & 0xf8000000) >> 9)
- | ((r & 0x1f800000) >> 11)
- | ((r & 0x01f80000) >> 13)
- | ((r & 0x001f8000) >> 15);
-
- r48r = ((r & 0x0001f800) << 7)
- | ((r & 0x00001f80) << 5)
- | ((r & 0x000001f8) << 3)
- | ((r & 0x0000001f) << 1)
- | ((r & 0x80000000) >> 31);
- /*
- * Do salting for crypt() and friends, and
- * XOR with the permuted key.
- */
- f = (r48l ^ r48r) & saltbits;
- r48l ^= f ^ *kl++;
- r48r ^= f ^ *kr++;
- /*
- * Do sbox lookups (which shrink it back to 32 bits)
- * and do the pbox permutation at the same time.
- */
- f = psbox[0][m_sbox[0][r48l >> 12]]
- | psbox[1][m_sbox[1][r48l & 0xfff]]
- | psbox[2][m_sbox[2][r48r >> 12]]
- | psbox[3][m_sbox[3][r48r & 0xfff]];
- /*
- * Now that we've permuted things, complete f().
- */
- f ^= l;
- l = r;
- r = f;
- }
- r = l;
- l = f;
- }
- /*
- * Do final permutation (inverse of IP).
- */
- *l_out = fp_maskl[0][l >> 24]
- | fp_maskl[1][(l >> 16) & 0xff]
- | fp_maskl[2][(l >> 8) & 0xff]
- | fp_maskl[3][l & 0xff]
- | fp_maskl[4][r >> 24]
- | fp_maskl[5][(r >> 16) & 0xff]
- | fp_maskl[6][(r >> 8) & 0xff]
- | fp_maskl[7][r & 0xff];
- *r_out = fp_maskr[0][l >> 24]
- | fp_maskr[1][(l >> 16) & 0xff]
- | fp_maskr[2][(l >> 8) & 0xff]
- | fp_maskr[3][l & 0xff]
- | fp_maskr[4][r >> 24]
- | fp_maskr[5][(r >> 16) & 0xff]
- | fp_maskr[6][(r >> 8) & 0xff]
- | fp_maskr[7][r & 0xff];
- return(0);
-}
-
-
-int
-des_cipher(const char *in, char *out, long salt, int count)
-{
- u_long l_out, r_out, rawl, rawr;
- int retval;
-
- if (!des_initialised)
- des_init();
-
- setup_salt(salt);
-
- rawl = ntohl(*((u_long *) in)++);
- rawr = ntohl(*((u_long *) in));
-
- retval = do_des(rawl, rawr, &l_out, &r_out, count);
-
- *((u_long *) out)++ = htonl(l_out);
- *((u_long *) out) = htonl(r_out);
- return(retval);
-}
-
-
-int
-setkey(char *key)
-{
- int i, j;
- u_long packed_keys[2];
- u_char *p;
-
- p = (u_char *) packed_keys;
-
- for (i = 0; i < 8; i++) {
- p[i] = 0;
- for (j = 0; j < 8; j++)
- if (*key++ & 1)
- p[i] |= bits8[j];
- }
- return(des_setkey(p));
-}
-
-
-int
-encrypt(char *block, int flag)
-{
- u_long io[2];
- u_char *p;
- int i, j, retval;
-
- if (!des_initialised)
- des_init();
-
- setup_salt(0L);
- p = block;
- for (i = 0; i < 2; i++) {
- io[i] = 0L;
- for (j = 0; j < 32; j++)
- if (*p++ & 1)
- io[i] |= bits32[j];
- }
- retval = do_des(io[0], io[1], io, io + 1, flag ? -1 : 1);
- for (i = 0; i < 2; i++)
- for (j = 0; j < 32; j++)
- block[(i << 5) | j] = (io[i] & bits32[j]) ? 1 : 0;
- return(retval);
-}
-
diff --git a/secure/lib/libcipher/test/Makefile b/secure/lib/libcipher/test/Makefile
deleted file mode 100644
index f1cf6cced1a5..000000000000
--- a/secure/lib/libcipher/test/Makefile
+++ /dev/null
@@ -1,56 +0,0 @@
-#
-# Hacked Makefile to compile and run the DES-certification program,
-# but not install anything.
-#
-# $Id: Makefile,v 1.1.1.1 1994/09/07 21:18:08 csgr Exp $
-#
-LIBCRYPT!=cd $(.CURDIR)/..; \
- printf "xxx:\n\techo \$${.OBJDIR}/libcipher.a\n" | make -r -s -f - xxx
-
-#CFLAGS+= -DHAVE_CRYPT16
-LIBCRYPT+= -lcrypt
-
-TARGETS=cert speedcrypt speeddes
-
-all: ${TARGETS}
-
-test: all testcrypt testencrypt testdes testspeed
-
-testcrypt: cert
- @./cert -c
-
-testencrypt: cert
- @./cert -e < ${.CURDIR}/cert.input
-
-testdes: cert
- @./cert -d < ${.CURDIR}/cert.input
-
-testspeed: cryptspeed desspeed
-
-cryptspeed: speedcrypt
- @./speedcrypt 30 1
- @./speedcrypt 30 1
- @./speedcrypt 30 0
- @./speedcrypt 30 0
-
-desspeed: speeddes
- @./speeddes 30 1
- @./speeddes 30 1
- @./speeddes 40 25
- @./speeddes 40 25
-
-cert: cert.c ${LIBCRYPT}
- $(CC) $(CFLAGS) -o cert ${.CURDIR}/cert.c ${LIBCRYPT}
-
-speedcrypt: speedcrypt.c ${LIBCRYPT}
- $(CC) $(CFLAGS) -o speedcrypt ${.CURDIR}/speedcrypt.c ${LIBCRYPT}
-
-speeddes: speeddes.c ${LIBCRYPT}
- $(CC) $(CFLAGS) -o speeddes ${.CURDIR}/speeddes.c ${LIBCRYPT}
-
-clean:
- rm -f ${TARGETS}
-
-install:
-
-.include <bsd.prog.mk>
diff --git a/secure/lib/libcipher/test/README b/secure/lib/libcipher/test/README
deleted file mode 100644
index eb6b0bebbc1d..000000000000
--- a/secure/lib/libcipher/test/README
+++ /dev/null
@@ -1,10 +0,0 @@
-This directory contains test programs to certify DES operation and to
-time the crypt() call (of curiosity value).
-
-Simply type `make test` to run the tests.
-
-The normal `make all` and `make install` that get done during library building
-and installation will build these programs BUT NOT INSTALL THEM. After all,
-they're only for testing...
-
-- David Burren, January 1994
diff --git a/secure/lib/libcipher/test/cert.c b/secure/lib/libcipher/test/cert.c
deleted file mode 100644
index 549c2306894f..000000000000
--- a/secure/lib/libcipher/test/cert.c
+++ /dev/null
@@ -1,344 +0,0 @@
-/*
- * This DES validation program shipped with FreeSec is derived from that
- * shipped with UFC-crypt which is apparently derived from one distributed
- * with Phil Karns PD DES package.
- *
- * $Id: cert.c,v 1.1.1.1 1994/09/07 21:18:08 csgr Exp $
- */
-
-#include <stdio.h>
-
-int totfails = 0;
-
-char *crypt();
-#ifdef HAVE_CRYPT16
-char *crypt16();
-#endif /* HAVE_CRYPT16 */
-
-
-static struct crypt_test {
- char *key, *setting, *answer;
-} crypt_tests[] = {
- "foob", "ar", "arlEKn0OzVJn.",
- "holyhooplasbatman!", "_X.......", "_X.......N89y2Z.e4WU",
- "holyhooplasbatman!", "_X...X...", "_X...X...rSUDQ5Na/QM",
- "holyhooplasbatman!", "_XX..X...", "_XX..X...P8vb9xU4JAk",
- "holyhooplasbatman!", "_XX..XX..", "_XX..XX..JDs5IlGLqT2",
- "holyhooplasbatman!", "_XX..XXa.", "_XX..XXa.bFVsOnCNh8Y",
- "holyhooplasbatman!", "_XXa.X...", "_XXa.X...Ghsb3QKNaps",
-#ifdef TAKES_TOO_LONG_ON_SOME_CRYPTS
- "holyhooplasbatman!", "_arararar", "_ararararNGMzvpNjeCc",
-#endif
- NULL, NULL, NULL,
-};
-
-
-static struct crypt_test crypt16_tests[] = {
- "foob", "ar", "arxo23jZDD5AYbHbqoy9Dalg",
- "holyhooplasbatman!", "ar", "arU5FRLJ3kxIoedlmyrOelEw",
- NULL, NULL, NULL
-};
-
-
-void good_bye()
-{
- if(totfails == 0) {
- printf(" Passed validation\n");
- exit(0);
- } else {
- printf(" %d failures during validation!!!\n", totfails);
- exit(1);
- }
-}
-
-
-void put8(cp)
-char *cp;
-{
- int i,j,t;
-
- for(i = 0; i < 8; i++){
- t = 0;
- for(j = 0; j < 8; j++)
- t = t << 1 | *cp++;
- printf("%02x", t);
- }
-}
-
-
-void print_bits(bits)
-unsigned char *bits;
-{
- int i;
-
- for (i = 0; i < 8; i++) {
- printf("%02x", bits[i]);
- }
-}
-
-
-int parse_line(buff, salt, key, plain, answer)
-char *buff;
-long *salt;
-char *key, *plain, *answer;
-{
- char *ptr1, *ptr2;
- int val;
- int i,j,t;
-
- /*
- * Extract salt
- */
- if (sscanf(buff, "%lu", salt) != 1)
- return(-1);
- for (ptr2 = buff; *ptr2 && !isspace(*ptr2); ptr2++)
- ;
-
- /*
- * Extract key
- */
- for (ptr1 = ptr2; *ptr1 && isspace(*ptr1); ptr1++)
- ;
- for (ptr2 = ptr1; *ptr2 && !isspace(*ptr2); ptr2++)
- ;
- if (ptr2 - ptr1 != 16)
- return(-1);
- for (i = 0; i < 8; i++){
- if (sscanf(ptr1 + 2*i, "%2x", &t) != 1)
- return(-2);
- for (j = 0; j < 8; j++)
- *key++ = (t & 1 << (7 - j)) != 0;
- }
-
- /*
- * Extract plain
- */
- for (ptr1 = ptr2; *ptr1 && isspace(*ptr1); ptr1++)
- ;
- for (ptr2 = ptr1; *ptr2 && !isspace(*ptr2); ptr2++)
- ;
- if (ptr2 - ptr1 != 16)
- return(-1);
- for (i = 0; i < 8; i++){
- if (sscanf(ptr1 + 2*i, "%2x", &t) != 1)
- return(-2);
- for (j = 0; j < 8; j++)
- *plain++ = (t & 1 << (7 - j)) != 0;
- }
-
- /*
- * Extract answer
- */
- for (ptr1 = ptr2; *ptr1 && isspace(*ptr1); ptr1++)
- ;
- for (ptr2 = ptr1; *ptr2 && !isspace(*ptr2); ptr2++)
- ;
- if (ptr2 - ptr1 != 16)
- return(-1);
- for (i = 0; i < 8; i++){
- if (sscanf(ptr1 + 2*i, "%2x", &t) != 1)
- return(-2);
- for (j = 0; j < 8; j++)
- *answer++ = (t & 1 << (7 - j)) != 0;
- }
- return(0);
-}
-
-/*
- * Test the setkey and encrypt functions
- */
-void test_encrypt()
-{
- char key[64],plain[64],cipher[64],answer[64];
- char buff[BUFSIZ];
- unsigned long salt;
- int i;
- int test;
- int fail;
-
- printf("Testing setkey/encrypt\n");
-
- for(test=0;fgets(buff, BUFSIZ, stdin);test++){
-
- /*
- * Allow comments.
- */
- if (*buff == '#')
- continue;
-
- if ((fail = parse_line(buff, &salt, key, plain, answer)) < 0){
- printf("test %d garbled (%d)\n", test, fail);
- continue;
- }
-
- if (salt)
- continue; /* encrypt has no salt support */
-
- printf(" K: "); put8(key);
- printf(" P: "); put8(plain);
- printf(" C: "); put8(answer);
-
- setkey(key);
- for(i = 0; i < 64; i++)
- cipher[i] = plain[i];
- encrypt(cipher, 0);
-
- for(i=0;i<64;i++)
- if(cipher[i] != answer[i])
- break;
- fail = 0;
- if(i != 64){
- printf(" Enc FAIL ");
- put8(cipher);
- fail++; totfails++;
- }
-
- encrypt(cipher, 1);
-
- for(i=0;i<64;i++)
- if(cipher[i] != plain[i])
- break;
- if(i != 64){
- printf(" Dec FAIL");
- fail++; totfails++;
- }
-
- if(fail == 0)
- printf(" OK");
- printf("\n");
- }
-}
-
-
-void bytes_to_bits(bytes, bits)
-char *bytes;
-unsigned char *bits;
-{
- int i, j;
-
- for (i = 0; i < 8; i++) {
- bits[i] = 0;
- for (j = 0; j < 8; j++) {
- bits[i] |= (bytes[i*8+j] & 1) << (7 - j);
- }
- }
-}
-
-
-/*
- * Test the des_setkey and des_cipher functions
- */
-void test_des()
-{
- char ckey[64], cplain[64], canswer[64];
- unsigned char key[8], plain[8], cipher[8], answer[8];
- char buff[BUFSIZ];
- unsigned long salt;
- int i;
- int test;
- int fail;
-
- printf("Testing des_setkey/des_cipher\n");
-
- for(test=0;fgets(buff, BUFSIZ, stdin);test++){
-
- /*
- * Allow comments.
- */
- if (*buff == '#')
- continue;
-
- if ((fail = parse_line(buff, &salt, ckey, cplain, canswer)) <0){
- printf("test %d garbled (%d)\n", test, fail);
- continue;
- }
-
- printf(" S: %06x", salt);
- printf(" K: "); put8(ckey);
- printf(" P: "); put8(cplain);
- printf(" C: "); put8(canswer);
-
- bytes_to_bits(ckey, key);
- bytes_to_bits(cplain, plain);
- bytes_to_bits(canswer, answer);
- des_setkey(key);
- des_cipher(plain, cipher, salt, 1);
-
- for(i = 0; i < 8; i++)
- if(cipher[i] != answer[i])
- break;
- fail = 0;
- if(i != 8){
- printf(" Enc FAIL ");
- print_bits(cipher);
- fail++; totfails++;
- }
-
- des_cipher(cipher, cipher, salt, -1);
-
- for(i = 0; i < 8; i++)
- if(cipher[i] != plain[i])
- break;
- if(i != 8){
- printf(" Dec FAIL");
- fail++; totfails++;
- }
-
- if(fail == 0)
- printf(" OK");
- printf("\n");
- }
-}
-
-
-/*
- * Test the old-style crypt(), the new-style crypt(), and crypt16().
- */
-void test_crypt()
-{
- char *result;
- struct crypt_test *p;
-
- printf("Testing crypt() family\n");
-
- for (p = crypt_tests; p->key; p++) {
- printf(" crypt(\"%s\", \"%s\"), \"%s\" expected",
- p->key, p->setting, p->answer);
- fflush(stdout);
- result = crypt(p->key, p->setting);
- if(!strcmp(result, p->answer)) {
- printf(", OK\n");
- } else {
- printf("\n failed (\"%s\")\n", result);
- totfails++;
- }
- }
-
-#ifdef HAVE_CRYPT16
- for (p = crypt16_tests; p->key; p++) {
- printf(" crypt16(\"%s\", \"%s\"), \"%s\" expected",
- p->key, p->setting, p->answer);
- fflush(stdout);
- result = crypt16(p->key, p->setting);
- if(!strcmp(result, p->answer)) {
- printf(", OK\n");
- } else {
- printf("\n failed (\"%s\")\n", result);
- totfails++;
- }
- }
-#endif /* HAVE_CRYPT16 */
-}
-
-main(argc, argv)
-int argc;
-char *argv[];
-{
- if(argc < 1 || !strcmp(argv[1], "-e"))
- test_encrypt();
- else if(!strcmp(argv[1], "-d"))
- test_des();
- else if(!strcmp(argv[1], "-c"))
- test_crypt();
- good_bye();
-}
diff --git a/secure/lib/libcipher/test/cert.input b/secure/lib/libcipher/test/cert.input
deleted file mode 100644
index 275639c46e5a..000000000000
--- a/secure/lib/libcipher/test/cert.input
+++ /dev/null
@@ -1,179 +0,0 @@
-# $Id: cert.input,v 1.1 1994/09/07 08:55:26 g89r4222 Exp $
-#
-# Salt, key, plaintext, ciphertext
-#
-0 0101010101010101 95f8a5e5dd31d900 8000000000000000
-0 0101010101010101 dd7f121ca5015619 4000000000000000
-0 0101010101010101 2e8653104f3834ea 2000000000000000
-0 0101010101010101 4bd388ff6cd81d4f 1000000000000000
-0 0101010101010101 20b9e767b2fb1456 0800000000000000
-0 0101010101010101 55579380d77138ef 0400000000000000
-0 0101010101010101 6cc5defaaf04512f 0200000000000000
-0 0101010101010101 0d9f279ba5d87260 0100000000000000
-0 0101010101010101 d9031b0271bd5a0a 0080000000000000
-0 0101010101010101 424250b37c3dd951 0040000000000000
-0 0101010101010101 b8061b7ecd9a21e5 0020000000000000
-0 0101010101010101 f15d0f286b65bd28 0010000000000000
-0 0101010101010101 add0cc8d6e5deba1 0008000000000000
-0 0101010101010101 e6d5f82752ad63d1 0004000000000000
-0 0101010101010101 ecbfe3bd3f591a5e 0002000000000000
-0 0101010101010101 f356834379d165cd 0001000000000000
-0 0101010101010101 2b9f982f20037fa9 0000800000000000
-0 0101010101010101 889de068a16f0be6 0000400000000000
-0 0101010101010101 e19e275d846a1298 0000200000000000
-0 0101010101010101 329a8ed523d71aec 0000100000000000
-0 0101010101010101 e7fce22557d23c97 0000080000000000
-0 0101010101010101 12a9f5817ff2d65d 0000040000000000
-0 0101010101010101 a484c3ad38dc9c19 0000020000000000
-0 0101010101010101 fbe00a8a1ef8ad72 0000010000000000
-0 0101010101010101 750d079407521363 0000008000000000
-0 0101010101010101 64feed9c724c2faf 0000004000000000
-0 0101010101010101 f02b263b328e2b60 0000002000000000
-0 0101010101010101 9d64555a9a10b852 0000001000000000
-0 0101010101010101 d106ff0bed5255d7 0000000800000000
-0 0101010101010101 e1652c6b138c64a5 0000000400000000
-0 0101010101010101 e428581186ec8f46 0000000200000000
-0 0101010101010101 aeb5f5ede22d1a36 0000000100000000
-0 0101010101010101 e943d7568aec0c5c 0000000080000000
-0 0101010101010101 df98c8276f54b04b 0000000040000000
-0 0101010101010101 b160e4680f6c696f 0000000020000000
-0 0101010101010101 fa0752b07d9c4ab8 0000000010000000
-0 0101010101010101 ca3a2b036dbc8502 0000000008000000
-0 0101010101010101 5e0905517bb59bcf 0000000004000000
-0 0101010101010101 814eeb3b91d90726 0000000002000000
-0 0101010101010101 4d49db1532919c9f 0000000001000000
-0 0101010101010101 25eb5fc3f8cf0621 0000000000800000
-0 0101010101010101 ab6a20c0620d1c6f 0000000000400000
-0 0101010101010101 79e90dbc98f92cca 0000000000200000
-0 0101010101010101 866ecedd8072bb0e 0000000000100000
-0 0101010101010101 8b54536f2f3e64a8 0000000000080000
-0 0101010101010101 ea51d3975595b86b 0000000000040000
-0 0101010101010101 caffc6ac4542de31 0000000000020000
-0 0101010101010101 8dd45a2ddf90796c 0000000000010000
-0 0101010101010101 1029d55e880ec2d0 0000000000008000
-0 0101010101010101 5d86cb23639dbea9 0000000000004000
-0 0101010101010101 1d1ca853ae7c0c5f 0000000000002000
-0 0101010101010101 ce332329248f3228 0000000000001000
-0 0101010101010101 8405d1abe24fb942 0000000000000800
-0 0101010101010101 e643d78090ca4207 0000000000000400
-0 0101010101010101 48221b9937748a23 0000000000000200
-0 0101010101010101 dd7c0bbd61fafd54 0000000000000100
-0 0101010101010101 2fbc291a570db5c4 0000000000000080
-0 0101010101010101 e07c30d7e4e26e12 0000000000000040
-0 0101010101010101 0953e2258e8e90a1 0000000000000020
-0 0101010101010101 5b711bc4ceebf2ee 0000000000000010
-0 0101010101010101 cc083f1e6d9e85f6 0000000000000008
-0 0101010101010101 d2fd8867d50d2dfe 0000000000000004
-0 0101010101010101 06e7ea22ce92708f 0000000000000002
-0 0101010101010101 166b40b44aba4bd6 0000000000000001
-0 8001010101010101 0000000000000000 95a8d72813daa94d
-0 4001010101010101 0000000000000000 0eec1487dd8c26d5
-0 2001010101010101 0000000000000000 7ad16ffb79c45926
-0 1001010101010101 0000000000000000 d3746294ca6a6cf3
-0 0801010101010101 0000000000000000 809f5f873c1fd761
-0 0401010101010101 0000000000000000 c02faffec989d1fc
-0 0201010101010101 0000000000000000 4615aa1d33e72f10
-0 0180010101010101 0000000000000000 2055123350c00858
-0 0140010101010101 0000000000000000 df3b99d6577397c8
-0 0120010101010101 0000000000000000 31fe17369b5288c9
-0 0110010101010101 0000000000000000 dfdd3cc64dae1642
-0 0108010101010101 0000000000000000 178c83ce2b399d94
-0 0104010101010101 0000000000000000 50f636324a9b7f80
-0 0102010101010101 0000000000000000 a8468ee3bc18f06d
-0 0101800101010101 0000000000000000 a2dc9e92fd3cde92
-0 0101400101010101 0000000000000000 cac09f797d031287
-0 0101200101010101 0000000000000000 90ba680b22aeb525
-0 0101100101010101 0000000000000000 ce7a24f350e280b6
-0 0101080101010101 0000000000000000 882bff0aa01a0b87
-0 0101040101010101 0000000000000000 25610288924511c2
-0 0101020101010101 0000000000000000 c71516c29c75d170
-0 0101018001010101 0000000000000000 5199c29a52c9f059
-0 0101014001010101 0000000000000000 c22f0a294a71f29f
-0 0101012001010101 0000000000000000 ee371483714c02ea
-0 0101011001010101 0000000000000000 a81fbd448f9e522f
-0 0101010801010101 0000000000000000 4f644c92e192dfed
-0 0101010401010101 0000000000000000 1afa9a66a6df92ae
-0 0101010201010101 0000000000000000 b3c1cc715cb879d8
-0 0101010180010101 0000000000000000 19d032e64ab0bd8b
-0 0101010140010101 0000000000000000 3cfaa7a7dc8720dc
-0 0101010120010101 0000000000000000 b7265f7f447ac6f3
-0 0101010110010101 0000000000000000 9db73b3c0d163f54
-0 0101010108010101 0000000000000000 8181b65babf4a975
-0 0101010104010101 0000000000000000 93c9b64042eaa240
-0 0101010102010101 0000000000000000 5570530829705592
-0 0101010101800101 0000000000000000 8638809e878787a0
-0 0101010101400101 0000000000000000 41b9a79af79ac208
-0 0101010101200101 0000000000000000 7a9be42f2009a892
-0 0101010101100101 0000000000000000 29038d56ba6d2745
-0 0101010101080101 0000000000000000 5495c6abf1e5df51
-0 0101010101040101 0000000000000000 ae13dbd561488933
-0 0101010101020101 0000000000000000 024d1ffa8904e389
-0 0101010101018001 0000000000000000 d1399712f99bf02e
-0 0101010101014001 0000000000000000 14c1d7c1cffec79e
-0 0101010101012001 0000000000000000 1de5279dae3bed6f
-0 0101010101011001 0000000000000000 e941a33f85501303
-0 0101010101010801 0000000000000000 da99dbbc9a03f379
-0 0101010101010401 0000000000000000 b7fc92f91d8e92e9
-0 0101010101010201 0000000000000000 ae8e5caa3ca04e85
-0 0101010101010180 0000000000000000 9cc62df43b6eed74
-0 0101010101010140 0000000000000000 d863dbb5c59a91a0
-0 0101010101010120 0000000000000000 a1ab2190545b91d7
-0 0101010101010110 0000000000000000 0875041e64c570f7
-0 0101010101010108 0000000000000000 5a594528bebef1cc
-0 0101010101010104 0000000000000000 fcdb3291de21f0c0
-0 0101010101010102 0000000000000000 869efd7f9f265a09
-0 1046913489980131 0000000000000000 88d55e54f54c97b4
-0 1007103489988020 0000000000000000 0c0cc00c83ea48fd
-0 10071034c8980120 0000000000000000 83bc8ef3a6570183
-0 1046103489988020 0000000000000000 df725dcad94ea2e9
-0 1086911519190101 0000000000000000 e652b53b550be8b0
-0 1086911519580101 0000000000000000 af527120c485cbb0
-0 5107b01519580101 0000000000000000 0f04ce393db926d5
-0 1007b01519190101 0000000000000000 c9f00ffc74079067
-0 3107915498080101 0000000000000000 7cfd82a593252b4e
-0 3107919498080101 0000000000000000 cb49a2f9e91363e3
-0 10079115b9080140 0000000000000000 00b588be70d23f56
-0 3107911598080140 0000000000000000 406a9a6ab43399ae
-0 1007d01589980101 0000000000000000 6cb773611dca9ada
-0 9107911589980101 0000000000000000 67fd21c17dbb5d70
-0 9107d01589190101 0000000000000000 9592cb4110430787
-0 1007d01598980120 0000000000000000 a6b7ff68a318ddd3
-0 1007940498190101 0000000000000000 4d102196c914ca16
-0 0107910491190401 0000000000000000 2dfa9f4573594965
-0 0107910491190101 0000000000000000 b46604816c0e0774
-0 0107940491190401 0000000000000000 6e7e6221a4f34e87
-0 19079210981a0101 0000000000000000 aa85e74643233199
-0 1007911998190801 0000000000000000 2e5a19db4d1962d6
-0 10079119981a0801 0000000000000000 23a866a809d30894
-0 1007921098190101 0000000000000000 d812d961f017d320
-0 100791159819010b 0000000000000000 055605816e58608f
-0 1004801598190101 0000000000000000 abd88e8b1b7716f1
-0 1004801598190102 0000000000000000 537ac95be69da1e1
-0 1004801598190108 0000000000000000 aed0f6ae3c25cdd8
-0 1002911598100104 0000000000000000 b3e35a5ee53e7b8d
-0 1002911598190104 0000000000000000 61c79c71921a2ef8
-0 1002911598100201 0000000000000000 e2f5728f0995013c
-0 1002911698100101 0000000000000000 1aeac39a61f0a464
-0 7ca110454a1a6e57 01a1d6d039776742 690f5b0d9a26939b
-0 0131d9619dc1376e 5cd54ca83def57da 7a389d10354bd271
-0 07a1133e4a0b2686 0248d43806f67172 868ebb51cab4599a
-0 3849674c2602319e 51454b582ddf440a 7178876e01f19b2a
-0 04b915ba43feb5b6 42fd443059577fa2 af37fb421f8c4095
-0 0113b970fd34f2ce 059b5e0851cf143a 86a560f10ec6d85b
-0 0170f175468fb5e6 0756d8e0774761d2 0cd3da020021dc09
-0 43297fad38e373fe 762514b829bf486a ea676b2cb7db2b7a
-0 07a7137045da2a16 3bdd119049372802 dfd64a815caf1a0f
-0 04689104c2fd3b2f 26955f6835af609a 5c513c9c4886c088
-0 37d06bb516cb7546 164d5e404f275232 0a2aeeae3ff4ab77
-0 1f08260d1ac2465e 6b056e18759f5cca ef1bf03e5dfa575a
-0 584023641aba6176 004bd6ef09176062 88bf0db6d70dee56
-0 025816164629b007 480d39006ee762f2 a1f9915541020b56
-0 49793ebc79b3258f 437540c8698f3cfa 6fbf1cafcffd0556
-0 4fb05e1515ab73a7 072d43a077075292 2f22e49bab7ca1ac
-0 49e95d6d4ca229bf 02fe55778117f12a 5a6b612cc26cce4a
-0 018310dc409b26d6 1d9d5c5018f728c2 5f4c038ed12b2e41
-0 1c587f1c13924fef 305532286d6f295a 63fac0d034d9f793
-1 1c587f1c13924fef 305532286d6f295a 400d307ca24fee60
-57 1c587f1c13924fef 305532286d6f295a 28b568f40e7d43ae
-1 8001010101010101 0000000000000000 f501029f268e45dc
-0 1c587f1c13924fef 305532286d6f295a 63fac0d034d9f793
diff --git a/secure/lib/libcipher/test/speedcrypt.c b/secure/lib/libcipher/test/speedcrypt.c
deleted file mode 100644
index f7507fd789f0..000000000000
--- a/secure/lib/libcipher/test/speedcrypt.c
+++ /dev/null
@@ -1,76 +0,0 @@
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/resource.h>
-#include <signal.h>
-#include <stdio.h>
-
-int keep_going, count, alternate, seconds;
-struct rusage prior, now;
-
-void
-finish()
-{
- keep_going = 0;
-}
-
-
-main(int argc, char *argv[])
-{
- struct itimerval itv;
- u_long msecs, key1[8], key2[8];
- char *k1, *k2;
-
- if (argc < 2 || sscanf(argv[1], "%d", &seconds) != 1)
- seconds = 20;
-
- if (argc < 3 || sscanf(argv[2], "%d", &alternate) != 1)
- alternate = 0;
-
- printf ("Running crypt%s for %d seconds of vtime...\n",
- alternate ? " with alternate keys" : "", seconds);
-
- bzero(&itv, sizeof (itv));
- signal (SIGVTALRM, finish);
- itv.it_value.tv_sec = seconds;
- itv.it_value.tv_usec = 0;
- setitimer(ITIMER_VIRTUAL, &itv, NULL);
-
- keep_going = 1;
- if (getrusage(0, &prior) < 0) {
- perror("getrusage");
- exit(1);
- }
-
- k1 = (char *) key1;
- k2 = (char *) key2;
- strcpy(k1, "fredfredfredfredfred");
- strcpy(k2, "joejoejoejoejoejoejo");
-
- if (alternate)
- for (count = 0; keep_going; count++)
- {
-#if defined(LONGCRYPT)
- crypt((count & 1) ? k1 : k2, "_ara.X...");
-#else
- crypt((count & 1) ? k1 : k2, "eek");
-#endif
- }
- else
- for (count = 0; keep_going; count++)
- {
-#if defined(LONGCRYPT)
- crypt(k1, "_ara.X...");
-#else
- crypt(k1, "eek");
-#endif
- }
-
- if (getrusage(0, &now) < 0) {
- perror("getrusage");
- exit(1);
- }
- msecs = (now.ru_utime.tv_sec - prior.ru_utime.tv_sec) * 1000
- + (now.ru_utime.tv_usec - prior.ru_utime.tv_usec) / 1000;
- printf ("\tDid %d crypt()s per second.\n", 1000 * count / msecs);
- exit(0);
-}
diff --git a/secure/lib/libcipher/test/speeddes.c b/secure/lib/libcipher/test/speeddes.c
deleted file mode 100644
index a5822362f107..000000000000
--- a/secure/lib/libcipher/test/speeddes.c
+++ /dev/null
@@ -1,61 +0,0 @@
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/resource.h>
-#include <signal.h>
-#include <stdio.h>
-
-int keep_going, count, alternate, seconds, iters;
-struct rusage prior, now;
-u_long block[3];
-char *blk;
-
-void
-finish()
-{
- keep_going = 0;
-}
-
-
-main(int argc, char *argv[])
-{
- struct itimerval itv;
- u_long msecs;
-
- if (argc < 2 || sscanf(argv[1], "%d", &seconds) != 1)
- seconds = 20;
-
- if (argc < 3 || sscanf(argv[2], "%d", &iters) != 1)
- iters = 1;
-
- printf ("Running des_cipher( , , 0L, %d) for %d seconds of vtime...\n",
- iters, seconds);
-
- bzero(&itv, sizeof (itv));
- signal (SIGVTALRM, finish);
- itv.it_value.tv_sec = seconds;
- itv.it_value.tv_usec = 0;
- setitimer(ITIMER_VIRTUAL, &itv, NULL);
-
- keep_going = 1;
- if (getrusage(0, &prior) < 0) {
- perror("getrusage");
- exit(1);
- }
-
- blk = (char *) block;
- (void)des_setkey(blk);
- for (count = 0; keep_going; count++)
- (void) des_cipher(blk, blk, 0, iters);
-
- if (getrusage(0, &now) < 0) {
- perror("getrusage");
- exit(1);
- }
-
- msecs = (now.ru_utime.tv_sec - prior.ru_utime.tv_sec) * 1000
- + (now.ru_utime.tv_usec - prior.ru_utime.tv_usec) / 1000;
- printf ("Did %d encryptions per second, each of %d iteration(s).\n",
- 1000 * count / msecs, iters);
- printf ("\tTotal %d blocks per second.\n", (1000*iters*count)/msecs);
- exit(0);
-}
diff --git a/secure/lib/libcrypt/Makefile b/secure/lib/libcrypt/Makefile
deleted file mode 100644
index 0a9533382963..000000000000
--- a/secure/lib/libcrypt/Makefile
+++ /dev/null
@@ -1,52 +0,0 @@
-#
-# $Id: Makefile,v 1.6 1994/08/26 19:03:23 wollman Exp $
-#
-
-LCRYPTBASE= libcrypt
-LCRYPTSO= $(LCRYPTBASE).so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
-
-
-LDCRYPTBASE= libdescrypt
-LDCRYPTSO= $(LDCRYPTBASE).so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
-
-LIB= descrypt
-SRCS= crypt.c
-PRECIOUSLIB= yes
-
-#MAN3= crypt.3
-#MLINKS= crypt.3 encrypt.3 crypt.3 setkey.3
-#MLINKS+=crypt.3 des_cipher.3 crypt.3 des_setkey.3
-
-
-
-
-test:
- cd test ; make test ; make clean
-
-
-.include <bsd.lib.mk>
-
-# We only install the links if they do not already exist.
-# This may have to be revised
-afterinstall:
-.if !defined(NOPIC) && defined(SHLIB_MAJOR)
- @cd $(DESTDIR)/$(LIBDIR); \
- if [ ! -e $(LCRYPTSO) ]; then \
- rm -f $(LCRYPTSO); \
- ln -s $(LDCRYPTSO) $(LCRYPTSO); \
- fi
-.endif
- @cd $(DESTDIR)/$(LIBDIR); \
- if [ ! -e $(LCRYPTBASE).a ]; then \
- rm -f $(LCRYPTBASE).a; \
- ln -s $(LDCRYPTBASE).a libcrypt.a; \
- fi
-.if !defined(NOPROFILE)
- @cd $(DESTDIR)/$(LIBDIR); \
- if [ ! -e $(LCRYPTBASE)_p.a ]; then \
- rm -f $(LCRYPTBASE)_p.a; \
- ln -s $(LDCRYPTBASE)_p.a libcrypt_p.a; \
- fi
-.endif
-
-
diff --git a/secure/lib/libcrypt/README b/secure/lib/libcrypt/README
deleted file mode 100644
index 051c9c1b94ef..000000000000
--- a/secure/lib/libcrypt/README
+++ /dev/null
@@ -1,98 +0,0 @@
-
- FreeSec - NetBSD libcrypt replacement
-
- David Burren <davidb@werj.com.au>
- Release 1.0, March 1994
-
- Document ref: $Id: README,v 1.1.1.1 1994/04/04 14:57:18 g89r4222 Exp $
-
-
-Description
-===========
-This library is a drop-in replacement for the libcrypt used in U.S. copies
-of NetBSD, duplicating that library's functionality. A suite of verification
-and benchmark tools is provided.
-
-FreeSec 1.0 is an original implementation of the DES algorithm and the
-crypt(3) interfaces used in Unix-style operating systems. It was produced
-in Australia and as such is not covered by U.S. export restrictions (at
-least for copies that remain outside the U.S.).
-
-
-History
-=======
-An earlier version of the FreeSec library was built using the UFC-crypt
-package that is distributed as part of the GNU library. UFC-crypt did not
-support the des_cipher() or des_setkey() functions, nor the new-style
-crypt with long keys. These were implemented in FreeSec 0.2, but at least
-one bug remained, where encryption would only succeed if either the salt
-or the plaintext was zero. Because of its heritage FreeSec 0.2 was covered
-by the GNU Library Licence.
-
-FreeSec 1.0 is an original implementation by myself, and has been tested
-against the verification suite I'd been using with FreeSec 0.2 (this is not
-encumbered by any licence). FreeSec 1.0 is covered by a Berkeley-style
-licence, which better fits into the *BSD hierarchy than the earlier GNU
-licence.
-
-
-Why should you use FreeSec?
-===========================
-FreeSec is intended as a replacement for the U.S.-only NetBSD libcrypt,
-to act as a baseline for encryption functionality.
-
-Some other packages (such as Eric Young's libdes package) are faster and
-more complete than FreeSec, but typically have different licencing
-arrangements. While some applications will justify the use of these
-packages, the idea here is that everyone should have access to *at least*
-the functionality of FreeSec.
-
-
-Performance of FreeSec 1.0
-==========================
-I compare below the performance of three libcrypt implementations. As can be
-seen, it's between the U.S. library and UFC-crypt. While the performance of
-FreeSec 1.0 is good enough to keep me happy for now, I hope to improve it in
-future versions. I was interested to note that while UFC-crypt is faster on
-a 386, hardware characteristics can have markedly different effects on each
-implementation.
-
-
-386DX40, 128k cache | U.S. BSD | FreeSec 1.0 | FreeSec 0.2
-CFLAGS=-O2 | | |
-========================+===============+===============+==================
-crypt (alternate keys) | 317 | 341 | 395
- crypt/sec | | |
-------------------------+---------------+---------------+------------------
-crypt (constant key) | 317 | 368 | 436
- crypt/sec | | |
-------------------------+---------------+---------------+------------------
-des_cipher( , , , 1) | 6037 | 7459 | 3343
- blocks/sec | | |
-------------------------+---------------+---------------+------------------
-des_cipher( , , , 25) | 8871 | 9627 | 15926
- blocks/sec | | |
-
-Notes: The results tabled here are the average over 10 runs.
- The entry/exit code for FreeSec 0.2's des_cipher() is particularly
- inefficient, thus the anomalous result for single encryptions.
-
-
-As an experiment using a machine with a larger register set and an
-obscenely fast CPU, I obtained the following results:
-
- 60 MHz R4400 | FreeSec 1.0 | FreeSec 0.2
- ========================+=================================
- crypt (alternate keys) | 2545 | 2702
- crypt/sec | |
- ------------------------+---------------------------------
- crypt (constant key) | 2852 | 2981
- crypt/sec | |
- ------------------------+---------------------------------
- des_cipher( , , , 1) | 56443 | 21409
- blocks/sec | |
- ------------------------+---------------------------------
- des_cipher( , , , 25) | 82531 | 18276
- blocks/sec | |
-
-Obviously your mileage will vary with your hardware and your compiler...
diff --git a/secure/lib/libcrypt/README.FreeBSD b/secure/lib/libcrypt/README.FreeBSD
deleted file mode 100644
index 250467edfd60..000000000000
--- a/secure/lib/libcrypt/README.FreeBSD
+++ /dev/null
@@ -1,21 +0,0 @@
-$Id: README.FreeBSD,v 1.2 1994/04/04 15:10:57 g89r4222 Exp $
-
-This is FreeSec package for NetBSD, unchanged for
-FreeBSD, except for the Makefile.
-
-FreeSec was written by David Burren <davidb@werj.com.au>
-
-A few bugs in the original FreeSec release have been fixed.
-
-In order to make libcrypt binaries exportable from the USA,
-only the symbol _crypt() (later to be changed to ___crypt())
-is exported from libcrypt.
-
-This source code was developed outside the USA, and can be
-obtained outside the USA.
-
- Geoff Rehmet
- Rhodes University
- Grahamstown
- South Africa
- 8 August 1994
diff --git a/secure/lib/libcrypt/crypt.3 b/secure/lib/libcrypt/crypt.3
deleted file mode 100644
index 4d93161f332e..000000000000
--- a/secure/lib/libcrypt/crypt.3
+++ /dev/null
@@ -1,236 +0,0 @@
-.\" FreeSec: libcrypt for NetBSD
-.\"
-.\" Copyright (c) 1994 David Burren
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 4. Neither the name of the author nor the names of other contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" $Id: crypt.3,v 1.1.1.1 1994/04/04 14:57:18 g89r4222 Exp $
-.\"
-.\" Manual page, using -mandoc macros
-.\"
-.Dd March 9, 1994
-.Dt CRYPT 3
-.Os "FreeSec 1.0"
-.Sh NAME
-.Nm crypt ,
-.Nm setkey ,
-.Nm encrypt ,
-.Nm des_setkey ,
-.Nm des_cipher ,
-.Nd DES encryption
-.Sh SYNOPSIS
-.Ft char
-.Fn *crypt "const char *key" "const char *setting"
-.Ft int
-.Fn setkey "char *key"
-.Ft int
-.Fn encrypt "char *block" "int flag"
-.Ft int
-.Fn des_setkey "const char *key"
-.Ft int
-.Fn des_cipher "const char *in" "char *out" "long salt" "int count"
-.Sh DESCRIPTION
-The
-.Fn crypt
-function performs password encryption, based on the
-.Tn NBS
-Data Encryption Standard (DES).
-Additional code has been added to deter key search attempts.
-The first argument to
-.Nm crypt
-is a
-.Dv null Ns -terminated
-string, typically a user's typed password.
-The second is in one of two forms:
-if it begins with an underscore (``_'') then an extended format is used
-in interpreting both the the key and the setting, as outlined below.
-.Ss Extended crypt:
-.Pp
-The
-.Ar key
-is divided into groups of 8 characters (the last group is null-padded)
-and the low-order 7 bits of each each character (56 bits per group) are
-used to form the DES key as follows:
-the first group of 56 bits becomes the initial DES key.
-For each additional group, the XOR of the encryption of the current DES
-key with itself and the group bits becomes the next DES key.
-.Pp
-The setting is a 9-character array consisting of an underscore followed
-by 4 bytes of iteration count and 4 bytes of salt.
-These are encoded as printable characters, 6 bits per character,
-least significant character first.
-The values 0 to 63 are encoded as ``./0-9A-Za-z''.
-This allows 24 bits for both
-.Fa count
-and
-.Fa salt .
-.Ss "Traditional" crypt:
-.Pp
-The first 8 bytes of the key are null-padded, and the low-order 7 bits of
-each character is used to form the 56-bit
-.Tn DES
-key.
-.Pp
-The setting is a 2-character array of the ASCII-encoded salt.
-Thus only 12 bits of
-.Fa salt
-are used.
-.Fa count
-is set to 25.
-.Ss Algorithm:
-.Pp
-The
-.Fa salt
-introduces disorder in the
-.Tn DES
-algorithm in one of 16777216 or 4096 possible ways
-(ie. with 24 or 12 bits: if bit
-.Em i
-of the
-.Ar salt
-is set, then bits
-.Em i
-and
-.Em i+24
-are swapped in the
-.Tn DES
-E-box output).
-.Pp
-The DES key is used to encrypt a 64-bit constant using
-.Ar count
-iterations of
-.Tn DES .
-The value returned is a
-.Dv null Ns -terminated
-string, 20 or 13 bytes (plus null) in length, consisting of the
-.Ar setting
-followed by the encoded 64-bit encryption.
-.Pp
-The functions,
-.Fn encrypt ,
-.Fn setkey ,
-.Fn des_setkey
-and
-.Fn des_cipher
-provide access to the
-.Tn DES
-algorithm itself.
-.Fn setkey
-is passed a 64-byte array of binary values (numeric 0 or 1).
-A 56-bit key is extracted from this array by dividing the
-array into groups of 8, and ignoring the last bit in each group.
-That bit is reserved for a byte parity check by DES, but is ignored
-by these functions.
-.Pp
-The
-.Fa block
-argument to
-.Fn encrypt
-is also a 64-byte array of binary values.
-If the value of
-.Fa flag
-is 0,
-.Fa block
-is encrypted otherwise it is decrypted.
-The result is returned in the original array
-.Fa block
-after using the key specified by
-.Fn setkey
-to process it.
-.Pp
-The argument to
-.Fn des_setkey
-is a character array of length 8.
-The least significant bit (the parity bit) in each character is ignored,
-and the remaining bits are concatenated to form a 56-bit key.
-The function
-.Fn des_cipher
-encrypts (or decrypts if
-.Fa count
-is negative) the 64-bits stored in the 8 characters at
-.Fa in
-using
-.Xr abs 3
-of
-.Fa count
-iterations of
-.Tn DES
-and stores the 64-bit result in the 8 characters at
-.Fa out
-(which may be the same as
-.Fa in
-).
-The
-.Fa salt
-specifies perturbations to the
-.Tn DES
-E-box output as described above.
-.Pp
-The function
-.Fn crypt
-returns a pointer to the encrypted value on success, and NULL on failure.
-The functions
-.Fn setkey ,
-.Fn encrypt ,
-.Fn des_setkey ,
-and
-.Fn des_cipher
-return 0 on success and 1 on failure.
-.Pp
-The
-.Fn crypt ,
-.Fn setkey
-and
-.Fn des_setkey
-functions all manipulate the same key space.
-.Sh SEE ALSO
-.Xr login 1 ,
-.Xr passwd 1 ,
-.Xr getpass 3 ,
-.Xr passwd 5
-.Sh BUGS
-The
-.Fn crypt
-function returns a pointer to static data, and subsequent calls to
-.Fn crypt
-will modify the same object.
-.Sh HISTORY
-A rotor-based
-.Fn crypt
-function appeared in
-.At v6 .
-The current style
-.Fn crypt
-first appeared in
-.At v7 .
-.Pp
-This library (FreeSec 1.0) was developed outside the United States of America
-as an unencumbered replacement for the U.S.-only NetBSD libcrypt encryption
-library.
-Users should be aware that this code (and programs staticly linked with it)
-may not be exported from the U.S., although it apparently can be imported.
-.Sh AUTHOR
-David Burren <davidb@werj.com.au>
diff --git a/secure/lib/libcrypt/crypt.c b/secure/lib/libcrypt/crypt.c
deleted file mode 100644
index 59f502af43e3..000000000000
--- a/secure/lib/libcrypt/crypt.c
+++ /dev/null
@@ -1,697 +0,0 @@
-/*
- * FreeSec: libcrypt for NetBSD
- *
- * Copyright (c) 1994 David Burren
- * All rights reserved.
- *
- * Adapted for FreeBSD-2.0 by Geoffrey M. Rehmet
- * crypt.c should now *only* export crypt(), in order to make
- * binaries of libcrypt exportable from the USA
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 4. Neither the name of the author nor the names of other contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $Id: crypt.c,v 1.5 1994/09/19 19:26:39 csgr Exp $
- *
- * This is an original implementation of the DES and the crypt(3) interfaces
- * by David Burren <davidb@werj.com.au>.
- *
- * An excellent reference on the underlying algorithm (and related
- * algorithms) is:
- *
- * B. Schneier, Applied Cryptography: protocols, algorithms,
- * and source code in C, John Wiley & Sons, 1994.
- *
- * Note that in that book's description of DES the lookups for the initial,
- * pbox, and final permutations are inverted (this has been brought to the
- * attention of the author). A list of errata for this book has been
- * posted to the sci.crypt newsgroup by the author and is available for FTP.
- *
- * ARCHITECTURE ASSUMPTIONS:
- * This code assumes that u_longs are 32 bits. It will probably not
- * operate on 64-bit machines without modifications.
- * It is assumed that the 8-byte arrays passed by reference can be
- * addressed as arrays of u_longs (ie. the CPU is not picky about
- * alignment).
- */
-#include <sys/types.h>
-#include <sys/param.h>
-#include <pwd.h>
-
-#ifdef DEBUG
-# include <stdio.h>
-#endif
-
-/* We can't always assume gcc */
-#ifdef __GNUC__
-#define INLINE inline
-#endif
-
-
-static u_char IP[64] = {
- 58, 50, 42, 34, 26, 18, 10, 2, 60, 52, 44, 36, 28, 20, 12, 4,
- 62, 54, 46, 38, 30, 22, 14, 6, 64, 56, 48, 40, 32, 24, 16, 8,
- 57, 49, 41, 33, 25, 17, 9, 1, 59, 51, 43, 35, 27, 19, 11, 3,
- 61, 53, 45, 37, 29, 21, 13, 5, 63, 55, 47, 39, 31, 23, 15, 7
-};
-
-static u_char inv_key_perm[64];
-static u_char u_key_perm[56];
-static u_char key_perm[56] = {
- 57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18,
- 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36,
- 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22,
- 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4
-};
-
-static u_char key_shifts[16] = {
- 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1
-};
-
-static u_char inv_comp_perm[56];
-static u_char comp_perm[48] = {
- 14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10,
- 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2,
- 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48,
- 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32
-};
-
-/*
- * No E box is used, as it's replaced by some ANDs, shifts, and ORs.
- */
-
-static u_char u_sbox[8][64];
-static u_char sbox[8][64] = {
- {
- 14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7,
- 0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8,
- 4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0,
- 15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13
- },
- {
- 15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10,
- 3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5,
- 0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15,
- 13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9
- },
- {
- 10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8,
- 13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1,
- 13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7,
- 1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12
- },
- {
- 7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15,
- 13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9,
- 10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4,
- 3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14
- },
- {
- 2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9,
- 14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6,
- 4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14,
- 11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3
- },
- {
- 12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11,
- 10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8,
- 9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6,
- 4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13
- },
- {
- 4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1,
- 13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6,
- 1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2,
- 6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12
- },
- {
- 13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7,
- 1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2,
- 7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8,
- 2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11
- }
-};
-
-static u_char un_pbox[32];
-static u_char pbox[32] = {
- 16, 7, 20, 21, 29, 12, 28, 17, 1, 15, 23, 26, 5, 18, 31, 10,
- 2, 8, 24, 14, 32, 27, 3, 9, 19, 13, 30, 6, 22, 11, 4, 25
-};
-
-static u_long bits32[32] =
-{
- 0x80000000, 0x40000000, 0x20000000, 0x10000000,
- 0x08000000, 0x04000000, 0x02000000, 0x01000000,
- 0x00800000, 0x00400000, 0x00200000, 0x00100000,
- 0x00080000, 0x00040000, 0x00020000, 0x00010000,
- 0x00008000, 0x00004000, 0x00002000, 0x00001000,
- 0x00000800, 0x00000400, 0x00000200, 0x00000100,
- 0x00000080, 0x00000040, 0x00000020, 0x00000010,
- 0x00000008, 0x00000004, 0x00000002, 0x00000001
-};
-
-static u_char bits8[8] = { 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 };
-
-static u_long saltbits;
-static long old_salt;
-static u_long *bits28, *bits24;
-static u_char init_perm[64], final_perm[64];
-static u_long en_keysl[16], en_keysr[16];
-static u_long de_keysl[16], de_keysr[16];
-static int des_initialised = 0;
-static u_char m_sbox[4][4096];
-static u_long psbox[4][256];
-static u_long ip_maskl[8][256], ip_maskr[8][256];
-static u_long fp_maskl[8][256], fp_maskr[8][256];
-static u_long key_perm_maskl[8][128], key_perm_maskr[8][128];
-static u_long comp_maskl[8][128], comp_maskr[8][128];
-static u_long old_rawkey0, old_rawkey1;
-
-static u_char ascii64[] =
- "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
-/* 0000000000111111111122222222223333333333444444444455555555556666 */
-/* 0123456789012345678901234567890123456789012345678901234567890123 */
-
-static INLINE int
-ascii_to_bin(char ch)
-{
- if (ch > 'z')
- return(0);
- if (ch >= 'a')
- return(ch - 'a' + 38);
- if (ch > 'Z')
- return(0);
- if (ch >= 'A')
- return(ch - 'A' + 12);
- if (ch > '9')
- return(0);
- if (ch >= '.')
- return(ch - '.');
- return(0);
-}
-
-static void
-des_init()
-{
- int i, j, b, k, inbit, obit;
- u_long *p, *il, *ir, *fl, *fr;
-
- old_rawkey0 = old_rawkey1 = 0L;
- saltbits = 0L;
- old_salt = 0L;
- bits24 = (bits28 = bits32 + 4) + 4;
-
- /*
- * Invert the S-boxes, reordering the input bits.
- */
- for (i = 0; i < 8; i++)
- for (j = 0; j < 64; j++) {
- b = (j & 0x20) | ((j & 1) << 4) | ((j >> 1) & 0xf);
- u_sbox[i][j] = sbox[i][b];
- }
-
- /*
- * Convert the inverted S-boxes into 4 arrays of 8 bits.
- * Each will handle 12 bits of the S-box input.
- */
- for (b = 0; b < 4; b++)
- for (i = 0; i < 64; i++)
- for (j = 0; j < 64; j++)
- m_sbox[b][(i << 6) | j] =
- (u_sbox[(b << 1)][i] << 4) |
- u_sbox[(b << 1) + 1][j];
-
- /*
- * Set up the initial & final permutations into a useful form, and
- * initialise the inverted key permutation.
- */
- for (i = 0; i < 64; i++) {
- init_perm[final_perm[i] = IP[i] - 1] = i;
- inv_key_perm[i] = 255;
- }
-
- /*
- * Invert the key permutation and initialise the inverted key
- * compression permutation.
- */
- for (i = 0; i < 56; i++) {
- u_key_perm[i] = key_perm[i] - 1;
- inv_key_perm[key_perm[i] - 1] = i;
- inv_comp_perm[i] = 255;
- }
-
- /*
- * Invert the key compression permutation.
- */
- for (i = 0; i < 48; i++) {
- inv_comp_perm[comp_perm[i] - 1] = i;
- }
-
- /*
- * Set up the OR-mask arrays for the initial and final permutations,
- * and for the key initial and compression permutations.
- */
- for (k = 0; k < 8; k++) {
- for (i = 0; i < 256; i++) {
- *(il = &ip_maskl[k][i]) = 0L;
- *(ir = &ip_maskr[k][i]) = 0L;
- *(fl = &fp_maskl[k][i]) = 0L;
- *(fr = &fp_maskr[k][i]) = 0L;
- for (j = 0; j < 8; j++) {
- inbit = 8 * k + j;
- if (i & bits8[j]) {
- if ((obit = init_perm[inbit]) < 32)
- *il |= bits32[obit];
- else
- *ir |= bits32[obit-32];
- if ((obit = final_perm[inbit]) < 32)
- *fl |= bits32[obit];
- else
- *fr |= bits32[obit - 32];
- }
- }
- }
- for (i = 0; i < 128; i++) {
- *(il = &key_perm_maskl[k][i]) = 0L;
- *(ir = &key_perm_maskr[k][i]) = 0L;
- for (j = 0; j < 7; j++) {
- inbit = 8 * k + j;
- if (i & bits8[j + 1]) {
- if ((obit = inv_key_perm[inbit]) == 255)
- continue;
- if (obit < 28)
- *il |= bits28[obit];
- else
- *ir |= bits28[obit - 28];
- }
- }
- *(il = &comp_maskl[k][i]) = 0L;
- *(ir = &comp_maskr[k][i]) = 0L;
- for (j = 0; j < 7; j++) {
- inbit = 7 * k + j;
- if (i & bits8[j + 1]) {
- if ((obit=inv_comp_perm[inbit]) == 255)
- continue;
- if (obit < 24)
- *il |= bits24[obit];
- else
- *ir |= bits24[obit - 24];
- }
- }
- }
- }
-
- /*
- * Invert the P-box permutation, and convert into OR-masks for
- * handling the output of the S-box arrays setup above.
- */
- for (i = 0; i < 32; i++)
- un_pbox[pbox[i] - 1] = i;
-
- for (b = 0; b < 4; b++)
- for (i = 0; i < 256; i++) {
- *(p = &psbox[b][i]) = 0L;
- for (j = 0; j < 8; j++) {
- if (i & bits8[j])
- *p |= bits32[un_pbox[8 * b + j]];
- }
- }
-
- des_initialised = 1;
-}
-
-static void
-setup_salt(long salt)
-{
- u_long obit, saltbit;
- int i;
-
- if (salt == old_salt)
- return;
- old_salt = salt;
-
- saltbits = 0L;
- saltbit = 1;
- obit = 0x800000;
- for (i = 0; i < 24; i++) {
- if (salt & saltbit)
- saltbits |= obit;
- saltbit <<= 1;
- obit >>= 1;
- }
-}
-
-static int
-des_setkey(const char *key)
-{
- u_long k0, k1, rawkey0, rawkey1;
- int shifts, i, b, round;
-
- if (!des_initialised)
- des_init();
-
- rawkey0 = ntohl(*(u_long *) key);
- rawkey1 = ntohl(*(u_long *) (key + 4));
-
- if ((rawkey0 | rawkey1)
- && rawkey0 == old_rawkey0
- && rawkey1 == old_rawkey1) {
- /*
- * Already setup for this key.
- * This optimisation fails on a zero key (which is weak and
- * has bad parity anyway) in order to simplify the starting
- * conditions.
- */
- return(0);
- }
- old_rawkey0 = rawkey0;
- old_rawkey1 = rawkey1;
-
- /*
- * Do key permutation and split into two 28-bit subkeys.
- */
- k0 = key_perm_maskl[0][rawkey0 >> 25]
- | key_perm_maskl[1][(rawkey0 >> 17) & 0x7f]
- | key_perm_maskl[2][(rawkey0 >> 9) & 0x7f]
- | key_perm_maskl[3][(rawkey0 >> 1) & 0x7f]
- | key_perm_maskl[4][rawkey1 >> 25]
- | key_perm_maskl[5][(rawkey1 >> 17) & 0x7f]
- | key_perm_maskl[6][(rawkey1 >> 9) & 0x7f]
- | key_perm_maskl[7][(rawkey1 >> 1) & 0x7f];
- k1 = key_perm_maskr[0][rawkey0 >> 25]
- | key_perm_maskr[1][(rawkey0 >> 17) & 0x7f]
- | key_perm_maskr[2][(rawkey0 >> 9) & 0x7f]
- | key_perm_maskr[3][(rawkey0 >> 1) & 0x7f]
- | key_perm_maskr[4][rawkey1 >> 25]
- | key_perm_maskr[5][(rawkey1 >> 17) & 0x7f]
- | key_perm_maskr[6][(rawkey1 >> 9) & 0x7f]
- | key_perm_maskr[7][(rawkey1 >> 1) & 0x7f];
- /*
- * Rotate subkeys and do compression permutation.
- */
- shifts = 0;
- for (round = 0; round < 16; round++) {
- u_long t0, t1;
- int bit;
-
- shifts += key_shifts[round];
-
- t0 = (k0 << shifts) | (k0 >> (28 - shifts));
- t1 = (k1 << shifts) | (k1 >> (28 - shifts));
-
- de_keysl[15 - round] =
- en_keysl[round] = comp_maskl[0][(t0 >> 21) & 0x7f]
- | comp_maskl[1][(t0 >> 14) & 0x7f]
- | comp_maskl[2][(t0 >> 7) & 0x7f]
- | comp_maskl[3][t0 & 0x7f]
- | comp_maskl[4][(t1 >> 21) & 0x7f]
- | comp_maskl[5][(t1 >> 14) & 0x7f]
- | comp_maskl[6][(t1 >> 7) & 0x7f]
- | comp_maskl[7][t1 & 0x7f];
-
- de_keysr[15 - round] =
- en_keysr[round] = comp_maskr[0][(t0 >> 21) & 0x7f]
- | comp_maskr[1][(t0 >> 14) & 0x7f]
- | comp_maskr[2][(t0 >> 7) & 0x7f]
- | comp_maskr[3][t0 & 0x7f]
- | comp_maskr[4][(t1 >> 21) & 0x7f]
- | comp_maskr[5][(t1 >> 14) & 0x7f]
- | comp_maskr[6][(t1 >> 7) & 0x7f]
- | comp_maskr[7][t1 & 0x7f];
- }
- return(0);
-}
-
-static int
-do_des( u_long l_in, u_long r_in, u_long *l_out, u_long *r_out, int count)
-{
- /*
- * l_in, r_in, l_out, and r_out are in pseudo-"big-endian" format.
- */
- u_long mask, rawl, rawr, l, r, *kl, *kr, *kl1, *kr1;
- u_long f, r48l, r48r;
- int i, j, b, round;
-
- if (count == 0) {
- return(1);
- } else if (count > 0) {
- /*
- * Encrypting
- */
- kl1 = en_keysl;
- kr1 = en_keysr;
- } else {
- /*
- * Decrypting
- */
- count = -count;
- kl1 = de_keysl;
- kr1 = de_keysr;
- }
-
- /*
- * Do initial permutation (IP).
- */
- l = ip_maskl[0][l_in >> 24]
- | ip_maskl[1][(l_in >> 16) & 0xff]
- | ip_maskl[2][(l_in >> 8) & 0xff]
- | ip_maskl[3][l_in & 0xff]
- | ip_maskl[4][r_in >> 24]
- | ip_maskl[5][(r_in >> 16) & 0xff]
- | ip_maskl[6][(r_in >> 8) & 0xff]
- | ip_maskl[7][r_in & 0xff];
- r = ip_maskr[0][l_in >> 24]
- | ip_maskr[1][(l_in >> 16) & 0xff]
- | ip_maskr[2][(l_in >> 8) & 0xff]
- | ip_maskr[3][l_in & 0xff]
- | ip_maskr[4][r_in >> 24]
- | ip_maskr[5][(r_in >> 16) & 0xff]
- | ip_maskr[6][(r_in >> 8) & 0xff]
- | ip_maskr[7][r_in & 0xff];
-
- while (count--) {
- /*
- * Do each round.
- */
- kl = kl1;
- kr = kr1;
- round = 16;
- while (round--) {
- /*
- * Expand R to 48 bits (simulate the E-box).
- */
- r48l = ((r & 0x00000001) << 23)
- | ((r & 0xf8000000) >> 9)
- | ((r & 0x1f800000) >> 11)
- | ((r & 0x01f80000) >> 13)
- | ((r & 0x001f8000) >> 15);
-
- r48r = ((r & 0x0001f800) << 7)
- | ((r & 0x00001f80) << 5)
- | ((r & 0x000001f8) << 3)
- | ((r & 0x0000001f) << 1)
- | ((r & 0x80000000) >> 31);
- /*
- * Do salting for crypt() and friends, and
- * XOR with the permuted key.
- */
- f = (r48l ^ r48r) & saltbits;
- r48l ^= f ^ *kl++;
- r48r ^= f ^ *kr++;
- /*
- * Do sbox lookups (which shrink it back to 32 bits)
- * and do the pbox permutation at the same time.
- */
- f = psbox[0][m_sbox[0][r48l >> 12]]
- | psbox[1][m_sbox[1][r48l & 0xfff]]
- | psbox[2][m_sbox[2][r48r >> 12]]
- | psbox[3][m_sbox[3][r48r & 0xfff]];
- /*
- * Now that we've permuted things, complete f().
- */
- f ^= l;
- l = r;
- r = f;
- }
- r = l;
- l = f;
- }
- /*
- * Do final permutation (inverse of IP).
- */
- *l_out = fp_maskl[0][l >> 24]
- | fp_maskl[1][(l >> 16) & 0xff]
- | fp_maskl[2][(l >> 8) & 0xff]
- | fp_maskl[3][l & 0xff]
- | fp_maskl[4][r >> 24]
- | fp_maskl[5][(r >> 16) & 0xff]
- | fp_maskl[6][(r >> 8) & 0xff]
- | fp_maskl[7][r & 0xff];
- *r_out = fp_maskr[0][l >> 24]
- | fp_maskr[1][(l >> 16) & 0xff]
- | fp_maskr[2][(l >> 8) & 0xff]
- | fp_maskr[3][l & 0xff]
- | fp_maskr[4][r >> 24]
- | fp_maskr[5][(r >> 16) & 0xff]
- | fp_maskr[6][(r >> 8) & 0xff]
- | fp_maskr[7][r & 0xff];
- return(0);
-}
-
-static int
-des_cipher(const char *in, char *out, long salt, int count)
-{
- u_long l_out, r_out, rawl, rawr;
- int retval;
-
- if (!des_initialised)
- des_init();
-
- setup_salt(salt);
-
- rawl = ntohl(*((u_long *) in)++);
- rawr = ntohl(*((u_long *) in));
-
- retval = do_des(rawl, rawr, &l_out, &r_out, count);
-
- *((u_long *) out)++ = htonl(l_out);
- *((u_long *) out) = htonl(r_out);
- return(retval);
-}
-
-
-char *
-crypt(char *key, char *setting)
-{
- int i;
- u_long count, salt, l, r0, r1, keybuf[2];
- u_char *p, *q;
- static u_char output[21];
-
- if (!des_initialised)
- des_init();
-
-
- /*
- * Copy the key, shifting each character up by one bit
- * and padding with zeros.
- */
- q = (u_char *) keybuf;
- while (q - (u_char *) keybuf - 8) {
- if (*q++ = *key << 1)
- key++;
- }
- if (des_setkey((u_char *) keybuf))
- return(NULL);
-
- if (*setting == _PASSWORD_EFMT1) {
- /*
- * "new"-style:
- * setting - underscore, 4 bytes of count, 4 bytes of salt
- * key - unlimited characters
- */
- for (i = 1, count = 0L; i < 5; i++)
- count |= ascii_to_bin(setting[i]) << (i - 1) * 6;
-
- for (i = 5, salt = 0L; i < 9; i++)
- salt |= ascii_to_bin(setting[i]) << (i - 5) * 6;
-
- while (*key) {
- /*
- * Encrypt the key with itself.
- */
- if (des_cipher((u_char*)keybuf, (u_char*)keybuf, 0L, 1))
- return(NULL);
- /*
- * And XOR with the next 8 characters of the key.
- */
- q = (u_char *) keybuf;
- while (q - (u_char *) keybuf - 8 && *key)
- *q++ ^= *key++ << 1;
-
- if (des_setkey((u_char *) keybuf))
- return(NULL);
- }
- strncpy(output, setting, 9);
-
- /*
- * Double check that we weren't given a short setting.
- * If we were, the above code will probably have created
- * wierd values for count and salt, but we don't really care.
- * Just make sure the output string doesn't have an extra
- * NUL in it.
- */
- output[9] = '\0';
- p = output + strlen(output);
- } else {
- /*
- * "old"-style:
- * setting - 2 bytes of salt
- * key - up to 8 characters
- */
- count = 25;
-
- salt = (ascii_to_bin(setting[1]) << 6)
- | ascii_to_bin(setting[0]);
-
- output[0] = setting[0];
- /*
- * If the encrypted password that the salt was extracted from
- * is only 1 character long, the salt will be corrupted. We
- * need to ensure that the output string doesn't have an extra
- * NUL in it!
- */
- output[1] = setting[1] ? setting[1] : output[0];
-
- p = output + 2;
- }
- setup_salt(salt);
- /*
- * Do it.
- */
- if (do_des(0L, 0L, &r0, &r1, count))
- return(NULL);
- /*
- * Now encode the result...
- */
- l = (r0 >> 8);
- *p++ = ascii64[(l >> 18) & 0x3f];
- *p++ = ascii64[(l >> 12) & 0x3f];
- *p++ = ascii64[(l >> 6) & 0x3f];
- *p++ = ascii64[l & 0x3f];
-
- l = (r0 << 16) | ((r1 >> 16) & 0xffff);
- *p++ = ascii64[(l >> 18) & 0x3f];
- *p++ = ascii64[(l >> 12) & 0x3f];
- *p++ = ascii64[(l >> 6) & 0x3f];
- *p++ = ascii64[l & 0x3f];
-
- l = r1 << 2;
- *p++ = ascii64[(l >> 12) & 0x3f];
- *p++ = ascii64[(l >> 6) & 0x3f];
- *p++ = ascii64[l & 0x3f];
- *p = 0;
-
- return(output);
-}
diff --git a/secure/lib/libcrypt/test/Makefile b/secure/lib/libcrypt/test/Makefile
deleted file mode 100644
index b65b09fa5093..000000000000
--- a/secure/lib/libcrypt/test/Makefile
+++ /dev/null
@@ -1,48 +0,0 @@
-#
-# Hacked Makefile to compile and run the DES-certification program,
-# but not install anything.
-#
-# $Id: Makefile,v 1.3 1994/08/12 21:55:04 csgr Exp $
-#
-.if exists (../obj)
-OBJDIR = obj
-.else
-OBJDIR =
-.endif
-
-LIBCRYPT= $(.CURDIR)/../$(OBJDIR)/libdescrypt.a
-
-#CFLAGS+= -DHAVE_CRYPT16
-
-TARGETS=cert speedcrypt
-
-all: ${TARGETS}
-
-test: all testcrypt testspeed
-
-testcrypt: cert
- @./cert -c
-
-testspeed: cryptspeed
-
-cryptspeed: speedcrypt
- @./speedcrypt 30 1
- @./speedcrypt 30 1
- @./speedcrypt 30 0
- @./speedcrypt 30 0
-
-cert: cert.c ${LIBCRYPT}
- $(CC) $(CFLAGS) -o cert ${.CURDIR}/cert.c ${LIBCRYPT}
-
-speedcrypt: speedcrypt.c ${LIBCRYPT}
- $(CC) $(CFLAGS) -o speedcrypt ${.CURDIR}/speedcrypt.c ${LIBCRYPT}
-
-
-clean:
- rm -f ${TARGETS}
-
-install:
-
-obj:
-
-.include <bsd.prog.mk>
diff --git a/secure/lib/libcrypt/test/README b/secure/lib/libcrypt/test/README
deleted file mode 100644
index eb6b0bebbc1d..000000000000
--- a/secure/lib/libcrypt/test/README
+++ /dev/null
@@ -1,10 +0,0 @@
-This directory contains test programs to certify DES operation and to
-time the crypt() call (of curiosity value).
-
-Simply type `make test` to run the tests.
-
-The normal `make all` and `make install` that get done during library building
-and installation will build these programs BUT NOT INSTALL THEM. After all,
-they're only for testing...
-
-- David Burren, January 1994
diff --git a/secure/lib/libcrypt/test/cert.c b/secure/lib/libcrypt/test/cert.c
deleted file mode 100644
index b2e3ae569980..000000000000
--- a/secure/lib/libcrypt/test/cert.c
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- * This DES validation program shipped with FreeSec is derived from that
- * shipped with UFC-crypt which is apparently derived from one distributed
- * with Phil Karns PD DES package.
- *
- * $Id: cert.c,v 1.2 1994/08/08 17:29:03 csgr Exp $
- */
-
-#include <stdio.h>
-
-int totfails = 0;
-
-char *crypt();
-#ifdef HAVE_CRYPT16
-char *crypt16();
-#endif /* HAVE_CRYPT16 */
-
-
-static struct crypt_test {
- char *key, *setting, *answer;
-} crypt_tests[] = {
- "foob", "ar", "arlEKn0OzVJn.",
- "holyhooplasbatman!", "_X.......", "_X.......N89y2Z.e4WU",
- "holyhooplasbatman!", "_X...X...", "_X...X...rSUDQ5Na/QM",
- "holyhooplasbatman!", "_XX..X...", "_XX..X...P8vb9xU4JAk",
- "holyhooplasbatman!", "_XX..XX..", "_XX..XX..JDs5IlGLqT2",
- "holyhooplasbatman!", "_XX..XXa.", "_XX..XXa.bFVsOnCNh8Y",
- "holyhooplasbatman!", "_XXa.X...", "_XXa.X...Ghsb3QKNaps",
-#ifdef TAKES_TOO_LONG_ON_SOME_CRYPTS
- "holyhooplasbatman!", "_arararar", "_ararararNGMzvpNjeCc",
-#endif
- NULL, NULL, NULL,
-};
-
-
-static struct crypt_test crypt16_tests[] = {
- "foob", "ar", "arxo23jZDD5AYbHbqoy9Dalg",
- "holyhooplasbatman!", "ar", "arU5FRLJ3kxIoedlmyrOelEw",
- NULL, NULL, NULL
-};
-
-
-void good_bye()
-{
- if(totfails == 0) {
- printf(" Passed validation\n");
- exit(0);
- } else {
- printf(" %d failures during validation!!!\n", totfails);
- exit(1);
- }
-}
-
-
-void put8(cp)
-char *cp;
-{
- int i,j,t;
-
- for(i = 0; i < 8; i++){
- t = 0;
- for(j = 0; j < 8; j++)
- t = t << 1 | *cp++;
- printf("%02x", t);
- }
-}
-
-
-void print_bits(bits)
-unsigned char *bits;
-{
- int i;
-
- for (i = 0; i < 8; i++) {
- printf("%02x", bits[i]);
- }
-}
-
-
-int parse_line(buff, salt, key, plain, answer)
-char *buff;
-long *salt;
-char *key, *plain, *answer;
-{
- char *ptr1, *ptr2;
- int val;
- int i,j,t;
-
- /*
- * Extract salt
- */
- if (sscanf(buff, "%lu", salt) != 1)
- return(-1);
- for (ptr2 = buff; *ptr2 && !isspace(*ptr2); ptr2++)
- ;
-
- /*
- * Extract key
- */
- for (ptr1 = ptr2; *ptr1 && isspace(*ptr1); ptr1++)
- ;
- for (ptr2 = ptr1; *ptr2 && !isspace(*ptr2); ptr2++)
- ;
- if (ptr2 - ptr1 != 16)
- return(-1);
- for (i = 0; i < 8; i++){
- if (sscanf(ptr1 + 2*i, "%2x", &t) != 1)
- return(-2);
- for (j = 0; j < 8; j++)
- *key++ = (t & 1 << (7 - j)) != 0;
- }
-
- /*
- * Extract plain
- */
- for (ptr1 = ptr2; *ptr1 && isspace(*ptr1); ptr1++)
- ;
- for (ptr2 = ptr1; *ptr2 && !isspace(*ptr2); ptr2++)
- ;
- if (ptr2 - ptr1 != 16)
- return(-1);
- for (i = 0; i < 8; i++){
- if (sscanf(ptr1 + 2*i, "%2x", &t) != 1)
- return(-2);
- for (j = 0; j < 8; j++)
- *plain++ = (t & 1 << (7 - j)) != 0;
- }
-
- /*
- * Extract answer
- */
- for (ptr1 = ptr2; *ptr1 && isspace(*ptr1); ptr1++)
- ;
- for (ptr2 = ptr1; *ptr2 && !isspace(*ptr2); ptr2++)
- ;
- if (ptr2 - ptr1 != 16)
- return(-1);
- for (i = 0; i < 8; i++){
- if (sscanf(ptr1 + 2*i, "%2x", &t) != 1)
- return(-2);
- for (j = 0; j < 8; j++)
- *answer++ = (t & 1 << (7 - j)) != 0;
- }
- return(0);
-}
-
-void bytes_to_bits(bytes, bits)
-char *bytes;
-unsigned char *bits;
-{
- int i, j;
-
- for (i = 0; i < 8; i++) {
- bits[i] = 0;
- for (j = 0; j < 8; j++) {
- bits[i] |= (bytes[i*8+j] & 1) << (7 - j);
- }
- }
-}
-
-
-
-/*
- * Test the old-style crypt(), the new-style crypt(), and crypt16().
- */
-void test_crypt()
-{
- char *result;
- struct crypt_test *p;
-
- printf("Testing crypt() family\n");
-
- for (p = crypt_tests; p->key; p++) {
- printf(" crypt(\"%s\", \"%s\"), \"%s\" expected",
- p->key, p->setting, p->answer);
- fflush(stdout);
- result = crypt(p->key, p->setting);
- if(!strcmp(result, p->answer)) {
- printf(", OK\n");
- } else {
- printf("\n failed (\"%s\")\n", result);
- totfails++;
- }
- }
-
-#ifdef HAVE_CRYPT16
- for (p = crypt16_tests; p->key; p++) {
- printf(" crypt16(\"%s\", \"%s\"), \"%s\" expected",
- p->key, p->setting, p->answer);
- fflush(stdout);
- result = crypt16(p->key, p->setting);
- if(!strcmp(result, p->answer)) {
- printf(", OK\n");
- } else {
- printf("\n failed (\"%s\")\n", result);
- totfails++;
- }
- }
-#endif /* HAVE_CRYPT16 */
-}
-
-main(argc, argv)
-int argc;
-char *argv[];
-{
- test_crypt();
- good_bye();
-}
diff --git a/secure/lib/libcrypt/test/cert.input b/secure/lib/libcrypt/test/cert.input
deleted file mode 100644
index d0fa7a5caf43..000000000000
--- a/secure/lib/libcrypt/test/cert.input
+++ /dev/null
@@ -1,179 +0,0 @@
-# $Id: cert.input,v 1.1.1.1 1994/04/04 14:57:19 g89r4222 Exp $
-#
-# Salt, key, plaintext, ciphertext
-#
-0 0101010101010101 95f8a5e5dd31d900 8000000000000000
-0 0101010101010101 dd7f121ca5015619 4000000000000000
-0 0101010101010101 2e8653104f3834ea 2000000000000000
-0 0101010101010101 4bd388ff6cd81d4f 1000000000000000
-0 0101010101010101 20b9e767b2fb1456 0800000000000000
-0 0101010101010101 55579380d77138ef 0400000000000000
-0 0101010101010101 6cc5defaaf04512f 0200000000000000
-0 0101010101010101 0d9f279ba5d87260 0100000000000000
-0 0101010101010101 d9031b0271bd5a0a 0080000000000000
-0 0101010101010101 424250b37c3dd951 0040000000000000
-0 0101010101010101 b8061b7ecd9a21e5 0020000000000000
-0 0101010101010101 f15d0f286b65bd28 0010000000000000
-0 0101010101010101 add0cc8d6e5deba1 0008000000000000
-0 0101010101010101 e6d5f82752ad63d1 0004000000000000
-0 0101010101010101 ecbfe3bd3f591a5e 0002000000000000
-0 0101010101010101 f356834379d165cd 0001000000000000
-0 0101010101010101 2b9f982f20037fa9 0000800000000000
-0 0101010101010101 889de068a16f0be6 0000400000000000
-0 0101010101010101 e19e275d846a1298 0000200000000000
-0 0101010101010101 329a8ed523d71aec 0000100000000000
-0 0101010101010101 e7fce22557d23c97 0000080000000000
-0 0101010101010101 12a9f5817ff2d65d 0000040000000000
-0 0101010101010101 a484c3ad38dc9c19 0000020000000000
-0 0101010101010101 fbe00a8a1ef8ad72 0000010000000000
-0 0101010101010101 750d079407521363 0000008000000000
-0 0101010101010101 64feed9c724c2faf 0000004000000000
-0 0101010101010101 f02b263b328e2b60 0000002000000000
-0 0101010101010101 9d64555a9a10b852 0000001000000000
-0 0101010101010101 d106ff0bed5255d7 0000000800000000
-0 0101010101010101 e1652c6b138c64a5 0000000400000000
-0 0101010101010101 e428581186ec8f46 0000000200000000
-0 0101010101010101 aeb5f5ede22d1a36 0000000100000000
-0 0101010101010101 e943d7568aec0c5c 0000000080000000
-0 0101010101010101 df98c8276f54b04b 0000000040000000
-0 0101010101010101 b160e4680f6c696f 0000000020000000
-0 0101010101010101 fa0752b07d9c4ab8 0000000010000000
-0 0101010101010101 ca3a2b036dbc8502 0000000008000000
-0 0101010101010101 5e0905517bb59bcf 0000000004000000
-0 0101010101010101 814eeb3b91d90726 0000000002000000
-0 0101010101010101 4d49db1532919c9f 0000000001000000
-0 0101010101010101 25eb5fc3f8cf0621 0000000000800000
-0 0101010101010101 ab6a20c0620d1c6f 0000000000400000
-0 0101010101010101 79e90dbc98f92cca 0000000000200000
-0 0101010101010101 866ecedd8072bb0e 0000000000100000
-0 0101010101010101 8b54536f2f3e64a8 0000000000080000
-0 0101010101010101 ea51d3975595b86b 0000000000040000
-0 0101010101010101 caffc6ac4542de31 0000000000020000
-0 0101010101010101 8dd45a2ddf90796c 0000000000010000
-0 0101010101010101 1029d55e880ec2d0 0000000000008000
-0 0101010101010101 5d86cb23639dbea9 0000000000004000
-0 0101010101010101 1d1ca853ae7c0c5f 0000000000002000
-0 0101010101010101 ce332329248f3228 0000000000001000
-0 0101010101010101 8405d1abe24fb942 0000000000000800
-0 0101010101010101 e643d78090ca4207 0000000000000400
-0 0101010101010101 48221b9937748a23 0000000000000200
-0 0101010101010101 dd7c0bbd61fafd54 0000000000000100
-0 0101010101010101 2fbc291a570db5c4 0000000000000080
-0 0101010101010101 e07c30d7e4e26e12 0000000000000040
-0 0101010101010101 0953e2258e8e90a1 0000000000000020
-0 0101010101010101 5b711bc4ceebf2ee 0000000000000010
-0 0101010101010101 cc083f1e6d9e85f6 0000000000000008
-0 0101010101010101 d2fd8867d50d2dfe 0000000000000004
-0 0101010101010101 06e7ea22ce92708f 0000000000000002
-0 0101010101010101 166b40b44aba4bd6 0000000000000001
-0 8001010101010101 0000000000000000 95a8d72813daa94d
-0 4001010101010101 0000000000000000 0eec1487dd8c26d5
-0 2001010101010101 0000000000000000 7ad16ffb79c45926
-0 1001010101010101 0000000000000000 d3746294ca6a6cf3
-0 0801010101010101 0000000000000000 809f5f873c1fd761
-0 0401010101010101 0000000000000000 c02faffec989d1fc
-0 0201010101010101 0000000000000000 4615aa1d33e72f10
-0 0180010101010101 0000000000000000 2055123350c00858
-0 0140010101010101 0000000000000000 df3b99d6577397c8
-0 0120010101010101 0000000000000000 31fe17369b5288c9
-0 0110010101010101 0000000000000000 dfdd3cc64dae1642
-0 0108010101010101 0000000000000000 178c83ce2b399d94
-0 0104010101010101 0000000000000000 50f636324a9b7f80
-0 0102010101010101 0000000000000000 a8468ee3bc18f06d
-0 0101800101010101 0000000000000000 a2dc9e92fd3cde92
-0 0101400101010101 0000000000000000 cac09f797d031287
-0 0101200101010101 0000000000000000 90ba680b22aeb525
-0 0101100101010101 0000000000000000 ce7a24f350e280b6
-0 0101080101010101 0000000000000000 882bff0aa01a0b87
-0 0101040101010101 0000000000000000 25610288924511c2
-0 0101020101010101 0000000000000000 c71516c29c75d170
-0 0101018001010101 0000000000000000 5199c29a52c9f059
-0 0101014001010101 0000000000000000 c22f0a294a71f29f
-0 0101012001010101 0000000000000000 ee371483714c02ea
-0 0101011001010101 0000000000000000 a81fbd448f9e522f
-0 0101010801010101 0000000000000000 4f644c92e192dfed
-0 0101010401010101 0000000000000000 1afa9a66a6df92ae
-0 0101010201010101 0000000000000000 b3c1cc715cb879d8
-0 0101010180010101 0000000000000000 19d032e64ab0bd8b
-0 0101010140010101 0000000000000000 3cfaa7a7dc8720dc
-0 0101010120010101 0000000000000000 b7265f7f447ac6f3
-0 0101010110010101 0000000000000000 9db73b3c0d163f54
-0 0101010108010101 0000000000000000 8181b65babf4a975
-0 0101010104010101 0000000000000000 93c9b64042eaa240
-0 0101010102010101 0000000000000000 5570530829705592
-0 0101010101800101 0000000000000000 8638809e878787a0
-0 0101010101400101 0000000000000000 41b9a79af79ac208
-0 0101010101200101 0000000000000000 7a9be42f2009a892
-0 0101010101100101 0000000000000000 29038d56ba6d2745
-0 0101010101080101 0000000000000000 5495c6abf1e5df51
-0 0101010101040101 0000000000000000 ae13dbd561488933
-0 0101010101020101 0000000000000000 024d1ffa8904e389
-0 0101010101018001 0000000000000000 d1399712f99bf02e
-0 0101010101014001 0000000000000000 14c1d7c1cffec79e
-0 0101010101012001 0000000000000000 1de5279dae3bed6f
-0 0101010101011001 0000000000000000 e941a33f85501303
-0 0101010101010801 0000000000000000 da99dbbc9a03f379
-0 0101010101010401 0000000000000000 b7fc92f91d8e92e9
-0 0101010101010201 0000000000000000 ae8e5caa3ca04e85
-0 0101010101010180 0000000000000000 9cc62df43b6eed74
-0 0101010101010140 0000000000000000 d863dbb5c59a91a0
-0 0101010101010120 0000000000000000 a1ab2190545b91d7
-0 0101010101010110 0000000000000000 0875041e64c570f7
-0 0101010101010108 0000000000000000 5a594528bebef1cc
-0 0101010101010104 0000000000000000 fcdb3291de21f0c0
-0 0101010101010102 0000000000000000 869efd7f9f265a09
-0 1046913489980131 0000000000000000 88d55e54f54c97b4
-0 1007103489988020 0000000000000000 0c0cc00c83ea48fd
-0 10071034c8980120 0000000000000000 83bc8ef3a6570183
-0 1046103489988020 0000000000000000 df725dcad94ea2e9
-0 1086911519190101 0000000000000000 e652b53b550be8b0
-0 1086911519580101 0000000000000000 af527120c485cbb0
-0 5107b01519580101 0000000000000000 0f04ce393db926d5
-0 1007b01519190101 0000000000000000 c9f00ffc74079067
-0 3107915498080101 0000000000000000 7cfd82a593252b4e
-0 3107919498080101 0000000000000000 cb49a2f9e91363e3
-0 10079115b9080140 0000000000000000 00b588be70d23f56
-0 3107911598080140 0000000000000000 406a9a6ab43399ae
-0 1007d01589980101 0000000000000000 6cb773611dca9ada
-0 9107911589980101 0000000000000000 67fd21c17dbb5d70
-0 9107d01589190101 0000000000000000 9592cb4110430787
-0 1007d01598980120 0000000000000000 a6b7ff68a318ddd3
-0 1007940498190101 0000000000000000 4d102196c914ca16
-0 0107910491190401 0000000000000000 2dfa9f4573594965
-0 0107910491190101 0000000000000000 b46604816c0e0774
-0 0107940491190401 0000000000000000 6e7e6221a4f34e87
-0 19079210981a0101 0000000000000000 aa85e74643233199
-0 1007911998190801 0000000000000000 2e5a19db4d1962d6
-0 10079119981a0801 0000000000000000 23a866a809d30894
-0 1007921098190101 0000000000000000 d812d961f017d320
-0 100791159819010b 0000000000000000 055605816e58608f
-0 1004801598190101 0000000000000000 abd88e8b1b7716f1
-0 1004801598190102 0000000000000000 537ac95be69da1e1
-0 1004801598190108 0000000000000000 aed0f6ae3c25cdd8
-0 1002911598100104 0000000000000000 b3e35a5ee53e7b8d
-0 1002911598190104 0000000000000000 61c79c71921a2ef8
-0 1002911598100201 0000000000000000 e2f5728f0995013c
-0 1002911698100101 0000000000000000 1aeac39a61f0a464
-0 7ca110454a1a6e57 01a1d6d039776742 690f5b0d9a26939b
-0 0131d9619dc1376e 5cd54ca83def57da 7a389d10354bd271
-0 07a1133e4a0b2686 0248d43806f67172 868ebb51cab4599a
-0 3849674c2602319e 51454b582ddf440a 7178876e01f19b2a
-0 04b915ba43feb5b6 42fd443059577fa2 af37fb421f8c4095
-0 0113b970fd34f2ce 059b5e0851cf143a 86a560f10ec6d85b
-0 0170f175468fb5e6 0756d8e0774761d2 0cd3da020021dc09
-0 43297fad38e373fe 762514b829bf486a ea676b2cb7db2b7a
-0 07a7137045da2a16 3bdd119049372802 dfd64a815caf1a0f
-0 04689104c2fd3b2f 26955f6835af609a 5c513c9c4886c088
-0 37d06bb516cb7546 164d5e404f275232 0a2aeeae3ff4ab77
-0 1f08260d1ac2465e 6b056e18759f5cca ef1bf03e5dfa575a
-0 584023641aba6176 004bd6ef09176062 88bf0db6d70dee56
-0 025816164629b007 480d39006ee762f2 a1f9915541020b56
-0 49793ebc79b3258f 437540c8698f3cfa 6fbf1cafcffd0556
-0 4fb05e1515ab73a7 072d43a077075292 2f22e49bab7ca1ac
-0 49e95d6d4ca229bf 02fe55778117f12a 5a6b612cc26cce4a
-0 018310dc409b26d6 1d9d5c5018f728c2 5f4c038ed12b2e41
-0 1c587f1c13924fef 305532286d6f295a 63fac0d034d9f793
-1 1c587f1c13924fef 305532286d6f295a 400d307ca24fee60
-57 1c587f1c13924fef 305532286d6f295a 28b568f40e7d43ae
-1 8001010101010101 0000000000000000 f501029f268e45dc
-0 1c587f1c13924fef 305532286d6f295a 63fac0d034d9f793
diff --git a/secure/lib/libcrypt/test/speedcrypt.c b/secure/lib/libcrypt/test/speedcrypt.c
deleted file mode 100644
index f7507fd789f0..000000000000
--- a/secure/lib/libcrypt/test/speedcrypt.c
+++ /dev/null
@@ -1,76 +0,0 @@
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/resource.h>
-#include <signal.h>
-#include <stdio.h>
-
-int keep_going, count, alternate, seconds;
-struct rusage prior, now;
-
-void
-finish()
-{
- keep_going = 0;
-}
-
-
-main(int argc, char *argv[])
-{
- struct itimerval itv;
- u_long msecs, key1[8], key2[8];
- char *k1, *k2;
-
- if (argc < 2 || sscanf(argv[1], "%d", &seconds) != 1)
- seconds = 20;
-
- if (argc < 3 || sscanf(argv[2], "%d", &alternate) != 1)
- alternate = 0;
-
- printf ("Running crypt%s for %d seconds of vtime...\n",
- alternate ? " with alternate keys" : "", seconds);
-
- bzero(&itv, sizeof (itv));
- signal (SIGVTALRM, finish);
- itv.it_value.tv_sec = seconds;
- itv.it_value.tv_usec = 0;
- setitimer(ITIMER_VIRTUAL, &itv, NULL);
-
- keep_going = 1;
- if (getrusage(0, &prior) < 0) {
- perror("getrusage");
- exit(1);
- }
-
- k1 = (char *) key1;
- k2 = (char *) key2;
- strcpy(k1, "fredfredfredfredfred");
- strcpy(k2, "joejoejoejoejoejoejo");
-
- if (alternate)
- for (count = 0; keep_going; count++)
- {
-#if defined(LONGCRYPT)
- crypt((count & 1) ? k1 : k2, "_ara.X...");
-#else
- crypt((count & 1) ? k1 : k2, "eek");
-#endif
- }
- else
- for (count = 0; keep_going; count++)
- {
-#if defined(LONGCRYPT)
- crypt(k1, "_ara.X...");
-#else
- crypt(k1, "eek");
-#endif
- }
-
- if (getrusage(0, &now) < 0) {
- perror("getrusage");
- exit(1);
- }
- msecs = (now.ru_utime.tv_sec - prior.ru_utime.tv_sec) * 1000
- + (now.ru_utime.tv_usec - prior.ru_utime.tv_usec) / 1000;
- printf ("\tDid %d crypt()s per second.\n", 1000 * count / msecs);
- exit(0);
-}
diff --git a/secure/lib/libtelnet/Makefile b/secure/lib/libtelnet/Makefile
deleted file mode 100644
index 4a75fe15cc20..000000000000
--- a/secure/lib/libtelnet/Makefile
+++ /dev/null
@@ -1,59 +0,0 @@
-# From: @(#)Makefile 8.2 (Berkeley) 12/15/93
-# $Id: Makefile,v 1.1.1.1.6.2 1995/10/11 00:12:10 gibbs Exp $
-
-LIB= telnet
-DISTRIBUTION= krb
-SRCS= auth.c encrypt.c genget.c getent.c misc.c
-SRCS+= enc_des.c
-SRCS+= spx.c rsaencpwd.c read_password.c
-CFLAGS+= -DHAS_CGETENT
-
-#ifdef ENCRYPTION
-
-CFLAGS+= -DENCRYPTION -DAUTHENTICATION
-
-.if exists(/usr/lib/libkrb.a)
-CFLAGS+= -DKRB4 -I/usr/include/kerberosIV -DDES_ENCRYPTION
-# KRB4_ENCPWD not yet defined
-#CFLAGS+= -DKRB4_ENCPWD
-SRCS+= kerberos.c
-# KRB4_ENCPWD not yet defined
-#SRCS+= krb4encpwd.c
-LDADD+= -ldes -lkrb
-.endif
-
-.if exists(/usr/lib/libkrb5.a)
-CFLAGS+= -DKRB5 -DFORWARD -DDES_ENCRYPTION
-SRCS+= kerberos5.c forward.c
-LDADD+= -ldes -lkrb5
-.endif
-
-# Used only in krb4encpwd.c and rsaencpwd.c, not yet active
-#LDADD+= -ldescrypt
-
-#endif /* ENCRYPTION */
-
-# These are the sources that have encryption stuff in them.
-CRYPT_SRC= auth.c enc-proto.h enc_des.c encrypt.c
-CRYPT_SRC+= encrypt.h kerberos.c kerberos5.c krb4encpwd.c
-CRYPT_SRC+= misc.c spx.c Makefile
-NOCRYPT_DIR=${.CURDIR}/Nocrypt
-
-.include <bsd.lib.mk>
-
-nocrypt:
-#ifdef ENCRYPTION
- @for i in ${CRYPT_SRC}; do \
- if [ ! -d ${NOCRYPT_DIR} ]; then \
- echo Creating subdirectory ${NOCRYPT_DIR}; \
- mkdir ${NOCRYPT_DIR}; \
- fi; \
- echo ${NOCRYPT_DIR}/$$i; \
- unifdef -UENCRYPTION ${.CURDIR}/$$i | \
- sed "s/ || defined(ENCRYPTION)//" > ${NOCRYPT_DIR}/$$i; \
- done
-
-placeholder:
-#else /* ENCRYPTION */
- @echo "Encryption code already removed."
-#endif /* ENCRYPTION */
diff --git a/secure/lib/libtelnet/auth-proto.h b/secure/lib/libtelnet/auth-proto.h
deleted file mode 100644
index 111033d7700c..000000000000
--- a/secure/lib/libtelnet/auth-proto.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/*-
- * Copyright (c) 1991, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)auth-proto.h 8.1 (Berkeley) 6/4/93
- */
-
-/*
- * Copyright (C) 1990 by the Massachusetts Institute of Technology
- *
- * Export of this software from the United States of America is assumed
- * to require a specific license from the United States Government.
- * It is the responsibility of any person or organization contemplating
- * export to obtain such a license before exporting.
- *
- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
- * distribute this software and its documentation for any purpose and
- * without fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright notice and
- * this permission notice appear in supporting documentation, and that
- * the name of M.I.T. not be used in advertising or publicity pertaining
- * to distribution of the software without specific, written prior
- * permission. M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is" without express
- * or implied warranty.
- */
-
-#if !defined(P)
-#ifdef __STDC__
-#define P(x) x
-#else
-#define P(x) ()
-#endif
-#endif
-
-#if defined(AUTHENTICATION)
-Authenticator *findauthenticator P((int, int));
-
-void auth_init P((char *, int));
-int auth_cmd P((int, char **));
-void auth_request P((void));
-void auth_send P((unsigned char *, int));
-void auth_send_retry P((void));
-void auth_is P((unsigned char *, int));
-void auth_reply P((unsigned char *, int));
-void auth_finished P((Authenticator *, int));
-int auth_wait P((char *));
-void auth_disable_name P((char *));
-void auth_gen_printsub P((unsigned char *, int, unsigned char *, int));
-
-#ifdef KRB4
-int kerberos4_init P((Authenticator *, int));
-int kerberos4_send P((Authenticator *));
-void kerberos4_is P((Authenticator *, unsigned char *, int));
-void kerberos4_reply P((Authenticator *, unsigned char *, int));
-int kerberos4_status P((Authenticator *, char *, int));
-void kerberos4_printsub P((unsigned char *, int, unsigned char *, int));
-#endif
-
-#ifdef KRB5
-int kerberos5_init P((Authenticator *, int));
-int kerberos5_send P((Authenticator *));
-void kerberos5_is P((Authenticator *, unsigned char *, int));
-void kerberos5_reply P((Authenticator *, unsigned char *, int));
-int kerberos5_status P((Authenticator *, char *, int));
-void kerberos5_printsub P((unsigned char *, int, unsigned char *, int));
-#endif
-#endif
diff --git a/secure/lib/libtelnet/auth.c b/secure/lib/libtelnet/auth.c
deleted file mode 100644
index 64f5ce9e1c7a..000000000000
--- a/secure/lib/libtelnet/auth.c
+++ /dev/null
@@ -1,671 +0,0 @@
-/*-
- * Copyright (c) 1991, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)auth.c 8.3 (Berkeley) 5/30/95";
-#endif /* not lint */
-
-/*
- * Copyright (C) 1990 by the Massachusetts Institute of Technology
- *
- * Export of this software from the United States of America is assumed
- * to require a specific license from the United States Government.
- * It is the responsibility of any person or organization contemplating
- * export to obtain such a license before exporting.
- *
- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
- * distribute this software and its documentation for any purpose and
- * without fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright notice and
- * this permission notice appear in supporting documentation, and that
- * the name of M.I.T. not be used in advertising or publicity pertaining
- * to distribution of the software without specific, written prior
- * permission. M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is" without express
- * or implied warranty.
- */
-
-
-#if defined(AUTHENTICATION)
-#include <stdio.h>
-#include <sys/types.h>
-#include <signal.h>
-#define AUTH_NAMES
-#include <arpa/telnet.h>
-#ifdef __STDC__
-#include <stdlib.h>
-#endif
-#ifdef NO_STRING_H
-#include <strings.h>
-#else
-#include <string.h>
-#endif
-
-#include "encrypt.h"
-#include "auth.h"
-#include "misc-proto.h"
-#include "auth-proto.h"
-
-#define typemask(x) (1<<((x)-1))
-
-#ifdef KRB4_ENCPWD
-extern krb4encpwd_init();
-extern krb4encpwd_send();
-extern krb4encpwd_is();
-extern krb4encpwd_reply();
-extern krb4encpwd_status();
-extern krb4encpwd_printsub();
-#endif
-
-#ifdef RSA_ENCPWD
-extern rsaencpwd_init();
-extern rsaencpwd_send();
-extern rsaencpwd_is();
-extern rsaencpwd_reply();
-extern rsaencpwd_status();
-extern rsaencpwd_printsub();
-#endif
-
-int auth_debug_mode = 0;
-static char *Name = "Noname";
-static int Server = 0;
-static Authenticator *authenticated = 0;
-static int authenticating = 0;
-static int validuser = 0;
-static unsigned char _auth_send_data[256];
-static unsigned char *auth_send_data;
-static int auth_send_cnt = 0;
-
-/*
- * Authentication types supported. Plese note that these are stored
- * in priority order, i.e. try the first one first.
- */
-Authenticator authenticators[] = {
-#ifdef SPX
- { AUTHTYPE_SPX, AUTH_WHO_CLIENT|AUTH_HOW_MUTUAL,
- spx_init,
- spx_send,
- spx_is,
- spx_reply,
- spx_status,
- spx_printsub },
- { AUTHTYPE_SPX, AUTH_WHO_CLIENT|AUTH_HOW_ONE_WAY,
- spx_init,
- spx_send,
- spx_is,
- spx_reply,
- spx_status,
- spx_printsub },
-#endif
-#ifdef KRB5
-# ifdef ENCRYPTION
- { AUTHTYPE_KERBEROS_V5, AUTH_WHO_CLIENT|AUTH_HOW_MUTUAL,
- kerberos5_init,
- kerberos5_send,
- kerberos5_is,
- kerberos5_reply,
- kerberos5_status,
- kerberos5_printsub },
-# endif /* ENCRYPTION */
- { AUTHTYPE_KERBEROS_V5, AUTH_WHO_CLIENT|AUTH_HOW_ONE_WAY,
- kerberos5_init,
- kerberos5_send,
- kerberos5_is,
- kerberos5_reply,
- kerberos5_status,
- kerberos5_printsub },
-#endif
-#ifdef KRB4
-# ifdef ENCRYPTION
- { AUTHTYPE_KERBEROS_V4, AUTH_WHO_CLIENT|AUTH_HOW_MUTUAL,
- kerberos4_init,
- kerberos4_send,
- kerberos4_is,
- kerberos4_reply,
- kerberos4_status,
- kerberos4_printsub },
-# endif /* ENCRYPTION */
- { AUTHTYPE_KERBEROS_V4, AUTH_WHO_CLIENT|AUTH_HOW_ONE_WAY,
- kerberos4_init,
- kerberos4_send,
- kerberos4_is,
- kerberos4_reply,
- kerberos4_status,
- kerberos4_printsub },
-#endif
-#ifdef KRB4_ENCPWD
- { AUTHTYPE_KRB4_ENCPWD, AUTH_WHO_CLIENT|AUTH_HOW_MUTUAL,
- krb4encpwd_init,
- krb4encpwd_send,
- krb4encpwd_is,
- krb4encpwd_reply,
- krb4encpwd_status,
- krb4encpwd_printsub },
-#endif
-#ifdef RSA_ENCPWD
- { AUTHTYPE_RSA_ENCPWD, AUTH_WHO_CLIENT|AUTH_HOW_ONE_WAY,
- rsaencpwd_init,
- rsaencpwd_send,
- rsaencpwd_is,
- rsaencpwd_reply,
- rsaencpwd_status,
- rsaencpwd_printsub },
-#endif
- { 0, },
-};
-
-static Authenticator NoAuth = { 0 };
-
-static int i_support = 0;
-static int i_wont_support = 0;
-
- Authenticator *
-findauthenticator(type, way)
- int type;
- int way;
-{
- Authenticator *ap = authenticators;
-
- while (ap->type && (ap->type != type || ap->way != way))
- ++ap;
- return(ap->type ? ap : 0);
-}
-
- void
-auth_init(name, server)
- char *name;
- int server;
-{
- Authenticator *ap = authenticators;
-
- Server = server;
- Name = name;
-
- i_support = 0;
- authenticated = 0;
- authenticating = 0;
- while (ap->type) {
- if (!ap->init || (*ap->init)(ap, server)) {
- i_support |= typemask(ap->type);
- if (auth_debug_mode)
- printf(">>>%s: I support auth type %d %d\r\n",
- Name,
- ap->type, ap->way);
- }
- else if (auth_debug_mode)
- printf(">>>%s: Init failed: auth type %d %d\r\n",
- Name, ap->type, ap->way);
- ++ap;
- }
-}
-
- void
-auth_disable_name(name)
- char *name;
-{
- int x;
- for (x = 0; x < AUTHTYPE_CNT; ++x) {
- if (!strcasecmp(name, AUTHTYPE_NAME(x))) {
- i_wont_support |= typemask(x);
- break;
- }
- }
-}
-
- int
-getauthmask(type, maskp)
- char *type;
- int *maskp;
-{
- register int x;
-
- if (!strcasecmp(type, AUTHTYPE_NAME(0))) {
- *maskp = -1;
- return(1);
- }
-
- for (x = 1; x < AUTHTYPE_CNT; ++x) {
- if (!strcasecmp(type, AUTHTYPE_NAME(x))) {
- *maskp = typemask(x);
- return(1);
- }
- }
- return(0);
-}
-
- int
-auth_enable(type)
- char * type;
-{
- return(auth_onoff(type, 1));
-}
-
- int
-auth_disable(type)
- char * type;
-{
- return(auth_onoff(type, 0));
-}
-
- int
-auth_onoff(type, on)
- char *type;
- int on;
-{
- int i, mask = -1;
- Authenticator *ap;
-
- if (!strcasecmp(type, "?") || !strcasecmp(type, "help")) {
- printf("auth %s 'type'\n", on ? "enable" : "disable");
- printf("Where 'type' is one of:\n");
- printf("\t%s\n", AUTHTYPE_NAME(0));
- mask = 0;
- for (ap = authenticators; ap->type; ap++) {
- if ((mask & (i = typemask(ap->type))) != 0)
- continue;
- mask |= i;
- printf("\t%s\n", AUTHTYPE_NAME(ap->type));
- }
- return(0);
- }
-
- if (!getauthmask(type, &mask)) {
- printf("%s: invalid authentication type\n", type);
- return(0);
- }
- if (on)
- i_wont_support &= ~mask;
- else
- i_wont_support |= mask;
- return(1);
-}
-
- int
-auth_togdebug(on)
- int on;
-{
- if (on < 0)
- auth_debug_mode ^= 1;
- else
- auth_debug_mode = on;
- printf("auth debugging %s\n", auth_debug_mode ? "enabled" : "disabled");
- return(1);
-}
-
- int
-auth_status()
-{
- Authenticator *ap;
- int i, mask;
-
- if (i_wont_support == -1)
- printf("Authentication disabled\n");
- else
- printf("Authentication enabled\n");
-
- mask = 0;
- for (ap = authenticators; ap->type; ap++) {
- if ((mask & (i = typemask(ap->type))) != 0)
- continue;
- mask |= i;
- printf("%s: %s\n", AUTHTYPE_NAME(ap->type),
- (i_wont_support & typemask(ap->type)) ?
- "disabled" : "enabled");
- }
- return(1);
-}
-
-/*
- * This routine is called by the server to start authentication
- * negotiation.
- */
- void
-auth_request()
-{
- static unsigned char str_request[64] = { IAC, SB,
- TELOPT_AUTHENTICATION,
- TELQUAL_SEND, };
- Authenticator *ap = authenticators;
- unsigned char *e = str_request + 4;
-
- if (!authenticating) {
- authenticating = 1;
- while (ap->type) {
- if (i_support & ~i_wont_support & typemask(ap->type)) {
- if (auth_debug_mode) {
- printf(">>>%s: Sending type %d %d\r\n",
- Name, ap->type, ap->way);
- }
- *e++ = ap->type;
- *e++ = ap->way;
- }
- ++ap;
- }
- *e++ = IAC;
- *e++ = SE;
- net_write(str_request, e - str_request);
- printsub('>', &str_request[2], e - str_request - 2);
- }
-}
-
-/*
- * This is called when an AUTH SEND is received.
- * It should never arrive on the server side (as only the server can
- * send an AUTH SEND).
- * You should probably respond to it if you can...
- *
- * If you want to respond to the types out of order (i.e. even
- * if he sends LOGIN KERBEROS and you support both, you respond
- * with KERBEROS instead of LOGIN (which is against what the
- * protocol says)) you will have to hack this code...
- */
- void
-auth_send(data, cnt)
- unsigned char *data;
- int cnt;
-{
- Authenticator *ap;
- static unsigned char str_none[] = { IAC, SB, TELOPT_AUTHENTICATION,
- TELQUAL_IS, AUTHTYPE_NULL, 0,
- IAC, SE };
- if (Server) {
- if (auth_debug_mode) {
- printf(">>>%s: auth_send called!\r\n", Name);
- }
- return;
- }
-
- if (auth_debug_mode) {
- printf(">>>%s: auth_send got:", Name);
- printd(data, cnt); printf("\r\n");
- }
-
- /*
- * Save the data, if it is new, so that we can continue looking
- * at it if the authorization we try doesn't work
- */
- if (data < _auth_send_data ||
- data > _auth_send_data + sizeof(_auth_send_data)) {
- auth_send_cnt = cnt > sizeof(_auth_send_data)
- ? sizeof(_auth_send_data)
- : cnt;
- memmove((void *)_auth_send_data, (void *)data, auth_send_cnt);
- auth_send_data = _auth_send_data;
- } else {
- /*
- * This is probably a no-op, but we just make sure
- */
- auth_send_data = data;
- auth_send_cnt = cnt;
- }
- while ((auth_send_cnt -= 2) >= 0) {
- if (auth_debug_mode)
- printf(">>>%s: He supports %d\r\n",
- Name, *auth_send_data);
- if ((i_support & ~i_wont_support) & typemask(*auth_send_data)) {
- ap = findauthenticator(auth_send_data[0],
- auth_send_data[1]);
- if (ap && ap->send) {
- if (auth_debug_mode)
- printf(">>>%s: Trying %d %d\r\n",
- Name, auth_send_data[0],
- auth_send_data[1]);
- if ((*ap->send)(ap)) {
- /*
- * Okay, we found one we like
- * and did it.
- * we can go home now.
- */
- if (auth_debug_mode)
- printf(">>>%s: Using type %d\r\n",
- Name, *auth_send_data);
- auth_send_data += 2;
- return;
- }
- }
- /* else
- * just continue on and look for the
- * next one if we didn't do anything.
- */
- }
- auth_send_data += 2;
- }
- net_write(str_none, sizeof(str_none));
- printsub('>', &str_none[2], sizeof(str_none) - 2);
- if (auth_debug_mode)
- printf(">>>%s: Sent failure message\r\n", Name);
- auth_finished(0, AUTH_REJECT);
-#ifdef KANNAN
- /*
- * We requested strong authentication, however no mechanisms worked.
- * Therefore, exit on client end.
- */
- printf("Unable to securely authenticate user ... exit\n");
- exit(0);
-#endif /* KANNAN */
-}
-
- void
-auth_send_retry()
-{
- /*
- * if auth_send_cnt <= 0 then auth_send will end up rejecting
- * the authentication and informing the other side of this.
- */
- auth_send(auth_send_data, auth_send_cnt);
-}
-
- void
-auth_is(data, cnt)
- unsigned char *data;
- int cnt;
-{
- Authenticator *ap;
-
- if (cnt < 2)
- return;
-
- if (data[0] == AUTHTYPE_NULL) {
- auth_finished(0, AUTH_REJECT);
- return;
- }
-
- if (ap = findauthenticator(data[0], data[1])) {
- if (ap->is)
- (*ap->is)(ap, data+2, cnt-2);
- } else if (auth_debug_mode)
- printf(">>>%s: Invalid authentication in IS: %d\r\n",
- Name, *data);
-}
-
- void
-auth_reply(data, cnt)
- unsigned char *data;
- int cnt;
-{
- Authenticator *ap;
-
- if (cnt < 2)
- return;
-
- if (ap = findauthenticator(data[0], data[1])) {
- if (ap->reply)
- (*ap->reply)(ap, data+2, cnt-2);
- } else if (auth_debug_mode)
- printf(">>>%s: Invalid authentication in SEND: %d\r\n",
- Name, *data);
-}
-
- void
-auth_name(data, cnt)
- unsigned char *data;
- int cnt;
-{
- Authenticator *ap;
- unsigned char savename[256];
-
- if (cnt < 1) {
- if (auth_debug_mode)
- printf(">>>%s: Empty name in NAME\r\n", Name);
- return;
- }
- if (cnt > sizeof(savename) - 1) {
- if (auth_debug_mode)
- printf(">>>%s: Name in NAME (%d) exceeds %d length\r\n",
- Name, cnt, sizeof(savename)-1);
- return;
- }
- memmove((void *)savename, (void *)data, cnt);
- savename[cnt] = '\0'; /* Null terminate */
- if (auth_debug_mode)
- printf(">>>%s: Got NAME [%s]\r\n", Name, savename);
- auth_encrypt_user(savename);
-}
-
- int
-auth_sendname(cp, len)
- unsigned char *cp;
- int len;
-{
- static unsigned char str_request[256+6]
- = { IAC, SB, TELOPT_AUTHENTICATION, TELQUAL_NAME, };
- register unsigned char *e = str_request + 4;
- register unsigned char *ee = &str_request[sizeof(str_request)-2];
-
- while (--len >= 0) {
- if ((*e++ = *cp++) == IAC)
- *e++ = IAC;
- if (e >= ee)
- return(0);
- }
- *e++ = IAC;
- *e++ = SE;
- net_write(str_request, e - str_request);
- printsub('>', &str_request[2], e - &str_request[2]);
- return(1);
-}
-
- void
-auth_finished(ap, result)
- Authenticator *ap;
- int result;
-{
- if (!(authenticated = ap))
- authenticated = &NoAuth;
- validuser = result;
-}
-
- /* ARGSUSED */
- static void
-auth_intr(sig)
- int sig;
-{
- auth_finished(0, AUTH_REJECT);
-}
-
- int
-auth_wait(name)
- char *name;
-{
- if (auth_debug_mode)
- printf(">>>%s: in auth_wait.\r\n", Name);
-
- if (Server && !authenticating)
- return(0);
-
- (void) signal(SIGALRM, auth_intr);
- alarm(30);
- while (!authenticated)
- if (telnet_spin())
- break;
- alarm(0);
- (void) signal(SIGALRM, SIG_DFL);
-
- /*
- * Now check to see if the user is valid or not
- */
- if (!authenticated || authenticated == &NoAuth)
- return(AUTH_REJECT);
-
- if (validuser == AUTH_VALID)
- validuser = AUTH_USER;
-
- if (authenticated->status)
- validuser = (*authenticated->status)(authenticated,
- name, validuser);
- return(validuser);
-}
-
- void
-auth_debug(mode)
- int mode;
-{
- auth_debug_mode = mode;
-}
-
- void
-auth_printsub(data, cnt, buf, buflen)
- unsigned char *data, *buf;
- int cnt, buflen;
-{
- Authenticator *ap;
-
- if ((ap = findauthenticator(data[1], data[2])) && ap->printsub)
- (*ap->printsub)(data, cnt, buf, buflen);
- else
- auth_gen_printsub(data, cnt, buf, buflen);
-}
-
- void
-auth_gen_printsub(data, cnt, buf, buflen)
- unsigned char *data, *buf;
- int cnt, buflen;
-{
- register unsigned char *cp;
- unsigned char tbuf[16];
-
- cnt -= 3;
- data += 3;
- buf[buflen-1] = '\0';
- buf[buflen-2] = '*';
- buflen -= 2;
- for (; cnt > 0; cnt--, data++) {
- sprintf((char *)tbuf, " %d", *data);
- for (cp = tbuf; *cp && buflen > 0; --buflen)
- *buf++ = *cp++;
- if (buflen <= 0)
- return;
- }
- *buf = '\0';
-}
-#endif
diff --git a/secure/lib/libtelnet/auth.h b/secure/lib/libtelnet/auth.h
deleted file mode 100644
index 615e8a07b894..000000000000
--- a/secure/lib/libtelnet/auth.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/*-
- * Copyright (c) 1991, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)auth.h 8.1 (Berkeley) 6/4/93
- */
-
-/*
- * Copyright (C) 1990 by the Massachusetts Institute of Technology
- *
- * Export of this software from the United States of America is assumed
- * to require a specific license from the United States Government.
- * It is the responsibility of any person or organization contemplating
- * export to obtain such a license before exporting.
- *
- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
- * distribute this software and its documentation for any purpose and
- * without fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright notice and
- * this permission notice appear in supporting documentation, and that
- * the name of M.I.T. not be used in advertising or publicity pertaining
- * to distribution of the software without specific, written prior
- * permission. M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is" without express
- * or implied warranty.
- */
-
-#ifndef __AUTH__
-#define __AUTH__
-
-#define AUTH_REJECT 0 /* Rejected */
-#define AUTH_UNKNOWN 1 /* We don't know who he is, but he's okay */
-#define AUTH_OTHER 2 /* We know him, but not his name */
-#define AUTH_USER 3 /* We know he name */
-#define AUTH_VALID 4 /* We know him, and he needs no password */
-
-#if !defined(P)
-#ifdef __STDC__
-#define P(x) x
-#else
-#define P(x) ()
-#endif
-#endif
-
-typedef struct XauthP {
- int type;
- int way;
- int (*init) P((struct XauthP *, int));
- int (*send) P((struct XauthP *));
- void (*is) P((struct XauthP *, unsigned char *, int));
- void (*reply) P((struct XauthP *, unsigned char *, int));
- int (*status) P((struct XauthP *, char *, int));
- void (*printsub) P((unsigned char *, int, unsigned char *, int));
-} Authenticator;
-
-#include "auth-proto.h"
-
-extern auth_debug_mode;
-#endif
diff --git a/secure/lib/libtelnet/enc-proto.h b/secure/lib/libtelnet/enc-proto.h
deleted file mode 100644
index 0c0d89cbf83d..000000000000
--- a/secure/lib/libtelnet/enc-proto.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/*-
- * Copyright (c) 1991, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)enc-proto.h 8.1 (Berkeley) 6/4/93
- */
-
-/*
- * Copyright (C) 1990 by the Massachusetts Institute of Technology
- *
- * Export of this software from the United States of America is assumed
- * to require a specific license from the United States Government.
- * It is the responsibility of any person or organization contemplating
- * export to obtain such a license before exporting.
- *
- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
- * distribute this software and its documentation for any purpose and
- * without fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright notice and
- * this permission notice appear in supporting documentation, and that
- * the name of M.I.T. not be used in advertising or publicity pertaining
- * to distribution of the software without specific, written prior
- * permission. M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is" without express
- * or implied warranty.
- */
-#if !defined(P)
-#ifdef __STDC__
-#define P(x) x
-#else
-#define P(x) ()
-#endif
-#endif
-
-#ifdef ENCRYPTION
-void encrypt_init P((char *, int));
-Encryptions *findencryption P((int));
-void encrypt_send_supprt P((void));
-void encrypt_auto P((int));
-void decrypt_auto P((int));
-void encrypt_is P((unsigned char *, int));
-void encrypt_reply P((unsigned char *, int));
-void encrypt_start_input P((int));
-void encrypt_session_key P((Session_Key *, int));
-void encrypt_end_input P((void));
-void encrypt_start_output P((int));
-void encrypt_end_output P((void));
-void encrypt_send_request_start P((void));
-void encrypt_send_request_end P((void));
-void encrypt_send_end P((void));
-void encrypt_wait P((void));
-void encrypt_send_support P((void));
-void encrypt_send_keyid P((int, unsigned char *, int, int));
-int net_write P((unsigned char *, int));
-
-#ifdef TELENTD
-void encrypt_wait P((void));
-#else
-int encrypt_cmd P((int, char **));
-void encrypt_display P((void));
-#endif
-
-void krbdes_encrypt P((unsigned char *, int));
-int krbdes_decrypt P((int));
-int krbdes_is P((unsigned char *, int));
-int krbdes_reply P((unsigned char *, int));
-void krbdes_init P((int));
-int krbdes_start P((int, int));
-void krbdes_session P((Session_Key *, int));
-void krbdes_printsub P((unsigned char *, int, unsigned char *, int));
-
-void cfb64_encrypt P((unsigned char *, int));
-int cfb64_decrypt P((int));
-void cfb64_init P((int));
-int cfb64_start P((int, int));
-int cfb64_is P((unsigned char *, int));
-int cfb64_reply P((unsigned char *, int));
-void cfb64_session P((Session_Key *, int));
-int cfb64_keyid P((int, unsigned char *, int *));
-void cfb64_printsub P((unsigned char *, int, unsigned char *, int));
-
-void ofb64_encrypt P((unsigned char *, int));
-int ofb64_decrypt P((int));
-void ofb64_init P((int));
-int ofb64_start P((int, int));
-int ofb64_is P((unsigned char *, int));
-int ofb64_reply P((unsigned char *, int));
-void ofb64_session P((Session_Key *, int));
-int ofb64_keyid P((int, unsigned char *, int *));
-void ofb64_printsub P((unsigned char *, int, unsigned char *, int));
-
-#endif /* ENCRYPTION */
diff --git a/secure/lib/libtelnet/enc_des.c b/secure/lib/libtelnet/enc_des.c
deleted file mode 100644
index d6886fd717d4..000000000000
--- a/secure/lib/libtelnet/enc_des.c
+++ /dev/null
@@ -1,724 +0,0 @@
-/*-
- * Copyright (c) 1991, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)enc_des.c 8.3 (Berkeley) 5/30/95";
-#endif /* not lint */
-
-#ifdef ENCRYPTION
-# ifdef AUTHENTICATION
-# ifdef DES_ENCRYPTION
-#include <arpa/telnet.h>
-#include <stdio.h>
-#ifdef __STDC__
-#include <stdlib.h>
-#endif
-
-#include "encrypt.h"
-#include "key-proto.h"
-#include "misc-proto.h"
-
-extern encrypt_debug_mode;
-
-#define CFB 0
-#define OFB 1
-
-#define NO_SEND_IV 1
-#define NO_RECV_IV 2
-#define NO_KEYID 4
-#define IN_PROGRESS (NO_SEND_IV|NO_RECV_IV|NO_KEYID)
-#define SUCCESS 0
-#define FAILED -1
-
-
-struct fb {
- Block krbdes_key;
- Schedule krbdes_sched;
- Block temp_feed;
- unsigned char fb_feed[64];
- int need_start;
- int state[2];
- int keyid[2];
- int once;
- struct stinfo {
- Block str_output;
- Block str_feed;
- Block str_iv;
- Block str_ikey;
- Schedule str_sched;
- int str_index;
- int str_flagshift;
- } streams[2];
-};
-
-static struct fb fb[2];
-
-struct keyidlist {
- char *keyid;
- int keyidlen;
- char *key;
- int keylen;
- int flags;
-} keyidlist [] = {
- { "\0", 1, 0, 0, 0 }, /* default key of zero */
- { 0, 0, 0, 0, 0 }
-};
-
-#define KEYFLAG_MASK 03
-
-#define KEYFLAG_NOINIT 00
-#define KEYFLAG_INIT 01
-#define KEYFLAG_OK 02
-#define KEYFLAG_BAD 03
-
-#define KEYFLAG_SHIFT 2
-
-#define SHIFT_VAL(a,b) (KEYFLAG_SHIFT*((a)+((b)*2)))
-
-#define FB64_IV 1
-#define FB64_IV_OK 2
-#define FB64_IV_BAD 3
-
-
-void fb64_stream_iv P((Block, struct stinfo *));
-void fb64_init P((struct fb *));
-static int fb64_start P((struct fb *, int, int));
-int fb64_is P((unsigned char *, int, struct fb *));
-int fb64_reply P((unsigned char *, int, struct fb *));
-static void fb64_session P((Session_Key *, int, struct fb *));
-void fb64_stream_key P((Block, struct stinfo *));
-int fb64_keyid P((int, unsigned char *, int *, struct fb *));
-
- void
-cfb64_init(server)
- int server;
-{
- fb64_init(&fb[CFB]);
- fb[CFB].fb_feed[4] = ENCTYPE_DES_CFB64;
- fb[CFB].streams[0].str_flagshift = SHIFT_VAL(0, CFB);
- fb[CFB].streams[1].str_flagshift = SHIFT_VAL(1, CFB);
-}
-
- void
-ofb64_init(server)
- int server;
-{
- fb64_init(&fb[OFB]);
- fb[OFB].fb_feed[4] = ENCTYPE_DES_OFB64;
- fb[CFB].streams[0].str_flagshift = SHIFT_VAL(0, OFB);
- fb[CFB].streams[1].str_flagshift = SHIFT_VAL(1, OFB);
-}
-
- void
-fb64_init(fbp)
- register struct fb *fbp;
-{
- memset((void *)fbp, 0, sizeof(*fbp));
- fbp->state[0] = fbp->state[1] = FAILED;
- fbp->fb_feed[0] = IAC;
- fbp->fb_feed[1] = SB;
- fbp->fb_feed[2] = TELOPT_ENCRYPT;
- fbp->fb_feed[3] = ENCRYPT_IS;
-}
-
-/*
- * Returns:
- * -1: some error. Negotiation is done, encryption not ready.
- * 0: Successful, initial negotiation all done.
- * 1: successful, negotiation not done yet.
- * 2: Not yet. Other things (like getting the key from
- * Kerberos) have to happen before we can continue.
- */
- int
-cfb64_start(dir, server)
- int dir;
- int server;
-{
- return(fb64_start(&fb[CFB], dir, server));
-}
- int
-ofb64_start(dir, server)
- int dir;
- int server;
-{
- return(fb64_start(&fb[OFB], dir, server));
-}
-
- static int
-fb64_start(fbp, dir, server)
- struct fb *fbp;
- int dir;
- int server;
-{
- Block b;
- int x;
- unsigned char *p;
- register int state;
-
- switch (dir) {
- case DIR_DECRYPT:
- /*
- * This is simply a request to have the other side
- * start output (our input). He will negotiate an
- * IV so we need not look for it.
- */
- state = fbp->state[dir-1];
- if (state == FAILED)
- state = IN_PROGRESS;
- break;
-
- case DIR_ENCRYPT:
- state = fbp->state[dir-1];
- if (state == FAILED)
- state = IN_PROGRESS;
- else if ((state & NO_SEND_IV) == 0)
- break;
-
- if (!VALIDKEY(fbp->krbdes_key)) {
- fbp->need_start = 1;
- break;
- }
- state &= ~NO_SEND_IV;
- state |= NO_RECV_IV;
- if (encrypt_debug_mode)
- printf("Creating new feed\r\n");
- /*
- * Create a random feed and send it over.
- */
- des_new_random_key(fbp->temp_feed);
- des_ecb_encrypt(fbp->temp_feed, fbp->temp_feed,
- fbp->krbdes_sched, 1);
- p = fbp->fb_feed + 3;
- *p++ = ENCRYPT_IS;
- p++;
- *p++ = FB64_IV;
- for (x = 0; x < sizeof(Block); ++x) {
- if ((*p++ = fbp->temp_feed[x]) == IAC)
- *p++ = IAC;
- }
- *p++ = IAC;
- *p++ = SE;
- printsub('>', &fbp->fb_feed[2], p - &fbp->fb_feed[2]);
- net_write(fbp->fb_feed, p - fbp->fb_feed);
- break;
- default:
- return(FAILED);
- }
- return(fbp->state[dir-1] = state);
-}
-
-/*
- * Returns:
- * -1: some error. Negotiation is done, encryption not ready.
- * 0: Successful, initial negotiation all done.
- * 1: successful, negotiation not done yet.
- */
- int
-cfb64_is(data, cnt)
- unsigned char *data;
- int cnt;
-{
- return(fb64_is(data, cnt, &fb[CFB]));
-}
- int
-ofb64_is(data, cnt)
- unsigned char *data;
- int cnt;
-{
- return(fb64_is(data, cnt, &fb[OFB]));
-}
-
- int
-fb64_is(data, cnt, fbp)
- unsigned char *data;
- int cnt;
- struct fb *fbp;
-{
- int x;
- unsigned char *p;
- Block b;
- register int state = fbp->state[DIR_DECRYPT-1];
-
- if (cnt-- < 1)
- goto failure;
-
- switch (*data++) {
- case FB64_IV:
- if (cnt != sizeof(Block)) {
- if (encrypt_debug_mode)
- printf("CFB64: initial vector failed on size\r\n");
- state = FAILED;
- goto failure;
- }
-
- if (encrypt_debug_mode)
- printf("CFB64: initial vector received\r\n");
-
- if (encrypt_debug_mode)
- printf("Initializing Decrypt stream\r\n");
-
- fb64_stream_iv((void *)data, &fbp->streams[DIR_DECRYPT-1]);
-
- p = fbp->fb_feed + 3;
- *p++ = ENCRYPT_REPLY;
- p++;
- *p++ = FB64_IV_OK;
- *p++ = IAC;
- *p++ = SE;
- printsub('>', &fbp->fb_feed[2], p - &fbp->fb_feed[2]);
- net_write(fbp->fb_feed, p - fbp->fb_feed);
-
- state = fbp->state[DIR_DECRYPT-1] = IN_PROGRESS;
- break;
-
- default:
- if (encrypt_debug_mode) {
- printf("Unknown option type: %d\r\n", *(data-1));
- printd(data, cnt);
- printf("\r\n");
- }
- /* FALL THROUGH */
- failure:
- /*
- * We failed. Send an FB64_IV_BAD option
- * to the other side so it will know that
- * things failed.
- */
- p = fbp->fb_feed + 3;
- *p++ = ENCRYPT_REPLY;
- p++;
- *p++ = FB64_IV_BAD;
- *p++ = IAC;
- *p++ = SE;
- printsub('>', &fbp->fb_feed[2], p - &fbp->fb_feed[2]);
- net_write(fbp->fb_feed, p - fbp->fb_feed);
-
- break;
- }
- return(fbp->state[DIR_DECRYPT-1] = state);
-}
-
-/*
- * Returns:
- * -1: some error. Negotiation is done, encryption not ready.
- * 0: Successful, initial negotiation all done.
- * 1: successful, negotiation not done yet.
- */
- int
-cfb64_reply(data, cnt)
- unsigned char *data;
- int cnt;
-{
- return(fb64_reply(data, cnt, &fb[CFB]));
-}
- int
-ofb64_reply(data, cnt)
- unsigned char *data;
- int cnt;
-{
- return(fb64_reply(data, cnt, &fb[OFB]));
-}
-
-
- int
-fb64_reply(data, cnt, fbp)
- unsigned char *data;
- int cnt;
- struct fb *fbp;
-{
- int x;
- unsigned char *p;
- Block b;
- register int state = fbp->state[DIR_ENCRYPT-1];
-
- if (cnt-- < 1)
- goto failure;
-
- switch (*data++) {
- case FB64_IV_OK:
- fb64_stream_iv(fbp->temp_feed, &fbp->streams[DIR_ENCRYPT-1]);
- if (state == FAILED)
- state = IN_PROGRESS;
- state &= ~NO_RECV_IV;
- encrypt_send_keyid(DIR_ENCRYPT, (unsigned char *)"\0", 1, 1);
- break;
-
- case FB64_IV_BAD:
- memset(fbp->temp_feed, 0, sizeof(Block));
- fb64_stream_iv(fbp->temp_feed, &fbp->streams[DIR_ENCRYPT-1]);
- state = FAILED;
- break;
-
- default:
- if (encrypt_debug_mode) {
- printf("Unknown option type: %d\r\n", data[-1]);
- printd(data, cnt);
- printf("\r\n");
- }
- /* FALL THROUGH */
- failure:
- state = FAILED;
- break;
- }
- return(fbp->state[DIR_ENCRYPT-1] = state);
-}
-
- void
-cfb64_session(key, server)
- Session_Key *key;
- int server;
-{
- fb64_session(key, server, &fb[CFB]);
-}
-
- void
-ofb64_session(key, server)
- Session_Key *key;
- int server;
-{
- fb64_session(key, server, &fb[OFB]);
-}
-
- static void
-fb64_session(key, server, fbp)
- Session_Key *key;
- int server;
- struct fb *fbp;
-{
-
- if (!key || key->type != SK_DES) {
- if (encrypt_debug_mode)
- printf("Can't set krbdes's session key (%d != %d)\r\n",
- key ? key->type : -1, SK_DES);
- return;
- }
- memmove((void *)fbp->krbdes_key, (void *)key->data, sizeof(Block));
-
- fb64_stream_key(fbp->krbdes_key, &fbp->streams[DIR_ENCRYPT-1]);
- fb64_stream_key(fbp->krbdes_key, &fbp->streams[DIR_DECRYPT-1]);
-
- if (fbp->once == 0) {
- des_set_random_generator_seed(fbp->krbdes_key);
- fbp->once = 1;
- }
- des_key_sched(fbp->krbdes_key, fbp->krbdes_sched);
- /*
- * Now look to see if krbdes_start() was was waiting for
- * the key to show up. If so, go ahead an call it now
- * that we have the key.
- */
- if (fbp->need_start) {
- fbp->need_start = 0;
- fb64_start(fbp, DIR_ENCRYPT, server);
- }
-}
-
-/*
- * We only accept a keyid of 0. If we get a keyid of
- * 0, then mark the state as SUCCESS.
- */
- int
-cfb64_keyid(dir, kp, lenp)
- int dir, *lenp;
- unsigned char *kp;
-{
- return(fb64_keyid(dir, kp, lenp, &fb[CFB]));
-}
-
- int
-ofb64_keyid(dir, kp, lenp)
- int dir, *lenp;
- unsigned char *kp;
-{
- return(fb64_keyid(dir, kp, lenp, &fb[OFB]));
-}
-
- int
-fb64_keyid(dir, kp, lenp, fbp)
- int dir, *lenp;
- unsigned char *kp;
- struct fb *fbp;
-{
- register int state = fbp->state[dir-1];
-
- if (*lenp != 1 || (*kp != '\0')) {
- *lenp = 0;
- return(state);
- }
-
- if (state == FAILED)
- state = IN_PROGRESS;
-
- state &= ~NO_KEYID;
-
- return(fbp->state[dir-1] = state);
-}
-
- void
-fb64_printsub(data, cnt, buf, buflen, type)
- unsigned char *data, *buf, *type;
- int cnt, buflen;
-{
- char lbuf[32];
- register int i;
- char *cp;
-
- buf[buflen-1] = '\0'; /* make sure it's NULL terminated */
- buflen -= 1;
-
- switch(data[2]) {
- case FB64_IV:
- sprintf(lbuf, "%s_IV", type);
- cp = lbuf;
- goto common;
-
- case FB64_IV_OK:
- sprintf(lbuf, "%s_IV_OK", type);
- cp = lbuf;
- goto common;
-
- case FB64_IV_BAD:
- sprintf(lbuf, "%s_IV_BAD", type);
- cp = lbuf;
- goto common;
-
- default:
- sprintf(lbuf, " %d (unknown)", data[2]);
- cp = lbuf;
- common:
- for (; (buflen > 0) && (*buf = *cp++); buf++)
- buflen--;
- for (i = 3; i < cnt; i++) {
- sprintf(lbuf, " %d", data[i]);
- for (cp = lbuf; (buflen > 0) && (*buf = *cp++); buf++)
- buflen--;
- }
- break;
- }
-}
-
- void
-cfb64_printsub(data, cnt, buf, buflen)
- unsigned char *data, *buf;
- int cnt, buflen;
-{
- fb64_printsub(data, cnt, buf, buflen, "CFB64");
-}
-
- void
-ofb64_printsub(data, cnt, buf, buflen)
- unsigned char *data, *buf;
- int cnt, buflen;
-{
- fb64_printsub(data, cnt, buf, buflen, "OFB64");
-}
-
- void
-fb64_stream_iv(seed, stp)
- Block seed;
- register struct stinfo *stp;
-{
-
- memmove((void *)stp->str_iv, (void *)seed, sizeof(Block));
- memmove((void *)stp->str_output, (void *)seed, sizeof(Block));
-
- des_key_sched(stp->str_ikey, stp->str_sched);
-
- stp->str_index = sizeof(Block);
-}
-
- void
-fb64_stream_key(key, stp)
- Block key;
- register struct stinfo *stp;
-{
- memmove((void *)stp->str_ikey, (void *)key, sizeof(Block));
- des_key_sched(key, stp->str_sched);
-
- memmove((void *)stp->str_output, (void *)stp->str_iv, sizeof(Block));
-
- stp->str_index = sizeof(Block);
-}
-
-/*
- * DES 64 bit Cipher Feedback
- *
- * key --->+-----+
- * +->| DES |--+
- * | +-----+ |
- * | v
- * INPUT --(--------->(+)+---> DATA
- * | |
- * +-------------+
- *
- *
- * Given:
- * iV: Initial vector, 64 bits (8 bytes) long.
- * Dn: the nth chunk of 64 bits (8 bytes) of data to encrypt (decrypt).
- * On: the nth chunk of 64 bits (8 bytes) of encrypted (decrypted) output.
- *
- * V0 = DES(iV, key)
- * On = Dn ^ Vn
- * V(n+1) = DES(On, key)
- */
-
- void
-cfb64_encrypt(s, c)
- register unsigned char *s;
- int c;
-{
- register struct stinfo *stp = &fb[CFB].streams[DIR_ENCRYPT-1];
- register int index;
-
- index = stp->str_index;
- while (c-- > 0) {
- if (index == sizeof(Block)) {
- Block b;
- des_ecb_encrypt(stp->str_output, b, stp->str_sched, 1);
- memmove((void *)stp->str_feed, (void *)b, sizeof(Block));
- index = 0;
- }
-
- /* On encryption, we store (feed ^ data) which is cypher */
- *s = stp->str_output[index] = (stp->str_feed[index] ^ *s);
- s++;
- index++;
- }
- stp->str_index = index;
-}
-
- int
-cfb64_decrypt(data)
- int data;
-{
- register struct stinfo *stp = &fb[CFB].streams[DIR_DECRYPT-1];
- int index;
-
- if (data == -1) {
- /*
- * Back up one byte. It is assumed that we will
- * never back up more than one byte. If we do, this
- * may or may not work.
- */
- if (stp->str_index)
- --stp->str_index;
- return(0);
- }
-
- index = stp->str_index++;
- if (index == sizeof(Block)) {
- Block b;
- des_ecb_encrypt(stp->str_output, b, stp->str_sched, 1);
- memmove((void *)stp->str_feed, (void *)b, sizeof(Block));
- stp->str_index = 1; /* Next time will be 1 */
- index = 0; /* But now use 0 */
- }
-
- /* On decryption we store (data) which is cypher. */
- stp->str_output[index] = data;
- return(data ^ stp->str_feed[index]);
-}
-
-/*
- * DES 64 bit Output Feedback
- *
- * key --->+-----+
- * +->| DES |--+
- * | +-----+ |
- * +-----------+
- * v
- * INPUT -------->(+) ----> DATA
- *
- * Given:
- * iV: Initial vector, 64 bits (8 bytes) long.
- * Dn: the nth chunk of 64 bits (8 bytes) of data to encrypt (decrypt).
- * On: the nth chunk of 64 bits (8 bytes) of encrypted (decrypted) output.
- *
- * V0 = DES(iV, key)
- * V(n+1) = DES(Vn, key)
- * On = Dn ^ Vn
- */
- void
-ofb64_encrypt(s, c)
- register unsigned char *s;
- int c;
-{
- register struct stinfo *stp = &fb[OFB].streams[DIR_ENCRYPT-1];
- register int index;
-
- index = stp->str_index;
- while (c-- > 0) {
- if (index == sizeof(Block)) {
- Block b;
- des_ecb_encrypt(stp->str_feed, b, stp->str_sched, 1);
- memmove((void *)stp->str_feed, (void *)b, sizeof(Block));
- index = 0;
- }
- *s++ ^= stp->str_feed[index];
- index++;
- }
- stp->str_index = index;
-}
-
- int
-ofb64_decrypt(data)
- int data;
-{
- register struct stinfo *stp = &fb[OFB].streams[DIR_DECRYPT-1];
- int index;
-
- if (data == -1) {
- /*
- * Back up one byte. It is assumed that we will
- * never back up more than one byte. If we do, this
- * may or may not work.
- */
- if (stp->str_index)
- --stp->str_index;
- return(0);
- }
-
- index = stp->str_index++;
- if (index == sizeof(Block)) {
- Block b;
- des_ecb_encrypt(stp->str_feed, b, stp->str_sched, 1);
- memmove((void *)stp->str_feed, (void *)b, sizeof(Block));
- stp->str_index = 1; /* Next time will be 1 */
- index = 0; /* But now use 0 */
- }
-
- return(data ^ stp->str_feed[index]);
-}
-# endif /* DES_ENCRYPTION */
-# endif /* AUTHENTICATION */
-#endif /* ENCRYPTION */
diff --git a/secure/lib/libtelnet/encrypt.c b/secure/lib/libtelnet/encrypt.c
deleted file mode 100644
index 432df0cbb333..000000000000
--- a/secure/lib/libtelnet/encrypt.c
+++ /dev/null
@@ -1,1000 +0,0 @@
-/*-
- * Copyright (c) 1991, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)encrypt.c 8.2 (Berkeley) 5/30/95";
-#endif /* not lint */
-
-/*
- * Copyright (C) 1990 by the Massachusetts Institute of Technology
- *
- * Export of this software from the United States of America is assumed
- * to require a specific license from the United States Government.
- * It is the responsibility of any person or organization contemplating
- * export to obtain such a license before exporting.
- *
- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
- * distribute this software and its documentation for any purpose and
- * without fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright notice and
- * this permission notice appear in supporting documentation, and that
- * the name of M.I.T. not be used in advertising or publicity pertaining
- * to distribution of the software without specific, written prior
- * permission. M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is" without express
- * or implied warranty.
- */
-
-#ifdef ENCRYPTION
-
-#define ENCRYPT_NAMES
-#include <arpa/telnet.h>
-
-#include "encrypt.h"
-#include "misc.h"
-
-#ifdef __STDC__
-#include <stdlib.h>
-#endif
-#ifdef NO_STRING_H
-#include <strings.h>
-#else
-#include <string.h>
-#endif
-
-/*
- * These functions pointers point to the current routines
- * for encrypting and decrypting data.
- */
-void (*encrypt_output) P((unsigned char *, int));
-int (*decrypt_input) P((int));
-
-int encrypt_debug_mode = 0;
-static int decrypt_mode = 0;
-static int encrypt_mode = 0;
-static int encrypt_verbose = 0;
-static int autoencrypt = 0;
-static int autodecrypt = 0;
-static int havesessionkey = 0;
-static int Server = 0;
-static char *Name = "Noname";
-
-#define typemask(x) ((x) > 0 ? 1 << ((x)-1) : 0)
-
-static long i_support_encrypt = typemask(ENCTYPE_DES_CFB64)
- | typemask(ENCTYPE_DES_OFB64);
-static long i_support_decrypt = typemask(ENCTYPE_DES_CFB64)
- | typemask(ENCTYPE_DES_OFB64);
-static long i_wont_support_encrypt = 0;
-static long i_wont_support_decrypt = 0;
-#define I_SUPPORT_ENCRYPT (i_support_encrypt & ~i_wont_support_encrypt)
-#define I_SUPPORT_DECRYPT (i_support_decrypt & ~i_wont_support_decrypt)
-
-static long remote_supports_encrypt = 0;
-static long remote_supports_decrypt = 0;
-
-static Encryptions encryptions[] = {
-#ifdef DES_ENCRYPTION
- { "DES_CFB64", ENCTYPE_DES_CFB64,
- cfb64_encrypt,
- cfb64_decrypt,
- cfb64_init,
- cfb64_start,
- cfb64_is,
- cfb64_reply,
- cfb64_session,
- cfb64_keyid,
- cfb64_printsub },
- { "DES_OFB64", ENCTYPE_DES_OFB64,
- ofb64_encrypt,
- ofb64_decrypt,
- ofb64_init,
- ofb64_start,
- ofb64_is,
- ofb64_reply,
- ofb64_session,
- ofb64_keyid,
- ofb64_printsub },
-#endif /* DES_ENCRYPTION */
- { 0, },
-};
-
-static unsigned char str_send[64] = { IAC, SB, TELOPT_ENCRYPT,
- ENCRYPT_SUPPORT };
-static unsigned char str_suplen = 0;
-static unsigned char str_start[72] = { IAC, SB, TELOPT_ENCRYPT };
-static unsigned char str_end[] = { IAC, SB, TELOPT_ENCRYPT, 0, IAC, SE };
-
- Encryptions *
-findencryption(type)
- int type;
-{
- Encryptions *ep = encryptions;
-
- if (!(I_SUPPORT_ENCRYPT & remote_supports_decrypt & typemask(type)))
- return(0);
- while (ep->type && ep->type != type)
- ++ep;
- return(ep->type ? ep : 0);
-}
-
- Encryptions *
-finddecryption(type)
- int type;
-{
- Encryptions *ep = encryptions;
-
- if (!(I_SUPPORT_DECRYPT & remote_supports_encrypt & typemask(type)))
- return(0);
- while (ep->type && ep->type != type)
- ++ep;
- return(ep->type ? ep : 0);
-}
-
-#define MAXKEYLEN 64
-
-static struct key_info {
- unsigned char keyid[MAXKEYLEN];
- int keylen;
- int dir;
- int *modep;
- Encryptions *(*getcrypt)();
-} ki[2] = {
- { { 0 }, 0, DIR_ENCRYPT, &encrypt_mode, findencryption },
- { { 0 }, 0, DIR_DECRYPT, &decrypt_mode, finddecryption },
-};
-
- void
-encrypt_init(name, server)
- char *name;
- int server;
-{
- Encryptions *ep = encryptions;
-
- Name = name;
- Server = server;
- i_support_encrypt = i_support_decrypt = 0;
- remote_supports_encrypt = remote_supports_decrypt = 0;
- encrypt_mode = 0;
- decrypt_mode = 0;
- encrypt_output = 0;
- decrypt_input = 0;
-#ifdef notdef
- encrypt_verbose = !server;
-#endif
-
- str_suplen = 4;
-
- while (ep->type) {
- if (encrypt_debug_mode)
- printf(">>>%s: I will support %s\r\n",
- Name, ENCTYPE_NAME(ep->type));
- i_support_encrypt |= typemask(ep->type);
- i_support_decrypt |= typemask(ep->type);
- if ((i_wont_support_decrypt & typemask(ep->type)) == 0)
- if ((str_send[str_suplen++] = ep->type) == IAC)
- str_send[str_suplen++] = IAC;
- if (ep->init)
- (*ep->init)(Server);
- ++ep;
- }
- str_send[str_suplen++] = IAC;
- str_send[str_suplen++] = SE;
-}
-
- void
-encrypt_list_types()
-{
- Encryptions *ep = encryptions;
-
- printf("Valid encryption types:\n");
- while (ep->type) {
- printf("\t%s (%d)\r\n", ENCTYPE_NAME(ep->type), ep->type);
- ++ep;
- }
-}
-
- int
-EncryptEnable(type, mode)
- char *type, *mode;
-{
- if (isprefix(type, "help") || isprefix(type, "?")) {
- printf("Usage: encrypt enable <type> [input|output]\n");
- encrypt_list_types();
- return(0);
- }
- if (EncryptType(type, mode))
- return(EncryptStart(mode));
- return(0);
-}
-
- int
-EncryptDisable(type, mode)
- char *type, *mode;
-{
- register Encryptions *ep;
- int ret = 0;
-
- if (isprefix(type, "help") || isprefix(type, "?")) {
- printf("Usage: encrypt disable <type> [input|output]\n");
- encrypt_list_types();
- } else if ((ep = (Encryptions *)genget(type, encryptions,
- sizeof(Encryptions))) == 0) {
- printf("%s: invalid encryption type\n", type);
- } else if (Ambiguous(ep)) {
- printf("Ambiguous type '%s'\n", type);
- } else {
- if ((mode == 0) || (isprefix(mode, "input") ? 1 : 0)) {
- if (decrypt_mode == ep->type)
- EncryptStopInput();
- i_wont_support_decrypt |= typemask(ep->type);
- ret = 1;
- }
- if ((mode == 0) || (isprefix(mode, "output"))) {
- if (encrypt_mode == ep->type)
- EncryptStopOutput();
- i_wont_support_encrypt |= typemask(ep->type);
- ret = 1;
- }
- if (ret == 0)
- printf("%s: invalid encryption mode\n", mode);
- }
- return(ret);
-}
-
- int
-EncryptType(type, mode)
- char *type;
- char *mode;
-{
- register Encryptions *ep;
- int ret = 0;
-
- if (isprefix(type, "help") || isprefix(type, "?")) {
- printf("Usage: encrypt type <type> [input|output]\n");
- encrypt_list_types();
- } else if ((ep = (Encryptions *)genget(type, encryptions,
- sizeof(Encryptions))) == 0) {
- printf("%s: invalid encryption type\n", type);
- } else if (Ambiguous(ep)) {
- printf("Ambiguous type '%s'\n", type);
- } else {
- if ((mode == 0) || isprefix(mode, "input")) {
- decrypt_mode = ep->type;
- i_wont_support_decrypt &= ~typemask(ep->type);
- ret = 1;
- }
- if ((mode == 0) || isprefix(mode, "output")) {
- encrypt_mode = ep->type;
- i_wont_support_encrypt &= ~typemask(ep->type);
- ret = 1;
- }
- if (ret == 0)
- printf("%s: invalid encryption mode\n", mode);
- }
- return(ret);
-}
-
- int
-EncryptStart(mode)
- char *mode;
-{
- register int ret = 0;
- if (mode) {
- if (isprefix(mode, "input"))
- return(EncryptStartInput());
- if (isprefix(mode, "output"))
- return(EncryptStartOutput());
- if (isprefix(mode, "help") || isprefix(mode, "?")) {
- printf("Usage: encrypt start [input|output]\n");
- return(0);
- }
- printf("%s: invalid encryption mode 'encrypt start ?' for help\n", mode);
- return(0);
- }
- ret += EncryptStartInput();
- ret += EncryptStartOutput();
- return(ret);
-}
-
- int
-EncryptStartInput()
-{
- if (decrypt_mode) {
- encrypt_send_request_start();
- return(1);
- }
- printf("No previous decryption mode, decryption not enabled\r\n");
- return(0);
-}
-
- int
-EncryptStartOutput()
-{
- if (encrypt_mode) {
- encrypt_start_output(encrypt_mode);
- return(1);
- }
- printf("No previous encryption mode, encryption not enabled\r\n");
- return(0);
-}
-
- int
-EncryptStop(mode)
- char *mode;
-{
- int ret = 0;
- if (mode) {
- if (isprefix(mode, "input"))
- return(EncryptStopInput());
- if (isprefix(mode, "output"))
- return(EncryptStopOutput());
- if (isprefix(mode, "help") || isprefix(mode, "?")) {
- printf("Usage: encrypt stop [input|output]\n");
- return(0);
- }
- printf("%s: invalid encryption mode 'encrypt stop ?' for help\n", mode);
- return(0);
- }
- ret += EncryptStopInput();
- ret += EncryptStopOutput();
- return(ret);
-}
-
- int
-EncryptStopInput()
-{
- encrypt_send_request_end();
- return(1);
-}
-
- int
-EncryptStopOutput()
-{
- encrypt_send_end();
- return(1);
-}
-
- void
-encrypt_display()
-{
- if (encrypt_output)
- printf("Currently encrypting output with %s\r\n",
- ENCTYPE_NAME(encrypt_mode));
- if (decrypt_input)
- printf("Currently decrypting input with %s\r\n",
- ENCTYPE_NAME(decrypt_mode));
-}
-
- int
-EncryptStatus()
-{
- if (encrypt_output)
- printf("Currently encrypting output with %s\r\n",
- ENCTYPE_NAME(encrypt_mode));
- else if (encrypt_mode) {
- printf("Currently output is clear text.\r\n");
- printf("Last encryption mode was %s\r\n",
- ENCTYPE_NAME(encrypt_mode));
- }
- if (decrypt_input) {
- printf("Currently decrypting input with %s\r\n",
- ENCTYPE_NAME(decrypt_mode));
- } else if (decrypt_mode) {
- printf("Currently input is clear text.\r\n");
- printf("Last decryption mode was %s\r\n",
- ENCTYPE_NAME(decrypt_mode));
- }
- return 1;
-}
-
- void
-encrypt_send_support()
-{
- if (str_suplen) {
- /*
- * If the user has requested that decryption start
- * immediatly, then send a "REQUEST START" before
- * we negotiate the type.
- */
- if (!Server && autodecrypt)
- encrypt_send_request_start();
- net_write(str_send, str_suplen);
- printsub('>', &str_send[2], str_suplen - 2);
- str_suplen = 0;
- }
-}
-
- int
-EncryptDebug(on)
- int on;
-{
- if (on < 0)
- encrypt_debug_mode ^= 1;
- else
- encrypt_debug_mode = on;
- printf("Encryption debugging %s\r\n",
- encrypt_debug_mode ? "enabled" : "disabled");
- return(1);
-}
-
- int
-EncryptVerbose(on)
- int on;
-{
- if (on < 0)
- encrypt_verbose ^= 1;
- else
- encrypt_verbose = on;
- printf("Encryption %s verbose\r\n",
- encrypt_verbose ? "is" : "is not");
- return(1);
-}
-
- int
-EncryptAutoEnc(on)
- int on;
-{
- encrypt_auto(on);
- printf("Automatic encryption of output is %s\r\n",
- autoencrypt ? "enabled" : "disabled");
- return(1);
-}
-
- int
-EncryptAutoDec(on)
- int on;
-{
- decrypt_auto(on);
- printf("Automatic decryption of input is %s\r\n",
- autodecrypt ? "enabled" : "disabled");
- return(1);
-}
-
-/*
- * Called when ENCRYPT SUPPORT is received.
- */
- void
-encrypt_support(typelist, cnt)
- unsigned char *typelist;
- int cnt;
-{
- register int type, use_type = 0;
- Encryptions *ep;
-
- /*
- * Forget anything the other side has previously told us.
- */
- remote_supports_decrypt = 0;
-
- while (cnt-- > 0) {
- type = *typelist++;
- if (encrypt_debug_mode)
- printf(">>>%s: He is supporting %s (%d)\r\n",
- Name,
- ENCTYPE_NAME(type), type);
- if ((type < ENCTYPE_CNT) &&
- (I_SUPPORT_ENCRYPT & typemask(type))) {
- remote_supports_decrypt |= typemask(type);
- if (use_type == 0)
- use_type = type;
- }
- }
- if (use_type) {
- ep = findencryption(use_type);
- if (!ep)
- return;
- type = ep->start ? (*ep->start)(DIR_ENCRYPT, Server) : 0;
- if (encrypt_debug_mode)
- printf(">>>%s: (*ep->start)() returned %d\r\n",
- Name, type);
- if (type < 0)
- return;
- encrypt_mode = use_type;
- if (type == 0)
- encrypt_start_output(use_type);
- }
-}
-
- void
-encrypt_is(data, cnt)
- unsigned char *data;
- int cnt;
-{
- Encryptions *ep;
- register int type, ret;
-
- if (--cnt < 0)
- return;
- type = *data++;
- if (type < ENCTYPE_CNT)
- remote_supports_encrypt |= typemask(type);
- if (!(ep = finddecryption(type))) {
- if (encrypt_debug_mode)
- printf(">>>%s: Can't find type %s (%d) for initial negotiation\r\n",
- Name,
- ENCTYPE_NAME_OK(type)
- ? ENCTYPE_NAME(type) : "(unknown)",
- type);
- return;
- }
- if (!ep->is) {
- if (encrypt_debug_mode)
- printf(">>>%s: No initial negotiation needed for type %s (%d)\r\n",
- Name,
- ENCTYPE_NAME_OK(type)
- ? ENCTYPE_NAME(type) : "(unknown)",
- type);
- ret = 0;
- } else {
- ret = (*ep->is)(data, cnt);
- if (encrypt_debug_mode)
- printf("(*ep->is)(%x, %d) returned %s(%d)\n", data, cnt,
- (ret < 0) ? "FAIL " :
- (ret == 0) ? "SUCCESS " : "MORE_TO_DO ", ret);
- }
- if (ret < 0) {
- autodecrypt = 0;
- } else {
- decrypt_mode = type;
- if (ret == 0 && autodecrypt)
- encrypt_send_request_start();
- }
-}
-
- void
-encrypt_reply(data, cnt)
- unsigned char *data;
- int cnt;
-{
- Encryptions *ep;
- register int ret, type;
-
- if (--cnt < 0)
- return;
- type = *data++;
- if (!(ep = findencryption(type))) {
- if (encrypt_debug_mode)
- printf(">>>%s: Can't find type %s (%d) for initial negotiation\r\n",
- Name,
- ENCTYPE_NAME_OK(type)
- ? ENCTYPE_NAME(type) : "(unknown)",
- type);
- return;
- }
- if (!ep->reply) {
- if (encrypt_debug_mode)
- printf(">>>%s: No initial negotiation needed for type %s (%d)\r\n",
- Name,
- ENCTYPE_NAME_OK(type)
- ? ENCTYPE_NAME(type) : "(unknown)",
- type);
- ret = 0;
- } else {
- ret = (*ep->reply)(data, cnt);
- if (encrypt_debug_mode)
- printf("(*ep->reply)(%x, %d) returned %s(%d)\n",
- data, cnt,
- (ret < 0) ? "FAIL " :
- (ret == 0) ? "SUCCESS " : "MORE_TO_DO ", ret);
- }
- if (encrypt_debug_mode)
- printf(">>>%s: encrypt_reply returned %d\n", Name, ret);
- if (ret < 0) {
- autoencrypt = 0;
- } else {
- encrypt_mode = type;
- if (ret == 0 && autoencrypt)
- encrypt_start_output(type);
- }
-}
-
-/*
- * Called when a ENCRYPT START command is received.
- */
- void
-encrypt_start(data, cnt)
- unsigned char *data;
- int cnt;
-{
- Encryptions *ep;
-
- if (!decrypt_mode) {
- /*
- * Something is wrong. We should not get a START
- * command without having already picked our
- * decryption scheme. Send a REQUEST-END to
- * attempt to clear the channel...
- */
- printf("%s: Warning, Cannot decrypt input stream!!!\r\n", Name);
- encrypt_send_request_end();
- return;
- }
-
- if (ep = finddecryption(decrypt_mode)) {
- decrypt_input = ep->input;
- if (encrypt_verbose)
- printf("[ Input is now decrypted with type %s ]\r\n",
- ENCTYPE_NAME(decrypt_mode));
- if (encrypt_debug_mode)
- printf(">>>%s: Start to decrypt input with type %s\r\n",
- Name, ENCTYPE_NAME(decrypt_mode));
- } else {
- printf("%s: Warning, Cannot decrypt type %s (%d)!!!\r\n",
- Name,
- ENCTYPE_NAME_OK(decrypt_mode)
- ? ENCTYPE_NAME(decrypt_mode)
- : "(unknown)",
- decrypt_mode);
- encrypt_send_request_end();
- }
-}
-
- void
-encrypt_session_key(key, server)
- Session_Key *key;
- int server;
-{
- Encryptions *ep = encryptions;
-
- havesessionkey = 1;
-
- while (ep->type) {
- if (ep->session)
- (*ep->session)(key, server);
-#ifdef notdef
- if (!encrypt_output && autoencrypt && !server)
- encrypt_start_output(ep->type);
- if (!decrypt_input && autodecrypt && !server)
- encrypt_send_request_start();
-#endif
- ++ep;
- }
-}
-
-/*
- * Called when ENCRYPT END is received.
- */
- void
-encrypt_end()
-{
- decrypt_input = 0;
- if (encrypt_debug_mode)
- printf(">>>%s: Input is back to clear text\r\n", Name);
- if (encrypt_verbose)
- printf("[ Input is now clear text ]\r\n");
-}
-
-/*
- * Called when ENCRYPT REQUEST-END is received.
- */
- void
-encrypt_request_end()
-{
- encrypt_send_end();
-}
-
-/*
- * Called when ENCRYPT REQUEST-START is received. If we receive
- * this before a type is picked, then that indicates that the
- * other side wants us to start encrypting data as soon as we
- * can.
- */
- void
-encrypt_request_start(data, cnt)
- unsigned char *data;
- int cnt;
-{
- if (encrypt_mode == 0) {
- if (Server)
- autoencrypt = 1;
- return;
- }
- encrypt_start_output(encrypt_mode);
-}
-
-static unsigned char str_keyid[(MAXKEYLEN*2)+5] = { IAC, SB, TELOPT_ENCRYPT };
-
-encrypt_enc_keyid(keyid, len)
- unsigned char *keyid;
- int len;
-{
- encrypt_keyid(&ki[1], keyid, len);
-}
-
-encrypt_dec_keyid(keyid, len)
- unsigned char *keyid;
- int len;
-{
- encrypt_keyid(&ki[0], keyid, len);
-}
-
-encrypt_keyid(kp, keyid, len)
- struct key_info *kp;
- unsigned char *keyid;
- int len;
-{
- Encryptions *ep;
- unsigned char *strp, *cp;
- int dir = kp->dir;
- register int ret = 0;
-
- if (!(ep = (*kp->getcrypt)(*kp->modep))) {
- if (len == 0)
- return;
- kp->keylen = 0;
- } else if (len == 0) {
- /*
- * Empty option, indicates a failure.
- */
- if (kp->keylen == 0)
- return;
- kp->keylen = 0;
- if (ep->keyid)
- (void)(*ep->keyid)(dir, kp->keyid, &kp->keylen);
-
- } else if ((len != kp->keylen) ||
- (memcmp(keyid, kp->keyid, len) != 0)) {
- /*
- * Length or contents are different
- */
- kp->keylen = len;
- memmove(kp->keyid, keyid, len);
- if (ep->keyid)
- (void)(*ep->keyid)(dir, kp->keyid, &kp->keylen);
- } else {
- if (ep->keyid)
- ret = (*ep->keyid)(dir, kp->keyid, &kp->keylen);
- if ((ret == 0) && (dir == DIR_ENCRYPT) && autoencrypt)
- encrypt_start_output(*kp->modep);
- return;
- }
-
- encrypt_send_keyid(dir, kp->keyid, kp->keylen, 0);
-}
-
- void
-encrypt_send_keyid(dir, keyid, keylen, saveit)
- int dir;
- unsigned char *keyid;
- int keylen;
- int saveit;
-{
- unsigned char *strp;
-
- str_keyid[3] = (dir == DIR_ENCRYPT)
- ? ENCRYPT_ENC_KEYID : ENCRYPT_DEC_KEYID;
- if (saveit) {
- struct key_info *kp = &ki[(dir == DIR_ENCRYPT) ? 0 : 1];
- memmove(kp->keyid, keyid, keylen);
- kp->keylen = keylen;
- }
-
- for (strp = &str_keyid[4]; keylen > 0; --keylen) {
- if ((*strp++ = *keyid++) == IAC)
- *strp++ = IAC;
- }
- *strp++ = IAC;
- *strp++ = SE;
- net_write(str_keyid, strp - str_keyid);
- printsub('>', &str_keyid[2], strp - str_keyid - 2);
-}
-
- void
-encrypt_auto(on)
- int on;
-{
- if (on < 0)
- autoencrypt ^= 1;
- else
- autoencrypt = on ? 1 : 0;
-}
-
- void
-decrypt_auto(on)
- int on;
-{
- if (on < 0)
- autodecrypt ^= 1;
- else
- autodecrypt = on ? 1 : 0;
-}
-
- void
-encrypt_start_output(type)
- int type;
-{
- Encryptions *ep;
- register unsigned char *p;
- register int i;
-
- if (!(ep = findencryption(type))) {
- if (encrypt_debug_mode) {
- printf(">>>%s: Can't encrypt with type %s (%d)\r\n",
- Name,
- ENCTYPE_NAME_OK(type)
- ? ENCTYPE_NAME(type) : "(unknown)",
- type);
- }
- return;
- }
- if (ep->start) {
- i = (*ep->start)(DIR_ENCRYPT, Server);
- if (encrypt_debug_mode) {
- printf(">>>%s: Encrypt start: %s (%d) %s\r\n",
- Name,
- (i < 0) ? "failed" :
- "initial negotiation in progress",
- i, ENCTYPE_NAME(type));
- }
- if (i)
- return;
- }
- p = str_start + 3;
- *p++ = ENCRYPT_START;
- for (i = 0; i < ki[0].keylen; ++i) {
- if ((*p++ = ki[0].keyid[i]) == IAC)
- *p++ = IAC;
- }
- *p++ = IAC;
- *p++ = SE;
- net_write(str_start, p - str_start);
- net_encrypt();
- printsub('>', &str_start[2], p - &str_start[2]);
- /*
- * If we are already encrypting in some mode, then
- * encrypt the ring (which includes our request) in
- * the old mode, mark it all as "clear text" and then
- * switch to the new mode.
- */
- encrypt_output = ep->output;
- encrypt_mode = type;
- if (encrypt_debug_mode)
- printf(">>>%s: Started to encrypt output with type %s\r\n",
- Name, ENCTYPE_NAME(type));
- if (encrypt_verbose)
- printf("[ Output is now encrypted with type %s ]\r\n",
- ENCTYPE_NAME(type));
-}
-
- void
-encrypt_send_end()
-{
- if (!encrypt_output)
- return;
-
- str_end[3] = ENCRYPT_END;
- net_write(str_end, sizeof(str_end));
- net_encrypt();
- printsub('>', &str_end[2], sizeof(str_end) - 2);
- /*
- * Encrypt the output buffer now because it will not be done by
- * netflush...
- */
- encrypt_output = 0;
- if (encrypt_debug_mode)
- printf(">>>%s: Output is back to clear text\r\n", Name);
- if (encrypt_verbose)
- printf("[ Output is now clear text ]\r\n");
-}
-
- void
-encrypt_send_request_start()
-{
- register unsigned char *p;
- register int i;
-
- p = &str_start[3];
- *p++ = ENCRYPT_REQSTART;
- for (i = 0; i < ki[1].keylen; ++i) {
- if ((*p++ = ki[1].keyid[i]) == IAC)
- *p++ = IAC;
- }
- *p++ = IAC;
- *p++ = SE;
- net_write(str_start, p - str_start);
- printsub('>', &str_start[2], p - &str_start[2]);
- if (encrypt_debug_mode)
- printf(">>>%s: Request input to be encrypted\r\n", Name);
-}
-
- void
-encrypt_send_request_end()
-{
- str_end[3] = ENCRYPT_REQEND;
- net_write(str_end, sizeof(str_end));
- printsub('>', &str_end[2], sizeof(str_end) - 2);
-
- if (encrypt_debug_mode)
- printf(">>>%s: Request input to be clear text\r\n", Name);
-}
-
- void
-encrypt_wait()
-{
- register int encrypt, decrypt;
- if (encrypt_debug_mode)
- printf(">>>%s: in encrypt_wait\r\n", Name);
- if (!havesessionkey || !(I_SUPPORT_ENCRYPT & remote_supports_decrypt))
- return;
- while (autoencrypt && !encrypt_output)
- if (telnet_spin())
- return;
-}
-
- void
-encrypt_debug(mode)
- int mode;
-{
- encrypt_debug_mode = mode;
-}
-
- void
-encrypt_gen_printsub(data, cnt, buf, buflen)
- unsigned char *data, *buf;
- int cnt, buflen;
-{
- char tbuf[16], *cp;
-
- cnt -= 2;
- data += 2;
- buf[buflen-1] = '\0';
- buf[buflen-2] = '*';
- buflen -= 2;;
- for (; cnt > 0; cnt--, data++) {
- sprintf(tbuf, " %d", *data);
- for (cp = tbuf; *cp && buflen > 0; --buflen)
- *buf++ = *cp++;
- if (buflen <= 0)
- return;
- }
- *buf = '\0';
-}
-
- void
-encrypt_printsub(data, cnt, buf, buflen)
- unsigned char *data, *buf;
- int cnt, buflen;
-{
- Encryptions *ep;
- register int type = data[1];
-
- for (ep = encryptions; ep->type && ep->type != type; ep++)
- ;
-
- if (ep->printsub)
- (*ep->printsub)(data, cnt, buf, buflen);
- else
- encrypt_gen_printsub(data, cnt, buf, buflen);
-}
-#endif /* ENCRYPTION */
diff --git a/secure/lib/libtelnet/encrypt.h b/secure/lib/libtelnet/encrypt.h
deleted file mode 100644
index e0ae385f13f3..000000000000
--- a/secure/lib/libtelnet/encrypt.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/*-
- * Copyright (c) 1991, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)encrypt.h 8.1 (Berkeley) 6/4/93
- */
-
-/*
- * Copyright (C) 1990 by the Massachusetts Institute of Technology
- *
- * Export of this software from the United States of America is assumed
- * to require a specific license from the United States Government.
- * It is the responsibility of any person or organization contemplating
- * export to obtain such a license before exporting.
- *
- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
- * distribute this software and its documentation for any purpose and
- * without fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright notice and
- * this permission notice appear in supporting documentation, and that
- * the name of M.I.T. not be used in advertising or publicity pertaining
- * to distribution of the software without specific, written prior
- * permission. M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is" without express
- * or implied warranty.
- */
-
-#ifdef ENCRYPTION
-# ifndef __ENCRYPTION__
-# define __ENCRYPTION__
-
-#define DIR_DECRYPT 1
-#define DIR_ENCRYPT 2
-
-typedef unsigned char Block[8];
-typedef unsigned char *BlockT;
-typedef struct { Block _; } Schedule[16];
-
-#define VALIDKEY(key) ( key[0] | key[1] | key[2] | key[3] | \
- key[4] | key[5] | key[6] | key[7])
-
-#define SAMEKEY(k1, k2) (!bcmp((void *)k1, (void *)k2, sizeof(Block)))
-
-typedef struct {
- short type;
- int length;
- unsigned char *data;
-} Session_Key;
-
-# if !defined(P)
-# ifdef __STDC__
-# define P(x) x
-# else
-# define P(x) ()
-# endif
-# endif
-
-typedef struct {
- char *name;
- int type;
- void (*output) P((unsigned char *, int));
- int (*input) P((int));
- void (*init) P((int));
- int (*start) P((int, int));
- int (*is) P((unsigned char *, int));
- int (*reply) P((unsigned char *, int));
- void (*session) P((Session_Key *, int));
- int (*keyid) P((int, unsigned char *, int *));
- void (*printsub) P((unsigned char *, int, unsigned char *, int));
-} Encryptions;
-
-#define SK_DES 1 /* Matched Kerberos v5 KEYTYPE_DES */
-
-#include "enc-proto.h"
-
-extern int encrypt_debug_mode;
-extern int (*decrypt_input) P((int));
-extern void (*encrypt_output) P((unsigned char *, int));
-# endif /* __ENCRYPTION__ */
-#endif /* ENCRYPTION */
diff --git a/secure/lib/libtelnet/kerberos.c b/secure/lib/libtelnet/kerberos.c
deleted file mode 100644
index f0c8b8aef4de..000000000000
--- a/secure/lib/libtelnet/kerberos.c
+++ /dev/null
@@ -1,555 +0,0 @@
-/*-
- * Copyright (c) 1991, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)kerberos.c 8.3 (Berkeley) 5/30/95";
-#endif /* not lint */
-
-/*
- * Copyright (C) 1990 by the Massachusetts Institute of Technology
- *
- * Export of this software from the United States of America is assumed
- * to require a specific license from the United States Government.
- * It is the responsibility of any person or organization contemplating
- * export to obtain such a license before exporting.
- *
- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
- * distribute this software and its documentation for any purpose and
- * without fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright notice and
- * this permission notice appear in supporting documentation, and that
- * the name of M.I.T. not be used in advertising or publicity pertaining
- * to distribution of the software without specific, written prior
- * permission. M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is" without express
- * or implied warranty.
- */
-
-#ifdef KRB4
-#include <sys/types.h>
-#include <arpa/telnet.h>
-#include <stdio.h>
-#include <des.h> /* BSD wont include this in krb.h, so we do it here */
-#include <krb.h>
-#ifdef __STDC__
-#include <stdlib.h>
-#endif
-#ifdef NO_STRING_H
-#include <strings.h>
-#else
-#include <string.h>
-#endif
-
-#include "encrypt.h"
-#include "auth.h"
-#include "misc.h"
-
-int kerberos4_cksum P((unsigned char *, int));
-int kuserok P((AUTH_DAT *, char *));
-
-extern auth_debug_mode;
-
-static unsigned char str_data[1024] = { IAC, SB, TELOPT_AUTHENTICATION, 0,
- AUTHTYPE_KERBEROS_V4, };
-static unsigned char str_name[1024] = { IAC, SB, TELOPT_AUTHENTICATION,
- TELQUAL_NAME, };
-
-#define KRB_AUTH 0 /* Authentication data follows */
-#define KRB_REJECT 1 /* Rejected (reason might follow) */
-#define KRB_ACCEPT 2 /* Accepted */
-#define KRB_CHALLENGE 3 /* Challenge for mutual auth. */
-#define KRB_RESPONSE 4 /* Response for mutual auth. */
-
-#define KRB_SERVICE_NAME "rcmd"
-
-static KTEXT_ST auth;
-static char name[ANAME_SZ];
-static AUTH_DAT adat = { 0 };
-#ifdef ENCRYPTION
-static Block session_key = { 0 };
-static des_key_schedule sched;
-static Block challenge = { 0 };
-#endif /* ENCRYPTION */
-
- static int
-Data(ap, type, d, c)
- Authenticator *ap;
- int type;
- void *d;
- int c;
-{
- unsigned char *p = str_data + 4;
- unsigned char *cd = (unsigned char *)d;
-
- if (c == -1)
- c = strlen((char *)cd);
-
- if (auth_debug_mode) {
- printf("%s:%d: [%d] (%d)",
- str_data[3] == TELQUAL_IS ? ">>>IS" : ">>>REPLY",
- str_data[3],
- type, c);
- printd(d, c);
- printf("\r\n");
- }
- *p++ = ap->type;
- *p++ = ap->way;
- *p++ = type;
- while (c-- > 0) {
- if ((*p++ = *cd++) == IAC)
- *p++ = IAC;
- }
- *p++ = IAC;
- *p++ = SE;
- if (str_data[3] == TELQUAL_IS)
- printsub('>', &str_data[2], p - (&str_data[2]));
- return(net_write(str_data, p - str_data));
-}
-
- int
-kerberos4_init(ap, server)
- Authenticator *ap;
- int server;
-{
- FILE *fp;
-
- if (server) {
- str_data[3] = TELQUAL_REPLY;
- if ((fp = fopen(KEYFILE, "r")) == NULL)
- return(0);
- fclose(fp);
- } else {
- str_data[3] = TELQUAL_IS;
- }
- return(1);
-}
-
-char dst_realm_buf[REALM_SZ], *dest_realm = NULL;
-int dst_realm_sz = REALM_SZ;
-
- int
-kerberos4_send(ap)
- Authenticator *ap;
-{
- KTEXT_ST auth;
-#ifdef ENCRYPTION
- Block enckey;
-#endif /* ENCRYPTION */
- char instance[INST_SZ];
- char *realm;
- char *krb_realmofhost();
- char *krb_get_phost();
- CREDENTIALS cred;
- int r;
-
- printf("[ Trying KERBEROS4 ... ]\n");
- if (!UserNameRequested) {
- if (auth_debug_mode) {
- printf("Kerberos V4: no user name supplied\r\n");
- }
- return(0);
- }
-
- memset(instance, 0, sizeof(instance));
-
- if (realm = krb_get_phost(RemoteHostName))
- strncpy(instance, realm, sizeof(instance));
-
- instance[sizeof(instance)-1] = '\0';
-
- realm = dest_realm ? dest_realm : krb_realmofhost(RemoteHostName);
-
- if (!realm) {
- printf("Kerberos V4: no realm for %s\r\n", RemoteHostName);
- return(0);
- }
- if (r = krb_mk_req(&auth, KRB_SERVICE_NAME, instance, realm, 0L)) {
- printf("mk_req failed: %s\r\n", krb_err_txt[r]);
- return(0);
- }
- if (r = krb_get_cred(KRB_SERVICE_NAME, instance, realm, &cred)) {
- printf("get_cred failed: %s\r\n", krb_err_txt[r]);
- return(0);
- }
- if (!auth_sendname(UserNameRequested, strlen(UserNameRequested))) {
- if (auth_debug_mode)
- printf("Not enough room for user name\r\n");
- return(0);
- }
- if (auth_debug_mode)
- printf("Sent %d bytes of authentication data\r\n", auth.length);
- if (!Data(ap, KRB_AUTH, (void *)auth.dat, auth.length)) {
- if (auth_debug_mode)
- printf("Not enough room for authentication data\r\n");
- return(0);
- }
-#ifdef ENCRYPTION
- /*
- * If we are doing mutual authentication, get set up to send
- * the challenge, and verify it when the response comes back.
- */
- if ((ap->way & AUTH_HOW_MASK) == AUTH_HOW_MUTUAL) {
- register int i;
-
- des_key_sched(&cred.session, sched);
- des_init_random_number_generator(&cred.session);
- des_new_random_key(&session_key);
- des_ecb_encrypt(&session_key, &session_key, sched, 0);
- des_ecb_encrypt(&session_key, &challenge, sched, 0);
- /*
- * Increment the challenge by 1, and encrypt it for
- * later comparison.
- */
- for (i = 7; i >= 0; --i) {
- register int x;
- x = (unsigned int)challenge[i] + 1;
- challenge[i] = x; /* ignore overflow */
- if (x < 256) /* if no overflow, all done */
- break;
- }
- des_ecb_encrypt(&challenge, &challenge, sched, 1);
- }
-#endif /* ENCRYPTION */
-
- if (auth_debug_mode) {
- printf("CK: %d:", kerberos4_cksum(auth.dat, auth.length));
- printd(auth.dat, auth.length);
- printf("\r\n");
- printf("Sent Kerberos V4 credentials to server\r\n");
- }
- return(1);
-}
-
- void
-kerberos4_is(ap, data, cnt)
- Authenticator *ap;
- unsigned char *data;
- int cnt;
-{
-#ifdef ENCRYPTION
- Session_Key skey;
- Block datablock;
-#endif /* ENCRYPTION */
- char realm[REALM_SZ];
- char instance[INST_SZ];
- int r;
-
- if (cnt-- < 1)
- return;
- switch (*data++) {
- case KRB_AUTH:
- if (krb_get_lrealm(realm, 1) != KSUCCESS) {
- Data(ap, KRB_REJECT, (void *)"No local V4 Realm.", -1);
- auth_finished(ap, AUTH_REJECT);
- if (auth_debug_mode)
- printf("No local realm\r\n");
- return;
- }
- memmove((void *)auth.dat, (void *)data, auth.length = cnt);
- if (auth_debug_mode) {
- printf("Got %d bytes of authentication data\r\n", cnt);
- printf("CK: %d:", kerberos4_cksum(auth.dat, auth.length));
- printd(auth.dat, auth.length);
- printf("\r\n");
- }
- instance[0] = '*'; instance[1] = 0;
- if (r = krb_rd_req(&auth, KRB_SERVICE_NAME,
- instance, 0, &adat, "")) {
- if (auth_debug_mode)
- printf("Kerberos failed him as %s\r\n", name);
- Data(ap, KRB_REJECT, (void *)krb_err_txt[r], -1);
- auth_finished(ap, AUTH_REJECT);
- return;
- }
-#ifdef ENCRYPTION
- memmove((void *)session_key, (void *)adat.session, sizeof(Block));
-#endif /* ENCRYPTION */
- krb_kntoln(&adat, name);
-
- if (UserNameRequested && !kuserok(&adat, UserNameRequested))
- Data(ap, KRB_ACCEPT, (void *)0, 0);
- else
- Data(ap, KRB_REJECT,
- (void *)"user is not authorized", -1);
- auth_finished(ap, AUTH_USER);
- break;
-
- case KRB_CHALLENGE:
-#ifndef ENCRYPTION
- Data(ap, KRB_RESPONSE, (void *)0, 0);
-#else /* ENCRYPTION */
- if (!VALIDKEY(session_key)) {
- /*
- * We don't have a valid session key, so just
- * send back a response with an empty session
- * key.
- */
- Data(ap, KRB_RESPONSE, (void *)0, 0);
- break;
- }
-
- /*
- * Initialize the random number generator since it's
- * used later on by the encryption routine.
- */
- des_init_random_number_generator(&session_key);
- des_key_sched(&session_key, sched);
- memmove((void *)datablock, (void *)data, sizeof(Block));
- /*
- * Take the received encrypted challenge, and encrypt
- * it again to get a unique session_key for the
- * ENCRYPT option.
- */
- des_ecb_encrypt(&datablock, &session_key, sched, 1);
- skey.type = SK_DES;
- skey.length = 8;
- skey.data = session_key;
- encrypt_session_key(&skey, 1);
- /*
- * Now decrypt the received encrypted challenge,
- * increment by one, re-encrypt it and send it back.
- */
- des_ecb_encrypt(&datablock, &challenge, sched, 0);
- for (r = 7; r >= 0; r--) {
- register int t;
- t = (unsigned int)challenge[r] + 1;
- challenge[r] = t; /* ignore overflow */
- if (t < 256) /* if no overflow, all done */
- break;
- }
- des_ecb_encrypt(&challenge, &challenge, sched, 1);
- Data(ap, KRB_RESPONSE, (void *)challenge, sizeof(challenge));
-#endif /* ENCRYPTION */
- break;
-
- default:
- if (auth_debug_mode)
- printf("Unknown Kerberos option %d\r\n", data[-1]);
- Data(ap, KRB_REJECT, 0, 0);
- break;
- }
-}
-
- void
-kerberos4_reply(ap, data, cnt)
- Authenticator *ap;
- unsigned char *data;
- int cnt;
-{
-#ifdef ENCRYPTION
- Session_Key skey;
-#endif /* ENCRYPTION */
-
- if (cnt-- < 1)
- return;
- switch (*data++) {
- case KRB_REJECT:
- if (cnt > 0) {
- printf("[ Kerberos V4 refuses authentication because %.*s ]\r\n",
- cnt, data);
- } else
- printf("[ Kerberos V4 refuses authentication ]\r\n");
- auth_send_retry();
- return;
- case KRB_ACCEPT:
- printf("[ Kerberos V4 accepts you ]\n");
- if ((ap->way & AUTH_HOW_MASK) == AUTH_HOW_MUTUAL) {
- /*
- * Send over the encrypted challenge.
- */
-#ifndef ENCRYPTION
- Data(ap, KRB_CHALLENGE, (void *)0, 0);
-#else /* ENCRYPTION */
- Data(ap, KRB_CHALLENGE, (void *)session_key,
- sizeof(session_key));
- des_ecb_encrypt(&session_key, &session_key, sched, 1);
- skey.type = SK_DES;
- skey.length = 8;
- skey.data = session_key;
- encrypt_session_key(&skey, 0);
-#endif /* ENCRYPTION */
- return;
- }
- auth_finished(ap, AUTH_USER);
- return;
- case KRB_RESPONSE:
-#ifdef ENCRYPTION
- /*
- * Verify that the response to the challenge is correct.
- */
- if ((cnt != sizeof(Block)) ||
- (0 != memcmp((void *)data, (void *)challenge,
- sizeof(challenge))))
- {
-#endif /* ENCRYPTION */
- printf("[ Kerberos V4 challenge failed!!! ]\r\n");
- auth_send_retry();
- return;
-#ifdef ENCRYPTION
- }
- printf("[ Kerberos V4 challenge successful ]\r\n");
- auth_finished(ap, AUTH_USER);
-#endif /* ENCRYPTION */
- break;
- default:
- if (auth_debug_mode)
- printf("Unknown Kerberos option %d\r\n", data[-1]);
- return;
- }
-}
-
- int
-kerberos4_status(ap, name, level)
- Authenticator *ap;
- char *name;
- int level;
-{
- if (level < AUTH_USER)
- return(level);
-
- if (UserNameRequested && !kuserok(&adat, UserNameRequested)) {
- strcpy(name, UserNameRequested);
- return(AUTH_VALID);
- } else
- return(AUTH_USER);
-}
-
-#define BUMP(buf, len) while (*(buf)) {++(buf), --(len);}
-#define ADDC(buf, len, c) if ((len) > 0) {*(buf)++ = (c); --(len);}
-
- void
-kerberos4_printsub(data, cnt, buf, buflen)
- unsigned char *data, *buf;
- int cnt, buflen;
-{
- char lbuf[32];
- register int i;
-
- buf[buflen-1] = '\0'; /* make sure its NULL terminated */
- buflen -= 1;
-
- switch(data[3]) {
- case KRB_REJECT: /* Rejected (reason might follow) */
- strncpy((char *)buf, " REJECT ", buflen);
- goto common;
-
- case KRB_ACCEPT: /* Accepted (name might follow) */
- strncpy((char *)buf, " ACCEPT ", buflen);
- common:
- BUMP(buf, buflen);
- if (cnt <= 4)
- break;
- ADDC(buf, buflen, '"');
- for (i = 4; i < cnt; i++)
- ADDC(buf, buflen, data[i]);
- ADDC(buf, buflen, '"');
- ADDC(buf, buflen, '\0');
- break;
-
- case KRB_AUTH: /* Authentication data follows */
- strncpy((char *)buf, " AUTH", buflen);
- goto common2;
-
- case KRB_CHALLENGE:
- strncpy((char *)buf, " CHALLENGE", buflen);
- goto common2;
-
- case KRB_RESPONSE:
- strncpy((char *)buf, " RESPONSE", buflen);
- goto common2;
-
- default:
- sprintf(lbuf, " %d (unknown)", data[3]);
- strncpy((char *)buf, lbuf, buflen);
- common2:
- BUMP(buf, buflen);
- for (i = 4; i < cnt; i++) {
- sprintf(lbuf, " %d", data[i]);
- strncpy((char *)buf, lbuf, buflen);
- BUMP(buf, buflen);
- }
- break;
- }
-}
-
- int
-kerberos4_cksum(d, n)
- unsigned char *d;
- int n;
-{
- int ck = 0;
-
- /*
- * A comment is probably needed here for those not
- * well versed in the "C" language. Yes, this is
- * supposed to be a "switch" with the body of the
- * "switch" being a "while" statement. The whole
- * purpose of the switch is to allow us to jump into
- * the middle of the while() loop, and then not have
- * to do any more switch()s.
- *
- * Some compilers will spit out a warning message
- * about the loop not being entered at the top.
- */
- switch (n&03)
- while (n > 0) {
- case 0:
- ck ^= (int)*d++ << 24;
- --n;
- case 3:
- ck ^= (int)*d++ << 16;
- --n;
- case 2:
- ck ^= (int)*d++ << 8;
- --n;
- case 1:
- ck ^= (int)*d++;
- --n;
- }
- return(ck);
-}
-#endif
-
-#ifdef notdef
-
-prkey(msg, key)
- char *msg;
- unsigned char *key;
-{
- register int i;
- printf("%s:", msg);
- for (i = 0; i < 8; i++)
- printf(" %3d", key[i]);
- printf("\r\n");
-}
-#endif
diff --git a/secure/lib/libtelnet/kerberos5.c b/secure/lib/libtelnet/kerberos5.c
deleted file mode 100644
index 3f3f61f4fcf1..000000000000
--- a/secure/lib/libtelnet/kerberos5.c
+++ /dev/null
@@ -1,764 +0,0 @@
-/*
- * $Source: /home/ncvs/src/secure/lib/libtelnet/kerberos5.c,v $
- * $Author: pst $
- * $Id: kerberos5.c,v 1.3 1995/07/20 11:39:23 pst Exp $
- */
-
-#if !defined(lint) && !defined(SABER)
-static
-#ifdef __STDC__
-const
-#endif
-char rcsid_kerberos5_c[] = "$Id: kerberos5.c,v 1.3 1995/07/20 11:39:23 pst Exp $";
-#endif /* lint */
-
-/*-
- * Copyright (c) 1991, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)kerberos5.c 8.3 (Berkeley) 5/30/95";
-#endif /* not lint */
-
-/*
- * Copyright (C) 1990 by the Massachusetts Institute of Technology
- *
- * Export of this software from the United States of America may
- * require a specific license from the United States Government.
- * It is the responsibility of any person or organization contemplating
- * export to obtain such a license before exporting.
- *
- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
- * distribute this software and its documentation for any purpose and
- * without fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright notice and
- * this permission notice appear in supporting documentation, and that
- * the name of M.I.T. not be used in advertising or publicity pertaining
- * to distribution of the software without specific, written prior
- * permission. M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is" without express
- * or implied warranty.
- */
-
-
-#ifdef KRB5
-#include <arpa/telnet.h>
-#include <stdio.h>
-#include <krb5/krb5.h>
-#include <krb5/asn1.h>
-#include <krb5/crc-32.h>
-#include <krb5/los-proto.h>
-#include <krb5/ext-proto.h>
-#include <com_err.h>
-#include <netdb.h>
-#include <ctype.h>
-
-/* kerberos 5 include files (ext-proto.h) will get an appropriate stdlib.h
- and string.h/strings.h */
-
-#include "encrypt.h"
-#include "auth.h"
-#include "misc.h"
-
-extern auth_debug_mode;
-
-#ifdef FORWARD
-int forward_flags = 0; /* Flags get set in telnet/main.c on -f and -F */
-
-/* These values need to be the same as those defined in telnet/main.c. */
-/* Either define them in both places, or put in some common header file. */
-#define OPTS_FORWARD_CREDS 0x00000002
-#define OPTS_FORWARDABLE_CREDS 0x00000001
-
-void kerberos5_forward();
-
-#endif /* FORWARD */
-
-static unsigned char str_data[1024] = { IAC, SB, TELOPT_AUTHENTICATION, 0,
- AUTHTYPE_KERBEROS_V5, };
-/*static unsigned char str_name[1024] = { IAC, SB, TELOPT_AUTHENTICATION,
- TELQUAL_NAME, };*/
-
-#define KRB_AUTH 0 /* Authentication data follows */
-#define KRB_REJECT 1 /* Rejected (reason might follow) */
-#define KRB_ACCEPT 2 /* Accepted */
-#define KRB_RESPONSE 3 /* Response for mutual auth. */
-
-#ifdef FORWARD
-#define KRB_FORWARD 4 /* Forwarded credentials follow */
-#define KRB_FORWARD_ACCEPT 5 /* Forwarded credentials accepted */
-#define KRB_FORWARD_REJECT 6 /* Forwarded credentials rejected */
-#endif /* FORWARD */
-
-static krb5_data auth;
- /* telnetd gets session key from here */
-static krb5_tkt_authent *authdat = NULL;
-/* telnet matches the AP_REQ and AP_REP with this */
-static krb5_authenticator authenticator;
-
-/* some compilers can't hack void *, so we use the Kerberos krb5_pointer,
- which is either void * or char *, depending on the compiler. */
-
-#define Voidptr krb5_pointer
-
-Block session_key;
-
- static int
-Data(ap, type, d, c)
- Authenticator *ap;
- int type;
- Voidptr d;
- int c;
-{
- unsigned char *p = str_data + 4;
- unsigned char *cd = (unsigned char *)d;
-
- if (c == -1)
- c = strlen((char *)cd);
-
- if (auth_debug_mode) {
- printf("%s:%d: [%d] (%d)",
- str_data[3] == TELQUAL_IS ? ">>>IS" : ">>>REPLY",
- str_data[3],
- type, c);
- printd(d, c);
- printf("\r\n");
- }
- *p++ = ap->type;
- *p++ = ap->way;
- *p++ = type;
- while (c-- > 0) {
- if ((*p++ = *cd++) == IAC)
- *p++ = IAC;
- }
- *p++ = IAC;
- *p++ = SE;
- if (str_data[3] == TELQUAL_IS)
- printsub('>', &str_data[2], p - &str_data[2]);
- return(net_write(str_data, p - str_data));
-}
-
- int
-kerberos5_init(ap, server)
- Authenticator *ap;
- int server;
-{
- if (server)
- str_data[3] = TELQUAL_REPLY;
- else
- str_data[3] = TELQUAL_IS;
- krb5_init_ets();
- return(1);
-}
-
- int
-kerberos5_send(ap)
- Authenticator *ap;
-{
- char **realms;
- char *name;
- char *p1, *p2;
- krb5_checksum ksum;
- krb5_octet sum[CRC32_CKSUM_LENGTH];
- krb5_principal server;
- krb5_error_code r;
- krb5_ccache ccache;
- krb5_creds creds; /* telnet gets session key from here */
- extern krb5_flags krb5_kdc_default_options;
- int ap_opts;
-
-#ifdef ENCRYPTION
- krb5_keyblock *newkey = 0;
-#endif /* ENCRYPTION */
-
- ksum.checksum_type = CKSUMTYPE_CRC32;
- ksum.contents = sum;
- ksum.length = sizeof(sum);
- memset((Voidptr )sum, 0, sizeof(sum));
-
- if (!UserNameRequested) {
- if (auth_debug_mode) {
- printf("Kerberos V5: no user name supplied\r\n");
- }
- return(0);
- }
-
- if (r = krb5_cc_default(&ccache)) {
- if (auth_debug_mode) {
- printf("Kerberos V5: could not get default ccache\r\n");
- }
- return(0);
- }
-
- if ((name = malloc(strlen(RemoteHostName)+1)) == NULL) {
- if (auth_debug_mode)
- printf("Out of memory for hostname in Kerberos V5\r\n");
- return(0);
- }
-
- if (r = krb5_get_host_realm(RemoteHostName, &realms)) {
- if (auth_debug_mode)
- printf("Kerberos V5: no realm for %s\r\n", RemoteHostName);
- free(name);
- return(0);
- }
-
- p1 = RemoteHostName;
- p2 = name;
-
- while (*p2 = *p1++) {
- if (isupper(*p2))
- *p2 |= 040;
- ++p2;
- }
-
- if (r = krb5_build_principal_ext(&server,
- strlen(realms[0]), realms[0],
- 4, "host",
- p2 - name, name,
- 0)) {
- if (auth_debug_mode) {
- printf("Kerberos V5: failure setting up principal (%s)\r\n",
- error_message(r));
- }
- free(name);
- krb5_free_host_realm(realms);
- return(0);
- }
-
-
- memset((char *)&creds, 0, sizeof(creds));
- creds.server = server;
-
- if (r = krb5_cc_get_principal(ccache, &creds.client)) {
- if (auth_debug_mode) {
- printf("Kerberos V5: failure on principal (%s)\r\n",
- error_message(r));
- }
- free(name);
- krb5_free_principal(server);
- krb5_free_host_realm(realms);
- return(0);
- }
-
- if (r = krb5_get_credentials(krb5_kdc_default_options, ccache, &creds)) {
- if (auth_debug_mode) {
- printf("Kerberos V5: failure on credentials(%d)\r\n",r);
- }
- free(name);
- krb5_free_host_realm(realms);
- krb5_free_principal(server);
- return(0);
- }
-
- if ((ap->way & AUTH_HOW_MASK) == AUTH_HOW_MUTUAL)
- ap_opts = AP_OPTS_MUTUAL_REQUIRED;
- else
- ap_opts = 0;
-
- r = krb5_mk_req_extended(ap_opts, &ksum, krb5_kdc_default_options, 0,
-#ifdef ENCRYPTION
- &newkey,
-#else /* ENCRYPTION */
- 0,
-#endif /* ENCRYPTION */
- ccache, &creds, &authenticator, &auth);
- /* don't let the key get freed if we clean up the authenticator */
- authenticator.subkey = 0;
-
- free(name);
- krb5_free_host_realm(realms);
- krb5_free_principal(server);
-#ifdef ENCRYPTION
- if (newkey) {
- /* keep the key in our private storage, but don't use it
- yet---see kerberos5_reply() below */
- if (newkey->keytype != KEYTYPE_DES) {
- if (creds.keyblock.keytype == KEYTYPE_DES)
- /* use the session key in credentials instead */
- memmove((char *)session_key,
- (char *)creds.keyblock.contents, sizeof(Block));
- else
- /* XXX ? */;
- } else {
- memmove((char *)session_key, (char *)newkey->contents,
- sizeof(Block));
- }
- krb5_free_keyblock(newkey);
- }
-#endif /* ENCRYPTION */
- if (r) {
- if (auth_debug_mode) {
- printf("Kerberos V5: mk_req failed (%s)\r\n",
- error_message(r));
- }
- return(0);
- }
-
- if (!auth_sendname(UserNameRequested, strlen(UserNameRequested))) {
- if (auth_debug_mode)
- printf("Not enough room for user name\r\n");
- return(0);
- }
- if (!Data(ap, KRB_AUTH, auth.data, auth.length)) {
- if (auth_debug_mode)
- printf("Not enough room for authentication data\r\n");
- return(0);
- }
- if (auth_debug_mode) {
- printf("Sent Kerberos V5 credentials to server\r\n");
- }
- return(1);
-}
-
- void
-kerberos5_is(ap, data, cnt)
- Authenticator *ap;
- unsigned char *data;
- int cnt;
-{
- int r;
- struct hostent *hp;
- char *p1, *p2;
- static char *realm = NULL;
- krb5_principal server;
- krb5_ap_rep_enc_part reply;
- krb5_data outbuf;
-#ifdef ENCRYPTION
- Session_Key skey;
-#endif /* ENCRYPTION */
- char *name;
- char *getenv();
- krb5_data inbuf;
-
- if (cnt-- < 1)
- return;
- switch (*data++) {
- case KRB_AUTH:
- auth.data = (char *)data;
- auth.length = cnt;
-
- if (!(hp = gethostbyname(LocalHostName))) {
- if (auth_debug_mode)
- printf("Cannot resolve local host name\r\n");
- Data(ap, KRB_REJECT, "Unknown local hostname.", -1);
- auth_finished(ap, AUTH_REJECT);
- return;
- }
-
- if (!realm && (krb5_get_default_realm(&realm))) {
- if (auth_debug_mode)
- printf("Could not get default realm\r\n");
- Data(ap, KRB_REJECT, "Could not get default realm.", -1);
- auth_finished(ap, AUTH_REJECT);
- return;
- }
-
- if ((name = malloc(strlen(hp->h_name)+1)) == NULL) {
- if (auth_debug_mode)
- printf("Out of memory for hostname in Kerberos V5\r\n");
- Data(ap, KRB_REJECT, "Out of memory.", -1);
- auth_finished(ap, AUTH_REJECT);
- return;
- }
-
- p1 = hp->h_name;
- p2 = name;
-
- while (*p2 = *p1++) {
- if (isupper(*p2))
- *p2 |= 040;
- ++p2;
- }
-
- if (authdat)
- krb5_free_tkt_authent(authdat);
-
- r = krb5_build_principal_ext(&server,
- strlen(realm), realm,
- 4, "host",
- p2 - name, name,
- 0);
- if (!r) {
- r = krb5_rd_req_simple(&auth, server, 0, &authdat);
- krb5_free_principal(server);
- }
- if (r) {
- char errbuf[128];
-
- errout:
- authdat = 0;
- (void) strcpy(errbuf, "Read req failed: ");
- (void) strcat(errbuf, error_message(r));
- Data(ap, KRB_REJECT, errbuf, -1);
- if (auth_debug_mode)
- printf("%s\r\n", errbuf);
- return;
- }
- free(name);
- if ((ap->way & AUTH_HOW_MASK) == AUTH_HOW_MUTUAL) {
- /* do ap_rep stuff here */
- reply.ctime = authdat->authenticator->ctime;
- reply.cusec = authdat->authenticator->cusec;
- reply.subkey = 0; /* use the one he gave us, so don't
- need to return one here */
- reply.seq_number = 0; /* we don't do seq #'s. */
-
- if (r = krb5_mk_rep(&reply,
- authdat->authenticator->subkey ?
- authdat->authenticator->subkey :
- authdat->ticket->enc_part2->session,
- &outbuf)) {
- goto errout;
- }
- Data(ap, KRB_RESPONSE, outbuf.data, outbuf.length);
- }
- if (krb5_unparse_name(authdat->ticket->enc_part2 ->client,
- &name))
- name = 0;
- Data(ap, KRB_ACCEPT, name, name ? -1 : 0);
- if (auth_debug_mode) {
- printf("Kerberos5 identifies him as ``%s''\r\n",
- name ? name : "");
- }
- auth_finished(ap, AUTH_USER);
-
- free(name);
- if (authdat->authenticator->subkey &&
- authdat->authenticator->subkey->keytype == KEYTYPE_DES) {
- memmove((Voidptr )session_key,
- (Voidptr )authdat->authenticator->subkey->contents,
- sizeof(Block));
- } else if (authdat->ticket->enc_part2->session->keytype ==
- KEYTYPE_DES) {
- memmove((Voidptr )session_key,
- (Voidptr )authdat->ticket->enc_part2->session->contents,
- sizeof(Block));
- } else
- break;
-
-#ifdef ENCRYPTION
- skey.type = SK_DES;
- skey.length = 8;
- skey.data = session_key;
- encrypt_session_key(&skey, 1);
-#endif /* ENCRYPTION */
- break;
-#ifdef FORWARD
- case KRB_FORWARD:
- inbuf.data = (char *)data;
- inbuf.length = cnt;
- if (r = rd_and_store_for_creds(&inbuf, authdat->ticket,
- UserNameRequested)) {
- char errbuf[128];
-
- (void) strcpy(errbuf, "Read forwarded creds failed: ");
- (void) strcat(errbuf, error_message(r));
- Data(ap, KRB_FORWARD_REJECT, errbuf, -1);
- if (auth_debug_mode)
- printf("Could not read forwarded credentials\r\n");
- }
- else
- Data(ap, KRB_FORWARD_ACCEPT, 0, 0);
- if (auth_debug_mode)
- printf("Forwarded credentials obtained\r\n");
- break;
-#endif /* FORWARD */
- default:
- if (auth_debug_mode)
- printf("Unknown Kerberos option %d\r\n", data[-1]);
- Data(ap, KRB_REJECT, 0, 0);
- break;
- }
-}
-
- void
-kerberos5_reply(ap, data, cnt)
- Authenticator *ap;
- unsigned char *data;
- int cnt;
-{
- Session_Key skey;
- static int mutual_complete = 0;
-
- if (cnt-- < 1)
- return;
- switch (*data++) {
- case KRB_REJECT:
- if (cnt > 0) {
- printf("[ Kerberos V5 refuses authentication because %.*s ]\r\n",
- cnt, data);
- } else
- printf("[ Kerberos V5 refuses authentication ]\r\n");
- auth_send_retry();
- return;
- case KRB_ACCEPT:
- if ((ap->way & AUTH_HOW_MASK) == AUTH_HOW_MUTUAL &&
- !mutual_complete) {
- printf("[ Kerberos V5 accepted you, but didn't provide mutual authentication! ]\n");
- auth_send_retry();
- return;
- }
- if (cnt)
- printf("[ Kerberos V5 accepts you as ``%.*s'' ]\n", cnt, data);
- else
- printf("[ Kerberos V5 accepts you ]\n");
- auth_finished(ap, AUTH_USER);
-#ifdef FORWARD
- if (forward_flags & OPTS_FORWARD_CREDS)
- kerberos5_forward(ap);
-#endif /* FORWARD */
- break;
- case KRB_RESPONSE:
- if ((ap->way & AUTH_HOW_MASK) == AUTH_HOW_MUTUAL) {
- /* the rest of the reply should contain a krb_ap_rep */
- krb5_ap_rep_enc_part *reply;
- krb5_data inbuf;
- krb5_error_code r;
- krb5_keyblock tmpkey;
-
- inbuf.length = cnt;
- inbuf.data = (char *)data;
-
- tmpkey.keytype = KEYTYPE_DES;
- tmpkey.contents = session_key;
- tmpkey.length = sizeof(Block);
-
- if (r = krb5_rd_rep(&inbuf, &tmpkey, &reply)) {
- printf("[ Mutual authentication failed: %s ]\n",
- error_message(r));
- auth_send_retry();
- return;
- }
- if (reply->ctime != authenticator.ctime ||
- reply->cusec != authenticator.cusec) {
- printf("[ Mutual authentication failed (mismatched KRB_AP_REP) ]\n");
- auth_send_retry();
- return;
- }
- krb5_free_ap_rep_enc_part(reply);
-#ifdef ENCRYPTION
- skey.type = SK_DES;
- skey.length = 8;
- skey.data = session_key;
- encrypt_session_key(&skey, 0);
-#endif /* ENCRYPTION */
- mutual_complete = 1;
- }
- return;
-#ifdef FORWARD
- case KRB_FORWARD_ACCEPT:
- printf("[ Kerberos V5 accepted forwarded credentials ]\n");
- return;
- case KRB_FORWARD_REJECT:
- printf("[ Kerberos V5 refuses forwarded credentials because %.*s ]\r\n",
- cnt, data);
- return;
-#endif /* FORWARD */
- default:
- if (auth_debug_mode)
- printf("Unknown Kerberos option %d\r\n", data[-1]);
- return;
- }
-}
-
- int
-kerberos5_status(ap, name, level)
- Authenticator *ap;
- char *name;
- int level;
-{
- if (level < AUTH_USER)
- return(level);
-
- if (UserNameRequested &&
- krb5_kuserok(authdat->ticket->enc_part2->client, UserNameRequested))
- {
- strcpy(name, UserNameRequested);
- return(AUTH_VALID);
- } else
- return(AUTH_USER);
-}
-
-#define BUMP(buf, len) while (*(buf)) {++(buf), --(len);}
-#define ADDC(buf, len, c) if ((len) > 0) {*(buf)++ = (c); --(len);}
-
- void
-kerberos5_printsub(data, cnt, buf, buflen)
- unsigned char *data, *buf;
- int cnt, buflen;
-{
- char lbuf[32];
- register int i;
-
- buf[buflen-1] = '\0'; /* make sure its NULL terminated */
- buflen -= 1;
-
- switch(data[3]) {
- case KRB_REJECT: /* Rejected (reason might follow) */
- strncpy((char *)buf, " REJECT ", buflen);
- goto common;
-
- case KRB_ACCEPT: /* Accepted (name might follow) */
- strncpy((char *)buf, " ACCEPT ", buflen);
- common:
- BUMP(buf, buflen);
- if (cnt <= 4)
- break;
- ADDC(buf, buflen, '"');
- for (i = 4; i < cnt; i++)
- ADDC(buf, buflen, data[i]);
- ADDC(buf, buflen, '"');
- ADDC(buf, buflen, '\0');
- break;
-
-
- case KRB_AUTH: /* Authentication data follows */
- strncpy((char *)buf, " AUTH", buflen);
- goto common2;
-
- case KRB_RESPONSE:
- strncpy((char *)buf, " RESPONSE", buflen);
- goto common2;
-
-#ifdef FORWARD
- case KRB_FORWARD: /* Forwarded credentials follow */
- strncpy((char *)buf, " FORWARD", buflen);
- goto common2;
-
- case KRB_FORWARD_ACCEPT: /* Forwarded credentials accepted */
- strncpy((char *)buf, " FORWARD_ACCEPT", buflen);
- goto common2;
-
- case KRB_FORWARD_REJECT: /* Forwarded credentials rejected */
- /* (reason might follow) */
- strncpy((char *)buf, " FORWARD_REJECT", buflen);
- goto common2;
-#endif /* FORWARD */
-
- default:
- sprintf(lbuf, " %d (unknown)", data[3]);
- strncpy((char *)buf, lbuf, buflen);
- common2:
- BUMP(buf, buflen);
- for (i = 4; i < cnt; i++) {
- sprintf(lbuf, " %d", data[i]);
- strncpy((char *)buf, lbuf, buflen);
- BUMP(buf, buflen);
- }
- break;
- }
-}
-
-#ifdef FORWARD
- void
-kerberos5_forward(ap)
- Authenticator *ap;
-{
- struct hostent *hp;
- krb5_creds *local_creds;
- krb5_error_code r;
- krb5_data forw_creds;
- extern krb5_cksumtype krb5_kdc_req_sumtype;
- krb5_ccache ccache;
- int i;
-
- if (!(local_creds = (krb5_creds *)
- calloc(1, sizeof(*local_creds)))) {
- if (auth_debug_mode)
- printf("Kerberos V5: could not allocate memory for credentials\r\n");
- return;
- }
-
- if (r = krb5_sname_to_principal(RemoteHostName, "host", 1,
- &local_creds->server)) {
- if (auth_debug_mode)
- printf("Kerberos V5: could not build server name - %s\r\n",
- error_message(r));
- krb5_free_creds(local_creds);
- return;
- }
-
- if (r = krb5_cc_default(&ccache)) {
- if (auth_debug_mode)
- printf("Kerberos V5: could not get default ccache - %s\r\n",
- error_message(r));
- krb5_free_creds(local_creds);
- return;
- }
-
- if (r = krb5_cc_get_principal(ccache, &local_creds->client)) {
- if (auth_debug_mode)
- printf("Kerberos V5: could not get default principal - %s\r\n",
- error_message(r));
- krb5_free_creds(local_creds);
- return;
- }
-
- /* Get ticket from credentials cache */
- if (r = krb5_get_credentials(KRB5_GC_CACHED, ccache, local_creds)) {
- if (auth_debug_mode)
- printf("Kerberos V5: could not obtain credentials - %s\r\n",
- error_message(r));
- krb5_free_creds(local_creds);
- return;
- }
-
- if (r = get_for_creds(ETYPE_DES_CBC_CRC,
- krb5_kdc_req_sumtype,
- RemoteHostName,
- local_creds->client,
- &local_creds->keyblock,
- forward_flags & OPTS_FORWARDABLE_CREDS,
- &forw_creds)) {
- if (auth_debug_mode)
- printf("Kerberos V5: error getting forwarded creds - %s\r\n",
- error_message(r));
- krb5_free_creds(local_creds);
- return;
- }
-
- /* Send forwarded credentials */
- if (!Data(ap, KRB_FORWARD, forw_creds.data, forw_creds.length)) {
- if (auth_debug_mode)
- printf("Not enough room for authentication data\r\n");
- }
- else {
- if (auth_debug_mode)
- printf("Forwarded local Kerberos V5 credentials to server\r\n");
- }
-
- krb5_free_creds(local_creds);
-}
-#endif /* FORWARD */
-
-#endif /* KRB5 */
diff --git a/secure/lib/libtelnet/key-proto.h b/secure/lib/libtelnet/key-proto.h
deleted file mode 100644
index 9668a775be50..000000000000
--- a/secure/lib/libtelnet/key-proto.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/*-
- * Copyright (c) 1991, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)key-proto.h 8.1 (Berkeley) 6/4/93
- */
-
-/*
- * Copyright (C) 1990 by the Massachusetts Institute of Technology
- *
- * Export of this software from the United States of America is assumed
- * to require a specific license from the United States Government.
- * It is the responsibility of any person or organization contemplating
- * export to obtain such a license before exporting.
- *
- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
- * distribute this software and its documentation for any purpose and
- * without fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright notice and
- * this permission notice appear in supporting documentation, and that
- * the name of M.I.T. not be used in advertising or publicity pertaining
- * to distribution of the software without specific, written prior
- * permission. M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is" without express
- * or implied warranty.
- */
-
-#ifndef __KEY_PROTO__
-#define __KEY_PROTO__
-
-#if !defined(P)
-#ifdef __STDC__
-#define P(x) x
-#else
-#define P(x) ()
-#endif
-#endif
-
-int key_file_exists P((void));
-void key_lookup P((unsigned char *, Block));
-void key_stream_init P((Block, Block, int));
-unsigned char key_stream P((int, int));
-#endif
diff --git a/secure/lib/libtelnet/krb4encpwd.c b/secure/lib/libtelnet/krb4encpwd.c
deleted file mode 100644
index 00f32e8532b9..000000000000
--- a/secure/lib/libtelnet/krb4encpwd.c
+++ /dev/null
@@ -1,446 +0,0 @@
-/*-
- * Copyright (c) 1992, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)krb4encpwd.c 8.3 (Berkeley) 5/30/95";
-#endif /* not lint */
-
-
-#ifdef KRB4_ENCPWD
-/*
- * COPYRIGHT (C) 1990 DIGITAL EQUIPMENT CORPORATION
- * ALL RIGHTS RESERVED
- *
- * "Digital Equipment Corporation authorizes the reproduction,
- * distribution and modification of this software subject to the following
- * restrictions:
- *
- * 1. Any partial or whole copy of this software, or any modification
- * thereof, must include this copyright notice in its entirety.
- *
- * 2. This software is supplied "as is" with no warranty of any kind,
- * expressed or implied, for any purpose, including any warranty of fitness
- * or merchantibility. DIGITAL assumes no responsibility for the use or
- * reliability of this software, nor promises to provide any form of
- * support for it on any basis.
- *
- * 3. Distribution of this software is authorized only if no profit or
- * remuneration of any kind is received in exchange for such distribution.
- *
- * 4. This software produces public key authentication certificates
- * bearing an expiration date established by DIGITAL and RSA Data
- * Security, Inc. It may cease to generate certificates after the expiration
- * date. Any modification of this software that changes or defeats
- * the expiration date or its effect is unauthorized.
- *
- * 5. Software that will renew or extend the expiration date of
- * authentication certificates produced by this software may be obtained
- * from RSA Data Security, Inc., 10 Twin Dolphin Drive, Redwood City, CA
- * 94065, (415)595-8782, or from DIGITAL"
- *
- */
-
-#include <sys/types.h>
-#include <arpa/telnet.h>
-#include <pwd.h>
-#include <stdio.h>
-
-#include <des.h>
-#include <krb.h>
-#ifdef __STDC__
-#include <stdlib.h>
-#endif
-#ifdef NO_STRING_H
-#include <strings.h>
-#else
-#include <string.h>
-#endif
-
-#include "encrypt.h"
-#include "auth.h"
-#include "misc.h"
-
-int krb_mk_encpwd_req P((KTEXT, char *, char *, char *, char *, char *, char *));
-int krb_rd_encpwd_req P((KTEXT, char *, char *, u_long, AUTH_DAT *, char *, char *, char *, char *));
-
-extern auth_debug_mode;
-
-static unsigned char str_data[1024] = { IAC, SB, TELOPT_AUTHENTICATION, 0,
- AUTHTYPE_KRB4_ENCPWD, };
-static unsigned char str_name[1024] = { IAC, SB, TELOPT_AUTHENTICATION,
- TELQUAL_NAME, };
-
-#define KRB4_ENCPWD_AUTH 0 /* Authentication data follows */
-#define KRB4_ENCPWD_REJECT 1 /* Rejected (reason might follow) */
-#define KRB4_ENCPWD_ACCEPT 2 /* Accepted */
-#define KRB4_ENCPWD_CHALLENGE 3 /* Challenge for mutual auth. */
-#define KRB4_ENCPWD_ACK 4 /* Acknowledge */
-
-#define KRB_SERVICE_NAME "rcmd"
-
-static KTEXT_ST auth;
-static char name[ANAME_SZ];
-static char user_passwd[ANAME_SZ];
-static AUTH_DAT adat = { 0 };
-#ifdef ENCRYPTION
-static Block session_key = { 0 };
-#endif /* ENCRYPTION */
-static Schedule sched;
-static char challenge[REALM_SZ];
-
- static int
-Data(ap, type, d, c)
- Authenticator *ap;
- int type;
- void *d;
- int c;
-{
- unsigned char *p = str_data + 4;
- unsigned char *cd = (unsigned char *)d;
-
- if (c == -1)
- c = strlen((char *)cd);
-
- if (0) {
- printf("%s:%d: [%d] (%d)",
- str_data[3] == TELQUAL_IS ? ">>>IS" : ">>>REPLY",
- str_data[3],
- type, c);
- printd(d, c);
- printf("\r\n");
- }
- *p++ = ap->type;
- *p++ = ap->way;
- *p++ = type;
- while (c-- > 0) {
- if ((*p++ = *cd++) == IAC)
- *p++ = IAC;
- }
- *p++ = IAC;
- *p++ = SE;
- if (str_data[3] == TELQUAL_IS)
- printsub('>', &str_data[2], p - (&str_data[2]));
- return(net_write(str_data, p - str_data));
-}
-
- int
-krb4encpwd_init(ap, server)
- Authenticator *ap;
- int server;
-{
- char hostname[80], *cp, *realm;
- C_Block skey;
-
- if (server) {
- str_data[3] = TELQUAL_REPLY;
- } else {
- str_data[3] = TELQUAL_IS;
- gethostname(hostname, sizeof(hostname));
- realm = krb_realmofhost(hostname);
- cp = strchr(hostname, '.');
- if (*cp != NULL) *cp = NULL;
- if (read_service_key(KRB_SERVICE_NAME, hostname, realm, 0,
- KEYFILE, (char *)skey)) {
- return(0);
- }
- }
- return(1);
-}
-
- int
-krb4encpwd_send(ap)
- Authenticator *ap;
-{
-
- printf("[ Trying KRB4ENCPWD ... ]\n");
- if (!UserNameRequested) {
- return(0);
- }
- if (!auth_sendname(UserNameRequested, strlen(UserNameRequested))) {
- return(0);
- }
-
- if (!Data(ap, KRB4_ENCPWD_ACK, (void *)NULL, 0)) {
- return(0);
- }
-
- return(1);
-}
-
- void
-krb4encpwd_is(ap, data, cnt)
- Authenticator *ap;
- unsigned char *data;
- int cnt;
-{
- Session_Key skey;
- Block datablock;
- char r_passwd[ANAME_SZ], r_user[ANAME_SZ];
- char lhostname[ANAME_SZ], *cp;
- int r;
- time_t now;
-
- if (cnt-- < 1)
- return;
- switch (*data++) {
- case KRB4_ENCPWD_AUTH:
- memmove((void *)auth.dat, (void *)data, auth.length = cnt);
-
- gethostname(lhostname, sizeof(lhostname));
- if ((cp = strchr(lhostname, '.')) != 0) *cp = '\0';
-
- if (r = krb_rd_encpwd_req(&auth, KRB_SERVICE_NAME, lhostname, 0, &adat, NULL, challenge, r_user, r_passwd)) {
- Data(ap, KRB4_ENCPWD_REJECT, (void *)"Auth failed", -1);
- auth_finished(ap, AUTH_REJECT);
- return;
- }
- auth_encrypt_userpwd(r_passwd);
- if (passwdok(UserNameRequested, UserPassword) == 0) {
- /*
- * illegal username and password
- */
- Data(ap, KRB4_ENCPWD_REJECT, (void *)"Illegal password", -1);
- auth_finished(ap, AUTH_REJECT);
- return;
- }
-
- memmove((void *)session_key, (void *)adat.session, sizeof(Block));
- Data(ap, KRB4_ENCPWD_ACCEPT, (void *)0, 0);
- auth_finished(ap, AUTH_USER);
- break;
-
- case KRB4_ENCPWD_CHALLENGE:
- /*
- * Take the received random challenge text and save
- * for future authentication.
- */
- memmove((void *)challenge, (void *)data, sizeof(Block));
- break;
-
-
- case KRB4_ENCPWD_ACK:
- /*
- * Receive ack, if mutual then send random challenge
- */
-
- /*
- * If we are doing mutual authentication, get set up to send
- * the challenge, and verify it when the response comes back.
- */
-
- if ((ap->way & AUTH_HOW_MASK) == AUTH_HOW_MUTUAL) {
- register int i;
-
- time(&now);
- sprintf(challenge, "%x", now);
- Data(ap, KRB4_ENCPWD_CHALLENGE, (void *)challenge, strlen(challenge));
- }
- break;
-
- default:
- Data(ap, KRB4_ENCPWD_REJECT, 0, 0);
- break;
- }
-}
-
-
- void
-krb4encpwd_reply(ap, data, cnt)
- Authenticator *ap;
- unsigned char *data;
- int cnt;
-{
- Session_Key skey;
- KTEXT_ST krb_token;
- Block enckey;
- CREDENTIALS cred;
- int r;
- char randchal[REALM_SZ], instance[ANAME_SZ], *cp;
- char hostname[80], *realm;
-
- if (cnt-- < 1)
- return;
- switch (*data++) {
- case KRB4_ENCPWD_REJECT:
- if (cnt > 0) {
- printf("[ KRB4_ENCPWD refuses authentication because %.*s ]\r\n",
- cnt, data);
- } else
- printf("[ KRB4_ENCPWD refuses authentication ]\r\n");
- auth_send_retry();
- return;
- case KRB4_ENCPWD_ACCEPT:
- printf("[ KRB4_ENCPWD accepts you ]\n");
- auth_finished(ap, AUTH_USER);
- return;
- case KRB4_ENCPWD_CHALLENGE:
- /*
- * Verify that the response to the challenge is correct.
- */
-
- gethostname(hostname, sizeof(hostname));
- realm = krb_realmofhost(hostname);
- memmove((void *)challenge, (void *)data, cnt);
- memset(user_passwd, 0, sizeof(user_passwd));
- local_des_read_pw_string(user_passwd, sizeof(user_passwd)-1, "Password: ", 0);
- UserPassword = user_passwd;
- Challenge = challenge;
- strcpy(instance, RemoteHostName);
- if ((cp = strchr(instance, '.')) != 0) *cp = '\0';
-
- if (r = krb_mk_encpwd_req(&krb_token, KRB_SERVICE_NAME, instance, realm, Challenge, UserNameRequested, user_passwd)) {
- krb_token.length = 0;
- }
-
- if (!Data(ap, KRB4_ENCPWD_AUTH, (void *)krb_token.dat, krb_token.length)) {
- return;
- }
-
- break;
-
- default:
- return;
- }
-}
-
- int
-krb4encpwd_status(ap, name, level)
- Authenticator *ap;
- char *name;
- int level;
-{
-
- if (level < AUTH_USER)
- return(level);
-
- if (UserNameRequested && passwdok(UserNameRequested, UserPassword)) {
- strcpy(name, UserNameRequested);
- return(AUTH_VALID);
- } else {
- return(AUTH_USER);
- }
-}
-
-#define BUMP(buf, len) while (*(buf)) {++(buf), --(len);}
-#define ADDC(buf, len, c) if ((len) > 0) {*(buf)++ = (c); --(len);}
-
- void
-krb4encpwd_printsub(data, cnt, buf, buflen)
- unsigned char *data, *buf;
- int cnt, buflen;
-{
- char lbuf[32];
- register int i;
-
- buf[buflen-1] = '\0'; /* make sure its NULL terminated */
- buflen -= 1;
-
- switch(data[3]) {
- case KRB4_ENCPWD_REJECT: /* Rejected (reason might follow) */
- strncpy((char *)buf, " REJECT ", buflen);
- goto common;
-
- case KRB4_ENCPWD_ACCEPT: /* Accepted (name might follow) */
- strncpy((char *)buf, " ACCEPT ", buflen);
- common:
- BUMP(buf, buflen);
- if (cnt <= 4)
- break;
- ADDC(buf, buflen, '"');
- for (i = 4; i < cnt; i++)
- ADDC(buf, buflen, data[i]);
- ADDC(buf, buflen, '"');
- ADDC(buf, buflen, '\0');
- break;
-
- case KRB4_ENCPWD_AUTH: /* Authentication data follows */
- strncpy((char *)buf, " AUTH", buflen);
- goto common2;
-
- case KRB4_ENCPWD_CHALLENGE:
- strncpy((char *)buf, " CHALLENGE", buflen);
- goto common2;
-
- case KRB4_ENCPWD_ACK:
- strncpy((char *)buf, " ACK", buflen);
- goto common2;
-
- default:
- sprintf(lbuf, " %d (unknown)", data[3]);
- strncpy((char *)buf, lbuf, buflen);
- common2:
- BUMP(buf, buflen);
- for (i = 4; i < cnt; i++) {
- sprintf(lbuf, " %d", data[i]);
- strncpy((char *)buf, lbuf, buflen);
- BUMP(buf, buflen);
- }
- break;
- }
-}
-
-int passwdok(name, passwd)
-char *name, *passwd;
-{
- char *crypt();
- char *salt, *p;
- struct passwd *pwd;
- int passwdok_status = 0;
-
- if (pwd = getpwnam(name))
- salt = pwd->pw_passwd;
- else salt = "xx";
-
- p = crypt(passwd, salt);
-
- if (pwd && !strcmp(p, pwd->pw_passwd)) {
- passwdok_status = 1;
- } else passwdok_status = 0;
- return(passwdok_status);
-}
-
-#endif
-
-#ifdef notdef
-
-prkey(msg, key)
- char *msg;
- unsigned char *key;
-{
- register int i;
- printf("%s:", msg);
- for (i = 0; i < 8; i++)
- printf(" %3d", key[i]);
- printf("\r\n");
-}
-#endif
diff --git a/secure/lib/libtelnet/misc.c b/secure/lib/libtelnet/misc.c
deleted file mode 100644
index 9565900a391e..000000000000
--- a/secure/lib/libtelnet/misc.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/*-
- * Copyright (c) 1991, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)misc.c 8.1 (Berkeley) 6/4/93";
-#endif /* not lint */
-
-#include "misc.h"
-
-char *RemoteHostName;
-char *LocalHostName;
-char *UserNameRequested = 0;
-int ConnectedCount = 0;
-
- void
-auth_encrypt_init(local, remote, name, server)
- char *local;
- char *remote;
- char *name;
- int server;
-{
- RemoteHostName = remote;
- LocalHostName = local;
-#if defined(AUTHENTICATION)
- auth_init(name, server);
-#endif
-#ifdef ENCRYPTION
- encrypt_init(name, server);
-#endif /* ENCRYPTION */
- if (UserNameRequested) {
- free(UserNameRequested);
- UserNameRequested = 0;
- }
-}
-
- void
-auth_encrypt_user(name)
- char *name;
-{
- extern char *strdup();
-
- if (UserNameRequested)
- free(UserNameRequested);
- UserNameRequested = name ? strdup(name) : 0;
-}
-
- void
-auth_encrypt_connect(cnt)
- int cnt;
-{
-}
-
- void
-printd(data, cnt)
- unsigned char *data;
- int cnt;
-{
- if (cnt > 16)
- cnt = 16;
- while (cnt-- > 0) {
- printf(" %02x", *data);
- ++data;
- }
-}
diff --git a/secure/lib/libtelnet/read_password.c b/secure/lib/libtelnet/read_password.c
deleted file mode 100644
index 4ae412c5fc61..000000000000
--- a/secure/lib/libtelnet/read_password.c
+++ /dev/null
@@ -1,145 +0,0 @@
-/*-
- * Copyright (c) 1992, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)read_password.c 8.3 (Berkeley) 5/30/95";
-#endif /* not lint */
-
-/*
- * $Source: /home/ncvs/src/secure/lib/libtelnet/read_password.c,v $
- * $Author: pst $
- *
- * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- *
- * For copying and distribution information, please see the file
- * <mit-copyright.h>.
- *
- * This routine prints the supplied string to standard
- * output as a prompt, and reads a password string without
- * echoing.
- */
-
-#if defined(RSA_ENCPWD) || defined(KRB4_ENCPWD)
-
-#include <stdio.h>
-#include <strings.h>
-#include <sys/ioctl.h>
-#include <signal.h>
-#include <setjmp.h>
-
-static jmp_buf env;
-
-/*** Routines ****************************************************** */
-/*
- * This version just returns the string, doesn't map to key.
- *
- * Returns 0 on success, non-zero on failure.
- */
-
-int
-local_des_read_pw_string(s,max,prompt,verify)
- char *s;
- int max;
- char *prompt;
- int verify;
-{
- int ok = 0;
- char *ptr;
-
- jmp_buf old_env;
- struct sgttyb tty_state;
- char key_string[BUFSIZ];
-
- if (max > BUFSIZ) {
- return -1;
- }
-
- /* XXX assume jmp_buf is typedef'ed to an array */
- memmove((char *)env, (char *)old_env, sizeof(env));
- if (setjmp(env))
- goto lose;
-
- /* save terminal state*/
- if (ioctl(0,TIOCGETP,(char *)&tty_state) == -1)
- return -1;
-/*
- push_signals();
-*/
- /* Turn off echo */
- tty_state.sg_flags &= ~ECHO;
- if (ioctl(0,TIOCSETP,(char *)&tty_state) == -1)
- return -1;
- while (!ok) {
- (void) printf(prompt);
- (void) fflush(stdout);
- while (!fgets(s, max, stdin));
-
- if ((ptr = strchr(s, '\n')))
- *ptr = '\0';
- if (verify) {
- printf("\nVerifying, please re-enter %s",prompt);
- (void) fflush(stdout);
- if (!fgets(key_string, sizeof(key_string), stdin)) {
- clearerr(stdin);
- continue;
- }
- if ((ptr = strchr(key_string, '\n')))
- *ptr = '\0';
- if (strcmp(s,key_string)) {
- printf("\n\07\07Mismatch - try again\n");
- (void) fflush(stdout);
- continue;
- }
- }
- ok = 1;
- }
-
-lose:
- if (!ok)
- memset(s, 0, max);
- printf("\n");
- /* turn echo back on */
- tty_state.sg_flags |= ECHO;
- if (ioctl(0,TIOCSETP,(char *)&tty_state))
- ok = 0;
-/*
- pop_signals();
-*/
- memmove((char *)old_env, (char *)env, sizeof(env));
- if (verify)
- memset(key_string, 0, sizeof (key_string));
- s[max-1] = 0; /* force termination */
- return !ok; /* return nonzero if not okay */
-}
-#endif /* defined(RSA_ENCPWD) || defined(KRB4_ENCPWD) */
diff --git a/secure/lib/libtelnet/rsaencpwd.c b/secure/lib/libtelnet/rsaencpwd.c
deleted file mode 100644
index 3492132a5df2..000000000000
--- a/secure/lib/libtelnet/rsaencpwd.c
+++ /dev/null
@@ -1,492 +0,0 @@
-/*-
- * Copyright (c) 1992, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)rsaencpwd.c 8.3 (Berkeley) 5/30/95";
-#endif /* not lint */
-
-
-#ifdef RSA_ENCPWD
-/*
- * COPYRIGHT (C) 1990 DIGITAL EQUIPMENT CORPORATION
- * ALL RIGHTS RESERVED
- *
- * "Digital Equipment Corporation authorizes the reproduction,
- * distribution and modification of this software subject to the following
- * restrictions:
- *
- * 1. Any partial or whole copy of this software, or any modification
- * thereof, must include this copyright notice in its entirety.
- *
- * 2. This software is supplied "as is" with no warranty of any kind,
- * expressed or implied, for any purpose, including any warranty of fitness
- * or merchantibility. DIGITAL assumes no responsibility for the use or
- * reliability of this software, nor promises to provide any form of
- * support for it on any basis.
- *
- * 3. Distribution of this software is authorized only if no profit or
- * remuneration of any kind is received in exchange for such distribution.
- *
- * 4. This software produces public key authentication certificates
- * bearing an expiration date established by DIGITAL and RSA Data
- * Security, Inc. It may cease to generate certificates after the expiration
- * date. Any modification of this software that changes or defeats
- * the expiration date or its effect is unauthorized.
- *
- * 5. Software that will renew or extend the expiration date of
- * authentication certificates produced by this software may be obtained
- * from RSA Data Security, Inc., 10 Twin Dolphin Drive, Redwood City, CA
- * 94065, (415)595-8782, or from DIGITAL"
- *
- */
-
-#include <sys/types.h>
-#include <arpa/telnet.h>
-#include <pwd.h>
-#include <stdio.h>
-
-#ifdef __STDC__
-#include <stdlib.h>
-#endif
-#ifdef NO_STRING_H
-#include <strings.h>
-#else
-#include <string.h>
-#endif
-
-#include "encrypt.h"
-#include "auth.h"
-#include "misc.h"
-#include "cdc.h"
-
-extern auth_debug_mode;
-
-static unsigned char str_data[1024] = { IAC, SB, TELOPT_AUTHENTICATION, 0,
- AUTHTYPE_RSA_ENCPWD, };
-static unsigned char str_name[1024] = { IAC, SB, TELOPT_AUTHENTICATION,
- TELQUAL_NAME, };
-
-#define RSA_ENCPWD_AUTH 0 /* Authentication data follows */
-#define RSA_ENCPWD_REJECT 1 /* Rejected (reason might follow) */
-#define RSA_ENCPWD_ACCEPT 2 /* Accepted */
-#define RSA_ENCPWD_CHALLENGEKEY 3 /* Challenge and public key */
-
-#define NAME_SZ 40
-#define CHAL_SZ 20
-#define PWD_SZ 40
-
-static KTEXT_ST auth;
-static char name[NAME_SZ];
-static char user_passwd[PWD_SZ];
-static char key_file[2*NAME_SZ];
-static char lhostname[NAME_SZ];
-static char challenge[CHAL_SZ];
-static int challenge_len;
-
- static int
-Data(ap, type, d, c)
- Authenticator *ap;
- int type;
- void *d;
- int c;
-{
- unsigned char *p = str_data + 4;
- unsigned char *cd = (unsigned char *)d;
-
- if (c == -1)
- c = strlen((char *)cd);
-
- if (0) {
- printf("%s:%d: [%d] (%d)",
- str_data[3] == TELQUAL_IS ? ">>>IS" : ">>>REPLY",
- str_data[3],
- type, c);
- printd(d, c);
- printf("\r\n");
- }
- *p++ = ap->type;
- *p++ = ap->way;
- if (type != NULL) *p++ = type;
- while (c-- > 0) {
- if ((*p++ = *cd++) == IAC)
- *p++ = IAC;
- }
- *p++ = IAC;
- *p++ = SE;
- if (str_data[3] == TELQUAL_IS)
- printsub('>', &str_data[2], p - (&str_data[2]));
- return(net_write(str_data, p - str_data));
-}
-
- int
-rsaencpwd_init(ap, server)
- Authenticator *ap;
- int server;
-{
- char *cp;
- FILE *fp;
-
- if (server) {
- str_data[3] = TELQUAL_REPLY;
- memset(key_file, 0, sizeof(key_file));
- gethostname(lhostname, sizeof(lhostname));
- if ((cp = strchr(lhostname, '.')) != 0) *cp = '\0';
- strcpy(key_file, "/etc/.");
- strcat(key_file, lhostname);
- strcat(key_file, "_privkey");
- if ((fp=fopen(key_file, "r"))==NULL) return(0);
- fclose(fp);
- } else {
- str_data[3] = TELQUAL_IS;
- }
- return(1);
-}
-
- int
-rsaencpwd_send(ap)
- Authenticator *ap;
-{
-
- printf("[ Trying RSAENCPWD ... ]\n");
- if (!UserNameRequested) {
- return(0);
- }
- if (!auth_sendname(UserNameRequested, strlen(UserNameRequested))) {
- return(0);
- }
- if (!Data(ap, NULL, (void *)NULL, 0)) {
- return(0);
- }
-
-
- return(1);
-}
-
- void
-rsaencpwd_is(ap, data, cnt)
- Authenticator *ap;
- unsigned char *data;
- int cnt;
-{
- Session_Key skey;
- Block datablock;
- char r_passwd[PWD_SZ], r_user[NAME_SZ];
- char *cp, key[160];
- char chalkey[160], *ptr;
- FILE *fp;
- int r, i, j, chalkey_len, len;
- time_t now;
-
- cnt--;
- switch (*data++) {
- case RSA_ENCPWD_AUTH:
- memmove((void *)auth.dat, (void *)data, auth.length = cnt);
-
- if ((fp=fopen(key_file, "r"))==NULL) {
- Data(ap, RSA_ENCPWD_REJECT, (void *)"Auth failed", -1);
- auth_finished(ap, AUTH_REJECT);
- return;
- }
- /*
- * get privkey
- */
- fscanf(fp, "%x;", &len);
- for (i=0;i<len;i++) {
- j = getc(fp); key[i]=j;
- }
- fclose(fp);
-
- r = accept_rsa_encpwd(&auth, key, challenge,
- challenge_len, r_passwd);
- if (r < 0) {
- Data(ap, RSA_ENCPWD_REJECT, (void *)"Auth failed", -1);
- auth_finished(ap, AUTH_REJECT);
- return;
- }
- auth_encrypt_userpwd(r_passwd);
- if (rsaencpwd_passwdok(UserNameRequested, UserPassword) == 0) {
- /*
- * illegal username and password
- */
- Data(ap, RSA_ENCPWD_REJECT, (void *)"Illegal password", -1);
- auth_finished(ap, AUTH_REJECT);
- return;
- }
-
- Data(ap, RSA_ENCPWD_ACCEPT, (void *)0, 0);
- auth_finished(ap, AUTH_USER);
- break;
-
-
- case IAC:
-
- /*
- * If we are doing mutual authentication, get set up to send
- * the challenge, and verify it when the response comes back.
- */
- if ((ap->way & AUTH_HOW_MASK) == AUTH_HOW_ONE_WAY) {
- register int i;
-
-
- time(&now);
- if ((now % 2) == 0) {
- sprintf(challenge, "%x", now);
- challenge_len = strlen(challenge);
- } else {
- strcpy(challenge, "randchal");
- challenge_len = 8;
- }
-
- if ((fp=fopen(key_file, "r"))==NULL) {
- Data(ap, RSA_ENCPWD_REJECT, (void *)"Auth failed", -1);
- auth_finished(ap, AUTH_REJECT);
- return;
- }
- /*
- * skip privkey
- */
- fscanf(fp, "%x;", &len);
- for (i=0;i<len;i++) {
- j = getc(fp);
- }
- /*
- * get pubkey
- */
- fscanf(fp, "%x;", &len);
- for (i=0;i<len;i++) {
- j = getc(fp); key[i]=j;
- }
- fclose(fp);
- chalkey[0] = 0x30;
- ptr = (char *) &chalkey[1];
- chalkey_len = 1+NumEncodeLengthOctets(i)+i+1+NumEncodeLengthOctets(challenge_len)+challenge_len;
- EncodeLength(ptr, chalkey_len);
- ptr +=NumEncodeLengthOctets(chalkey_len);
- *ptr++ = 0x04; /* OCTET STRING */
- *ptr++ = challenge_len;
- memmove(ptr, challenge, challenge_len);
- ptr += challenge_len;
- *ptr++ = 0x04; /* OCTET STRING */
- EncodeLength(ptr, i);
- ptr += NumEncodeLengthOctets(i);
- memmove(ptr, key, i);
- chalkey_len = 1+NumEncodeLengthOctets(chalkey_len)+chalkey_len;
- Data(ap, RSA_ENCPWD_CHALLENGEKEY, (void *)chalkey, chalkey_len);
- }
- break;
-
- default:
- Data(ap, RSA_ENCPWD_REJECT, 0, 0);
- break;
- }
-}
-
-
- void
-rsaencpwd_reply(ap, data, cnt)
- Authenticator *ap;
- unsigned char *data;
- int cnt;
-{
- Session_Key skey;
- KTEXT_ST token;
- Block enckey;
- int r, pubkey_len;
- char randchal[CHAL_SZ], *cp;
- char chalkey[160], pubkey[128], *ptr;
-
- if (cnt-- < 1)
- return;
- switch (*data++) {
- case RSA_ENCPWD_REJECT:
- if (cnt > 0) {
- printf("[ RSA_ENCPWD refuses authentication because %.*s ]\r\n",
- cnt, data);
- } else
- printf("[ RSA_ENCPWD refuses authentication ]\r\n");
- auth_send_retry();
- return;
- case RSA_ENCPWD_ACCEPT:
- printf("[ RSA_ENCPWD accepts you ]\n");
- auth_finished(ap, AUTH_USER);
- return;
- case RSA_ENCPWD_CHALLENGEKEY:
- /*
- * Verify that the response to the challenge is correct.
- */
-
- memmove((void *)chalkey, (void *)data, cnt);
- ptr = (char *) &chalkey[0];
- ptr += DecodeHeaderLength(chalkey);
- if (*ptr != 0x04) {
- return;
- }
- *ptr++;
- challenge_len = DecodeValueLength(ptr);
- ptr += NumEncodeLengthOctets(challenge_len);
- memmove(challenge, ptr, challenge_len);
- ptr += challenge_len;
- if (*ptr != 0x04) {
- return;
- }
- *ptr++;
- pubkey_len = DecodeValueLength(ptr);
- ptr += NumEncodeLengthOctets(pubkey_len);
- memmove(pubkey, ptr, pubkey_len);
- memset(user_passwd, 0, sizeof(user_passwd));
- local_des_read_pw_string(user_passwd, sizeof(user_passwd)-1, "Password: ", 0);
- UserPassword = user_passwd;
- Challenge = challenge;
- r = init_rsa_encpwd(&token, user_passwd, challenge, challenge_len, pubkey);
- if (r < 0) {
- token.length = 1;
- }
-
- if (!Data(ap, RSA_ENCPWD_AUTH, (void *)token.dat, token.length)) {
- return;
- }
-
- break;
-
- default:
- return;
- }
-}
-
- int
-rsaencpwd_status(ap, name, level)
- Authenticator *ap;
- char *name;
- int level;
-{
-
- if (level < AUTH_USER)
- return(level);
-
- if (UserNameRequested && rsaencpwd_passwdok(UserNameRequested, UserPassword)) {
- strcpy(name, UserNameRequested);
- return(AUTH_VALID);
- } else {
- return(AUTH_USER);
- }
-}
-
-#define BUMP(buf, len) while (*(buf)) {++(buf), --(len);}
-#define ADDC(buf, len, c) if ((len) > 0) {*(buf)++ = (c); --(len);}
-
- void
-rsaencpwd_printsub(data, cnt, buf, buflen)
- unsigned char *data, *buf;
- int cnt, buflen;
-{
- char lbuf[32];
- register int i;
-
- buf[buflen-1] = '\0'; /* make sure its NULL terminated */
- buflen -= 1;
-
- switch(data[3]) {
- case RSA_ENCPWD_REJECT: /* Rejected (reason might follow) */
- strncpy((char *)buf, " REJECT ", buflen);
- goto common;
-
- case RSA_ENCPWD_ACCEPT: /* Accepted (name might follow) */
- strncpy((char *)buf, " ACCEPT ", buflen);
- common:
- BUMP(buf, buflen);
- if (cnt <= 4)
- break;
- ADDC(buf, buflen, '"');
- for (i = 4; i < cnt; i++)
- ADDC(buf, buflen, data[i]);
- ADDC(buf, buflen, '"');
- ADDC(buf, buflen, '\0');
- break;
-
- case RSA_ENCPWD_AUTH: /* Authentication data follows */
- strncpy((char *)buf, " AUTH", buflen);
- goto common2;
-
- case RSA_ENCPWD_CHALLENGEKEY:
- strncpy((char *)buf, " CHALLENGEKEY", buflen);
- goto common2;
-
- default:
- sprintf(lbuf, " %d (unknown)", data[3]);
- strncpy((char *)buf, lbuf, buflen);
- common2:
- BUMP(buf, buflen);
- for (i = 4; i < cnt; i++) {
- sprintf(lbuf, " %d", data[i]);
- strncpy((char *)buf, lbuf, buflen);
- BUMP(buf, buflen);
- }
- break;
- }
-}
-
-int rsaencpwd_passwdok(name, passwd)
-char *name, *passwd;
-{
- char *crypt();
- char *salt, *p;
- struct passwd *pwd;
- int passwdok_status = 0;
-
- if (pwd = getpwnam(name))
- salt = pwd->pw_passwd;
- else salt = "xx";
-
- p = crypt(passwd, salt);
-
- if (pwd && !strcmp(p, pwd->pw_passwd)) {
- passwdok_status = 1;
- } else passwdok_status = 0;
- return(passwdok_status);
-}
-
-#endif
-
-#ifdef notdef
-
-prkey(msg, key)
- char *msg;
- unsigned char *key;
-{
- register int i;
- printf("%s:", msg);
- for (i = 0; i < 8; i++)
- printf(" %3d", key[i]);
- printf("\r\n");
-}
-#endif
diff --git a/secure/lib/libtelnet/spx.c b/secure/lib/libtelnet/spx.c
deleted file mode 100644
index 5b625c7cfad2..000000000000
--- a/secure/lib/libtelnet/spx.c
+++ /dev/null
@@ -1,588 +0,0 @@
-/*-
- * Copyright (c) 1992, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)spx.c 8.2 (Berkeley) 5/30/95";
-#endif /* not lint */
-
-#ifdef SPX
-/*
- * COPYRIGHT (C) 1990 DIGITAL EQUIPMENT CORPORATION
- * ALL RIGHTS RESERVED
- *
- * "Digital Equipment Corporation authorizes the reproduction,
- * distribution and modification of this software subject to the following
- * restrictions:
- *
- * 1. Any partial or whole copy of this software, or any modification
- * thereof, must include this copyright notice in its entirety.
- *
- * 2. This software is supplied "as is" with no warranty of any kind,
- * expressed or implied, for any purpose, including any warranty of fitness
- * or merchantibility. DIGITAL assumes no responsibility for the use or
- * reliability of this software, nor promises to provide any form of
- * support for it on any basis.
- *
- * 3. Distribution of this software is authorized only if no profit or
- * remuneration of any kind is received in exchange for such distribution.
- *
- * 4. This software produces public key authentication certificates
- * bearing an expiration date established by DIGITAL and RSA Data
- * Security, Inc. It may cease to generate certificates after the expiration
- * date. Any modification of this software that changes or defeats
- * the expiration date or its effect is unauthorized.
- *
- * 5. Software that will renew or extend the expiration date of
- * authentication certificates produced by this software may be obtained
- * from RSA Data Security, Inc., 10 Twin Dolphin Drive, Redwood City, CA
- * 94065, (415)595-8782, or from DIGITAL"
- *
- */
-
-#include <sys/types.h>
-#include <arpa/telnet.h>
-#include <stdio.h>
-#include "gssapi_defs.h"
-#ifdef __STDC__
-#include <stdlib.h>
-#endif
-#ifdef NO_STRING_H
-#include <strings.h>
-#else
-#include <string.h>
-#endif
-
-#include <pwd.h>
-#include "encrypt.h"
-#include "auth.h"
-#include "misc.h"
-
-extern auth_debug_mode;
-
-static unsigned char str_data[1024] = { IAC, SB, TELOPT_AUTHENTICATION, 0,
- AUTHTYPE_SPX, };
-static unsigned char str_name[1024] = { IAC, SB, TELOPT_AUTHENTICATION,
- TELQUAL_NAME, };
-
-#define SPX_AUTH 0 /* Authentication data follows */
-#define SPX_REJECT 1 /* Rejected (reason might follow) */
-#define SPX_ACCEPT 2 /* Accepted */
-
-#ifdef ENCRYPTION
-static Block session_key = { 0 };
-#endif /* ENCRYPTION */
-static Schedule sched;
-static Block challenge = { 0 };
-
-
-/*******************************************************************/
-
-gss_OID_set actual_mechs;
-gss_OID actual_mech_type, output_name_type;
-int major_status, status, msg_ctx = 0, new_status;
-int req_flags = 0, ret_flags, lifetime_rec;
-gss_cred_id_t gss_cred_handle;
-gss_ctx_id_t actual_ctxhandle, context_handle;
-gss_buffer_desc output_token, input_token, input_name_buffer;
-gss_buffer_desc status_string;
-gss_name_t desired_targname, src_name;
-gss_channel_bindings input_chan_bindings;
-char lhostname[GSS_C_MAX_PRINTABLE_NAME];
-char targ_printable[GSS_C_MAX_PRINTABLE_NAME];
-int to_addr=0, from_addr=0;
-char *address;
-gss_buffer_desc fullname_buffer;
-gss_OID fullname_type;
-gss_cred_id_t gss_delegated_cred_handle;
-
-/*******************************************************************/
-
-
-
- static int
-Data(ap, type, d, c)
- Authenticator *ap;
- int type;
- void *d;
- int c;
-{
- unsigned char *p = str_data + 4;
- unsigned char *cd = (unsigned char *)d;
-
- if (c == -1)
- c = strlen((char *)cd);
-
- if (0) {
- printf("%s:%d: [%d] (%d)",
- str_data[3] == TELQUAL_IS ? ">>>IS" : ">>>REPLY",
- str_data[3],
- type, c);
- printd(d, c);
- printf("\r\n");
- }
- *p++ = ap->type;
- *p++ = ap->way;
- *p++ = type;
- while (c-- > 0) {
- if ((*p++ = *cd++) == IAC)
- *p++ = IAC;
- }
- *p++ = IAC;
- *p++ = SE;
- if (str_data[3] == TELQUAL_IS)
- printsub('>', &str_data[2], p - (&str_data[2]));
- return(net_write(str_data, p - str_data));
-}
-
- int
-spx_init(ap, server)
- Authenticator *ap;
- int server;
-{
- gss_cred_id_t tmp_cred_handle;
-
- if (server) {
- str_data[3] = TELQUAL_REPLY;
- gethostname(lhostname, sizeof(lhostname));
- strcpy(targ_printable, "SERVICE:rcmd@");
- strcat(targ_printable, lhostname);
- input_name_buffer.length = strlen(targ_printable);
- input_name_buffer.value = targ_printable;
- major_status = gss_import_name(&status,
- &input_name_buffer,
- GSS_C_NULL_OID,
- &desired_targname);
- major_status = gss_acquire_cred(&status,
- desired_targname,
- 0,
- GSS_C_NULL_OID_SET,
- GSS_C_ACCEPT,
- &tmp_cred_handle,
- &actual_mechs,
- &lifetime_rec);
- if (major_status != GSS_S_COMPLETE) return(0);
- } else {
- str_data[3] = TELQUAL_IS;
- }
- return(1);
-}
-
- int
-spx_send(ap)
- Authenticator *ap;
-{
- Block enckey;
- int r;
-
- gss_OID actual_mech_type, output_name_type;
- int msg_ctx = 0, new_status, status;
- int req_flags = 0, ret_flags, lifetime_rec, major_status;
- gss_buffer_desc output_token, input_token, input_name_buffer;
- gss_buffer_desc output_name_buffer, status_string;
- gss_name_t desired_targname;
- gss_channel_bindings input_chan_bindings;
- char targ_printable[GSS_C_MAX_PRINTABLE_NAME];
- int from_addr=0, to_addr=0, myhostlen, j;
- int deleg_flag=1, mutual_flag=0, replay_flag=0, seq_flag=0;
- char *address;
-
- printf("[ Trying SPX ... ]\n");
- strcpy(targ_printable, "SERVICE:rcmd@");
- strcat(targ_printable, RemoteHostName);
-
- input_name_buffer.length = strlen(targ_printable);
- input_name_buffer.value = targ_printable;
-
- if (!UserNameRequested) {
- return(0);
- }
-
- major_status = gss_import_name(&status,
- &input_name_buffer,
- GSS_C_NULL_OID,
- &desired_targname);
-
-
- major_status = gss_display_name(&status,
- desired_targname,
- &output_name_buffer,
- &output_name_type);
-
- printf("target is '%s'\n", output_name_buffer.value); fflush(stdout);
-
- major_status = gss_release_buffer(&status, &output_name_buffer);
-
- input_chan_bindings = (gss_channel_bindings)
- malloc(sizeof(gss_channel_bindings_desc));
-
- input_chan_bindings->initiator_addrtype = GSS_C_AF_INET;
- input_chan_bindings->initiator_address.length = 4;
- address = (char *) malloc(4);
- input_chan_bindings->initiator_address.value = (char *) address;
- address[0] = ((from_addr & 0xff000000) >> 24);
- address[1] = ((from_addr & 0xff0000) >> 16);
- address[2] = ((from_addr & 0xff00) >> 8);
- address[3] = (from_addr & 0xff);
- input_chan_bindings->acceptor_addrtype = GSS_C_AF_INET;
- input_chan_bindings->acceptor_address.length = 4;
- address = (char *) malloc(4);
- input_chan_bindings->acceptor_address.value = (char *) address;
- address[0] = ((to_addr & 0xff000000) >> 24);
- address[1] = ((to_addr & 0xff0000) >> 16);
- address[2] = ((to_addr & 0xff00) >> 8);
- address[3] = (to_addr & 0xff);
- input_chan_bindings->application_data.length = 0;
-
- req_flags = 0;
- if (deleg_flag) req_flags = req_flags | 1;
- if (mutual_flag) req_flags = req_flags | 2;
- if (replay_flag) req_flags = req_flags | 4;
- if (seq_flag) req_flags = req_flags | 8;
-
- major_status = gss_init_sec_context(&status, /* minor status */
- GSS_C_NO_CREDENTIAL, /* cred handle */
- &actual_ctxhandle, /* ctx handle */
- desired_targname, /* target name */
- GSS_C_NULL_OID, /* mech type */
- req_flags, /* req flags */
- 0, /* time req */
- input_chan_bindings, /* chan binding */
- GSS_C_NO_BUFFER, /* input token */
- &actual_mech_type, /* actual mech */
- &output_token, /* output token */
- &ret_flags, /* ret flags */
- &lifetime_rec); /* time rec */
-
- if ((major_status != GSS_S_COMPLETE) &&
- (major_status != GSS_S_CONTINUE_NEEDED)) {
- gss_display_status(&new_status,
- status,
- GSS_C_MECH_CODE,
- GSS_C_NULL_OID,
- &msg_ctx,
- &status_string);
- printf("%s\n", status_string.value);
- return(0);
- }
-
- if (!auth_sendname(UserNameRequested, strlen(UserNameRequested))) {
- return(0);
- }
-
- if (!Data(ap, SPX_AUTH, (void *)output_token.value, output_token.length)) {
- return(0);
- }
-
- return(1);
-}
-
- void
-spx_is(ap, data, cnt)
- Authenticator *ap;
- unsigned char *data;
- int cnt;
-{
- Session_Key skey;
- Block datablock;
- int r;
-
- if (cnt-- < 1)
- return;
- switch (*data++) {
- case SPX_AUTH:
- input_token.length = cnt;
- input_token.value = (char *) data;
-
- gethostname(lhostname, sizeof(lhostname));
-
- strcpy(targ_printable, "SERVICE:rcmd@");
- strcat(targ_printable, lhostname);
-
- input_name_buffer.length = strlen(targ_printable);
- input_name_buffer.value = targ_printable;
-
- major_status = gss_import_name(&status,
- &input_name_buffer,
- GSS_C_NULL_OID,
- &desired_targname);
-
- major_status = gss_acquire_cred(&status,
- desired_targname,
- 0,
- GSS_C_NULL_OID_SET,
- GSS_C_ACCEPT,
- &gss_cred_handle,
- &actual_mechs,
- &lifetime_rec);
-
- major_status = gss_release_name(&status, desired_targname);
-
- input_chan_bindings = (gss_channel_bindings)
- malloc(sizeof(gss_channel_bindings_desc));
-
- input_chan_bindings->initiator_addrtype = GSS_C_AF_INET;
- input_chan_bindings->initiator_address.length = 4;
- address = (char *) malloc(4);
- input_chan_bindings->initiator_address.value = (char *) address;
- address[0] = ((from_addr & 0xff000000) >> 24);
- address[1] = ((from_addr & 0xff0000) >> 16);
- address[2] = ((from_addr & 0xff00) >> 8);
- address[3] = (from_addr & 0xff);
- input_chan_bindings->acceptor_addrtype = GSS_C_AF_INET;
- input_chan_bindings->acceptor_address.length = 4;
- address = (char *) malloc(4);
- input_chan_bindings->acceptor_address.value = (char *) address;
- address[0] = ((to_addr & 0xff000000) >> 24);
- address[1] = ((to_addr & 0xff0000) >> 16);
- address[2] = ((to_addr & 0xff00) >> 8);
- address[3] = (to_addr & 0xff);
- input_chan_bindings->application_data.length = 0;
-
- major_status = gss_accept_sec_context(&status,
- &context_handle,
- gss_cred_handle,
- &input_token,
- input_chan_bindings,
- &src_name,
- &actual_mech_type,
- &output_token,
- &ret_flags,
- &lifetime_rec,
- &gss_delegated_cred_handle);
-
-
- if (major_status != GSS_S_COMPLETE) {
-
- major_status = gss_display_name(&status,
- src_name,
- &fullname_buffer,
- &fullname_type);
- Data(ap, SPX_REJECT, (void *)"auth failed", -1);
- auth_finished(ap, AUTH_REJECT);
- return;
- }
-
- major_status = gss_display_name(&status,
- src_name,
- &fullname_buffer,
- &fullname_type);
-
-
- Data(ap, SPX_ACCEPT, (void *)output_token.value, output_token.length);
- auth_finished(ap, AUTH_USER);
- break;
-
- default:
- Data(ap, SPX_REJECT, 0, 0);
- break;
- }
-}
-
-
- void
-spx_reply(ap, data, cnt)
- Authenticator *ap;
- unsigned char *data;
- int cnt;
-{
- Session_Key skey;
-
- if (cnt-- < 1)
- return;
- switch (*data++) {
- case SPX_REJECT:
- if (cnt > 0) {
- printf("[ SPX refuses authentication because %.*s ]\r\n",
- cnt, data);
- } else
- printf("[ SPX refuses authentication ]\r\n");
- auth_send_retry();
- return;
- case SPX_ACCEPT:
- printf("[ SPX accepts you ]\n");
- if ((ap->way & AUTH_HOW_MASK) == AUTH_HOW_MUTUAL) {
- /*
- * Send over the encrypted challenge.
- */
- input_token.value = (char *) data;
- input_token.length = cnt;
-
- major_status = gss_init_sec_context(&status, /* minor stat */
- GSS_C_NO_CREDENTIAL, /* cred handle */
- &actual_ctxhandle, /* ctx handle */
- desired_targname, /* target name */
- GSS_C_NULL_OID, /* mech type */
- req_flags, /* req flags */
- 0, /* time req */
- input_chan_bindings, /* chan binding */
- &input_token, /* input token */
- &actual_mech_type, /* actual mech */
- &output_token, /* output token */
- &ret_flags, /* ret flags */
- &lifetime_rec); /* time rec */
-
- if (major_status != GSS_S_COMPLETE) {
- gss_display_status(&new_status,
- status,
- GSS_C_MECH_CODE,
- GSS_C_NULL_OID,
- &msg_ctx,
- &status_string);
- printf("[ SPX mutual response fails ... '%s' ]\r\n",
- status_string.value);
- auth_send_retry();
- return;
- }
- }
- auth_finished(ap, AUTH_USER);
- return;
-
- default:
- return;
- }
-}
-
- int
-spx_status(ap, name, level)
- Authenticator *ap;
- char *name;
- int level;
-{
-
- gss_buffer_desc fullname_buffer, acl_file_buffer;
- gss_OID fullname_type;
- char acl_file[160], fullname[160];
- int major_status, status = 0;
- struct passwd *pwd;
-
- /*
- * hard code fullname to
- * "SPX:/C=US/O=Digital/OU=LKG/OU=Sphinx/OU=Users/CN=Kannan Alagappan"
- * and acl_file to "~kannan/.sphinx"
- */
-
- pwd = getpwnam(UserNameRequested);
- if (pwd == NULL) {
- return(AUTH_USER); /* not authenticated */
- }
-
- strcpy(acl_file, pwd->pw_dir);
- strcat(acl_file, "/.sphinx");
- acl_file_buffer.value = acl_file;
- acl_file_buffer.length = strlen(acl_file);
-
- major_status = gss_display_name(&status,
- src_name,
- &fullname_buffer,
- &fullname_type);
-
- if (level < AUTH_USER)
- return(level);
-
- major_status = gss__check_acl(&status, &fullname_buffer,
- &acl_file_buffer);
-
- if (major_status == GSS_S_COMPLETE) {
- strcpy(name, UserNameRequested);
- return(AUTH_VALID);
- } else {
- return(AUTH_USER);
- }
-
-}
-
-#define BUMP(buf, len) while (*(buf)) {++(buf), --(len);}
-#define ADDC(buf, len, c) if ((len) > 0) {*(buf)++ = (c); --(len);}
-
- void
-spx_printsub(data, cnt, buf, buflen)
- unsigned char *data, *buf;
- int cnt, buflen;
-{
- char lbuf[32];
- register int i;
-
- buf[buflen-1] = '\0'; /* make sure its NULL terminated */
- buflen -= 1;
-
- switch(data[3]) {
- case SPX_REJECT: /* Rejected (reason might follow) */
- strncpy((char *)buf, " REJECT ", buflen);
- goto common;
-
- case SPX_ACCEPT: /* Accepted (name might follow) */
- strncpy((char *)buf, " ACCEPT ", buflen);
- common:
- BUMP(buf, buflen);
- if (cnt <= 4)
- break;
- ADDC(buf, buflen, '"');
- for (i = 4; i < cnt; i++)
- ADDC(buf, buflen, data[i]);
- ADDC(buf, buflen, '"');
- ADDC(buf, buflen, '\0');
- break;
-
- case SPX_AUTH: /* Authentication data follows */
- strncpy((char *)buf, " AUTH", buflen);
- goto common2;
-
- default:
- sprintf(lbuf, " %d (unknown)", data[3]);
- strncpy((char *)buf, lbuf, buflen);
- common2:
- BUMP(buf, buflen);
- for (i = 4; i < cnt; i++) {
- sprintf(lbuf, " %d", data[i]);
- strncpy((char *)buf, lbuf, buflen);
- BUMP(buf, buflen);
- }
- break;
- }
-}
-
-#endif
-
-#ifdef notdef
-
-prkey(msg, key)
- char *msg;
- unsigned char *key;
-{
- register int i;
- printf("%s:", msg);
- for (i = 0; i < 8; i++)
- printf(" %3d", key[i]);
- printf("\r\n");
-}
-#endif
diff --git a/secure/libexec/Makefile b/secure/libexec/Makefile
deleted file mode 100644
index 9bd4d2e61f2c..000000000000
--- a/secure/libexec/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# From: @(#)Makefile 8.1 (Berkeley) 5/31/93
-# $Id: Makefile,v 1.2 1995/07/25 14:03:35 mark Exp $
-
-SUBDIR= telnetd
-
-.include <bsd.subdir.mk>
diff --git a/secure/libexec/Makefile.inc b/secure/libexec/Makefile.inc
deleted file mode 100644
index 26d868c39153..000000000000
--- a/secure/libexec/Makefile.inc
+++ /dev/null
@@ -1,6 +0,0 @@
-# @(#)Makefile.inc 8.1 (Berkeley) 6/4/93
-# $Id: Makefile.inc,v 1.2 1995/07/29 12:49:22 markm Exp $
-
-BINDIR?= /usr/libexec
-
-.include "${.CURDIR}/../../Makefile.inc"
diff --git a/secure/libexec/telnetd/Makefile b/secure/libexec/telnetd/Makefile
deleted file mode 100644
index adf749c39991..000000000000
--- a/secure/libexec/telnetd/Makefile
+++ /dev/null
@@ -1,58 +0,0 @@
-# @(#)Makefile 8.2 (Berkeley) 12/15/93
-
-# Do not define -DKLUDGELINEMODE, as it does not interact well with many
-# telnet implementations.
-
-PROG= telnetd
-MAN8= telnetd.8
-DISTRIBUTION= krb
-
-SRCS= authenc.c global.c slc.c state.c sys_term.c telnetd.c \
- termstat.c utility.c
-
-DPADD= ${TELNETOBJDIR}/libtelnet.a ${LIBUTIL} ${LIBTERMCAP}
-LDADD= -L${TELNETOBJDIR} -lutil -ltermcap -ltelnet
-
-CFLAGS+=-DLINEMODE -DUSE_TERMIO -DDIAGNOSTICS -DOLD_ENVIRON -DENV_HACK
-CFLAGS+=-I${.CURDIR}/../../lib
-
-#ifdef ENCRYPTION
-
-CFLAGS+=-DAUTHENTICATION -DENCRYPTION
-
-.if exists(/usr/lib/libkrb.a)
-LDADD+= -ldes -lkrb
-.endif
-
-.if exists(/usr/lib/libkrb5.a)
-LDADD+= -ldes -lkrb5
-.endif
-
-# Used only in krb4encpwd.c and rsaencpwd.c (libtelnet), not yet active
-#LDADD+= -ldescrypt
-
-#endif /* ENCRYPTION */
-
-# These are the sources that have encryption stuff in them.
-CRYPT_SRC= authenc.c ext.h state.c telnetd.c termstat.c
-CRYPT_SRC+= utility.c Makefile
-NOCRYPT_DIR=${.CURDIR}/Nocrypt
-
-.include <bsd.prog.mk>
-
-nocrypt:
-#ifdef ENCRYPTION
- @for i in ${CRYPT_SRC}; do \
- if [ ! -d ${NOCRYPT_DIR} ]; then \
- echo Creating subdirectory ${NOCRYPT_DIR}; \
- mkdir ${NOCRYPT_DIR}; \
- fi; \
- echo ${NOCRYPT_DIR}/$$i; \
- unifdef -UENCRYPTION ${.CURDIR}/$$i | \
- sed "s/ || defined(ENCRYPTION)//" > ${NOCRYPT_DIR}/$$i; \
- done
-
-placeholder:
-#else /* ENCRYPTION */
- @echo "Encryption code already removed."
-#endif /* ENCRYPTION */
diff --git a/secure/libexec/telnetd/defs.h b/secure/libexec/telnetd/defs.h
deleted file mode 100644
index a73d4a619978..000000000000
--- a/secure/libexec/telnetd/defs.h
+++ /dev/null
@@ -1,296 +0,0 @@
-/*
- * Copyright (c) 1989, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)defs.h 8.1 (Berkeley) 6/4/93
- */
-
-/*
- * Telnet server defines
- */
-#include <sys/types.h>
-#include <sys/param.h>
-
-#ifndef BSD
-# define BSD 43
-#endif
-
-#if defined(CRAY) && !defined(LINEMODE)
-# define SYSV_TERMIO
-# define LINEMODE
-# define KLUDGELINEMODE
-# define DIAGNOSTICS
-# if defined(UNICOS50) && !defined(UNICOS5)
-# define UNICOS5
-# endif
-# if !defined(UNICOS5)
-# define BFTPDAEMON
-# define HAS_IP_TOS
-# endif
-#endif /* CRAY */
-#if defined(UNICOS5) && !defined(NO_SETSID)
-# define NO_SETSID
-#endif
-
-#if defined(PRINTOPTIONS) && defined(DIAGNOSTICS)
-#define TELOPTS
-#define TELCMDS
-#define SLC_NAMES
-#endif
-
-#if defined(SYSV_TERMIO) && !defined(USE_TERMIO)
-# define USE_TERMIO
-#endif
-
-#include <sys/socket.h>
-#ifndef CRAY
-#include <sys/wait.h>
-#endif /* CRAY */
-#include <fcntl.h>
-#include <sys/file.h>
-#include <sys/stat.h>
-#include <sys/time.h>
-#ifndef FILIO_H
-#include <sys/ioctl.h>
-#else
-#include <sys/filio.h>
-#endif
-
-#include <netinet/in.h>
-
-#include <arpa/telnet.h>
-
-#include <stdio.h>
-#ifdef __STDC__
-#include <stdlib.h>
-#endif
-#include <signal.h>
-#include <errno.h>
-#include <netdb.h>
-#include <syslog.h>
-#ifndef LOG_DAEMON
-#define LOG_DAEMON 0
-#endif
-#ifndef LOG_ODELAY
-#define LOG_ODELAY 0
-#endif
-#include <ctype.h>
-#ifndef NO_STRING_H
-#include <string.h>
-#else
-#include <strings.h>
-#endif
-
-#ifndef USE_TERMIO
-#include <sgtty.h>
-#else
-# ifdef SYSV_TERMIO
-# include <termio.h>
-# else
-# include <termios.h>
-# endif
-#endif
-#if !defined(USE_TERMIO) || defined(NO_CC_T)
-typedef unsigned char cc_t;
-#endif
-
-#ifdef __STDC__
-#include <unistd.h>
-#endif
-
-#ifndef _POSIX_VDISABLE
-# ifdef VDISABLE
-# define _POSIX_VDISABLE VDISABLE
-# else
-# define _POSIX_VDISABLE ((unsigned char)'\377')
-# endif
-#endif
-
-
-#ifdef CRAY
-# ifdef CRAY1
-# include <sys/pty.h>
-# ifndef FD_ZERO
-# include <sys/select.h>
-# endif /* FD_ZERO */
-# endif /* CRAY1 */
-
-#include <memory.h>
-#endif /* CRAY */
-
-#ifdef __hpux
-#include <sys/ptyio.h>
-#endif
-
-#if !defined(TIOCSCTTY) && defined(TCSETCTTY)
-# define TIOCSCTTY TCSETCTTY
-#endif
-
-#ifndef FD_SET
-#ifndef HAVE_fd_set
-typedef struct fd_set { int fds_bits[1]; } fd_set;
-#endif
-
-#define FD_SET(n, p) ((p)->fds_bits[0] |= (1<<(n)))
-#define FD_CLR(n, p) ((p)->fds_bits[0] &= ~(1<<(n)))
-#define FD_ISSET(n, p) ((p)->fds_bits[0] & (1<<(n)))
-#define FD_ZERO(p) ((p)->fds_bits[0] = 0)
-#endif /* FD_SET */
-
-/*
- * I/O data buffers defines
- */
-#define NETSLOP 64
-#ifdef CRAY
-#undef BUFSIZ
-#define BUFSIZ 2048
-#endif
-
-#define NIACCUM(c) { *netip++ = c; \
- ncc++; \
- }
-
-/* clock manipulations */
-#define settimer(x) (clocks.x = ++clocks.system)
-#define sequenceIs(x,y) (clocks.x < clocks.y)
-
-/*
- * Linemode support states, in decreasing order of importance
- */
-#define REAL_LINEMODE 0x04
-#define KLUDGE_OK 0x03
-#define NO_AUTOKLUDGE 0x02
-#define KLUDGE_LINEMODE 0x01
-#define NO_LINEMODE 0x00
-
-/*
- * Structures of information for each special character function.
- */
-typedef struct {
- unsigned char flag; /* the flags for this function */
- cc_t val; /* the value of the special character */
-} slcent, *Slcent;
-
-typedef struct {
- slcent defset; /* the default settings */
- slcent current; /* the current settings */
- cc_t *sptr; /* a pointer to the char in */
- /* system data structures */
-} slcfun, *Slcfun;
-
-#ifdef DIAGNOSTICS
-/*
- * Diagnostics capabilities
- */
-#define TD_REPORT 0x01 /* Report operations to client */
-#define TD_EXERCISE 0x02 /* Exercise client's implementation */
-#define TD_NETDATA 0x04 /* Display received data stream */
-#define TD_PTYDATA 0x08 /* Display data passed to pty */
-#define TD_OPTIONS 0x10 /* Report just telnet options */
-#endif /* DIAGNOSTICS */
-
-/*
- * We keep track of each side of the option negotiation.
- */
-
-#define MY_STATE_WILL 0x01
-#define MY_WANT_STATE_WILL 0x02
-#define MY_STATE_DO 0x04
-#define MY_WANT_STATE_DO 0x08
-
-/*
- * Macros to check the current state of things
- */
-
-#define my_state_is_do(opt) (options[opt]&MY_STATE_DO)
-#define my_state_is_will(opt) (options[opt]&MY_STATE_WILL)
-#define my_want_state_is_do(opt) (options[opt]&MY_WANT_STATE_DO)
-#define my_want_state_is_will(opt) (options[opt]&MY_WANT_STATE_WILL)
-
-#define my_state_is_dont(opt) (!my_state_is_do(opt))
-#define my_state_is_wont(opt) (!my_state_is_will(opt))
-#define my_want_state_is_dont(opt) (!my_want_state_is_do(opt))
-#define my_want_state_is_wont(opt) (!my_want_state_is_will(opt))
-
-#define set_my_state_do(opt) (options[opt] |= MY_STATE_DO)
-#define set_my_state_will(opt) (options[opt] |= MY_STATE_WILL)
-#define set_my_want_state_do(opt) (options[opt] |= MY_WANT_STATE_DO)
-#define set_my_want_state_will(opt) (options[opt] |= MY_WANT_STATE_WILL)
-
-#define set_my_state_dont(opt) (options[opt] &= ~MY_STATE_DO)
-#define set_my_state_wont(opt) (options[opt] &= ~MY_STATE_WILL)
-#define set_my_want_state_dont(opt) (options[opt] &= ~MY_WANT_STATE_DO)
-#define set_my_want_state_wont(opt) (options[opt] &= ~MY_WANT_STATE_WILL)
-
-/*
- * Tricky code here. What we want to know is if the MY_STATE_WILL
- * and MY_WANT_STATE_WILL bits have the same value. Since the two
- * bits are adjacent, a little arithmatic will show that by adding
- * in the lower bit, the upper bit will be set if the two bits were
- * different, and clear if they were the same.
- */
-#define my_will_wont_is_changing(opt) \
- ((options[opt]+MY_STATE_WILL) & MY_WANT_STATE_WILL)
-
-#define my_do_dont_is_changing(opt) \
- ((options[opt]+MY_STATE_DO) & MY_WANT_STATE_DO)
-
-/*
- * Make everything symetrical
- */
-
-#define HIS_STATE_WILL MY_STATE_DO
-#define HIS_WANT_STATE_WILL MY_WANT_STATE_DO
-#define HIS_STATE_DO MY_STATE_WILL
-#define HIS_WANT_STATE_DO MY_WANT_STATE_WILL
-
-#define his_state_is_do my_state_is_will
-#define his_state_is_will my_state_is_do
-#define his_want_state_is_do my_want_state_is_will
-#define his_want_state_is_will my_want_state_is_do
-
-#define his_state_is_dont my_state_is_wont
-#define his_state_is_wont my_state_is_dont
-#define his_want_state_is_dont my_want_state_is_wont
-#define his_want_state_is_wont my_want_state_is_dont
-
-#define set_his_state_do set_my_state_will
-#define set_his_state_will set_my_state_do
-#define set_his_want_state_do set_my_want_state_will
-#define set_his_want_state_will set_my_want_state_do
-
-#define set_his_state_dont set_my_state_wont
-#define set_his_state_wont set_my_state_dont
-#define set_his_want_state_dont set_my_want_state_wont
-#define set_his_want_state_wont set_my_want_state_dont
-
-#define his_will_wont_is_changing my_do_dont_is_changing
-#define his_do_dont_is_changing my_will_wont_is_changing
diff --git a/secure/libexec/telnetd/ext.h b/secure/libexec/telnetd/ext.h
deleted file mode 100644
index db3f1c395313..000000000000
--- a/secure/libexec/telnetd/ext.h
+++ /dev/null
@@ -1,242 +0,0 @@
-/*
- * Copyright (c) 1989, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)ext.h 8.2 (Berkeley) 12/15/93
- */
-
-/*
- * Telnet server variable declarations
- */
-extern char options[256];
-extern char do_dont_resp[256];
-extern char will_wont_resp[256];
-extern int linemode; /* linemode on/off */
-#ifdef LINEMODE
-extern int uselinemode; /* what linemode to use (on/off) */
-extern int editmode; /* edit modes in use */
-extern int useeditmode; /* edit modes to use */
-extern int alwayslinemode; /* command line option */
-extern int lmodetype; /* Client support for linemode */
-#endif /* LINEMODE */
-extern int flowmode; /* current flow control state */
-extern int restartany; /* restart output on any character state */
-#ifdef DIAGNOSTICS
-extern int diagnostic; /* telnet diagnostic capabilities */
-#endif /* DIAGNOSTICS */
-#ifdef BFTPDAEMON
-extern int bftpd; /* behave as bftp daemon */
-#endif /* BFTPDAEMON */
-#if defined(SecurID)
-extern int require_SecurID;
-#endif
-#if defined(AUTHENTICATION)
-extern int auth_level;
-#endif
-
-extern slcfun slctab[NSLC + 1]; /* slc mapping table */
-
-char *terminaltype;
-
-/*
- * I/O data buffers, pointers, and counters.
- */
-extern char ptyobuf[BUFSIZ+NETSLOP], *pfrontp, *pbackp;
-
-extern char netibuf[BUFSIZ], *netip;
-
-extern char netobuf[BUFSIZ+NETSLOP], *nfrontp, *nbackp;
-extern char *neturg; /* one past last bye of urgent data */
-
-extern int pcc, ncc;
-
-#if defined(CRAY2) && defined(UNICOS5)
-extern int unpcc; /* characters left unprocessed by CRAY-2 terminal routine */
-extern char *unptyip; /* pointer to remaining characters in buffer */
-#endif
-
-extern int pty, net;
-extern char *line;
-extern int SYNCHing; /* we are in TELNET SYNCH mode */
-
-#ifndef P
-# ifdef __STDC__
-# define P(x) x
-# else
-# define P(x) ()
-# endif
-#endif
-
-extern void
- _termstat P((void)),
- add_slc P((int, int, int)),
- check_slc P((void)),
- change_slc P((int, int, int)),
- cleanup P((int)),
- clientstat P((int, int, int)),
- copy_termbuf P((char *, int)),
- deferslc P((void)),
- defer_terminit P((void)),
- do_opt_slc P((unsigned char *, int)),
- doeof P((void)),
- dooption P((int)),
- dontoption P((int)),
- edithost P((char *, char *)),
- fatal P((int, char *)),
- fatalperror P((int, char *)),
- get_slc_defaults P((void)),
- init_env P((void)),
- init_termbuf P((void)),
- interrupt P((void)),
- localstat P((void)),
- flowstat P((void)),
- netclear P((void)),
- netflush P((void)),
-#ifdef DIAGNOSTICS
- printoption P((char *, int)),
- printdata P((char *, char *, int)),
- printsub P((int, unsigned char *, int)),
-#endif
- ptyflush P((void)),
- putchr P((int)),
- putf P((char *, char *)),
- recv_ayt P((void)),
- send_do P((int, int)),
- send_dont P((int, int)),
- send_slc P((void)),
- send_status P((void)),
- send_will P((int, int)),
- send_wont P((int, int)),
- sendbrk P((void)),
- sendsusp P((void)),
- set_termbuf P((void)),
- start_login P((char *, int, char *)),
- start_slc P((int)),
-#if defined(AUTHENTICATION)
- start_slave P((char *)),
-#else
- start_slave P((char *, int, char *)),
-#endif
- suboption P((void)),
- telrcv P((void)),
- ttloop P((void)),
- tty_binaryin P((int)),
- tty_binaryout P((int));
-
-extern int
- end_slc P((unsigned char **)),
- getnpty P((void)),
-#ifndef convex
- getpty P((int *)),
-#endif
- login_tty P((int)),
- spcset P((int, cc_t *, cc_t **)),
- stilloob P((int)),
- terminit P((void)),
- termstat P((void)),
- tty_flowmode P((void)),
- tty_restartany P((void)),
- tty_isbinaryin P((void)),
- tty_isbinaryout P((void)),
- tty_iscrnl P((void)),
- tty_isecho P((void)),
- tty_isediting P((void)),
- tty_islitecho P((void)),
- tty_isnewmap P((void)),
- tty_israw P((void)),
- tty_issofttab P((void)),
- tty_istrapsig P((void)),
- tty_linemode P((void));
-
-extern void
- tty_rspeed P((int)),
- tty_setecho P((int)),
- tty_setedit P((int)),
- tty_setlinemode P((int)),
- tty_setlitecho P((int)),
- tty_setsig P((int)),
- tty_setsofttab P((int)),
- tty_tspeed P((int)),
- willoption P((int)),
- wontoption P((int)),
- writenet P((unsigned char *, int));
-
-#ifdef ENCRYPTION
-extern void (*encrypt_output) P((unsigned char *, int));
-extern int (*decrypt_input) P((int));
-extern char *nclearto;
-#endif /* ENCRYPTION */
-
-
-/*
- * The following are some clocks used to decide how to interpret
- * the relationship between various variables.
- */
-
-extern struct {
- int
- system, /* what the current time is */
- echotoggle, /* last time user entered echo character */
- modenegotiated, /* last time operating mode negotiated */
- didnetreceive, /* last time we read data from network */
- ttypesubopt, /* ttype subopt is received */
- tspeedsubopt, /* tspeed subopt is received */
- environsubopt, /* environ subopt is received */
- oenvironsubopt, /* old environ subopt is received */
- xdisplocsubopt, /* xdisploc subopt is received */
- baseline, /* time started to do timed action */
- gotDM; /* when did we last see a data mark */
-} clocks;
-
-
-#if defined(CRAY2) && defined(UNICOS5)
-extern int needtermstat;
-#endif
-
-#ifndef DEFAULT_IM
-# ifdef CRAY
-# define DEFAULT_IM "\r\n\r\nCray UNICOS (%h) (%t)\r\n\r\r\n\r"
-# else
-# ifdef sun
-# define DEFAULT_IM "\r\n\r\nSunOS UNIX (%h) (%t)\r\n\r\r\n\r"
-# else
-# ifdef ultrix
-# define DEFAULT_IM "\r\n\r\nULTRIX (%h) (%t)\r\n\r\r\n\r"
-# else
-# ifdef __FreeBSD__
-# define DEFAULT_IM "\r\n\r\nFreeBSD (%h) (%t)\r\n\r\r\n\r"
-# else
-# define DEFAULT_IM "\r\n\r\n4.4 BSD UNIX (%h) (%t)\r\n\r\r\n\r"
-# endif
-# endif
-# endif
-# endif
-#endif
diff --git a/secure/libexec/telnetd/pathnames.h b/secure/libexec/telnetd/pathnames.h
deleted file mode 100644
index 4e14a88b49cd..000000000000
--- a/secure/libexec/telnetd/pathnames.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (c) 1989, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)pathnames.h 8.1 (Berkeley) 6/4/93
- */
-
-#if BSD > 43
-
-# include <paths.h>
-
-# ifndef _PATH_LOGIN
-# define _PATH_LOGIN "/usr/bin/login"
-# endif
-
-#else
-
-# define _PATH_TTY "/dev/tty"
-# ifndef _PATH_LOGIN
-# define _PATH_LOGIN "/bin/login"
-# endif
-
-#endif
-
-#ifdef BFTPDAEMON
-#define BFTPPATH "/usr/ucb/bftp"
-#endif /* BFTPDAEMON */
diff --git a/secure/libexec/telnetd/slc.c b/secure/libexec/telnetd/slc.c
deleted file mode 100644
index 6cbb7ababa1b..000000000000
--- a/secure/libexec/telnetd/slc.c
+++ /dev/null
@@ -1,491 +0,0 @@
-/*
- * Copyright (c) 1989, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)slc.c 8.2 (Berkeley) 5/30/95";
-#endif /* not lint */
-
-#include "telnetd.h"
-
-#ifdef LINEMODE
-/*
- * local varibles
- */
-static unsigned char *def_slcbuf = (unsigned char *)0;
-static int def_slclen = 0;
-static int slcchange; /* change to slc is requested */
-static unsigned char *slcptr; /* pointer into slc buffer */
-static unsigned char slcbuf[NSLC*6]; /* buffer for slc negotiation */
-
-/*
- * send_slc
- *
- * Write out the current special characters to the client.
- */
- void
-send_slc()
-{
- register int i;
-
- /*
- * Send out list of triplets of special characters
- * to client. We only send info on the characters
- * that are currently supported.
- */
- for (i = 1; i <= NSLC; i++) {
- if ((slctab[i].defset.flag & SLC_LEVELBITS) == SLC_NOSUPPORT)
- continue;
- add_slc((unsigned char)i, slctab[i].current.flag,
- slctab[i].current.val);
- }
-
-} /* end of send_slc */
-
-/*
- * default_slc
- *
- * Set pty special characters to all the defaults.
- */
- void
-default_slc()
-{
- register int i;
-
- for (i = 1; i <= NSLC; i++) {
- slctab[i].current.val = slctab[i].defset.val;
- if (slctab[i].current.val == (cc_t)(_POSIX_VDISABLE))
- slctab[i].current.flag = SLC_NOSUPPORT;
- else
- slctab[i].current.flag = slctab[i].defset.flag;
- if (slctab[i].sptr) {
- *(slctab[i].sptr) = slctab[i].defset.val;
- }
- }
- slcchange = 1;
-
-} /* end of default_slc */
-#endif /* LINEMODE */
-
-/*
- * get_slc_defaults
- *
- * Initialize the slc mapping table.
- */
- void
-get_slc_defaults()
-{
- register int i;
-
- init_termbuf();
-
- for (i = 1; i <= NSLC; i++) {
- slctab[i].defset.flag =
- spcset(i, &slctab[i].defset.val, &slctab[i].sptr);
- slctab[i].current.flag = SLC_NOSUPPORT;
- slctab[i].current.val = 0;
- }
-
-} /* end of get_slc_defaults */
-
-#ifdef LINEMODE
-/*
- * add_slc
- *
- * Add an slc triplet to the slc buffer.
- */
- void
-add_slc(func, flag, val)
- register char func, flag;
- register cc_t val;
-{
-
- if ((*slcptr++ = (unsigned char)func) == 0xff)
- *slcptr++ = 0xff;
-
- if ((*slcptr++ = (unsigned char)flag) == 0xff)
- *slcptr++ = 0xff;
-
- if ((*slcptr++ = (unsigned char)val) == 0xff)
- *slcptr++ = 0xff;
-
-} /* end of add_slc */
-
-/*
- * start_slc
- *
- * Get ready to process incoming slc's and respond to them.
- *
- * The parameter getit is non-zero if it is necessary to grab a copy
- * of the terminal control structures.
- */
- void
-start_slc(getit)
- register int getit;
-{
-
- slcchange = 0;
- if (getit)
- init_termbuf();
- (void) sprintf((char *)slcbuf, "%c%c%c%c",
- IAC, SB, TELOPT_LINEMODE, LM_SLC);
- slcptr = slcbuf + 4;
-
-} /* end of start_slc */
-
-/*
- * end_slc
- *
- * Finish up the slc negotiation. If something to send, then send it.
- */
- int
-end_slc(bufp)
- register unsigned char **bufp;
-{
- register int len;
- void netflush();
-
- /*
- * If a change has occured, store the new terminal control
- * structures back to the terminal driver.
- */
- if (slcchange) {
- set_termbuf();
- }
-
- /*
- * If the pty state has not yet been fully processed and there is a
- * deferred slc request from the client, then do not send any
- * sort of slc negotiation now. We will respond to the client's
- * request very soon.
- */
- if (def_slcbuf && (terminit() == 0)) {
- return(0);
- }
-
- if (slcptr > (slcbuf + 4)) {
- if (bufp) {
- *bufp = &slcbuf[4];
- return(slcptr - slcbuf - 4);
- } else {
- (void) sprintf((char *)slcptr, "%c%c", IAC, SE);
- slcptr += 2;
- len = slcptr - slcbuf;
- writenet(slcbuf, len);
- netflush(); /* force it out immediately */
- DIAG(TD_OPTIONS, printsub('>', slcbuf+2, len-2););
- }
- }
- return (0);
-
-} /* end of end_slc */
-
-/*
- * process_slc
- *
- * Figure out what to do about the client's slc
- */
- void
-process_slc(func, flag, val)
- register unsigned char func, flag;
- register cc_t val;
-{
- register int hislevel, mylevel, ack;
-
- /*
- * Ensure that we know something about this function
- */
- if (func > NSLC) {
- add_slc(func, SLC_NOSUPPORT, 0);
- return;
- }
-
- /*
- * Process the special case requests of 0 SLC_DEFAULT 0
- * and 0 SLC_VARIABLE 0. Be a little forgiving here, don't
- * worry about whether the value is actually 0 or not.
- */
- if (func == 0) {
- if ((flag = flag & SLC_LEVELBITS) == SLC_DEFAULT) {
- default_slc();
- send_slc();
- } else if (flag == SLC_VARIABLE) {
- send_slc();
- }
- return;
- }
-
- /*
- * Appears to be a function that we know something about. So
- * get on with it and see what we know.
- */
-
- hislevel = flag & SLC_LEVELBITS;
- mylevel = slctab[func].current.flag & SLC_LEVELBITS;
- ack = flag & SLC_ACK;
- /*
- * ignore the command if:
- * the function value and level are the same as what we already have;
- * or the level is the same and the ack bit is set
- */
- if (hislevel == mylevel && (val == slctab[func].current.val || ack)) {
- return;
- } else if (ack) {
- /*
- * If we get here, we got an ack, but the levels don't match.
- * This shouldn't happen. If it does, it is probably because
- * we have sent two requests to set a variable without getting
- * a response between them, and this is the first response.
- * So, ignore it, and wait for the next response.
- */
- return;
- } else {
- change_slc(func, flag, val);
- }
-
-} /* end of process_slc */
-
-/*
- * change_slc
- *
- * Process a request to change one of our special characters.
- * Compare client's request with what we are capable of supporting.
- */
- void
-change_slc(func, flag, val)
- register char func, flag;
- register cc_t val;
-{
- register int hislevel, mylevel;
-
- hislevel = flag & SLC_LEVELBITS;
- mylevel = slctab[func].defset.flag & SLC_LEVELBITS;
- /*
- * If client is setting a function to NOSUPPORT
- * or DEFAULT, then we can easily and directly
- * accomodate the request.
- */
- if (hislevel == SLC_NOSUPPORT) {
- slctab[func].current.flag = flag;
- slctab[func].current.val = (cc_t)_POSIX_VDISABLE;
- flag |= SLC_ACK;
- add_slc(func, flag, val);
- return;
- }
- if (hislevel == SLC_DEFAULT) {
- /*
- * Special case here. If client tells us to use
- * the default on a function we don't support, then
- * return NOSUPPORT instead of what we may have as a
- * default level of DEFAULT.
- */
- if (mylevel == SLC_DEFAULT) {
- slctab[func].current.flag = SLC_NOSUPPORT;
- } else {
- slctab[func].current.flag = slctab[func].defset.flag;
- }
- slctab[func].current.val = slctab[func].defset.val;
- add_slc(func, slctab[func].current.flag,
- slctab[func].current.val);
- return;
- }
-
- /*
- * Client wants us to change to a new value or he
- * is telling us that he can't change to our value.
- * Some of the slc's we support and can change,
- * some we do support but can't change,
- * and others we don't support at all.
- * If we can change it then we have a pointer to
- * the place to put the new value, so change it,
- * otherwise, continue the negotiation.
- */
- if (slctab[func].sptr) {
- /*
- * We can change this one.
- */
- slctab[func].current.val = val;
- *(slctab[func].sptr) = val;
- slctab[func].current.flag = flag;
- flag |= SLC_ACK;
- slcchange = 1;
- add_slc(func, flag, val);
- } else {
- /*
- * It is not possible for us to support this
- * request as he asks.
- *
- * If our level is DEFAULT, then just ack whatever was
- * sent.
- *
- * If he can't change and we can't change,
- * then degenerate to NOSUPPORT.
- *
- * Otherwise we send our level back to him, (CANTCHANGE
- * or NOSUPPORT) and if CANTCHANGE, send
- * our value as well.
- */
- if (mylevel == SLC_DEFAULT) {
- slctab[func].current.flag = flag;
- slctab[func].current.val = val;
- flag |= SLC_ACK;
- } else if (hislevel == SLC_CANTCHANGE &&
- mylevel == SLC_CANTCHANGE) {
- flag &= ~SLC_LEVELBITS;
- flag |= SLC_NOSUPPORT;
- slctab[func].current.flag = flag;
- } else {
- flag &= ~SLC_LEVELBITS;
- flag |= mylevel;
- slctab[func].current.flag = flag;
- if (mylevel == SLC_CANTCHANGE) {
- slctab[func].current.val =
- slctab[func].defset.val;
- val = slctab[func].current.val;
- }
- }
- add_slc(func, flag, val);
- }
-
-} /* end of change_slc */
-
-#if defined(USE_TERMIO) && (VEOF == VMIN)
-cc_t oldeofc = '\004';
-#endif
-
-/*
- * check_slc
- *
- * Check the special characters in use and notify the client if any have
- * changed. Only those characters that are capable of being changed are
- * likely to have changed. If a local change occurs, kick the support level
- * and flags up to the defaults.
- */
- void
-check_slc()
-{
- register int i;
-
- for (i = 1; i <= NSLC; i++) {
-#if defined(USE_TERMIO) && (VEOF == VMIN)
- /*
- * In a perfect world this would be a neat little
- * function. But in this world, we should not notify
- * client of changes to the VEOF char when
- * ICANON is off, because it is not representing
- * a special character.
- */
- if (i == SLC_EOF) {
- if (!tty_isediting())
- continue;
- else if (slctab[i].sptr)
- oldeofc = *(slctab[i].sptr);
- }
-#endif /* defined(USE_TERMIO) && defined(SYSV_TERMIO) */
- if (slctab[i].sptr &&
- (*(slctab[i].sptr) != slctab[i].current.val)) {
- slctab[i].current.val = *(slctab[i].sptr);
- if (*(slctab[i].sptr) == (cc_t)_POSIX_VDISABLE)
- slctab[i].current.flag = SLC_NOSUPPORT;
- else
- slctab[i].current.flag = slctab[i].defset.flag;
- add_slc((unsigned char)i, slctab[i].current.flag,
- slctab[i].current.val);
- }
- }
-} /* check_slc */
-
-/*
- * do_opt_slc
- *
- * Process an slc option buffer. Defer processing of incoming slc's
- * until after the terminal state has been processed. Save the first slc
- * request that comes along, but discard all others.
- *
- * ptr points to the beginning of the buffer, len is the length.
- */
- void
-do_opt_slc(ptr, len)
- register unsigned char *ptr;
- register int len;
-{
- register unsigned char func, flag;
- cc_t val;
- register unsigned char *end = ptr + len;
-
- if (terminit()) { /* go ahead */
- while (ptr < end) {
- func = *ptr++;
- if (ptr >= end) break;
- flag = *ptr++;
- if (ptr >= end) break;
- val = (cc_t)*ptr++;
-
- process_slc(func, flag, val);
-
- }
- } else {
- /*
- * save this slc buffer if it is the first, otherwise dump
- * it.
- */
- if (def_slcbuf == (unsigned char *)0) {
- def_slclen = len;
- def_slcbuf = (unsigned char *)malloc((unsigned)len);
- if (def_slcbuf == (unsigned char *)0)
- return; /* too bad */
- memmove(def_slcbuf, ptr, len);
- }
- }
-
-} /* end of do_opt_slc */
-
-/*
- * deferslc
- *
- * Do slc stuff that was deferred.
- */
- void
-deferslc()
-{
- if (def_slcbuf) {
- start_slc(1);
- do_opt_slc(def_slcbuf, def_slclen);
- (void) end_slc(0);
- free(def_slcbuf);
- def_slcbuf = (unsigned char *)0;
- def_slclen = 0;
- }
-
-} /* end of deferslc */
-
-#endif /* LINEMODE */
diff --git a/secure/libexec/telnetd/state.c b/secure/libexec/telnetd/state.c
deleted file mode 100644
index 4ee8bea66f97..000000000000
--- a/secure/libexec/telnetd/state.c
+++ /dev/null
@@ -1,1612 +0,0 @@
-/*
- * Copyright (c) 1989, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)state.c 8.5 (Berkeley) 5/30/95";
-#endif /* not lint */
-
-#include "telnetd.h"
-#if defined(AUTHENTICATION)
-#include <libtelnet/auth.h>
-#endif
-
-unsigned char doopt[] = { IAC, DO, '%', 'c', 0 };
-unsigned char dont[] = { IAC, DONT, '%', 'c', 0 };
-unsigned char will[] = { IAC, WILL, '%', 'c', 0 };
-unsigned char wont[] = { IAC, WONT, '%', 'c', 0 };
-int not42 = 1;
-
-/*
- * Buffer for sub-options, and macros
- * for suboptions buffer manipulations
- */
-unsigned char subbuffer[512], *subpointer= subbuffer, *subend= subbuffer;
-
-#define SB_CLEAR() subpointer = subbuffer
-#define SB_TERM() { subend = subpointer; SB_CLEAR(); }
-#define SB_ACCUM(c) if (subpointer < (subbuffer+sizeof subbuffer)) { \
- *subpointer++ = (c); \
- }
-#define SB_GET() ((*subpointer++)&0xff)
-#define SB_EOF() (subpointer >= subend)
-#define SB_LEN() (subend - subpointer)
-
-#ifdef ENV_HACK
-unsigned char *subsave;
-#define SB_SAVE() subsave = subpointer;
-#define SB_RESTORE() subpointer = subsave;
-#endif
-
-
-/*
- * State for recv fsm
- */
-#define TS_DATA 0 /* base state */
-#define TS_IAC 1 /* look for double IAC's */
-#define TS_CR 2 /* CR-LF ->'s CR */
-#define TS_SB 3 /* throw away begin's... */
-#define TS_SE 4 /* ...end's (suboption negotiation) */
-#define TS_WILL 5 /* will option negotiation */
-#define TS_WONT 6 /* wont " */
-#define TS_DO 7 /* do " */
-#define TS_DONT 8 /* dont " */
-
- void
-telrcv()
-{
- register int c;
- static int state = TS_DATA;
-#if defined(CRAY2) && defined(UNICOS5)
- char *opfrontp = pfrontp;
-#endif
-
- while (ncc > 0) {
- if ((&ptyobuf[BUFSIZ] - pfrontp) < 2)
- break;
- c = *netip++ & 0377, ncc--;
-#ifdef ENCRYPTION
- if (decrypt_input)
- c = (*decrypt_input)(c);
-#endif /* ENCRYPTION */
- switch (state) {
-
- case TS_CR:
- state = TS_DATA;
- /* Strip off \n or \0 after a \r */
- if ((c == 0) || (c == '\n')) {
- break;
- }
- /* FALL THROUGH */
-
- case TS_DATA:
- if (c == IAC) {
- state = TS_IAC;
- break;
- }
- /*
- * We now map \r\n ==> \r for pragmatic reasons.
- * Many client implementations send \r\n when
- * the user hits the CarriageReturn key.
- *
- * We USED to map \r\n ==> \n, since \r\n says
- * that we want to be in column 1 of the next
- * printable line, and \n is the standard
- * unix way of saying that (\r is only good
- * if CRMOD is set, which it normally is).
- */
- if ((c == '\r') && his_state_is_wont(TELOPT_BINARY)) {
- int nc = *netip;
-#ifdef ENCRYPTION
- if (decrypt_input)
- nc = (*decrypt_input)(nc & 0xff);
-#endif /* ENCRYPTION */
-#ifdef LINEMODE
- /*
- * If we are operating in linemode,
- * convert to local end-of-line.
- */
- if (linemode && (ncc > 0) && (('\n' == nc) ||
- ((0 == nc) && tty_iscrnl())) ) {
- netip++; ncc--;
- c = '\n';
- } else
-#endif
- {
-#ifdef ENCRYPTION
- if (decrypt_input)
- (void)(*decrypt_input)(-1);
-#endif /* ENCRYPTION */
- state = TS_CR;
- }
- }
- *pfrontp++ = c;
- break;
-
- case TS_IAC:
-gotiac: switch (c) {
-
- /*
- * Send the process on the pty side an
- * interrupt. Do this with a NULL or
- * interrupt char; depending on the tty mode.
- */
- case IP:
- DIAG(TD_OPTIONS,
- printoption("td: recv IAC", c));
- interrupt();
- break;
-
- case BREAK:
- DIAG(TD_OPTIONS,
- printoption("td: recv IAC", c));
- sendbrk();
- break;
-
- /*
- * Are You There?
- */
- case AYT:
- DIAG(TD_OPTIONS,
- printoption("td: recv IAC", c));
- recv_ayt();
- break;
-
- /*
- * Abort Output
- */
- case AO:
- {
- DIAG(TD_OPTIONS,
- printoption("td: recv IAC", c));
- ptyflush(); /* half-hearted */
- init_termbuf();
-
- if (slctab[SLC_AO].sptr &&
- *slctab[SLC_AO].sptr != (cc_t)(_POSIX_VDISABLE)) {
- *pfrontp++ =
- (unsigned char)*slctab[SLC_AO].sptr;
- }
-
- netclear(); /* clear buffer back */
- *nfrontp++ = IAC;
- *nfrontp++ = DM;
- neturg = nfrontp-1; /* off by one XXX */
- DIAG(TD_OPTIONS,
- printoption("td: send IAC", DM));
- break;
- }
-
- /*
- * Erase Character and
- * Erase Line
- */
- case EC:
- case EL:
- {
- cc_t ch;
-
- DIAG(TD_OPTIONS,
- printoption("td: recv IAC", c));
- ptyflush(); /* half-hearted */
- init_termbuf();
- if (c == EC)
- ch = *slctab[SLC_EC].sptr;
- else
- ch = *slctab[SLC_EL].sptr;
- if (ch != (cc_t)(_POSIX_VDISABLE))
- *pfrontp++ = (unsigned char)ch;
- break;
- }
-
- /*
- * Check for urgent data...
- */
- case DM:
- DIAG(TD_OPTIONS,
- printoption("td: recv IAC", c));
- SYNCHing = stilloob(net);
- settimer(gotDM);
- break;
-
-
- /*
- * Begin option subnegotiation...
- */
- case SB:
- state = TS_SB;
- SB_CLEAR();
- continue;
-
- case WILL:
- state = TS_WILL;
- continue;
-
- case WONT:
- state = TS_WONT;
- continue;
-
- case DO:
- state = TS_DO;
- continue;
-
- case DONT:
- state = TS_DONT;
- continue;
- case EOR:
- if (his_state_is_will(TELOPT_EOR))
- doeof();
- break;
-
- /*
- * Handle RFC 10xx Telnet linemode option additions
- * to command stream (EOF, SUSP, ABORT).
- */
- case xEOF:
- doeof();
- break;
-
- case SUSP:
- sendsusp();
- break;
-
- case ABORT:
- sendbrk();
- break;
-
- case IAC:
- *pfrontp++ = c;
- break;
- }
- state = TS_DATA;
- break;
-
- case TS_SB:
- if (c == IAC) {
- state = TS_SE;
- } else {
- SB_ACCUM(c);
- }
- break;
-
- case TS_SE:
- if (c != SE) {
- if (c != IAC) {
- /*
- * bad form of suboption negotiation.
- * handle it in such a way as to avoid
- * damage to local state. Parse
- * suboption buffer found so far,
- * then treat remaining stream as
- * another command sequence.
- */
-
- /* for DIAGNOSTICS */
- SB_ACCUM(IAC);
- SB_ACCUM(c);
- subpointer -= 2;
-
- SB_TERM();
- suboption();
- state = TS_IAC;
- goto gotiac;
- }
- SB_ACCUM(c);
- state = TS_SB;
- } else {
- /* for DIAGNOSTICS */
- SB_ACCUM(IAC);
- SB_ACCUM(SE);
- subpointer -= 2;
-
- SB_TERM();
- suboption(); /* handle sub-option */
- state = TS_DATA;
- }
- break;
-
- case TS_WILL:
- willoption(c);
- state = TS_DATA;
- continue;
-
- case TS_WONT:
- wontoption(c);
- state = TS_DATA;
- continue;
-
- case TS_DO:
- dooption(c);
- state = TS_DATA;
- continue;
-
- case TS_DONT:
- dontoption(c);
- state = TS_DATA;
- continue;
-
- default:
- syslog(LOG_ERR, "telnetd: panic state=%d\n", state);
- printf("telnetd: panic state=%d\n", state);
- exit(1);
- }
- }
-#if defined(CRAY2) && defined(UNICOS5)
- if (!linemode) {
- char xptyobuf[BUFSIZ+NETSLOP];
- char xbuf2[BUFSIZ];
- register char *cp;
- int n = pfrontp - opfrontp, oc;
- memmove(xptyobuf, opfrontp, n);
- pfrontp = opfrontp;
- pfrontp += term_input(xptyobuf, pfrontp, n, BUFSIZ+NETSLOP,
- xbuf2, &oc, BUFSIZ);
- for (cp = xbuf2; oc > 0; --oc)
- if ((*nfrontp++ = *cp++) == IAC)
- *nfrontp++ = IAC;
- }
-#endif /* defined(CRAY2) && defined(UNICOS5) */
-} /* end of telrcv */
-
-/*
- * The will/wont/do/dont state machines are based on Dave Borman's
- * Telnet option processing state machine.
- *
- * These correspond to the following states:
- * my_state = the last negotiated state
- * want_state = what I want the state to go to
- * want_resp = how many requests I have sent
- * All state defaults are negative, and resp defaults to 0.
- *
- * When initiating a request to change state to new_state:
- *
- * if ((want_resp == 0 && new_state == my_state) || want_state == new_state) {
- * do nothing;
- * } else {
- * want_state = new_state;
- * send new_state;
- * want_resp++;
- * }
- *
- * When receiving new_state:
- *
- * if (want_resp) {
- * want_resp--;
- * if (want_resp && (new_state == my_state))
- * want_resp--;
- * }
- * if ((want_resp == 0) && (new_state != want_state)) {
- * if (ok_to_switch_to new_state)
- * want_state = new_state;
- * else
- * want_resp++;
- * send want_state;
- * }
- * my_state = new_state;
- *
- * Note that new_state is implied in these functions by the function itself.
- * will and do imply positive new_state, wont and dont imply negative.
- *
- * Finally, there is one catch. If we send a negative response to a
- * positive request, my_state will be the positive while want_state will
- * remain negative. my_state will revert to negative when the negative
- * acknowlegment arrives from the peer. Thus, my_state generally tells
- * us not only the last negotiated state, but also tells us what the peer
- * wants to be doing as well. It is important to understand this difference
- * as we may wish to be processing data streams based on our desired state
- * (want_state) or based on what the peer thinks the state is (my_state).
- *
- * This all works fine because if the peer sends a positive request, the data
- * that we receive prior to negative acknowlegment will probably be affected
- * by the positive state, and we can process it as such (if we can; if we
- * can't then it really doesn't matter). If it is that important, then the
- * peer probably should be buffering until this option state negotiation
- * is complete.
- *
- */
- void
-send_do(option, init)
- int option, init;
-{
- if (init) {
- if ((do_dont_resp[option] == 0 && his_state_is_will(option)) ||
- his_want_state_is_will(option))
- return;
- /*
- * Special case for TELOPT_TM: We send a DO, but pretend
- * that we sent a DONT, so that we can send more DOs if
- * we want to.
- */
- if (option == TELOPT_TM)
- set_his_want_state_wont(option);
- else
- set_his_want_state_will(option);
- do_dont_resp[option]++;
- }
- (void) sprintf(nfrontp, (char *)doopt, option);
- nfrontp += sizeof (dont) - 2;
-
- DIAG(TD_OPTIONS, printoption("td: send do", option));
-}
-
-#ifdef AUTHENTICATION
-extern void auth_request();
-#endif
-#ifdef LINEMODE
-extern void doclientstat();
-#endif
-#ifdef ENCRYPTION
-extern void encrypt_send_support();
-#endif /* ENCRYPTION */
-
- void
-willoption(option)
- int option;
-{
- int changeok = 0;
- void (*func)() = 0;
-
- /*
- * process input from peer.
- */
-
- DIAG(TD_OPTIONS, printoption("td: recv will", option));
-
- if (do_dont_resp[option]) {
- do_dont_resp[option]--;
- if (do_dont_resp[option] && his_state_is_will(option))
- do_dont_resp[option]--;
- }
- if (do_dont_resp[option] == 0) {
- if (his_want_state_is_wont(option)) {
- switch (option) {
-
- case TELOPT_BINARY:
- init_termbuf();
- tty_binaryin(1);
- set_termbuf();
- changeok++;
- break;
-
- case TELOPT_ECHO:
- /*
- * See comments below for more info.
- */
- not42 = 0; /* looks like a 4.2 system */
- break;
-
- case TELOPT_TM:
-#if defined(LINEMODE) && defined(KLUDGELINEMODE)
- /*
- * This telnetd implementation does not really
- * support timing marks, it just uses them to
- * support the kludge linemode stuff. If we
- * receive a will or wont TM in response to our
- * do TM request that may have been sent to
- * determine kludge linemode support, process
- * it, otherwise TM should get a negative
- * response back.
- */
- /*
- * Handle the linemode kludge stuff.
- * If we are not currently supporting any
- * linemode at all, then we assume that this
- * is the client telling us to use kludge
- * linemode in response to our query. Set the
- * linemode type that is to be supported, note
- * that the client wishes to use linemode, and
- * eat the will TM as though it never arrived.
- */
- if (lmodetype < KLUDGE_LINEMODE) {
- lmodetype = KLUDGE_LINEMODE;
- clientstat(TELOPT_LINEMODE, WILL, 0);
- send_wont(TELOPT_SGA, 1);
- } else if (lmodetype == NO_AUTOKLUDGE) {
- lmodetype = KLUDGE_OK;
- }
-#endif /* defined(LINEMODE) && defined(KLUDGELINEMODE) */
- /*
- * We never respond to a WILL TM, and
- * we leave the state WONT.
- */
- return;
-
- case TELOPT_LFLOW:
- /*
- * If we are going to support flow control
- * option, then don't worry peer that we can't
- * change the flow control characters.
- */
- slctab[SLC_XON].defset.flag &= ~SLC_LEVELBITS;
- slctab[SLC_XON].defset.flag |= SLC_DEFAULT;
- slctab[SLC_XOFF].defset.flag &= ~SLC_LEVELBITS;
- slctab[SLC_XOFF].defset.flag |= SLC_DEFAULT;
- case TELOPT_TTYPE:
- case TELOPT_SGA:
- case TELOPT_NAWS:
- case TELOPT_TSPEED:
- case TELOPT_XDISPLOC:
- case TELOPT_NEW_ENVIRON:
- case TELOPT_OLD_ENVIRON:
- changeok++;
- break;
-
-#ifdef LINEMODE
- case TELOPT_LINEMODE:
-# ifdef KLUDGELINEMODE
- /*
- * Note client's desire to use linemode.
- */
- lmodetype = REAL_LINEMODE;
-# endif /* KLUDGELINEMODE */
- func = doclientstat;
- changeok++;
- break;
-#endif /* LINEMODE */
-
-#ifdef AUTHENTICATION
- case TELOPT_AUTHENTICATION:
- func = auth_request;
- changeok++;
- break;
-#endif
-
-#ifdef ENCRYPTION
- case TELOPT_ENCRYPT:
- func = encrypt_send_support;
- changeok++;
- break;
-#endif /* ENCRYPTION */
-
- default:
- break;
- }
- if (changeok) {
- set_his_want_state_will(option);
- send_do(option, 0);
- } else {
- do_dont_resp[option]++;
- send_dont(option, 0);
- }
- } else {
- /*
- * Option processing that should happen when
- * we receive conformation of a change in
- * state that we had requested.
- */
- switch (option) {
- case TELOPT_ECHO:
- not42 = 0; /* looks like a 4.2 system */
- /*
- * Egads, he responded "WILL ECHO". Turn
- * it off right now!
- */
- send_dont(option, 1);
- /*
- * "WILL ECHO". Kludge upon kludge!
- * A 4.2 client is now echoing user input at
- * the tty. This is probably undesireable and
- * it should be stopped. The client will
- * respond WONT TM to the DO TM that we send to
- * check for kludge linemode. When the WONT TM
- * arrives, linemode will be turned off and a
- * change propogated to the pty. This change
- * will cause us to process the new pty state
- * in localstat(), which will notice that
- * linemode is off and send a WILL ECHO
- * so that we are properly in character mode and
- * all is well.
- */
- break;
-#ifdef LINEMODE
- case TELOPT_LINEMODE:
-# ifdef KLUDGELINEMODE
- /*
- * Note client's desire to use linemode.
- */
- lmodetype = REAL_LINEMODE;
-# endif /* KLUDGELINEMODE */
- func = doclientstat;
- break;
-#endif /* LINEMODE */
-
-#ifdef AUTHENTICATION
- case TELOPT_AUTHENTICATION:
- func = auth_request;
- break;
-#endif
-
-#ifdef ENCRYPTION
- case TELOPT_ENCRYPT:
- func = encrypt_send_support;
- break;
-#endif /* ENCRYPTION */
- case TELOPT_LFLOW:
- func = flowstat;
- break;
- }
- }
- }
- set_his_state_will(option);
- if (func)
- (*func)();
-} /* end of willoption */
-
- void
-send_dont(option, init)
- int option, init;
-{
- if (init) {
- if ((do_dont_resp[option] == 0 && his_state_is_wont(option)) ||
- his_want_state_is_wont(option))
- return;
- set_his_want_state_wont(option);
- do_dont_resp[option]++;
- }
- (void) sprintf(nfrontp, (char *)dont, option);
- nfrontp += sizeof (doopt) - 2;
-
- DIAG(TD_OPTIONS, printoption("td: send dont", option));
-}
-
- void
-wontoption(option)
- int option;
-{
- /*
- * Process client input.
- */
-
- DIAG(TD_OPTIONS, printoption("td: recv wont", option));
-
- if (do_dont_resp[option]) {
- do_dont_resp[option]--;
- if (do_dont_resp[option] && his_state_is_wont(option))
- do_dont_resp[option]--;
- }
- if (do_dont_resp[option] == 0) {
- if (his_want_state_is_will(option)) {
- /* it is always ok to change to negative state */
- switch (option) {
- case TELOPT_ECHO:
- not42 = 1; /* doesn't seem to be a 4.2 system */
- break;
-
- case TELOPT_BINARY:
- init_termbuf();
- tty_binaryin(0);
- set_termbuf();
- break;
-
-#ifdef LINEMODE
- case TELOPT_LINEMODE:
-# ifdef KLUDGELINEMODE
- /*
- * If real linemode is supported, then client is
- * asking to turn linemode off.
- */
- if (lmodetype != REAL_LINEMODE)
- break;
-# endif /* KLUDGELINEMODE */
- clientstat(TELOPT_LINEMODE, WONT, 0);
- break;
-#endif /* LINEMODE */
-
- case TELOPT_TM:
- /*
- * If we get a WONT TM, and had sent a DO TM,
- * don't respond with a DONT TM, just leave it
- * as is. Short circut the state machine to
- * achive this.
- */
- set_his_want_state_wont(TELOPT_TM);
- return;
-
- case TELOPT_LFLOW:
- /*
- * If we are not going to support flow control
- * option, then let peer know that we can't
- * change the flow control characters.
- */
- slctab[SLC_XON].defset.flag &= ~SLC_LEVELBITS;
- slctab[SLC_XON].defset.flag |= SLC_CANTCHANGE;
- slctab[SLC_XOFF].defset.flag &= ~SLC_LEVELBITS;
- slctab[SLC_XOFF].defset.flag |= SLC_CANTCHANGE;
- break;
-
-#if defined(AUTHENTICATION)
- case TELOPT_AUTHENTICATION:
- auth_finished(0, AUTH_REJECT);
- break;
-#endif
-
- /*
- * For options that we might spin waiting for
- * sub-negotiation, if the client turns off the
- * option rather than responding to the request,
- * we have to treat it here as if we got a response
- * to the sub-negotiation, (by updating the timers)
- * so that we'll break out of the loop.
- */
- case TELOPT_TTYPE:
- settimer(ttypesubopt);
- break;
-
- case TELOPT_TSPEED:
- settimer(tspeedsubopt);
- break;
-
- case TELOPT_XDISPLOC:
- settimer(xdisplocsubopt);
- break;
-
- case TELOPT_OLD_ENVIRON:
- settimer(oenvironsubopt);
- break;
-
- case TELOPT_NEW_ENVIRON:
- settimer(environsubopt);
- break;
-
- default:
- break;
- }
- set_his_want_state_wont(option);
- if (his_state_is_will(option))
- send_dont(option, 0);
- } else {
- switch (option) {
- case TELOPT_TM:
-#if defined(LINEMODE) && defined(KLUDGELINEMODE)
- if (lmodetype < NO_AUTOKLUDGE) {
- lmodetype = NO_LINEMODE;
- clientstat(TELOPT_LINEMODE, WONT, 0);
- send_will(TELOPT_SGA, 1);
- send_will(TELOPT_ECHO, 1);
- }
-#endif /* defined(LINEMODE) && defined(KLUDGELINEMODE) */
- break;
-
-#if defined(AUTHENTICATION)
- case TELOPT_AUTHENTICATION:
- auth_finished(0, AUTH_REJECT);
- break;
-#endif
- default:
- break;
- }
- }
- }
- set_his_state_wont(option);
-
-} /* end of wontoption */
-
- void
-send_will(option, init)
- int option, init;
-{
- if (init) {
- if ((will_wont_resp[option] == 0 && my_state_is_will(option))||
- my_want_state_is_will(option))
- return;
- set_my_want_state_will(option);
- will_wont_resp[option]++;
- }
- (void) sprintf(nfrontp, (char *)will, option);
- nfrontp += sizeof (doopt) - 2;
-
- DIAG(TD_OPTIONS, printoption("td: send will", option));
-}
-
-#if !defined(LINEMODE) || !defined(KLUDGELINEMODE)
-/*
- * When we get a DONT SGA, we will try once to turn it
- * back on. If the other side responds DONT SGA, we
- * leave it at that. This is so that when we talk to
- * clients that understand KLUDGELINEMODE but not LINEMODE,
- * we'll keep them in char-at-a-time mode.
- */
-int turn_on_sga = 0;
-#endif
-
- void
-dooption(option)
- int option;
-{
- int changeok = 0;
-
- /*
- * Process client input.
- */
-
- DIAG(TD_OPTIONS, printoption("td: recv do", option));
-
- if (will_wont_resp[option]) {
- will_wont_resp[option]--;
- if (will_wont_resp[option] && my_state_is_will(option))
- will_wont_resp[option]--;
- }
- if ((will_wont_resp[option] == 0) && (my_want_state_is_wont(option))) {
- switch (option) {
- case TELOPT_ECHO:
-#ifdef LINEMODE
-# ifdef KLUDGELINEMODE
- if (lmodetype == NO_LINEMODE)
-# else
- if (his_state_is_wont(TELOPT_LINEMODE))
-# endif
-#endif
- {
- init_termbuf();
- tty_setecho(1);
- set_termbuf();
- }
- changeok++;
- break;
-
- case TELOPT_BINARY:
- init_termbuf();
- tty_binaryout(1);
- set_termbuf();
- changeok++;
- break;
-
- case TELOPT_SGA:
-#if defined(LINEMODE) && defined(KLUDGELINEMODE)
- /*
- * If kludge linemode is in use, then we must
- * process an incoming do SGA for linemode
- * purposes.
- */
- if (lmodetype == KLUDGE_LINEMODE) {
- /*
- * Receipt of "do SGA" in kludge
- * linemode is the peer asking us to
- * turn off linemode. Make note of
- * the request.
- */
- clientstat(TELOPT_LINEMODE, WONT, 0);
- /*
- * If linemode did not get turned off
- * then don't tell peer that we did.
- * Breaking here forces a wont SGA to
- * be returned.
- */
- if (linemode)
- break;
- }
-#else
- turn_on_sga = 0;
-#endif /* defined(LINEMODE) && defined(KLUDGELINEMODE) */
- changeok++;
- break;
-
- case TELOPT_STATUS:
- changeok++;
- break;
-
- case TELOPT_TM:
- /*
- * Special case for TM. We send a WILL, but
- * pretend we sent a WONT.
- */
- send_will(option, 0);
- set_my_want_state_wont(option);
- set_my_state_wont(option);
- return;
-
- case TELOPT_LOGOUT:
- /*
- * When we get a LOGOUT option, respond
- * with a WILL LOGOUT, make sure that
- * it gets written out to the network,
- * and then just go away...
- */
- set_my_want_state_will(TELOPT_LOGOUT);
- send_will(TELOPT_LOGOUT, 0);
- set_my_state_will(TELOPT_LOGOUT);
- (void)netflush();
- cleanup(0);
- /* NOT REACHED */
- break;
-
-#ifdef ENCRYPTION
- case TELOPT_ENCRYPT:
- changeok++;
- break;
-#endif /* ENCRYPTION */
- case TELOPT_LINEMODE:
- case TELOPT_TTYPE:
- case TELOPT_NAWS:
- case TELOPT_TSPEED:
- case TELOPT_LFLOW:
- case TELOPT_XDISPLOC:
-#ifdef TELOPT_ENVIRON
- case TELOPT_NEW_ENVIRON:
-#endif
- case TELOPT_OLD_ENVIRON:
- default:
- break;
- }
- if (changeok) {
- set_my_want_state_will(option);
- send_will(option, 0);
- } else {
- will_wont_resp[option]++;
- send_wont(option, 0);
- }
- }
- set_my_state_will(option);
-
-} /* end of dooption */
-
- void
-send_wont(option, init)
- int option, init;
-{
- if (init) {
- if ((will_wont_resp[option] == 0 && my_state_is_wont(option)) ||
- my_want_state_is_wont(option))
- return;
- set_my_want_state_wont(option);
- will_wont_resp[option]++;
- }
- (void) sprintf(nfrontp, (char *)wont, option);
- nfrontp += sizeof (wont) - 2;
-
- DIAG(TD_OPTIONS, printoption("td: send wont", option));
-}
-
- void
-dontoption(option)
- int option;
-{
- /*
- * Process client input.
- */
-
-
- DIAG(TD_OPTIONS, printoption("td: recv dont", option));
-
- if (will_wont_resp[option]) {
- will_wont_resp[option]--;
- if (will_wont_resp[option] && my_state_is_wont(option))
- will_wont_resp[option]--;
- }
- if ((will_wont_resp[option] == 0) && (my_want_state_is_will(option))) {
- switch (option) {
- case TELOPT_BINARY:
- init_termbuf();
- tty_binaryout(0);
- set_termbuf();
- break;
-
- case TELOPT_ECHO: /* we should stop echoing */
-#ifdef LINEMODE
-# ifdef KLUDGELINEMODE
- if ((lmodetype != REAL_LINEMODE) &&
- (lmodetype != KLUDGE_LINEMODE))
-# else
- if (his_state_is_wont(TELOPT_LINEMODE))
-# endif
-#endif
- {
- init_termbuf();
- tty_setecho(0);
- set_termbuf();
- }
- break;
-
- case TELOPT_SGA:
-#if defined(LINEMODE) && defined(KLUDGELINEMODE)
- /*
- * If kludge linemode is in use, then we
- * must process an incoming do SGA for
- * linemode purposes.
- */
- if ((lmodetype == KLUDGE_LINEMODE) ||
- (lmodetype == KLUDGE_OK)) {
- /*
- * The client is asking us to turn
- * linemode on.
- */
- lmodetype = KLUDGE_LINEMODE;
- clientstat(TELOPT_LINEMODE, WILL, 0);
- /*
- * If we did not turn line mode on,
- * then what do we say? Will SGA?
- * This violates design of telnet.
- * Gross. Very Gross.
- */
- }
- break;
-#else
- set_my_want_state_wont(option);
- if (my_state_is_will(option))
- send_wont(option, 0);
- set_my_state_wont(option);
- if (turn_on_sga ^= 1)
- send_will(option, 1);
- return;
-#endif /* defined(LINEMODE) && defined(KLUDGELINEMODE) */
-
- default:
- break;
- }
-
- set_my_want_state_wont(option);
- if (my_state_is_will(option))
- send_wont(option, 0);
- }
- set_my_state_wont(option);
-
-} /* end of dontoption */
-
-#ifdef ENV_HACK
-int env_ovar = -1;
-int env_ovalue = -1;
-#else /* ENV_HACK */
-# define env_ovar OLD_ENV_VAR
-# define env_ovalue OLD_ENV_VALUE
-#endif /* ENV_HACK */
-
-/*
- * suboption()
- *
- * Look at the sub-option buffer, and try to be helpful to the other
- * side.
- *
- * Currently we recognize:
- *
- * Terminal type is
- * Linemode
- * Window size
- * Terminal speed
- */
- void
-suboption()
-{
- register int subchar;
-
- DIAG(TD_OPTIONS, {netflush(); printsub('<', subpointer, SB_LEN()+2);});
-
- subchar = SB_GET();
- switch (subchar) {
- case TELOPT_TSPEED: {
- register int xspeed, rspeed;
-
- if (his_state_is_wont(TELOPT_TSPEED)) /* Ignore if option disabled */
- break;
-
- settimer(tspeedsubopt);
-
- if (SB_EOF() || SB_GET() != TELQUAL_IS)
- return;
-
- xspeed = atoi((char *)subpointer);
-
- while (SB_GET() != ',' && !SB_EOF());
- if (SB_EOF())
- return;
-
- rspeed = atoi((char *)subpointer);
- clientstat(TELOPT_TSPEED, xspeed, rspeed);
-
- break;
-
- } /* end of case TELOPT_TSPEED */
-
- case TELOPT_TTYPE: { /* Yaaaay! */
- static char terminalname[41];
-
- if (his_state_is_wont(TELOPT_TTYPE)) /* Ignore if option disabled */
- break;
- settimer(ttypesubopt);
-
- if (SB_EOF() || SB_GET() != TELQUAL_IS) {
- return; /* ??? XXX but, this is the most robust */
- }
-
- terminaltype = terminalname;
-
- while ((terminaltype < (terminalname + sizeof terminalname-1)) &&
- !SB_EOF()) {
- register int c;
-
- c = SB_GET();
- if (isupper(c)) {
- c = tolower(c);
- }
- *terminaltype++ = c; /* accumulate name */
- }
- *terminaltype = 0;
- terminaltype = terminalname;
- break;
- } /* end of case TELOPT_TTYPE */
-
- case TELOPT_NAWS: {
- register int xwinsize, ywinsize;
-
- if (his_state_is_wont(TELOPT_NAWS)) /* Ignore if option disabled */
- break;
-
- if (SB_EOF())
- return;
- xwinsize = SB_GET() << 8;
- if (SB_EOF())
- return;
- xwinsize |= SB_GET();
- if (SB_EOF())
- return;
- ywinsize = SB_GET() << 8;
- if (SB_EOF())
- return;
- ywinsize |= SB_GET();
- clientstat(TELOPT_NAWS, xwinsize, ywinsize);
-
- break;
-
- } /* end of case TELOPT_NAWS */
-
-#ifdef LINEMODE
- case TELOPT_LINEMODE: {
- register int request;
-
- if (his_state_is_wont(TELOPT_LINEMODE)) /* Ignore if option disabled */
- break;
- /*
- * Process linemode suboptions.
- */
- if (SB_EOF())
- break; /* garbage was sent */
- request = SB_GET(); /* get will/wont */
-
- if (SB_EOF())
- break; /* another garbage check */
-
- if (request == LM_SLC) { /* SLC is not preceeded by WILL or WONT */
- /*
- * Process suboption buffer of slc's
- */
- start_slc(1);
- do_opt_slc(subpointer, subend - subpointer);
- (void) end_slc(0);
- break;
- } else if (request == LM_MODE) {
- if (SB_EOF())
- return;
- useeditmode = SB_GET(); /* get mode flag */
- clientstat(LM_MODE, 0, 0);
- break;
- }
-
- if (SB_EOF())
- break;
- switch (SB_GET()) { /* what suboption? */
- case LM_FORWARDMASK:
- /*
- * According to spec, only server can send request for
- * forwardmask, and client can only return a positive response.
- * So don't worry about it.
- */
-
- default:
- break;
- }
- break;
- } /* end of case TELOPT_LINEMODE */
-#endif
- case TELOPT_STATUS: {
- int mode;
-
- if (SB_EOF())
- break;
- mode = SB_GET();
- switch (mode) {
- case TELQUAL_SEND:
- if (my_state_is_will(TELOPT_STATUS))
- send_status();
- break;
-
- case TELQUAL_IS:
- break;
-
- default:
- break;
- }
- break;
- } /* end of case TELOPT_STATUS */
-
- case TELOPT_XDISPLOC: {
- if (SB_EOF() || SB_GET() != TELQUAL_IS)
- return;
- settimer(xdisplocsubopt);
- subpointer[SB_LEN()] = '\0';
- (void)setenv("DISPLAY", (char *)subpointer, 1);
- break;
- } /* end of case TELOPT_XDISPLOC */
-
-#ifdef TELOPT_NEW_ENVIRON
- case TELOPT_NEW_ENVIRON:
-#endif
- case TELOPT_OLD_ENVIRON: {
- register int c;
- register char *cp, *varp, *valp;
-
- if (SB_EOF())
- return;
- c = SB_GET();
- if (c == TELQUAL_IS) {
- if (subchar == TELOPT_OLD_ENVIRON)
- settimer(oenvironsubopt);
- else
- settimer(environsubopt);
- } else if (c != TELQUAL_INFO) {
- return;
- }
-
-#ifdef TELOPT_NEW_ENVIRON
- if (subchar == TELOPT_NEW_ENVIRON) {
- while (!SB_EOF()) {
- c = SB_GET();
- if ((c == NEW_ENV_VAR) || (c == ENV_USERVAR))
- break;
- }
- } else
-#endif
- {
-#ifdef ENV_HACK
- /*
- * We only want to do this if we haven't already decided
- * whether or not the other side has its VALUE and VAR
- * reversed.
- */
- if (env_ovar < 0) {
- register int last = -1; /* invalid value */
- int empty = 0;
- int got_var = 0, got_value = 0, got_uservar = 0;
-
- /*
- * The other side might have its VALUE and VAR values
- * reversed. To be interoperable, we need to determine
- * which way it is. If the first recognized character
- * is a VAR or VALUE, then that will tell us what
- * type of client it is. If the fist recognized
- * character is a USERVAR, then we continue scanning
- * the suboption looking for two consecutive
- * VAR or VALUE fields. We should not get two
- * consecutive VALUE fields, so finding two
- * consecutive VALUE or VAR fields will tell us
- * what the client is.
- */
- SB_SAVE();
- while (!SB_EOF()) {
- c = SB_GET();
- switch(c) {
- case OLD_ENV_VAR:
- if (last < 0 || last == OLD_ENV_VAR
- || (empty && (last == OLD_ENV_VALUE)))
- goto env_ovar_ok;
- got_var++;
- last = OLD_ENV_VAR;
- break;
- case OLD_ENV_VALUE:
- if (last < 0 || last == OLD_ENV_VALUE
- || (empty && (last == OLD_ENV_VAR)))
- goto env_ovar_wrong;
- got_value++;
- last = OLD_ENV_VALUE;
- break;
- case ENV_USERVAR:
- /* count strings of USERVAR as one */
- if (last != ENV_USERVAR)
- got_uservar++;
- if (empty) {
- if (last == OLD_ENV_VALUE)
- goto env_ovar_ok;
- if (last == OLD_ENV_VAR)
- goto env_ovar_wrong;
- }
- last = ENV_USERVAR;
- break;
- case ENV_ESC:
- if (!SB_EOF())
- c = SB_GET();
- /* FALL THROUGH */
- default:
- empty = 0;
- continue;
- }
- empty = 1;
- }
- if (empty) {
- if (last == OLD_ENV_VALUE)
- goto env_ovar_ok;
- if (last == OLD_ENV_VAR)
- goto env_ovar_wrong;
- }
- /*
- * Ok, the first thing was a USERVAR, and there
- * are not two consecutive VAR or VALUE commands,
- * and none of the VAR or VALUE commands are empty.
- * If the client has sent us a well-formed option,
- * then the number of VALUEs received should always
- * be less than or equal to the number of VARs and
- * USERVARs received.
- *
- * If we got exactly as many VALUEs as VARs and
- * USERVARs, the client has the same definitions.
- *
- * If we got exactly as many VARs as VALUEs and
- * USERVARS, the client has reversed definitions.
- */
- if (got_uservar + got_var == got_value) {
- env_ovar_ok:
- env_ovar = OLD_ENV_VAR;
- env_ovalue = OLD_ENV_VALUE;
- } else if (got_uservar + got_value == got_var) {
- env_ovar_wrong:
- env_ovar = OLD_ENV_VALUE;
- env_ovalue = OLD_ENV_VAR;
- DIAG(TD_OPTIONS, {sprintf(nfrontp,
- "ENVIRON VALUE and VAR are reversed!\r\n");
- nfrontp += strlen(nfrontp);});
-
- }
- }
- SB_RESTORE();
-#endif
-
- while (!SB_EOF()) {
- c = SB_GET();
- if ((c == env_ovar) || (c == ENV_USERVAR))
- break;
- }
- }
-
- if (SB_EOF())
- return;
-
- cp = varp = (char *)subpointer;
- valp = 0;
-
- while (!SB_EOF()) {
- c = SB_GET();
- if (subchar == TELOPT_OLD_ENVIRON) {
- if (c == env_ovar)
- c = NEW_ENV_VAR;
- else if (c == env_ovalue)
- c = NEW_ENV_VALUE;
- }
- switch (c) {
-
- case NEW_ENV_VALUE:
- *cp = '\0';
- cp = valp = (char *)subpointer;
- break;
-
- case NEW_ENV_VAR:
- case ENV_USERVAR:
- *cp = '\0';
- if (valp)
- (void)setenv(varp, valp, 1);
- else
- unsetenv(varp);
- cp = varp = (char *)subpointer;
- valp = 0;
- break;
-
- case ENV_ESC:
- if (SB_EOF())
- break;
- c = SB_GET();
- /* FALL THROUGH */
- default:
- *cp++ = c;
- break;
- }
- }
- *cp = '\0';
- if (valp)
- (void)setenv(varp, valp, 1);
- else
- unsetenv(varp);
- break;
- } /* end of case TELOPT_NEW_ENVIRON */
-#if defined(AUTHENTICATION)
- case TELOPT_AUTHENTICATION:
- if (SB_EOF())
- break;
- switch(SB_GET()) {
- case TELQUAL_SEND:
- case TELQUAL_REPLY:
- /*
- * These are sent by us and cannot be sent by
- * the client.
- */
- break;
- case TELQUAL_IS:
- auth_is(subpointer, SB_LEN());
- break;
- case TELQUAL_NAME:
- auth_name(subpointer, SB_LEN());
- break;
- }
- break;
-#endif
-#ifdef ENCRYPTION
- case TELOPT_ENCRYPT:
- if (SB_EOF())
- break;
- switch(SB_GET()) {
- case ENCRYPT_SUPPORT:
- encrypt_support(subpointer, SB_LEN());
- break;
- case ENCRYPT_IS:
- encrypt_is(subpointer, SB_LEN());
- break;
- case ENCRYPT_REPLY:
- encrypt_reply(subpointer, SB_LEN());
- break;
- case ENCRYPT_START:
- encrypt_start(subpointer, SB_LEN());
- break;
- case ENCRYPT_END:
- encrypt_end();
- break;
- case ENCRYPT_REQSTART:
- encrypt_request_start(subpointer, SB_LEN());
- break;
- case ENCRYPT_REQEND:
- /*
- * We can always send an REQEND so that we cannot
- * get stuck encrypting. We should only get this
- * if we have been able to get in the correct mode
- * anyhow.
- */
- encrypt_request_end();
- break;
- case ENCRYPT_ENC_KEYID:
- encrypt_enc_keyid(subpointer, SB_LEN());
- break;
- case ENCRYPT_DEC_KEYID:
- encrypt_dec_keyid(subpointer, SB_LEN());
- break;
- default:
- break;
- }
- break;
-#endif /* ENCRYPTION */
-
- default:
- break;
- } /* end of switch */
-
-} /* end of suboption */
-
- void
-doclientstat()
-{
- clientstat(TELOPT_LINEMODE, WILL, 0);
-}
-
-#define ADD(c) *ncp++ = c
-#define ADD_DATA(c) { *ncp++ = c; if (c == SE || c == IAC) *ncp++ = c; }
- void
-send_status()
-{
- unsigned char statusbuf[256];
- register unsigned char *ncp;
- register unsigned char i;
-
- ncp = statusbuf;
-
- netflush(); /* get rid of anything waiting to go out */
-
- ADD(IAC);
- ADD(SB);
- ADD(TELOPT_STATUS);
- ADD(TELQUAL_IS);
-
- /*
- * We check the want_state rather than the current state,
- * because if we received a DO/WILL for an option that we
- * don't support, and the other side didn't send a DONT/WONT
- * in response to our WONT/DONT, then the "state" will be
- * WILL/DO, and the "want_state" will be WONT/DONT. We
- * need to go by the latter.
- */
- for (i = 0; i < (unsigned char)NTELOPTS; i++) {
- if (my_want_state_is_will(i)) {
- ADD(WILL);
- ADD_DATA(i);
- }
- if (his_want_state_is_will(i)) {
- ADD(DO);
- ADD_DATA(i);
- }
- }
-
- if (his_want_state_is_will(TELOPT_LFLOW)) {
- ADD(SB);
- ADD(TELOPT_LFLOW);
- if (flowmode) {
- ADD(LFLOW_ON);
- } else {
- ADD(LFLOW_OFF);
- }
- ADD(SE);
-
- if (restartany >= 0) {
- ADD(SB);
- ADD(TELOPT_LFLOW);
- if (restartany) {
- ADD(LFLOW_RESTART_ANY);
- } else {
- ADD(LFLOW_RESTART_XON);
- }
- ADD(SE);
- }
- }
-
-#ifdef LINEMODE
- if (his_want_state_is_will(TELOPT_LINEMODE)) {
- unsigned char *cp, *cpe;
- int len;
-
- ADD(SB);
- ADD(TELOPT_LINEMODE);
- ADD(LM_MODE);
- ADD_DATA(editmode);
- ADD(SE);
-
- ADD(SB);
- ADD(TELOPT_LINEMODE);
- ADD(LM_SLC);
- start_slc(0);
- send_slc();
- len = end_slc(&cp);
- for (cpe = cp + len; cp < cpe; cp++)
- ADD_DATA(*cp);
- ADD(SE);
- }
-#endif /* LINEMODE */
-
- ADD(IAC);
- ADD(SE);
-
- writenet(statusbuf, ncp - statusbuf);
- netflush(); /* Send it on its way */
-
- DIAG(TD_OPTIONS,
- {printsub('>', statusbuf, ncp - statusbuf); netflush();});
-}
diff --git a/secure/libexec/telnetd/sys_term.c b/secure/libexec/telnetd/sys_term.c
deleted file mode 100644
index 825491fc6c40..000000000000
--- a/secure/libexec/telnetd/sys_term.c
+++ /dev/null
@@ -1,2319 +0,0 @@
-/*
- * Copyright (c) 1989, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)sys_term.c 8.4 (Berkeley) 5/30/95";
-#endif /* not lint */
-
-#include "telnetd.h"
-#include "pathnames.h"
-
-#if defined(AUTHENTICATION)
-#include <libtelnet/auth.h>
-#endif
-
-#if defined(CRAY) || defined(__hpux)
-# define PARENT_DOES_UTMP
-#endif
-
-int utmp_len = MAXHOSTNAMELEN;
-#ifdef NEWINIT
-#include <initreq.h>
-#else /* NEWINIT*/
-# ifdef UTMPX
-# include <utmpx.h>
-struct utmpx wtmp;
-# else
-# include <utmp.h>
-struct utmp wtmp;
-# endif /* UTMPX */
-
-# ifndef PARENT_DOES_UTMP
-#ifdef _PATH_WTMP
-char wtmpf[] = _PATH_WTMP;
-#else
-char wtmpf[] = "/usr/adm/wtmp";
-#endif
-#ifdef _PATH_UTMP
-char utmpf[] = _PATH_UTMP;
-#else
-char utmpf[] = "/etc/utmp";
-#endif
-# else /* PARENT_DOES_UTMP */
-char wtmpf[] = "/etc/wtmp";
-# endif /* PARENT_DOES_UTMP */
-
-# ifdef CRAY
-#include <tmpdir.h>
-#include <sys/wait.h>
-# if (UNICOS_LVL == '7.0') || (UNICOS_LVL == '7.1')
-# define UNICOS7x
-# endif
-
-# ifdef UNICOS7x
-#include <sys/sysv.h>
-#include <sys/secstat.h>
-extern int secflag;
-extern struct sysv sysv;
-# endif /* UNICOS7x */
-# endif /* CRAY */
-#endif /* NEWINIT */
-
-#ifdef STREAMSPTY
-#include <sac.h>
-#include <sys/stropts.h>
-#endif
-
-#define SCPYN(a, b) (void) strncpy(a, b, sizeof(a))
-#define SCMPN(a, b) strncmp(a, b, sizeof(a))
-
-#ifdef STREAMS
-#include <sys/stream.h>
-#endif
-#ifdef __hpux
-#include <sys/resource.h>
-#include <sys/proc.h>
-#endif
-#include <sys/tty.h>
-#ifdef t_erase
-#undef t_erase
-#undef t_kill
-#undef t_intrc
-#undef t_quitc
-#undef t_startc
-#undef t_stopc
-#undef t_eofc
-#undef t_brkc
-#undef t_suspc
-#undef t_dsuspc
-#undef t_rprntc
-#undef t_flushc
-#undef t_werasc
-#undef t_lnextc
-#endif
-
-#if defined(UNICOS5) && defined(CRAY2) && !defined(EXTPROC)
-# define EXTPROC 0400
-#endif
-
-#ifndef USE_TERMIO
-struct termbuf {
- struct sgttyb sg;
- struct tchars tc;
- struct ltchars ltc;
- int state;
- int lflags;
-} termbuf, termbuf2;
-# define cfsetospeed(tp, val) (tp)->sg.sg_ospeed = (val)
-# define cfsetispeed(tp, val) (tp)->sg.sg_ispeed = (val)
-# define cfgetospeed(tp) (tp)->sg.sg_ospeed
-# define cfgetispeed(tp) (tp)->sg.sg_ispeed
-#else /* USE_TERMIO */
-# ifdef SYSV_TERMIO
-# define termios termio
-# endif
-# ifndef TCSANOW
-# ifdef TCSETS
-# define TCSANOW TCSETS
-# define TCSADRAIN TCSETSW
-# define tcgetattr(f, t) ioctl(f, TCGETS, (char *)t)
-# else
-# ifdef TCSETA
-# define TCSANOW TCSETA
-# define TCSADRAIN TCSETAW
-# define tcgetattr(f, t) ioctl(f, TCGETA, (char *)t)
-# else
-# define TCSANOW TIOCSETA
-# define TCSADRAIN TIOCSETAW
-# define tcgetattr(f, t) ioctl(f, TIOCGETA, (char *)t)
-# endif
-# endif
-# define tcsetattr(f, a, t) ioctl(f, a, t)
-# define cfsetospeed(tp, val) (tp)->c_cflag &= ~CBAUD; \
- (tp)->c_cflag |= (val)
-# define cfgetospeed(tp) ((tp)->c_cflag & CBAUD)
-# ifdef CIBAUD
-# define cfsetispeed(tp, val) (tp)->c_cflag &= ~CIBAUD; \
- (tp)->c_cflag |= ((val)<<IBSHIFT)
-# define cfgetispeed(tp) (((tp)->c_cflag & CIBAUD)>>IBSHIFT)
-# else
-# define cfsetispeed(tp, val) (tp)->c_cflag &= ~CBAUD; \
- (tp)->c_cflag |= (val)
-# define cfgetispeed(tp) ((tp)->c_cflag & CBAUD)
-# endif
-# endif /* TCSANOW */
-struct termios termbuf, termbuf2; /* pty control structure */
-# ifdef STREAMSPTY
-int ttyfd = -1;
-# endif
-#endif /* USE_TERMIO */
-
-/*
- * init_termbuf()
- * copy_termbuf(cp)
- * set_termbuf()
- *
- * These three routines are used to get and set the "termbuf" structure
- * to and from the kernel. init_termbuf() gets the current settings.
- * copy_termbuf() hands in a new "termbuf" to write to the kernel, and
- * set_termbuf() writes the structure into the kernel.
- */
-
- void
-init_termbuf()
-{
-#ifndef USE_TERMIO
- (void) ioctl(pty, TIOCGETP, (char *)&termbuf.sg);
- (void) ioctl(pty, TIOCGETC, (char *)&termbuf.tc);
- (void) ioctl(pty, TIOCGLTC, (char *)&termbuf.ltc);
-# ifdef TIOCGSTATE
- (void) ioctl(pty, TIOCGSTATE, (char *)&termbuf.state);
-# endif
-#else
-# ifdef STREAMSPTY
- (void) tcgetattr(ttyfd, &termbuf);
-# else
- (void) tcgetattr(pty, &termbuf);
-# endif
-#endif
- termbuf2 = termbuf;
-}
-
-#if defined(LINEMODE) && defined(TIOCPKT_IOCTL)
- void
-copy_termbuf(cp, len)
- char *cp;
- int len;
-{
- if (len > sizeof(termbuf))
- len = sizeof(termbuf);
- memmove((char *)&termbuf, cp, len);
- termbuf2 = termbuf;
-}
-#endif /* defined(LINEMODE) && defined(TIOCPKT_IOCTL) */
-
- void
-set_termbuf()
-{
- /*
- * Only make the necessary changes.
- */
-#ifndef USE_TERMIO
- if (memcmp((char *)&termbuf.sg, (char *)&termbuf2.sg,
- sizeof(termbuf.sg)))
- (void) ioctl(pty, TIOCSETN, (char *)&termbuf.sg);
- if (memcmp((char *)&termbuf.tc, (char *)&termbuf2.tc,
- sizeof(termbuf.tc)))
- (void) ioctl(pty, TIOCSETC, (char *)&termbuf.tc);
- if (memcmp((char *)&termbuf.ltc, (char *)&termbuf2.ltc,
- sizeof(termbuf.ltc)))
- (void) ioctl(pty, TIOCSLTC, (char *)&termbuf.ltc);
- if (termbuf.lflags != termbuf2.lflags)
- (void) ioctl(pty, TIOCLSET, (char *)&termbuf.lflags);
-#else /* USE_TERMIO */
- if (memcmp((char *)&termbuf, (char *)&termbuf2, sizeof(termbuf)))
-# ifdef STREAMSPTY
- (void) tcsetattr(ttyfd, TCSANOW, &termbuf);
-# else
- (void) tcsetattr(pty, TCSANOW, &termbuf);
-# endif
-# if defined(CRAY2) && defined(UNICOS5)
- needtermstat = 1;
-# endif
-#endif /* USE_TERMIO */
-}
-
-
-/*
- * spcset(func, valp, valpp)
- *
- * This function takes various special characters (func), and
- * sets *valp to the current value of that character, and
- * *valpp to point to where in the "termbuf" structure that
- * value is kept.
- *
- * It returns the SLC_ level of support for this function.
- */
-
-#ifndef USE_TERMIO
- int
-spcset(func, valp, valpp)
- int func;
- cc_t *valp;
- cc_t **valpp;
-{
- switch(func) {
- case SLC_EOF:
- *valp = termbuf.tc.t_eofc;
- *valpp = (cc_t *)&termbuf.tc.t_eofc;
- return(SLC_VARIABLE);
- case SLC_EC:
- *valp = termbuf.sg.sg_erase;
- *valpp = (cc_t *)&termbuf.sg.sg_erase;
- return(SLC_VARIABLE);
- case SLC_EL:
- *valp = termbuf.sg.sg_kill;
- *valpp = (cc_t *)&termbuf.sg.sg_kill;
- return(SLC_VARIABLE);
- case SLC_IP:
- *valp = termbuf.tc.t_intrc;
- *valpp = (cc_t *)&termbuf.tc.t_intrc;
- return(SLC_VARIABLE|SLC_FLUSHIN|SLC_FLUSHOUT);
- case SLC_ABORT:
- *valp = termbuf.tc.t_quitc;
- *valpp = (cc_t *)&termbuf.tc.t_quitc;
- return(SLC_VARIABLE|SLC_FLUSHIN|SLC_FLUSHOUT);
- case SLC_XON:
- *valp = termbuf.tc.t_startc;
- *valpp = (cc_t *)&termbuf.tc.t_startc;
- return(SLC_VARIABLE);
- case SLC_XOFF:
- *valp = termbuf.tc.t_stopc;
- *valpp = (cc_t *)&termbuf.tc.t_stopc;
- return(SLC_VARIABLE);
- case SLC_AO:
- *valp = termbuf.ltc.t_flushc;
- *valpp = (cc_t *)&termbuf.ltc.t_flushc;
- return(SLC_VARIABLE);
- case SLC_SUSP:
- *valp = termbuf.ltc.t_suspc;
- *valpp = (cc_t *)&termbuf.ltc.t_suspc;
- return(SLC_VARIABLE);
- case SLC_EW:
- *valp = termbuf.ltc.t_werasc;
- *valpp = (cc_t *)&termbuf.ltc.t_werasc;
- return(SLC_VARIABLE);
- case SLC_RP:
- *valp = termbuf.ltc.t_rprntc;
- *valpp = (cc_t *)&termbuf.ltc.t_rprntc;
- return(SLC_VARIABLE);
- case SLC_LNEXT:
- *valp = termbuf.ltc.t_lnextc;
- *valpp = (cc_t *)&termbuf.ltc.t_lnextc;
- return(SLC_VARIABLE);
- case SLC_FORW1:
- *valp = termbuf.tc.t_brkc;
- *valpp = (cc_t *)&termbuf.ltc.t_lnextc;
- return(SLC_VARIABLE);
- case SLC_BRK:
- case SLC_SYNCH:
- case SLC_AYT:
- case SLC_EOR:
- *valp = (cc_t)0;
- *valpp = (cc_t *)0;
- return(SLC_DEFAULT);
- default:
- *valp = (cc_t)0;
- *valpp = (cc_t *)0;
- return(SLC_NOSUPPORT);
- }
-}
-
-#else /* USE_TERMIO */
-
- int
-spcset(func, valp, valpp)
- int func;
- cc_t *valp;
- cc_t **valpp;
-{
-
-#define setval(a, b) *valp = termbuf.c_cc[a]; \
- *valpp = &termbuf.c_cc[a]; \
- return(b);
-#define defval(a) *valp = ((cc_t)a); *valpp = (cc_t *)0; return(SLC_DEFAULT);
-
- switch(func) {
- case SLC_EOF:
- setval(VEOF, SLC_VARIABLE);
- case SLC_EC:
- setval(VERASE, SLC_VARIABLE);
- case SLC_EL:
- setval(VKILL, SLC_VARIABLE);
- case SLC_IP:
- setval(VINTR, SLC_VARIABLE|SLC_FLUSHIN|SLC_FLUSHOUT);
- case SLC_ABORT:
- setval(VQUIT, SLC_VARIABLE|SLC_FLUSHIN|SLC_FLUSHOUT);
- case SLC_XON:
-#ifdef VSTART
- setval(VSTART, SLC_VARIABLE);
-#else
- defval(0x13);
-#endif
- case SLC_XOFF:
-#ifdef VSTOP
- setval(VSTOP, SLC_VARIABLE);
-#else
- defval(0x11);
-#endif
- case SLC_EW:
-#ifdef VWERASE
- setval(VWERASE, SLC_VARIABLE);
-#else
- defval(0);
-#endif
- case SLC_RP:
-#ifdef VREPRINT
- setval(VREPRINT, SLC_VARIABLE);
-#else
- defval(0);
-#endif
- case SLC_LNEXT:
-#ifdef VLNEXT
- setval(VLNEXT, SLC_VARIABLE);
-#else
- defval(0);
-#endif
- case SLC_AO:
-#if !defined(VDISCARD) && defined(VFLUSHO)
-# define VDISCARD VFLUSHO
-#endif
-#ifdef VDISCARD
- setval(VDISCARD, SLC_VARIABLE|SLC_FLUSHOUT);
-#else
- defval(0);
-#endif
- case SLC_SUSP:
-#ifdef VSUSP
- setval(VSUSP, SLC_VARIABLE|SLC_FLUSHIN);
-#else
- defval(0);
-#endif
-#ifdef VEOL
- case SLC_FORW1:
- setval(VEOL, SLC_VARIABLE);
-#endif
-#ifdef VEOL2
- case SLC_FORW2:
- setval(VEOL2, SLC_VARIABLE);
-#endif
- case SLC_AYT:
-#ifdef VSTATUS
- setval(VSTATUS, SLC_VARIABLE);
-#else
- defval(0);
-#endif
-
- case SLC_BRK:
- case SLC_SYNCH:
- case SLC_EOR:
- defval(0);
-
- default:
- *valp = 0;
- *valpp = 0;
- return(SLC_NOSUPPORT);
- }
-}
-#endif /* USE_TERMIO */
-
-#ifdef CRAY
-/*
- * getnpty()
- *
- * Return the number of pty's configured into the system.
- */
- int
-getnpty()
-{
-#ifdef _SC_CRAY_NPTY
- int numptys;
-
- if ((numptys = sysconf(_SC_CRAY_NPTY)) != -1)
- return numptys;
- else
-#endif /* _SC_CRAY_NPTY */
- return 128;
-}
-#endif /* CRAY */
-
-#ifndef convex
-/*
- * getpty()
- *
- * Allocate a pty. As a side effect, the external character
- * array "line" contains the name of the slave side.
- *
- * Returns the file descriptor of the opened pty.
- */
-#ifndef __GNUC__
-char *line = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
-#else
-static char Xline[] = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
-char *line = Xline;
-#endif
-#ifdef CRAY
-char *myline = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
-#endif /* CRAY */
-
- int
-getpty(ptynum)
-int *ptynum;
-{
- register int p;
-#ifdef STREAMSPTY
- int t;
- char *ptsname();
-
- p = open("/dev/ptmx", 2);
- if (p > 0) {
- grantpt(p);
- unlockpt(p);
- strcpy(line, ptsname(p));
- return(p);
- }
-
-#else /* ! STREAMSPTY */
-#ifndef CRAY
- register char *cp, *p1, *p2;
- register int i;
-#if defined(sun) && defined(TIOCGPGRP) && BSD < 199207
- int dummy;
-#endif
-
-#ifndef __hpux
- (void) sprintf(line, "/dev/ptyXX");
- p1 = &line[8];
- p2 = &line[9];
-#else
- (void) sprintf(line, "/dev/ptym/ptyXX");
- p1 = &line[13];
- p2 = &line[14];
-#endif
-
- for (cp = "pqrsPQRS"; *cp; cp++) {
- struct stat stb;
-
- *p1 = *cp;
- *p2 = '0';
- /*
- * This stat() check is just to keep us from
- * looping through all 256 combinations if there
- * aren't that many ptys available.
- */
- if (stat(line, &stb) < 0)
- break;
- for (i = 0; i < 32; i++) {
- *p2 = "0123456789abcdefghijklmnopqrstuv"[i];
- p = open(line, 2);
- if (p > 0) {
-#ifndef __hpux
- line[5] = 't';
-#else
- for (p1 = &line[8]; *p1; p1++)
- *p1 = *(p1+1);
- line[9] = 't';
-#endif
- chown(line, 0, 0);
- chmod(line, 0600);
-#if defined(sun) && defined(TIOCGPGRP) && BSD < 199207
- if (ioctl(p, TIOCGPGRP, &dummy) == 0
- || errno != EIO) {
- chmod(line, 0666);
- close(p);
- line[5] = 'p';
- } else
-#endif /* defined(sun) && defined(TIOCGPGRP) && BSD < 199207 */
- return(p);
- }
- }
- }
-#else /* CRAY */
- extern lowpty, highpty;
- struct stat sb;
-
- for (*ptynum = lowpty; *ptynum <= highpty; (*ptynum)++) {
- (void) sprintf(myline, "/dev/pty/%03d", *ptynum);
- p = open(myline, 2);
- if (p < 0)
- continue;
- (void) sprintf(line, "/dev/ttyp%03d", *ptynum);
- /*
- * Here are some shenanigans to make sure that there
- * are no listeners lurking on the line.
- */
- if(stat(line, &sb) < 0) {
- (void) close(p);
- continue;
- }
- if(sb.st_uid || sb.st_gid || sb.st_mode != 0600) {
- chown(line, 0, 0);
- chmod(line, 0600);
- (void)close(p);
- p = open(myline, 2);
- if (p < 0)
- continue;
- }
- /*
- * Now it should be safe...check for accessability.
- */
- if (access(line, 6) == 0)
- return(p);
- else {
- /* no tty side to pty so skip it */
- (void) close(p);
- }
- }
-#endif /* CRAY */
-#endif /* STREAMSPTY */
- return(-1);
-}
-#endif /* convex */
-
-#ifdef LINEMODE
-/*
- * tty_flowmode() Find out if flow control is enabled or disabled.
- * tty_linemode() Find out if linemode (external processing) is enabled.
- * tty_setlinemod(on) Turn on/off linemode.
- * tty_isecho() Find out if echoing is turned on.
- * tty_setecho(on) Enable/disable character echoing.
- * tty_israw() Find out if terminal is in RAW mode.
- * tty_binaryin(on) Turn on/off BINARY on input.
- * tty_binaryout(on) Turn on/off BINARY on output.
- * tty_isediting() Find out if line editing is enabled.
- * tty_istrapsig() Find out if signal trapping is enabled.
- * tty_setedit(on) Turn on/off line editing.
- * tty_setsig(on) Turn on/off signal trapping.
- * tty_issofttab() Find out if tab expansion is enabled.
- * tty_setsofttab(on) Turn on/off soft tab expansion.
- * tty_islitecho() Find out if typed control chars are echoed literally
- * tty_setlitecho() Turn on/off literal echo of control chars
- * tty_tspeed(val) Set transmit speed to val.
- * tty_rspeed(val) Set receive speed to val.
- */
-
-#ifdef convex
-static int linestate;
-#endif
-
- int
-tty_linemode()
-{
-#ifndef convex
-#ifndef USE_TERMIO
- return(termbuf.state & TS_EXTPROC);
-#else
- return(termbuf.c_lflag & EXTPROC);
-#endif
-#else
- return(linestate);
-#endif
-}
-
- void
-tty_setlinemode(on)
- int on;
-{
-#ifdef TIOCEXT
-# ifndef convex
- set_termbuf();
-# else
- linestate = on;
-# endif
- (void) ioctl(pty, TIOCEXT, (char *)&on);
-# ifndef convex
- init_termbuf();
-# endif
-#else /* !TIOCEXT */
-# ifdef EXTPROC
- if (on)
- termbuf.c_lflag |= EXTPROC;
- else
- termbuf.c_lflag &= ~EXTPROC;
-# endif
-#endif /* TIOCEXT */
-}
-#endif /* LINEMODE */
-
- int
-tty_isecho()
-{
-#ifndef USE_TERMIO
- return (termbuf.sg.sg_flags & ECHO);
-#else
- return (termbuf.c_lflag & ECHO);
-#endif
-}
-
- int
-tty_flowmode()
-{
-#ifndef USE_TERMIO
- return(((termbuf.tc.t_startc) > 0 && (termbuf.tc.t_stopc) > 0) ? 1 : 0);
-#else
- return((termbuf.c_iflag & IXON) ? 1 : 0);
-#endif
-}
-
- int
-tty_restartany()
-{
-#ifndef USE_TERMIO
-# ifdef DECCTQ
- return((termbuf.lflags & DECCTQ) ? 0 : 1);
-# else
- return(-1);
-# endif
-#else
- return((termbuf.c_iflag & IXANY) ? 1 : 0);
-#endif
-}
-
- void
-tty_setecho(on)
- int on;
-{
-#ifndef USE_TERMIO
- if (on)
- termbuf.sg.sg_flags |= ECHO|CRMOD;
- else
- termbuf.sg.sg_flags &= ~(ECHO|CRMOD);
-#else
- if (on)
- termbuf.c_lflag |= ECHO;
- else
- termbuf.c_lflag &= ~ECHO;
-#endif
-}
-
- int
-tty_israw()
-{
-#ifndef USE_TERMIO
- return(termbuf.sg.sg_flags & RAW);
-#else
- return(!(termbuf.c_lflag & ICANON));
-#endif
-}
-
-#if defined (AUTHENTICATION) && defined(NO_LOGIN_F) && defined(LOGIN_R)
- int
-tty_setraw(on)
-{
-# ifndef USE_TERMIO
- if (on)
- termbuf.sg.sg_flags |= RAW;
- else
- termbuf.sg.sg_flags &= ~RAW;
-# else
- if (on)
- termbuf.c_lflag &= ~ICANON;
- else
- termbuf.c_lflag |= ICANON;
-# endif
-}
-#endif
-
- void
-tty_binaryin(on)
- int on;
-{
-#ifndef USE_TERMIO
- if (on)
- termbuf.lflags |= LPASS8;
- else
- termbuf.lflags &= ~LPASS8;
-#else
- if (on) {
- termbuf.c_iflag &= ~ISTRIP;
- } else {
- termbuf.c_iflag |= ISTRIP;
- }
-#endif
-}
-
- void
-tty_binaryout(on)
- int on;
-{
-#ifndef USE_TERMIO
- if (on)
- termbuf.lflags |= LLITOUT;
- else
- termbuf.lflags &= ~LLITOUT;
-#else
- if (on) {
- termbuf.c_cflag &= ~(CSIZE|PARENB);
- termbuf.c_cflag |= CS8;
- termbuf.c_oflag &= ~OPOST;
- } else {
- termbuf.c_cflag &= ~CSIZE;
- termbuf.c_cflag |= CS7|PARENB;
- termbuf.c_oflag |= OPOST;
- }
-#endif
-}
-
- int
-tty_isbinaryin()
-{
-#ifndef USE_TERMIO
- return(termbuf.lflags & LPASS8);
-#else
- return(!(termbuf.c_iflag & ISTRIP));
-#endif
-}
-
- int
-tty_isbinaryout()
-{
-#ifndef USE_TERMIO
- return(termbuf.lflags & LLITOUT);
-#else
- return(!(termbuf.c_oflag&OPOST));
-#endif
-}
-
-#ifdef LINEMODE
- int
-tty_isediting()
-{
-#ifndef USE_TERMIO
- return(!(termbuf.sg.sg_flags & (CBREAK|RAW)));
-#else
- return(termbuf.c_lflag & ICANON);
-#endif
-}
-
- int
-tty_istrapsig()
-{
-#ifndef USE_TERMIO
- return(!(termbuf.sg.sg_flags&RAW));
-#else
- return(termbuf.c_lflag & ISIG);
-#endif
-}
-
- void
-tty_setedit(on)
- int on;
-{
-#ifndef USE_TERMIO
- if (on)
- termbuf.sg.sg_flags &= ~CBREAK;
- else
- termbuf.sg.sg_flags |= CBREAK;
-#else
- if (on)
- termbuf.c_lflag |= ICANON;
- else
- termbuf.c_lflag &= ~ICANON;
-#endif
-}
-
- void
-tty_setsig(on)
- int on;
-{
-#ifndef USE_TERMIO
- if (on)
- ;
-#else
- if (on)
- termbuf.c_lflag |= ISIG;
- else
- termbuf.c_lflag &= ~ISIG;
-#endif
-}
-#endif /* LINEMODE */
-
- int
-tty_issofttab()
-{
-#ifndef USE_TERMIO
- return (termbuf.sg.sg_flags & XTABS);
-#else
-# ifdef OXTABS
- return (termbuf.c_oflag & OXTABS);
-# endif
-# ifdef TABDLY
- return ((termbuf.c_oflag & TABDLY) == TAB3);
-# endif
-#endif
-}
-
- void
-tty_setsofttab(on)
- int on;
-{
-#ifndef USE_TERMIO
- if (on)
- termbuf.sg.sg_flags |= XTABS;
- else
- termbuf.sg.sg_flags &= ~XTABS;
-#else
- if (on) {
-# ifdef OXTABS
- termbuf.c_oflag |= OXTABS;
-# endif
-# ifdef TABDLY
- termbuf.c_oflag &= ~TABDLY;
- termbuf.c_oflag |= TAB3;
-# endif
- } else {
-# ifdef OXTABS
- termbuf.c_oflag &= ~OXTABS;
-# endif
-# ifdef TABDLY
- termbuf.c_oflag &= ~TABDLY;
- termbuf.c_oflag |= TAB0;
-# endif
- }
-#endif
-}
-
- int
-tty_islitecho()
-{
-#ifndef USE_TERMIO
- return (!(termbuf.lflags & LCTLECH));
-#else
-# ifdef ECHOCTL
- return (!(termbuf.c_lflag & ECHOCTL));
-# endif
-# ifdef TCTLECH
- return (!(termbuf.c_lflag & TCTLECH));
-# endif
-# if !defined(ECHOCTL) && !defined(TCTLECH)
- return (0); /* assumes ctl chars are echoed '^x' */
-# endif
-#endif
-}
-
- void
-tty_setlitecho(on)
- int on;
-{
-#ifndef USE_TERMIO
- if (on)
- termbuf.lflags &= ~LCTLECH;
- else
- termbuf.lflags |= LCTLECH;
-#else
-# ifdef ECHOCTL
- if (on)
- termbuf.c_lflag &= ~ECHOCTL;
- else
- termbuf.c_lflag |= ECHOCTL;
-# endif
-# ifdef TCTLECH
- if (on)
- termbuf.c_lflag &= ~TCTLECH;
- else
- termbuf.c_lflag |= TCTLECH;
-# endif
-#endif
-}
-
- int
-tty_iscrnl()
-{
-#ifndef USE_TERMIO
- return (termbuf.sg.sg_flags & CRMOD);
-#else
- return (termbuf.c_iflag & ICRNL);
-#endif
-}
-
-/*
- * Try to guess whether speeds are "encoded" (4.2BSD) or just numeric (4.4BSD).
- */
-#if B4800 != 4800
-#define DECODE_BAUD
-#endif
-
-#ifdef DECODE_BAUD
-
-/*
- * A table of available terminal speeds
- */
-struct termspeeds {
- int speed;
- int value;
-} termspeeds[] = {
- { 0, B0 }, { 50, B50 }, { 75, B75 },
- { 110, B110 }, { 134, B134 }, { 150, B150 },
- { 200, B200 }, { 300, B300 }, { 600, B600 },
- { 1200, B1200 }, { 1800, B1800 }, { 2400, B2400 },
- { 4800, B4800 },
-#ifdef B7200
- { 7200, B7200 },
-#endif
- { 9600, B9600 },
-#ifdef B14400
- { 14400, B14400 },
-#endif
-#ifdef B19200
- { 19200, B19200 },
-#endif
-#ifdef B28800
- { 28800, B28800 },
-#endif
-#ifdef B38400
- { 38400, B38400 },
-#endif
-#ifdef B57600
- { 57600, B57600 },
-#endif
-#ifdef B115200
- { 115200, B115200 },
-#endif
-#ifdef B230400
- { 230400, B230400 },
-#endif
- { -1, 0 }
-};
-#endif /* DECODE_BUAD */
-
- void
-tty_tspeed(val)
- int val;
-{
-#ifdef DECODE_BAUD
- register struct termspeeds *tp;
-
- for (tp = termspeeds; (tp->speed != -1) && (val > tp->speed); tp++)
- ;
- if (tp->speed == -1) /* back up to last valid value */
- --tp;
- cfsetospeed(&termbuf, tp->value);
-#else /* DECODE_BUAD */
- cfsetospeed(&termbuf, val);
-#endif /* DECODE_BUAD */
-}
-
- void
-tty_rspeed(val)
- int val;
-{
-#ifdef DECODE_BAUD
- register struct termspeeds *tp;
-
- for (tp = termspeeds; (tp->speed != -1) && (val > tp->speed); tp++)
- ;
- if (tp->speed == -1) /* back up to last valid value */
- --tp;
- cfsetispeed(&termbuf, tp->value);
-#else /* DECODE_BAUD */
- cfsetispeed(&termbuf, val);
-#endif /* DECODE_BAUD */
-}
-
-#if defined(CRAY2) && defined(UNICOS5)
- int
-tty_isnewmap()
-{
- return((termbuf.c_oflag & OPOST) && (termbuf.c_oflag & ONLCR) &&
- !(termbuf.c_oflag & ONLRET));
-}
-#endif
-
-#ifdef PARENT_DOES_UTMP
-# ifndef NEWINIT
-extern struct utmp wtmp;
-extern char wtmpf[];
-# else /* NEWINIT */
-int gotalarm;
-
- /* ARGSUSED */
- void
-nologinproc(sig)
- int sig;
-{
- gotalarm++;
-}
-# endif /* NEWINIT */
-#endif /* PARENT_DOES_UTMP */
-
-#ifndef NEWINIT
-# ifdef PARENT_DOES_UTMP
-extern void utmp_sig_init P((void));
-extern void utmp_sig_reset P((void));
-extern void utmp_sig_wait P((void));
-extern void utmp_sig_notify P((int));
-# endif /* PARENT_DOES_UTMP */
-#endif
-
-/*
- * getptyslave()
- *
- * Open the slave side of the pty, and do any initialization
- * that is necessary. The return value is a file descriptor
- * for the slave side.
- */
- int
-getptyslave()
-{
- register int t = -1;
- char erase;
-
-#if !defined(CRAY) || !defined(NEWINIT)
-# ifdef LINEMODE
- int waslm;
-# endif
-# ifdef TIOCGWINSZ
- struct winsize ws;
- extern int def_row, def_col;
-# endif
- extern int def_tspeed, def_rspeed;
- /*
- * Opening the slave side may cause initilization of the
- * kernel tty structure. We need remember the state of
- * if linemode was turned on
- * terminal window size
- * terminal speed
- * erase character
- * so that we can re-set them if we need to.
- */
-# ifdef LINEMODE
- waslm = tty_linemode();
-# endif
- erase = termbuf.c_cc[VERASE];
-
- /*
- * Make sure that we don't have a controlling tty, and
- * that we are the session (process group) leader.
- */
-# ifdef TIOCNOTTY
- t = open(_PATH_TTY, O_RDWR);
- if (t >= 0) {
- (void) ioctl(t, TIOCNOTTY, (char *)0);
- (void) close(t);
- }
-# endif
-
-
-# ifdef PARENT_DOES_UTMP
- /*
- * Wait for our parent to get the utmp stuff to get done.
- */
- utmp_sig_wait();
-# endif
-
- t = cleanopen(line);
- if (t < 0)
- fatalperror(net, line);
-
-#ifdef STREAMSPTY
-#ifdef USE_TERMIO
- ttyfd = t;
-#endif
- if (ioctl(t, I_PUSH, "ptem") < 0)
- fatal(net, "I_PUSH ptem");
- if (ioctl(t, I_PUSH, "ldterm") < 0)
- fatal(net, "I_PUSH ldterm");
- if (ioctl(t, I_PUSH, "ttcompat") < 0)
- fatal(net, "I_PUSH ttcompat");
- if (ioctl(pty, I_PUSH, "pckt") < 0)
- fatal(net, "I_PUSH pckt");
-#endif
-
- /*
- * set up the tty modes as we like them to be.
- */
- init_termbuf();
-# ifdef TIOCGWINSZ
- if (def_row || def_col) {
- memset((char *)&ws, 0, sizeof(ws));
- ws.ws_col = def_col;
- ws.ws_row = def_row;
- (void)ioctl(t, TIOCSWINSZ, (char *)&ws);
- }
-# endif
-
- /*
- * Settings for sgtty based systems
- */
-# ifndef USE_TERMIO
- termbuf.sg.sg_flags |= CRMOD|ANYP|ECHO|XTABS;
-# endif /* USE_TERMIO */
-
- /*
- * Settings for UNICOS (and HPUX)
- */
-# if defined(CRAY) || defined(__hpux)
- termbuf.c_oflag = OPOST|ONLCR|TAB3;
- termbuf.c_iflag = IGNPAR|ISTRIP|ICRNL|IXON;
- termbuf.c_lflag = ISIG|ICANON|ECHO|ECHOE|ECHOK;
- termbuf.c_cflag = EXTB|HUPCL|CS8;
-# endif
-
- /*
- * Settings for all other termios/termio based
- * systems, other than 4.4BSD. In 4.4BSD the
- * kernel does the initial terminal setup.
- */
-# if defined(USE_TERMIO) && !(defined(CRAY) || defined(__hpux)) && (BSD <= 43)
-# ifndef OXTABS
-# define OXTABS 0
-# endif
- termbuf.c_lflag |= ECHO;
- termbuf.c_oflag |= ONLCR|OXTABS;
- termbuf.c_iflag |= ICRNL;
- termbuf.c_iflag &= ~IXOFF;
-# endif /* defined(USE_TERMIO) && !defined(CRAY) && (BSD <= 43) */
- tty_rspeed((def_rspeed > 0) ? def_rspeed : 9600);
- tty_tspeed((def_tspeed > 0) ? def_tspeed : 9600);
- if (erase)
- termbuf.c_cc[VERASE] = erase;
-# ifdef LINEMODE
- if (waslm)
- tty_setlinemode(1);
-# endif /* LINEMODE */
-
- /*
- * Set the tty modes, and make this our controlling tty.
- */
- set_termbuf();
- if (login_tty(t) == -1)
- fatalperror(net, "login_tty");
-#endif /* !defined(CRAY) || !defined(NEWINIT) */
- if (net > 2)
- (void) close(net);
-#if defined(AUTHENTICATION) && defined(NO_LOGIN_F) && defined(LOGIN_R)
- /*
- * Leave the pty open so that we can write out the rlogin
- * protocol for /bin/login, if the authentication works.
- */
-#else
- if (pty > 2) {
- (void) close(pty);
- pty = -1;
- }
-#endif
-}
-
-#if !defined(CRAY) || !defined(NEWINIT)
-#ifndef O_NOCTTY
-#define O_NOCTTY 0
-#endif
-/*
- * Open the specified slave side of the pty,
- * making sure that we have a clean tty.
- */
- int
-cleanopen(line)
- char *line;
-{
- register int t;
-#ifdef UNICOS7x
- struct secstat secbuf;
-#endif /* UNICOS7x */
-
-#ifndef STREAMSPTY
- /*
- * Make sure that other people can't open the
- * slave side of the connection.
- */
- (void) chown(line, 0, 0);
- (void) chmod(line, 0600);
-#endif
-
-# if !defined(CRAY) && (BSD > 43)
- (void) revoke(line);
-# endif
-#ifdef UNICOS7x
- if (secflag) {
- if (secstat(line, &secbuf) < 0)
- return(-1);
- if (setulvl(secbuf.st_slevel) < 0)
- return(-1);
- if (setucmp(secbuf.st_compart) < 0)
- return(-1);
- }
-#endif /* UNICOS7x */
-
- t = open(line, O_RDWR|O_NOCTTY);
-
-#ifdef UNICOS7x
- if (secflag) {
- if (setulvl(sysv.sy_minlvl) < 0)
- return(-1);
- if (setucmp(0) < 0)
- return(-1);
- }
-#endif /* UNICOS7x */
-
- if (t < 0)
- return(-1);
-
- /*
- * Hangup anybody else using this ttyp, then reopen it for
- * ourselves.
- */
-# if !(defined(CRAY) || defined(__hpux)) && (BSD <= 43) && !defined(STREAMSPTY)
- (void) signal(SIGHUP, SIG_IGN);
- vhangup();
- (void) signal(SIGHUP, SIG_DFL);
- t = open(line, O_RDWR|O_NOCTTY);
- if (t < 0)
- return(-1);
-# endif
-# if defined(CRAY) && defined(TCVHUP)
- {
- register int i;
- (void) signal(SIGHUP, SIG_IGN);
- (void) ioctl(t, TCVHUP, (char *)0);
- (void) signal(SIGHUP, SIG_DFL);
-
-#ifdef UNICOS7x
- if (secflag) {
- if (secstat(line, &secbuf) < 0)
- return(-1);
- if (setulvl(secbuf.st_slevel) < 0)
- return(-1);
- if (setucmp(secbuf.st_compart) < 0)
- return(-1);
- }
-#endif /* UNICOS7x */
-
- i = open(line, O_RDWR);
-
-#ifdef UNICOS7x
- if (secflag) {
- if (setulvl(sysv.sy_minlvl) < 0)
- return(-1);
- if (setucmp(0) < 0)
- return(-1);
- }
-#endif /* UNICOS7x */
-
- if (i < 0)
- return(-1);
- (void) close(t);
- t = i;
- }
-# endif /* defined(CRAY) && defined(TCVHUP) */
- return(t);
-}
-#endif /* !defined(CRAY) || !defined(NEWINIT) */
-
-#if BSD <= 43
-
- int
-login_tty(t)
- int t;
-{
- if (setsid() < 0) {
-#ifdef ultrix
- /*
- * The setsid() may have failed because we
- * already have a pgrp == pid. Zero out
- * our pgrp and try again...
- */
- if ((setpgrp(0, 0) < 0) || (setsid() < 0))
-#endif
- fatalperror(net, "setsid()");
- }
-# ifdef TIOCSCTTY
- if (ioctl(t, TIOCSCTTY, (char *)0) < 0)
- fatalperror(net, "ioctl(sctty)");
-# if defined(CRAY)
- /*
- * Close the hard fd to /dev/ttypXXX, and re-open through
- * the indirect /dev/tty interface.
- */
- close(t);
- if ((t = open("/dev/tty", O_RDWR)) < 0)
- fatalperror(net, "open(/dev/tty)");
-# endif
-# else
- /*
- * We get our controlling tty assigned as a side-effect
- * of opening up a tty device. But on BSD based systems,
- * this only happens if our process group is zero. The
- * setsid() call above may have set our pgrp, so clear
- * it out before opening the tty...
- */
-# ifndef SOLARIS
- (void) setpgrp(0, 0);
-# else
- (void) setpgrp();
-# endif
- close(open(line, O_RDWR));
-# endif
- if (t != 0)
- (void) dup2(t, 0);
- if (t != 1)
- (void) dup2(t, 1);
- if (t != 2)
- (void) dup2(t, 2);
- if (t > 2)
- close(t);
- return(0);
-}
-#endif /* BSD <= 43 */
-
-#ifdef NEWINIT
-char *gen_id = "fe";
-#endif
-
-/*
- * startslave(host)
- *
- * Given a hostname, do whatever
- * is necessary to startup the login process on the slave side of the pty.
- */
-
-/* ARGSUSED */
- void
-startslave(host, autologin, autoname)
- char *host;
- int autologin;
- char *autoname;
-{
- register int i;
- long time();
- char name[256];
-#ifdef NEWINIT
- extern char *ptyip;
- struct init_request request;
- void nologinproc();
- register int n;
-#endif /* NEWINIT */
-
-#if defined(AUTHENTICATION)
- if (!autoname || !autoname[0])
- autologin = 0;
-
- if (autologin < auth_level) {
- fatal(net, "Authorization failed");
- exit(1);
- }
-#endif
-
-#ifndef NEWINIT
-# ifdef PARENT_DOES_UTMP
- utmp_sig_init();
-# endif /* PARENT_DOES_UTMP */
-
- if ((i = fork()) < 0)
- fatalperror(net, "fork");
- if (i) {
-# ifdef PARENT_DOES_UTMP
- /*
- * Cray parent will create utmp entry for child and send
- * signal to child to tell when done. Child waits for signal
- * before doing anything important.
- */
- register int pid = i;
- void sigjob P((int));
-
- setpgrp();
- utmp_sig_reset(); /* reset handler to default */
- /*
- * Create utmp entry for child
- */
- (void) time(&wtmp.ut_time);
- wtmp.ut_type = LOGIN_PROCESS;
- wtmp.ut_pid = pid;
- SCPYN(wtmp.ut_user, "LOGIN");
- SCPYN(wtmp.ut_host, host);
- SCPYN(wtmp.ut_line, line + sizeof("/dev/") - 1);
-#ifndef __hpux
- SCPYN(wtmp.ut_id, wtmp.ut_line+3);
-#else
- SCPYN(wtmp.ut_id, wtmp.ut_line+7);
-#endif
- pututline(&wtmp);
- endutent();
- if ((i = open(wtmpf, O_WRONLY|O_APPEND)) >= 0) {
- (void) write(i, (char *)&wtmp, sizeof(struct utmp));
- (void) close(i);
- }
-#ifdef CRAY
- (void) signal(WJSIGNAL, sigjob);
-#endif
- utmp_sig_notify(pid);
-# endif /* PARENT_DOES_UTMP */
- } else {
- getptyslave(autologin);
- start_login(host, autologin, autoname);
- /*NOTREACHED*/
- }
-#else /* NEWINIT */
-
- /*
- * Init will start up login process if we ask nicely. We only wait
- * for it to start up and begin normal telnet operation.
- */
- if ((i = open(INIT_FIFO, O_WRONLY)) < 0) {
- char tbuf[128];
- (void) sprintf(tbuf, "Can't open %s\n", INIT_FIFO);
- fatalperror(net, tbuf);
- }
- memset((char *)&request, 0, sizeof(request));
- request.magic = INIT_MAGIC;
- SCPYN(request.gen_id, gen_id);
- SCPYN(request.tty_id, &line[8]);
- SCPYN(request.host, host);
- SCPYN(request.term_type, terminaltype ? terminaltype : "network");
-#if !defined(UNICOS5)
- request.signal = SIGCLD;
- request.pid = getpid();
-#endif
-#ifdef BFTPDAEMON
- /*
- * Are we working as the bftp daemon?
- */
- if (bftpd) {
- SCPYN(request.exec_name, BFTPPATH);
- }
-#endif /* BFTPDAEMON */
- if (write(i, (char *)&request, sizeof(request)) < 0) {
- char tbuf[128];
- (void) sprintf(tbuf, "Can't write to %s\n", INIT_FIFO);
- fatalperror(net, tbuf);
- }
- (void) close(i);
- (void) signal(SIGALRM, nologinproc);
- for (i = 0; ; i++) {
- char tbuf[128];
- alarm(15);
- n = read(pty, ptyip, BUFSIZ);
- if (i == 3 || n >= 0 || !gotalarm)
- break;
- gotalarm = 0;
- sprintf(tbuf, "telnetd: waiting for /etc/init to start login process on %s\r\n", line);
- (void) write(net, tbuf, strlen(tbuf));
- }
- if (n < 0 && gotalarm)
- fatal(net, "/etc/init didn't start login process");
- pcc += n;
- alarm(0);
- (void) signal(SIGALRM, SIG_DFL);
-
- return;
-#endif /* NEWINIT */
-}
-
-char *envinit[3];
-extern char **environ;
-
- void
-init_env()
-{
- extern char *getenv();
- char **envp;
-
- envp = envinit;
- if (*envp = getenv("TZ"))
- *envp++ -= 3;
-#if defined(CRAY) || defined(__hpux)
- else
- *envp++ = "TZ=GMT0";
-#endif
- *envp = 0;
- environ = envinit;
-}
-
-#ifndef NEWINIT
-
-/*
- * start_login(host)
- *
- * Assuming that we are now running as a child processes, this
- * function will turn us into the login process.
- */
-
- void
-start_login(host, autologin, name)
- char *host;
- int autologin;
- char *name;
-{
- register char *cp;
- register char **argv;
- char **addarg(), *user;
- extern char *getenv();
-#ifdef UTMPX
- register int pid = getpid();
- struct utmpx utmpx;
-#endif
-#ifdef SOLARIS
- char *term;
- char termbuf[64];
-#endif
-
-#ifdef UTMPX
- /*
- * Create utmp entry for child
- */
-
- memset(&utmpx, 0, sizeof(utmpx));
- SCPYN(utmpx.ut_user, ".telnet");
- SCPYN(utmpx.ut_line, line + sizeof("/dev/") - 1);
- utmpx.ut_pid = pid;
- utmpx.ut_id[0] = 't';
- utmpx.ut_id[1] = 'n';
- utmpx.ut_id[2] = SC_WILDC;
- utmpx.ut_id[3] = SC_WILDC;
- utmpx.ut_type = LOGIN_PROCESS;
- (void) time(&utmpx.ut_tv.tv_sec);
- if (makeutx(&utmpx) == NULL)
- fatal(net, "makeutx failed");
-#endif
-
- scrub_env();
-
- /*
- * -h : pass on name of host.
- * WARNING: -h is accepted by login if and only if
- * getuid() == 0.
- * -p : don't clobber the environment (so terminal type stays set).
- *
- * -f : force this login, he has already been authenticated
- */
- argv = addarg(0, "login");
-
-#if !defined(NO_LOGIN_H)
-
-# if defined (AUTHENTICATION) && defined(NO_LOGIN_F) && defined(LOGIN_R)
- /*
- * Don't add the "-h host" option if we are going
- * to be adding the "-r host" option down below...
- */
- if ((auth_level < 0) || (autologin != AUTH_VALID))
-# endif
- {
- argv = addarg(argv, "-h");
- argv = addarg(argv, host);
-#ifdef SOLARIS
- /*
- * SVR4 version of -h takes TERM= as second arg, or -
- */
- term = getenv("TERM");
- if (term == NULL || term[0] == 0) {
- term = "-";
- } else {
- strcpy(termbuf, "TERM=");
- strncat(termbuf, term, sizeof(termbuf) - 6);
- term = termbuf;
- }
- argv = addarg(argv, term);
-#endif
- }
-#endif
-#if !defined(NO_LOGIN_P)
- argv = addarg(argv, "-p");
-#endif
-#ifdef LINEMODE
- /*
- * Set the environment variable "LINEMODE" to either
- * "real" or "kludge" if we are operating in either
- * real or kludge linemode.
- */
- if (lmodetype == REAL_LINEMODE)
- setenv("LINEMODE", "real", 1);
-# ifdef KLUDGELINEMODE
- else if (lmodetype == KLUDGE_LINEMODE || lmodetype == KLUDGE_OK)
- setenv("LINEMODE", "kludge", 1);
-# endif
-#endif
-#ifdef BFTPDAEMON
- /*
- * Are we working as the bftp daemon? If so, then ask login
- * to start bftp instead of shell.
- */
- if (bftpd) {
- argv = addarg(argv, "-e");
- argv = addarg(argv, BFTPPATH);
- } else
-#endif
-#if defined (SecurID)
- /*
- * don't worry about the -f that might get sent.
- * A -s is supposed to override it anyhow.
- */
- if (require_SecurID)
- argv = addarg(argv, "-s");
-#endif
-#if defined (AUTHENTICATION)
- if (auth_level >= 0 && autologin == AUTH_VALID) {
-# if !defined(NO_LOGIN_F)
- argv = addarg(argv, "-f");
- argv = addarg(argv, name);
-# else
-# if defined(LOGIN_R)
- /*
- * We don't have support for "login -f", but we
- * can fool /bin/login into thinking that we are
- * rlogind, and allow us to log in without a
- * password. The rlogin protocol expects
- * local-user\0remote-user\0term/speed\0
- */
-
- if (pty > 2) {
- register char *cp;
- char speed[128];
- int isecho, israw, xpty, len;
- extern int def_rspeed;
-# ifndef LOGIN_HOST
- /*
- * Tell login that we are coming from "localhost".
- * If we passed in the real host name, then the
- * user would have to allow .rhost access from
- * every machine that they want authenticated
- * access to work from, which sort of defeats
- * the purpose of an authenticated login...
- * So, we tell login that the session is coming
- * from "localhost", and the user will only have
- * to have "localhost" in their .rhost file.
- */
-# define LOGIN_HOST "localhost"
-# endif
- argv = addarg(argv, "-r");
- argv = addarg(argv, LOGIN_HOST);
-
- xpty = pty;
-# ifndef STREAMSPTY
- pty = 0;
-# else
- ttyfd = 0;
-# endif
- init_termbuf();
- isecho = tty_isecho();
- israw = tty_israw();
- if (isecho || !israw) {
- tty_setecho(0); /* Turn off echo */
- tty_setraw(1); /* Turn on raw */
- set_termbuf();
- }
- len = strlen(name)+1;
- write(xpty, name, len);
- write(xpty, name, len);
- sprintf(speed, "%s/%d", (cp = getenv("TERM")) ? cp : "",
- (def_rspeed > 0) ? def_rspeed : 9600);
- len = strlen(speed)+1;
- write(xpty, speed, len);
-
- if (isecho || !israw) {
- init_termbuf();
- tty_setecho(isecho);
- tty_setraw(israw);
- set_termbuf();
- if (!israw) {
- /*
- * Write a newline to ensure
- * that login will be able to
- * read the line...
- */
- write(xpty, "\n", 1);
- }
- }
- pty = xpty;
- }
-# else
- argv = addarg(argv, name);
-# endif
-# endif
- } else
-#endif
- if (user = getenv("USER")) {
- if (strchr(user, '-')) {
- syslog(LOG_ERR, "tried to pass user \"%s\" to login",
- user);
- fatal(net, "invalid user");
- }
- argv = addarg(argv, getenv("USER"));
-#if defined(LOGIN_ARGS) && defined(NO_LOGIN_P)
- {
- register char **cpp;
- for (cpp = environ; *cpp; cpp++)
- argv = addarg(argv, *cpp);
- }
-#endif
- /*
- * Assume that login will set the USER variable
- * correctly. For SysV systems, this means that
- * USER will no longer be set, just LOGNAME by
- * login. (The problem is that if the auto-login
- * fails, and the user then specifies a different
- * account name, he can get logged in with both
- * LOGNAME and USER in his environment, but the
- * USER value will be wrong.
- */
- unsetenv("USER");
- }
-#ifdef SOLARIS
- else {
- char **p;
-
- argv = addarg(argv, ""); /* no login name */
- for (p = environ; *p; p++) {
- argv = addarg(argv, *p);
- }
- }
-#endif /* SOLARIS */
-#if defined(AUTHENTICATION) && defined(NO_LOGIN_F) && defined(LOGIN_R)
- if (pty > 2)
- close(pty);
-#endif
- closelog();
- execv(_PATH_LOGIN, argv);
-
- syslog(LOG_ERR, "%s: %m\n", _PATH_LOGIN);
- fatalperror(net, _PATH_LOGIN);
- /*NOTREACHED*/
-}
-
- char **
-addarg(argv, val)
- register char **argv;
- register char *val;
-{
- register char **cpp;
-
- if (argv == NULL) {
- /*
- * 10 entries, a leading length, and a null
- */
- argv = (char **)malloc(sizeof(*argv) * 12);
- if (argv == NULL)
- return(NULL);
- *argv++ = (char *)10;
- *argv = (char *)0;
- }
- for (cpp = argv; *cpp; cpp++)
- ;
- if (cpp == &argv[(int)argv[-1]]) {
- --argv;
- *argv = (char *)((int)(*argv) + 10);
- argv = (char **)realloc(argv, sizeof(*argv)*((int)(*argv) + 2));
- if (argv == NULL)
- return(NULL);
- argv++;
- cpp = &argv[(int)argv[-1] - 10];
- }
- *cpp++ = val;
- *cpp = 0;
- return(argv);
-}
-#endif /* NEWINIT */
-
-/*
- * scrub_env()
- *
- * Remove a few things from the environment that
- * don't need to be there.
- */
-scrub_env()
-{
- register char **cpp, **cpp2;
-
- for (cpp2 = cpp = environ; *cpp; cpp++) {
-#ifdef __FreeBSD__
- if (strncmp(*cpp, "LD_LIBRARY_PATH=", 16) &&
- strncmp(*cpp, "LD_NOSTD_PATH=", 14) &&
- strncmp(*cpp, "LD_PRELOAD=", 11) &&
-#else
- if (strncmp(*cpp, "LD_", 3) &&
- strncmp(*cpp, "_RLD_", 5) &&
- strncmp(*cpp, "LIBPATH=", 8) &&
-#endif
- strncmp(*cpp, "IFS=", 4))
- *cpp2++ = *cpp;
- }
- *cpp2 = 0;
-}
-
-/*
- * cleanup()
- *
- * This is the routine to call when we are all through, to
- * clean up anything that needs to be cleaned up.
- */
- /* ARGSUSED */
- void
-cleanup(sig)
- int sig;
-{
-#ifndef PARENT_DOES_UTMP
-# if (BSD > 43) || defined(convex)
- char *p;
-
- p = line + sizeof("/dev/") - 1;
- if (logout(p))
- logwtmp(p, "", "");
- (void)chmod(line, 0666);
- (void)chown(line, 0, 0);
- *p = 'p';
- (void)chmod(line, 0666);
- (void)chown(line, 0, 0);
- (void) shutdown(net, 2);
- exit(1);
-# else
- void rmut();
-
- rmut();
- vhangup(); /* XXX */
- (void) shutdown(net, 2);
- exit(1);
-# endif
-#else /* PARENT_DOES_UTMP */
-# ifdef NEWINIT
- (void) shutdown(net, 2);
- exit(1);
-# else /* NEWINIT */
-# ifdef CRAY
- static int incleanup = 0;
- register int t;
- int child_status; /* status of child process as returned by waitpid */
- int flags = WNOHANG|WUNTRACED;
-
- /*
- * 1: Pick up the zombie, if we are being called
- * as the signal handler.
- * 2: If we are a nested cleanup(), return.
- * 3: Try to clean up TMPDIR.
- * 4: Fill in utmp with shutdown of process.
- * 5: Close down the network and pty connections.
- * 6: Finish up the TMPDIR cleanup, if needed.
- */
- if (sig == SIGCHLD) {
- while (waitpid(-1, &child_status, flags) > 0)
- ; /* VOID */
- /* Check if the child process was stopped
- * rather than exited. We want cleanup only if
- * the child has died.
- */
- if (WIFSTOPPED(child_status)) {
- return;
- }
- }
- t = sigblock(sigmask(SIGCHLD));
- if (incleanup) {
- sigsetmask(t);
- return;
- }
- incleanup = 1;
- sigsetmask(t);
-#ifdef UNICOS7x
- if (secflag) {
- /*
- * We need to set ourselves back to a null
- * label to clean up.
- */
-
- setulvl(sysv.sy_minlvl);
- setucmp((long)0);
- }
-#endif /* UNICOS7x */
-
- t = cleantmp(&wtmp);
- setutent(); /* just to make sure */
-# endif /* CRAY */
- rmut(line);
- close(pty);
- (void) shutdown(net, 2);
-# ifdef CRAY
- if (t == 0)
- cleantmp(&wtmp);
-# endif /* CRAY */
- exit(1);
-# endif /* NEWINT */
-#endif /* PARENT_DOES_UTMP */
-}
-
-#if defined(PARENT_DOES_UTMP) && !defined(NEWINIT)
-/*
- * _utmp_sig_rcv
- * utmp_sig_init
- * utmp_sig_wait
- * These three functions are used to coordinate the handling of
- * the utmp file between the server and the soon-to-be-login shell.
- * The server actually creates the utmp structure, the child calls
- * utmp_sig_wait(), until the server calls utmp_sig_notify() and
- * signals the future-login shell to proceed.
- */
-static int caught=0; /* NZ when signal intercepted */
-static void (*func)(); /* address of previous handler */
-
- void
-_utmp_sig_rcv(sig)
- int sig;
-{
- caught = 1;
- (void) signal(SIGUSR1, func);
-}
-
- void
-utmp_sig_init()
-{
- /*
- * register signal handler for UTMP creation
- */
- if ((int)(func = signal(SIGUSR1, _utmp_sig_rcv)) == -1)
- fatalperror(net, "telnetd/signal");
-}
-
- void
-utmp_sig_reset()
-{
- (void) signal(SIGUSR1, func); /* reset handler to default */
-}
-
-# ifdef __hpux
-# define sigoff() /* do nothing */
-# define sigon() /* do nothing */
-# endif
-
- void
-utmp_sig_wait()
-{
- /*
- * Wait for parent to write our utmp entry.
- */
- sigoff();
- while (caught == 0) {
- pause(); /* wait until we get a signal (sigon) */
- sigoff(); /* turn off signals while we check caught */
- }
- sigon(); /* turn on signals again */
-}
-
- void
-utmp_sig_notify(pid)
-{
- kill(pid, SIGUSR1);
-}
-
-# ifdef CRAY
-static int gotsigjob = 0;
-
- /*ARGSUSED*/
- void
-sigjob(sig)
- int sig;
-{
- register int jid;
- register struct jobtemp *jp;
-
- while ((jid = waitjob(NULL)) != -1) {
- if (jid == 0) {
- return;
- }
- gotsigjob++;
- jobend(jid, NULL, NULL);
- }
-}
-
-/*
- * jid_getutid:
- * called by jobend() before calling cleantmp()
- * to find the correct $TMPDIR to cleanup.
- */
-
- struct utmp *
-jid_getutid(jid)
- int jid;
-{
- struct utmp *cur = NULL;
-
- setutent(); /* just to make sure */
- while (cur = getutent()) {
- if ( (cur->ut_type != NULL) && (jid == cur->ut_jid) ) {
- return(cur);
- }
- }
-
- return(0);
-}
-
-/*
- * Clean up the TMPDIR that login created.
- * The first time this is called we pick up the info
- * from the utmp. If the job has already gone away,
- * then we'll clean up and be done. If not, then
- * when this is called the second time it will wait
- * for the signal that the job is done.
- */
- int
-cleantmp(wtp)
- register struct utmp *wtp;
-{
- struct utmp *utp;
- static int first = 1;
- register int mask, omask, ret;
- extern struct utmp *getutid P((const struct utmp *_Id));
-
-
- mask = sigmask(WJSIGNAL);
-
- if (first == 0) {
- omask = sigblock(mask);
- while (gotsigjob == 0)
- sigpause(omask);
- return(1);
- }
- first = 0;
- setutent(); /* just to make sure */
-
- utp = getutid(wtp);
- if (utp == 0) {
- syslog(LOG_ERR, "Can't get /etc/utmp entry to clean TMPDIR");
- return(-1);
- }
- /*
- * Nothing to clean up if the user shell was never started.
- */
- if (utp->ut_type != USER_PROCESS || utp->ut_jid == 0)
- return(1);
-
- /*
- * Block the WJSIGNAL while we are in jobend().
- */
- omask = sigblock(mask);
- ret = jobend(utp->ut_jid, utp->ut_tpath, utp->ut_user);
- sigsetmask(omask);
- return(ret);
-}
-
- int
-jobend(jid, path, user)
- register int jid;
- register char *path;
- register char *user;
-{
- static int saved_jid = 0;
- static int pty_saved_jid = 0;
- static char saved_path[sizeof(wtmp.ut_tpath)+1];
- static char saved_user[sizeof(wtmp.ut_user)+1];
-
- /*
- * this little piece of code comes into play
- * only when ptyreconnect is used to reconnect
- * to an previous session.
- *
- * this is the only time when the
- * "saved_jid != jid" code is executed.
- */
-
- if ( saved_jid && saved_jid != jid ) {
- if (!path) { /* called from signal handler */
- pty_saved_jid = jid;
- } else {
- pty_saved_jid = saved_jid;
- }
- }
-
- if (path) {
- strncpy(saved_path, path, sizeof(wtmp.ut_tpath));
- strncpy(saved_user, user, sizeof(wtmp.ut_user));
- saved_path[sizeof(saved_path)] = '\0';
- saved_user[sizeof(saved_user)] = '\0';
- }
- if (saved_jid == 0) {
- saved_jid = jid;
- return(0);
- }
-
- /* if the jid has changed, get the correct entry from the utmp file */
-
- if ( saved_jid != jid ) {
- struct utmp *utp = NULL;
- struct utmp *jid_getutid();
-
- utp = jid_getutid(pty_saved_jid);
-
- if (utp == 0) {
- syslog(LOG_ERR, "Can't get /etc/utmp entry to clean TMPDIR");
- return(-1);
- }
-
- cleantmpdir(jid, utp->ut_tpath, utp->ut_user);
- return(1);
- }
-
- cleantmpdir(jid, saved_path, saved_user);
- return(1);
-}
-
-/*
- * Fork a child process to clean up the TMPDIR
- */
-cleantmpdir(jid, tpath, user)
- register int jid;
- register char *tpath;
- register char *user;
-{
- switch(fork()) {
- case -1:
- syslog(LOG_ERR, "TMPDIR cleanup(%s): fork() failed: %m\n",
- tpath);
- break;
- case 0:
- execl(CLEANTMPCMD, CLEANTMPCMD, user, tpath, 0);
- syslog(LOG_ERR, "TMPDIR cleanup(%s): execl(%s) failed: %m\n",
- tpath, CLEANTMPCMD);
- exit(1);
- default:
- /*
- * Forget about child. We will exit, and
- * /etc/init will pick it up.
- */
- break;
- }
-}
-# endif /* CRAY */
-#endif /* defined(PARENT_DOES_UTMP) && !defined(NEWINIT) */
-
-/*
- * rmut()
- *
- * This is the function called by cleanup() to
- * remove the utmp entry for this person.
- */
-
-#ifdef UTMPX
- void
-rmut()
-{
- register f;
- int found = 0;
- struct utmp *u, *utmp;
- int nutmp;
- struct stat statbf;
-
- struct utmpx *utxp, utmpx;
-
- /*
- * This updates the utmpx and utmp entries and make a wtmp/x entry
- */
-
- SCPYN(utmpx.ut_line, line + sizeof("/dev/") - 1);
- utxp = getutxline(&utmpx);
- if (utxp) {
- utxp->ut_type = DEAD_PROCESS;
- utxp->ut_exit.e_termination = 0;
- utxp->ut_exit.e_exit = 0;
- (void) time(&utmpx.ut_tv.tv_sec);
- utmpx.ut_tv.tv_usec = 0;
- modutx(utxp);
- }
- endutxent();
-} /* end of rmut */
-#endif
-
-#if !defined(UTMPX) && !(defined(CRAY) || defined(__hpux)) && BSD <= 43
- void
-rmut()
-{
- register f;
- int found = 0;
- struct utmp *u, *utmp;
- int nutmp;
- struct stat statbf;
-
- f = open(utmpf, O_RDWR);
- if (f >= 0) {
- (void) fstat(f, &statbf);
- utmp = (struct utmp *)malloc((unsigned)statbf.st_size);
- if (!utmp)
- syslog(LOG_ERR, "utmp malloc failed");
- if (statbf.st_size && utmp) {
- nutmp = read(f, (char *)utmp, (int)statbf.st_size);
- nutmp /= sizeof(struct utmp);
-
- for (u = utmp ; u < &utmp[nutmp] ; u++) {
- if (SCMPN(u->ut_line, line+5) ||
- u->ut_name[0]==0)
- continue;
- (void) lseek(f, ((long)u)-((long)utmp), L_SET);
- SCPYN(u->ut_name, "");
- SCPYN(u->ut_host, "");
- (void) time(&u->ut_time);
- (void) write(f, (char *)u, sizeof(wtmp));
- found++;
- }
- }
- (void) close(f);
- }
- if (found) {
- f = open(wtmpf, O_WRONLY|O_APPEND);
- if (f >= 0) {
- SCPYN(wtmp.ut_line, line+5);
- SCPYN(wtmp.ut_name, "");
- SCPYN(wtmp.ut_host, "");
- (void) time(&wtmp.ut_time);
- (void) write(f, (char *)&wtmp, sizeof(wtmp));
- (void) close(f);
- }
- }
- (void) chmod(line, 0666);
- (void) chown(line, 0, 0);
- line[strlen("/dev/")] = 'p';
- (void) chmod(line, 0666);
- (void) chown(line, 0, 0);
-} /* end of rmut */
-#endif /* CRAY */
-
-#ifdef __hpux
-rmut (line)
-char *line;
-{
- struct utmp utmp;
- struct utmp *utptr;
- int fd; /* for /etc/wtmp */
-
- utmp.ut_type = USER_PROCESS;
- (void) strncpy(utmp.ut_id, line+12, sizeof(utmp.ut_id));
- (void) setutent();
- utptr = getutid(&utmp);
- /* write it out only if it exists */
- if (utptr) {
- utptr->ut_type = DEAD_PROCESS;
- utptr->ut_time = time((long *) 0);
- (void) pututline(utptr);
- /* set wtmp entry if wtmp file exists */
- if ((fd = open(wtmpf, O_WRONLY | O_APPEND)) >= 0) {
- (void) write(fd, utptr, sizeof(utmp));
- (void) close(fd);
- }
- }
- (void) endutent();
-
- (void) chmod(line, 0666);
- (void) chown(line, 0, 0);
- line[14] = line[13];
- line[13] = line[12];
- line[8] = 'm';
- line[9] = '/';
- line[10] = 'p';
- line[11] = 't';
- line[12] = 'y';
- (void) chmod(line, 0666);
- (void) chown(line, 0, 0);
-}
-#endif
diff --git a/secure/libexec/telnetd/telnetd.8 b/secure/libexec/telnetd/telnetd.8
deleted file mode 100644
index f618385ed09b..000000000000
--- a/secure/libexec/telnetd/telnetd.8
+++ /dev/null
@@ -1,607 +0,0 @@
-.\" Copyright (c) 1983, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\" must display the following acknowledgement:
-.\" This product includes software developed by the University of
-.\" California, Berkeley and its contributors.
-.\" 4. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)telnetd.8 8.4 (Berkeley) 6/1/94
-.\"
-.Dd June 1, 1994
-.Dt TELNETD 8
-.Os BSD 4.2
-.Sh NAME
-.Nm telnetd
-.Nd DARPA
-.Tn TELNET
-protocol server
-.Sh SYNOPSIS
-.Nm /usr/libexec/telnetd
-.Op Fl BUhlkns
-.Op Fl D Ar debugmode
-.Op Fl I Ns Ar initid
-.Op Fl S Ar tos
-.Op Fl X Ar authtype
-.Op Fl a Ar authmode
-.Op Fl edebug
-.Op Fl r Ns Ar lowpty-highpty
-.Op Fl u Ar len
-.Op Fl debug Op Ar port
-.Sh DESCRIPTION
-The
-.Nm telnetd
-command is a server which supports the
-.Tn DARPA
-standard
-.Tn TELNET
-virtual terminal protocol.
-.Nm Telnetd
-is normally invoked by the internet server (see
-.Xr inetd 8 )
-for requests to connect to the
-.Tn TELNET
-port as indicated by the
-.Pa /etc/services
-file (see
-.Xr services 5 ) .
-The
-.Fl debug
-option may be used to start up
-.Nm telnetd
-manually, instead of through
-.Xr inetd 8 .
-If started up this way,
-.Ar port
-may be specified to run
-.Nm telnetd
-on an alternate
-.Tn TCP
-port number.
-.Pp
-The
-.Nm telnetd
-command accepts the following options:
-.Bl -tag -width "-a authmode"
-.It Fl a Ar authmode
-This option may be used for specifying what mode should
-be used for authentication.
-Note that this option is only useful if
-.Nm telnetd
-has been compiled with support for the
-.Dv AUTHENTICATION
-option.
-There are several valid values for
-.Ar authmode:
-.Bl -tag -width debug
-.It debug
-Turns on authentication debugging code.
-.It user
-Only allow connections when the remote user
-can provide valid authentication information
-to identify the remote user,
-and is allowed access to the specified account
-without providing a password.
-.It valid
-Only allow connections when the remote user
-can provide valid authentication information
-to identify the remote user.
-The
-.Xr login 1
-command will provide any additional user verification
-needed if the remote user is not allowed automatic
-access to the specified account.
-.It other
-Only allow connections that supply some authentication information.
-This option is currently not supported
-by any of the existing authentication mechanisms,
-and is thus the same as specifying
-.Fl a
-.Cm valid .
-.It none
-This is the default state.
-Authentication information is not required.
-If no or insufficient authentication information
-is provided, then the
-.Xr login 1
-program will provide the necessary user
-verification.
-.It off
-This disables the authentication code.
-All user verification will happen through the
-.Xr login 1
-program.
-.El
-.It Fl B
-Specifies bftp server mode. In this mode,
-.Nm telnetd
-causes login to start a
-.Xr bftp 1
-session rather than the user's
-normal shell. In bftp daemon mode normal
-logins are not supported, and it must be used
-on a port other than the normal
-.Tn TELNET
-port.
-.It Fl D Ar debugmode
-This option may be used for debugging purposes.
-This allows
-.Nm telnetd
-to print out debugging information
-to the connection, allowing the user to see what
-.Nm telnetd
-is doing.
-There are several possible values for
-.Ar debugmode:
-.Bl -tag -width exercise
-.It Cm options
-Prints information about the negotiation of
-.Tn TELNET
-options.
-.It Cm report
-Prints the
-.Cm options
-information, plus some additional information
-about what processing is going on.
-.It Cm netdata
-Displays the data stream received by
-.Nm telnetd.
-.It Cm ptydata
-Displays data written to the pty.
-.It Cm exercise
-Has not been implemented yet.
-.El
-.It Fl debug
-Enables debugging on each socket created by
-.Nm telnetd
-(see
-.Dv SO_DEBUG
-in
-.Xr socket 2 ) .
-.It Fl edebug
-If
-.Nm telnetd
-has been compiled with support for data encryption, then the
-.Fl edebug
-option may be used to enable encryption debugging code.
-.It Fl h
-Disables the printing of host-specific information before
-login has been completed.
-.It Fl I Ar initid
-This option is only applicable to
-.Tn UNICOS
-systems prior to 7.0.
-It specifies the
-.Dv ID
-from
-.Pa /etc/inittab
-to use when init starts login sessions. The default
-.Dv ID
-is
-.Dv fe.
-.It Fl k
-This option is only useful if
-.Nm telnetd
-has been compiled with both linemode and kludge linemode
-support. If the
-.Fl k
-option is specified, then if the remote client does not
-support the
-.Dv LINEMODE
-option, then
-.Nm telnetd
-will operate in character at a time mode.
-It will still support kludge linemode, but will only
-go into kludge linemode if the remote client requests
-it.
-(This is done by by the client sending
-.Dv DONT SUPPRESS-GO-AHEAD
-and
-.Dv DONT ECHO . )
-The
-.Fl k
-option is most useful when there are remote clients
-that do not support kludge linemode, but pass the heuristic
-(if they respond with
-.Dv WILL TIMING-MARK
-in response to a
-.Dv DO TIMING-MARK)
-for kludge linemode support.
-.It Fl l
-Specifies line mode. Tries to force clients to use line-
-at-a-time mode.
-If the
-.Dv LINEMODE
-option is not supported, it will go
-into kludge linemode.
-.It Fl n
-Disable
-.Dv TCP
-keep-alives. Normally
-.Nm telnetd
-enables the
-.Tn TCP
-keep-alive mechanism to probe connections that
-have been idle for some period of time to determine
-if the client is still there, so that idle connections
-from machines that have crashed or can no longer
-be reached may be cleaned up.
-.It Fl r Ar lowpty-highpty
-This option is only enabled when
-.Nm telnetd
-is compiled for
-.Dv UNICOS.
-It specifies an inclusive range of pseudo-terminal devices to
-use. If the system has sysconf variable
-.Dv _SC_CRAY_NPTY
-configured, the default pty search range is 0 to
-.Dv _SC_CRAY_NPTY;
-otherwise, the default range is 0 to 128. Either
-.Ar lowpty
-or
-.Ar highpty
-may be omitted to allow changing
-either end of the search range. If
-.Ar lowpty
-is omitted, the - character is still required so that
-.Nm telnetd
-can differentiate
-.Ar highpty
-from
-.Ar lowpty .
-.It Fl s
-This option is only enabled if
-.Nm telnetd
-is compiled with support for
-.Tn SecurID
-cards.
-It causes the
-.Fl s
-option to be passed on to
-.Xr login 1 ,
-and thus is only useful if
-.Xr login 1
-supports the
-.Fl s
-flag to indicate that only
-.Tn SecurID
-validated logins are allowed, and is
-usually useful for controlling remote logins
-from outside of a firewall.
-.It Fl S Ar tos
-.It Fl u Ar len
-This option is used to specify the size of the field
-in the
-.Dv utmp
-structure that holds the remote host name.
-If the resolved host name is longer than
-.Ar len ,
-the dotted decimal value will be used instead.
-This allows hosts with very long host names that
-overflow this field to still be uniquely identified.
-Specifying
-.Fl u0
-indicates that only dotted decimal addresses
-should be put into the
-.Pa utmp
-file.
-.ne 1i
-.It Fl U
-This option causes
-.Nm telnetd
-to refuse connections from addresses that
-cannot be mapped back into a symbolic name
-via the
-.Xr gethostbyaddr 3
-routine.
-.It Fl X Ar authtype
-This option is only valid if
-.Nm telnetd
-has been built with support for the authentication option.
-It disables the use of
-.Ar authtype
-authentication, and
-can be used to temporarily disable
-a specific authentication type without having to recompile
-.Nm telnetd .
-.El
-.Pp
-.Nm Telnetd
-operates by allocating a pseudo-terminal device (see
-.Xr pty 4 )
-for a client, then creating a login process which has
-the slave side of the pseudo-terminal as
-.Dv stdin ,
-.Dv stdout
-and
-.Dv stderr .
-.Nm Telnetd
-manipulates the master side of the pseudo-terminal,
-implementing the
-.Tn TELNET
-protocol and passing characters
-between the remote client and the login process.
-.Pp
-When a
-.Tn TELNET
-session is started up,
-.Nm telnetd
-sends
-.Tn TELNET
-options to the client side indicating
-a willingness to do the
-following
-.Tn TELNET
-options, which are described in more detail below:
-.Bd -literal -offset indent
-DO AUTHENTICATION
-WILL ENCRYPT
-DO TERMINAL TYPE
-DO TSPEED
-DO XDISPLOC
-DO NEW-ENVIRON
-DO ENVIRON
-WILL SUPPRESS GO AHEAD
-DO ECHO
-DO LINEMODE
-DO NAWS
-WILL STATUS
-DO LFLOW
-DO TIMING-MARK
-.Ed
-.Pp
-The pseudo-terminal allocated to the client is configured
-to operate in \*(lqcooked\*(rq mode, and with
-.Dv XTABS and
-.Dv CRMOD
-enabled (see
-.Xr tty 4 ) .
-.Pp
-.Nm Telnetd
-has support for enabling locally the following
-.Tn TELNET
-options:
-.Bl -tag -width "DO AUTHENTICATION"
-.It "WILL ECHO"
-When the
-.Dv LINEMODE
-option is enabled, a
-.Dv WILL ECHO
-or
-.Dv WONT ECHO
-will be sent to the client to indicate the
-current state of terminal echoing.
-When terminal echo is not desired, a
-.Dv WILL ECHO
-is sent to indicate that
-.Tn telnetd
-will take care of echoing any data that needs to be
-echoed to the terminal, and then nothing is echoed.
-When terminal echo is desired, a
-.Dv WONT ECHO
-is sent to indicate that
-.Tn telnetd
-will not be doing any terminal echoing, so the
-client should do any terminal echoing that is needed.
-.It "WILL BINARY"
-Indicates that the client is willing to send a
-8 bits of data, rather than the normal 7 bits
-of the Network Virtual Terminal.
-.It "WILL SGA"
-Indicates that it will not be sending
-.Dv IAC GA,
-go ahead, commands.
-.It "WILL STATUS"
-Indicates a willingness to send the client, upon
-request, of the current status of all
-.Tn TELNET
-options.
-.It "WILL TIMING-MARK"
-Whenever a
-.Dv DO TIMING-MARK
-command is received, it is always responded
-to with a
-.Dv WILL TIMING-MARK
-.ne 1i
-.It "WILL LOGOUT"
-When a
-.Dv DO LOGOUT
-is received, a
-.Dv WILL LOGOUT
-is sent in response, and the
-.Tn TELNET
-session is shut down.
-.It "WILL ENCRYPT"
-Only sent if
-.Nm telnetd
-is compiled with support for data encryption, and
-indicates a willingness to decrypt
-the data stream.
-.El
-.Pp
-.Nm Telnetd
-has support for enabling remotely the following
-.Tn TELNET
-options:
-.Bl -tag -width "DO AUTHENTICATION"
-.It "DO BINARY"
-Sent to indicate that
-.Tn telnetd
-is willing to receive an 8 bit data stream.
-.It "DO LFLOW"
-Requests that the client handle flow control
-characters remotely.
-.It "DO ECHO"
-This is not really supported, but is sent to identify a 4.2BSD
-.Xr telnet 1
-client, which will improperly respond with
-.Dv WILL ECHO.
-If a
-.Dv WILL ECHO
-is received, a
-.Dv DONT ECHO
-will be sent in response.
-.It "DO TERMINAL-TYPE"
-Indicates a desire to be able to request the
-name of the type of terminal that is attached
-to the client side of the connection.
-.It "DO SGA"
-Indicates that it does not need to receive
-.Dv IAC GA,
-the go ahead command.
-.It "DO NAWS"
-Requests that the client inform the server when
-the window (display) size changes.
-.It "DO TERMINAL-SPEED"
-Indicates a desire to be able to request information
-about the speed of the serial line to which
-the client is attached.
-.It "DO XDISPLOC"
-Indicates a desire to be able to request the name
-of the X windows display that is associated with
-the telnet client.
-.It "DO NEW-ENVIRON"
-Indicates a desire to be able to request environment
-variable information, as described in RFC 1572.
-.It "DO ENVIRON"
-Indicates a desire to be able to request environment
-variable information, as described in RFC 1408.
-.It "DO LINEMODE"
-Only sent if
-.Nm telnetd
-is compiled with support for linemode, and
-requests that the client do line by line processing.
-.It "DO TIMING-MARK"
-Only sent if
-.Nm telnetd
-is compiled with support for both linemode and
-kludge linemode, and the client responded with
-.Dv WONT LINEMODE.
-If the client responds with
-.Dv WILL TM,
-the it is assumed that the client supports
-kludge linemode.
-Note that the
-.Op Fl k
-option can be used to disable this.
-.It "DO AUTHENTICATION"
-Only sent if
-.Nm telnetd
-is compiled with support for authentication, and
-indicates a willingness to receive authentication
-information for automatic login.
-.It "DO ENCRYPT"
-Only sent if
-.Nm telnetd
-is compiled with support for data encryption, and
-indicates a willingness to decrypt
-the data stream.
-.Sh ENVIRONMENT
-.Sh FILES
-.Pa /etc/services
-.br
-.Pa /etc/inittab
-(UNICOS systems only)
-.br
-.Pa /etc/iptos
-(if supported)
-.br
-.Pa /usr/ucb/bftp
-(if supported)
-.Sh "SEE ALSO"
-.Xr telnet 1 ,
-.Xr login 1 ,
-.Xr bftp 1
-(if supported)
-.Sh STANDARDS
-.Bl -tag -compact -width RFC-1572
-.It Cm RFC-854
-.Tn TELNET
-PROTOCOL SPECIFICATION
-.It Cm RFC-855
-TELNET OPTION SPECIFICATIONS
-.It Cm RFC-856
-TELNET BINARY TRANSMISSION
-.It Cm RFC-857
-TELNET ECHO OPTION
-.It Cm RFC-858
-TELNET SUPPRESS GO AHEAD OPTION
-.It Cm RFC-859
-TELNET STATUS OPTION
-.It Cm RFC-860
-TELNET TIMING MARK OPTION
-.It Cm RFC-861
-TELNET EXTENDED OPTIONS - LIST OPTION
-.It Cm RFC-885
-TELNET END OF RECORD OPTION
-.It Cm RFC-1073
-Telnet Window Size Option
-.It Cm RFC-1079
-Telnet Terminal Speed Option
-.It Cm RFC-1091
-Telnet Terminal-Type Option
-.It Cm RFC-1096
-Telnet X Display Location Option
-.It Cm RFC-1123
-Requirements for Internet Hosts -- Application and Support
-.It Cm RFC-1184
-Telnet Linemode Option
-.It Cm RFC-1372
-Telnet Remote Flow Control Option
-.It Cm RFC-1416
-Telnet Authentication Option
-.It Cm RFC-1411
-Telnet Authentication: Kerberos Version 4
-.It Cm RFC-1412
-Telnet Authentication: SPX
-.It Cm RFC-1571
-Telnet Environment Option Interoperability Issues
-.It Cm RFC-1572
-Telnet Environment Option
-.Sh BUGS
-Some
-.Tn TELNET
-commands are only partially implemented.
-.Pp
-Because of bugs in the original 4.2 BSD
-.Xr telnet 1 ,
-.Nm telnetd
-performs some dubious protocol exchanges to try to discover if the remote
-client is, in fact, a 4.2 BSD
-.Xr telnet 1 .
-.Pp
-Binary mode
-has no common interpretation except between similar operating systems
-(Unix in this case).
-.Pp
-The terminal type name received from the remote client is converted to
-lower case.
-.Pp
-.Nm Telnetd
-never sends
-.Tn TELNET
-.Dv IAC GA
-(go ahead) commands.
diff --git a/secure/libexec/telnetd/telnetd.c b/secure/libexec/telnetd/telnetd.c
deleted file mode 100644
index 707c68ad6fe9..000000000000
--- a/secure/libexec/telnetd/telnetd.c
+++ /dev/null
@@ -1,1593 +0,0 @@
-/*
- * Copyright (c) 1989, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char copyright[] =
-"@(#) Copyright (c) 1989, 1993\n\
- The Regents of the University of California. All rights reserved.\n";
-#endif /* not lint */
-
-#ifndef lint
-static char sccsid[] = "@(#)telnetd.c 8.4 (Berkeley) 5/30/95";
-#endif /* not lint */
-
-#include "telnetd.h"
-#include "pathnames.h"
-
-#if defined(_SC_CRAY_SECURE_SYS) && !defined(SCM_SECURITY)
-/*
- * UNICOS 6.0/6.1 do not have SCM_SECURITY defined, so we can
- * use it to tell us to turn off all the socket security code,
- * since that is only used in UNICOS 7.0 and later.
- */
-# undef _SC_CRAY_SECURE_SYS
-#endif
-
-#if defined(_SC_CRAY_SECURE_SYS)
-#include <sys/sysv.h>
-#include <sys/secdev.h>
-# ifdef SO_SEC_MULTI /* 8.0 code */
-#include <sys/secparm.h>
-#include <sys/usrv.h>
-# endif /* SO_SEC_MULTI */
-int secflag;
-char tty_dev[16];
-struct secdev dv;
-struct sysv sysv;
-# ifdef SO_SEC_MULTI /* 8.0 code */
-struct socksec ss;
-# else /* SO_SEC_MULTI */ /* 7.0 code */
-struct socket_security ss;
-# endif /* SO_SEC_MULTI */
-#endif /* _SC_CRAY_SECURE_SYS */
-
-#if defined(AUTHENTICATION)
-#include <libtelnet/auth.h>
-int auth_level = 0;
-#endif
-#if defined(SecurID)
-int require_SecurID = 0;
-#endif
-
-extern int utmp_len;
-int registerd_host_only = 0;
-
-#ifdef STREAMSPTY
-# include <stropts.h>
-# include <termio.h>
-/* make sure we don't get the bsd version */
-# include "/usr/include/sys/tty.h"
-# include <sys/ptyvar.h>
-
-/*
- * Because of the way ptyibuf is used with streams messages, we need
- * ptyibuf+1 to be on a full-word boundary. The following wierdness
- * is simply to make that happen.
- */
-long ptyibufbuf[BUFSIZ/sizeof(long)+1];
-char *ptyibuf = ((char *)&ptyibufbuf[1])-1;
-char *ptyip = ((char *)&ptyibufbuf[1])-1;
-char ptyibuf2[BUFSIZ];
-unsigned char ctlbuf[BUFSIZ];
-struct strbuf strbufc, strbufd;
-
-int readstream();
-
-#else /* ! STREAMPTY */
-
-/*
- * I/O data buffers,
- * pointers, and counters.
- */
-char ptyibuf[BUFSIZ], *ptyip = ptyibuf;
-char ptyibuf2[BUFSIZ];
-
-#endif /* ! STREAMPTY */
-
-int hostinfo = 1; /* do we print login banner? */
-
-#ifdef CRAY
-extern int newmap; /* nonzero if \n maps to ^M^J */
-int lowpty = 0, highpty; /* low, high pty numbers */
-#endif /* CRAY */
-
-int debug = 0;
-int keepalive = 1;
-char *progname;
-
-extern void usage P((void));
-
-/*
- * The string to pass to getopt(). We do it this way so
- * that only the actual options that we support will be
- * passed off to getopt().
- */
-char valid_opts[] = {
- 'd', ':', 'h', 'k', 'n', 'S', ':', 'u', ':', 'U',
-#ifdef AUTHENTICATION
- 'a', ':', 'X', ':',
-#endif
-#ifdef BFTPDAEMON
- 'B',
-#endif
-#ifdef DIAGNOSTICS
- 'D', ':',
-#endif
-#ifdef ENCRYPTION
- 'e', ':',
-#endif
-#if defined(CRAY) && defined(NEWINIT)
- 'I', ':',
-#endif
-#ifdef LINEMODE
- 'l',
-#endif
-#ifdef CRAY
- 'r', ':',
-#endif
-#ifdef SecurID
- 's',
-#endif
- '\0'
-};
-
-main(argc, argv)
- char *argv[];
-{
- struct sockaddr_in from;
- int on = 1, fromlen;
- register int ch;
- extern char *optarg;
- extern int optind;
-#if defined(IPPROTO_IP) && defined(IP_TOS)
- int tos = -1;
-#endif
-
- pfrontp = pbackp = ptyobuf;
- netip = netibuf;
- nfrontp = nbackp = netobuf;
-#ifdef ENCRYPTION
- nclearto = 0;
-#endif /* ENCRYPTION */
-
- progname = *argv;
-
-#ifdef CRAY
- /*
- * Get number of pty's before trying to process options,
- * which may include changing pty range.
- */
- highpty = getnpty();
-#endif /* CRAY */
-
- while ((ch = getopt(argc, argv, valid_opts)) != EOF) {
- switch(ch) {
-
-#ifdef AUTHENTICATION
- case 'a':
- /*
- * Check for required authentication level
- */
- if (strcmp(optarg, "debug") == 0) {
- extern int auth_debug_mode;
- auth_debug_mode = 1;
- } else if (strcasecmp(optarg, "none") == 0) {
- auth_level = 0;
- } else if (strcasecmp(optarg, "other") == 0) {
- auth_level = AUTH_OTHER;
- } else if (strcasecmp(optarg, "user") == 0) {
- auth_level = AUTH_USER;
- } else if (strcasecmp(optarg, "valid") == 0) {
- auth_level = AUTH_VALID;
- } else if (strcasecmp(optarg, "off") == 0) {
- /*
- * This hack turns off authentication
- */
- auth_level = -1;
- } else {
- fprintf(stderr,
- "telnetd: unknown authorization level for -a\n");
- }
- break;
-#endif /* AUTHENTICATION */
-
-#ifdef BFTPDAEMON
- case 'B':
- bftpd++;
- break;
-#endif /* BFTPDAEMON */
-
- case 'd':
- if (strcmp(optarg, "ebug") == 0) {
- debug++;
- break;
- }
- usage();
- /* NOTREACHED */
- break;
-
-#ifdef DIAGNOSTICS
- case 'D':
- /*
- * Check for desired diagnostics capabilities.
- */
- if (!strcmp(optarg, "report")) {
- diagnostic |= TD_REPORT|TD_OPTIONS;
- } else if (!strcmp(optarg, "exercise")) {
- diagnostic |= TD_EXERCISE;
- } else if (!strcmp(optarg, "netdata")) {
- diagnostic |= TD_NETDATA;
- } else if (!strcmp(optarg, "ptydata")) {
- diagnostic |= TD_PTYDATA;
- } else if (!strcmp(optarg, "options")) {
- diagnostic |= TD_OPTIONS;
- } else {
- usage();
- /* NOT REACHED */
- }
- break;
-#endif /* DIAGNOSTICS */
-
-#ifdef ENCRYPTION
- case 'e':
- if (strcmp(optarg, "debug") == 0) {
- extern int encrypt_debug_mode;
- encrypt_debug_mode = 1;
- break;
- }
- usage();
- /* NOTREACHED */
- break;
-#endif /* ENCRYPTION */
-
- case 'h':
- hostinfo = 0;
- break;
-
-#if defined(CRAY) && defined(NEWINIT)
- case 'I':
- {
- extern char *gen_id;
- gen_id = optarg;
- break;
- }
-#endif /* defined(CRAY) && defined(NEWINIT) */
-
-#ifdef LINEMODE
- case 'l':
- alwayslinemode = 1;
- break;
-#endif /* LINEMODE */
-
- case 'k':
-#if defined(LINEMODE) && defined(KLUDGELINEMODE)
- lmodetype = NO_AUTOKLUDGE;
-#else
- /* ignore -k option if built without kludge linemode */
-#endif /* defined(LINEMODE) && defined(KLUDGELINEMODE) */
- break;
-
- case 'n':
- keepalive = 0;
- break;
-
-#ifdef CRAY
- case 'r':
- {
- char *strchr();
- char *c;
-
- /*
- * Allow the specification of alterations
- * to the pty search range. It is legal to
- * specify only one, and not change the
- * other from its default.
- */
- c = strchr(optarg, '-');
- if (c) {
- *c++ = '\0';
- highpty = atoi(c);
- }
- if (*optarg != '\0')
- lowpty = atoi(optarg);
- if ((lowpty > highpty) || (lowpty < 0) ||
- (highpty > 32767)) {
- usage();
- /* NOT REACHED */
- }
- break;
- }
-#endif /* CRAY */
-
-#ifdef SecurID
- case 's':
- /* SecurID required */
- require_SecurID = 1;
- break;
-#endif /* SecurID */
- case 'S':
-#ifdef HAS_GETTOS
- if ((tos = parsetos(optarg, "tcp")) < 0)
- fprintf(stderr, "%s%s%s\n",
- "telnetd: Bad TOS argument '", optarg,
- "'; will try to use default TOS");
-#else
- fprintf(stderr, "%s%s\n", "TOS option unavailable; ",
- "-S flag not supported\n");
-#endif
- break;
-
- case 'u':
- utmp_len = atoi(optarg);
- break;
-
- case 'U':
- registerd_host_only = 1;
- break;
-
-#ifdef AUTHENTICATION
- case 'X':
- /*
- * Check for invalid authentication types
- */
- auth_disable_name(optarg);
- break;
-#endif /* AUTHENTICATION */
-
- default:
- fprintf(stderr, "telnetd: %c: unknown option\n", ch);
- /* FALLTHROUGH */
- case '?':
- usage();
- /* NOTREACHED */
- }
- }
-
- argc -= optind;
- argv += optind;
-
- if (debug) {
- int s, ns, foo;
- struct servent *sp;
- static struct sockaddr_in sin = { AF_INET };
-
- if (argc > 1) {
- usage();
- /* NOT REACHED */
- } else if (argc == 1) {
- if (sp = getservbyname(*argv, "tcp")) {
- sin.sin_port = sp->s_port;
- } else {
- sin.sin_port = atoi(*argv);
- if ((int)sin.sin_port <= 0) {
- fprintf(stderr, "telnetd: %s: bad port #\n", *argv);
- usage();
- /* NOT REACHED */
- }
- sin.sin_port = htons((u_short)sin.sin_port);
- }
- } else {
- sp = getservbyname("telnet", "tcp");
- if (sp == 0) {
- fprintf(stderr, "telnetd: tcp/telnet: unknown service\n");
- exit(1);
- }
- sin.sin_port = sp->s_port;
- }
-
- s = socket(AF_INET, SOCK_STREAM, 0);
- if (s < 0) {
- perror("telnetd: socket");;
- exit(1);
- }
- (void) setsockopt(s, SOL_SOCKET, SO_REUSEADDR,
- (char *)&on, sizeof(on));
- if (bind(s, (struct sockaddr *)&sin, sizeof sin) < 0) {
- perror("bind");
- exit(1);
- }
- if (listen(s, 1) < 0) {
- perror("listen");
- exit(1);
- }
- foo = sizeof sin;
- ns = accept(s, (struct sockaddr *)&sin, &foo);
- if (ns < 0) {
- perror("accept");
- exit(1);
- }
- (void) dup2(ns, 0);
- (void) close(ns);
- (void) close(s);
-#ifdef convex
- } else if (argc == 1) {
- ; /* VOID*/ /* Just ignore the host/port name */
-#endif
- } else if (argc > 0) {
- usage();
- /* NOT REACHED */
- }
-
-#if defined(_SC_CRAY_SECURE_SYS)
- secflag = sysconf(_SC_CRAY_SECURE_SYS);
-
- /*
- * Get socket's security label
- */
- if (secflag) {
- int szss = sizeof(ss);
-#ifdef SO_SEC_MULTI /* 8.0 code */
- int sock_multi;
- int szi = sizeof(int);
-#endif /* SO_SEC_MULTI */
-
- memset((char *)&dv, 0, sizeof(dv));
-
- if (getsysv(&sysv, sizeof(struct sysv)) != 0) {
- perror("getsysv");
- exit(1);
- }
-
- /*
- * Get socket security label and set device values
- * {security label to be set on ttyp device}
- */
-#ifdef SO_SEC_MULTI /* 8.0 code */
- if ((getsockopt(0, SOL_SOCKET, SO_SECURITY,
- (char *)&ss, &szss) < 0) ||
- (getsockopt(0, SOL_SOCKET, SO_SEC_MULTI,
- (char *)&sock_multi, &szi) < 0)) {
- perror("getsockopt");
- exit(1);
- } else {
- dv.dv_actlvl = ss.ss_actlabel.lt_level;
- dv.dv_actcmp = ss.ss_actlabel.lt_compart;
- if (!sock_multi) {
- dv.dv_minlvl = dv.dv_maxlvl = dv.dv_actlvl;
- dv.dv_valcmp = dv.dv_actcmp;
- } else {
- dv.dv_minlvl = ss.ss_minlabel.lt_level;
- dv.dv_maxlvl = ss.ss_maxlabel.lt_level;
- dv.dv_valcmp = ss.ss_maxlabel.lt_compart;
- }
- dv.dv_devflg = 0;
- }
-#else /* SO_SEC_MULTI */ /* 7.0 code */
- if (getsockopt(0, SOL_SOCKET, SO_SECURITY,
- (char *)&ss, &szss) >= 0) {
- dv.dv_actlvl = ss.ss_slevel;
- dv.dv_actcmp = ss.ss_compart;
- dv.dv_minlvl = ss.ss_minlvl;
- dv.dv_maxlvl = ss.ss_maxlvl;
- dv.dv_valcmp = ss.ss_maxcmp;
- }
-#endif /* SO_SEC_MULTI */
- }
-#endif /* _SC_CRAY_SECURE_SYS */
-
- openlog("telnetd", LOG_PID | LOG_ODELAY, LOG_DAEMON);
- fromlen = sizeof (from);
- if (getpeername(0, (struct sockaddr *)&from, &fromlen) < 0) {
- fprintf(stderr, "%s: ", progname);
- perror("getpeername");
- _exit(1);
- }
- if (keepalive &&
- setsockopt(0, SOL_SOCKET, SO_KEEPALIVE,
- (char *)&on, sizeof (on)) < 0) {
- syslog(LOG_WARNING, "setsockopt (SO_KEEPALIVE): %m");
- }
-
-#if defined(IPPROTO_IP) && defined(IP_TOS)
- {
-# if defined(HAS_GETTOS)
- struct tosent *tp;
- if (tos < 0 && (tp = gettosbyname("telnet", "tcp")))
- tos = tp->t_tos;
-# endif
- if (tos < 0)
- tos = 020; /* Low Delay bit */
- if (tos
- && (setsockopt(0, IPPROTO_IP, IP_TOS,
- (char *)&tos, sizeof(tos)) < 0)
- && (errno != ENOPROTOOPT) )
- syslog(LOG_WARNING, "setsockopt (IP_TOS): %m");
- }
-#endif /* defined(IPPROTO_IP) && defined(IP_TOS) */
- net = 0;
- doit(&from);
- /* NOTREACHED */
-} /* end of main */
-
- void
-usage()
-{
- fprintf(stderr, "Usage: telnetd");
-#ifdef AUTHENTICATION
- fprintf(stderr, " [-a (debug|other|user|valid|off|none)]\n\t");
-#endif
-#ifdef BFTPDAEMON
- fprintf(stderr, " [-B]");
-#endif
- fprintf(stderr, " [-debug]");
-#ifdef DIAGNOSTICS
- fprintf(stderr, " [-D (options|report|exercise|netdata|ptydata)]\n\t");
-#endif
-#ifdef AUTHENTICATION
- fprintf(stderr, " [-edebug]");
-#endif
- fprintf(stderr, " [-h]");
-#if defined(CRAY) && defined(NEWINIT)
- fprintf(stderr, " [-Iinitid]");
-#endif
-#if defined(LINEMODE) && defined(KLUDGELINEMODE)
- fprintf(stderr, " [-k]");
-#endif
-#ifdef LINEMODE
- fprintf(stderr, " [-l]");
-#endif
- fprintf(stderr, " [-n]");
-#ifdef CRAY
- fprintf(stderr, " [-r[lowpty]-[highpty]]");
-#endif
- fprintf(stderr, "\n\t");
-#ifdef SecurID
- fprintf(stderr, " [-s]");
-#endif
-#ifdef HAS_GETTOS
- fprintf(stderr, " [-S tos]");
-#endif
-#ifdef AUTHENTICATION
- fprintf(stderr, " [-X auth-type]");
-#endif
- fprintf(stderr, " [-u utmp_hostname_length] [-U]");
- fprintf(stderr, " [port]\n");
- exit(1);
-}
-
-/*
- * getterminaltype
- *
- * Ask the other end to send along its terminal type and speed.
- * Output is the variable terminaltype filled in.
- */
-static unsigned char ttytype_sbbuf[] = {
- IAC, SB, TELOPT_TTYPE, TELQUAL_SEND, IAC, SE
-};
-
- int
-getterminaltype(name)
- char *name;
-{
- int retval = -1;
- void _gettermname();
-
- settimer(baseline);
-#if defined(AUTHENTICATION)
- /*
- * Handle the Authentication option before we do anything else.
- */
- send_do(TELOPT_AUTHENTICATION, 1);
- while (his_will_wont_is_changing(TELOPT_AUTHENTICATION))
- ttloop();
- if (his_state_is_will(TELOPT_AUTHENTICATION)) {
- retval = auth_wait(name);
- }
-#endif
-
-#ifdef ENCRYPTION
- send_will(TELOPT_ENCRYPT, 1);
-#endif /* ENCRYPTION */
- send_do(TELOPT_TTYPE, 1);
- send_do(TELOPT_TSPEED, 1);
- send_do(TELOPT_XDISPLOC, 1);
- send_do(TELOPT_NEW_ENVIRON, 1);
- send_do(TELOPT_OLD_ENVIRON, 1);
- while (
-#ifdef ENCRYPTION
- his_do_dont_is_changing(TELOPT_ENCRYPT) ||
-#endif /* ENCRYPTION */
- his_will_wont_is_changing(TELOPT_TTYPE) ||
- his_will_wont_is_changing(TELOPT_TSPEED) ||
- his_will_wont_is_changing(TELOPT_XDISPLOC) ||
- his_will_wont_is_changing(TELOPT_NEW_ENVIRON) ||
- his_will_wont_is_changing(TELOPT_OLD_ENVIRON)) {
- ttloop();
- }
-#ifdef ENCRYPTION
- /*
- * Wait for the negotiation of what type of encryption we can
- * send with. If autoencrypt is not set, this will just return.
- */
- if (his_state_is_will(TELOPT_ENCRYPT)) {
- encrypt_wait();
- }
-#endif /* ENCRYPTION */
- if (his_state_is_will(TELOPT_TSPEED)) {
- static unsigned char sb[] =
- { IAC, SB, TELOPT_TSPEED, TELQUAL_SEND, IAC, SE };
-
- memmove(nfrontp, sb, sizeof sb);
- nfrontp += sizeof sb;
- DIAG(TD_OPTIONS, printsub('>', sb + 2, sizeof sb - 2););
- }
- if (his_state_is_will(TELOPT_XDISPLOC)) {
- static unsigned char sb[] =
- { IAC, SB, TELOPT_XDISPLOC, TELQUAL_SEND, IAC, SE };
-
- memmove(nfrontp, sb, sizeof sb);
- nfrontp += sizeof sb;
- DIAG(TD_OPTIONS, printsub('>', sb + 2, sizeof sb - 2););
- }
- if (his_state_is_will(TELOPT_NEW_ENVIRON)) {
- static unsigned char sb[] =
- { IAC, SB, TELOPT_NEW_ENVIRON, TELQUAL_SEND, IAC, SE };
-
- memmove(nfrontp, sb, sizeof sb);
- nfrontp += sizeof sb;
- DIAG(TD_OPTIONS, printsub('>', sb + 2, sizeof sb - 2););
- }
- else if (his_state_is_will(TELOPT_OLD_ENVIRON)) {
- static unsigned char sb[] =
- { IAC, SB, TELOPT_OLD_ENVIRON, TELQUAL_SEND, IAC, SE };
-
- memmove(nfrontp, sb, sizeof sb);
- nfrontp += sizeof sb;
- DIAG(TD_OPTIONS, printsub('>', sb + 2, sizeof sb - 2););
- }
- if (his_state_is_will(TELOPT_TTYPE)) {
-
- memmove(nfrontp, ttytype_sbbuf, sizeof ttytype_sbbuf);
- nfrontp += sizeof ttytype_sbbuf;
- DIAG(TD_OPTIONS, printsub('>', ttytype_sbbuf + 2,
- sizeof ttytype_sbbuf - 2););
- }
- if (his_state_is_will(TELOPT_TSPEED)) {
- while (sequenceIs(tspeedsubopt, baseline))
- ttloop();
- }
- if (his_state_is_will(TELOPT_XDISPLOC)) {
- while (sequenceIs(xdisplocsubopt, baseline))
- ttloop();
- }
- if (his_state_is_will(TELOPT_NEW_ENVIRON)) {
- while (sequenceIs(environsubopt, baseline))
- ttloop();
- }
- if (his_state_is_will(TELOPT_OLD_ENVIRON)) {
- while (sequenceIs(oenvironsubopt, baseline))
- ttloop();
- }
- if (his_state_is_will(TELOPT_TTYPE)) {
- char first[256], last[256];
-
- while (sequenceIs(ttypesubopt, baseline))
- ttloop();
-
- /*
- * If the other side has already disabled the option, then
- * we have to just go with what we (might) have already gotten.
- */
- if (his_state_is_will(TELOPT_TTYPE) && !terminaltypeok(terminaltype)) {
- (void) strncpy(first, terminaltype, sizeof(first));
- for(;;) {
- /*
- * Save the unknown name, and request the next name.
- */
- (void) strncpy(last, terminaltype, sizeof(last));
- _gettermname();
- if (terminaltypeok(terminaltype))
- break;
- if ((strncmp(last, terminaltype, sizeof(last)) == 0) ||
- his_state_is_wont(TELOPT_TTYPE)) {
- /*
- * We've hit the end. If this is the same as
- * the first name, just go with it.
- */
- if (strncmp(first, terminaltype, sizeof(first)) == 0)
- break;
- /*
- * Get the terminal name one more time, so that
- * RFC1091 compliant telnets will cycle back to
- * the start of the list.
- */
- _gettermname();
- if (strncmp(first, terminaltype, sizeof(first)) != 0)
- (void) strncpy(terminaltype, first, sizeof(first));
- break;
- }
- }
- }
- }
- return(retval);
-} /* end of getterminaltype */
-
- void
-_gettermname()
-{
- /*
- * If the client turned off the option,
- * we can't send another request, so we
- * just return.
- */
- if (his_state_is_wont(TELOPT_TTYPE))
- return;
- settimer(baseline);
- memmove(nfrontp, ttytype_sbbuf, sizeof ttytype_sbbuf);
- nfrontp += sizeof ttytype_sbbuf;
- DIAG(TD_OPTIONS, printsub('>', ttytype_sbbuf + 2,
- sizeof ttytype_sbbuf - 2););
- while (sequenceIs(ttypesubopt, baseline))
- ttloop();
-}
-
- int
-terminaltypeok(s)
- char *s;
-{
- char buf[1024];
-
- if (terminaltype == NULL)
- return(1);
-
- /*
- * tgetent() will return 1 if the type is known, and
- * 0 if it is not known. If it returns -1, it couldn't
- * open the database. But if we can't open the database,
- * it won't help to say we failed, because we won't be
- * able to verify anything else. So, we treat -1 like 1.
- */
- if (tgetent(buf, s) == 0)
- return(0);
- return(1);
-}
-
-#ifndef MAXHOSTNAMELEN
-#define MAXHOSTNAMELEN 64
-#endif /* MAXHOSTNAMELEN */
-
-char *hostname;
-char host_name[MAXHOSTNAMELEN];
-char remote_host_name[MAXHOSTNAMELEN];
-
-extern void telnet P((int, int, char *));
-
-int level;
-char user_name[256];
-/*
- * Get a pty, scan input lines.
- */
-doit(who)
- struct sockaddr_in *who;
-{
- char *host, *inet_ntoa();
- int t;
- struct hostent *hp;
- int ptynum;
-
- /*
- * Find an available pty to use.
- */
-#ifndef convex
- pty = getpty(&ptynum);
- if (pty < 0)
- fatal(net, "All network ports in use");
-#else
- for (;;) {
- char *lp;
- extern char *line, *getpty();
-
- if ((lp = getpty()) == NULL)
- fatal(net, "Out of ptys");
-
- if ((pty = open(lp, 2)) >= 0) {
- strcpy(line,lp);
- line[5] = 't';
- break;
- }
- }
-#endif
-
-#if defined(_SC_CRAY_SECURE_SYS)
- /*
- * set ttyp line security label
- */
- if (secflag) {
- char slave_dev[16];
-
- sprintf(tty_dev, "/dev/pty/%03d", ptynum);
- if (setdevs(tty_dev, &dv) < 0)
- fatal(net, "cannot set pty security");
- sprintf(slave_dev, "/dev/ttyp%03d", ptynum);
- if (setdevs(slave_dev, &dv) < 0)
- fatal(net, "cannot set tty security");
- }
-#endif /* _SC_CRAY_SECURE_SYS */
-
- /* get name of connected client */
- hp = gethostbyaddr((char *)&who->sin_addr, sizeof (struct in_addr),
- who->sin_family);
-
- if (hp == NULL && registerd_host_only) {
- fatal(net, "Couldn't resolve your address into a host name.\r\n\
- Please contact your net administrator");
- } else if (hp &&
- (strlen(hp->h_name) <= (unsigned int)((utmp_len < 0) ? -utmp_len
- : utmp_len))) {
- host = hp->h_name;
- } else {
- host = inet_ntoa(who->sin_addr);
- }
- /*
- * We must make a copy because Kerberos is probably going
- * to also do a gethost* and overwrite the static data...
- */
- strncpy(remote_host_name, host, sizeof(remote_host_name)-1);
- remote_host_name[sizeof(remote_host_name)-1] = 0;
- host = remote_host_name;
-
- (void) gethostname(host_name, sizeof (host_name));
- hostname = host_name;
-
-#if defined(AUTHENTICATION) || defined(ENCRYPTION)
- auth_encrypt_init(hostname, host, "TELNETD", 1);
-#endif
-
- init_env();
- /*
- * get terminal type.
- */
- *user_name = 0;
- level = getterminaltype(user_name);
- setenv("TERM", terminaltype ? terminaltype : "network", 1);
-
-#if defined(_SC_CRAY_SECURE_SYS)
- if (secflag) {
- if (setulvl(dv.dv_actlvl) < 0)
- fatal(net,"cannot setulvl()");
- if (setucmp(dv.dv_actcmp) < 0)
- fatal(net, "cannot setucmp()");
- }
-#endif /* _SC_CRAY_SECURE_SYS */
-
- telnet(net, pty, host); /* begin server process */
-
- /*NOTREACHED*/
-} /* end of doit */
-
-#if defined(CRAY2) && defined(UNICOS5) && defined(UNICOS50)
- int
-Xterm_output(ibufp, obuf, icountp, ocount)
- char **ibufp, *obuf;
- int *icountp, ocount;
-{
- int ret;
- ret = term_output(*ibufp, obuf, *icountp, ocount);
- *ibufp += *icountp;
- *icountp = 0;
- return(ret);
-}
-#define term_output Xterm_output
-#endif /* defined(CRAY2) && defined(UNICOS5) && defined(UNICOS50) */
-
-/*
- * Main loop. Select from pty and network, and
- * hand data to telnet receiver finite state machine.
- */
- void
-telnet(f, p, host)
- int f, p;
- char *host;
-{
- int on = 1;
-#define TABBUFSIZ 512
- char defent[TABBUFSIZ];
- char defstrs[TABBUFSIZ];
-#undef TABBUFSIZ
- char *HE;
- char *HN;
- char *IM;
- void netflush();
- int nfd;
-
- /*
- * Initialize the slc mapping table.
- */
- get_slc_defaults();
-
- /*
- * Do some tests where it is desireable to wait for a response.
- * Rather than doing them slowly, one at a time, do them all
- * at once.
- */
- if (my_state_is_wont(TELOPT_SGA))
- send_will(TELOPT_SGA, 1);
- /*
- * Is the client side a 4.2 (NOT 4.3) system? We need to know this
- * because 4.2 clients are unable to deal with TCP urgent data.
- *
- * To find out, we send out a "DO ECHO". If the remote system
- * answers "WILL ECHO" it is probably a 4.2 client, and we note
- * that fact ("WILL ECHO" ==> that the client will echo what
- * WE, the server, sends it; it does NOT mean that the client will
- * echo the terminal input).
- */
- send_do(TELOPT_ECHO, 1);
-
-#ifdef LINEMODE
- if (his_state_is_wont(TELOPT_LINEMODE)) {
- /* Query the peer for linemode support by trying to negotiate
- * the linemode option.
- */
- linemode = 0;
- editmode = 0;
- send_do(TELOPT_LINEMODE, 1); /* send do linemode */
- }
-#endif /* LINEMODE */
-
- /*
- * Send along a couple of other options that we wish to negotiate.
- */
- send_do(TELOPT_NAWS, 1);
- send_will(TELOPT_STATUS, 1);
- flowmode = 1; /* default flow control state */
- restartany = -1; /* uninitialized... */
- send_do(TELOPT_LFLOW, 1);
-
- /*
- * Spin, waiting for a response from the DO ECHO. However,
- * some REALLY DUMB telnets out there might not respond
- * to the DO ECHO. So, we spin looking for NAWS, (most dumb
- * telnets so far seem to respond with WONT for a DO that
- * they don't understand...) because by the time we get the
- * response, it will already have processed the DO ECHO.
- * Kludge upon kludge.
- */
- while (his_will_wont_is_changing(TELOPT_NAWS))
- ttloop();
-
- /*
- * But...
- * The client might have sent a WILL NAWS as part of its
- * startup code; if so, we'll be here before we get the
- * response to the DO ECHO. We'll make the assumption
- * that any implementation that understands about NAWS
- * is a modern enough implementation that it will respond
- * to our DO ECHO request; hence we'll do another spin
- * waiting for the ECHO option to settle down, which is
- * what we wanted to do in the first place...
- */
- if (his_want_state_is_will(TELOPT_ECHO) &&
- his_state_is_will(TELOPT_NAWS)) {
- while (his_will_wont_is_changing(TELOPT_ECHO))
- ttloop();
- }
- /*
- * On the off chance that the telnet client is broken and does not
- * respond to the DO ECHO we sent, (after all, we did send the
- * DO NAWS negotiation after the DO ECHO, and we won't get here
- * until a response to the DO NAWS comes back) simulate the
- * receipt of a will echo. This will also send a WONT ECHO
- * to the client, since we assume that the client failed to
- * respond because it believes that it is already in DO ECHO
- * mode, which we do not want.
- */
- if (his_want_state_is_will(TELOPT_ECHO)) {
- DIAG(TD_OPTIONS,
- {sprintf(nfrontp, "td: simulating recv\r\n");
- nfrontp += strlen(nfrontp);});
- willoption(TELOPT_ECHO);
- }
-
- /*
- * Finally, to clean things up, we turn on our echo. This
- * will break stupid 4.2 telnets out of local terminal echo.
- */
-
- if (my_state_is_wont(TELOPT_ECHO))
- send_will(TELOPT_ECHO, 1);
-
-#ifndef STREAMSPTY
- /*
- * Turn on packet mode
- */
- (void) ioctl(p, TIOCPKT, (char *)&on);
-#endif
-
-#if defined(LINEMODE) && defined(KLUDGELINEMODE)
- /*
- * Continuing line mode support. If client does not support
- * real linemode, attempt to negotiate kludge linemode by sending
- * the do timing mark sequence.
- */
- if (lmodetype < REAL_LINEMODE)
- send_do(TELOPT_TM, 1);
-#endif /* defined(LINEMODE) && defined(KLUDGELINEMODE) */
-
- /*
- * Call telrcv() once to pick up anything received during
- * terminal type negotiation, 4.2/4.3 determination, and
- * linemode negotiation.
- */
- telrcv();
-
- (void) ioctl(f, FIONBIO, (char *)&on);
- (void) ioctl(p, FIONBIO, (char *)&on);
-#if defined(CRAY2) && defined(UNICOS5)
- init_termdriver(f, p, interrupt, sendbrk);
-#endif
-
-#if defined(SO_OOBINLINE)
- (void) setsockopt(net, SOL_SOCKET, SO_OOBINLINE,
- (char *)&on, sizeof on);
-#endif /* defined(SO_OOBINLINE) */
-
-#ifdef SIGTSTP
- (void) signal(SIGTSTP, SIG_IGN);
-#endif
-#ifdef SIGTTOU
- /*
- * Ignoring SIGTTOU keeps the kernel from blocking us
- * in ttioct() in /sys/tty.c.
- */
- (void) signal(SIGTTOU, SIG_IGN);
-#endif
-
- (void) signal(SIGCHLD, cleanup);
-
-#if defined(CRAY2) && defined(UNICOS5)
- /*
- * Cray-2 will send a signal when pty modes are changed by slave
- * side. Set up signal handler now.
- */
- if ((int)signal(SIGUSR1, termstat) < 0)
- perror("signal");
- else if (ioctl(p, TCSIGME, (char *)SIGUSR1) < 0)
- perror("ioctl:TCSIGME");
- /*
- * Make processing loop check terminal characteristics early on.
- */
- termstat();
-#endif
-
-#ifdef TIOCNOTTY
- {
- register int t;
- t = open(_PATH_TTY, O_RDWR);
- if (t >= 0) {
- (void) ioctl(t, TIOCNOTTY, (char *)0);
- (void) close(t);
- }
- }
-#endif
-
-#if defined(CRAY) && defined(NEWINIT) && defined(TIOCSCTTY)
- (void) setsid();
- ioctl(p, TIOCSCTTY, 0);
-#endif
-
- /*
- * Show banner that getty never gave.
- *
- * We put the banner in the pty input buffer. This way, it
- * gets carriage return null processing, etc., just like all
- * other pty --> client data.
- */
-
-#if !defined(CRAY) || !defined(NEWINIT)
- if (getenv("USER"))
- hostinfo = 0;
-#endif
-
- if (getent(defent, "default") == 1) {
- char *getstr();
- char *cp=defstrs;
-
- HE = getstr("he", &cp);
- HN = getstr("hn", &cp);
- IM = getstr("im", &cp);
- if (HN && *HN)
- (void) strcpy(host_name, HN);
- if (IM == 0)
- IM = "";
- } else {
- IM = DEFAULT_IM;
- HE = 0;
- }
- edithost(HE, host_name);
- if (hostinfo && *IM)
- putf(IM, ptyibuf2);
-
- if (pcc)
- (void) strncat(ptyibuf2, ptyip, pcc+1);
- ptyip = ptyibuf2;
- pcc = strlen(ptyip);
-#ifdef LINEMODE
- /*
- * Last check to make sure all our states are correct.
- */
- init_termbuf();
- localstat();
-#endif /* LINEMODE */
-
- DIAG(TD_REPORT,
- {sprintf(nfrontp, "td: Entering processing loop\r\n");
- nfrontp += strlen(nfrontp);});
-
- /*
- * Startup the login process on the slave side of the terminal
- * now. We delay this until here to insure option negotiation
- * is complete.
- */
- startslave(host, level, user_name);
-
- nfd = ((f > p) ? f : p) + 1;
- for (;;) {
- fd_set ibits, obits, xbits;
- register int c;
-
- if (ncc < 0 && pcc < 0)
- break;
-
-#if defined(CRAY2) && defined(UNICOS5)
- if (needtermstat)
- _termstat();
-#endif /* defined(CRAY2) && defined(UNICOS5) */
- FD_ZERO(&ibits);
- FD_ZERO(&obits);
- FD_ZERO(&xbits);
- /*
- * Never look for input if there's still
- * stuff in the corresponding output buffer
- */
- if (nfrontp - nbackp || pcc > 0) {
- FD_SET(f, &obits);
- } else {
- FD_SET(p, &ibits);
- }
- if (pfrontp - pbackp || ncc > 0) {
- FD_SET(p, &obits);
- } else {
- FD_SET(f, &ibits);
- }
- if (!SYNCHing) {
- FD_SET(f, &xbits);
- }
- if ((c = select(nfd, &ibits, &obits, &xbits,
- (struct timeval *)0)) < 1) {
- if (c == -1) {
- if (errno == EINTR) {
- continue;
- }
- }
- sleep(5);
- continue;
- }
-
- /*
- * Any urgent data?
- */
- if (FD_ISSET(net, &xbits)) {
- SYNCHing = 1;
- }
-
- /*
- * Something to read from the network...
- */
- if (FD_ISSET(net, &ibits)) {
-#if !defined(SO_OOBINLINE)
- /*
- * In 4.2 (and 4.3 beta) systems, the
- * OOB indication and data handling in the kernel
- * is such that if two separate TCP Urgent requests
- * come in, one byte of TCP data will be overlaid.
- * This is fatal for Telnet, but we try to live
- * with it.
- *
- * In addition, in 4.2 (and...), a special protocol
- * is needed to pick up the TCP Urgent data in
- * the correct sequence.
- *
- * What we do is: if we think we are in urgent
- * mode, we look to see if we are "at the mark".
- * If we are, we do an OOB receive. If we run
- * this twice, we will do the OOB receive twice,
- * but the second will fail, since the second
- * time we were "at the mark", but there wasn't
- * any data there (the kernel doesn't reset
- * "at the mark" until we do a normal read).
- * Once we've read the OOB data, we go ahead
- * and do normal reads.
- *
- * There is also another problem, which is that
- * since the OOB byte we read doesn't put us
- * out of OOB state, and since that byte is most
- * likely the TELNET DM (data mark), we would
- * stay in the TELNET SYNCH (SYNCHing) state.
- * So, clocks to the rescue. If we've "just"
- * received a DM, then we test for the
- * presence of OOB data when the receive OOB
- * fails (and AFTER we did the normal mode read
- * to clear "at the mark").
- */
- if (SYNCHing) {
- int atmark;
-
- (void) ioctl(net, SIOCATMARK, (char *)&atmark);
- if (atmark) {
- ncc = recv(net, netibuf, sizeof (netibuf), MSG_OOB);
- if ((ncc == -1) && (errno == EINVAL)) {
- ncc = read(net, netibuf, sizeof (netibuf));
- if (sequenceIs(didnetreceive, gotDM)) {
- SYNCHing = stilloob(net);
- }
- }
- } else {
- ncc = read(net, netibuf, sizeof (netibuf));
- }
- } else {
- ncc = read(net, netibuf, sizeof (netibuf));
- }
- settimer(didnetreceive);
-#else /* !defined(SO_OOBINLINE)) */
- ncc = read(net, netibuf, sizeof (netibuf));
-#endif /* !defined(SO_OOBINLINE)) */
- if (ncc < 0 && errno == EWOULDBLOCK)
- ncc = 0;
- else {
- if (ncc <= 0) {
- break;
- }
- netip = netibuf;
- }
- DIAG((TD_REPORT | TD_NETDATA),
- {sprintf(nfrontp, "td: netread %d chars\r\n", ncc);
- nfrontp += strlen(nfrontp);});
- DIAG(TD_NETDATA, printdata("nd", netip, ncc));
- }
-
- /*
- * Something to read from the pty...
- */
- if (FD_ISSET(p, &ibits)) {
-#ifndef STREAMSPTY
- pcc = read(p, ptyibuf, BUFSIZ);
-#else
- pcc = readstream(p, ptyibuf, BUFSIZ);
-#endif
- /*
- * On some systems, if we try to read something
- * off the master side before the slave side is
- * opened, we get EIO.
- */
- if (pcc < 0 && (errno == EWOULDBLOCK ||
-#ifdef EAGAIN
- errno == EAGAIN ||
-#endif
- errno == EIO)) {
- pcc = 0;
- } else {
- if (pcc <= 0)
- break;
-#if !defined(CRAY2) || !defined(UNICOS5)
-#ifdef LINEMODE
- /*
- * If ioctl from pty, pass it through net
- */
- if (ptyibuf[0] & TIOCPKT_IOCTL) {
- copy_termbuf(ptyibuf+1, pcc-1);
- localstat();
- pcc = 1;
- }
-#endif /* LINEMODE */
- if (ptyibuf[0] & TIOCPKT_FLUSHWRITE) {
- netclear(); /* clear buffer back */
-#ifndef NO_URGENT
- /*
- * There are client telnets on some
- * operating systems get screwed up
- * royally if we send them urgent
- * mode data.
- */
- *nfrontp++ = IAC;
- *nfrontp++ = DM;
- neturg = nfrontp-1; /* off by one XXX */
- DIAG(TD_OPTIONS,
- printoption("td: send IAC", DM));
-
-#endif
- }
- if (his_state_is_will(TELOPT_LFLOW) &&
- (ptyibuf[0] &
- (TIOCPKT_NOSTOP|TIOCPKT_DOSTOP))) {
- int newflow =
- ptyibuf[0] & TIOCPKT_DOSTOP ? 1 : 0;
- if (newflow != flowmode) {
- flowmode = newflow;
- (void) sprintf(nfrontp,
- "%c%c%c%c%c%c",
- IAC, SB, TELOPT_LFLOW,
- flowmode ? LFLOW_ON
- : LFLOW_OFF,
- IAC, SE);
- nfrontp += 6;
- DIAG(TD_OPTIONS, printsub('>',
- (unsigned char *)nfrontp-4,
- 4););
- }
- }
- pcc--;
- ptyip = ptyibuf+1;
-#else /* defined(CRAY2) && defined(UNICOS5) */
- if (!uselinemode) {
- unpcc = pcc;
- unptyip = ptyibuf;
- pcc = term_output(&unptyip, ptyibuf2,
- &unpcc, BUFSIZ);
- ptyip = ptyibuf2;
- } else
- ptyip = ptyibuf;
-#endif /* defined(CRAY2) && defined(UNICOS5) */
- }
- }
-
- while (pcc > 0) {
- if ((&netobuf[BUFSIZ] - nfrontp) < 2)
- break;
- c = *ptyip++ & 0377, pcc--;
- if (c == IAC)
- *nfrontp++ = c;
-#if defined(CRAY2) && defined(UNICOS5)
- else if (c == '\n' &&
- my_state_is_wont(TELOPT_BINARY) && newmap)
- *nfrontp++ = '\r';
-#endif /* defined(CRAY2) && defined(UNICOS5) */
- *nfrontp++ = c;
- if ((c == '\r') && (my_state_is_wont(TELOPT_BINARY))) {
- if (pcc > 0 && ((*ptyip & 0377) == '\n')) {
- *nfrontp++ = *ptyip++ & 0377;
- pcc--;
- } else
- *nfrontp++ = '\0';
- }
- }
-#if defined(CRAY2) && defined(UNICOS5)
- /*
- * If chars were left over from the terminal driver,
- * note their existence.
- */
- if (!uselinemode && unpcc) {
- pcc = unpcc;
- unpcc = 0;
- ptyip = unptyip;
- }
-#endif /* defined(CRAY2) && defined(UNICOS5) */
-
- if (FD_ISSET(f, &obits) && (nfrontp - nbackp) > 0)
- netflush();
- if (ncc > 0)
- telrcv();
- if (FD_ISSET(p, &obits) && (pfrontp - pbackp) > 0)
- ptyflush();
- }
- cleanup(0);
-} /* end of telnet */
-
-#ifndef TCSIG
-# ifdef TIOCSIG
-# define TCSIG TIOCSIG
-# endif
-#endif
-
-#ifdef STREAMSPTY
-
-int flowison = -1; /* current state of flow: -1 is unknown */
-
-int readstream(p, ibuf, bufsize)
- int p;
- char *ibuf;
- int bufsize;
-{
- int flags = 0;
- int ret = 0;
- struct termios *tsp;
- struct termio *tp;
- struct iocblk *ip;
- char vstop, vstart;
- int ixon;
- int newflow;
-
- strbufc.maxlen = BUFSIZ;
- strbufc.buf = (char *)ctlbuf;
- strbufd.maxlen = bufsize-1;
- strbufd.len = 0;
- strbufd.buf = ibuf+1;
- ibuf[0] = 0;
-
- ret = getmsg(p, &strbufc, &strbufd, &flags);
- if (ret < 0) /* error of some sort -- probably EAGAIN */
- return(-1);
-
- if (strbufc.len <= 0 || ctlbuf[0] == M_DATA) {
- /* data message */
- if (strbufd.len > 0) { /* real data */
- return(strbufd.len + 1); /* count header char */
- } else {
- /* nothing there */
- errno = EAGAIN;
- return(-1);
- }
- }
-
- /*
- * It's a control message. Return 1, to look at the flag we set
- */
-
- switch (ctlbuf[0]) {
- case M_FLUSH:
- if (ibuf[1] & FLUSHW)
- ibuf[0] = TIOCPKT_FLUSHWRITE;
- return(1);
-
- case M_IOCTL:
- ip = (struct iocblk *) (ibuf+1);
-
- switch (ip->ioc_cmd) {
- case TCSETS:
- case TCSETSW:
- case TCSETSF:
- tsp = (struct termios *)
- (ibuf+1 + sizeof(struct iocblk));
- vstop = tsp->c_cc[VSTOP];
- vstart = tsp->c_cc[VSTART];
- ixon = tsp->c_iflag & IXON;
- break;
- case TCSETA:
- case TCSETAW:
- case TCSETAF:
- tp = (struct termio *) (ibuf+1 + sizeof(struct iocblk));
- vstop = tp->c_cc[VSTOP];
- vstart = tp->c_cc[VSTART];
- ixon = tp->c_iflag & IXON;
- break;
- default:
- errno = EAGAIN;
- return(-1);
- }
-
- newflow = (ixon && (vstart == 021) && (vstop == 023)) ? 1 : 0;
- if (newflow != flowison) { /* it's a change */
- flowison = newflow;
- ibuf[0] = newflow ? TIOCPKT_DOSTOP : TIOCPKT_NOSTOP;
- return(1);
- }
- }
-
- /* nothing worth doing anything about */
- errno = EAGAIN;
- return(-1);
-}
-#endif /* STREAMSPTY */
-
-/*
- * Send interrupt to process on other side of pty.
- * If it is in raw mode, just write NULL;
- * otherwise, write intr char.
- */
- void
-interrupt()
-{
- ptyflush(); /* half-hearted */
-
-#if defined(STREAMSPTY) && defined(TIOCSIGNAL)
- /* Streams PTY style ioctl to post a signal */
- {
- int sig = SIGINT;
- (void) ioctl(pty, TIOCSIGNAL, &sig);
- (void) ioctl(pty, I_FLUSH, FLUSHR);
- }
-#else
-#ifdef TCSIG
- (void) ioctl(pty, TCSIG, (char *)SIGINT);
-#else /* TCSIG */
- init_termbuf();
- *pfrontp++ = slctab[SLC_IP].sptr ?
- (unsigned char)*slctab[SLC_IP].sptr : '\177';
-#endif /* TCSIG */
-#endif
-}
-
-/*
- * Send quit to process on other side of pty.
- * If it is in raw mode, just write NULL;
- * otherwise, write quit char.
- */
- void
-sendbrk()
-{
- ptyflush(); /* half-hearted */
-#ifdef TCSIG
- (void) ioctl(pty, TCSIG, (char *)SIGQUIT);
-#else /* TCSIG */
- init_termbuf();
- *pfrontp++ = slctab[SLC_ABORT].sptr ?
- (unsigned char)*slctab[SLC_ABORT].sptr : '\034';
-#endif /* TCSIG */
-}
-
- void
-sendsusp()
-{
-#ifdef SIGTSTP
- ptyflush(); /* half-hearted */
-# ifdef TCSIG
- (void) ioctl(pty, TCSIG, (char *)SIGTSTP);
-# else /* TCSIG */
- *pfrontp++ = slctab[SLC_SUSP].sptr ?
- (unsigned char)*slctab[SLC_SUSP].sptr : '\032';
-# endif /* TCSIG */
-#endif /* SIGTSTP */
-}
-
-/*
- * When we get an AYT, if ^T is enabled, use that. Otherwise,
- * just send back "[Yes]".
- */
- void
-recv_ayt()
-{
-#if defined(SIGINFO) && defined(TCSIG)
- if (slctab[SLC_AYT].sptr && *slctab[SLC_AYT].sptr != _POSIX_VDISABLE) {
- (void) ioctl(pty, TCSIG, (char *)SIGINFO);
- return;
- }
-#endif
- (void) strcpy(nfrontp, "\r\n[Yes]\r\n");
- nfrontp += 9;
-}
-
- void
-doeof()
-{
- init_termbuf();
-
-#if defined(LINEMODE) && defined(USE_TERMIO) && (VEOF == VMIN)
- if (!tty_isediting()) {
- extern char oldeofc;
- *pfrontp++ = oldeofc;
- return;
- }
-#endif
- *pfrontp++ = slctab[SLC_EOF].sptr ?
- (unsigned char)*slctab[SLC_EOF].sptr : '\004';
-}
diff --git a/secure/libexec/telnetd/telnetd.h b/secure/libexec/telnetd/telnetd.h
deleted file mode 100644
index 234b9739e758..000000000000
--- a/secure/libexec/telnetd/telnetd.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 1989, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)telnetd.h 8.1 (Berkeley) 6/4/93
- */
-
-
-#include "defs.h"
-#include "ext.h"
-
-#ifdef DIAGNOSTICS
-#define DIAG(a,b) if (diagnostic & (a)) b
-#else
-#define DIAG(a,b)
-#endif
-
-/* other external variables */
-extern char **environ;
-extern int errno;
-
diff --git a/secure/libexec/telnetd/termstat.c b/secure/libexec/telnetd/termstat.c
deleted file mode 100644
index f499137366d2..000000000000
--- a/secure/libexec/telnetd/termstat.c
+++ /dev/null
@@ -1,669 +0,0 @@
-/*
- * Copyright (c) 1989, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)termstat.c 8.2 (Berkeley) 5/30/95";
-#endif /* not lint */
-
-#include "telnetd.h"
-
-/*
- * local variables
- */
-int def_tspeed = -1, def_rspeed = -1;
-#ifdef TIOCSWINSZ
-int def_row = 0, def_col = 0;
-#endif
-#ifdef LINEMODE
-static int _terminit = 0;
-#endif /* LINEMODE */
-
-#if defined(CRAY2) && defined(UNICOS5)
-int newmap = 1; /* nonzero if \n maps to ^M^J */
-#endif
-
-#ifdef LINEMODE
-/*
- * localstat
- *
- * This function handles all management of linemode.
- *
- * Linemode allows the client to do the local editing of data
- * and send only complete lines to the server. Linemode state is
- * based on the state of the pty driver. If the pty is set for
- * external processing, then we can use linemode. Further, if we
- * can use real linemode, then we can look at the edit control bits
- * in the pty to determine what editing the client should do.
- *
- * Linemode support uses the following state flags to keep track of
- * current and desired linemode state.
- * alwayslinemode : true if -l was specified on the telnetd
- * command line. It means to have linemode on as much as
- * possible.
- *
- * lmodetype: signifies whether the client can
- * handle real linemode, or if use of kludgeomatic linemode
- * is preferred. It will be set to one of the following:
- * REAL_LINEMODE : use linemode option
- * NO_KLUDGE : don't initiate kludge linemode.
- * KLUDGE_LINEMODE : use kludge linemode
- * NO_LINEMODE : client is ignorant of linemode
- *
- * linemode, uselinemode : linemode is true if linemode
- * is currently on, uselinemode is the state that we wish
- * to be in. If another function wishes to turn linemode
- * on or off, it sets or clears uselinemode.
- *
- * editmode, useeditmode : like linemode/uselinemode, but
- * these contain the edit mode states (edit and trapsig).
- *
- * The state variables correspond to some of the state information
- * in the pty.
- * linemode:
- * In real linemode, this corresponds to whether the pty
- * expects external processing of incoming data.
- * In kludge linemode, this more closely corresponds to the
- * whether normal processing is on or not. (ICANON in
- * system V, or COOKED mode in BSD.)
- * If the -l option was specified (alwayslinemode), then
- * an attempt is made to force external processing on at
- * all times.
- *
- * The following heuristics are applied to determine linemode
- * handling within the server.
- * 1) Early on in starting up the server, an attempt is made
- * to negotiate the linemode option. If this succeeds
- * then lmodetype is set to REAL_LINEMODE and all linemode
- * processing occurs in the context of the linemode option.
- * 2) If the attempt to negotiate the linemode option failed,
- * and the "-k" (don't initiate kludge linemode) isn't set,
- * then we try to use kludge linemode. We test for this
- * capability by sending "do Timing Mark". If a positive
- * response comes back, then we assume that the client
- * understands kludge linemode (ech!) and the
- * lmodetype flag is set to KLUDGE_LINEMODE.
- * 3) Otherwise, linemode is not supported at all and
- * lmodetype remains set to NO_LINEMODE (which happens
- * to be 0 for convenience).
- * 4) At any time a command arrives that implies a higher
- * state of linemode support in the client, we move to that
- * linemode support.
- *
- * A short explanation of kludge linemode is in order here.
- * 1) The heuristic to determine support for kludge linemode
- * is to send a do timing mark. We assume that a client
- * that supports timing marks also supports kludge linemode.
- * A risky proposition at best.
- * 2) Further negotiation of linemode is done by changing the
- * the server's state regarding SGA. If server will SGA,
- * then linemode is off, if server won't SGA, then linemode
- * is on.
- */
- void
-localstat()
-{
- void netflush();
- int need_will_echo = 0;
-
-#if defined(CRAY2) && defined(UNICOS5)
- /*
- * Keep track of that ol' CR/NL mapping while we're in the
- * neighborhood.
- */
- newmap = tty_isnewmap();
-#endif /* defined(CRAY2) && defined(UNICOS5) */
-
- /*
- * Check for changes to flow control if client supports it.
- */
- flowstat();
-
- /*
- * Check linemode on/off state
- */
- uselinemode = tty_linemode();
-
- /*
- * If alwayslinemode is on, and pty is changing to turn it off, then
- * force linemode back on.
- */
- if (alwayslinemode && linemode && !uselinemode) {
- uselinemode = 1;
- tty_setlinemode(uselinemode);
- }
-
- if (uselinemode) {
- /*
- * Check for state of BINARY options.
- *
- * We only need to do the binary dance if we are actually going
- * to use linemode. As this confuses some telnet clients
- * that don't support linemode, and doesn't gain us
- * anything, we don't do it unless we're doing linemode.
- * -Crh (henrich@msu.edu)
- */
-
- if (tty_isbinaryin()) {
- if (his_want_state_is_wont(TELOPT_BINARY))
- send_do(TELOPT_BINARY, 1);
- } else {
- if (his_want_state_is_will(TELOPT_BINARY))
- send_dont(TELOPT_BINARY, 1);
- }
-
- if (tty_isbinaryout()) {
- if (my_want_state_is_wont(TELOPT_BINARY))
- send_will(TELOPT_BINARY, 1);
- } else {
- if (my_want_state_is_will(TELOPT_BINARY))
- send_wont(TELOPT_BINARY, 1);
- }
- }
-
-#ifdef ENCRYPTION
- /*
- * If the terminal is not echoing, but editing is enabled,
- * something like password input is going to happen, so
- * if we the other side is not currently sending encrypted
- * data, ask the other side to start encrypting.
- */
- if (his_state_is_will(TELOPT_ENCRYPT)) {
- static int enc_passwd = 0;
- if (uselinemode && !tty_isecho() && tty_isediting()
- && (enc_passwd == 0) && !decrypt_input) {
- encrypt_send_request_start();
- enc_passwd = 1;
- } else if (enc_passwd) {
- encrypt_send_request_end();
- enc_passwd = 0;
- }
- }
-#endif /* ENCRYPTION */
-
- /*
- * Do echo mode handling as soon as we know what the
- * linemode is going to be.
- * If the pty has echo turned off, then tell the client that
- * the server will echo. If echo is on, then the server
- * will echo if in character mode, but in linemode the
- * client should do local echoing. The state machine will
- * not send anything if it is unnecessary, so don't worry
- * about that here.
- *
- * If we need to send the WILL ECHO (because echo is off),
- * then delay that until after we have changed the MODE.
- * This way, when the user is turning off both editing
- * and echo, the client will get editing turned off first.
- * This keeps the client from going into encryption mode
- * and then right back out if it is doing auto-encryption
- * when passwords are being typed.
- */
- if (uselinemode) {
- if (tty_isecho())
- send_wont(TELOPT_ECHO, 1);
- else
- need_will_echo = 1;
-#ifdef KLUDGELINEMODE
- if (lmodetype == KLUDGE_OK)
- lmodetype = KLUDGE_LINEMODE;
-#endif
- }
-
- /*
- * If linemode is being turned off, send appropriate
- * command and then we're all done.
- */
- if (!uselinemode && linemode) {
-# ifdef KLUDGELINEMODE
- if (lmodetype == REAL_LINEMODE) {
-# endif /* KLUDGELINEMODE */
- send_dont(TELOPT_LINEMODE, 1);
-# ifdef KLUDGELINEMODE
- } else if (lmodetype == KLUDGE_LINEMODE)
- send_will(TELOPT_SGA, 1);
-# endif /* KLUDGELINEMODE */
- send_will(TELOPT_ECHO, 1);
- linemode = uselinemode;
- goto done;
- }
-
-# ifdef KLUDGELINEMODE
- /*
- * If using real linemode check edit modes for possible later use.
- * If we are in kludge linemode, do the SGA negotiation.
- */
- if (lmodetype == REAL_LINEMODE) {
-# endif /* KLUDGELINEMODE */
- useeditmode = 0;
- if (tty_isediting())
- useeditmode |= MODE_EDIT;
- if (tty_istrapsig())
- useeditmode |= MODE_TRAPSIG;
- if (tty_issofttab())
- useeditmode |= MODE_SOFT_TAB;
- if (tty_islitecho())
- useeditmode |= MODE_LIT_ECHO;
-# ifdef KLUDGELINEMODE
- } else if (lmodetype == KLUDGE_LINEMODE) {
- if (tty_isediting() && uselinemode)
- send_wont(TELOPT_SGA, 1);
- else
- send_will(TELOPT_SGA, 1);
- }
-# endif /* KLUDGELINEMODE */
-
- /*
- * Negotiate linemode on if pty state has changed to turn it on.
- * Send appropriate command and send along edit mode, then all done.
- */
- if (uselinemode && !linemode) {
-# ifdef KLUDGELINEMODE
- if (lmodetype == KLUDGE_LINEMODE) {
- send_wont(TELOPT_SGA, 1);
- } else if (lmodetype == REAL_LINEMODE) {
-# endif /* KLUDGELINEMODE */
- send_do(TELOPT_LINEMODE, 1);
- /* send along edit modes */
- (void) sprintf(nfrontp, "%c%c%c%c%c%c%c", IAC, SB,
- TELOPT_LINEMODE, LM_MODE, useeditmode,
- IAC, SE);
- nfrontp += 7;
- editmode = useeditmode;
-# ifdef KLUDGELINEMODE
- }
-# endif /* KLUDGELINEMODE */
- linemode = uselinemode;
- goto done;
- }
-
-# ifdef KLUDGELINEMODE
- /*
- * None of what follows is of any value if not using
- * real linemode.
- */
- if (lmodetype < REAL_LINEMODE)
- goto done;
-# endif /* KLUDGELINEMODE */
-
- if (linemode && his_state_is_will(TELOPT_LINEMODE)) {
- /*
- * If edit mode changed, send edit mode.
- */
- if (useeditmode != editmode) {
- /*
- * Send along appropriate edit mode mask.
- */
- (void) sprintf(nfrontp, "%c%c%c%c%c%c%c", IAC, SB,
- TELOPT_LINEMODE, LM_MODE, useeditmode,
- IAC, SE);
- nfrontp += 7;
- editmode = useeditmode;
- }
-
-
- /*
- * Check for changes to special characters in use.
- */
- start_slc(0);
- check_slc();
- (void) end_slc(0);
- }
-
-done:
- if (need_will_echo)
- send_will(TELOPT_ECHO, 1);
- /*
- * Some things should be deferred until after the pty state has
- * been set by the local process. Do those things that have been
- * deferred now. This only happens once.
- */
- if (_terminit == 0) {
- _terminit = 1;
- defer_terminit();
- }
-
- netflush();
- set_termbuf();
- return;
-
-} /* end of localstat */
-#endif /* LINEMODE */
-
-/*
- * flowstat
- *
- * Check for changes to flow control
- */
- void
-flowstat()
-{
- if (his_state_is_will(TELOPT_LFLOW)) {
- if (tty_flowmode() != flowmode) {
- flowmode = tty_flowmode();
- (void) sprintf(nfrontp, "%c%c%c%c%c%c",
- IAC, SB, TELOPT_LFLOW,
- flowmode ? LFLOW_ON : LFLOW_OFF,
- IAC, SE);
- nfrontp += 6;
- }
- if (tty_restartany() != restartany) {
- restartany = tty_restartany();
- (void) sprintf(nfrontp, "%c%c%c%c%c%c",
- IAC, SB, TELOPT_LFLOW,
- restartany ? LFLOW_RESTART_ANY
- : LFLOW_RESTART_XON,
- IAC, SE);
- nfrontp += 6;
- }
- }
-}
-
-/*
- * clientstat
- *
- * Process linemode related requests from the client.
- * Client can request a change to only one of linemode, editmode or slc's
- * at a time, and if using kludge linemode, then only linemode may be
- * affected.
- */
- void
-clientstat(code, parm1, parm2)
- register int code, parm1, parm2;
-{
- void netflush();
-
- /*
- * Get a copy of terminal characteristics.
- */
- init_termbuf();
-
- /*
- * Process request from client. code tells what it is.
- */
- switch (code) {
-#ifdef LINEMODE
- case TELOPT_LINEMODE:
- /*
- * Don't do anything unless client is asking us to change
- * modes.
- */
- uselinemode = (parm1 == WILL);
- if (uselinemode != linemode) {
-# ifdef KLUDGELINEMODE
- /*
- * If using kludge linemode, make sure that
- * we can do what the client asks.
- * We can not turn off linemode if alwayslinemode
- * and the ICANON bit is set.
- */
- if (lmodetype == KLUDGE_LINEMODE) {
- if (alwayslinemode && tty_isediting()) {
- uselinemode = 1;
- }
- }
-
- /*
- * Quit now if we can't do it.
- */
- if (uselinemode == linemode)
- return;
-
- /*
- * If using real linemode and linemode is being
- * turned on, send along the edit mode mask.
- */
- if (lmodetype == REAL_LINEMODE && uselinemode)
-# else /* KLUDGELINEMODE */
- if (uselinemode)
-# endif /* KLUDGELINEMODE */
- {
- useeditmode = 0;
- if (tty_isediting())
- useeditmode |= MODE_EDIT;
- if (tty_istrapsig)
- useeditmode |= MODE_TRAPSIG;
- if (tty_issofttab())
- useeditmode |= MODE_SOFT_TAB;
- if (tty_islitecho())
- useeditmode |= MODE_LIT_ECHO;
- (void) sprintf(nfrontp, "%c%c%c%c%c%c%c", IAC,
- SB, TELOPT_LINEMODE, LM_MODE,
- useeditmode, IAC, SE);
- nfrontp += 7;
- editmode = useeditmode;
- }
-
-
- tty_setlinemode(uselinemode);
-
- linemode = uselinemode;
-
- if (!linemode)
- send_will(TELOPT_ECHO, 1);
- }
- break;
-
- case LM_MODE:
- {
- register int ack, changed;
-
- /*
- * Client has sent along a mode mask. If it agrees with
- * what we are currently doing, ignore it; if not, it could
- * be viewed as a request to change. Note that the server
- * will change to the modes in an ack if it is different from
- * what we currently have, but we will not ack the ack.
- */
- useeditmode &= MODE_MASK;
- ack = (useeditmode & MODE_ACK);
- useeditmode &= ~MODE_ACK;
-
- if (changed = (useeditmode ^ editmode)) {
- /*
- * This check is for a timing problem. If the
- * state of the tty has changed (due to the user
- * application) we need to process that info
- * before we write in the state contained in the
- * ack!!! This gets out the new MODE request,
- * and when the ack to that command comes back
- * we'll set it and be in the right mode.
- */
- if (ack)
- localstat();
- if (changed & MODE_EDIT)
- tty_setedit(useeditmode & MODE_EDIT);
-
- if (changed & MODE_TRAPSIG)
- tty_setsig(useeditmode & MODE_TRAPSIG);
-
- if (changed & MODE_SOFT_TAB)
- tty_setsofttab(useeditmode & MODE_SOFT_TAB);
-
- if (changed & MODE_LIT_ECHO)
- tty_setlitecho(useeditmode & MODE_LIT_ECHO);
-
- set_termbuf();
-
- if (!ack) {
- (void) sprintf(nfrontp, "%c%c%c%c%c%c%c", IAC,
- SB, TELOPT_LINEMODE, LM_MODE,
- useeditmode|MODE_ACK,
- IAC, SE);
- nfrontp += 7;
- }
-
- editmode = useeditmode;
- }
-
- break;
-
- } /* end of case LM_MODE */
-#endif /* LINEMODE */
-
- case TELOPT_NAWS:
-#ifdef TIOCSWINSZ
- {
- struct winsize ws;
-
- def_col = parm1;
- def_row = parm2;
-#ifdef LINEMODE
- /*
- * Defer changing window size until after terminal is
- * initialized.
- */
- if (terminit() == 0)
- return;
-#endif /* LINEMODE */
-
- /*
- * Change window size as requested by client.
- */
-
- ws.ws_col = parm1;
- ws.ws_row = parm2;
- (void) ioctl(pty, TIOCSWINSZ, (char *)&ws);
- }
-#endif /* TIOCSWINSZ */
-
- break;
-
- case TELOPT_TSPEED:
- {
- def_tspeed = parm1;
- def_rspeed = parm2;
-#ifdef LINEMODE
- /*
- * Defer changing the terminal speed.
- */
- if (terminit() == 0)
- return;
-#endif /* LINEMODE */
- /*
- * Change terminal speed as requested by client.
- * We set the receive speed first, so that if we can't
- * store seperate receive and transmit speeds, the transmit
- * speed will take precedence.
- */
- tty_rspeed(parm2);
- tty_tspeed(parm1);
- set_termbuf();
-
- break;
-
- } /* end of case TELOPT_TSPEED */
-
- default:
- /* What? */
- break;
- } /* end of switch */
-
-#if defined(CRAY2) && defined(UNICOS5)
- /*
- * Just in case of the likely event that we changed the pty state.
- */
- rcv_ioctl();
-#endif /* defined(CRAY2) && defined(UNICOS5) */
-
- netflush();
-
-} /* end of clientstat */
-
-#if defined(CRAY2) && defined(UNICOS5)
- void
-termstat()
-{
- needtermstat = 1;
-}
-
- void
-_termstat()
-{
- needtermstat = 0;
- init_termbuf();
- localstat();
- rcv_ioctl();
-}
-#endif /* defined(CRAY2) && defined(UNICOS5) */
-
-#ifdef LINEMODE
-/*
- * defer_terminit
- *
- * Some things should not be done until after the login process has started
- * and all the pty modes are set to what they are supposed to be. This
- * function is called when the pty state has been processed for the first time.
- * It calls other functions that do things that were deferred in each module.
- */
- void
-defer_terminit()
-{
-
- /*
- * local stuff that got deferred.
- */
- if (def_tspeed != -1) {
- clientstat(TELOPT_TSPEED, def_tspeed, def_rspeed);
- def_tspeed = def_rspeed = 0;
- }
-
-#ifdef TIOCSWINSZ
- if (def_col || def_row) {
- struct winsize ws;
-
- memset((char *)&ws, 0, sizeof(ws));
- ws.ws_col = def_col;
- ws.ws_row = def_row;
- (void) ioctl(pty, TIOCSWINSZ, (char *)&ws);
- }
-#endif
-
- /*
- * The only other module that currently defers anything.
- */
- deferslc();
-
-} /* end of defer_terminit */
-
-/*
- * terminit
- *
- * Returns true if the pty state has been processed yet.
- */
- int
-terminit()
-{
- return(_terminit);
-
-} /* end of terminit */
-#endif /* LINEMODE */
diff --git a/secure/libexec/telnetd/utility.c b/secure/libexec/telnetd/utility.c
deleted file mode 100644
index 049fcd137d26..000000000000
--- a/secure/libexec/telnetd/utility.c
+++ /dev/null
@@ -1,1192 +0,0 @@
-/*
- * Copyright (c) 1989, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)utility.c 8.4 (Berkeley) 5/30/95";
-#endif /* not lint */
-
-#define PRINTOPTIONS
-#include "telnetd.h"
-
-/*
- * utility functions performing io related tasks
- */
-
-/*
- * ttloop
- *
- * A small subroutine to flush the network output buffer, get some data
- * from the network, and pass it through the telnet state machine. We
- * also flush the pty input buffer (by dropping its data) if it becomes
- * too full.
- */
-
- void
-ttloop()
-{
- void netflush();
-
- DIAG(TD_REPORT, {sprintf(nfrontp, "td: ttloop\r\n");
- nfrontp += strlen(nfrontp);});
- if (nfrontp-nbackp) {
- netflush();
- }
- ncc = read(net, netibuf, sizeof netibuf);
- if (ncc < 0) {
- syslog(LOG_INFO, "ttloop: read: %m\n");
- exit(1);
- } else if (ncc == 0) {
- syslog(LOG_INFO, "ttloop: peer died: %m\n");
- exit(1);
- }
- DIAG(TD_REPORT, {sprintf(nfrontp, "td: ttloop read %d chars\r\n", ncc);
- nfrontp += strlen(nfrontp);});
- netip = netibuf;
- telrcv(); /* state machine */
- if (ncc > 0) {
- pfrontp = pbackp = ptyobuf;
- telrcv();
- }
-} /* end of ttloop */
-
-/*
- * Check a descriptor to see if out of band data exists on it.
- */
- int
-stilloob(s)
- int s; /* socket number */
-{
- static struct timeval timeout = { 0 };
- fd_set excepts;
- int value;
-
- do {
- FD_ZERO(&excepts);
- FD_SET(s, &excepts);
- value = select(s+1, (fd_set *)0, (fd_set *)0, &excepts, &timeout);
- } while ((value == -1) && (errno == EINTR));
-
- if (value < 0) {
- fatalperror(pty, "select");
- }
- if (FD_ISSET(s, &excepts)) {
- return 1;
- } else {
- return 0;
- }
-}
-
- void
-ptyflush()
-{
- int n;
-
- if ((n = pfrontp - pbackp) > 0) {
- DIAG((TD_REPORT | TD_PTYDATA),
- { sprintf(nfrontp, "td: ptyflush %d chars\r\n", n);
- nfrontp += strlen(nfrontp); });
- DIAG(TD_PTYDATA, printdata("pd", pbackp, n));
- n = write(pty, pbackp, n);
- }
- if (n < 0) {
- if (errno == EWOULDBLOCK || errno == EINTR)
- return;
- cleanup(0);
- }
- pbackp += n;
- if (pbackp == pfrontp)
- pbackp = pfrontp = ptyobuf;
-}
-
-/*
- * nextitem()
- *
- * Return the address of the next "item" in the TELNET data
- * stream. This will be the address of the next character if
- * the current address is a user data character, or it will
- * be the address of the character following the TELNET command
- * if the current address is a TELNET IAC ("I Am a Command")
- * character.
- */
- char *
-nextitem(current)
- char *current;
-{
- if ((*current&0xff) != IAC) {
- return current+1;
- }
- switch (*(current+1)&0xff) {
- case DO:
- case DONT:
- case WILL:
- case WONT:
- return current+3;
- case SB: /* loop forever looking for the SE */
- {
- register char *look = current+2;
-
- for (;;) {
- if ((*look++&0xff) == IAC) {
- if ((*look++&0xff) == SE) {
- return look;
- }
- }
- }
- }
- default:
- return current+2;
- }
-} /* end of nextitem */
-
-
-/*
- * netclear()
- *
- * We are about to do a TELNET SYNCH operation. Clear
- * the path to the network.
- *
- * Things are a bit tricky since we may have sent the first
- * byte or so of a previous TELNET command into the network.
- * So, we have to scan the network buffer from the beginning
- * until we are up to where we want to be.
- *
- * A side effect of what we do, just to keep things
- * simple, is to clear the urgent data pointer. The principal
- * caller should be setting the urgent data pointer AFTER calling
- * us in any case.
- */
- void
-netclear()
-{
- register char *thisitem, *next;
- char *good;
-#define wewant(p) ((nfrontp > p) && ((*p&0xff) == IAC) && \
- ((*(p+1)&0xff) != EC) && ((*(p+1)&0xff) != EL))
-
-#ifdef ENCRYPTION
- thisitem = nclearto > netobuf ? nclearto : netobuf;
-#else /* ENCRYPTION */
- thisitem = netobuf;
-#endif /* ENCRYPTION */
-
- while ((next = nextitem(thisitem)) <= nbackp) {
- thisitem = next;
- }
-
- /* Now, thisitem is first before/at boundary. */
-
-#ifdef ENCRYPTION
- good = nclearto > netobuf ? nclearto : netobuf;
-#else /* ENCRYPTION */
- good = netobuf; /* where the good bytes go */
-#endif /* ENCRYPTION */
-
- while (nfrontp > thisitem) {
- if (wewant(thisitem)) {
- int length;
-
- next = thisitem;
- do {
- next = nextitem(next);
- } while (wewant(next) && (nfrontp > next));
- length = next-thisitem;
- memmove(good, thisitem, length);
- good += length;
- thisitem = next;
- } else {
- thisitem = nextitem(thisitem);
- }
- }
-
- nbackp = netobuf;
- nfrontp = good; /* next byte to be sent */
- neturg = 0;
-} /* end of netclear */
-
-/*
- * netflush
- * Send as much data as possible to the network,
- * handling requests for urgent data.
- */
- void
-netflush()
-{
- int n;
- extern int not42;
-
- if ((n = nfrontp - nbackp) > 0) {
- DIAG(TD_REPORT,
- { sprintf(nfrontp, "td: netflush %d chars\r\n", n);
- n += strlen(nfrontp); /* get count first */
- nfrontp += strlen(nfrontp); /* then move pointer */
- });
-#ifdef ENCRYPTION
- if (encrypt_output) {
- char *s = nclearto ? nclearto : nbackp;
- if (nfrontp - s > 0) {
- (*encrypt_output)((unsigned char *)s, nfrontp-s);
- nclearto = nfrontp;
- }
- }
-#endif /* ENCRYPTION */
- /*
- * if no urgent data, or if the other side appears to be an
- * old 4.2 client (and thus unable to survive TCP urgent data),
- * write the entire buffer in non-OOB mode.
- */
- if ((neturg == 0) || (not42 == 0)) {
- n = write(net, nbackp, n); /* normal write */
- } else {
- n = neturg - nbackp;
- /*
- * In 4.2 (and 4.3) systems, there is some question about
- * what byte in a sendOOB operation is the "OOB" data.
- * To make ourselves compatible, we only send ONE byte
- * out of band, the one WE THINK should be OOB (though
- * we really have more the TCP philosophy of urgent data
- * rather than the Unix philosophy of OOB data).
- */
- if (n > 1) {
- n = send(net, nbackp, n-1, 0); /* send URGENT all by itself */
- } else {
- n = send(net, nbackp, n, MSG_OOB); /* URGENT data */
- }
- }
- }
- if (n < 0) {
- if (errno == EWOULDBLOCK || errno == EINTR)
- return;
- cleanup(0);
- }
- nbackp += n;
-#ifdef ENCRYPTION
- if (nbackp > nclearto)
- nclearto = 0;
-#endif /* ENCRYPTION */
- if (nbackp >= neturg) {
- neturg = 0;
- }
- if (nbackp == nfrontp) {
- nbackp = nfrontp = netobuf;
-#ifdef ENCRYPTION
- nclearto = 0;
-#endif /* ENCRYPTION */
- }
- return;
-} /* end of netflush */
-
-
-/*
- * writenet
- *
- * Just a handy little function to write a bit of raw data to the net.
- * It will force a transmit of the buffer if necessary
- *
- * arguments
- * ptr - A pointer to a character string to write
- * len - How many bytes to write
- */
- void
-writenet(ptr, len)
- register unsigned char *ptr;
- register int len;
-{
- /* flush buffer if no room for new data) */
- if ((&netobuf[BUFSIZ] - nfrontp) < len) {
- /* if this fails, don't worry, buffer is a little big */
- netflush();
- }
-
- memmove(nfrontp, ptr, len);
- nfrontp += len;
-
-} /* end of writenet */
-
-
-/*
- * miscellaneous functions doing a variety of little jobs follow ...
- */
-
-
- void
-fatal(f, msg)
- int f;
- char *msg;
-{
- char buf[BUFSIZ];
-
- (void) sprintf(buf, "telnetd: %s.\r\n", msg);
-#ifdef ENCRYPTION
- if (encrypt_output) {
- /*
- * Better turn off encryption first....
- * Hope it flushes...
- */
- encrypt_send_end();
- netflush();
- }
-#endif /* ENCRYPTION */
- (void) write(f, buf, (int)strlen(buf));
- sleep(1); /*XXX*/
- exit(1);
-}
-
- void
-fatalperror(f, msg)
- int f;
- char *msg;
-{
- char buf[BUFSIZ], *strerror();
-
- (void) sprintf(buf, "%s: %s", msg, strerror(errno));
- fatal(f, buf);
-}
-
-char editedhost[32];
-
- void
-edithost(pat, host)
- register char *pat;
- register char *host;
-{
- register char *res = editedhost;
- char *strncpy();
-
- if (!pat)
- pat = "";
- while (*pat) {
- switch (*pat) {
-
- case '#':
- if (*host)
- host++;
- break;
-
- case '@':
- if (*host)
- *res++ = *host++;
- break;
-
- default:
- *res++ = *pat;
- break;
- }
- if (res == &editedhost[sizeof editedhost - 1]) {
- *res = '\0';
- return;
- }
- pat++;
- }
- if (*host)
- (void) strncpy(res, host,
- sizeof editedhost - (res - editedhost) -1);
- else
- *res = '\0';
- editedhost[sizeof editedhost - 1] = '\0';
-}
-
-static char *putlocation;
-
- void
-putstr(s)
- register char *s;
-{
-
- while (*s)
- putchr(*s++);
-}
-
- void
-putchr(cc)
- int cc;
-{
- *putlocation++ = cc;
-}
-
-/*
- * This is split on two lines so that SCCS will not see the M
- * between two % signs and expand it...
- */
-static char fmtstr[] = { "%l:%M\
-%P on %A, %d %B %Y" };
-
- void
-putf(cp, where)
- register char *cp;
- char *where;
-{
- char *slash;
- time_t t;
- char db[100];
-#ifdef STREAMSPTY
- extern char *strchr();
-#else
- extern char *strrchr();
-#endif
-
- putlocation = where;
-
- while (*cp) {
- if (*cp != '%') {
- putchr(*cp++);
- continue;
- }
- switch (*++cp) {
-
- case 't':
-#ifdef STREAMSPTY
- /* names are like /dev/pts/2 -- we want pts/2 */
- slash = strchr(line+1, '/');
-#else
- slash = strrchr(line, '/');
-#endif
- if (slash == (char *) 0)
- putstr(line);
- else
- putstr(&slash[1]);
- break;
-
- case 'h':
- putstr(editedhost);
- break;
-
- case 'd':
- (void)time(&t);
- (void)strftime(db, sizeof(db), fmtstr, localtime(&t));
- putstr(db);
- break;
-
- case '%':
- putchr('%');
- break;
- }
- cp++;
- }
-}
-
-#ifdef DIAGNOSTICS
-/*
- * Print telnet options and commands in plain text, if possible.
- */
- void
-printoption(fmt, option)
- register char *fmt;
- register int option;
-{
- if (TELOPT_OK(option))
- sprintf(nfrontp, "%s %s\r\n", fmt, TELOPT(option));
- else if (TELCMD_OK(option))
- sprintf(nfrontp, "%s %s\r\n", fmt, TELCMD(option));
- else
- sprintf(nfrontp, "%s %d\r\n", fmt, option);
- nfrontp += strlen(nfrontp);
- return;
-}
-
- void
-printsub(direction, pointer, length)
- char direction; /* '<' or '>' */
- unsigned char *pointer; /* where suboption data sits */
- int length; /* length of suboption data */
-{
- register int i;
- char buf[512];
-
- if (!(diagnostic & TD_OPTIONS))
- return;
-
- if (direction) {
- sprintf(nfrontp, "td: %s suboption ",
- direction == '<' ? "recv" : "send");
- nfrontp += strlen(nfrontp);
- if (length >= 3) {
- register int j;
-
- i = pointer[length-2];
- j = pointer[length-1];
-
- if (i != IAC || j != SE) {
- sprintf(nfrontp, "(terminated by ");
- nfrontp += strlen(nfrontp);
- if (TELOPT_OK(i))
- sprintf(nfrontp, "%s ", TELOPT(i));
- else if (TELCMD_OK(i))
- sprintf(nfrontp, "%s ", TELCMD(i));
- else
- sprintf(nfrontp, "%d ", i);
- nfrontp += strlen(nfrontp);
- if (TELOPT_OK(j))
- sprintf(nfrontp, "%s", TELOPT(j));
- else if (TELCMD_OK(j))
- sprintf(nfrontp, "%s", TELCMD(j));
- else
- sprintf(nfrontp, "%d", j);
- nfrontp += strlen(nfrontp);
- sprintf(nfrontp, ", not IAC SE!) ");
- nfrontp += strlen(nfrontp);
- }
- }
- length -= 2;
- }
- if (length < 1) {
- sprintf(nfrontp, "(Empty suboption??\?)");
- nfrontp += strlen(nfrontp);
- return;
- }
- switch (pointer[0]) {
- case TELOPT_TTYPE:
- sprintf(nfrontp, "TERMINAL-TYPE ");
- nfrontp += strlen(nfrontp);
- switch (pointer[1]) {
- case TELQUAL_IS:
- sprintf(nfrontp, "IS \"%.*s\"", length-2, (char *)pointer+2);
- break;
- case TELQUAL_SEND:
- sprintf(nfrontp, "SEND");
- break;
- default:
- sprintf(nfrontp,
- "- unknown qualifier %d (0x%x).",
- pointer[1], pointer[1]);
- }
- nfrontp += strlen(nfrontp);
- break;
- case TELOPT_TSPEED:
- sprintf(nfrontp, "TERMINAL-SPEED");
- nfrontp += strlen(nfrontp);
- if (length < 2) {
- sprintf(nfrontp, " (empty suboption??\?)");
- nfrontp += strlen(nfrontp);
- break;
- }
- switch (pointer[1]) {
- case TELQUAL_IS:
- sprintf(nfrontp, " IS %.*s", length-2, (char *)pointer+2);
- nfrontp += strlen(nfrontp);
- break;
- default:
- if (pointer[1] == 1)
- sprintf(nfrontp, " SEND");
- else
- sprintf(nfrontp, " %d (unknown)", pointer[1]);
- nfrontp += strlen(nfrontp);
- for (i = 2; i < length; i++) {
- sprintf(nfrontp, " ?%d?", pointer[i]);
- nfrontp += strlen(nfrontp);
- }
- break;
- }
- break;
-
- case TELOPT_LFLOW:
- sprintf(nfrontp, "TOGGLE-FLOW-CONTROL");
- nfrontp += strlen(nfrontp);
- if (length < 2) {
- sprintf(nfrontp, " (empty suboption??\?)");
- nfrontp += strlen(nfrontp);
- break;
- }
- switch (pointer[1]) {
- case LFLOW_OFF:
- sprintf(nfrontp, " OFF"); break;
- case LFLOW_ON:
- sprintf(nfrontp, " ON"); break;
- case LFLOW_RESTART_ANY:
- sprintf(nfrontp, " RESTART-ANY"); break;
- case LFLOW_RESTART_XON:
- sprintf(nfrontp, " RESTART-XON"); break;
- default:
- sprintf(nfrontp, " %d (unknown)", pointer[1]);
- }
- nfrontp += strlen(nfrontp);
- for (i = 2; i < length; i++) {
- sprintf(nfrontp, " ?%d?", pointer[i]);
- nfrontp += strlen(nfrontp);
- }
- break;
-
- case TELOPT_NAWS:
- sprintf(nfrontp, "NAWS");
- nfrontp += strlen(nfrontp);
- if (length < 2) {
- sprintf(nfrontp, " (empty suboption??\?)");
- nfrontp += strlen(nfrontp);
- break;
- }
- if (length == 2) {
- sprintf(nfrontp, " ?%d?", pointer[1]);
- nfrontp += strlen(nfrontp);
- break;
- }
- sprintf(nfrontp, " %d %d (%d)",
- pointer[1], pointer[2],
- (int)((((unsigned int)pointer[1])<<8)|((unsigned int)pointer[2])));
- nfrontp += strlen(nfrontp);
- if (length == 4) {
- sprintf(nfrontp, " ?%d?", pointer[3]);
- nfrontp += strlen(nfrontp);
- break;
- }
- sprintf(nfrontp, " %d %d (%d)",
- pointer[3], pointer[4],
- (int)((((unsigned int)pointer[3])<<8)|((unsigned int)pointer[4])));
- nfrontp += strlen(nfrontp);
- for (i = 5; i < length; i++) {
- sprintf(nfrontp, " ?%d?", pointer[i]);
- nfrontp += strlen(nfrontp);
- }
- break;
-
- case TELOPT_LINEMODE:
- sprintf(nfrontp, "LINEMODE ");
- nfrontp += strlen(nfrontp);
- if (length < 2) {
- sprintf(nfrontp, " (empty suboption??\?)");
- nfrontp += strlen(nfrontp);
- break;
- }
- switch (pointer[1]) {
- case WILL:
- sprintf(nfrontp, "WILL ");
- goto common;
- case WONT:
- sprintf(nfrontp, "WONT ");
- goto common;
- case DO:
- sprintf(nfrontp, "DO ");
- goto common;
- case DONT:
- sprintf(nfrontp, "DONT ");
- common:
- nfrontp += strlen(nfrontp);
- if (length < 3) {
- sprintf(nfrontp, "(no option??\?)");
- nfrontp += strlen(nfrontp);
- break;
- }
- switch (pointer[2]) {
- case LM_FORWARDMASK:
- sprintf(nfrontp, "Forward Mask");
- nfrontp += strlen(nfrontp);
- for (i = 3; i < length; i++) {
- sprintf(nfrontp, " %x", pointer[i]);
- nfrontp += strlen(nfrontp);
- }
- break;
- default:
- sprintf(nfrontp, "%d (unknown)", pointer[2]);
- nfrontp += strlen(nfrontp);
- for (i = 3; i < length; i++) {
- sprintf(nfrontp, " %d", pointer[i]);
- nfrontp += strlen(nfrontp);
- }
- break;
- }
- break;
-
- case LM_SLC:
- sprintf(nfrontp, "SLC");
- nfrontp += strlen(nfrontp);
- for (i = 2; i < length - 2; i += 3) {
- if (SLC_NAME_OK(pointer[i+SLC_FUNC]))
- sprintf(nfrontp, " %s", SLC_NAME(pointer[i+SLC_FUNC]));
- else
- sprintf(nfrontp, " %d", pointer[i+SLC_FUNC]);
- nfrontp += strlen(nfrontp);
- switch (pointer[i+SLC_FLAGS]&SLC_LEVELBITS) {
- case SLC_NOSUPPORT:
- sprintf(nfrontp, " NOSUPPORT"); break;
- case SLC_CANTCHANGE:
- sprintf(nfrontp, " CANTCHANGE"); break;
- case SLC_VARIABLE:
- sprintf(nfrontp, " VARIABLE"); break;
- case SLC_DEFAULT:
- sprintf(nfrontp, " DEFAULT"); break;
- }
- nfrontp += strlen(nfrontp);
- sprintf(nfrontp, "%s%s%s",
- pointer[i+SLC_FLAGS]&SLC_ACK ? "|ACK" : "",
- pointer[i+SLC_FLAGS]&SLC_FLUSHIN ? "|FLUSHIN" : "",
- pointer[i+SLC_FLAGS]&SLC_FLUSHOUT ? "|FLUSHOUT" : "");
- nfrontp += strlen(nfrontp);
- if (pointer[i+SLC_FLAGS]& ~(SLC_ACK|SLC_FLUSHIN|
- SLC_FLUSHOUT| SLC_LEVELBITS)) {
- sprintf(nfrontp, "(0x%x)", pointer[i+SLC_FLAGS]);
- nfrontp += strlen(nfrontp);
- }
- sprintf(nfrontp, " %d;", pointer[i+SLC_VALUE]);
- nfrontp += strlen(nfrontp);
- if ((pointer[i+SLC_VALUE] == IAC) &&
- (pointer[i+SLC_VALUE+1] == IAC))
- i++;
- }
- for (; i < length; i++) {
- sprintf(nfrontp, " ?%d?", pointer[i]);
- nfrontp += strlen(nfrontp);
- }
- break;
-
- case LM_MODE:
- sprintf(nfrontp, "MODE ");
- nfrontp += strlen(nfrontp);
- if (length < 3) {
- sprintf(nfrontp, "(no mode??\?)");
- nfrontp += strlen(nfrontp);
- break;
- }
- {
- char tbuf[32];
- sprintf(tbuf, "%s%s%s%s%s",
- pointer[2]&MODE_EDIT ? "|EDIT" : "",
- pointer[2]&MODE_TRAPSIG ? "|TRAPSIG" : "",
- pointer[2]&MODE_SOFT_TAB ? "|SOFT_TAB" : "",
- pointer[2]&MODE_LIT_ECHO ? "|LIT_ECHO" : "",
- pointer[2]&MODE_ACK ? "|ACK" : "");
- sprintf(nfrontp, "%s", tbuf[1] ? &tbuf[1] : "0");
- nfrontp += strlen(nfrontp);
- }
- if (pointer[2]&~(MODE_EDIT|MODE_TRAPSIG|MODE_ACK)) {
- sprintf(nfrontp, " (0x%x)", pointer[2]);
- nfrontp += strlen(nfrontp);
- }
- for (i = 3; i < length; i++) {
- sprintf(nfrontp, " ?0x%x?", pointer[i]);
- nfrontp += strlen(nfrontp);
- }
- break;
- default:
- sprintf(nfrontp, "%d (unknown)", pointer[1]);
- nfrontp += strlen(nfrontp);
- for (i = 2; i < length; i++) {
- sprintf(nfrontp, " %d", pointer[i]);
- nfrontp += strlen(nfrontp);
- }
- }
- break;
-
- case TELOPT_STATUS: {
- register char *cp;
- register int j, k;
-
- sprintf(nfrontp, "STATUS");
- nfrontp += strlen(nfrontp);
-
- switch (pointer[1]) {
- default:
- if (pointer[1] == TELQUAL_SEND)
- sprintf(nfrontp, " SEND");
- else
- sprintf(nfrontp, " %d (unknown)", pointer[1]);
- nfrontp += strlen(nfrontp);
- for (i = 2; i < length; i++) {
- sprintf(nfrontp, " ?%d?", pointer[i]);
- nfrontp += strlen(nfrontp);
- }
- break;
- case TELQUAL_IS:
- sprintf(nfrontp, " IS\r\n");
- nfrontp += strlen(nfrontp);
-
- for (i = 2; i < length; i++) {
- switch(pointer[i]) {
- case DO: cp = "DO"; goto common2;
- case DONT: cp = "DONT"; goto common2;
- case WILL: cp = "WILL"; goto common2;
- case WONT: cp = "WONT"; goto common2;
- common2:
- i++;
- if (TELOPT_OK(pointer[i]))
- sprintf(nfrontp, " %s %s", cp, TELOPT(pointer[i]));
- else
- sprintf(nfrontp, " %s %d", cp, pointer[i]);
- nfrontp += strlen(nfrontp);
-
- sprintf(nfrontp, "\r\n");
- nfrontp += strlen(nfrontp);
- break;
-
- case SB:
- sprintf(nfrontp, " SB ");
- nfrontp += strlen(nfrontp);
- i++;
- j = k = i;
- while (j < length) {
- if (pointer[j] == SE) {
- if (j+1 == length)
- break;
- if (pointer[j+1] == SE)
- j++;
- else
- break;
- }
- pointer[k++] = pointer[j++];
- }
- printsub(0, &pointer[i], k - i);
- if (i < length) {
- sprintf(nfrontp, " SE");
- nfrontp += strlen(nfrontp);
- i = j;
- } else
- i = j - 1;
-
- sprintf(nfrontp, "\r\n");
- nfrontp += strlen(nfrontp);
-
- break;
-
- default:
- sprintf(nfrontp, " %d", pointer[i]);
- nfrontp += strlen(nfrontp);
- break;
- }
- }
- break;
- }
- break;
- }
-
- case TELOPT_XDISPLOC:
- sprintf(nfrontp, "X-DISPLAY-LOCATION ");
- nfrontp += strlen(nfrontp);
- switch (pointer[1]) {
- case TELQUAL_IS:
- sprintf(nfrontp, "IS \"%.*s\"", length-2, (char *)pointer+2);
- break;
- case TELQUAL_SEND:
- sprintf(nfrontp, "SEND");
- break;
- default:
- sprintf(nfrontp, "- unknown qualifier %d (0x%x).",
- pointer[1], pointer[1]);
- }
- nfrontp += strlen(nfrontp);
- break;
-
- case TELOPT_NEW_ENVIRON:
- sprintf(nfrontp, "NEW-ENVIRON ");
- goto env_common1;
- case TELOPT_OLD_ENVIRON:
- sprintf(nfrontp, "OLD-ENVIRON");
- env_common1:
- nfrontp += strlen(nfrontp);
- switch (pointer[1]) {
- case TELQUAL_IS:
- sprintf(nfrontp, "IS ");
- goto env_common;
- case TELQUAL_SEND:
- sprintf(nfrontp, "SEND ");
- goto env_common;
- case TELQUAL_INFO:
- sprintf(nfrontp, "INFO ");
- env_common:
- nfrontp += strlen(nfrontp);
- {
- register int noquote = 2;
- for (i = 2; i < length; i++ ) {
- switch (pointer[i]) {
- case NEW_ENV_VAR:
- sprintf(nfrontp, "\" VAR " + noquote);
- nfrontp += strlen(nfrontp);
- noquote = 2;
- break;
-
- case NEW_ENV_VALUE:
- sprintf(nfrontp, "\" VALUE " + noquote);
- nfrontp += strlen(nfrontp);
- noquote = 2;
- break;
-
- case ENV_ESC:
- sprintf(nfrontp, "\" ESC " + noquote);
- nfrontp += strlen(nfrontp);
- noquote = 2;
- break;
-
- case ENV_USERVAR:
- sprintf(nfrontp, "\" USERVAR " + noquote);
- nfrontp += strlen(nfrontp);
- noquote = 2;
- break;
-
- default:
- def_case:
- if (isprint(pointer[i]) && pointer[i] != '"') {
- if (noquote) {
- *nfrontp++ = '"';
- noquote = 0;
- }
- *nfrontp++ = pointer[i];
- } else {
- sprintf(nfrontp, "\" %03o " + noquote,
- pointer[i]);
- nfrontp += strlen(nfrontp);
- noquote = 2;
- }
- break;
- }
- }
- if (!noquote)
- *nfrontp++ = '"';
- break;
- }
- }
- break;
-
-#if defined(AUTHENTICATION)
- case TELOPT_AUTHENTICATION:
- sprintf(nfrontp, "AUTHENTICATION");
- nfrontp += strlen(nfrontp);
-
- if (length < 2) {
- sprintf(nfrontp, " (empty suboption??\?)");
- nfrontp += strlen(nfrontp);
- break;
- }
- switch (pointer[1]) {
- case TELQUAL_REPLY:
- case TELQUAL_IS:
- sprintf(nfrontp, " %s ", (pointer[1] == TELQUAL_IS) ?
- "IS" : "REPLY");
- nfrontp += strlen(nfrontp);
- if (AUTHTYPE_NAME_OK(pointer[2]))
- sprintf(nfrontp, "%s ", AUTHTYPE_NAME(pointer[2]));
- else
- sprintf(nfrontp, "%d ", pointer[2]);
- nfrontp += strlen(nfrontp);
- if (length < 3) {
- sprintf(nfrontp, "(partial suboption??\?)");
- nfrontp += strlen(nfrontp);
- break;
- }
- sprintf(nfrontp, "%s|%s",
- ((pointer[3] & AUTH_WHO_MASK) == AUTH_WHO_CLIENT) ?
- "CLIENT" : "SERVER",
- ((pointer[3] & AUTH_HOW_MASK) == AUTH_HOW_MUTUAL) ?
- "MUTUAL" : "ONE-WAY");
- nfrontp += strlen(nfrontp);
-
- auth_printsub(&pointer[1], length - 1, buf, sizeof(buf));
- sprintf(nfrontp, "%s", buf);
- nfrontp += strlen(nfrontp);
- break;
-
- case TELQUAL_SEND:
- i = 2;
- sprintf(nfrontp, " SEND ");
- nfrontp += strlen(nfrontp);
- while (i < length) {
- if (AUTHTYPE_NAME_OK(pointer[i]))
- sprintf(nfrontp, "%s ", AUTHTYPE_NAME(pointer[i]));
- else
- sprintf(nfrontp, "%d ", pointer[i]);
- nfrontp += strlen(nfrontp);
- if (++i >= length) {
- sprintf(nfrontp, "(partial suboption??\?)");
- nfrontp += strlen(nfrontp);
- break;
- }
- sprintf(nfrontp, "%s|%s ",
- ((pointer[i] & AUTH_WHO_MASK) == AUTH_WHO_CLIENT) ?
- "CLIENT" : "SERVER",
- ((pointer[i] & AUTH_HOW_MASK) == AUTH_HOW_MUTUAL) ?
- "MUTUAL" : "ONE-WAY");
- nfrontp += strlen(nfrontp);
- ++i;
- }
- break;
-
- case TELQUAL_NAME:
- i = 2;
- sprintf(nfrontp, " NAME \"");
- nfrontp += strlen(nfrontp);
- while (i < length)
- *nfrontp += pointer[i++];
- *nfrontp += '"';
- break;
-
- default:
- for (i = 2; i < length; i++) {
- sprintf(nfrontp, " ?%d?", pointer[i]);
- nfrontp += strlen(nfrontp);
- }
- break;
- }
- break;
-#endif
-
-#ifdef ENCRYPTION
- case TELOPT_ENCRYPT:
- sprintf(nfrontp, "ENCRYPT");
- nfrontp += strlen(nfrontp);
- if (length < 2) {
- sprintf(nfrontp, " (empty suboption??\?)");
- nfrontp += strlen(nfrontp);
- break;
- }
- switch (pointer[1]) {
- case ENCRYPT_START:
- sprintf(nfrontp, " START");
- nfrontp += strlen(nfrontp);
- break;
-
- case ENCRYPT_END:
- sprintf(nfrontp, " END");
- nfrontp += strlen(nfrontp);
- break;
-
- case ENCRYPT_REQSTART:
- sprintf(nfrontp, " REQUEST-START");
- nfrontp += strlen(nfrontp);
- break;
-
- case ENCRYPT_REQEND:
- sprintf(nfrontp, " REQUEST-END");
- nfrontp += strlen(nfrontp);
- break;
-
- case ENCRYPT_IS:
- case ENCRYPT_REPLY:
- sprintf(nfrontp, " %s ", (pointer[1] == ENCRYPT_IS) ?
- "IS" : "REPLY");
- nfrontp += strlen(nfrontp);
- if (length < 3) {
- sprintf(nfrontp, " (partial suboption??\?)");
- nfrontp += strlen(nfrontp);
- break;
- }
- if (ENCTYPE_NAME_OK(pointer[2]))
- sprintf(nfrontp, "%s ", ENCTYPE_NAME(pointer[2]));
- else
- sprintf(nfrontp, " %d (unknown)", pointer[2]);
- nfrontp += strlen(nfrontp);
-
- encrypt_printsub(&pointer[1], length - 1, buf, sizeof(buf));
- sprintf(nfrontp, "%s", buf);
- nfrontp += strlen(nfrontp);
- break;
-
- case ENCRYPT_SUPPORT:
- i = 2;
- sprintf(nfrontp, " SUPPORT ");
- nfrontp += strlen(nfrontp);
- while (i < length) {
- if (ENCTYPE_NAME_OK(pointer[i]))
- sprintf(nfrontp, "%s ", ENCTYPE_NAME(pointer[i]));
- else
- sprintf(nfrontp, "%d ", pointer[i]);
- nfrontp += strlen(nfrontp);
- i++;
- }
- break;
-
- case ENCRYPT_ENC_KEYID:
- sprintf(nfrontp, " ENC_KEYID", pointer[1]);
- nfrontp += strlen(nfrontp);
- goto encommon;
-
- case ENCRYPT_DEC_KEYID:
- sprintf(nfrontp, " DEC_KEYID", pointer[1]);
- nfrontp += strlen(nfrontp);
- goto encommon;
-
- default:
- sprintf(nfrontp, " %d (unknown)", pointer[1]);
- nfrontp += strlen(nfrontp);
- encommon:
- for (i = 2; i < length; i++) {
- sprintf(nfrontp, " %d", pointer[i]);
- nfrontp += strlen(nfrontp);
- }
- break;
- }
- break;
-#endif /* ENCRYPTION */
-
- default:
- if (TELOPT_OK(pointer[0]))
- sprintf(nfrontp, "%s (unknown)", TELOPT(pointer[0]));
- else
- sprintf(nfrontp, "%d (unknown)", pointer[i]);
- nfrontp += strlen(nfrontp);
- for (i = 1; i < length; i++) {
- sprintf(nfrontp, " %d", pointer[i]);
- nfrontp += strlen(nfrontp);
- }
- break;
- }
- sprintf(nfrontp, "\r\n");
- nfrontp += strlen(nfrontp);
-}
-
-/*
- * Dump a data buffer in hex and ascii to the output data stream.
- */
- void
-printdata(tag, ptr, cnt)
- register char *tag;
- register char *ptr;
- register int cnt;
-{
- register int i;
- char xbuf[30];
-
- while (cnt) {
- /* flush net output buffer if no room for new data) */
- if ((&netobuf[BUFSIZ] - nfrontp) < 80) {
- netflush();
- }
-
- /* add a line of output */
- sprintf(nfrontp, "%s: ", tag);
- nfrontp += strlen(nfrontp);
- for (i = 0; i < 20 && cnt; i++) {
- sprintf(nfrontp, "%02x", *ptr);
- nfrontp += strlen(nfrontp);
- if (isprint(*ptr)) {
- xbuf[i] = *ptr;
- } else {
- xbuf[i] = '.';
- }
- if (i % 2) {
- *nfrontp = ' ';
- nfrontp++;
- }
- cnt--;
- ptr++;
- }
- xbuf[i] = '\0';
- sprintf(nfrontp, " %s\r\n", xbuf );
- nfrontp += strlen(nfrontp);
- }
-}
-#endif /* DIAGNOSTICS */
diff --git a/secure/sbin/Makefile b/secure/sbin/Makefile
deleted file mode 100644
index 32ef1f1dc8ab..000000000000
--- a/secure/sbin/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# $Id: Makefile,v 1.1 1994/09/07 07:16:49 pst Exp $
-
-SUBDIR= init
-
-.include <bsd.subdir.mk>
-
diff --git a/secure/sbin/Makefile.inc b/secure/sbin/Makefile.inc
deleted file mode 100644
index d8e8fa0c33b9..000000000000
--- a/secure/sbin/Makefile.inc
+++ /dev/null
@@ -1,6 +0,0 @@
-# $Id: Makefile.inc,v 1.1 1994/09/07 07:16:50 pst Exp $
-
-BINDIR= /sbin
-
-NOSHARED?= YES
-.include "${.CURDIR}/../../Makefile.inc"
diff --git a/secure/sbin/init/Makefile b/secure/sbin/init/Makefile
deleted file mode 100644
index 48147c523428..000000000000
--- a/secure/sbin/init/Makefile
+++ /dev/null
@@ -1,12 +0,0 @@
-# @(#)Makefile 8.1 (Berkeley) 7/19/93
-
-PROG= init
-NOMAN= true
-DPADD= ../../lib/libcrypt/libdescrypt.a ${LIBUTIL}
-LDADD= -L../../lib/libcrypt -lutil -ldescrypt
-.PATH: ${.CURDIR}/../../../sbin/init
-BINMODE=500
-INSTALLFLAGS=-fschg
-CFLAGS+=-DDEBUGSHELL -DSECURE
-
-.include <bsd.prog.mk>
diff --git a/secure/usr.bin/Makefile b/secure/usr.bin/Makefile
deleted file mode 100644
index 6a24f426df1a..000000000000
--- a/secure/usr.bin/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# $Id: Makefile,v 1.2 1995/07/29 12:49:25 markm Exp $
-
-SUBDIR= bdes telnet
-
-.include <bsd.subdir.mk>
-
diff --git a/secure/usr.bin/Makefile.inc b/secure/usr.bin/Makefile.inc
deleted file mode 100644
index e09ccebf3f5d..000000000000
--- a/secure/usr.bin/Makefile.inc
+++ /dev/null
@@ -1,4 +0,0 @@
-# $Id: Makefile.inc,v 1.1 1994/09/07 07:16:50 pst Exp $
-
-BINDIR= /usr/bin
-.include "${.CURDIR}/../../Makefile.inc"
diff --git a/secure/usr.bin/bdes/Makefile b/secure/usr.bin/bdes/Makefile
deleted file mode 100644
index 1b19c58eb3ec..000000000000
--- a/secure/usr.bin/bdes/Makefile
+++ /dev/null
@@ -1,10 +0,0 @@
-# @(#)Makefile 8.1 (Berkeley) 6/6/93
-# $Id: Makefile,v 1.4 1994/09/30 06:04:40 pst Exp $
-
-PROG= bdes
-SRCS= bdes.c
-
-LDADD+= -L../../lib/libcipher -lcipher
-DPADD+= ../../lib/libcipher/libcipher.a
-
-.include <bsd.prog.mk>
diff --git a/secure/usr.bin/bdes/bdes.1 b/secure/usr.bin/bdes/bdes.1
deleted file mode 100644
index eecd81b5d86d..000000000000
--- a/secure/usr.bin/bdes/bdes.1
+++ /dev/null
@@ -1,304 +0,0 @@
-.\" Copyright (c) 1991, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" This code is derived from software contributed to Berkeley by
-.\" Matt Bishop of Dartmouth College.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\" must display the following acknowledgement:
-.\" This product includes software developed by the University of
-.\" California, Berkeley and its contributors.
-.\" 4. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)bdes.1 8.1 (Berkeley) 6/29/93
-.\"
-.TH BDES 1 "June 29, 1993"
-.UC 6
-.SH NAME
-bdes \- encrypt/decrypt using the Data Encryption Standard
-.SH SYNOPSIS
-.nf
-.ft B
-bdes [ \-abdp ] [ \-F N ] [ \-f N ] [ \-k key ]
-.ti +5
-[ \-m N ] [ \-o N ] [ \-v vector ]
-.ft R
-.fi
-.SH DESCRIPTION
-.I Bdes
-implements all DES modes of operation described in FIPS PUB 81,
-including alternative cipher feedback mode and both authentication
-modes.
-.I Bdes
-reads from the standard input and writes to the standard output.
-By default, the input is encrypted using cipher block chaining mode.
-Using the same key for encryption and decryption preserves plain text.
-.PP
-All modes but the electronic code book mode require an initialization
-vector; if none is supplied, the zero vector is used.
-If no
-.I key
-is specified on the command line, the user is prompted for one (see
-.IR getpass (3)
-for more details).
-.PP
-The options are as follows:
-.TP
-\-a
-The key and initialization vector strings are to be taken as ASCII,
-suppressing the special interpretation given to leading ``0X'', ``0x'',
-``0B'', and ``0b'' characters.
-This flag applies to
-.I both
-the key and initialization vector.
-.TP
-\-b
-Use electronic code book mode.
-.TP
-\-d
-Decrypt the input.
-.TP
-\-F
-Use
-.IR N -bit
-alternative cipher feedback mode.
-Currently
-.I N
-must be a multiple of 7 between 7 and 56 inclusive (this does not conform
-to the alternative CFB mode specification).
-.TP
-\-f
-Use
-.IR N -bit
-cipher feedback mode.
-Currently
-.I N
-must be a multiple of 8 between 8 and 64 inclusive (this does not conform
-to the standard CFB mode specification).
-.TP
-\-k
-Use
-.I key
-as the cryptographic key.
-.TP
-\-m
-Compute a message authentication code (MAC) of
-.I N
-bits on the input.
-The value of
-.I N
-must be between 1 and 64 inclusive; if
-.I N
-is not a multiple of 8, enough 0 bits will be added to pad the MAC length
-to the nearest multiple of 8.
-Only the MAC is output.
-MACs are only available in cipher block chaining mode or in cipher feedback
-mode.
-.TP
-\-o
-Use
-.IR N -bit
-output feedback mode.
-Currently
-.I N
-must be a multiple of 8 between 8 and 64 inclusive (this does not conform
-to the OFB mode specification).
-.TP
-\-p
-Disable the resetting of the parity bit.
-This flag forces the parity bit of the key to be used as typed, rather than
-making each character be of odd parity.
-It is used only if the key is given in ASCII.
-.TP
-\-v
-Set the initialization vector to
-.IR vector ;
-the vector is interpreted in the same way as the key.
-The vector is ignored in electronic codebook mode.
-.PP
-The key and initialization vector are taken as sequences of ASCII
-characters which are then mapped into their bit representations.
-If either begins with ``0X'' or ``0x'',
-that one is taken as a sequence of hexadecimal digits indicating the
-bit pattern;
-if either begins with ``0B'' or ``0b'',
-that one is taken as a sequence of binary digits indicating the bit pattern.
-In either case,
-only the leading 64 bits of the key or initialization vector
-are used,
-and if fewer than 64 bits are provided, enough 0 bits are appended
-to pad the key to 64 bits.
-.PP
-According to the DES standard, the low-order bit of each character in the
-key string is deleted.
-Since most ASCII representations set the high-order bit to 0, simply
-deleting the low-order bit effectively reduces the size of the key space
-from 2\u\s-356\s0\d to 2\u\s-348\s0\d keys.
-To prevent this, the high-order bit must be a function depending in part
-upon the low-order bit; so, the high-order bit is set to whatever value
-gives odd parity.
-This preserves the key space size.
-Note this resetting of the parity bit is
-.I not
-done if the key is given in binary or hex, and can be disabled for ASCII
-keys as well.
-.PP
-The DES is considered a very strong cryptosystem, and other than table lookup
-attacks, key search attacks, and Hellman's time-memory tradeoff (all of which
-are very expensive and time-consuming), no cryptanalytic methods for breaking
-the DES are known in the open literature.
-No doubt the choice of keys and key security are the most vulnerable aspect
-of
-.IR bdes .
-.SH IMPLEMENTATION NOTES
-For implementors wishing to write software compatible with this program,
-the following notes are provided.
-This software is believed to be compatible with the implementation of the
-data encryption standard distributed by Sun Microsystems, Inc.
-.PP
-In the ECB and CBC modes, plaintext is encrypted in units of 64 bits (8 bytes,
-also called a block).
-To ensure that the plaintext file is encrypted correctly,
-.I bdes
-will (internally) append from 1 to 8 bytes, the last byte containing an
-integer stating how many bytes of that final block are from the plaintext
-file, and encrypt the resulting block.
-Hence, when decrypting, the last block may contain from 0 to 7 characters
-present in the plaintext file, and the last byte tells how many.
-Note that if during decryption the last byte of the file does not contain an
-integer between 0 and 7, either the file has been corrupted or an incorrect
-key has been given.
-A similar mechanism is used for the OFB and CFB modes, except that those
-simply require the length of the input to be a multiple of the mode size,
-and the final byte contains an integer between 0 and one less than the number
-of bytes being used as the mode.
-(This was another reason that the mode size must be a multiple of 8 for those
-modes.)
-.PP
-Unlike Sun's implementation, unused bytes of that last block are not filled
-with random data, but instead contain what was in those byte positions in
-the preceding block.
-This is quicker and more portable, and does not weaken the encryption
-significantly.
-.PP
-If the key is entered in ASCII, the parity bits of the key characters are set
-so that each key character is of odd parity.
-Unlike Sun's implementation, it is possible to enter binary or hexadecimal
-keys on the command line, and if this is done, the parity bits are
-.I not
-reset.
-This allows testing using arbitrary bit patterns as keys.
-.PP
-The Sun implementation always uses an initialization vector of 0
-(that is, all zeroes).
-By default,
-.I bdes
-does too, but this may be changed from the command line.
-.SH SEE ALSO
-crypt(1), crypt(3), getpass(3)
-.sp
-.IR "Data Encryption Standard" ,
-Federal Information Processing Standard #46,
-National Bureau of Standards,
-U.S. Department of Commerce,
-Washington DC
-(Jan. 1977)
-.sp
-.IR "DES Modes of Operation" ,
-Federal Information Processing Standard #81,
-National Bureau of Standards,
-U.S. Department of Commerce
-Washington DC
-(Dec. 1980)
-.sp
-Dorothy Denning,
-.IR "Cryptography and Data Security" ,
-Addison-Wesley Publishing Co.,
-Reading, MA
-\(co1982.
-.sp
-Matt Bishop,
-.IR "Implementation Notes on bdes(1)" ,
-Technical Report PCS-TR-91-158,
-Department of Mathematics and Computer Science,
-Dartmouth College,
-Hanover, NH 03755
-(Apr. 1991).
-.SH DISCLAIMER
-.nf
-THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-.fi
-.SH BUGS
-There is a controversy raging over whether the DES will still be secure
-in a few years.
-The advent of special-purpose hardware could reduce the cost of any of the
-methods of attack named above so that they are no longer computationally
-infeasible.
-.PP
-As the key or key schedule is stored in memory, the encryption can be
-compromised if memory is readable.
-Additionally, programs which display programs' arguments may compromise the
-key and initialization vector, if they are specified on the command line.
-To avoid this
-.I bdes
-overwrites its arguments, however, the obvious race cannot currently be
-avoided.
-.PP
-Certain specific keys should be avoided because they introduce potential
-weaknesses; these keys, called the
-.I weak
-and
-.I semiweak
-keys, are (in hex notation, where p is either 0 or 1, and P is either
-e or f):
-.sp
-.nf
-.in +10n
-.ta \w'0x0p0p0p0p0p0p0p0p\0\0\0'u+5n
-0x0p0p0p0p0p0p0p0p 0x0p1P0p1P0p0P0p0P
-0x0pep0pep0pfp0pfp 0x0pfP0pfP0pfP0pfP
-0x1P0p1P0p0P0p0P0p 0x1P1P1P1P0P0P0P0P
-0x1Pep1Pep0Pfp0Pfp 0x1PfP1PfP0PfP0PfP
-0xep0pep0pfp0pfp0p 0xep1Pep1pfp0Pfp0P
-0xepepepepepepepep 0xepfPepfPfpfPfpfP
-0xfP0pfP0pfP0pfP0p 0xfP1PfP1PfP0PfP0P
-0xfPepfPepfPepfPep 0xfPfPfPfPfPfPfPfP
-.fi
-.in -10n
-.sp
-This is inherent in the DES algorithm (see Moore and Simmons,
-\*(LqCycle structure of the DES with weak and semi-weak keys,\*(Rq
-.I "Advances in Cryptology \- Crypto '86 Proceedings" ,
-Springer-Verlag New York, \(co1987, pp. 9-32.)
diff --git a/secure/usr.bin/bdes/bdes.c b/secure/usr.bin/bdes/bdes.c
deleted file mode 100644
index 257d54968953..000000000000
--- a/secure/usr.bin/bdes/bdes.c
+++ /dev/null
@@ -1,1046 +0,0 @@
-/*-
- * Copyright (c) 1991, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Matt Bishop of Dartmouth College.
- *
- * The United States Government has rights in this work pursuant
- * to contract no. NAG 2-680 between the National Aeronautics and
- * Space Administration and Dartmouth College.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char copyright[] =
-"@(#) Copyright (c) 1991, 1993\n\
- The Regents of the University of California. All rights reserved.\n";
-#endif /* not lint */
-
-#ifndef lint
-static char sccsid[] = "@(#)bdes.c 8.1 (Berkeley) 6/6/93";
-#endif /* not lint */
-
-/*
- * BDES -- DES encryption package for Berkeley Software Distribution 4.4
- * options:
- * -a key is in ASCII
- * -b use ECB (electronic code book) mode
- * -d invert (decrypt) input
- * -f b use b-bit CFB (cipher feedback) mode
- * -F b use b-bit CFB (cipher feedback) alternative mode
- * -k key use key as the cryptographic key
- * -m b generate a MAC of length b
- * -o b use b-bit OFB (output feedback) mode
- * -p don't reset the parity bit
- * -v v use v as the initialization vector (ignored for ECB)
- * note: the last character of the last block is the integer indicating
- * how many characters of that block are to be output
- *
- * Author: Matt Bishop
- * Department of Mathematics and Computer Science
- * Dartmouth College
- * Hanover, NH 03755
- * Email: Matt.Bishop@dartmouth.edu
- * ...!decvax!dartvax!Matt.Bishop
- *
- * See Technical Report PCS-TR91-158, Department of Mathematics and Computer
- * Science, Dartmouth College, for a detailed description of the implemen-
- * tation and differences between it and Sun's. The DES is described in
- * FIPS PUB 46, and the modes in FIPS PUB 81 (see either the manual page
- * or the technical report for a complete reference).
- */
-
-#include <errno.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-
-/*
- * BSD and System V systems offer special library calls that do
- * block moves and fills, so if possible we take advantage of them
- */
-#define MEMCPY(dest,src,len) bcopy((src),(dest),(len))
-#define MEMZERO(dest,len) bzero((dest),(len))
-
-/* Hide the calls to the primitive encryption routines. */
-#define FASTWAY
-#ifdef FASTWAY
-#define DES_KEY(buf) \
- if (des_setkey(buf)) \
- err("des_setkey", 0);
-#define DES_XFORM(buf) \
- if (des_cipher(buf, buf, 0L, (inverse ? -1 : 1))) \
- err("des_cipher", 0);
-#else
-#define DES_KEY(buf) { \
- char bits1[64]; /* bits of key */ \
- expand(buf, bits1); \
- if (setkey(bits1)) \
- err("setkey", 0); \
- }
-#define DES_XFORM(buf) { \
- char bits1[64]; /* bits of message */ \
- expand(buf, bits1); \
- if (encrypt(bits1, inverse)) \
- err("encrypt", 0); \
- compress(bits1, buf); \
- }
-#endif
-
-/*
- * this does an error-checking write
- */
-#define READ(buf, n) fread(buf, sizeof(char), n, stdin)
-#define WRITE(buf,n) \
- if (fwrite(buf, sizeof(char), n, stdout) != n) \
- err(bn, NULL);
-
-/*
- * some things to make references easier
- */
-typedef char Desbuf[8];
-#define CHAR(x,i) (x[i])
-#define UCHAR(x,i) (x[i])
-#define BUFFER(x) (x)
-#define UBUFFER(x) (x)
-
-/*
- * global variables and related macros
- */
-#define KEY_DEFAULT 0 /* interpret radix of key from key */
-#define KEY_ASCII 1 /* key is in ASCII characters */
-int keybase = KEY_DEFAULT; /* how to interpret the key */
-
-enum { /* encrypt, decrypt, authenticate */
- MODE_ENCRYPT, MODE_DECRYPT, MODE_AUTHENTICATE
-} mode = MODE_ENCRYPT;
-enum { /* ecb, cbc, cfb, cfba, ofb? */
- ALG_ECB, ALG_CBC, ALG_CFB, ALG_OFB, ALG_CFBA
-} alg = ALG_CBC;
-
-Desbuf ivec; /* initialization vector */
-char bits[] = { /* used to extract bits from a char */
- '\200', '\100', '\040', '\020', '\010', '\004', '\002', '\001'
-};
-int inverse; /* 0 to encrypt, 1 to decrypt */
-int macbits = -1; /* number of bits in authentication */
-int fbbits = -1; /* number of feedback bits */
-int pflag; /* 1 to preserve parity bits */
-
-main(ac, av)
- int ac; /* arg count */
- char **av; /* arg vector */
-{
- extern int optind; /* option (argument) number */
- extern char *optarg; /* argument to option if any */
- register int i; /* counter in a for loop */
- register char *p; /* used to obtain the key */
- Desbuf msgbuf; /* I/O buffer */
- int kflag; /* command-line encryptiooon key */
- int argc; /* the real arg count */
- char **argv; /* the real argument vector */
-
- /*
- * Hide the arguments from ps(1) by making private copies of them
- * and clobbering the global (visible to ps(1)) ones.
- */
- argc = ac;
- ac = 1;
- argv = malloc((argc + 1) * sizeof(char *));
- for (i = 0; i < argc; ++i) {
- argv[i] = strdup(av[i]);
- MEMZERO(av[i], strlen(av[i]));
- }
- argv[argc] = NULL;
-
- /* initialize the initialization vctor */
- MEMZERO(ivec, 8);
-
- /* process the argument list */
- kflag = 0;
- while ((i = getopt(argc, argv, "abdF:f:k:m:o:pv:")) != EOF)
- switch(i) {
- case 'a': /* key is ASCII */
- keybase = KEY_ASCII;
- break;
- case 'b': /* use ECB mode */
- alg = ALG_ECB;
- break;
- case 'd': /* decrypt */
- mode = MODE_DECRYPT;
- break;
- case 'F': /* use alternative CFB mode */
- alg = ALG_CFBA;
- if ((fbbits = setbits(optarg, 7)) > 56 || fbbits == 0)
- err(-1, "-F: number must be 1-56 inclusive");
- else if (fbbits == -1)
- err(-1, "-F: number must be a multiple of 7");
- break;
- case 'f': /* use CFB mode */
- alg = ALG_CFB;
- if ((fbbits = setbits(optarg, 8)) > 64 || fbbits == 0)
- err(-1, "-f: number must be 1-64 inclusive");
- else if (fbbits == -1)
- err(-1, "-f: number must be a multiple of 8");
- break;
- case 'k': /* encryption key */
- kflag = 1;
- cvtkey(BUFFER(msgbuf), optarg);
- break;
- case 'm': /* number of bits for MACing */
- mode = MODE_AUTHENTICATE;
- if ((macbits = setbits(optarg, 1)) > 64)
- err(-1, "-m: number must be 0-64 inclusive");
- break;
- case 'o': /* use OFB mode */
- alg = ALG_OFB;
- if ((fbbits = setbits(optarg, 8)) > 64 || fbbits == 0)
- err(-1, "-o: number must be 1-64 inclusive");
- else if (fbbits == -1)
- err(-1, "-o: number must be a multiple of 8");
- break;
- case 'p': /* preserve parity bits */
- pflag = 1;
- break;
- case 'v': /* set initialization vector */
- cvtkey(BUFFER(ivec), optarg);
- break;
- default: /* error */
- usage();
- }
-
- if (!kflag) {
- /*
- * if the key's not ASCII, assume it is
- */
- keybase = KEY_ASCII;
- /*
- * get the key
- */
- p = getpass("Enter key: ");
- /*
- * copy it, nul-padded, into the key area
- */
- cvtkey(BUFFER(msgbuf), p);
- }
-
- makekey(msgbuf);
- inverse = (alg == ALG_CBC || alg == ALG_ECB) && mode == MODE_DECRYPT;
-
- switch(alg) {
- case ALG_CBC:
- switch(mode) {
- case MODE_AUTHENTICATE: /* authenticate using CBC mode */
- cbcauth();
- break;
- case MODE_DECRYPT: /* decrypt using CBC mode */
- cbcdec();
- break;
- case MODE_ENCRYPT: /* encrypt using CBC mode */
- cbcenc();
- break;
- }
- break;
- case ALG_CFB:
- switch(mode) {
- case MODE_AUTHENTICATE: /* authenticate using CFB mode */
- cfbauth();
- break;
- case MODE_DECRYPT: /* decrypt using CFB mode */
- cfbdec();
- break;
- case MODE_ENCRYPT: /* encrypt using CFB mode */
- cfbenc();
- break;
- }
- break;
- case ALG_CFBA:
- switch(mode) {
- case MODE_AUTHENTICATE: /* authenticate using CFBA mode */
- err(-1, "can't authenticate with CFBA mode");
- break;
- case MODE_DECRYPT: /* decrypt using CFBA mode */
- cfbadec();
- break;
- case MODE_ENCRYPT: /* encrypt using CFBA mode */
- cfbaenc();
- break;
- }
- break;
- case ALG_ECB:
- switch(mode) {
- case MODE_AUTHENTICATE: /* authenticate using ECB mode */
- err(-1, "can't authenticate with ECB mode");
- break;
- case MODE_DECRYPT: /* decrypt using ECB mode */
- ecbdec();
- break;
- case MODE_ENCRYPT: /* encrypt using ECB mode */
- ecbenc();
- break;
- }
- break;
- case ALG_OFB:
- switch(mode) {
- case MODE_AUTHENTICATE: /* authenticate using OFB mode */
- err(-1, "can't authenticate with OFB mode");
- break;
- case MODE_DECRYPT: /* decrypt using OFB mode */
- ofbdec();
- break;
- case MODE_ENCRYPT: /* encrypt using OFB mode */
- ofbenc();
- break;
- }
- break;
- }
- exit(0);
-}
-
-/*
- * print a warning message and, possibly, terminate
- */
-err(n, s)
- int n; /* offending block number */
- char *s; /* the message */
-{
- if (n > 0)
- (void)fprintf(stderr, "bdes (block %d): ", n);
- else
- (void)fprintf(stderr, "bdes: ");
- (void)fprintf(stderr, "%s\n", s ? s : strerror(errno));
- exit(1);
-}
-
-/*
- * map a hex character to an integer
- */
-tobinhex(c, radix)
- char c; /* char to be converted */
- int radix; /* base (2 to 16) */
-{
- switch(c) {
- case '0': return(0x0);
- case '1': return(0x1);
- case '2': return(radix > 2 ? 0x2 : -1);
- case '3': return(radix > 3 ? 0x3 : -1);
- case '4': return(radix > 4 ? 0x4 : -1);
- case '5': return(radix > 5 ? 0x5 : -1);
- case '6': return(radix > 6 ? 0x6 : -1);
- case '7': return(radix > 7 ? 0x7 : -1);
- case '8': return(radix > 8 ? 0x8 : -1);
- case '9': return(radix > 9 ? 0x9 : -1);
- case 'A': case 'a': return(radix > 10 ? 0xa : -1);
- case 'B': case 'b': return(radix > 11 ? 0xb : -1);
- case 'C': case 'c': return(radix > 12 ? 0xc : -1);
- case 'D': case 'd': return(radix > 13 ? 0xd : -1);
- case 'E': case 'e': return(radix > 14 ? 0xe : -1);
- case 'F': case 'f': return(radix > 15 ? 0xf : -1);
- }
- /*
- * invalid character
- */
- return(-1);
-}
-
-/*
- * convert the key to a bit pattern
- */
-cvtkey(obuf, ibuf)
- char *obuf; /* bit pattern */
- char *ibuf; /* the key itself */
-{
- register int i, j; /* counter in a for loop */
- int nbuf[64]; /* used for hex/key translation */
-
- /*
- * just switch on the key base
- */
- switch(keybase) {
- case KEY_ASCII: /* ascii to integer */
- (void)strncpy(obuf, ibuf, 8);
- return;
- case KEY_DEFAULT: /* tell from context */
- /*
- * leading '0x' or '0X' == hex key
- */
- if (ibuf[0] == '0' && (ibuf[1] == 'x' || ibuf[1] == 'X')) {
- ibuf = &ibuf[2];
- /*
- * now translate it, bombing on any illegal hex digit
- */
- for (i = 0; ibuf[i] && i < 16; i++)
- if ((nbuf[i] = tobinhex(ibuf[i], 16)) == -1)
- err(-1, "bad hex digit in key");
- while (i < 16)
- nbuf[i++] = 0;
- for (i = 0; i < 8; i++)
- obuf[i] =
- ((nbuf[2*i]&0xf)<<4) | (nbuf[2*i+1]&0xf);
- /* preserve parity bits */
- pflag = 1;
- return;
- }
- /*
- * leading '0b' or '0B' == binary key
- */
- if (ibuf[0] == '0' && (ibuf[1] == 'b' || ibuf[1] == 'B')) {
- ibuf = &ibuf[2];
- /*
- * now translate it, bombing on any illegal binary digit
- */
- for (i = 0; ibuf[i] && i < 16; i++)
- if ((nbuf[i] = tobinhex(ibuf[i], 2)) == -1)
- err(-1, "bad binary digit in key");
- while (i < 64)
- nbuf[i++] = 0;
- for (i = 0; i < 8; i++)
- for (j = 0; j < 8; j++)
- obuf[i] = (obuf[i]<<1)|nbuf[8*i+j];
- /* preserve parity bits */
- pflag = 1;
- return;
- }
- /*
- * no special leader -- ASCII
- */
- (void)strncpy(obuf, ibuf, 8);
- }
-}
-
-/*
- * convert an ASCII string into a decimal number:
- * 1. must be between 0 and 64 inclusive
- * 2. must be a valid decimal number
- * 3. must be a multiple of mult
- */
-setbits(s, mult)
- char *s; /* the ASCII string */
- int mult; /* what it must be a multiple of */
-{
- register char *p; /* pointer in a for loop */
- register int n = 0; /* the integer collected */
-
- /*
- * skip white space
- */
- while (isspace(*s))
- s++;
- /*
- * get the integer
- */
- for (p = s; *p; p++) {
- if (isdigit(*p))
- n = n * 10 + *p - '0';
- else {
- err(-1, "bad decimal digit in MAC length");
- }
- }
- /*
- * be sure it's a multiple of mult
- */
- return((n % mult != 0) ? -1 : n);
-}
-
-/*****************
- * DES FUNCTIONS *
- *****************/
-/*
- * This sets the DES key and (if you're using the deszip version)
- * the direction of the transformation. This uses the Sun
- * to map the 64-bit key onto the 56 bits that the key schedule
- * generation routines use: the old way, which just uses the user-
- * supplied 64 bits as is, and the new way, which resets the parity
- * bit to be the same as the low-order bit in each character. The
- * new way generates a greater variety of key schedules, since many
- * systems set the parity (high) bit of each character to 0, and the
- * DES ignores the low order bit of each character.
- */
-makekey(buf)
- Desbuf buf; /* key block */
-{
- register int i, j; /* counter in a for loop */
- register int par; /* parity counter */
-
- /*
- * if the parity is not preserved, flip it
- */
- if (!pflag) {
- for (i = 0; i < 8; i++) {
- par = 0;
- for (j = 1; j < 8; j++)
- if ((bits[j]&UCHAR(buf, i)) != 0)
- par++;
- if ((par&01) == 01)
- UCHAR(buf, i) = UCHAR(buf, i)&0177;
- else
- UCHAR(buf, i) = (UCHAR(buf, i)&0177)|0200;
- }
- }
-
- DES_KEY(UBUFFER(buf));
-}
-
-/*
- * This encrypts using the Electronic Code Book mode of DES
- */
-ecbenc()
-{
- register int n; /* number of bytes actually read */
- register int bn; /* block number */
- Desbuf msgbuf; /* I/O buffer */
-
- for (bn = 0; (n = READ(BUFFER(msgbuf), 8)) == 8; bn++) {
- /*
- * do the transformation
- */
- DES_XFORM(UBUFFER(msgbuf));
- WRITE(BUFFER(msgbuf), 8);
- }
- /*
- * at EOF or last block -- in either ase, the last byte contains
- * the character representation of the number of bytes in it
- */
- bn++;
- MEMZERO(&CHAR(msgbuf, n), 8 - n);
- CHAR(msgbuf, 7) = n;
- DES_XFORM(UBUFFER(msgbuf));
- WRITE(BUFFER(msgbuf), 8);
-
-}
-
-/*
- * This decrypts using the Electronic Code Book mode of DES
- */
-ecbdec()
-{
- register int n; /* number of bytes actually read */
- register int c; /* used to test for EOF */
- register int bn; /* block number */
- Desbuf msgbuf; /* I/O buffer */
-
- for (bn = 1; (n = READ(BUFFER(msgbuf), 8)) == 8; bn++) {
- /*
- * do the transformation
- */
- DES_XFORM(UBUFFER(msgbuf));
- /*
- * if the last one, handle it specially
- */
- if ((c = getchar()) == EOF) {
- n = CHAR(msgbuf, 7);
- if (n < 0 || n > 7)
- err(bn, "decryption failed (block corrupted)");
- }
- else
- (void)ungetc(c, stdin);
- WRITE(BUFFER(msgbuf), n);
- }
- if (n > 0)
- err(bn, "decryption failed (incomplete block)");
-}
-
-/*
- * This encrypts using the Cipher Block Chaining mode of DES
- */
-cbcenc()
-{
- register int n; /* number of bytes actually read */
- register int bn; /* block number */
- Desbuf msgbuf; /* I/O buffer */
-
- /*
- * do the transformation
- */
- for (bn = 1; (n = READ(BUFFER(msgbuf), 8)) == 8; bn++) {
- for (n = 0; n < 8; n++)
- CHAR(msgbuf, n) ^= CHAR(ivec, n);
- DES_XFORM(UBUFFER(msgbuf));
- MEMCPY(BUFFER(ivec), BUFFER(msgbuf), 8);
- WRITE(BUFFER(msgbuf), 8);
- }
- /*
- * at EOF or last block -- in either case, the last byte contains
- * the character representation of the number of bytes in it
- */
- bn++;
- MEMZERO(&CHAR(msgbuf, n), 8 - n);
- CHAR(msgbuf, 7) = n;
- for (n = 0; n < 8; n++)
- CHAR(msgbuf, n) ^= CHAR(ivec, n);
- DES_XFORM(UBUFFER(msgbuf));
- WRITE(BUFFER(msgbuf), 8);
-
-}
-
-/*
- * This decrypts using the Cipher Block Chaining mode of DES
- */
-cbcdec()
-{
- register int n; /* number of bytes actually read */
- Desbuf msgbuf; /* I/O buffer */
- Desbuf ibuf; /* temp buffer for initialization vector */
- register int c; /* used to test for EOF */
- register int bn; /* block number */
-
- for (bn = 0; (n = READ(BUFFER(msgbuf), 8)) == 8; bn++) {
- /*
- * do the transformation
- */
- MEMCPY(BUFFER(ibuf), BUFFER(msgbuf), 8);
- DES_XFORM(UBUFFER(msgbuf));
- for (c = 0; c < 8; c++)
- UCHAR(msgbuf, c) ^= UCHAR(ivec, c);
- MEMCPY(BUFFER(ivec), BUFFER(ibuf), 8);
- /*
- * if the last one, handle it specially
- */
- if ((c = getchar()) == EOF) {
- n = CHAR(msgbuf, 7);
- if (n < 0 || n > 7)
- err(bn, "decryption failed (block corrupted)");
- }
- else
- (void)ungetc(c, stdin);
- WRITE(BUFFER(msgbuf), n);
- }
- if (n > 0)
- err(bn, "decryption failed (incomplete block)");
-}
-
-/*
- * This authenticates using the Cipher Block Chaining mode of DES
- */
-cbcauth()
-{
- register int n, j; /* number of bytes actually read */
- Desbuf msgbuf; /* I/O buffer */
- Desbuf encbuf; /* encryption buffer */
-
- /*
- * do the transformation
- * note we DISCARD the encrypted block;
- * we only care about the last one
- */
- while ((n = READ(BUFFER(msgbuf), 8)) == 8) {
- for (n = 0; n < 8; n++)
- CHAR(encbuf, n) = CHAR(msgbuf, n) ^ CHAR(ivec, n);
- DES_XFORM(UBUFFER(encbuf));
- MEMCPY(BUFFER(ivec), BUFFER(encbuf), 8);
- }
- /*
- * now compute the last one, right padding with '\0' if need be
- */
- if (n > 0) {
- MEMZERO(&CHAR(msgbuf, n), 8 - n);
- for (n = 0; n < 8; n++)
- CHAR(encbuf, n) = CHAR(msgbuf, n) ^ CHAR(ivec, n);
- DES_XFORM(UBUFFER(encbuf));
- }
- /*
- * drop the bits
- * we write chars until fewer than 7 bits,
- * and then pad the last one with 0 bits
- */
- for (n = 0; macbits > 7; n++, macbits -= 8)
- (void)putchar(CHAR(encbuf, n));
- if (macbits > 0) {
- CHAR(msgbuf, 0) = 0x00;
- for (j = 0; j < macbits; j++)
- CHAR(msgbuf, 0) |= (CHAR(encbuf, n)&bits[j]);
- (void)putchar(CHAR(msgbuf, 0));
- }
-}
-
-/*
- * This encrypts using the Cipher FeedBack mode of DES
- */
-cfbenc()
-{
- register int n; /* number of bytes actually read */
- register int nbytes; /* number of bytes to read */
- register int bn; /* block number */
- char ibuf[8]; /* input buffer */
- Desbuf msgbuf; /* encryption buffer */
-
- /*
- * do things in bytes, not bits
- */
- nbytes = fbbits / 8;
- /*
- * do the transformation
- */
- for (bn = 1; (n = READ(ibuf, nbytes)) == nbytes; bn++) {
- MEMCPY(BUFFER(msgbuf), BUFFER(ivec), 8);
- DES_XFORM(UBUFFER(msgbuf));
- for (n = 0; n < 8 - nbytes; n++)
- UCHAR(ivec, n) = UCHAR(ivec, n+nbytes);
- for (n = 0; n < nbytes; n++)
- UCHAR(ivec, 8-nbytes+n) = ibuf[n] ^ UCHAR(msgbuf, n);
- WRITE(&CHAR(ivec, 8-nbytes), nbytes);
- }
- /*
- * at EOF or last block -- in either case, the last byte contains
- * the character representation of the number of bytes in it
- */
- bn++;
- MEMZERO(&ibuf[n], nbytes - n);
- ibuf[nbytes - 1] = n;
- MEMCPY(BUFFER(msgbuf), BUFFER(ivec), 8);
- DES_XFORM(UBUFFER(msgbuf));
- for (n = 0; n < nbytes; n++)
- ibuf[n] ^= UCHAR(msgbuf, n);
- WRITE(ibuf, nbytes);
-}
-
-/*
- * This decrypts using the Cipher Block Chaining mode of DES
- */
-cfbdec()
-{
- register int n; /* number of bytes actually read */
- register int c; /* used to test for EOF */
- register int nbytes; /* number of bytes to read */
- register int bn; /* block number */
- char ibuf[8]; /* input buffer */
- char obuf[8]; /* output buffer */
- Desbuf msgbuf; /* encryption buffer */
-
- /*
- * do things in bytes, not bits
- */
- nbytes = fbbits / 8;
- /*
- * do the transformation
- */
- for (bn = 1; (n = READ(ibuf, nbytes)) == nbytes; bn++) {
- MEMCPY(BUFFER(msgbuf), BUFFER(ivec), 8);
- DES_XFORM(UBUFFER(msgbuf));
- for (c = 0; c < 8 - nbytes; c++)
- CHAR(ivec, c) = CHAR(ivec, c+nbytes);
- for (c = 0; c < nbytes; c++) {
- CHAR(ivec, 8-nbytes+c) = ibuf[c];
- obuf[c] = ibuf[c] ^ UCHAR(msgbuf, c);
- }
- /*
- * if the last one, handle it specially
- */
- if ((c = getchar()) == EOF) {
- n = obuf[nbytes-1];
- if (n < 0 || n > nbytes-1)
- err(bn, "decryption failed (block corrupted)");
- }
- else
- (void)ungetc(c, stdin);
- WRITE(obuf, n);
- }
- if (n > 0)
- err(bn, "decryption failed (incomplete block)");
-}
-
-/*
- * This encrypts using the alternative Cipher FeedBack mode of DES
- */
-cfbaenc()
-{
- register int n; /* number of bytes actually read */
- register int nbytes; /* number of bytes to read */
- register int bn; /* block number */
- char ibuf[8]; /* input buffer */
- char obuf[8]; /* output buffer */
- Desbuf msgbuf; /* encryption buffer */
-
- /*
- * do things in bytes, not bits
- */
- nbytes = fbbits / 7;
- /*
- * do the transformation
- */
- for (bn = 1; (n = READ(ibuf, nbytes)) == nbytes; bn++) {
- MEMCPY(BUFFER(msgbuf), BUFFER(ivec), 8);
- DES_XFORM(UBUFFER(msgbuf));
- for (n = 0; n < 8 - nbytes; n++)
- UCHAR(ivec, n) = UCHAR(ivec, n+nbytes);
- for (n = 0; n < nbytes; n++)
- UCHAR(ivec, 8-nbytes+n) = (ibuf[n] ^ UCHAR(msgbuf, n))
- |0200;
- for (n = 0; n < nbytes; n++)
- obuf[n] = CHAR(ivec, 8-nbytes+n)&0177;
- WRITE(obuf, nbytes);
- }
- /*
- * at EOF or last block -- in either case, the last byte contains
- * the character representation of the number of bytes in it
- */
- bn++;
- MEMZERO(&ibuf[n], nbytes - n);
- ibuf[nbytes - 1] = ('0' + n)|0200;
- MEMCPY(BUFFER(msgbuf), BUFFER(ivec), 8);
- DES_XFORM(UBUFFER(msgbuf));
- for (n = 0; n < nbytes; n++)
- ibuf[n] ^= UCHAR(msgbuf, n);
- WRITE(ibuf, nbytes);
-}
-
-/*
- * This decrypts using the alternative Cipher Block Chaining mode of DES
- */
-cfbadec()
-{
- register int n; /* number of bytes actually read */
- register int c; /* used to test for EOF */
- register int nbytes; /* number of bytes to read */
- register int bn; /* block number */
- char ibuf[8]; /* input buffer */
- char obuf[8]; /* output buffer */
- Desbuf msgbuf; /* encryption buffer */
-
- /*
- * do things in bytes, not bits
- */
- nbytes = fbbits / 7;
- /*
- * do the transformation
- */
- for (bn = 1; (n = READ(ibuf, nbytes)) == nbytes; bn++) {
- MEMCPY(BUFFER(msgbuf), BUFFER(ivec), 8);
- DES_XFORM(UBUFFER(msgbuf));
- for (c = 0; c < 8 - nbytes; c++)
- CHAR(ivec, c) = CHAR(ivec, c+nbytes);
- for (c = 0; c < nbytes; c++) {
- CHAR(ivec, 8-nbytes+c) = ibuf[c]|0200;
- obuf[c] = (ibuf[c] ^ UCHAR(msgbuf, c))&0177;
- }
- /*
- * if the last one, handle it specially
- */
- if ((c = getchar()) == EOF) {
- if ((n = (obuf[nbytes-1] - '0')) < 0
- || n > nbytes-1)
- err(bn, "decryption failed (block corrupted)");
- }
- else
- (void)ungetc(c, stdin);
- WRITE(obuf, n);
- }
- if (n > 0)
- err(bn, "decryption failed (incomplete block)");
-}
-
-
-/*
- * This encrypts using the Output FeedBack mode of DES
- */
-ofbenc()
-{
- register int n; /* number of bytes actually read */
- register int c; /* used to test for EOF */
- register int nbytes; /* number of bytes to read */
- register int bn; /* block number */
- char ibuf[8]; /* input buffer */
- char obuf[8]; /* output buffer */
- Desbuf msgbuf; /* encryption buffer */
-
- /*
- * do things in bytes, not bits
- */
- nbytes = fbbits / 8;
- /*
- * do the transformation
- */
- for (bn = 1; (n = READ(ibuf, nbytes)) == nbytes; bn++) {
- MEMCPY(BUFFER(msgbuf), BUFFER(ivec), 8);
- DES_XFORM(UBUFFER(msgbuf));
- for (n = 0; n < 8 - nbytes; n++)
- UCHAR(ivec, n) = UCHAR(ivec, n+nbytes);
- for (n = 0; n < nbytes; n++) {
- UCHAR(ivec, 8-nbytes+n) = UCHAR(msgbuf, n);
- obuf[n] = ibuf[n] ^ UCHAR(msgbuf, n);
- }
- WRITE(obuf, nbytes);
- }
- /*
- * at EOF or last block -- in either case, the last byte contains
- * the character representation of the number of bytes in it
- */
- bn++;
- MEMZERO(&ibuf[n], nbytes - n);
- ibuf[nbytes - 1] = n;
- MEMCPY(BUFFER(msgbuf), BUFFER(ivec), 8);
- DES_XFORM(UBUFFER(msgbuf));
- for (c = 0; c < nbytes; c++)
- ibuf[c] ^= UCHAR(msgbuf, c);
- WRITE(ibuf, nbytes);
-}
-
-/*
- * This decrypts using the Output Block Chaining mode of DES
- */
-ofbdec()
-{
- register int n; /* number of bytes actually read */
- register int c; /* used to test for EOF */
- register int nbytes; /* number of bytes to read */
- register int bn; /* block number */
- char ibuf[8]; /* input buffer */
- char obuf[8]; /* output buffer */
- Desbuf msgbuf; /* encryption buffer */
-
- /*
- * do things in bytes, not bits
- */
- nbytes = fbbits / 8;
- /*
- * do the transformation
- */
- for (bn = 1; (n = READ(ibuf, nbytes)) == nbytes; bn++) {
- MEMCPY(BUFFER(msgbuf), BUFFER(ivec), 8);
- DES_XFORM(UBUFFER(msgbuf));
- for (c = 0; c < 8 - nbytes; c++)
- CHAR(ivec, c) = CHAR(ivec, c+nbytes);
- for (c = 0; c < nbytes; c++) {
- CHAR(ivec, 8-nbytes+c) = UCHAR(msgbuf, c);
- obuf[c] = ibuf[c] ^ UCHAR(msgbuf, c);
- }
- /*
- * if the last one, handle it specially
- */
- if ((c = getchar()) == EOF) {
- n = obuf[nbytes-1];
- if (n < 0 || n > nbytes-1)
- err(bn, "decryption failed (block corrupted)");
- }
- else
- (void)ungetc(c, stdin);
- /*
- * dump it
- */
- WRITE(obuf, n);
- }
- if (n > 0)
- err(bn, "decryption failed (incomplete block)");
-}
-
-/*
- * This authenticates using the Cipher FeedBack mode of DES
- */
-cfbauth()
-{
- register int n, j; /* number of bytes actually read */
- register int nbytes; /* number of bytes to read */
- char ibuf[8]; /* input buffer */
- Desbuf msgbuf; /* encryption buffer */
-
- /*
- * do things in bytes, not bits
- */
- nbytes = fbbits / 8;
- /*
- * do the transformation
- */
- while ((n = READ(ibuf, nbytes)) == nbytes) {
- MEMCPY(BUFFER(msgbuf), BUFFER(ivec), 8);
- DES_XFORM(UBUFFER(msgbuf));
- for (n = 0; n < 8 - nbytes; n++)
- UCHAR(ivec, n) = UCHAR(ivec, n+nbytes);
- for (n = 0; n < nbytes; n++)
- UCHAR(ivec, 8-nbytes+n) = ibuf[n] ^ UCHAR(msgbuf, n);
- }
- /*
- * at EOF or last block -- in either case, the last byte contains
- * the character representation of the number of bytes in it
- */
- MEMZERO(&ibuf[n], nbytes - n);
- ibuf[nbytes - 1] = '0' + n;
- MEMCPY(BUFFER(msgbuf), BUFFER(ivec), 8);
- DES_XFORM(UBUFFER(msgbuf));
- for (n = 0; n < nbytes; n++)
- ibuf[n] ^= UCHAR(msgbuf, n);
- /*
- * drop the bits
- * we write chars until fewer than 7 bits,
- * and then pad the last one with 0 bits
- */
- for (n = 0; macbits > 7; n++, macbits -= 8)
- (void)putchar(CHAR(msgbuf, n));
- if (macbits > 0) {
- CHAR(msgbuf, 0) = 0x00;
- for (j = 0; j < macbits; j++)
- CHAR(msgbuf, 0) |= (CHAR(msgbuf, n)&bits[j]);
- (void)putchar(CHAR(msgbuf, 0));
- }
-}
-
-#ifndef FASTWAY
-/*
- * change from 8 bits/Uchar to 1 bit/Uchar
- */
-expand(from, to)
- Desbuf from; /* 8bit/unsigned char string */
- char *to; /* 1bit/char string */
-{
- register int i, j; /* counters in for loop */
-
- for (i = 0; i < 8; i++)
- for (j = 0; j < 8; j++)
- *to++ = (CHAR(from, i)>>(7-j))&01;
-}
-
-/*
- * change from 1 bit/char to 8 bits/Uchar
- */
-compress(from, to)
- char *from; /* 1bit/char string */
- Desbuf to; /* 8bit/unsigned char string */
-{
- register int i, j; /* counters in for loop */
-
- for (i = 0; i < 8; i++) {
- CHAR(to, i) = 0;
- for (j = 0; j < 8; j++)
- CHAR(to, i) = ((*from++)<<(7-j))|CHAR(to, i);
- }
-}
-#endif
-
-/*
- * message about usage
- */
-usage()
-{
- (void)fprintf(stderr, "%s\n",
-"usage: bdes [-abdp] [-F bit] [-f bit] [-k key] [-m bit] [-o bit] [-v vector]");
- exit(1);
-}
diff --git a/secure/usr.bin/bdes/bdes.ps b/secure/usr.bin/bdes/bdes.ps
deleted file mode 100644
index 471c267af751..000000000000
--- a/secure/usr.bin/bdes/bdes.ps
+++ /dev/null
@@ -1,2945 +0,0 @@
-%!
-%%BoundingBox: (atend)
-%%Pages: (atend)
-%%DocumentFonts: (atend)
-%%EndComments
-%
-% FrameMaker PostScript Prolog 2.0, for use with FrameMaker 2.0
-% Copyright (c) 1986,87,89 by Frame Technology, Inc. All rights reserved.
-%
-% Known Problems:
-% Due to bugs in Transcript, the 'PS-Adobe-' is omitted from line 1
-/FMversion (2.0) def
-% Set up Color vs. Black-and-White
- /FMPrintInColor systemdict /colorimage known def
-% Uncomment this line to force b&w on color printer
-% /FMPrintInColor false def
-/FrameDict 190 dict def
-systemdict /errordict known not {/errordict 10 dict def
- errordict /rangecheck {stop} put} if
-% The readline in 23.0 doesn't recognize cr's as nl's on AppleTalk
-FrameDict /tmprangecheck errordict /rangecheck get put
-errordict /rangecheck {FrameDict /bug true put} put
-FrameDict /bug false put
-mark
-% Some PS machines read past the CR, so keep the following 3 lines together!
-currentfile 5 string readline
-00
-0000000000
-cleartomark
-errordict /rangecheck FrameDict /tmprangecheck get put
-FrameDict /bug get {
- /readline {
- /gstring exch def
- /gfile exch def
- /gindex 0 def
- {
- gfile read pop
- dup 10 eq {exit} if
- dup 13 eq {exit} if
- gstring exch gindex exch put
- /gindex gindex 1 add def
- } loop
- pop
- gstring 0 gindex getinterval true
- } def
- } if
-/FMVERSION {
- FMversion ne {
- /Times-Roman findfont 18 scalefont setfont
- 100 100 moveto
- (FrameMaker version does not match postscript_prolog!)
- dup =
- show showpage
- } if
- } def
-/FMLOCAL {
- FrameDict begin
- 0 def
- end
- } def
- /gstring FMLOCAL
- /gfile FMLOCAL
- /gindex FMLOCAL
- /orgxfer FMLOCAL
- /orgproc FMLOCAL
- /organgle FMLOCAL
- /orgfreq FMLOCAL
- /yscale FMLOCAL
- /xscale FMLOCAL
- /manualfeed FMLOCAL
- /paperheight FMLOCAL
- /paperwidth FMLOCAL
-/FMDOCUMENT {
- array /FMfonts exch def
- /#copies exch def
- FrameDict begin
- 0 ne dup {setmanualfeed} if
- /manualfeed exch def
- /paperheight exch def
- /paperwidth exch def
- setpapername
- manualfeed {true} {papersize} ifelse
- {manualpapersize} {false} ifelse
- {desperatepapersize} if
- /yscale exch def
- /xscale exch def
- currenttransfer cvlit /orgxfer exch def
- currentscreen cvlit /orgproc exch def
- /organgle exch def /orgfreq exch def
- end
- } def
- /pagesave FMLOCAL
- /orgmatrix FMLOCAL
- /landscape FMLOCAL
-/FMBEGINPAGE {
- FrameDict begin
- /pagesave save def
- 3.86 setmiterlimit
- /landscape exch 0 ne def
- landscape {
- 90 rotate 0 exch neg translate pop
- }
- {pop pop}
- ifelse
- xscale yscale scale
- /orgmatrix matrix def
- gsave
- } def
-/FMENDPAGE {
- grestore
- pagesave restore
- end
- showpage
- } def
-/FMDEFINEFONT {
- FrameDict begin
- findfont
- ReEncode
- 2 index exch
- definefont exch
- scalefont
- FMfonts 3 1 roll
- put
- end
- } bind def
-/FMNORMALIZEGRAPHICS {
- newpath
- 0.0 0.0 moveto
- 1 setlinewidth
- 0 setlinecap
- 0 0 0 sethsbcolor
- 0 setgray
- } bind def
- /fx FMLOCAL
- /fy FMLOCAL
- /fh FMLOCAL
- /fw FMLOCAL
- /llx FMLOCAL
- /lly FMLOCAL
- /urx FMLOCAL
- /ury FMLOCAL
-/FMBEGINEPSF {
- end
- /FMEPSF save def
- /showpage {} def
- FMNORMALIZEGRAPHICS
- [/fy /fx /fh /fw /ury /urx /lly /llx] {exch def} forall
- fx fy translate
- rotate
- fw urx llx sub div fh ury lly sub div scale
- llx neg lly neg translate
- } bind def
-/FMENDEPSF {
- FMEPSF restore
- FrameDict begin
- } bind def
-FrameDict begin
-/setmanualfeed {
-%%BeginFeature *ManualFeed True
- statusdict /manualfeed true put
-%%EndFeature
- } def
-/max {2 copy lt {exch} if pop} bind def
-/min {2 copy gt {exch} if pop} bind def
-/inch {72 mul} def
-/pagedimen {
- paperheight sub abs 16 lt exch
- paperwidth sub abs 16 lt and
- {/papername exch def} {pop} ifelse
- } def
- /papersizedict FMLOCAL
-/setpapername {
- /papersizedict 14 dict def
- papersizedict begin
- /papername /unknown def
- /Letter 8.5 inch 11.0 inch pagedimen
- /LetterSmall 7.68 inch 10.16 inch pagedimen
- /Tabloid 11.0 inch 17.0 inch pagedimen
- /Ledger 17.0 inch 11.0 inch pagedimen
- /Legal 8.5 inch 14.0 inch pagedimen
- /Statement 5.5 inch 8.5 inch pagedimen
- /Executive 7.5 inch 10.0 inch pagedimen
- /A3 11.69 inch 16.5 inch pagedimen
- /A4 8.26 inch 11.69 inch pagedimen
- /A4Small 7.47 inch 10.85 inch pagedimen
- /B4 10.125 inch 14.33 inch pagedimen
- /B5 7.16 inch 10.125 inch pagedimen
- end
- } def
-/papersize {
- papersizedict begin
- /Letter {lettertray} def
- /LetterSmall {lettertray lettersmall} def
- /Tabloid {11x17tray} def
- /Ledger {ledgertray} def
- /Legal {legaltray} def
- /Statement {statementtray} def
- /Executive {executivetray} def
- /A3 {a3tray} def
- /A4 {a4tray} def
- /A4Small {a4tray a4small} def
- /B4 {b4tray} def
- /B5 {b5tray} def
- /unknown {unknown} def
- papersizedict dup papername known {papername} {/unknown} ifelse get
- end
- /FMdicttop countdictstack 1 add def
- statusdict begin stopped end
- countdictstack -1 FMdicttop {pop end} for
- } def
-/manualpapersize {
- papersizedict begin
- /Letter {letter} def
- /LetterSmall {lettersmall} def
- /Tabloid {11x17} def
- /Ledger {ledger} def
- /Legal {legal} def
- /Statement {statement} def
- /Executive {executive} def
- /A3 {a3} def
- /A4 {a4} def
- /A4Small {a4small} def
- /B4 {b4} def
- /B5 {b5} def
- /unknown {unknown} def
- papersizedict dup papername known {papername} {/unknown} ifelse get
- end
- stopped
- } def
-/desperatepapersize {
- statusdict /setpageparams known
- {
- paperwidth paperheight 0 1
- statusdict begin
- {setpageparams} stopped pop
- end
- } if
- } def
-/savematrix {
- orgmatrix currentmatrix pop
- } bind def
-/restorematrix {
- orgmatrix setmatrix
- } bind def
-/dmatrix matrix def
-/dpi 72 0 dmatrix defaultmatrix dtransform
- dup mul exch dup mul add sqrt def
-/freq dpi 18.75 div 8 div round dup 0 eq {pop 1} if 8 mul dpi exch div def
-/sangle 1 0 dmatrix defaultmatrix dtransform exch atan def
-/DiacriticEncoding [
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl
-/numbersign /dollar /percent /ampersand /quotesingle /parenleft
-/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
-/two /three /four /five /six /seven /eight /nine /colon /semicolon
-/less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K
-/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash
-/bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h
-/i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar
-/braceright /asciitilde /.notdef /Adieresis /Aring /Ccedilla /Eacute
-/Ntilde /Odieresis /Udieresis /aacute /agrave /acircumflex /adieresis
-/atilde /aring /ccedilla /eacute /egrave /ecircumflex /edieresis
-/iacute /igrave /icircumflex /idieresis /ntilde /oacute /ograve
-/ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex
-/udieresis /dagger /.notdef /cent /sterling /section /bullet
-/paragraph /germandbls /registered /copyright /trademark /acute
-/dieresis /.notdef /AE /Oslash /.notdef /.notdef /.notdef /.notdef
-/yen /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/ordfeminine /ordmasculine /.notdef /ae /oslash /questiondown
-/exclamdown /logicalnot /.notdef /florin /.notdef /.notdef
-/guillemotleft /guillemotright /ellipsis /.notdef /Agrave /Atilde
-/Otilde /OE /oe /endash /emdash /quotedblleft /quotedblright
-/quoteleft /quoteright /.notdef /.notdef /ydieresis /Ydieresis
-/fraction /currency /guilsinglleft /guilsinglright /fi /fl /daggerdbl
-/periodcentered /quotesinglbase /quotedblbase /perthousand
-/Acircumflex /Ecircumflex /Aacute /Edieresis /Egrave /Iacute
-/Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex /.notdef /Ograve
-/Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde /macron
-/breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron
-] def
-/ReEncode {
- dup
- length
- dict begin
- {
- 1 index /FID ne
- {def}
- {pop pop} ifelse
- } forall
- Encoding StandardEncoding eq
- {
- /Encoding DiacriticEncoding def
- }if
- currentdict
- end
- } bind def
-/graymode true def
- /bwidth FMLOCAL
- /bpside FMLOCAL
- /bstring FMLOCAL
- /onbits FMLOCAL
- /offbits FMLOCAL
- /xindex FMLOCAL
- /yindex FMLOCAL
- /x FMLOCAL
- /y FMLOCAL
-/setpattern {
- /bwidth exch def
- /bpside exch def
- /bstring exch def
- /onbits 0 def /offbits 0 def
- freq sangle landscape {90 add} if
- {/y exch def
- /x exch def
- /xindex x 1 add 2 div bpside mul cvi def
- /yindex y 1 add 2 div bpside mul cvi def
- bstring yindex bwidth mul xindex 8 idiv add get
- 1 7 xindex 8 mod sub bitshift and 0 ne
- {/onbits onbits 1 add def 1}
- {/offbits offbits 1 add def 0}
- ifelse
- }
- setscreen
- {} settransfer
- offbits offbits onbits add div FMsetgray
- /graymode false def
- } bind def
-/grayness {
- FMsetgray
- graymode not {
- /graymode true def
- orgxfer cvx settransfer
- orgfreq organgle orgproc cvx setscreen
- } if
- } bind def
- /HUE FMLOCAL
- /SAT FMLOCAL
- /BRIGHT FMLOCAL
- /Colors FMLOCAL
-FMPrintInColor
-
- {
- /HUE 0 def
- /SAT 0 def
- /BRIGHT 0 def
- % array of arrays Hue and Sat values for the separations [HUE BRIGHT]
- /Colors
- [[0 0 ] % black
- [0 0 ] % white
- [0.00 1.0] % red
- [0.37 1.0] % green
- [0.60 1.0] % blue
- [0.50 1.0] % cyan
- [0.83 1.0] % magenta
- [0.16 1.0] % comment / yellow
- ] def
-
- /BEGINBITMAPCOLOR {
- BITMAPCOLOR} def
- /BEGINBITMAPCOLORc {
- BITMAPCOLORc} def
- /K {
- Colors exch get dup
- 0 get /HUE exch store
- 1 get /BRIGHT exch store
- HUE 0 eq BRIGHT 0 eq and
- {1.0 SAT sub setgray}
- {HUE SAT BRIGHT sethsbcolor}
- ifelse
- } def
- /FMsetgray {
- /SAT exch 1.0 exch sub store
- HUE 0 eq BRIGHT 0 eq and
- {1.0 SAT sub setgray}
- {HUE SAT BRIGHT sethsbcolor}
- ifelse
- } bind def
- }
-
- {
- /BEGINBITMAPCOLOR {
- BITMAPGRAY} def
- /BEGINBITMAPCOLORc {
- BITMAPGRAYc} def
- /FMsetgray {setgray} bind def
- /K {
- pop
- } def
- }
-ifelse
-/normalize {
- transform round exch round exch itransform
- } bind def
-/dnormalize {
- dtransform round exch round exch idtransform
- } bind def
-/lnormalize {
- 0 dtransform exch cvi 2 idiv 2 mul 1 add exch idtransform pop
- } bind def
-/H {
- lnormalize setlinewidth
- } bind def
-/Z {
- setlinecap
- } bind def
-/X {
- fillprocs exch get exec
- } bind def
-/V {
- gsave eofill grestore
- } bind def
-/N {
- stroke
- } bind def
-/M {newpath moveto} bind def
-/E {lineto} bind def
-/D {curveto} bind def
-/O {closepath} bind def
- /n FMLOCAL
-/L {
- /n exch def
- newpath
- normalize
- moveto
- 2 1 n {pop normalize lineto} for
- } bind def
-/Y {
- L
- closepath
- } bind def
- /x1 FMLOCAL
- /x2 FMLOCAL
- /y1 FMLOCAL
- /y2 FMLOCAL
- /rad FMLOCAL
-/R {
- /y2 exch def
- /x2 exch def
- /y1 exch def
- /x1 exch def
- x1 y1
- x2 y1
- x2 y2
- x1 y2
- 4 Y
- } bind def
-/RR {
- /rad exch def
- normalize
- /y2 exch def
- /x2 exch def
- normalize
- /y1 exch def
- /x1 exch def
- newpath
- x1 y1 rad add moveto
- x1 y2 x2 y2 rad arcto
- x2 y2 x2 y1 rad arcto
- x2 y1 x1 y1 rad arcto
- x1 y1 x1 y2 rad arcto
- closepath
- 16 {pop} repeat
- } bind def
-/C {
- grestore
- gsave
- R
- clip
- } bind def
-/U {
- grestore
- gsave
- } bind def
-/F {
- FMfonts exch get
- setfont
- } bind def
-/T {
- moveto show
- } bind def
-/RF {
- rotate
- 0 ne {-1 1 scale} if
- } bind def
-/TF {
- gsave
- moveto
- RF
- show
- grestore
- } bind def
-/P {
- moveto
- 0 32 3 2 roll widthshow
- } bind def
-/PF {
- gsave
- moveto
- RF
- 0 32 3 2 roll widthshow
- grestore
- } bind def
-/S {
- moveto
- 0 exch ashow
- } bind def
-/SF {
- gsave
- moveto
- RF
- 0 exch ashow
- grestore
- } bind def
-/B {
- moveto
- 0 32 4 2 roll 0 exch awidthshow
- } bind def
-/BF {
- gsave
- moveto
- RF
- 0 32 4 2 roll 0 exch awidthshow
- grestore
- } bind def
- /x FMLOCAL
- /y FMLOCAL
- /dx FMLOCAL
- /dy FMLOCAL
- /dl FMLOCAL
- /t FMLOCAL
- /t2 FMLOCAL
- /Cos FMLOCAL
- /Sin FMLOCAL
- /r FMLOCAL
-/W {
- dnormalize
- /dy exch def
- /dx exch def
- normalize
- /y exch def
- /x exch def
- /dl dx dx mul dy dy mul add sqrt def
- dl 0.0 gt {
- /t currentlinewidth def
- savematrix
- /Cos dx dl div def
- /Sin dy dl div def
- /r [Cos Sin Sin neg Cos 0.0 0.0] def
- /t2 t 2.5 mul 3.5 max def
- newpath
- x y translate
- r concat
- 0.0 0.0 moveto
- dl t 2.7 mul sub 0.0 rlineto
- stroke
- restorematrix
- x dx add y dy add translate
- r concat
- t 0.67 mul setlinewidth
- t 1.61 mul neg 0.0 translate
- 0.0 0.0 moveto
- t2 1.7 mul neg t2 2.0 div moveto
- 0.0 0.0 lineto
- t2 1.7 mul neg t2 2.0 div neg lineto
- stroke
- t setlinewidth
- restorematrix
- } if
- } bind def
-/G {
- gsave
- newpath
- normalize translate 0.0 0.0 moveto
- dnormalize scale
- 0.0 0.0 1.0 5 3 roll arc
- closepath fill
- grestore
- } bind def
-/A {
- gsave
- savematrix
- newpath
- 2 index 2 div add exch 3 index 2 div sub exch
- normalize 2 index 2 div sub exch 3 index 2 div add exch
- translate
- scale
- 0.0 0.0 1.0 5 3 roll arc
- restorematrix
- stroke
- grestore
- } bind def
- /x FMLOCAL
- /y FMLOCAL
- /w FMLOCAL
- /h FMLOCAL
- /xx FMLOCAL
- /yy FMLOCAL
- /ww FMLOCAL
- /hh FMLOCAL
- /FMsaveobject FMLOCAL
- /FMoptop FMLOCAL
- /FMdicttop FMLOCAL
-/BEGINPRINTCODE {
- /FMdicttop countdictstack 1 add def
- /FMoptop count 4 sub def
- /FMsaveobject save def
- userdict begin
- /showpage {} def
- FMNORMALIZEGRAPHICS
- 3 index neg 3 index neg translate
- } bind def
-/ENDPRINTCODE {
- count -1 FMoptop {pop pop} for
- countdictstack -1 FMdicttop {pop end} for
- FMsaveobject restore
- } bind def
-/gn {
- 0
- { 46 mul
- cf read pop
- 32 sub
- dup 46 lt {exit} if
- 46 sub add
- } loop
- add
- } bind def
- /str FMLOCAL
-/cfs {
- /str sl string def
- 0 1 sl 1 sub {str exch val put} for
- str def
- } bind def
-/ic [
- 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223
- 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223
- 0
- {0 hx} {1 hx} {2 hx} {3 hx} {4 hx} {5 hx} {6 hx} {7 hx} {8 hx} {9 hx}
- {10 hx} {11 hx} {12 hx} {13 hx} {14 hx} {15 hx} {16 hx} {17 hx} {18 hx}
- {19 hx} {gn hx} {0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12}
- {13} {14} {15} {16} {17} {18} {19} {gn} {0 wh} {1 wh} {2 wh} {3 wh}
- {4 wh} {5 wh} {6 wh} {7 wh} {8 wh} {9 wh} {10 wh} {11 wh} {12 wh}
- {13 wh} {14 wh} {gn wh} {0 bl} {1 bl} {2 bl} {3 bl} {4 bl} {5 bl} {6 bl}
- {7 bl} {8 bl} {9 bl} {10 bl} {11 bl} {12 bl} {13 bl} {14 bl} {gn bl}
- {0 fl} {1 fl} {2 fl} {3 fl} {4 fl} {5 fl} {6 fl} {7 fl} {8 fl} {9 fl}
- {10 fl} {11 fl} {12 fl} {13 fl} {14 fl} {gn fl}
- ] def
- /sl FMLOCAL
- /val FMLOCAL
- /ws FMLOCAL
- /im FMLOCAL
- /bs FMLOCAL
- /cs FMLOCAL
- /len FMLOCAL
- /pos FMLOCAL
-/ms {
- /sl exch def
- /val 255 def
- /ws cfs
- /im cfs
- /val 0 def
- /bs cfs
- /cs cfs
- } bind def
-400 ms
-/ip {
- is
- 0
- cf cs readline pop
- { ic exch get exec
- add
- } forall
- pop
-
- } bind def
-/wh {
- /len exch def
- /pos exch def
- ws 0 len getinterval im pos len getinterval copy pop
- pos len
- } bind def
-/bl {
- /len exch def
- /pos exch def
- bs 0 len getinterval im pos len getinterval copy pop
- pos len
- } bind def
-/s1 1 string def
-/fl {
- /len exch def
- /pos exch def
- /val cf s1 readhexstring pop 0 get def
- pos 1 pos len add 1 sub {im exch val put} for
- pos len
- } bind def
-/hx {
- 3 copy getinterval
- cf exch readhexstring pop pop
- } bind def
- /h FMLOCAL
- /w FMLOCAL
- /d FMLOCAL
- /lb FMLOCAL
- /bitmapsave FMLOCAL
- /is FMLOCAL
- /cf FMLOCAL
-/wbytes {
- dup
- 8 eq {pop} {1 eq {7 add 8 idiv} {3 add 4 idiv} ifelse} ifelse
- } bind def
-/BEGINBITMAPBWc {
- 1 {} COMMONBITMAPc
- } bind def
-/BEGINBITMAPGRAYc {
- 8 {} COMMONBITMAPc
- } bind def
-/BEGINBITMAP2BITc {
- 2 {} COMMONBITMAPc
- } bind def
-/COMMONBITMAPc {
- /r exch def
- /d exch def
- gsave
- translate rotate scale /h exch def /w exch def
- /lb w d wbytes def
- sl lb lt {lb ms} if
- /bitmapsave save def
- r
- /is im 0 lb getinterval def
- ws 0 lb getinterval is copy pop
- /cf currentfile def
- w h d [w 0 0 h neg 0 h]
- {ip} image
- bitmapsave restore
- grestore
- } bind def
-/BEGINBITMAPBW {
- 1 {} COMMONBITMAP
- } bind def
-/BEGINBITMAPGRAY {
- 8 {} COMMONBITMAP
- } bind def
-/BEGINBITMAP2BIT {
- 2 {} COMMONBITMAP
- } bind def
-/COMMONBITMAP {
- /r exch def
- /d exch def
- gsave
- translate rotate scale /h exch def /w exch def
- /bitmapsave save def
- r
- /is w d wbytes string def
- /cf currentfile def
- w h d [w 0 0 h neg 0 h]
- {cf is readhexstring pop} image
- bitmapsave restore
- grestore
- } bind def
- /proc1 FMLOCAL
- /proc2 FMLOCAL
- /newproc FMLOCAL
-/Fmcc {
- /proc2 exch cvlit def
- /proc1 exch cvlit def
- /newproc proc1 length proc2 length add array def
- newproc 0 proc1 putinterval
- newproc proc1 length proc2 putinterval
- newproc cvx
-} bind def
-/ngrayt 256 array def
-/nredt 256 array def
-/nbluet 256 array def
-/ngreent 256 array def
- /gryt FMLOCAL
- /blut FMLOCAL
- /grnt FMLOCAL
- /redt FMLOCAL
- /indx FMLOCAL
- /cynu FMLOCAL
- /magu FMLOCAL
- /yelu FMLOCAL
- /k FMLOCAL
- /u FMLOCAL
-/colorsetup {
- currentcolortransfer
- /gryt exch def
- /blut exch def
- /grnt exch def
- /redt exch def
- 0 1 255 {
- /indx exch def
- /cynu 1 red indx get 255 div sub def
- /magu 1 green indx get 255 div sub def
- /yelu 1 blue indx get 255 div sub def
- /k cynu magu min yelu min def
- /u k currentundercolorremoval exec def
- nredt indx 1 0 cynu u sub max sub redt exec put
- ngreent indx 1 0 magu u sub max sub grnt exec put
- nbluet indx 1 0 yelu u sub max sub blut exec put
- ngrayt indx 1 k currentblackgeneration exec sub gryt exec put
- } for
- {255 mul cvi nredt exch get}
- {255 mul cvi ngreent exch get}
- {255 mul cvi nbluet exch get}
- {255 mul cvi ngrayt exch get}
- setcolortransfer
- {pop 0} setundercolorremoval
- {} setblackgeneration
- } bind def
- /tran FMLOCAL
-/fakecolorsetup {
- /tran 256 string def
- 0 1 255 {/indx exch def
- tran indx
- red indx get 77 mul
- green indx get 151 mul
- blue indx get 28 mul
- add add 256 idiv put} for
- currenttransfer
- {255 mul cvi tran exch get 255.0 div}
- exch Fmcc settransfer
-} bind def
-/BITMAPCOLOR {
- /d 8 def
- gsave
- translate rotate scale /h exch def /w exch def
- /bitmapsave save def
- colorsetup
- /is w d wbytes string def
- /cf currentfile def
- w h d [w 0 0 h neg 0 h]
- {cf is readhexstring pop} {is} {is} true 3 colorimage
- bitmapsave restore
- grestore
- } bind def
-/BITMAPCOLORc {
- /d 8 def
- gsave
- translate rotate scale /h exch def /w exch def
- /lb w d wbytes def
- sl lb lt {lb ms} if
- /bitmapsave save def
- colorsetup
- /is im 0 lb getinterval def
- ws 0 lb getinterval is copy pop
- /cf currentfile def
- w h d [w 0 0 h neg 0 h]
- {ip} {is} {is} true 3 colorimage
- bitmapsave restore
- grestore
- } bind def
-/BITMAPGRAY {
- 8 {fakecolorsetup} COMMONBITMAP
- } bind def
-/BITMAPGRAYc {
- 8 {fakecolorsetup} COMMONBITMAPc
- } bind def
-/ENDBITMAP {
- } bind def
-end
-%%EndProlog
-%%BeginSetup
-(2.0) FMVERSION
-1 1 612 792 0 1 16 FMDOCUMENT
-/fillprocs 32 array def
-fillprocs 0 { 0.000000 grayness } put
-fillprocs 1 { 0.100000 grayness } put
-fillprocs 2 { 0.300000 grayness } put
-fillprocs 3 { 0.500000 grayness } put
-fillprocs 4 { 0.700000 grayness } put
-fillprocs 5 { 0.900000 grayness } put
-fillprocs 6 { 0.970000 grayness } put
-fillprocs 7 { 1.000000 grayness } put
-fillprocs 8 {<0f87c3e1f0783c1e> 8 1 setpattern } put
-fillprocs 9 {<0f1e3c78f0e1c387> 8 1 setpattern } put
-fillprocs 10 {<cccccccccccccccc> 8 1 setpattern } put
-fillprocs 11 {<ffff0000ffff0000> 8 1 setpattern } put
-fillprocs 12 {<8142241818244281> 8 1 setpattern } put
-fillprocs 13 {<8040201008040201> 8 1 setpattern } put
-fillprocs 14 {<03060c183060c081> 8 1 setpattern } put
-fillprocs 15 {} put
-fillprocs 16 { 1.000000 grayness } put
-fillprocs 17 { 0.900000 grayness } put
-fillprocs 18 { 0.700000 grayness } put
-fillprocs 19 { 0.500000 grayness } put
-fillprocs 20 { 0.300000 grayness } put
-fillprocs 21 { 0.100000 grayness } put
-fillprocs 22 { 0.030000 grayness } put
-fillprocs 23 { 0.000000 grayness } put
-fillprocs 24 {<f0783c1e0f87c3e1> 8 1 setpattern } put
-fillprocs 25 {<f0e1c3870f1e3c78> 8 1 setpattern } put
-fillprocs 26 {<3333333333333333> 8 1 setpattern } put
-fillprocs 27 {<0000ffff0000ffff> 8 1 setpattern } put
-fillprocs 28 {<7ebddbe7e7dbbd7e> 8 1 setpattern } put
-fillprocs 29 {<7fbfdfeff7fbfdfe> 8 1 setpattern } put
-fillprocs 30 {<fcf9f3e7cf9f3f7e> 8 1 setpattern } put
-fillprocs 31 {} put
-%%EndSetup
-0 12 /Helvetica-Bold FMDEFINEFONT
-1 12 /Helvetica-BoldOblique FMDEFINEFONT
-%%Page: "-1" 1
-%%BeginPaperSize: Letter
-%%EndPaperSize
-612 792 0 FMBEGINPAGE
-144 144 468 396 R
-7 X
-0 K
-V
-0 F
-0 X
-1.2 (IMPLEMENT) 178.34 388 S
-1.2 (A) 258.88 388 S
-1.2 (TION NOTES ON ) 267.85 388 S
-1 F
-1.2 (bdes) 382.61 388 S
-0 F
-1.2 (\0501\051) 415.4 388 S
-1.2 (Matt Bishop) 265.09 338 S
-1.2 (T) 197.74 288 S
-1.2 (echnical Report PCS-TR91-158) 205.38 288 S
-FMENDPAGE
-%%EndPage: "-1" 2
-%%Page: "0" 2
-612 792 0 FMBEGINPAGE
-72 72 540 720 R
-7 X
-0 K
-V
-FMENDPAGE
-%%EndPage: "0" 3
-0 12 /Times-Roman FMDEFINEFONT
-1 18 /Times-Bold FMDEFINEFONT
-2 18 /Times-BoldItalic FMDEFINEFONT
-3 12 /Times-Italic FMDEFINEFONT
-4 12 /Times-Bold FMDEFINEFONT
-5 10 /Times-Roman FMDEFINEFONT
-6 12 /Courier FMDEFINEFONT
-7 12 /Courier-Oblique FMDEFINEFONT
-8 12 /ZapfDingbats FMDEFINEFONT
-9 12 /Symbol FMDEFINEFONT
-10 12 /Courier-Bold FMDEFINEFONT
-%%Page: "1" 3
-612 792 0 FMBEGINPAGE
-72 745.99 540 756 R
-7 X
-0 K
-V
-72 32.69 540 42.7 R
-V
-0 F
-0 X
-(Page 1 of 11) 479.71 34.7 T
-72 72 540 720 R
-7 X
-V
-1 F
-0 X
-(Implementation Notes on ) 179.84 708 T
-2 F
-(bdes) 378.21 708 T
-1 F
-(\0501\051) 411.19 708 T
-0 F
-( ) 432.17 708 T
-3 F
-(Matt Bishop) 276.51 676 T
-0 F
-(Department of Mathematics and Computer Science) 182.92 656 T
-(Dartmouth College) 259.86 642 T
-(Hanover) 257.45 628 T
-(, NH 03755) 298.26 628 T
-3 F
-(ABSTRACT) 277.68 602 T
-0 F
-0.27 (This note describes the implementation of ) 108 582 P
-3 F
-0.27 (bdes) 314.13 582 P
-0 F
-0.27 (, the \336le encryption program being) 336.12 582 P
-0.36 (distributed in the 4.4 release of the Berkeley Software Distribution. It implements) 108 568 P
-(all modes of the Data Encryption Standard program.) 108 554 T
-4 F
-(1. Intr) 72 528 T
-(oduction) 104.43 528 T
-0 F
--0.09 (The Data Encryption Standard is a standard endorsed by the federal government. It is con-) 108 504 P
--0.56 (siderably stronger than the algorithm used by the ) 72 484 P
-5 F
--0.47 (UNIX) 305.36 484 P
-0 F
--0.56 (\252 ) 330.34 484 P
-3 F
--0.56 (crypt) 344.53 484 P
-0 F
--0.56 (\0501\051 program, and therefore is a more) 369.18 484 P
-0.11 (suitable candidate for protecting information, especially information contained in ) 72 464 P
-5 F
-0.09 (ASCII) 466.05 464 P
-0 F
-0.11 ( \336les. The) 492.14 464 P
--0.65 (program ) 72 444 P
-3 F
--0.65 (bdes) 114.99 444 P
-0 F
--0.65 (\0501\051 implements the DES and all of its modes, including the two authentication modes.) 136.97 444 P
--0.59 (Because others may wish to write software compatible with this program, this note presents) 108 420 P
--0.04 (the layout of the encrypted \336les produced by ) 72 400 P
-3 F
--0.04 (bdes) 288.86 400 P
-0 F
--0.04 ( as well as internal details relevant to the imple-) 310.85 400 P
--0.15 (mentation. Whereever possible and appropriate, the description of the ) 72 380 P
-3 F
--0.15 (des) 408.04 380 P
-0 F
--0.15 (\0501\051 program given in [4]) 424.03 380 P
--0.2 (has been followed; thus, ) 72 360 P
-3 F
--0.2 (bdes) 190.77 360 P
-0 F
--0.2 ( is completely compatible with that program. However) 212.75 360 P
--0.2 (, ) 473.33 360 P
-3 F
--0.2 (bdes) 479.12 360 P
-0 F
--0.2 ( also of-) 501.11 360 P
-(fers several extensions to ) 72 340 T
-3 F
-(des) 195.9 340 T
-0 F
-( that are not compatible, and these will be explicitly pointed out.) 211.89 340 T
--0.14 (In this note, strings typed as shown will be in ) 108 316 P
-6 F
--0.34 (Courier Roman font) 326.78 316 P
-0 F
--0.14 (, and strings to be) 455.62 316 P
--0.42 (chosen by the user will be in ) 72 296 P
-7 F
--1 (Courier Oblique font) 209.32 296 P
-0 F
--0.42 (. The space character \050) 351.24 296 P
-5 F
--0.35 (ASCII) 457.79 296 P
-0 F
--0.42 ( <) 483.88 296 P
-5 F
--0.35 (SP) 493.23 296 P
-0 F
--0.42 (>, octal) 504.34 296 P
--0.43 (40, decimal 32, hex 20\051 will be represented as \322) 72 276 P
-8 F
--0.47 (z) 296.98 276 P
-0 F
--0.43 (\323 and the newline character \050) 301.96 276 P
-5 F
--0.35 (ASCII) 438.03 276 P
-0 F
--0.43 ( <) 464.13 276 P
-5 F
--0.35 (NL) 473.46 276 P
-0 F
--0.43 (>, octal 12,) 486.79 276 P
--0.05 (decimal 10, hex a\051 as \322) 72 256 P
-9 F
--0.05 (\277) 181.65 256 P
-0 F
--0.05 (\323. Because it is often more convenient to represent arbitrary characters as) 189.54 256 P
-1.13 (a sequence of hexadecimal digits, that representation will often be used; these digits will be in) 72 236 P
-10 F
-(Courier Bold font) 72 216 T
-0 F
-( with spaces often inserted for readability) 194.33 216 T
-(.) 392.07 216 T
-4 F
-(2. Overview and Use) 72 184 T
-3 F
--0.39 (Bdes) 108 160 P
-0 F
--0.39 ( implements the Data Encryption Standard algorithm in software, and enables the user) 131.32 160 P
--0.61 (to encrypt data using any of the four modes of operation of the DES \050Electronic Code Book, Cipher) 72 140 P
-72 72 540 720 C
-72 72 540 117 C
-72 72 549 108 R
-7 X
-0 K
-V
-5 F
-0 X
-(This work is based on work funded by grant NAG2-680 from the National
-Aeronautics and Space Administration to ) 72 101.33 T
-(Dartmouth College.) 72 89.33 T
-(UNIX is a Registered T) 72 77.33 T
-(rademark of A) 166.58 77.33 T
-(T&T Bell Laboratories.) 223.75 77.33 T
-72 72 540 720 C
-0 0 612 792 C
-72 126 225 126 2 L
-7 X
-0 K
-V
-0.5 H
-2 Z
-0 X
-N
-FMENDPAGE
-%%EndPage: "1" 4
-%%Page: "2" 4
-612 792 0 FMBEGINPAGE
-72 745.99 540 756 R
-7 X
-0 K
-V
-72 32.69 540 42.7 R
-V
-0 F
-0 X
-(Page 2 of 11) 479.71 34.7 T
-72 72 540 720 R
-7 X
-V
-0 X
-0.31 (Block Chaining, ) 72 712 P
-3 F
-0.31 (k) 154.25 712 P
-0 F
-0.31 (-bit Cipher Feed Back, and ) 159.58 712 P
-3 F
-0.31 (k) 293.71 712 P
-0 F
-0.31 (-bit Output Feed Back\051 as well as the Alternate ) 299.04 712 P
-3 F
-0.31 (k) 530.68 712 P
-0 F
-0.31 (-) 536.01 712 P
--0.04 (bit Cipher Feed Back mode. Further) 72 692 P
--0.04 (, ) 244.52 692 P
-3 F
--0.04 (bdes) 250.48 692 P
-0 F
--0.04 ( supports message authentication code generation based) 272.46 692 P
-(on both the Cipher Block Chaining mode and the ) 72 672 T
-3 F
-(k) 310.86 672 T
-0 F
-(-bit Cipher Feed Back mode.) 316.19 672 T
-0.07 (By default, ) 108 648 P
-3 F
-0.07 (bdes) 164.43 648 P
-0 F
-0.07 ( encrypts an input \336le using Cipher Block Chaining mode, and is invoked) 186.41 648 P
--0.4 (as a \336lter) 72 628 P
--0.4 (. The key may be speci\336ed either on the command line or may be typed to the prompt. So,) 114.51 628 P
-(if the input \336le ) 72 608 T
-7 F
-(inputf) 145.96 608 T
-(ile) 189.14 608 T
-0 F
-( contains the message) 210.73 608 T
-6 F
-(a) 253.9 584 T
-8 F
-(z) 261.1 584 T
-6 F
-(test) 266.07 584 T
-8 F
-(z) 294.86 584 T
-6 F
-(message) 299.83 584 T
-9 F
-(\277) 350.21 584 T
-0 F
-(then the following command encrypts it using the key ) 72 560 T
-6 F
-(abcdefgh) 333.5 560 T
-0 F
-(:) 391.07 560 T
-6 F
-(bdes -k abcdefgh < ) 158.48 536 T
-7 F
-(inputf) 295.21 536 T
-(ile) 338.38 536 T
-6 F
-( > ) 359.97 536 T
-7 F
-(outputf) 381.56 536 T
-(ile) 431.93 536 T
-0 F
-(The option ) 72 512 T
-4 F
-(-k) 127.3 512 T
-0 F
-( indicates the next ar) 137.96 512 T
-(gument is the key) 237.01 512 T
-(. Now ) 321.17 512 T
-7 F
-(outputf) 353.48 512 T
-(ile) 403.86 512 T
-0 F
-( contains) 425.45 512 T
-10 F
-(16 0e eb af 68 a0 d0 19 f1 a2 9b 31 0d 8a 01 c3) 136.89 488 T
-0 F
-0.06 (Other modes are speci\336ed using command-line options, as is control of the way the key is) 108 464 P
-(interpreted. The next sections contain several examples, and the Appendix has the manual page.) 72 444 T
-4 F
-(3. Keys and Parity) 72 412 T
-0 F
-0.58 (The key consists of 64 bits, and may be presented in any of hex, binary) 108 388 P
-0.58 (, or as a string of) 456.48 388 P
-5 F
-0.12 (ASCII) 72 368 P
-0 F
-0.14 ( characters. If the key is given in hex or binary) 98.1 368 P
-0.14 (, it is used as is with no changes. However) 322.21 368 P
-0.14 (, if) 526.53 368 P
--0.27 (the key is given in ) 72 348 P
-5 F
--0.23 (ASCII) 161.59 348 P
-0 F
--0.27 (, a delicate problem arises: by convention, the parity bit is usually set to 0.) 187.69 348 P
--0.47 (This high-order bit is generally ignored by applications; but the DES
-does not do so. Instead, it dis-) 72 328 P
--0.14 (cards the low-order bit, ef) 72 308 P
--0.14 (fectively reducing the size of the space of possible keys from 2) 195.44 308 P
-5 F
--0.12 (56) 495.97 312.8 P
-0 F
--0.14 ( to 2) 505.97 308 P
-5 F
--0.12 (48) 527.01 312.8 P
-0 F
--0.14 (.) 537 308 P
--0.46 ( T) 108 284 P
--0.46 (o preserve the size of the key space, the value of the parity bit must be related to the value) 117.03 284 P
--0.09 (in the low-order bit, so the program sets the high-order bit to make each character in the key be of) 72 264 P
--0.7 (odd parity) 72 244 P
--0.7 (. \050Note that the initial value of the parity bit is ) 119.49 244 P
-3 F
--0.7 (not) 334.99 244 P
-0 F
--0.7 ( used in this computation.\051 For example,) 350.31 244 P
-(if the key is ) 72 224 T
-6 F
-(abcdefgh) 131.29 224 T
-0 F
-(, the actual key bits used are determined as follows:) 188.86 224 T
-5 F
-(ASCII) 99 200 T
-0 F
-( key) 125.1 200 T
-6 F
-(a) 243 200 T
-(b) 279 200 T
-(c) 315 200 T
-(d) 351 200 T
-(e) 387 200 T
-(f) 423 200 T
-(g) 459 200 T
-(h) 495 200 T
-5 F
-(ASCII) 99 180 T
-0 F
-( key bits \050hex\051) 125.1 180 T
-10 F
-(61) 243 180 T
-(62) 279 180 T
-(63) 315 180 T
-(64) 351 180 T
-(65) 387 180 T
-(66) 423 180 T
-(67) 459 180 T
-(68) 495 180 T
-0 F
-(parity) 99 160 T
-(odd) 243 160 T
-(odd) 279 160 T
-(even) 315 160 T
-(odd) 351 160 T
-(even) 387 160 T
-(even) 423 160 T
-(odd) 459 160 T
-(odd) 495 160 T
-(key bits used \050hex\051) 99 140 T
-10 F
-(61) 243 140 T
-(62) 279 140 T
-(e3) 315 140 T
-(64) 351 140 T
-(e5) 387 140 T
-(e6) 423 140 T
-(67) 459 140 T
-(68) 495 140 T
-0 F
-0.18 (This convention \050as opposed to requiring even parity) 108 120 P
-0.18 (, or simply copying the low-order bit) 362 120 P
--0.41 (to the high-order bit\051 was chosen to provide compatibility with the encryption program ) 72 100 P
-3 F
--0.41 (des) 486.77 100 P
-0 F
--0.41 ( distrib-) 502.76 100 P
--0.52 (uted by Sun Microsystems, Inc. [4]. Whether the key is entered on the command line or on the key-) 72 80 P
-FMENDPAGE
-%%EndPage: "2" 5
-%%Page: "3" 5
-612 792 0 FMBEGINPAGE
-72 745.99 540 756 R
-7 X
-0 K
-V
-72 32.69 540 42.7 R
-V
-0 F
-0 X
-(Page 3 of 11) 479.71 34.7 T
-72 72 540 720 R
-7 X
-V
-0 X
-1.89 (board, by default it is processed into the same key schedule generated by Sun\325) 72 712 P
-1.89 (s ) 471.02 712 P
-3 F
-1.89 (des) 480.58 712 P
-0 F
-1.89 (, so \336les) 496.56 712 P
-(encrypted on a Sun can be decrypted using ) 72 692 T
-3 F
-(bdes) 280.51 692 T
-0 F
-( \050and vice versa\051.) 302.49 692 T
--0.3 (If the user does not wish to use the Sun convention, the option \320) 108 668 P
-4 F
--0.3 (p) 411.9 668 P
-0 F
--0.3 ( will disable the parity bit) 418.57 668 P
--0.62 (changing; with it, the parity bit is that of the character typed. This
-is useful when the key is a known) 72 648 P
-5 F
-(ASCII) 72 628 T
-0 F
-( string and the \336le was encrypted on a system which does not alter parity bits.) 98.1 628 T
--0.24 (A key may be represented as a bit vector) 108 604 P
--0.24 (, rather than an ) 300.74 604 P
-5 F
--0.2 (ASCII) 374.7 604 P
-0 F
--0.24 ( string, in one of two ways. It) 400.8 604 P
-0.19 (may be represented as a string of up to 16 hexadecimal digits; if fewer than 16 are given, the key) 72 584 P
-0.16 (is right \336lled with 0 bits. Or) 72 564 P
-0.16 (, it may be represented as a string of up to 64 binary digits, and again) 206.11 564 P
-0.15 (if fewer than 64 are given, the key is right-\336lled with 0 bits. Bit
-vector keys must be given on the) 72 544 P
-0.51 (command line, and must begin with the characters ) 72 524 P
-6 F
-1.24 (0x) 320.28 524 P
-0 F
-0.51 ( or ) 334.67 524 P
-6 F
-1.24 (0X) 351.69 524 P
-0 F
-0.51 ( \050for hexadecimal\051 or ) 366.08 524 P
-6 F
-1.24 (0b) 472.71 524 P
-0 F
-0.51 ( or ) 487.1 524 P
-6 F
-1.24 (0B) 504.12 524 P
-0 F
-0.51 ( \050for) 518.51 524 P
-(binary\051. For example, all of the following strings generate the same key schedule:) 72 504 T
-5 F
-(ASCII) 72 480 T
-0 F
-( key) 98.1 480 T
-6 F
-(abcdefgh) 180 480 T
-0 F
-(hexadecimal key) 72 460 T
-6 F
-(0x6162e364e5e66768) 180 460 T
-0 F
-(binary key) 72 440 T
-6 F
-(0b0110000101100010111000110110100011100101111000-) 180 440 T
-(1100110011101101000) 180 420 T
-0 F
--0.14 ( Note that giving the key on the command line as ) 108 396 P
-6 F
--0.34 (0x6162636465666768) 345.27 396 P
-0 F
--0.14 ( will ) 474.8 396 P
-3 F
--0.14 (not) 499.17 396 P
-0 F
--0.14 ( reset) 514.5 396 P
-0.25 (the parity bits, because it is interpreted as a sequence of hex digits, not ) 72 376 P
-5 F
-0.21 (ASCII) 416.58 376 P
-0 F
-0.25 ( characters. The dif-) 442.68 376 P
-0.69 (ference in interpretation is that here the user can specify all bits of the key exactly) 72 356 P
-0.69 (, whereas \050on) 474.34 356 P
-0.25 (most terminals\051 it is not possible to control how the parity bit of ) 72 336 P
-5 F
-0.21 (ASCII) 384.76 336 P
-0 F
-0.25 ( characters is set. On some) 410.85 336 P
-0.36 (systems, it is possible to use a \322Meta\323 key to set the parity bit for an ) 72 316 P
-5 F
-0.3 (ASCII) 407.23 316 P
-0 F
-0.36 ( character; should this) 433.33 316 P
--0.3 (be the case and the user desire ) 72 296 P
-3 F
--0.3 (bdes) 218.09 296 P
-0 F
--0.3 ( not to reset the parity bit, the option ) 240.07 296 P
-4 F
--0.3 (\320p) 415.25 296 P
-0 F
--0.3 ( will force the parity bit) 427.92 296 P
-(to be used as typed.) 72 276 T
-4 F
-(4. Encryption Output Repr) 72 244 T
-(esentation) 211.05 244 T
-0 F
-0.01 (All modes of the DES output ciphertext in blocks; the size of the block is 64 bits \0508 bytes\051) 108 220 P
--0.25 (for ECB and CBC modes, and ) 72 200 P
-3 F
--0.25 (k) 218.74 200 P
-0 F
--0.25 ( bits for the ) 224.07 200 P
-3 F
--0.25 (k) 281.02 200 P
-0 F
--0.25 (-bit CFB and OFB modes, and there are as many out-) 286.35 200 P
--0.5 (put blocks as input blocks. However) 72 180 P
--0.5 (, as the length of the input is usually not a multiple of the block) 243.55 180 P
--0.35 (size, some padding is necessary; but as padding must be done by appending characters, these char-) 72 160 P
-0.29 (acters must be distinguished from the input characters somehow) 72 140 P
-0.29 (. The mechanism used is that the) 381.35 140 P
-0.31 (last character of the \050decrypted\051 last block is the
-\050integer\051 number of characters from the input in) 72 120 P
-(the last block.) 72 100 T
-FMENDPAGE
-%%EndPage: "3" 6
-%%Page: "4" 6
-612 792 0 FMBEGINPAGE
-72 745.99 540 756 R
-7 X
-0 K
-V
-72 32.69 540 42.7 R
-V
-0 F
-0 X
-(Page 4 of 11) 479.71 34.7 T
-72 72 540 720 R
-7 X
-V
-0 X
--0.59 (For example, suppose ) 108 712 P
-7 F
--1.41 (inputf) 214.16 712 P
--1.41 (ile) 257.34 712 P
-0 F
--0.59 ( contains \322) 278.93 712 P
-6 F
--1.41 (This) 329.04 712 P
-8 F
--0.65 (z) 357.83 712 P
-6 F
--1.41 (is) 362.8 712 P
-8 F
--0.65 (z) 377.2 712 P
-6 F
--1.41 (a) 382.17 712 P
-8 F
--0.65 (z) 389.37 712 P
-6 F
--1.41 (test) 394.35 712 P
-9 F
--0.59 (\277) 423.13 712 P
-0 F
--0.59 (\323, and it is encrypted in) 431.02 712 P
-(CBC mode using the key \322) 72 692 T
-6 F
-(abcdef#@) 200.93 692 T
-0 F
-(\323 and the initialization vector ) 258.5 692 T
-6 F
-(0x0) 401.4 692 T
-0 F
-(; the command is) 422.99 692 T
-6 F
-(bdes -k abcdef#@ < ) 158.48 668 T
-7 F
-(inputf) 295.21 668 T
-(ile) 338.38 668 T
-6 F
-( > ) 359.97 668 T
-7 F
-(outputf) 381.56 668 T
-(ile) 431.93 668 T
-0 F
-(as CBC is the default encryption mode and ) 72 644 T
-6 F
-(0x0) 281.2 644 T
-0 F
-( the default initialization vector:) 302.79 644 T
-(text) 72 620 T
-6 F
-(T) 117 620 T
-(h) 144 620 T
-(i) 171 620 T
-(s) 198 620 T
-8 F
-(z) 225 620 T
-6 F
-(i) 252 620 T
-(s) 279 620 T
-8 F
-(z) 306 620 T
-6 F
-(a) 333 620 T
-8 F
-(z) 360 620 T
-6 F
-(t) 387 620 T
-(e) 414 620 T
-(s) 441 620 T
-(t) 468 620 T
-9 F
-(\277) 495 620 T
-0 F
-(hex) 72 600 T
-10 F
-(54) 117 600 T
-(68) 144 600 T
-(69) 171 600 T
-(73) 198 600 T
-(20) 225 600 T
-(69) 252 600 T
-(73) 279 600 T
-(20) 306 600 T
-(61) 333 600 T
-(20) 360 600 T
-(74) 387 600 T
-(65) 414 600 T
-(73) 441 600 T
-(74) 468 600 T
-(0a) 495 600 T
-0 F
-(input) 72 580 T
-10 F
-(54) 117 580 T
-(68) 144 580 T
-(69) 171 580 T
-(73) 198 580 T
-(20) 225 580 T
-(69) 252 580 T
-(73) 279 580 T
-(20) 306 580 T
-(61) 333 580 T
-(20) 360 580 T
-(74) 387 580 T
-(65) 414 580 T
-(73) 441 580 T
-(74) 468 580 T
-(0a) 495 580 T
-(07) 522 580 T
-0 F
-(output) 72 560 T
-10 F
-(a5) 117 560 T
-(5f) 144 560 T
-(81) 171 560 T
-(53) 198 560 T
-(51) 225 560 T
-(98) 252 560 T
-(47) 279 560 T
-(02) 306 560 T
-(db) 333 560 T
-(5a) 360 560 T
-(c5) 387 560 T
-(fe) 414 560 T
-(50) 441 560 T
-(3d) 468 560 T
-(40) 495 560 T
-(ce) 522 560 T
-0 F
-0.04 (Notice that the text is 15 characters long, so there are 7 bytes following the last full block.) 108 540 P
-3 F
-0.22 (Bdes) 72 520 P
-0 F
-0.22 ( pads this to a full block by appending one byte containing the ) 95.32 520 P
-5 F
-0.19 (ASCII) 399.67 520 P
-0 F
-0.22 ( character with numeric) 425.77 520 P
-(value 7 \050the ) 72 500 T
-5 F
-(ASCII) 131.62 500 T
-0 F
-( character <) 157.71 500 T
-5 F
-(BEL) 214.42 500 T
-0 F
-(>\051. The result is then encrypted.) 233.3 500 T
-0.44 (As another example, suppose ) 108 476 P
-7 F
-1.07 (inputf) 253.34 476 P
-1.07 (ile) 296.52 476 P
-0 F
-0.44 ( contains \322) 318.11 476 P
-6 F
-1.07 (test) 370.29 476 P
-0 F
-0.44 (\323, and it is encrypted in ECB) 399.08 476 P
-(mode using the key \322) 72 456 T
-6 F
-(abcdef#@) 173.93 456 T
-0 F
-(\323; the command is) 231.5 456 T
-6 F
-(bdes -b \320k abcdef#@ < ) 147.69 432 T
-7 F
-(inputf) 306 432 T
-(ile) 349.18 432 T
-6 F
-( > ) 370.76 432 T
-7 F
-(outputf) 392.35 432 T
-(ile) 442.73 432 T
-0 F
-(because the option ) 72 408 T
-4 F
-(\320b) 164.26 408 T
-0 F
-( signi\336es ECB mode:) 176.93 408 T
-(text) 72 384 T
-6 F
-(t) 144 384 T
-(e) 171 384 T
-(s) 198 384 T
-(t) 225 384 T
-0 F
-(hex) 72 364 T
-10 F
-(74) 144 364 T
-(65) 171 364 T
-(73) 198 364 T
-(74) 225 364 T
-0 F
-(input) 72 344 T
-10 F
-(74) 144 344 T
-(65) 171 344 T
-(73) 198 344 T
-(74) 225 344 T
-(00) 252 344 T
-(00) 279 344 T
-(00) 306 344 T
-(04) 333 344 T
-0 F
-(output) 72 324 T
-10 F
-(0d) 144 324 T
-(8a) 171 324 T
-(6e) 198 324 T
-(57) 225 324 T
-(9c) 252 324 T
-(8f) 279 324 T
-(27) 306 324 T
-(5d) 333 324 T
-0 F
--0.31 (Finally) 108 304 P
--0.31 (, if the length of the message is indeed a multiple of the block size, an extra block of) 141.21 304 P
-0.83 (all 0 bits is added. Suppose ) 72 284 P
-7 F
-1.99 (inputf) 210.57 284 P
-1.99 (ile) 253.74 284 P
-0 F
-0.83 ( contains \322) 275.33 284 P
-6 F
-1.99 (test) 328.28 284 P
-9 F
-0.83 (\277) 357.07 284 P
-0 F
-0.83 (\323, and it is encrypted in 40-bit CFB) 364.96 284 P
-1.51 (mode using the key \322) 72 264 P
-6 F
-3.62 (abcdef#@) 179.96 264 P
-0 F
-1.51 (\323 and the initialization vector ) 237.53 264 P
-6 F
-3.62 (0x0123456789abcdef) 387.97 264 P
-0 F
-1.51 (; the) 517.5 264 P
-(command is) 72 244 T
-6 F
--0.99 (bdes -f40 -v0x0123456789abcdef -kabcdef#@ < ) 72 220 P
-7 F
--0.99 (inputf) 383.67 220 P
--0.99 (ile) 426.85 220 P
-6 F
--0.99 ( > ) 448.43 220 P
-7 F
--0.99 (outputf) 468.04 220 P
--0.99 (ile) 518.41 220 P
-0 F
-0.16 (because the option ) 72 196 P
-4 F
-0.16 (\320f40 ) 164.75 196 P
-0 F
-0.16 (signi\336es 40-bit CFB mode, and ) 189.89 196 P
-4 F
-0.16 (-v0x01234566789abcdef) 343.96 196 P
-0 F
-0.16 ( sets the initial-) 465.89 196 P
-(ization vector \050note that spaces between the option and its ar) 72 176 T
-(gument are optional\051:) 361.57 176 T
-(text) 72 152 T
-6 F
-(t) 144 152 T
-(e) 171 152 T
-(s) 198 152 T
-(t) 225 152 T
-9 F
-(\277) 252 152 T
-0 F
-(hex) 72 132 T
-10 F
-(74) 144 132 T
-(65) 171 132 T
-(73) 198 132 T
-(74) 225 132 T
-(0a) 252 132 T
-0 F
-(input) 72 112 T
-10 F
-(74) 144 112 T
-(65) 171 112 T
-(73) 198 112 T
-(74) 225 112 T
-(0a) 252 112 T
-(00) 279 112 T
-(00) 306 112 T
-(00) 333 112 T
-(00) 360 112 T
-(00) 387 112 T
-0 F
-(output) 72 92 T
-10 F
-(e2) 144 92 T
-(c2) 171 92 T
-(69) 198 92 T
-(a4) 225 92 T
-(5b) 252 92 T
-(3c) 279 92 T
-(3d) 306 92 T
-(b3) 333 92 T
-(f5) 360 92 T
-(3c) 387 92 T
-FMENDPAGE
-%%EndPage: "4" 7
-1 12 /Times-BoldItalic FMDEFINEFONT
-2 14 /Symbol FMDEFINEFONT
-%%Page: "5" 7
-612 792 0 FMBEGINPAGE
-72 745.99 540 756 R
-7 X
-0 K
-V
-72 32.69 540 42.7 R
-V
-0 F
-0 X
-(Page 5 of 11) 479.71 34.7 T
-72 72 540 720 R
-7 X
-V
-0 X
-(Note here the block size is 40 bits \0505 bytes\051, not 64 bits \0508 bytes\051.) 108 712 T
--0.4 (This technique allows complete compatibility with Sun\325) 108 688 P
--0.4 (s ) 374.11 688 P
-3 F
--0.4 (des) 381.37 688 P
-0 F
--0.4 ( program. In Sun\325) 397.36 688 P
--0.4 (s implemen-) 480.77 688 P
-0.02 (tation, padding is done with random bytes rather than bytes containing all zero bits. Cryptograph-) 72 668 P
-0.85 (ically) 72 648 P
-0.85 (, this makes no dif) 97.87 648 P
-0.85 (ference, as the DES is a suf) 189.32 648 P
-0.85 (\336ciently good random cipher to obscure the) 325.74 648 P
-(input \050see for example [2], Chapter 6\051, and known plaintext attacks are very dif) 72 628 T
-(\336cult [1].) 451.82 628 T
-4 F
-(5. Differ) 72 596 T
-(ences Between the Standard CFB and OFB Modes and ) 114.41 596 T
-1 F
-(bdes) 397.26 596 T
-0 F
--0.11 (The UNIX operating system treats all \336les as streams of 8-bit bytes. In order to implement) 108 572 P
--0.08 (the CFB and OFB modes properly) 72 552 P
--0.08 (, it would be necessary to read ) 235.74 552 P
-3 F
--0.08 (k) 383.74 552 P
-0 F
--0.08 ( bits from the \336le, where ) 389.07 552 P
-3 F
--0.08 (k) 509.51 552 P
-0 F
--0.08 ( is an) 514.84 552 P
-0.98 (integer between 1 and 64 inclusive. However) 72 532 P
-0.98 (, this would require considerable buf) 294.22 532 P
-0.98 (fering and be) 474.77 532 P
-0.23 (quite inef) 72 512 P
-0.23 (\336cient and prohibitively slow) 117.65 512 P
-0.23 (. For these reasons, the current implementation of ) 258.48 512 P
-3 F
-0.23 (bdes) 501.48 512 P
-0 F
-0.23 ( re-) 523.46 512 P
-0.47 (quires that ) 72 492 P
-3 F
-0.47 (k) 126.23 492 P
-0 F
-0.47 ( be a multiple of 8, so that an integral number of bytes will always be read from the) 131.56 492 P
-(\336le. Other than this change, this mode is implemented as described in [3].) 72 472 T
--0.58 (A similar observation holds for the alternate CFB mode described in [3]. Here, only the low) 108 448 P
-0.23 (7 bits of each byte are signi\336cant, and hence the parameter ) 72 428 P
-3 F
-0.23 (k) 358.95 428 P
-0 F
-0.23 ( is an integer from 1 to 56 inclusive;) 364.28 428 P
-(bdes requires k to be a multiple of 7. The high-order bit is retained for encryption and decryption,) 72 408 T
-(but output \050whether from encryption or decryption\051 always has the high-order bit set to zero.) 72 388 T
-4 F
-(6. Message Authentication Code Modes) 72 356 T
-0 F
-0.57 (The Data Encryption Standard provides two modes of authentication, each providing be-) 108 332 P
-1.27 (tween 1 and 64 bits of authentication data. In both cases an ) 72 312 P
-3 F
-1.27 (n) 373.32 312 P
-0 F
-1.27 (-bit message authentication code) 379.32 312 P
-0.62 (\050MAC\051 is generated, where 1) 72 292 P
-2 F
-0.73 ( ) 214.71 292 P
-9 F
-0.62 (\243) 218.94 292 P
-0 F
-0.62 ( ) 225.52 292 P
-3 F
-0.62 (n) 229.15 292 P
-0 F
-0.62 ( ) 235.14 292 P
-9 F
-0.62 (\243) 238.76 292 P
-0 F
-0.62 ( 64. The \336rst is based on the CBC encryption mode, and the) 245.35 292 P
-(second on CFB mode. Both work the same.) 72 272 T
-0.13 (First, the \336le is padded to a multiple of the block size by appending enough zero bits. It is) 108 248 P
--0.16 (then encrypted using the standard CBC \050or CFB\051 algorithm, but
-all encrypted text is discarded ex-) 72 228 P
--0.44 (cept for the last block. The ) 72 208 P
-3 F
--0.44 (n) 200.9 208 P
-0 F
--0.44 ( leading bits of the last block are used as the MAC. Note that the block) 206.9 208 P
-(size constrains the number of bits available as the MAC.) 72 188 T
-0.71 (The implementation allows the user to specify that the MAC is to be computed in either) 108 164 P
--0.01 (CBC or CFB mode, and the user can specify any number of bits from 1 to 64 inclusive. However) 72 144 P
--0.01 (,) 537 144 P
--0.11 (because the UNIX operating system can only output bits in multiples of 8, if the number of bits of) 72 124 P
--0.08 (MAC is not a multiple of 8, the MAC will be right-padded with the minimum number of zero bits) 72 104 P
--0.31 (necessary to make the MAC length be a multiple of 8. However) 72 84 P
--0.31 (, note that as the standard \050[3], Ap-) 374.6 84 P
-FMENDPAGE
-%%EndPage: "5" 8
-%%Page: "6" 8
-612 792 0 FMBEGINPAGE
-72 745.99 540 756 R
-7 X
-0 K
-V
-72 32.69 540 42.7 R
-V
-0 F
-0 X
-(Page 6 of 11) 479.71 34.7 T
-72 72 540 720 R
-7 X
-V
-0 X
--0.14 (pendix F\051 requires an incomplete \336nal block be right-padded with
-zeroes, the technique of forcing) 72 712 P
-(the last octet to contain the number of bytes in the message is ) 72 692 T
-3 F
-(not) 369.47 692 T
-0 F
-( used here.) 384.8 692 T
--0.39 (For example, suppose ) 108 668 P
-7 F
--0.94 (inputf) 214.76 668 P
--0.94 (ile) 257.93 668 P
-0 F
--0.39 ( contains \322) 279.52 668 P
-6 F
--0.94 (This) 330.04 668 P
-8 F
--0.43 (z) 358.82 668 P
-6 F
--0.94 (is) 363.8 668 P
-8 F
--0.43 (z) 378.19 668 P
-6 F
--0.94 (a) 383.17 668 P
-8 F
--0.43 (z) 390.36 668 P
-6 F
--0.94 (test) 395.34 668 P
-9 F
--0.39 (\277) 424.13 668 P
-0 F
--0.39 (\323, and a 64-bit MAC is) 432.02 668 P
--0.73 (to be generated using CBC mode, the key \322) 72 648 P
-6 F
--1.74 (abcdef#@) 274.39 648 P
-0 F
--0.73 (\323 and the initialization vector ) 331.96 648 P
-6 F
--1.74 (0x0) 471.23 648 P
-0 F
--0.73 (; the com-) 492.82 648 P
-(mand is) 72 628 T
-6 F
-(bdes -m 64 -k abcdef#@ < ) 136.89 604 T
-7 F
-(inputf) 316.79 604 T
-(ile) 359.97 604 T
-6 F
-( > ) 381.56 604 T
-7 F
-(outputf) 403.15 604 T
-(ile) 453.52 604 T
-0 F
-(as CBC is the default encryption mode and ) 72 580 T
-6 F
-(0x0) 281.2 580 T
-0 F
-( the default initialization vector:) 302.79 580 T
-(text) 72 556 T
-6 F
-(T) 117 556 T
-(h) 144 556 T
-(i) 171 556 T
-(s) 198 556 T
-8 F
-(z) 225 556 T
-6 F
-(i) 252 556 T
-(s) 279 556 T
-8 F
-(z) 306 556 T
-6 F
-(a) 333 556 T
-8 F
-(z) 360 556 T
-6 F
-(t) 387 556 T
-(e) 414 556 T
-(s) 441 556 T
-(t) 468 556 T
-9 F
-(\277) 495 556 T
-0 F
-(hex) 72 536 T
-10 F
-(54) 117 536 T
-(68) 144 536 T
-(69) 171 536 T
-(73) 198 536 T
-(20) 225 536 T
-(69) 252 536 T
-(73) 279 536 T
-(20) 306 536 T
-(61) 333 536 T
-(20) 360 536 T
-(74) 387 536 T
-(65) 414 536 T
-(73) 441 536 T
-(74) 468 536 T
-(0a) 495 536 T
-0 F
-(input) 72 516 T
-10 F
-(54) 117 516 T
-(68) 144 516 T
-(69) 171 516 T
-(73) 198 516 T
-(20) 225 516 T
-(69) 252 516 T
-(73) 279 516 T
-(20) 306 516 T
-(61) 333 516 T
-(20) 360 516 T
-(74) 387 516 T
-(65) 414 516 T
-(73) 441 516 T
-(74) 468 516 T
-(0a) 495 516 T
-(00) 522 516 T
-0 F
-(output) 72 496 T
-10 F
-(43) 117 496 T
-(18) 144 496 T
-(de) 171 496 T
-(74) 198 496 T
-(24) 225 496 T
-(a9) 252 496 T
-(65) 279 496 T
-(d1) 306 496 T
-0 F
-0.04 (Notice that the text is 15 characters long, so there are 7 bytes following the last full block.) 108 476 P
-3 F
-(Bdes) 72 456 T
-0 F
-( pads this to a full block by appending a zero-\336lled byte. The result is then encrypted and the) 95.32 456 T
-(last block of output is used as the MAC.) 72 436 T
-0.06 (As another example, suppose we used the same text, and wanted a 36-bit MAC to be gen-) 108 412 P
-6.91 (erated using 40-bit CFB mode, the key \322) 72 392 P
-6 F
-16.58 (abcdef#@) 314.9 392 P
-0 F
-6.91 (\323 and the initialization vector) 372.47 392 P
-6 F
-(0x0123456789abcdef) 72 372 T
-0 F
-(; the command is) 201.53 372 T
-6 F
-(bdes -m 36 -f 40 -v 0x0123456789abcdef < ) 79.32 348 T
-7 F
-(inputf) 374.36 348 T
-(ile) 417.54 348 T
-6 F
-( > ) 439.13 348 T
-7 F
-(outputf) 460.71 348 T
-(ile) 511.09 348 T
-0 F
--0.19 (where ) 72 324 P
-4 F
--0.19 (\320m 36) 104.11 324 P
-0 F
--0.19 ( is the option to generate a 36-bit MAC, ) 134.91 324 P
-4 F
--0.19 (\320f 40) 327.79 324 P
-0 F
--0.19 ( indicates 40-bit CFB is to be used, and) 352.58 324 P
-4 F
--0.31 (\320v 0x123456789abcdef) 72 304 P
-0 F
--0.31 ( sets the initialization vector) 186.62 304 P
--0.31 (. Note that, as the key is not given on the com-) 319.95 304 P
-(mand line, the user will be prompted for it. It gives:) 72 284 T
-(text) 72 260 T
-6 F
-(T) 117 260 T
-(h) 144 260 T
-(i) 171 260 T
-(s) 198 260 T
-8 F
-(z) 225 260 T
-6 F
-(i) 252 260 T
-(s) 279 260 T
-8 F
-(z) 306 260 T
-6 F
-(a) 333 260 T
-8 F
-(z) 360 260 T
-6 F
-(t) 387 260 T
-(e) 414 260 T
-(s) 441 260 T
-(t) 468 260 T
-9 F
-(\277) 495 260 T
-0 F
-(hex) 72 240 T
-10 F
-(54) 117 240 T
-(68) 144 240 T
-(69) 171 240 T
-(73) 198 240 T
-(20) 225 240 T
-(69) 252 240 T
-(73) 279 240 T
-(20) 306 240 T
-(61) 333 240 T
-(20) 360 240 T
-(74) 387 240 T
-(65) 414 240 T
-(73) 441 240 T
-(74) 468 240 T
-(0a) 495 240 T
-0 F
-(input) 72 220 T
-10 F
-(54) 117 220 T
-(68) 144 220 T
-(69) 171 220 T
-(73) 198 220 T
-(20) 225 220 T
-(69) 252 220 T
-(73) 279 220 T
-(20) 306 220 T
-(61) 333 220 T
-(20) 360 220 T
-(74) 387 220 T
-(65) 414 220 T
-(73) 441 220 T
-(74) 468 220 T
-(0a) 495 220 T
-0 F
-(output) 72 200 T
-10 F
-(2b) 117 200 T
-(18) 144 200 T
-(68) 171 200 T
-(2d) 198 200 T
-(60) 225 200 T
-0 F
-0.19 (Note that the MAC is padded on the right by four zero bits to produce \336ve characters that) 108 180 P
-(can be output.) 72 160 T
-4 F
-(7. Differ) 72 128 T
-(ences Between ) 114.41 128 T
-1 F
-(bdes) 191.01 128 T
-4 F
-( and Sun\325) 212.99 128 T
-(s DES Implementation) 261.88 128 T
-0 F
-0.02 (The program ) 108 104 P
-3 F
-0.02 (bdes) 173.33 104 P
-0 F
-0.02 ( is designed to be completely compatible with Sun Microsystems, Inc.\325) 195.31 104 P
-0.02 (s) 535.33 104 P
-0.57 (implementation of the Data Encryption Standard, called ) 72 84 P
-3 F
-0.57 (des) 347.14 84 P
-0 F
-0.57 ( and described in [4]. Thus, \336les en-) 363.13 84 P
-FMENDPAGE
-%%EndPage: "6" 9
-%%Page: "7" 9
-612 792 0 FMBEGINPAGE
-72 745.99 540 756 R
-7 X
-0 K
-V
-72 32.69 540 42.7 R
-V
-0 F
-0 X
-(Page 7 of 11) 479.71 34.7 T
-72 72 540 720 R
-7 X
-V
-0 X
-0.44 (crypted using ) 72 712 P
-3 F
-0.44 (des) 140.84 712 P
-0 F
-0.44 ( can be decrypted using ) 156.83 712 P
-3 F
-0.44 (bdes) 275.29 712 P
-0 F
-0.44 (, and vice versa, provided modes common to both) 297.27 712 P
--0.34 (are used. However) 72 692 P
--0.34 (, ) 160.41 692 P
-3 F
--0.34 (bdes) 166.06 692 P
-0 F
--0.34 ( does not allow \336les to be named on the command line, nor does it support) 188.05 692 P
--0.68 (hardware devices \050and so the ) 72 672 P
-4 F
--0.68 (-s) 210.83 672 P
-0 F
--0.68 ( and ) 219.49 672 P
-4 F
--0.68 (-f) 241.45 672 P
-0 F
--0.68 ( options of Sun\325) 249.44 672 P
--0.68 (s ) 323.71 672 P
-3 F
--0.68 (des) 330.7 672 P
-0 F
--0.68 ( are not available\051. Further) 346.69 672 P
--0.68 (, as encryption) 471.07 672 P
--0.05 (is the default, the Sun ) 72 652 P
-3 F
--0.05 (des) 179.01 652 P
-0 F
--0.05 ( ) 195 652 P
-4 F
--0.05 (-e) 197.95 652 P
-0 F
--0.05 ( option is not recognized. As the manual page to ) 207.27 652 P
-3 F
--0.05 (bdes) 441.6 652 P
-0 F
--0.05 ( is in the appen-) 463.59 652 P
-(dix, these dif) 72 632 T
-(ferences will not be elaborated upon further) 134.08 632 T
-(.) 343.24 632 T
-0.44 (Sun\325) 108 608 P
-0.44 (s ) 130 608 P
-3 F
-0.44 (des) 138.1 608 P
-0 F
-0.44 ( supports the use of special-purpose hardware to encrypt and decrypt. Although) 154.09 608 P
-3 F
-1.33 (bdes) 72 588 P
-0 F
-1.33 ( does not directly support the use of such hardware, it uses the library routine ) 93.98 588 P
-3 F
-1.33 (encrypt) 487.05 588 P
-0 F
-1.33 (\0503\051,) 523.02 588 P
--0.09 (which may) 72 568 P
--0.09 (. Hardware support was not included directly to support as lar) 124.1 568 P
--0.09 (ge a number of platforms) 419.11 568 P
-(as possible with installers needing to know as little about the hardware as possible.) 72 548 T
--0.08 (Sun\325) 108 524 P
--0.08 (s ) 130 524 P
-3 F
--0.08 (des) 137.58 524 P
-0 F
--0.08 ( supports only the CBC and ECB encryption modes; ) 153.57 524 P
-3 F
--0.08 (bdes) 407.07 524 P
-0 F
--0.08 ( supports all modes de-) 429.05 524 P
-0.26 (scribed in [3] \050although CFB and OFB are not completely supported\051 as well as both CBC-based) 72 504 P
-(and CFB-based MACs.) 72 484 T
-0.15 (Although input with length not a multiple of the block size is handled in the same way by) 108 460 P
--0.47 (both ) 72 440 P
-3 F
--0.47 (des) 95.85 440 P
-0 F
--0.47 ( and ) 111.84 440 P
-3 F
--0.47 (bdes) 134.21 440 P
-0 F
--0.47 (, dif) 156.19 440 P
--0.47 (ferent values of the padding bytes are used in all but the last byte of the input.) 174.82 440 P
-(Where ) 72 420 T
-3 F
-(bdes) 106.96 420 T
-0 F
-( puts zero bytes, ) 128.94 420 T
-3 F
-(des) 209.89 420 T
-0 F
-( puts bytes containing random values. The reason for Sun\325) 225.87 420 T
-(s doing) 505.02 420 T
-0.47 (so is to prevent a known plaintext attack on the \336le should an
-attacker determine that the input\325) 72 400 P
-0.47 (s) 535.33 400 P
--0.29 (length were a multiple of the block size. W) 72 380 P
--0.29 (ith ) 276.05 380 P
-3 F
--0.29 (bdes) 291.43 380 P
-0 F
--0.29 (, the plaintext contents of the last block of input) 313.41 380 P
-0.31 (for such a \336le is known \050a block with all bits zero\051. W) 72 360 P
-0.31 (ith ) 333.99 360 P
-3 F
-0.31 (des) 349.96 360 P
-0 F
-0.31 (, the plaintext contents of that block) 365.95 360 P
-0.73 (are not known. Cryptanalytically) 72 340 P
-0.73 (, given the information about the strength of the DES currently) 231.29 340 P
-0.2 (known, it is widely believed that known plaintext attacks are infeasible
-\050see for example [1]\051 and) 72 320 P
-1.86 (so initializing and invoking the pseudorandom number generator seems unnecessary) 72 300 P
-1.86 (. But this) 492.63 300 P
-(means that ciphertexts produced from a plaintext by ) 72 280 T
-3 F
-(bdes) 324.48 280 T
-0 F
-( and ) 346.47 280 T
-3 F
-(des) 369.78 280 T
-0 F
-( will dif) 385.77 280 T
-(fer in the last block.) 423.54 280 T
-4 F
-(Refer) 72 248 T
-(ences) 100.41 248 T
-0 F
-([1]) 72 224 T
-0.37 (D. Denning, \322The Data Encryption Standard: Fifteen Y) 108 224 P
-0.37 (ears of Public Scrutiny) 374.87 224 P
-0.37 (,\323 ) 484.8 224 P
-3 F
-0.37 (Pr) 496.49 224 P
-0.37 (oceed-) 508.04 224 P
--0.47 (ings of the Sixth Annual Computer Security Applications Confer) 108 204 P
--0.47 (ence) 411.65 204 P
-0 F
--0.47 ( pp. x\320xv \050Dec. 1990\051.) 433.62 204 P
-([2]) 72 180 T
-(A. Konheim, ) 108 180 T
-3 F
-(Cryptography: A Primer) 173.29 180 T
-0 F
-(, John W) 291.4 180 T
-(iley and Sons, Inc., New Y) 333.9 180 T
-(ork, NY \0501981\051.) 461.94 180 T
-([3]) 72 156 T
-3 F
-0.63 (DES Modes of Operation) 108 156 P
-0 F
-0.63 (, Federal Information Processing Standards Publication 81, Na-) 231.47 156 P
--0.07 (tional Bureau of Standards, U.S. Department of Commerce, W) 108 136 P
--0.07 (ashington, DC \050Dec. 1980\051.) 407.62 136 P
-([4]) 72 112 T
-3 F
-(UNIX User) 108 112 T
-(\325) 162.74 112 T
-(s Manual) 165.18 112 T
-0 F
-(, Sun Microsystems Inc., Mountain V) 210.16 112 T
-(iew) 390 112 T
-(, CA \050Mar) 406.54 112 T
-(. 1988\051.) 455.51 112 T
-4 F
-(Appendix. The UNIX System Manual Page for ) 72 80 T
-1 F
-(bdes) 313.2 80 T
-FMENDPAGE
-%%EndPage: "7" 10
-1 11 /Times-Bold FMDEFINEFONT
-%%Page: "8" 10
-612 792 0 FMBEGINPAGE
-72 745.99 540 756 R
-7 X
-0 K
-V
-72 32.69 540 42.7 R
-V
-0 F
-0 X
-(Page 8 of 11) 479.71 34.7 T
-72 72 540 720 R
-7 X
-V
-1 F
-0 X
-(NAME) 72 712.67 T
-0 F
-(bdes - encrypt/decrypt using the Data Encryption Standard) 108 689 T
-1 F
-(SYNOPSIS) 72 663.67 T
-4 F
-(bdes) 108 640 T
-0 F
-( [) 131.33 640 T
-3 F
-( ) 138.32 640 T
-4 F
-(-abdp) 141.32 640 T
-0 F
-( ] [ ) 171.31 640 T
-4 F
-(-F) 188.3 640 T
-0 F
-( ) 199.62 640 T
-3 F
-(b) 202.62 640 T
-0 F
-( ] [ ) 208.61 640 T
-4 F
-(-f) 225.6 640 T
-0 F
-( ) 233.58 640 T
-3 F
-(b) 236.58 640 T
-0 F
-( ] [ ) 242.58 640 T
-4 F
-(-k) 259.56 640 T
-0 F
-( ) 270.22 640 T
-3 F
-(key) 273.22 640 T
-0 F
-( ] [ ) 289.2 640 T
-4 F
-(-m) 306.18 640 T
-0 F
-( ) 320.16 640 T
-3 F
-(b) 323.16 640 T
-0 F
-( ] [ ) 329.16 640 T
-4 F
-(-o) 346.14 640 T
-0 F
-( ) 356.13 640 T
-3 F
-(b) 359.13 640 T
-0 F
-( ] [ ) 365.13 640 T
-4 F
-(-v) 382.11 640 T
-0 F
-( ) 392.1 640 T
-3 F
-(vector) 395.1 640 T
-0 F
-( ]) 425.07 640 T
-1 F
-(DESCRIPTION) 72 614.67 T
-3 F
--0.69 (Bdes) 108 591 P
-0 F
--0.69 ( reads from the standard input and writes on the standard output. It implements all DES) 131.32 591 P
--0.09 (modes of operation described in FIPS PUB 81 including alternative cipher feedback mode) 108 577 P
-0.74 (and both authentication modes. All modes but the electronic code book mode require an) 108 563 P
--0.14 (initialization vector; if none is supplied, the zero vector is used. T) 108 549 P
--0.14 (o protect the key and ini-) 420.44 549 P
-0.29 (tialization vector from being read by) 108 535 P
-3 F
-0.29 ( ps) 284.98 535 P
-0 F
-0.29 (\0501\051, ) 298.94 535 P
-3 F
-0.29 (bdes ) 319.21 535 P
-0 F
-0.29 (hides its ar) 344.48 535 P
-0.29 (guments on entry) 396.81 535 P
-0.29 (. If no ) 479.89 535 P
-3 F
-0.29 (key ) 512.74 535 P
-0 F
-0.29 (is) 532 535 P
--0.61 (given, one is requested from the controlling terminal if that can be opened, or from the stan-) 108 521 P
-(dard input if not.) 108 507 T
--0.17 (The key and initialization vector are taken as sequences of ) 108 489 P
-5 F
--0.14 (ASCII) 389.38 489 P
-0 F
--0.17 ( characters which are then) 415.48 489 P
--0.35 (mapped into their bit representations. If either begins with
-\3240x\325 or \3240X\325, that one is taken as) 108 475 P
-1.02 (a sequence of hexadecimal digits indicating the bit pattern; if either begins with \3240b\325 or) 108 461 P
--0.73 (\3240B\325, that one is taken as a sequence of binary digits
-indicating the bit pattern. In either case,) 108 447 P
--0.37 (only the leading 64 bits of the key or initialization vector are used, and if fewer than 64 bits) 108 433 P
-0.35 (are provided, enough 0 bits are appended to pad the key to 64 bits. Note that if the key is) 108 419 P
-0.03 (not entered on the command line, it is interpreted in the same way) 108 405 P
-0.03 (, because with 4.4 BSD,) 424.31 405 P
--0.36 (the password reading function ) 108 391 P
-3 F
--0.36 (getpass) 254.45 391 P
-0 F
--0.36 (\0503\051 allows enough characters for either hex or binary) 290.43 391 P
-(keys to be entered.) 108 377 T
-0.04 (According to the DES standard, the low-order bit of each character in the key string is de-) 108 359 P
--0.18 (leted. Since most ) 108 345 P
-5 F
--0.15 (ASCII) 192.75 345 P
-0 F
--0.18 ( representations set the high-order bit to 0, simply deleting the low-) 218.84 345 P
--0.29 (order bit ef) 108 331 P
--0.29 (fectively reduces the size of the key space from 2) 160.49 331 P
-5 F
--0.24 (56) 394.67 335.8 P
-0 F
--0.29 ( to 2) 404.67 331 P
-5 F
--0.24 (48) 425.41 335.8 P
-0 F
--0.29 ( keys. T) 435.4 331 P
--0.29 (o prevent this,) 472.29 331 P
--0.46 (the high-order bit must be a function depending in part upon the low-order bit; so, the high-) 108 317 P
-0.11 (order bit is set to whatever value gives odd parity) 108 303 P
-0.11 (. This preserves the key space size. Note) 345.05 303 P
-(this resetting of the parity bit is ) 108 289 T
-3 F
-(not) 260.92 289 T
-0 F
-( done if the key is given in binary or hex.) 276.24 289 T
--0.38 (By default, the standard input is encrypted using cipher block chaining mode and is written) 108 271 P
-0.18 (to the standard output. Using the same key for encryption and decryption preserves plain-) 108 257 P
-(text, so) 108 243 T
-( bdes ) 225.81 225 T
-3 F
-(key) 253.79 225 T
-0 F
-( < plaintext | bdes \320i ) 269.77 225 T
-3 F
-(key) 370.21 225 T
-0 F
-( ) 386.19 225 T
-(is a very expensive equivalent of ) 108 201 T
-3 F
-(cat) 268.54 201 T
-0 F
-(\0501\051.) 283.2 201 T
-(Options are:) 108 183 T
-( ) 108 165 T
-4 F
-(\320a) 111 165 T
-0 F
--0.75 (The key and initialization vector strings are to be taken as ) 144 165 P
-5 F
--0.62 (ASCII) 415.89 165 P
-0 F
--0.75 ( suppressing the spe-) 441.98 165 P
-0.3 (cial interpretation given to leading \3240x\325, \3240X\325, \3240b\325,
-and \3240B\325 characters. Note this) 144 151 P
-(\337ag applies to ) 144 137 T
-3 F
-(both) 214.29 137 T
-0 F
-( the key and initialization vector) 235.62 137 T
-(.) 389.85 137 T
-4 F
-(\320b) 108 119 T
-0 F
-(Use electronic code book mode.) 144 119 T
-4 F
-(\320d) 108 101 T
-0 F
-(Decrypt the input.) 144 101 T
-FMENDPAGE
-%%EndPage: "8" 11
-%%Page: "9" 11
-612 792 0 FMBEGINPAGE
-72 745.99 540 756 R
-7 X
-0 K
-V
-72 32.69 540 42.7 R
-V
-0 F
-0 X
-(Page 9 of 11) 479.71 34.7 T
-72 72 540 720 R
-7 X
-V
-4 F
-0 X
-(\320f) 108 712 T
-0 F
-( ) 117.99 712 T
-3 F
-(b) 120.99 712 T
-0 F
--0.29 (Use ) 144 712 P
-3 F
--0.29 (b) 165.36 712 P
-0 F
--0.29 (-bit cipher feedback mode. Currently ) 171.35 712 P
-3 F
--0.29 (b) 350.42 712 P
-0 F
--0.29 ( must be a multiple of 8 between 8 and) 356.42 712 P
-(64 inclusive \050this does not conform to the standard CFB mode speci\336cation\051.) 144 698 T
-4 F
-(\320F) 108 680 T
-0 F
-( ) 121.32 680 T
-3 F
-(b) 124.32 680 T
-0 F
--0.29 (Use ) 144 680 P
-3 F
--0.29 (b) 165.36 680 P
-0 F
--0.29 (-bit alternative cipher feedback mode. Currently ) 171.36 680 P
-3 F
--0.29 (b) 403.77 680 P
-0 F
--0.29 ( must be a multiple of 7 be-) 409.77 680 P
--0.12 (tween 7 and 56 inclusive \050this does not conform to the alternative CFB mode spec-) 144 666 P
-(i\336cation\051.) 144 652 T
-4 F
-(\320k) 108 634 T
-0 F
-( ) 120.67 634 T
-3 F
-(key) 123.66 634 T
-0 F
-0.37 (Use the string ) 144 616 P
-3 F
-0.37 (key) 214.74 616 P
-0 F
-0.37 ( as the cryptographic key) 230.72 616 P
-0.37 (. If this ar) 352.01 616 P
-0.37 (gument is not given, the user) 399.54 616 P
-(will be prompted for the key) 144 602 T
-(.) 280.12 602 T
-4 F
-(\320m) 108 584 T
-0 F
-( ) 123.99 584 T
-3 F
-(b) 126.99 584 T
-0 F
-0.71 (Compute a message authentication code \050MAC\051 of ) 144 584 P
-3 F
-0.71 (b) 395.78 584 P
-0 F
-0.71 ( bits on the input. ) 401.77 584 P
-3 F
-0.71 (b) 491.94 584 P
-0 F
-0.71 ( must be) 497.94 584 P
-0.11 (between 1 and 64 inclusive; if ) 144 570 P
-3 F
-0.11 (b) 291.87 570 P
-0 F
-0.11 ( is not a multiple of 8, enough 0 bits will be added) 297.86 570 P
--0.44 (to pad the MAC length to the nearest multiple of 8. Only the MAC is output. MACs) 144 556 P
-(are only available in cipher block chaining mode or in cipher feedback mode.) 144 542 T
-4 F
-(\320o) 108 524 T
-0 F
-( ) 119.99 524 T
-3 F
-(b) 122.99 524 T
-0 F
--0.34 (Use ) 144 524 P
-3 F
--0.34 (b) 165.31 524 P
-0 F
--0.34 (-bit output feedback mode. Currently ) 171.31 524 P
-3 F
--0.34 (b) 350.83 524 P
-0 F
--0.34 ( must be a multiple of 8 between 8 and) 356.83 524 P
-(64 inclusive \050this does not conform to the OFB mode speci\336cation\051.) 144 510 T
-4 F
-(\320p) 108 492 T
-0 F
--0.14 (Disable the resetting of the parity bit. This \337ag forces the parity bit of the key to be) 144 492 P
-0.03 (used as typed, rather than making each character be of odd parity) 144 478 P
-0.03 (. It is used only if) 455.91 478 P
-(the key is given in ) 144 464 T
-5 F
-(ASCII) 234.95 464 T
-0 F
-(.) 261.04 464 T
-4 F
-(\320v) 108 446 T
-0 F
-( ) 119.99 446 T
-3 F
-(vector) 122.99 446 T
-0 F
--0.5 (Set the initialization vector to ) 144 428 P
-3 F
--0.5 (v) 286.44 428 P
-0 F
--0.5 (; the vector is interpreted in the same way as the key) 291.76 428 P
--0.5 (.) 537 428 P
-(The vector is ignored in electronic codebook mode.) 144 414 T
--0.55 (The DES is considered a very strong cryptosystem, and other than table lookup attacks, key) 108 396 P
-0.24 (search attacks, and Hellman\325) 108 382 P
-0.24 (s time-memory tradeof) 246.61 382 P
-0.24 (f \050all of which are very expensive and) 356.8 382 P
-0.66 (time-consuming\051, no cryptanalytic methods for breaking the DES are known in the open) 108 368 P
-0.33 (literature. No doubt the choice of keys and key security are the most vulnerable aspect of) 108 354 P
-3 F
-(bdes) 108 340 T
-0 F
-(.) 129.98 340 T
-4 F
-(IMPLEMENT) 72 314 T
-(A) 146.41 314 T
-(TION NOTES) 154.18 314 T
-0 F
-0.57 (For implementors wishing to write software compatible with this program, the following) 108 290 P
--0.23 (notes are provided. This software is completely compatible with the implementation of the) 108 276 P
-(data encryption standard distributed by Sun Microsystems, Inc.) 108 262 T
-0.11 (In the ECB and CBC modes, plaintext is encrypted in units of 64 bits \0508 bytes, also called) 108 244 P
-0.52 (a block\051. T) 108 230 P
-0.52 (o ensure that the plaintext \336le is encrypted correctly) 160.49 230 P
-0.52 (, ) 413.01 230 P
-3 F
-0.52 (bdes ) 419.53 230 P
-0 F
-0.52 (will \050internally\051 ap-) 445.03 230 P
-0.29 (pend from 1 to 8 bytes, the last byte containing an integer stating how many bytes of that) 108 216 P
--0.71 (\336nal block are from the plaintext \336le, and encrypt the resulting block. Hence, when decrypt-) 108 202 P
-0.27 (ing, the last block may contain from 0 to 7 characters present in the plaintext \336le, and the) 108 188 P
--0.59 (last byte tells how many) 108 174 P
--0.59 (. Note that if during decryption the last byte of the \336le does not con-) 221.46 174 P
-0.41 (tain an integer between 0 and 7, either the \336le has been corrupted or an incorrect key has) 108 160 P
-0.48 (been given. A similar mechanism is used for the OFB and CFB modes, except that those) 108 146 P
-0.26 (simply require the length of the input to be a multiple of the mode size, and the \336nal byte) 108 132 P
--0.73 (contains an integer between 0 and one less than the number of bytes being used as the mode.) 108 118 P
-(\050This was another reason that the mode size must be a multiple of 8 for those modes.\051) 108 104 T
-FMENDPAGE
-%%EndPage: "9" 12
-%%Page: "10" 12
-612 792 0 FMBEGINPAGE
-72 745.99 540 756 R
-7 X
-0 K
-V
-72 32.69 540 42.7 R
-V
-0 F
-0 X
-(Page 10 of 11) 473.71 34.7 T
-72 72 540 720 R
-7 X
-V
-0 X
-0.94 (Unlike Sun\325) 108 712 P
-0.94 (s implementation, unused bytes of that last block are not \336lled with random) 166.58 712 P
-0.57 (data, but instead contain what was in those byte positions in the preceding block. This is) 108 698 P
-(quicker and more portable, and does not weaken the encryption signi\336cantly) 108 684 T
-(.) 473.95 684 T
-0.36 (If the key is entered in ) 108 666 P
-5 F
-0.3 (ASCII) 220.76 666 P
-0 F
-0.36 (, the parity bits of the key characters are set so that each key) 246.85 666 P
-1.03 (character is of odd parity) 108 652 P
-1.03 (. Unlike Sun\325) 231.23 652 P
-1.03 (s implementation, it is possible to enter binary or) 296.92 652 P
--0.57 (hexadecimal keys on the command line, and if this is done, the parity bits are ) 108 638 P
-3 F
--0.57 (not ) 472.85 638 P
-0 F
--0.57 (reset. This) 490.61 638 P
-(allows testing using arbitrary bit patterns as keys.) 108 624 T
-0.64 (The Sun implementation always uses an initialization vector of 0 \050that is, all zeroes\051. By) 108 606 P
-(default, ) 108 592 T
-3 F
-(bdes ) 147.3 592 T
-0 F
-(does too, but this may be changed from the command line.) 172.29 592 T
-4 F
-(FILES) 72 566 T
-0 F
-(/dev/tty) 108 542 T
-(controlling terminal for typed key) 180 542 T
-4 F
-(SEE ALSO) 72 516 T
-3 F
-(crypt) 108 492 T
-0 F
-(\0501\051, ) 132.65 492 T
-3 F
-(crypt) 152.63 492 T
-0 F
-(\0503\051) 177.27 492 T
-3 F
--0.4 (Data Encryption Standar) 108 474 P
--0.4 (d) 228.02 474 P
-0 F
--0.4 (, Federal Information Processing Standard #46, National Bureau) 234.02 474 P
-(of Standards, U.S. Department of Commerce, W) 108 460 T
-(ashington DC \050Jan. 1977\051.) 340.2 460 T
-3 F
-0.16 (DES) 108 442 P
-0 F
-0.16 ( ) 129.98 442 P
-3 F
-0.16 (Modes of Operation, ) 133.15 442 P
-0 F
-0.16 (Federal Information Processing Standard #81, National Bureau) 236.24 442 P
-(of Standards, U.S. Department of Commerce, W) 108 428 T
-(ashington DC \050Dec. 1980\051.) 340.2 428 T
-2.75 (Dorothy Denning, ) 108 410 P
-3 F
-2.75 (Cryptography and Data Security) 203.77 410 P
-0 F
-2.75 (, Addison-W) 368.8 410 P
-2.75 (esley Publishing Co.,) 432.55 410 P
-(Reading, MA \2511982.) 108 396 T
--0.19 ( Matt Bishop, \322Implementation Notes on ) 108 378 P
-3 F
--0.19 (bdes) 305.76 378 P
-0 F
--0.19 (\0501\051\323, T) 327.75 378 P
--0.19 (echnical Report PCS-TR-91-158, De-) 359.35 378 P
-0.34 (partment of Mathematics and Computer Science, Dartmouth College, Hanover) 108 364 P
-0.34 (, NH \050Apr) 488.01 364 P
-0.34 (.) 537 364 P
-(1991\051.) 108 350 T
-4 F
-(CAUTION) 72 324 T
-0 F
--0.55 (Certain speci\336c keys should be avoided because they introduce potential weaknesses; these) 108 300 P
--0.44 (keys, called the ) 108 286 P
-3 F
--0.44 (weak) 183.95 286 P
-0 F
--0.44 ( and ) 208.6 286 P
-3 F
--0.44 (semiweak) 231.03 286 P
-0 F
--0.44 ( keys, are \050in hex notation, where ) 277.66 286 P
-6 F
--1.06 (p) 437.45 286 P
-0 F
--0.44 ( is either ) 444.64 286 P
-6 F
--1.06 (0) 487.63 286 P
-0 F
--0.44 ( or ) 494.82 286 P
-6 F
--1.06 (1) 509.93 286 P
-0 F
--0.44 (, and) 517.12 286 P
-6 F
-(P) 108 272 T
-0 F
-( is either ) 115.2 272 T
-6 F
-(e) 159.5 272 T
-0 F
-( or ) 166.7 272 T
-6 F
-(f) 182.68 272 T
-0 F
-(\051:) 189.88 272 T
-6 F
-(0x0p0p0p0p0p0p0p0p) 144 254 T
-(0x0p1P0p1P0p0P0p0P) 360 254 T
-(0x0pep0pep0pfp0pfp) 144 236 T
-(0x0pfP0pfP0pfP0pfP) 360 236 T
-(0x1P0p1P0p0P0p0P0p) 144 218 T
-(0x1P1P1P1P0P0P0P0P) 360 218 T
-(0x1Pep1Pep0Pfp0Pfp) 144 200 T
-(0x1PfP1PfP0PfP0PfP) 360 200 T
-(0xep0pep0pfp0pfp0p) 144 182 T
-(0xep1Pep1pfp0Pfp0P) 360 182 T
-(0xepepepepepepepep) 144 164 T
-(0xepfPepfPfpfPfpfP) 360 164 T
-(0xfP0pfP0pfP0pfP0p) 144 146 T
-(0xfP1PfP1PfP0PfP0P) 360 146 T
-(0xfPepfPepfPepfPep) 144 128 T
-(0xfPfPfPfPfPfPfPfP) 360 128 T
-0 F
-0.13 (The weakness of these keys is inherent in the DES algorithm \050see for example Moore and) 108 110 P
--0.57 (Simmons, \322Cycle structure of the DES with weak and semi-weak keys,\323) 108 96 P
-3 F
--0.57 ( Advances in Cryp-) 449.43 96 P
-(tology \320 Crypto \32486 Pr) 108 82 T
-(oceedings) 216.83 82 T
-0 F
-(, Springer) 264.79 82 T
-(-V) 311.85 82 T
-(erlag New Y) 323.17 82 T
-(ork, \2511987, pp. 9-32\051.) 383.25 82 T
-FMENDPAGE
-%%EndPage: "10" 13
-%%Page: "11" 13
-612 792 0 FMBEGINPAGE
-72 745.99 540 756 R
-7 X
-0 K
-V
-72 32.69 540 42.7 R
-V
-0 F
-0 X
-(Page 11 of 11) 473.71 34.7 T
-72 72 540 720 R
-7 X
-V
-4 F
-0 X
-(BUGS) 72 712 T
-0 F
--0.18 (There is a controversy raging over whether the DES will still be secure in a few years. The) 108 688 P
-0.31 (advent of special-purpose hardware could reduce the cost of any of the methods of attack) 108 674 P
-(named above so that they are no longer computationally infeasible.) 108 660 T
-0.32 (Programs which display programs\325 ar) 108 642 P
-0.32 (guments may compromise the key and initialization) 289.59 642 P
-0.76 (vector if they are speci\336ed on the command line. T) 108 628 P
-0.76 (o avoid this ) 358.46 628 P
-3 F
-0.76 (bdes) 419.7 628 P
-0 F
-0.76 ( overwrites its ar) 441.68 628 P
-0.76 (gu-) 524.01 628 P
-(ments. However) 108 614 T
-(, the obvious race cannot currently be avoided.) 186.12 614 T
-0.25 (As the key or key schedule is kept in memory throughout the run of this program, the en-) 108 596 P
-(cryption can be compromised if memory is readable.) 108 582 T
--0.4 (There is no warranty of merchantability nor any warranty of \336tness for a particular purpose) 108 564 P
-0.05 (nor any other warranty) 108 550 P
-0.05 (, either express or implied, as to the accuracy of the enclosed mate-) 216.95 550 P
-(rials or as to their suitability for any particular purpose.) 108 536 T
--0.06 (Accordingly) 108 518 P
--0.06 (, the user assumes full responsibility for their use. Further) 167.18 518 P
--0.06 (, the author assumes) 442.93 518 P
--0.25 (no obligation to furnish any assistance of any kind whatsoever) 108 504 P
--0.25 (, or to furnish any additional) 404.69 504 P
-(information or documentation.) 108 490 T
-4 F
-(AUTHOR) 72 464 T
-0 F
--0.54 (Matt Bishop, Department of Mathematics and Computer Science, Bradley Hall, Dartmouth) 108 440 P
-(College, Hanover) 108 426 T
-(, NH 03755) 192.12 426 T
-(Electronic mail addresses:) 108 408 T
-(Internet: Matt.Bishop@dartmouth.edu) 108 390 T
-(UUCP: decvax!dartvax!Matt.Bishop) 108 372 T
-FMENDPAGE
-%%EndPage: "11" 14
-%%Trailer
-%%BoundingBox: 0 0 612 792
-%%Pages: 13 1
-%%DocumentFonts: Helvetica-Bold
-%%+ Helvetica-BoldOblique
-%%+ Times-Roman
-%%+ Times-Bold
-%%+ Times-BoldItalic
-%%+ Times-Italic
-%%+ Courier
-%%+ Courier-Oblique
-%%+ ZapfDingbats
-%%+ Symbol
-%%+ Courier-Bold
diff --git a/secure/usr.bin/telnet/Makefile b/secure/usr.bin/telnet/Makefile
deleted file mode 100644
index daa17a32324e..000000000000
--- a/secure/usr.bin/telnet/Makefile
+++ /dev/null
@@ -1,91 +0,0 @@
-#
-# Copyright (c) 1990 The Regents of the University of California.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-# @(#)Makefile 8.1 (Berkeley) 6/6/93
-#
-
-PROG= telnet
-DISTRIBUTION= krb
-
-CFLAGS+=-DTERMCAP -DKLUDGELINEMODE -DUSE_TERMIO
-CFLAGS+=-DENV_HACK
-CFLAGS+=-I${.CURDIR}/../../lib
-LDADD+= -L${TELNETOBJDIR} -ltermcap -ltelnet
-DPADD+= ${TELNETOBJDIR}/libtelnet.a
-
-#ifdef ENCRYPTION
-
-CFLAGS+=-DAUTHENTICATION -DENCRYPTION
-
-.if exists(/usr/lib/libkrb.a)
-CFLAGS+= -DKRB4
-LDADD+= -ldes -lkrb
-.endif
-
-.if exists(/usr/lib/libkrb5.a)
-CFLAGS+= -DKRB5 -DFORWARD
-LDADD+= -ldes -lkrb5
-.endif
-
-# Used only in krb4encpwd.c and rsaencpwd.c (libtelnet), not yet active
-#LDADD+= -ldescrypt
-
-#endif /* ENCRYPTION */
-
-DPADD= ${LIBTERMCAP}
-
-SRCS= authenc.c commands.c main.c network.c ring.c sys_bsd.c telnet.c \
- terminal.c tn3270.c utilities.c
-
-# These are the sources that have encryption stuff in them.
-CRYPT_SRC= authenc.c commands.c externs.h main.c network.c
-CRYPT_SRC+= ring.c ring.h telnet.c terminal.c utilities.c Makefile
-NOCRYPT_DIR=${.CURDIR}/Nocrypt
-
-.include <bsd.prog.mk>
-
-nocrypt:
-#ifdef ENCRYPTION
- @for i in ${CRYPT_SRC}; do \
- if [ ! -d ${NOCRYPT_DIR} ]; then \
- echo Creating subdirectory ${NOCRYPT_DIR}; \
- mkdir ${NOCRYPT_DIR}; \
- fi; \
- echo ${NOCRYPT_DIR}/$$i; \
- unifdef -UENCRYPTION ${.CURDIR}/$$i | \
- sed "s/ || defined(ENCRYPTION)//" > ${NOCRYPT_DIR}/$$i; \
- done
-
-placeholder:
-#else /* ENCRYPTION */
- @echo "Encryption code already removed."
-#endif /* ENCRYPTION */
diff --git a/secure/usr.bin/telnet/README b/secure/usr.bin/telnet/README
deleted file mode 100644
index 086c88f29500..000000000000
--- a/secure/usr.bin/telnet/README
+++ /dev/null
@@ -1,566 +0,0 @@
-
-
-This is a distribution of both client and server telnet. These programs
-have been compiled on:
- telnet telnetd
- BSD 4.3 Reno X X
- UNICOS 5.1 X X
- UNICOS 6.0 X X
- UNICOS 6.1 X X
- UNICOS 7.0 X X
- SunOs 3.5 X X (no linemode in server)
- SunOs 4.1 X X (no linemode in server)
- DYNIX V3.0.17.9 X X (no linemode in server)
- Ultrix 3.1 X X (no linemode in server)
- Ultrix 4.0 X X (no linemode in server)
-
-In addition, previous versions have been compiled on the following
-machines, but were not available for testing this version.
- telnet telnetd
- SunOs 4.0.3c X X (no linemode in server)
- BSD 4.3 X X (no linemode in server)
- DYNIX V3.0.12 X X (no linemode in server)
-
-Februrary 22, 1991:
-
- Features:
-
- This version of telnet/telnetd has support for both
- the AUTHENTICATION and ENCRYPTION options. The
- AUTHENTICATION option is fairly well defined, and
- an option number has been assigned to it. The
- ENCRYPTION option is still in a state of flux; an
- option number has NOT been assigned to it yet.
- The code is provided in this release for experimental
- and testing purposes.
-
- The telnet "send" command can now be used to send
- do/dont/will/wont commands, with any telnet option
- name. The rules for when do/dont/will/wont are sent
- are still followed, so just because the user requests
- that one of these be sent doesn't mean that it will
- be sent...
-
- The telnet "getstatus" command no longer requires
- that option printing be enabled to see the response
- to the "DO STATUS" command.
-
- A -n flag has been added to telnetd to disable
- keepalives.
-
- A new telnet command, "auth" has been added (if
- AUTHENTICATE is defined). It has four sub-commands,
- "status", "debug", "disable", "enable" and "help".
-
- A new telnet command, "encrypt" has been added (if
- ENCRYPT is defined). It has many sub-commands:
- "enable", "type", "start", "stop", "input",
- "-input", "output", "-output", "status", "auto",
- "verbose", "debug", and "help".
-
- An "rlogin" interface has been added. If the program
- is named "rlogin", or the "-r" flag is given, then
- an rlogin type of interface will be used.
- ~. Terminates the session
- ~<susp> Suspend the session
- ~^] Escape to telnet command mode
- ~~ Pass through the ~.
- BUG: If you type the rlogin escape character
- in the middle of a line while in rlogin
- mode, you cannot erase it or any characters
- before it. Hopefully this can be fixed
- in a future release...
-
- General changes:
-
- A "libtelnet.a" has now been created. This libraray
- contains code that is common to both telnet and
- telnetd. This is also where library routines that
- are needed, but are not in the standard C library,
- are placed.
-
- The makefiles have been re-done. All of the site
- specific configuration information has now been put
- into a single "Config.generic" file, in the top level
- directory. Changing this one file will take care of
- all three subdirectories. Also, to add a new/local
- definition, a "Config.local" file may be created
- at the top level; if that file exists, the subdirectories
- will use that file instead of "Config.generic".
-
- Many 1-2 line functions in commands.c have been
- removed, and just inserted in-line, or replaced
- with a macro.
-
- Bug Fixes:
-
- The non-termio code in both telnet and telnetd was
- setting/clearing CTLECH in the sg_flags word. This
- was incorrect, and has been changed to set/clear the
- LCTLECH bit in the local mode word.
-
- The SRCRT #define has been removed. If IP_OPTIONS
- and IPPROTO_IP are defined on the system, then the
- source route code is automatically enabled.
-
- The NO_GETTYTAB #define has been removed; there
- is a compatability routine that can be built into
- libtelnet to achive the same results.
-
- The server, telnetd, has been switched to use getopt()
- for parsing the argument list.
-
- The code for getting the input/output speeds via
- cfgetispeed()/cfgetospeed() was still not quite
- right in telnet. Posix says if the ispeed is 0,
- then it is really equal to the ospeed.
-
- The suboption processing code in telnet now has
- explicit checks to make sure that we received
- the entire suboption (telnetd was already doing this).
-
- The telnet code for processing the terminal type
- could cause a core dump if an existing connection
- was closed, and a new connection opened without
- exiting telnet.
-
- Telnetd was doing a TCSADRAIN when setting the new
- terminal settings; This is not good, because it means
- that the tcsetattr() will hang waiting for output to
- drain, and telnetd is the only one that will drain
- the output... The fix is to use TCSANOW which does
- not wait.
-
- Telnetd was improperly setting/clearing the ISTRIP
- flag in the c_lflag field, it should be using the
- c_iflag field.
-
- When the child process of telnetd was opening the
- slave side of the pty, it was re-setting the EXTPROC
- bit too early, and some of the other initialization
- code was wiping it out. This would cause telnetd
- to go out of linemode and into single character mode.
-
- One instance of leaving linemode in telnetd forgot
- to send a WILL ECHO to the client, the net result
- would be that the user would see double character
- echo.
-
- If the MODE was being changed several times very
- quickly, telnetd could get out of sync with the
- state changes and the returning acks; and wind up
- being left in the wrong state.
-
-September 14, 1990:
-
- Switch the client to use getopt() for parsing the
- argument list. The 4.3Reno getopt.c is included for
- systems that don't have getopt().
-
- Use the posix _POSIX_VDISABLE value for what value
- to use when disabling special characters. If this
- is undefined, it defaults to 0x3ff.
-
- For non-termio systems, TIOCSETP was being used to
- change the state of the terminal. This causes the
- input queue to be flushed, which we don't want. This
- is now changed to TIOCSETN.
-
- Take out the "#ifdef notdef" around the code in the
- server that generates a "sync" when the pty oputput
- is flushed. The potential problem is that some older
- telnet clients may go into an infinate loop when they
- receive a "sync", if so, the server can be compiled
- with "NO_URGENT" defined.
-
- Fix the client where it was setting/clearing the OPOST
- bit in the c_lflag field, not the c_oflag field.
-
- Fix the client where it was setting/clearing the ISTRIP
- bit in the c_lflag field, not the c_iflag field. (On
- 4.3Reno, this is the ECHOPRT bit in the c_lflag field.)
- The client also had its interpretation of WILL BINARY
- and DO BINARY reversed.
-
- Fix a bug in client that would cause a core dump when
- attempting to remove the last environment variable.
-
- In the client, there were a few places were switch()
- was being passed a character, and if it was a negative
- value, it could get sign extended, and not match
- the 8 bit case statements. The fix is to and the
- switch value with 0xff.
-
- Add a couple more printoption() calls in the client, I
- don't think there are any more places were a telnet
- command can be received and not printed out when
- "options" is on.
-
- A new flag has been added to the client, "-a". Currently,
- this just causes the USER name to be sent across, in
- the future this may be used to signify that automatic
- authentication is requested.
-
- The USER variable is now only sent by the client if
- the "-a" or "-l user" options are explicity used, or
- if the user explicitly asks for the "USER" environment
- variable to be exported. In the server, if it receives
- the "USER" environment variable, it won't print out the
- banner message, so that only "Password:" will be printed.
- This makes the symantics more like rlogin, and should be
- more familiar to the user. (People are not used to
- getting a banner message, and then getting just a
- "Password:" prompt.)
-
- Re-vamp the code for starting up the child login
- process. The code was getting ugly, and it was
- hard to tell what was really going on. What we
- do now is after the fork(), in the child:
- 1) make sure we have no controlling tty
- 2) open and initialize the tty
- 3) do a setsid()/setpgrp()
- 4) makes the tty our controlling tty.
- On some systems, #2 makes the tty our controlling
- tty, and #4 is a no-op. The parent process does
- a gets rid of any controlling tty after the child
- is fork()ed.
-
- Use the strdup() library routine in telnet, instead
- of the local savestr() routine. If you don't have
- strdup(), you need to define NO_STRDUP.
-
- Add support for ^T (SIGINFO/VSTATUS), found in the
- 4.3Reno distribution. This maps to the AYT character.
- You need a 4-line bugfix in the kernel to get this
- to work properly:
-
- > *** tty_pty.c.ORG Tue Sep 11 09:41:53 1990
- > --- tty_pty.c Tue Sep 11 17:48:03 1990
- > ***************
- > *** 609,613 ****
- > if ((tp->t_lflag&NOFLSH) == 0)
- > ttyflush(tp, FREAD|FWRITE);
- > ! pgsignal(tp->t_pgrp, *(unsigned int *)data);
- > return(0);
- > }
- > --- 609,616 ----
- > if ((tp->t_lflag&NOFLSH) == 0)
- > ttyflush(tp, FREAD|FWRITE);
- > ! pgsignal(tp->t_pgrp, *(unsigned int *)data, 1);
- > ! if ((*(unsigned int *)data == SIGINFO) &&
- > ! ((tp->t_lflag&NOKERNINFO) == 0))
- > ! ttyinfo(tp);
- > return(0);
- > }
-
- The client is now smarter when setting the telnet escape
- character; it only sets it to one of VEOL and VEOL2 if
- one of them is undefined, and the other one is not already
- defined to the telnet escape character.
-
- Handle TERMIOS systems that have seperate input and output
- line speed settings imbedded in the flags.
-
- Many other minor bug fixes.
-
-June 20, 1990:
- Re-organize makefiles and source tree. The telnet/Source
- directory is now gone, and all the source that was in
- telnet/Source is now just in the telnet directory.
-
- Seperate makefile for each system are now gone. There
- are two makefiles, Makefile and Makefile.generic.
- The "Makefile" has the definitions for the various
- system, and "Makefile.generic" does all the work.
- There is a variable called "WHAT" that is used to
- specify what to make. For example, in the telnet
- directory, you might say:
- make 4.4bsd WHAT=clean
- to clean out the directory.
-
- Add support for the ENVIRON and XDISPLOC options.
- In order for the server to work, login has to have
- the "-p" option to preserve environment variables.
-
- Add the SOFT_TAB and LIT_ECHO modes in the LINEMODE support.
-
- Add the "-l user" option to command line and open command
- (This is passed through the ENVIRON option).
-
- Add the "-e" command line option, for setting the escape
- character.
-
- Add the "-D", diagnostic, option to the server. This allows
- the server to print out debug information, which is very
- useful when trying to debug a telnet that doesn't have any
- debugging ability.
-
- Turn off the literal next character when not in LINEMODE.
-
- Don't recognize ^Y locally, just pass it through.
-
- Make minor modifications for Sun4.0 and Sun4.1
-
- Add support for both FORW1 and FORW2 characters. The
- telnet escpape character is set to whichever of the
- two is not being used. If both are in use, the escape
- character is not set, so when in linemode the user will
- have to follow the escape character with a <CR> or <EOF)
- to get it passed through.
-
- Commands can now be put in single and double quotes, and
- a backslash is now an escape character. This is needed
- for allowing arbitrary strings to be assigned to environment
- variables.
-
- Switch telnetd to use macros like telnet for keeping
- track of the state of all the options.
-
- Fix telnetd's processing of options so that we always do
- the right processing of the LINEMODE option, regardless
- of who initiates the request to turn it on. Also, make
- sure that if the other side went "WILL ECHO" in response
- to our "DO ECHO", that we send a "DONT ECHO" to get the
- option turned back off!
-
- Fix the TERMIOS setting of the terminal speed to handle both
- BSD's seperate fields, and the SYSV method of CBAUD bits.
-
- Change how we deal with the other side refusing to enable
- an option. The sequence used to be: send DO option; receive
- WONT option; send DONT option. Now, the sequence is: send
- DO option; receive WONT option. Both should be valid
- according to the spec, but there has been at least one
- client implementation of telnet identified that can get
- really confused by this. (The exact sequence, from a trace
- on the server side, is (numbers are number of responses that
- we expect to get after that line...):
-
- send WILL ECHO 1 (initial request)
- send WONT ECHO 2 (server is changing state)
- recv DO ECHO 1 (first reply, ok. expect DONT ECHO next)
- send WILL ECHO 2 (server changes state again)
- recv DONT ECHO 1 (second reply, ok. expect DO ECHO next)
- recv DONT ECHO 0 (third reply, wrong answer. got DONT!!!)
- *** send WONT ECHO (send WONT to acknowledge the DONT)
- send WILL ECHO 1 (ask again to enable option)
- recv DO ECHO 0
-
- recv DONT ECHO 0
- send WONT ECHO 1
- recv DONT ECHO 0
- recv DO ECHO 1
- send WILL ECHO 0
- (and the last 5 lines loop forever)
-
- The line with the "***" is last of the WILL/DONT/WONT sequence.
- The change to the server to not generate that makes this same
- example become:
-
- send will ECHO 1
- send wont ECHO 2
- recv do ECHO 1
- send will ECHO 2
- recv dont ECHO 1
- recv dont ECHO 0
- recv do ECHO 1
- send will ECHO 0
-
- There is other option negotiation going on, and not sending
- the third part changes some of the timings, but this specific
- example no longer gets stuck in a loop. The "telnet.state"
- file has been modified to reflect this change to the algorithm.
-
- A bunch of miscellaneous bug fixes and changes to make
- lint happier.
-
- This version of telnet also has some KERBEROS stuff in
- it. This has not been tested, it uses an un-authorized
- telnet option number, and uses an out-of-date version
- of the (still being defined) AUTHENTICATION option.
- There is no support for this code, do not enable it.
-
-
-March 1, 1990:
-CHANGES/BUGFIXES SINCE LAST RELEASE:
- Some support for IP TOS has been added. Requires that the
- kernel support the IP_TOS socket option (currently this
- is only in UNICOS 6.0).
-
- Both telnet and telnetd now use the cc_t typedef. typedefs are
- included for systems that don't have it (in termios.h).
-
- SLC_SUSP was not supported properly before. It is now.
-
- IAC EOF was not translated properly in telnetd for SYSV_TERMIO
- when not in linemode. It now saves a copy of the VEOF character,
- so that when ICANON is turned off and we can't trust it anymore
- (because it is now the VMIN character) we use the saved value.
-
- There were two missing "break" commands in the linemode
- processing code in telnetd.
-
- Telnetd wasn't setting the kernel window size information
- properly. It was using the rows for both rows and columns...
-
-Questions/comments go to
- David Borman
- Cray Research, Inc.
- 655F Lone Oak Drive
- Eagan, MN 55123
- dab@cray.com.
-
-README: You are reading it.
-
-Config.generic:
- This file contains all the OS specific definitions. It
- has pre-definitions for many common system types, and is
- in standard makefile fromat. See the comments at the top
- of the file for more information.
-
-Config.local:
- This is not part of the distribution, but if this file exists,
- it is used instead of "Config.generic". This allows site
- specific configuration without having to modify the distributed
- "Config.generic" file.
-
-kern.diff:
- This file contains the diffs for the changes needed for the
- kernel to support LINEMODE is the server. These changes are
- for a 4.3BSD system. You may need to make some changes for
- your particular system.
-
- There is a new bit in the terminal state word, TS_EXTPROC.
- When this bit is set, several aspects of the terminal driver
- are disabled. Input line editing, character echo, and
- mapping of signals are all disabled. This allows the telnetd
- to turn of these functions when in linemode, but still keep
- track of what state the user wants the terminal to be in.
-
- New ioctl()s:
-
- TIOCEXT Turn on/off the TS_EXTPROC bit
- TIOCGSTATE Get t_state of tty to look at TS_EXTPROC bit
- TIOCSIG Generate a signal to processes in the
- current process group of the pty.
-
- There is a new mode for packet driver, the TIOCPKT_IOCTL bit.
- When packet mode is turned on in the pty, and the TS_EXTPROC
- bit is set, then whenever the state of the pty is changed, the
- next read on the master side of the pty will have the TIOCPKT_IOCTL
- bit set, and the data will contain the following:
- struct xx {
- struct sgttyb a;
- struct tchars b;
- struct ltchars c;
- int t_state;
- int t_flags;
- }
- This allows the process on the server side of the pty to know
- when the state of the terminal has changed, and what the new
- state is.
-
- However, if you define USE_TERMIO or SYSV_TERMIO, the code will
- expect that the structure returned in the TIOCPKT_IOCTL is
- the termio/termios structure.
-
-stty.diff:
- This file contains the changes needed for the stty(1) program
- to report on the current status of the TS_EXTPROC bit. It also
- allows the user to turn on/off the TS_EXTPROC bit. This is useful
- because it allows the user to say "stty -extproc", and the
- LINEMODE option will be automatically disabled, and saying "stty
- extproc" will re-enable the LINEMODE option.
-
-telnet.state:
- Both the client and server have code in them to deal
- with option negotiation loops. The algorithm that is
- used is described in this file.
-
-tmac.doc:
- Macros for use in formatting the man pages on non-4.3Reno
- systems.
-
-telnet:
- This directory contains the client code. No kernel changes are
- needed to use this code.
-
-telnetd:
- This directory contains the server code. If LINEMODE or KLUDGELINEMODE
- are defined, then the kernel modifications listed above are needed.
-
-libtelnet:
- This directory contains code that is common to both the client
- and the server.
-
-arpa:
- This directory has a new <arpa/telnet.h>
-
-
-The following TELNET options are supported:
-
- LINEMODE:
- The LINEMODE option is supported as per RFC1116. The
- FORWARDMASK option is not currently supported.
-
- BINARY: The client has the ability to turn on/off the BINARY
- option in each direction. Turning on BINARY from
- server to client causes the LITOUT bit to get set in
- the terminal driver on both ends, turning on BINARY
- from the client to the server causes the PASS8 bit
- to get set in the terminal driver on both ends.
-
- TERMINAL-TYPE:
- This is supported as per RFC1091. On the server side,
- when a terminal type is received, termcap/terminfo
- is consulted to determine if it is a known terminal
- type. It keeps requesting terminal types until it
- gets one that it recongnizes, or hits the end of the
- list. The server side looks up the entry in the
- termcap/terminfo data base, and generates a list of
- names which it then passes one at a time to each
- request for a terminal type, duplicating the last
- entry in the list before cycling back to the beginning.
-
- NAWS: The Negotiate about Window Size, as per RFC 1073.
-
- TERMINAL-SPEED:
- Implemented as per RFC 1079
-
- TOGGLE-FLOW-CONTROL:
- Implemented as per RFC 1080
-
- TIMING-MARK:
- As per RFC 860
-
- SGA: As per RFC 858
-
- ECHO: As per RFC 857
-
- STATUS:
- The server will send its current status upon
- request. It does not ask for the clients status.
- The client will request the servers current status
- from the "send getstatus" command.
-
- ENVIRON:
- This option is currently being defined by the IETF
- Telnet Working Group, and an RFC has not yet been
- issued, but should be in the near future...
-
- X-DISPLAY-LOCATION:
- This functionality can be done through the ENVIRON
- option, it is added here for completeness.
-
- AUTHENTICATION:
- This option is currently being defined by the IETF
- Telnet Working Group, and an RFC has not yet been
- issued. The basic framework is pretty much decided,
- but the definitions for the specific authentication
- schemes is still in a state of flux.
-
- ENCRYPT:
- This option is currently being defined by the IETF
- Telnet Working Group, and an RFC has not yet been
- issued. The draft RFC is still in a state of flux,
- so this code may change in the future.
diff --git a/secure/usr.bin/telnet/commands.c b/secure/usr.bin/telnet/commands.c
deleted file mode 100644
index a6967b53940b..000000000000
--- a/secure/usr.bin/telnet/commands.c
+++ /dev/null
@@ -1,2945 +0,0 @@
-/*
- * Copyright (c) 1988, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)commands.c 8.4 (Berkeley) 5/30/95";
-#endif /* not lint */
-
-#if defined(unix)
-#include <sys/param.h>
-#if defined(CRAY) || defined(sysV88)
-#include <sys/types.h>
-#endif
-#include <sys/file.h>
-#else
-#include <sys/types.h>
-#endif /* defined(unix) */
-#include <sys/socket.h>
-#include <netinet/in.h>
-#ifdef CRAY
-#include <fcntl.h>
-#endif /* CRAY */
-
-#include <signal.h>
-#include <netdb.h>
-#include <ctype.h>
-#include <pwd.h>
-#include <varargs.h>
-#include <errno.h>
-
-#include <arpa/telnet.h>
-
-#include "general.h"
-
-#include "ring.h"
-
-#include "externs.h"
-#include "defines.h"
-#include "types.h"
-
-#if !defined(CRAY) && !defined(sysV88)
-#include <netinet/in_systm.h>
-# if (defined(vax) || defined(tahoe) || defined(hp300)) && !defined(ultrix)
-# include <machine/endian.h>
-# endif /* vax */
-#endif /* !defined(CRAY) && !defined(sysV88) */
-#include <netinet/ip.h>
-
-
-#ifndef MAXHOSTNAMELEN
-#define MAXHOSTNAMELEN 64
-#endif MAXHOSTNAMELEN
-
-#if defined(IPPROTO_IP) && defined(IP_TOS)
-int tos = -1;
-#endif /* defined(IPPROTO_IP) && defined(IP_TOS) */
-
-char *hostname;
-static char _hostname[MAXHOSTNAMELEN];
-
-extern char *getenv();
-
-extern int isprefix();
-extern char **genget();
-extern int Ambiguous();
-
-static call();
-
-typedef struct {
- char *name; /* command name */
- char *help; /* help string (NULL for no help) */
- int (*handler)(); /* routine which executes command */
- int needconnect; /* Do we need to be connected to execute? */
-} Command;
-
-static char line[256];
-static char saveline[256];
-static int margc;
-static char *margv[20];
-
- static void
-makeargv()
-{
- register char *cp, *cp2, c;
- register char **argp = margv;
-
- margc = 0;
- cp = line;
- if (*cp == '!') { /* Special case shell escape */
- strcpy(saveline, line); /* save for shell command */
- *argp++ = "!"; /* No room in string to get this */
- margc++;
- cp++;
- }
- while (c = *cp) {
- register int inquote = 0;
- while (isspace(c))
- c = *++cp;
- if (c == '\0')
- break;
- *argp++ = cp;
- margc += 1;
- for (cp2 = cp; c != '\0'; c = *++cp) {
- if (inquote) {
- if (c == inquote) {
- inquote = 0;
- continue;
- }
- } else {
- if (c == '\\') {
- if ((c = *++cp) == '\0')
- break;
- } else if (c == '"') {
- inquote = '"';
- continue;
- } else if (c == '\'') {
- inquote = '\'';
- continue;
- } else if (isspace(c))
- break;
- }
- *cp2++ = c;
- }
- *cp2 = '\0';
- if (c == '\0')
- break;
- cp++;
- }
- *argp++ = 0;
-}
-
-/*
- * Make a character string into a number.
- *
- * Todo: 1. Could take random integers (12, 0x12, 012, 0b1).
- */
-
- static
-special(s)
- register char *s;
-{
- register char c;
- char b;
-
- switch (*s) {
- case '^':
- b = *++s;
- if (b == '?') {
- c = b | 0x40; /* DEL */
- } else {
- c = b & 0x1f;
- }
- break;
- default:
- c = *s;
- break;
- }
- return c;
-}
-
-/*
- * Construct a control character sequence
- * for a special character.
- */
- static char *
-control(c)
- register cc_t c;
-{
- static char buf[5];
- /*
- * The only way I could get the Sun 3.5 compiler
- * to shut up about
- * if ((unsigned int)c >= 0x80)
- * was to assign "c" to an unsigned int variable...
- * Arggg....
- */
- register unsigned int uic = (unsigned int)c;
-
- if (uic == 0x7f)
- return ("^?");
- if (c == (cc_t)_POSIX_VDISABLE) {
- return "off";
- }
- if (uic >= 0x80) {
- buf[0] = '\\';
- buf[1] = ((c>>6)&07) + '0';
- buf[2] = ((c>>3)&07) + '0';
- buf[3] = (c&07) + '0';
- buf[4] = 0;
- } else if (uic >= 0x20) {
- buf[0] = c;
- buf[1] = 0;
- } else {
- buf[0] = '^';
- buf[1] = '@'+c;
- buf[2] = 0;
- }
- return (buf);
-}
-
-
-
-/*
- * The following are data structures and routines for
- * the "send" command.
- *
- */
-
-struct sendlist {
- char *name; /* How user refers to it (case independent) */
- char *help; /* Help information (0 ==> no help) */
- int needconnect; /* Need to be connected */
- int narg; /* Number of arguments */
- int (*handler)(); /* Routine to perform (for special ops) */
- int nbyte; /* Number of bytes to send this command */
- int what; /* Character to be sent (<0 ==> special) */
-};
-
-
-static int
- send_esc P((void)),
- send_help P((void)),
- send_docmd P((char *)),
- send_dontcmd P((char *)),
- send_willcmd P((char *)),
- send_wontcmd P((char *));
-
-static struct sendlist Sendlist[] = {
- { "ao", "Send Telnet Abort output", 1, 0, 0, 2, AO },
- { "ayt", "Send Telnet 'Are You There'", 1, 0, 0, 2, AYT },
- { "brk", "Send Telnet Break", 1, 0, 0, 2, BREAK },
- { "break", 0, 1, 0, 0, 2, BREAK },
- { "ec", "Send Telnet Erase Character", 1, 0, 0, 2, EC },
- { "el", "Send Telnet Erase Line", 1, 0, 0, 2, EL },
- { "escape", "Send current escape character", 1, 0, send_esc, 1, 0 },
- { "ga", "Send Telnet 'Go Ahead' sequence", 1, 0, 0, 2, GA },
- { "ip", "Send Telnet Interrupt Process", 1, 0, 0, 2, IP },
- { "intp", 0, 1, 0, 0, 2, IP },
- { "interrupt", 0, 1, 0, 0, 2, IP },
- { "intr", 0, 1, 0, 0, 2, IP },
- { "nop", "Send Telnet 'No operation'", 1, 0, 0, 2, NOP },
- { "eor", "Send Telnet 'End of Record'", 1, 0, 0, 2, EOR },
- { "abort", "Send Telnet 'Abort Process'", 1, 0, 0, 2, ABORT },
- { "susp", "Send Telnet 'Suspend Process'", 1, 0, 0, 2, SUSP },
- { "eof", "Send Telnet End of File Character", 1, 0, 0, 2, xEOF },
- { "synch", "Perform Telnet 'Synch operation'", 1, 0, dosynch, 2, 0 },
- { "getstatus", "Send request for STATUS", 1, 0, get_status, 6, 0 },
- { "?", "Display send options", 0, 0, send_help, 0, 0 },
- { "help", 0, 0, 0, send_help, 0, 0 },
- { "do", 0, 0, 1, send_docmd, 3, 0 },
- { "dont", 0, 0, 1, send_dontcmd, 3, 0 },
- { "will", 0, 0, 1, send_willcmd, 3, 0 },
- { "wont", 0, 0, 1, send_wontcmd, 3, 0 },
- { 0 }
-};
-
-#define GETSEND(name) ((struct sendlist *) genget(name, (char **) Sendlist, \
- sizeof(struct sendlist)))
-
- static int
-sendcmd(argc, argv)
- int argc;
- char **argv;
-{
- int count; /* how many bytes we are going to need to send */
- int i;
- int question = 0; /* was at least one argument a question */
- struct sendlist *s; /* pointer to current command */
- int success = 0;
- int needconnect = 0;
-
- if (argc < 2) {
- printf("need at least one argument for 'send' command\n");
- printf("'send ?' for help\n");
- return 0;
- }
- /*
- * First, validate all the send arguments.
- * In addition, we see how much space we are going to need, and
- * whether or not we will be doing a "SYNCH" operation (which
- * flushes the network queue).
- */
- count = 0;
- for (i = 1; i < argc; i++) {
- s = GETSEND(argv[i]);
- if (s == 0) {
- printf("Unknown send argument '%s'\n'send ?' for help.\n",
- argv[i]);
- return 0;
- } else if (Ambiguous(s)) {
- printf("Ambiguous send argument '%s'\n'send ?' for help.\n",
- argv[i]);
- return 0;
- }
- if (i + s->narg >= argc) {
- fprintf(stderr,
- "Need %d argument%s to 'send %s' command. 'send %s ?' for help.\n",
- s->narg, s->narg == 1 ? "" : "s", s->name, s->name);
- return 0;
- }
- count += s->nbyte;
- if (s->handler == send_help) {
- send_help();
- return 0;
- }
-
- i += s->narg;
- needconnect += s->needconnect;
- }
- if (!connected && needconnect) {
- printf("?Need to be connected first.\n");
- printf("'send ?' for help\n");
- return 0;
- }
- /* Now, do we have enough room? */
- if (NETROOM() < count) {
- printf("There is not enough room in the buffer TO the network\n");
- printf("to process your request. Nothing will be done.\n");
- printf("('send synch' will throw away most data in the network\n");
- printf("buffer, if this might help.)\n");
- return 0;
- }
- /* OK, they are all OK, now go through again and actually send */
- count = 0;
- for (i = 1; i < argc; i++) {
- if ((s = GETSEND(argv[i])) == 0) {
- fprintf(stderr, "Telnet 'send' error - argument disappeared!\n");
- (void) quit();
- /*NOTREACHED*/
- }
- if (s->handler) {
- count++;
- success += (*s->handler)((s->narg > 0) ? argv[i+1] : 0,
- (s->narg > 1) ? argv[i+2] : 0);
- i += s->narg;
- } else {
- NET2ADD(IAC, s->what);
- printoption("SENT", IAC, s->what);
- }
- }
- return (count == success);
-}
-
- static int
-send_esc()
-{
- NETADD(escape);
- return 1;
-}
-
- static int
-send_docmd(name)
- char *name;
-{
- return(send_tncmd(send_do, "do", name));
-}
-
- static int
-send_dontcmd(name)
- char *name;
-{
- return(send_tncmd(send_dont, "dont", name));
-}
- static int
-send_willcmd(name)
- char *name;
-{
- return(send_tncmd(send_will, "will", name));
-}
- static int
-send_wontcmd(name)
- char *name;
-{
- return(send_tncmd(send_wont, "wont", name));
-}
-
- int
-send_tncmd(func, cmd, name)
- void (*func)();
- char *cmd, *name;
-{
- char **cpp;
- extern char *telopts[];
- register int val = 0;
-
- if (isprefix(name, "help") || isprefix(name, "?")) {
- register int col, len;
-
- printf("Usage: send %s <value|option>\n", cmd);
- printf("\"value\" must be from 0 to 255\n");
- printf("Valid options are:\n\t");
-
- col = 8;
- for (cpp = telopts; *cpp; cpp++) {
- len = strlen(*cpp) + 3;
- if (col + len > 65) {
- printf("\n\t");
- col = 8;
- }
- printf(" \"%s\"", *cpp);
- col += len;
- }
- printf("\n");
- return 0;
- }
- cpp = (char **)genget(name, telopts, sizeof(char *));
- if (Ambiguous(cpp)) {
- fprintf(stderr,"'%s': ambiguous argument ('send %s ?' for help).\n",
- name, cmd);
- return 0;
- }
- if (cpp) {
- val = cpp - telopts;
- } else {
- register char *cp = name;
-
- while (*cp >= '0' && *cp <= '9') {
- val *= 10;
- val += *cp - '0';
- cp++;
- }
- if (*cp != 0) {
- fprintf(stderr, "'%s': unknown argument ('send %s ?' for help).\n",
- name, cmd);
- return 0;
- } else if (val < 0 || val > 255) {
- fprintf(stderr, "'%s': bad value ('send %s ?' for help).\n",
- name, cmd);
- return 0;
- }
- }
- if (!connected) {
- printf("?Need to be connected first.\n");
- return 0;
- }
- (*func)(val, 1);
- return 1;
-}
-
- static int
-send_help()
-{
- struct sendlist *s; /* pointer to current command */
- for (s = Sendlist; s->name; s++) {
- if (s->help)
- printf("%-15s %s\n", s->name, s->help);
- }
- return(0);
-}
-
-/*
- * The following are the routines and data structures referred
- * to by the arguments to the "toggle" command.
- */
-
- static int
-lclchars()
-{
- donelclchars = 1;
- return 1;
-}
-
- static int
-togdebug()
-{
-#ifndef NOT43
- if (net > 0 &&
- (SetSockOpt(net, SOL_SOCKET, SO_DEBUG, debug)) < 0) {
- perror("setsockopt (SO_DEBUG)");
- }
-#else /* NOT43 */
- if (debug) {
- if (net > 0 && SetSockOpt(net, SOL_SOCKET, SO_DEBUG, 0, 0) < 0)
- perror("setsockopt (SO_DEBUG)");
- } else
- printf("Cannot turn off socket debugging\n");
-#endif /* NOT43 */
- return 1;
-}
-
-
- static int
-togcrlf()
-{
- if (crlf) {
- printf("Will send carriage returns as telnet <CR><LF>.\n");
- } else {
- printf("Will send carriage returns as telnet <CR><NUL>.\n");
- }
- return 1;
-}
-
-int binmode;
-
- static int
-togbinary(val)
- int val;
-{
- donebinarytoggle = 1;
-
- if (val >= 0) {
- binmode = val;
- } else {
- if (my_want_state_is_will(TELOPT_BINARY) &&
- my_want_state_is_do(TELOPT_BINARY)) {
- binmode = 1;
- } else if (my_want_state_is_wont(TELOPT_BINARY) &&
- my_want_state_is_dont(TELOPT_BINARY)) {
- binmode = 0;
- }
- val = binmode ? 0 : 1;
- }
-
- if (val == 1) {
- if (my_want_state_is_will(TELOPT_BINARY) &&
- my_want_state_is_do(TELOPT_BINARY)) {
- printf("Already operating in binary mode with remote host.\n");
- } else {
- printf("Negotiating binary mode with remote host.\n");
- tel_enter_binary(3);
- }
- } else {
- if (my_want_state_is_wont(TELOPT_BINARY) &&
- my_want_state_is_dont(TELOPT_BINARY)) {
- printf("Already in network ascii mode with remote host.\n");
- } else {
- printf("Negotiating network ascii mode with remote host.\n");
- tel_leave_binary(3);
- }
- }
- return 1;
-}
-
- static int
-togrbinary(val)
- int val;
-{
- donebinarytoggle = 1;
-
- if (val == -1)
- val = my_want_state_is_do(TELOPT_BINARY) ? 0 : 1;
-
- if (val == 1) {
- if (my_want_state_is_do(TELOPT_BINARY)) {
- printf("Already receiving in binary mode.\n");
- } else {
- printf("Negotiating binary mode on input.\n");
- tel_enter_binary(1);
- }
- } else {
- if (my_want_state_is_dont(TELOPT_BINARY)) {
- printf("Already receiving in network ascii mode.\n");
- } else {
- printf("Negotiating network ascii mode on input.\n");
- tel_leave_binary(1);
- }
- }
- return 1;
-}
-
- static int
-togxbinary(val)
- int val;
-{
- donebinarytoggle = 1;
-
- if (val == -1)
- val = my_want_state_is_will(TELOPT_BINARY) ? 0 : 1;
-
- if (val == 1) {
- if (my_want_state_is_will(TELOPT_BINARY)) {
- printf("Already transmitting in binary mode.\n");
- } else {
- printf("Negotiating binary mode on output.\n");
- tel_enter_binary(2);
- }
- } else {
- if (my_want_state_is_wont(TELOPT_BINARY)) {
- printf("Already transmitting in network ascii mode.\n");
- } else {
- printf("Negotiating network ascii mode on output.\n");
- tel_leave_binary(2);
- }
- }
- return 1;
-}
-
-
-static int togglehelp P((void));
-#if defined(AUTHENTICATION)
-extern int auth_togdebug P((int));
-#endif
-#ifdef ENCRYPTION
-extern int EncryptAutoEnc P((int));
-extern int EncryptAutoDec P((int));
-extern int EncryptDebug P((int));
-extern int EncryptVerbose P((int));
-#endif /* ENCRYPTION */
-
-struct togglelist {
- char *name; /* name of toggle */
- char *help; /* help message */
- int (*handler)(); /* routine to do actual setting */
- int *variable;
- char *actionexplanation;
-};
-
-static struct togglelist Togglelist[] = {
- { "autoflush",
- "flushing of output when sending interrupt characters",
- 0,
- &autoflush,
- "flush output when sending interrupt characters" },
- { "autosynch",
- "automatic sending of interrupt characters in urgent mode",
- 0,
- &autosynch,
- "send interrupt characters in urgent mode" },
-#if defined(AUTHENTICATION)
- { "autologin",
- "automatic sending of login and/or authentication info",
- 0,
- &autologin,
- "send login name and/or authentication information" },
- { "authdebug",
- "Toggle authentication debugging",
- auth_togdebug,
- 0,
- "print authentication debugging information" },
-#endif
-#ifdef ENCRYPTION
- { "autoencrypt",
- "automatic encryption of data stream",
- EncryptAutoEnc,
- 0,
- "automatically encrypt output" },
- { "autodecrypt",
- "automatic decryption of data stream",
- EncryptAutoDec,
- 0,
- "automatically decrypt input" },
- { "verbose_encrypt",
- "Toggle verbose encryption output",
- EncryptVerbose,
- 0,
- "print verbose encryption output" },
- { "encdebug",
- "Toggle encryption debugging",
- EncryptDebug,
- 0,
- "print encryption debugging information" },
-#endif /* ENCRYPTION */
- { "skiprc",
- "don't read ~/.telnetrc file",
- 0,
- &skiprc,
- "skip reading of ~/.telnetrc file" },
- { "binary",
- "sending and receiving of binary data",
- togbinary,
- 0,
- 0 },
- { "inbinary",
- "receiving of binary data",
- togrbinary,
- 0,
- 0 },
- { "outbinary",
- "sending of binary data",
- togxbinary,
- 0,
- 0 },
- { "crlf",
- "sending carriage returns as telnet <CR><LF>",
- togcrlf,
- &crlf,
- 0 },
- { "crmod",
- "mapping of received carriage returns",
- 0,
- &crmod,
- "map carriage return on output" },
- { "localchars",
- "local recognition of certain control characters",
- lclchars,
- &localchars,
- "recognize certain control characters" },
- { " ", "", 0 }, /* empty line */
-#if defined(unix) && defined(TN3270)
- { "apitrace",
- "(debugging) toggle tracing of API transactions",
- 0,
- &apitrace,
- "trace API transactions" },
- { "cursesdata",
- "(debugging) toggle printing of hexadecimal curses data",
- 0,
- &cursesdata,
- "print hexadecimal representation of curses data" },
-#endif /* defined(unix) && defined(TN3270) */
- { "debug",
- "debugging",
- togdebug,
- &debug,
- "turn on socket level debugging" },
- { "netdata",
- "printing of hexadecimal network data (debugging)",
- 0,
- &netdata,
- "print hexadecimal representation of network traffic" },
- { "prettydump",
- "output of \"netdata\" to user readable format (debugging)",
- 0,
- &prettydump,
- "print user readable output for \"netdata\"" },
- { "options",
- "viewing of options processing (debugging)",
- 0,
- &showoptions,
- "show option processing" },
-#if defined(unix)
- { "termdata",
- "(debugging) toggle printing of hexadecimal terminal data",
- 0,
- &termdata,
- "print hexadecimal representation of terminal traffic" },
-#endif /* defined(unix) */
- { "?",
- 0,
- togglehelp },
- { "help",
- 0,
- togglehelp },
- { 0 }
-};
-
- static int
-togglehelp()
-{
- struct togglelist *c;
-
- for (c = Togglelist; c->name; c++) {
- if (c->help) {
- if (*c->help)
- printf("%-15s toggle %s\n", c->name, c->help);
- else
- printf("\n");
- }
- }
- printf("\n");
- printf("%-15s %s\n", "?", "display help information");
- return 0;
-}
-
- static void
-settogglehelp(set)
- int set;
-{
- struct togglelist *c;
-
- for (c = Togglelist; c->name; c++) {
- if (c->help) {
- if (*c->help)
- printf("%-15s %s %s\n", c->name, set ? "enable" : "disable",
- c->help);
- else
- printf("\n");
- }
- }
-}
-
-#define GETTOGGLE(name) (struct togglelist *) \
- genget(name, (char **) Togglelist, sizeof(struct togglelist))
-
- static int
-toggle(argc, argv)
- int argc;
- char *argv[];
-{
- int retval = 1;
- char *name;
- struct togglelist *c;
-
- if (argc < 2) {
- fprintf(stderr,
- "Need an argument to 'toggle' command. 'toggle ?' for help.\n");
- return 0;
- }
- argc--;
- argv++;
- while (argc--) {
- name = *argv++;
- c = GETTOGGLE(name);
- if (Ambiguous(c)) {
- fprintf(stderr, "'%s': ambiguous argument ('toggle ?' for help).\n",
- name);
- return 0;
- } else if (c == 0) {
- fprintf(stderr, "'%s': unknown argument ('toggle ?' for help).\n",
- name);
- return 0;
- } else {
- if (c->variable) {
- *c->variable = !*c->variable; /* invert it */
- if (c->actionexplanation) {
- printf("%s %s.\n", *c->variable? "Will" : "Won't",
- c->actionexplanation);
- }
- }
- if (c->handler) {
- retval &= (*c->handler)(-1);
- }
- }
- }
- return retval;
-}
-
-/*
- * The following perform the "set" command.
- */
-
-#ifdef USE_TERMIO
-struct termio new_tc = { 0 };
-#endif
-
-struct setlist {
- char *name; /* name */
- char *help; /* help information */
- void (*handler)();
- cc_t *charp; /* where it is located at */
-};
-
-static struct setlist Setlist[] = {
-#ifdef KLUDGELINEMODE
- { "echo", "character to toggle local echoing on/off", 0, &echoc },
-#endif
- { "escape", "character to escape back to telnet command mode", 0, &escape },
- { "rlogin", "rlogin escape character", 0, &rlogin },
- { "tracefile", "file to write trace information to", SetNetTrace, (cc_t *)NetTraceFile},
- { " ", "" },
- { " ", "The following need 'localchars' to be toggled true", 0, 0 },
- { "flushoutput", "character to cause an Abort Output", 0, termFlushCharp },
- { "interrupt", "character to cause an Interrupt Process", 0, termIntCharp },
- { "quit", "character to cause an Abort process", 0, termQuitCharp },
- { "eof", "character to cause an EOF ", 0, termEofCharp },
- { " ", "" },
- { " ", "The following are for local editing in linemode", 0, 0 },
- { "erase", "character to use to erase a character", 0, termEraseCharp },
- { "kill", "character to use to erase a line", 0, termKillCharp },
- { "lnext", "character to use for literal next", 0, termLiteralNextCharp },
- { "susp", "character to cause a Suspend Process", 0, termSuspCharp },
- { "reprint", "character to use for line reprint", 0, termRprntCharp },
- { "worderase", "character to use to erase a word", 0, termWerasCharp },
- { "start", "character to use for XON", 0, termStartCharp },
- { "stop", "character to use for XOFF", 0, termStopCharp },
- { "forw1", "alternate end of line character", 0, termForw1Charp },
- { "forw2", "alternate end of line character", 0, termForw2Charp },
- { "ayt", "alternate AYT character", 0, termAytCharp },
- { 0 }
-};
-
-#if defined(CRAY) && !defined(__STDC__)
-/* Work around compiler bug in pcc 4.1.5 */
- void
-_setlist_init()
-{
-#ifndef KLUDGELINEMODE
-#define N 5
-#else
-#define N 6
-#endif
- Setlist[N+0].charp = &termFlushChar;
- Setlist[N+1].charp = &termIntChar;
- Setlist[N+2].charp = &termQuitChar;
- Setlist[N+3].charp = &termEofChar;
- Setlist[N+6].charp = &termEraseChar;
- Setlist[N+7].charp = &termKillChar;
- Setlist[N+8].charp = &termLiteralNextChar;
- Setlist[N+9].charp = &termSuspChar;
- Setlist[N+10].charp = &termRprntChar;
- Setlist[N+11].charp = &termWerasChar;
- Setlist[N+12].charp = &termStartChar;
- Setlist[N+13].charp = &termStopChar;
- Setlist[N+14].charp = &termForw1Char;
- Setlist[N+15].charp = &termForw2Char;
- Setlist[N+16].charp = &termAytChar;
-#undef N
-}
-#endif /* defined(CRAY) && !defined(__STDC__) */
-
- static struct setlist *
-getset(name)
- char *name;
-{
- return (struct setlist *)
- genget(name, (char **) Setlist, sizeof(struct setlist));
-}
-
- void
-set_escape_char(s)
- char *s;
-{
- if (rlogin != _POSIX_VDISABLE) {
- rlogin = (s && *s) ? special(s) : _POSIX_VDISABLE;
- printf("Telnet rlogin escape character is '%s'.\n",
- control(rlogin));
- } else {
- escape = (s && *s) ? special(s) : _POSIX_VDISABLE;
- printf("Telnet escape character is '%s'.\n", control(escape));
- }
-}
-
- static int
-setcmd(argc, argv)
- int argc;
- char *argv[];
-{
- int value;
- struct setlist *ct;
- struct togglelist *c;
-
- if (argc < 2 || argc > 3) {
- printf("Format is 'set Name Value'\n'set ?' for help.\n");
- return 0;
- }
- if ((argc == 2) && (isprefix(argv[1], "?") || isprefix(argv[1], "help"))) {
- for (ct = Setlist; ct->name; ct++)
- printf("%-15s %s\n", ct->name, ct->help);
- printf("\n");
- settogglehelp(1);
- printf("%-15s %s\n", "?", "display help information");
- return 0;
- }
-
- ct = getset(argv[1]);
- if (ct == 0) {
- c = GETTOGGLE(argv[1]);
- if (c == 0) {
- fprintf(stderr, "'%s': unknown argument ('set ?' for help).\n",
- argv[1]);
- return 0;
- } else if (Ambiguous(c)) {
- fprintf(stderr, "'%s': ambiguous argument ('set ?' for help).\n",
- argv[1]);
- return 0;
- }
- if (c->variable) {
- if ((argc == 2) || (strcmp("on", argv[2]) == 0))
- *c->variable = 1;
- else if (strcmp("off", argv[2]) == 0)
- *c->variable = 0;
- else {
- printf("Format is 'set togglename [on|off]'\n'set ?' for help.\n");
- return 0;
- }
- if (c->actionexplanation) {
- printf("%s %s.\n", *c->variable? "Will" : "Won't",
- c->actionexplanation);
- }
- }
- if (c->handler)
- (*c->handler)(1);
- } else if (argc != 3) {
- printf("Format is 'set Name Value'\n'set ?' for help.\n");
- return 0;
- } else if (Ambiguous(ct)) {
- fprintf(stderr, "'%s': ambiguous argument ('set ?' for help).\n",
- argv[1]);
- return 0;
- } else if (ct->handler) {
- (*ct->handler)(argv[2]);
- printf("%s set to \"%s\".\n", ct->name, (char *)ct->charp);
- } else {
- if (strcmp("off", argv[2])) {
- value = special(argv[2]);
- } else {
- value = _POSIX_VDISABLE;
- }
- *(ct->charp) = (cc_t)value;
- printf("%s character is '%s'.\n", ct->name, control(*(ct->charp)));
- }
- slc_check();
- return 1;
-}
-
- static int
-unsetcmd(argc, argv)
- int argc;
- char *argv[];
-{
- struct setlist *ct;
- struct togglelist *c;
- register char *name;
-
- if (argc < 2) {
- fprintf(stderr,
- "Need an argument to 'unset' command. 'unset ?' for help.\n");
- return 0;
- }
- if (isprefix(argv[1], "?") || isprefix(argv[1], "help")) {
- for (ct = Setlist; ct->name; ct++)
- printf("%-15s %s\n", ct->name, ct->help);
- printf("\n");
- settogglehelp(0);
- printf("%-15s %s\n", "?", "display help information");
- return 0;
- }
-
- argc--;
- argv++;
- while (argc--) {
- name = *argv++;
- ct = getset(name);
- if (ct == 0) {
- c = GETTOGGLE(name);
- if (c == 0) {
- fprintf(stderr, "'%s': unknown argument ('unset ?' for help).\n",
- name);
- return 0;
- } else if (Ambiguous(c)) {
- fprintf(stderr, "'%s': ambiguous argument ('unset ?' for help).\n",
- name);
- return 0;
- }
- if (c->variable) {
- *c->variable = 0;
- if (c->actionexplanation) {
- printf("%s %s.\n", *c->variable? "Will" : "Won't",
- c->actionexplanation);
- }
- }
- if (c->handler)
- (*c->handler)(0);
- } else if (Ambiguous(ct)) {
- fprintf(stderr, "'%s': ambiguous argument ('unset ?' for help).\n",
- name);
- return 0;
- } else if (ct->handler) {
- (*ct->handler)(0);
- printf("%s reset to \"%s\".\n", ct->name, (char *)ct->charp);
- } else {
- *(ct->charp) = _POSIX_VDISABLE;
- printf("%s character is '%s'.\n", ct->name, control(*(ct->charp)));
- }
- }
- return 1;
-}
-
-/*
- * The following are the data structures and routines for the
- * 'mode' command.
- */
-#ifdef KLUDGELINEMODE
-extern int kludgelinemode;
-
- static int
-dokludgemode()
-{
- kludgelinemode = 1;
- send_wont(TELOPT_LINEMODE, 1);
- send_dont(TELOPT_SGA, 1);
- send_dont(TELOPT_ECHO, 1);
-}
-#endif
-
- static int
-dolinemode()
-{
-#ifdef KLUDGELINEMODE
- if (kludgelinemode)
- send_dont(TELOPT_SGA, 1);
-#endif
- send_will(TELOPT_LINEMODE, 1);
- send_dont(TELOPT_ECHO, 1);
- return 1;
-}
-
- static int
-docharmode()
-{
-#ifdef KLUDGELINEMODE
- if (kludgelinemode)
- send_do(TELOPT_SGA, 1);
- else
-#endif
- send_wont(TELOPT_LINEMODE, 1);
- send_do(TELOPT_ECHO, 1);
- return 1;
-}
-
- static int
-dolmmode(bit, on)
- int bit, on;
-{
- unsigned char c;
- extern int linemode;
-
- if (my_want_state_is_wont(TELOPT_LINEMODE)) {
- printf("?Need to have LINEMODE option enabled first.\n");
- printf("'mode ?' for help.\n");
- return 0;
- }
-
- if (on)
- c = (linemode | bit);
- else
- c = (linemode & ~bit);
- lm_mode(&c, 1, 1);
- return 1;
-}
-
- int
-setmode(bit)
-{
- return dolmmode(bit, 1);
-}
-
- int
-clearmode(bit)
-{
- return dolmmode(bit, 0);
-}
-
-struct modelist {
- char *name; /* command name */
- char *help; /* help string */
- int (*handler)(); /* routine which executes command */
- int needconnect; /* Do we need to be connected to execute? */
- int arg1;
-};
-
-extern int modehelp();
-
-static struct modelist ModeList[] = {
- { "character", "Disable LINEMODE option", docharmode, 1 },
-#ifdef KLUDGELINEMODE
- { "", "(or disable obsolete line-by-line mode)", 0 },
-#endif
- { "line", "Enable LINEMODE option", dolinemode, 1 },
-#ifdef KLUDGELINEMODE
- { "", "(or enable obsolete line-by-line mode)", 0 },
-#endif
- { "", "", 0 },
- { "", "These require the LINEMODE option to be enabled", 0 },
- { "isig", "Enable signal trapping", setmode, 1, MODE_TRAPSIG },
- { "+isig", 0, setmode, 1, MODE_TRAPSIG },
- { "-isig", "Disable signal trapping", clearmode, 1, MODE_TRAPSIG },
- { "edit", "Enable character editing", setmode, 1, MODE_EDIT },
- { "+edit", 0, setmode, 1, MODE_EDIT },
- { "-edit", "Disable character editing", clearmode, 1, MODE_EDIT },
- { "softtabs", "Enable tab expansion", setmode, 1, MODE_SOFT_TAB },
- { "+softtabs", 0, setmode, 1, MODE_SOFT_TAB },
- { "-softtabs", "Disable character editing", clearmode, 1, MODE_SOFT_TAB },
- { "litecho", "Enable literal character echo", setmode, 1, MODE_LIT_ECHO },
- { "+litecho", 0, setmode, 1, MODE_LIT_ECHO },
- { "-litecho", "Disable literal character echo", clearmode, 1, MODE_LIT_ECHO },
- { "help", 0, modehelp, 0 },
-#ifdef KLUDGELINEMODE
- { "kludgeline", 0, dokludgemode, 1 },
-#endif
- { "", "", 0 },
- { "?", "Print help information", modehelp, 0 },
- { 0 },
-};
-
-
- int
-modehelp()
-{
- struct modelist *mt;
-
- printf("format is: 'mode Mode', where 'Mode' is one of:\n\n");
- for (mt = ModeList; mt->name; mt++) {
- if (mt->help) {
- if (*mt->help)
- printf("%-15s %s\n", mt->name, mt->help);
- else
- printf("\n");
- }
- }
- return 0;
-}
-
-#define GETMODECMD(name) (struct modelist *) \
- genget(name, (char **) ModeList, sizeof(struct modelist))
-
- static int
-modecmd(argc, argv)
- int argc;
- char *argv[];
-{
- struct modelist *mt;
-
- if (argc != 2) {
- printf("'mode' command requires an argument\n");
- printf("'mode ?' for help.\n");
- } else if ((mt = GETMODECMD(argv[1])) == 0) {
- fprintf(stderr, "Unknown mode '%s' ('mode ?' for help).\n", argv[1]);
- } else if (Ambiguous(mt)) {
- fprintf(stderr, "Ambiguous mode '%s' ('mode ?' for help).\n", argv[1]);
- } else if (mt->needconnect && !connected) {
- printf("?Need to be connected first.\n");
- printf("'mode ?' for help.\n");
- } else if (mt->handler) {
- return (*mt->handler)(mt->arg1);
- }
- return 0;
-}
-
-/*
- * The following data structures and routines implement the
- * "display" command.
- */
-
- static int
-display(argc, argv)
- int argc;
- char *argv[];
-{
- struct togglelist *tl;
- struct setlist *sl;
-
-#define dotog(tl) if (tl->variable && tl->actionexplanation) { \
- if (*tl->variable) { \
- printf("will"); \
- } else { \
- printf("won't"); \
- } \
- printf(" %s.\n", tl->actionexplanation); \
- }
-
-#define doset(sl) if (sl->name && *sl->name != ' ') { \
- if (sl->handler == 0) \
- printf("%-15s [%s]\n", sl->name, control(*sl->charp)); \
- else \
- printf("%-15s \"%s\"\n", sl->name, (char *)sl->charp); \
- }
-
- if (argc == 1) {
- for (tl = Togglelist; tl->name; tl++) {
- dotog(tl);
- }
- printf("\n");
- for (sl = Setlist; sl->name; sl++) {
- doset(sl);
- }
- } else {
- int i;
-
- for (i = 1; i < argc; i++) {
- sl = getset(argv[i]);
- tl = GETTOGGLE(argv[i]);
- if (Ambiguous(sl) || Ambiguous(tl)) {
- printf("?Ambiguous argument '%s'.\n", argv[i]);
- return 0;
- } else if (!sl && !tl) {
- printf("?Unknown argument '%s'.\n", argv[i]);
- return 0;
- } else {
- if (tl) {
- dotog(tl);
- }
- if (sl) {
- doset(sl);
- }
- }
- }
- }
-/*@*/optionstatus();
-#ifdef ENCRYPTION
- EncryptStatus();
-#endif /* ENCRYPTION */
- return 1;
-#undef doset
-#undef dotog
-}
-
-/*
- * The following are the data structures, and many of the routines,
- * relating to command processing.
- */
-
-/*
- * Set the escape character.
- */
- static int
-setescape(argc, argv)
- int argc;
- char *argv[];
-{
- register char *arg;
- char buf[50];
-
- printf(
- "Deprecated usage - please use 'set escape%s%s' in the future.\n",
- (argc > 2)? " ":"", (argc > 2)? argv[1]: "");
- if (argc > 2)
- arg = argv[1];
- else {
- printf("new escape character: ");
- (void) fgets(buf, sizeof(buf), stdin);
- arg = buf;
- }
- if (arg[0] != '\0')
- escape = arg[0];
- if (!In3270) {
- printf("Escape character is '%s'.\n", control(escape));
- }
- (void) fflush(stdout);
- return 1;
-}
-
- /*VARARGS*/
- static int
-togcrmod()
-{
- crmod = !crmod;
- printf("Deprecated usage - please use 'toggle crmod' in the future.\n");
- printf("%s map carriage return on output.\n", crmod ? "Will" : "Won't");
- (void) fflush(stdout);
- return 1;
-}
-
- /*VARARGS*/
- int
-suspend()
-{
-#ifdef SIGTSTP
- setcommandmode();
- {
- long oldrows, oldcols, newrows, newcols, err;
-
- err = (TerminalWindowSize(&oldrows, &oldcols) == 0) ? 1 : 0;
- (void) kill(0, SIGTSTP);
- /*
- * If we didn't get the window size before the SUSPEND, but we
- * can get them now (?), then send the NAWS to make sure that
- * we are set up for the right window size.
- */
- if (TerminalWindowSize(&newrows, &newcols) && connected &&
- (err || ((oldrows != newrows) || (oldcols != newcols)))) {
- sendnaws();
- }
- }
- /* reget parameters in case they were changed */
- TerminalSaveState();
- setconnmode(0);
-#else
- printf("Suspend is not supported. Try the '!' command instead\n");
-#endif
- return 1;
-}
-
-#if !defined(TN3270)
- /*ARGSUSED*/
- int
-shell(argc, argv)
- int argc;
- char *argv[];
-{
- long oldrows, oldcols, newrows, newcols, err;
-
- setcommandmode();
-
- err = (TerminalWindowSize(&oldrows, &oldcols) == 0) ? 1 : 0;
- switch(vfork()) {
- case -1:
- perror("Fork failed\n");
- break;
-
- case 0:
- {
- /*
- * Fire up the shell in the child.
- */
- register char *shellp, *shellname;
- extern char *strrchr();
-
- shellp = getenv("SHELL");
- if (shellp == NULL)
- shellp = "/bin/sh";
- if ((shellname = strrchr(shellp, '/')) == 0)
- shellname = shellp;
- else
- shellname++;
- if (argc > 1)
- execl(shellp, shellname, "-c", &saveline[1], 0);
- else
- execl(shellp, shellname, 0);
- perror("Execl");
- _exit(1);
- }
- default:
- (void)wait((int *)0); /* Wait for the shell to complete */
-
- if (TerminalWindowSize(&newrows, &newcols) && connected &&
- (err || ((oldrows != newrows) || (oldcols != newcols)))) {
- sendnaws();
- }
- break;
- }
- return 1;
-}
-#else /* !defined(TN3270) */
-extern int shell();
-#endif /* !defined(TN3270) */
-
- /*VARARGS*/
- static
-bye(argc, argv)
- int argc; /* Number of arguments */
- char *argv[]; /* arguments */
-{
- extern int resettermname;
-
- if (connected) {
- (void) shutdown(net, 2);
- printf("Connection closed.\n");
- (void) NetClose(net);
- connected = 0;
- resettermname = 1;
-#if defined(AUTHENTICATION) || defined(ENCRYPTION)
- auth_encrypt_connect(connected);
-#endif /* defined(AUTHENTICATION) || defined(ENCRYPTION) */
- /* reset options */
- tninit();
-#if defined(TN3270)
- SetIn3270(); /* Get out of 3270 mode */
-#endif /* defined(TN3270) */
- }
- if ((argc != 2) || (strcmp(argv[1], "fromquit") != 0)) {
- longjmp(toplevel, 1);
- /* NOTREACHED */
- }
- return 1; /* Keep lint, etc., happy */
-}
-
-/*VARARGS*/
-quit()
-{
- (void) call(bye, "bye", "fromquit", 0);
- Exit(0);
- /*NOTREACHED*/
-}
-
-/*VARARGS*/
- int
-logout()
-{
- send_do(TELOPT_LOGOUT, 1);
- (void) netflush();
- return 1;
-}
-
-
-/*
- * The SLC command.
- */
-
-struct slclist {
- char *name;
- char *help;
- void (*handler)();
- int arg;
-};
-
-static void slc_help();
-
-struct slclist SlcList[] = {
- { "export", "Use local special character definitions",
- slc_mode_export, 0 },
- { "import", "Use remote special character definitions",
- slc_mode_import, 1 },
- { "check", "Verify remote special character definitions",
- slc_mode_import, 0 },
- { "help", 0, slc_help, 0 },
- { "?", "Print help information", slc_help, 0 },
- { 0 },
-};
-
- static void
-slc_help()
-{
- struct slclist *c;
-
- for (c = SlcList; c->name; c++) {
- if (c->help) {
- if (*c->help)
- printf("%-15s %s\n", c->name, c->help);
- else
- printf("\n");
- }
- }
-}
-
- static struct slclist *
-getslc(name)
- char *name;
-{
- return (struct slclist *)
- genget(name, (char **) SlcList, sizeof(struct slclist));
-}
-
- static
-slccmd(argc, argv)
- int argc;
- char *argv[];
-{
- struct slclist *c;
-
- if (argc != 2) {
- fprintf(stderr,
- "Need an argument to 'slc' command. 'slc ?' for help.\n");
- return 0;
- }
- c = getslc(argv[1]);
- if (c == 0) {
- fprintf(stderr, "'%s': unknown argument ('slc ?' for help).\n",
- argv[1]);
- return 0;
- }
- if (Ambiguous(c)) {
- fprintf(stderr, "'%s': ambiguous argument ('slc ?' for help).\n",
- argv[1]);
- return 0;
- }
- (*c->handler)(c->arg);
- slcstate();
- return 1;
-}
-
-/*
- * The ENVIRON command.
- */
-
-struct envlist {
- char *name;
- char *help;
- void (*handler)();
- int narg;
-};
-
-extern struct env_lst *
- env_define P((unsigned char *, unsigned char *));
-extern void
- env_undefine P((unsigned char *)),
- env_export P((unsigned char *)),
- env_unexport P((unsigned char *)),
- env_send P((unsigned char *)),
-#if defined(OLD_ENVIRON) && defined(ENV_HACK)
- env_varval P((unsigned char *)),
-#endif
- env_list P((void));
-static void
- env_help P((void));
-
-struct envlist EnvList[] = {
- { "define", "Define an environment variable",
- (void (*)())env_define, 2 },
- { "undefine", "Undefine an environment variable",
- env_undefine, 1 },
- { "export", "Mark an environment variable for automatic export",
- env_export, 1 },
- { "unexport", "Don't mark an environment variable for automatic export",
- env_unexport, 1 },
- { "send", "Send an environment variable", env_send, 1 },
- { "list", "List the current environment variables",
- env_list, 0 },
-#if defined(OLD_ENVIRON) && defined(ENV_HACK)
- { "varval", "Reverse VAR and VALUE (auto, right, wrong, status)",
- env_varval, 1 },
-#endif
- { "help", 0, env_help, 0 },
- { "?", "Print help information", env_help, 0 },
- { 0 },
-};
-
- static void
-env_help()
-{
- struct envlist *c;
-
- for (c = EnvList; c->name; c++) {
- if (c->help) {
- if (*c->help)
- printf("%-15s %s\n", c->name, c->help);
- else
- printf("\n");
- }
- }
-}
-
- static struct envlist *
-getenvcmd(name)
- char *name;
-{
- return (struct envlist *)
- genget(name, (char **) EnvList, sizeof(struct envlist));
-}
-
-env_cmd(argc, argv)
- int argc;
- char *argv[];
-{
- struct envlist *c;
-
- if (argc < 2) {
- fprintf(stderr,
- "Need an argument to 'environ' command. 'environ ?' for help.\n");
- return 0;
- }
- c = getenvcmd(argv[1]);
- if (c == 0) {
- fprintf(stderr, "'%s': unknown argument ('environ ?' for help).\n",
- argv[1]);
- return 0;
- }
- if (Ambiguous(c)) {
- fprintf(stderr, "'%s': ambiguous argument ('environ ?' for help).\n",
- argv[1]);
- return 0;
- }
- if (c->narg + 2 != argc) {
- fprintf(stderr,
- "Need %s%d argument%s to 'environ %s' command. 'environ ?' for help.\n",
- c->narg < argc + 2 ? "only " : "",
- c->narg, c->narg == 1 ? "" : "s", c->name);
- return 0;
- }
- (*c->handler)(argv[2], argv[3]);
- return 1;
-}
-
-struct env_lst {
- struct env_lst *next; /* pointer to next structure */
- struct env_lst *prev; /* pointer to previous structure */
- unsigned char *var; /* pointer to variable name */
- unsigned char *value; /* pointer to variable value */
- int export; /* 1 -> export with default list of variables */
- int welldefined; /* A well defined variable */
-};
-
-struct env_lst envlisthead;
-
- struct env_lst *
-env_find(var)
- unsigned char *var;
-{
- register struct env_lst *ep;
-
- for (ep = envlisthead.next; ep; ep = ep->next) {
- if (strcmp((char *)ep->var, (char *)var) == 0)
- return(ep);
- }
- return(NULL);
-}
-
- void
-env_init()
-{
- extern char **environ;
- register char **epp, *cp;
- register struct env_lst *ep;
- extern char *strchr();
-
- for (epp = environ; *epp; epp++) {
- if (cp = strchr(*epp, '=')) {
- *cp = '\0';
- ep = env_define((unsigned char *)*epp,
- (unsigned char *)cp+1);
- ep->export = 0;
- *cp = '=';
- }
- }
- /*
- * Special case for DISPLAY variable. If it is ":0.0" or
- * "unix:0.0", we have to get rid of "unix" and insert our
- * hostname.
- */
- if ((ep = env_find("DISPLAY"))
- && ((*ep->value == ':')
- || (strncmp((char *)ep->value, "unix:", 5) == 0))) {
- char hbuf[256+1];
- char *cp2 = strchr((char *)ep->value, ':');
-
- gethostname(hbuf, 256);
- hbuf[256] = '\0';
- cp = (char *)malloc(strlen(hbuf) + strlen(cp2) + 1);
- sprintf((char *)cp, "%s%s", hbuf, cp2);
- free(ep->value);
- ep->value = (unsigned char *)cp;
- }
- /*
- * If USER is not defined, but LOGNAME is, then add
- * USER with the value from LOGNAME. By default, we
- * don't export the USER variable.
- */
- if ((env_find("USER") == NULL) && (ep = env_find("LOGNAME"))) {
- env_define((unsigned char *)"USER", ep->value);
- env_unexport((unsigned char *)"USER");
- }
- env_export((unsigned char *)"DISPLAY");
- env_export((unsigned char *)"PRINTER");
-}
-
- struct env_lst *
-env_define(var, value)
- unsigned char *var, *value;
-{
- register struct env_lst *ep;
-
- if (ep = env_find(var)) {
- if (ep->var)
- free(ep->var);
- if (ep->value)
- free(ep->value);
- } else {
- ep = (struct env_lst *)malloc(sizeof(struct env_lst));
- ep->next = envlisthead.next;
- envlisthead.next = ep;
- ep->prev = &envlisthead;
- if (ep->next)
- ep->next->prev = ep;
- }
- ep->welldefined = opt_welldefined(var);
- ep->export = 1;
- ep->var = (unsigned char *)strdup((char *)var);
- ep->value = (unsigned char *)strdup((char *)value);
- return(ep);
-}
-
- void
-env_undefine(var)
- unsigned char *var;
-{
- register struct env_lst *ep;
-
- if (ep = env_find(var)) {
- ep->prev->next = ep->next;
- if (ep->next)
- ep->next->prev = ep->prev;
- if (ep->var)
- free(ep->var);
- if (ep->value)
- free(ep->value);
- free(ep);
- }
-}
-
- void
-env_export(var)
- unsigned char *var;
-{
- register struct env_lst *ep;
-
- if (ep = env_find(var))
- ep->export = 1;
-}
-
- void
-env_unexport(var)
- unsigned char *var;
-{
- register struct env_lst *ep;
-
- if (ep = env_find(var))
- ep->export = 0;
-}
-
- void
-env_send(var)
- unsigned char *var;
-{
- register struct env_lst *ep;
-
- if (my_state_is_wont(TELOPT_NEW_ENVIRON)
-#ifdef OLD_ENVIRON
- && my_state_is_wont(TELOPT_OLD_ENVIRON)
-#endif
- ) {
- fprintf(stderr,
- "Cannot send '%s': Telnet ENVIRON option not enabled\n",
- var);
- return;
- }
- ep = env_find(var);
- if (ep == 0) {
- fprintf(stderr, "Cannot send '%s': variable not defined\n",
- var);
- return;
- }
- env_opt_start_info();
- env_opt_add(ep->var);
- env_opt_end(0);
-}
-
- void
-env_list()
-{
- register struct env_lst *ep;
-
- for (ep = envlisthead.next; ep; ep = ep->next) {
- printf("%c %-20s %s\n", ep->export ? '*' : ' ',
- ep->var, ep->value);
- }
-}
-
- unsigned char *
-env_default(init, welldefined)
- int init;
-{
- static struct env_lst *nep = NULL;
-
- if (init) {
- nep = &envlisthead;
- return;
- }
- if (nep) {
- while (nep = nep->next) {
- if (nep->export && (nep->welldefined == welldefined))
- return(nep->var);
- }
- }
- return(NULL);
-}
-
- unsigned char *
-env_getvalue(var)
- unsigned char *var;
-{
- register struct env_lst *ep;
-
- if (ep = env_find(var))
- return(ep->value);
- return(NULL);
-}
-
-#if defined(OLD_ENVIRON) && defined(ENV_HACK)
- void
-env_varval(what)
- unsigned char *what;
-{
- extern int old_env_var, old_env_value, env_auto;
- int len = strlen((char *)what);
-
- if (len == 0)
- goto unknown;
-
- if (strncasecmp((char *)what, "status", len) == 0) {
- if (env_auto)
- printf("%s%s", "VAR and VALUE are/will be ",
- "determined automatically\n");
- if (old_env_var == OLD_ENV_VAR)
- printf("VAR and VALUE set to correct definitions\n");
- else
- printf("VAR and VALUE definitions are reversed\n");
- } else if (strncasecmp((char *)what, "auto", len) == 0) {
- env_auto = 1;
- old_env_var = OLD_ENV_VALUE;
- old_env_value = OLD_ENV_VAR;
- } else if (strncasecmp((char *)what, "right", len) == 0) {
- env_auto = 0;
- old_env_var = OLD_ENV_VAR;
- old_env_value = OLD_ENV_VALUE;
- } else if (strncasecmp((char *)what, "wrong", len) == 0) {
- env_auto = 0;
- old_env_var = OLD_ENV_VALUE;
- old_env_value = OLD_ENV_VAR;
- } else {
-unknown:
- printf("Unknown \"varval\" command. (\"auto\", \"right\", \"wrong\", \"status\")\n");
- }
-}
-#endif
-
-#if defined(AUTHENTICATION)
-/*
- * The AUTHENTICATE command.
- */
-
-struct authlist {
- char *name;
- char *help;
- int (*handler)();
- int narg;
-};
-
-extern int
- auth_enable P((char *)),
- auth_disable P((char *)),
- auth_status P((void));
-static int
- auth_help P((void));
-
-struct authlist AuthList[] = {
- { "status", "Display current status of authentication information",
- auth_status, 0 },
- { "disable", "Disable an authentication type ('auth disable ?' for more)",
- auth_disable, 1 },
- { "enable", "Enable an authentication type ('auth enable ?' for more)",
- auth_enable, 1 },
- { "help", 0, auth_help, 0 },
- { "?", "Print help information", auth_help, 0 },
- { 0 },
-};
-
- static int
-auth_help()
-{
- struct authlist *c;
-
- for (c = AuthList; c->name; c++) {
- if (c->help) {
- if (*c->help)
- printf("%-15s %s\n", c->name, c->help);
- else
- printf("\n");
- }
- }
- return 0;
-}
-
-auth_cmd(argc, argv)
- int argc;
- char *argv[];
-{
- struct authlist *c;
-
- if (argc < 2) {
- fprintf(stderr,
- "Need an argument to 'auth' command. 'auth ?' for help.\n");
- return 0;
- }
-
- c = (struct authlist *)
- genget(argv[1], (char **) AuthList, sizeof(struct authlist));
- if (c == 0) {
- fprintf(stderr, "'%s': unknown argument ('auth ?' for help).\n",
- argv[1]);
- return 0;
- }
- if (Ambiguous(c)) {
- fprintf(stderr, "'%s': ambiguous argument ('auth ?' for help).\n",
- argv[1]);
- return 0;
- }
- if (c->narg + 2 != argc) {
- fprintf(stderr,
- "Need %s%d argument%s to 'auth %s' command. 'auth ?' for help.\n",
- c->narg < argc + 2 ? "only " : "",
- c->narg, c->narg == 1 ? "" : "s", c->name);
- return 0;
- }
- return((*c->handler)(argv[2], argv[3]));
-}
-#endif
-
-#ifdef ENCRYPTION
-/*
- * The ENCRYPT command.
- */
-
-struct encryptlist {
- char *name;
- char *help;
- int (*handler)();
- int needconnect;
- int minarg;
- int maxarg;
-};
-
-extern int
- EncryptEnable P((char *, char *)),
- EncryptDisable P((char *, char *)),
- EncryptType P((char *, char *)),
- EncryptStart P((char *)),
- EncryptStartInput P((void)),
- EncryptStartOutput P((void)),
- EncryptStop P((char *)),
- EncryptStopInput P((void)),
- EncryptStopOutput P((void)),
- EncryptStatus P((void));
-static int
- EncryptHelp P((void));
-
-struct encryptlist EncryptList[] = {
- { "enable", "Enable encryption. ('encrypt enable ?' for more)",
- EncryptEnable, 1, 1, 2 },
- { "disable", "Disable encryption. ('encrypt enable ?' for more)",
- EncryptDisable, 0, 1, 2 },
- { "type", "Set encryption type. ('encrypt type ?' for more)",
- EncryptType, 0, 1, 1 },
- { "start", "Start encryption. ('encrypt start ?' for more)",
- EncryptStart, 1, 0, 1 },
- { "stop", "Stop encryption. ('encrypt stop ?' for more)",
- EncryptStop, 1, 0, 1 },
- { "input", "Start encrypting the input stream",
- EncryptStartInput, 1, 0, 0 },
- { "-input", "Stop encrypting the input stream",
- EncryptStopInput, 1, 0, 0 },
- { "output", "Start encrypting the output stream",
- EncryptStartOutput, 1, 0, 0 },
- { "-output", "Stop encrypting the output stream",
- EncryptStopOutput, 1, 0, 0 },
-
- { "status", "Display current status of authentication information",
- EncryptStatus, 0, 0, 0 },
- { "help", 0, EncryptHelp, 0, 0, 0 },
- { "?", "Print help information", EncryptHelp, 0, 0, 0 },
- { 0 },
-};
-
- static int
-EncryptHelp()
-{
- struct encryptlist *c;
-
- for (c = EncryptList; c->name; c++) {
- if (c->help) {
- if (*c->help)
- printf("%-15s %s\n", c->name, c->help);
- else
- printf("\n");
- }
- }
- return 0;
-}
-
-encrypt_cmd(argc, argv)
- int argc;
- char *argv[];
-{
- struct encryptlist *c;
-
- if (argc < 2) {
- fprintf(stderr,
- "Need an argument to 'encrypt' command. 'encrypt ?' for help.\n");
- return 0;
- }
-
- c = (struct encryptlist *)
- genget(argv[1], (char **) EncryptList, sizeof(struct encryptlist));
- if (c == 0) {
- fprintf(stderr, "'%s': unknown argument ('encrypt ?' for help).\n",
- argv[1]);
- return 0;
- }
- if (Ambiguous(c)) {
- fprintf(stderr, "'%s': ambiguous argument ('encrypt ?' for help).\n",
- argv[1]);
- return 0;
- }
- argc -= 2;
- if (argc < c->minarg || argc > c->maxarg) {
- if (c->minarg == c->maxarg) {
- fprintf(stderr, "Need %s%d argument%s ",
- c->minarg < argc ? "only " : "", c->minarg,
- c->minarg == 1 ? "" : "s");
- } else {
- fprintf(stderr, "Need %s%d-%d arguments ",
- c->maxarg < argc ? "only " : "", c->minarg, c->maxarg);
- }
- fprintf(stderr, "to 'encrypt %s' command. 'encrypt ?' for help.\n",
- c->name);
- return 0;
- }
- if (c->needconnect && !connected) {
- if (!(argc && (isprefix(argv[2], "help") || isprefix(argv[2], "?")))) {
- printf("?Need to be connected first.\n");
- return 0;
- }
- }
- return ((*c->handler)(argc > 0 ? argv[2] : 0,
- argc > 1 ? argv[3] : 0,
- argc > 2 ? argv[4] : 0));
-}
-#endif /* ENCRYPTION */
-
-#if defined(unix) && defined(TN3270)
- static void
-filestuff(fd)
- int fd;
-{
- int res;
-
-#ifdef F_GETOWN
- setconnmode(0);
- res = fcntl(fd, F_GETOWN, 0);
- setcommandmode();
-
- if (res == -1) {
- perror("fcntl");
- return;
- }
- printf("\tOwner is %d.\n", res);
-#endif
-
- setconnmode(0);
- res = fcntl(fd, F_GETFL, 0);
- setcommandmode();
-
- if (res == -1) {
- perror("fcntl");
- return;
- }
-#ifdef notdef
- printf("\tFlags are 0x%x: %s\n", res, decodeflags(res));
-#endif
-}
-#endif /* defined(unix) && defined(TN3270) */
-
-/*
- * Print status about the connection.
- */
- /*ARGSUSED*/
- static
-status(argc, argv)
- int argc;
- char *argv[];
-{
- if (connected) {
- printf("Connected to %s.\n", hostname);
- if ((argc < 2) || strcmp(argv[1], "notmuch")) {
- int mode = getconnmode();
-
- if (my_want_state_is_will(TELOPT_LINEMODE)) {
- printf("Operating with LINEMODE option\n");
- printf("%s line editing\n", (mode&MODE_EDIT) ? "Local" : "No");
- printf("%s catching of signals\n",
- (mode&MODE_TRAPSIG) ? "Local" : "No");
- slcstate();
-#ifdef KLUDGELINEMODE
- } else if (kludgelinemode && my_want_state_is_dont(TELOPT_SGA)) {
- printf("Operating in obsolete linemode\n");
-#endif
- } else {
- printf("Operating in single character mode\n");
- if (localchars)
- printf("Catching signals locally\n");
- }
- printf("%s character echo\n", (mode&MODE_ECHO) ? "Local" : "Remote");
- if (my_want_state_is_will(TELOPT_LFLOW))
- printf("%s flow control\n", (mode&MODE_FLOW) ? "Local" : "No");
-#ifdef ENCRYPTION
- encrypt_display();
-#endif /* ENCRYPTION */
- }
- } else {
- printf("No connection.\n");
- }
-# if !defined(TN3270)
- printf("Escape character is '%s'.\n", control(escape));
- (void) fflush(stdout);
-# else /* !defined(TN3270) */
- if ((!In3270) && ((argc < 2) || strcmp(argv[1], "notmuch"))) {
- printf("Escape character is '%s'.\n", control(escape));
- }
-# if defined(unix)
- if ((argc >= 2) && !strcmp(argv[1], "everything")) {
- printf("SIGIO received %d time%s.\n",
- sigiocount, (sigiocount == 1)? "":"s");
- if (In3270) {
- printf("Process ID %d, process group %d.\n",
- getpid(), getpgrp(getpid()));
- printf("Terminal input:\n");
- filestuff(tin);
- printf("Terminal output:\n");
- filestuff(tout);
- printf("Network socket:\n");
- filestuff(net);
- }
- }
- if (In3270 && transcom) {
- printf("Transparent mode command is '%s'.\n", transcom);
- }
-# endif /* defined(unix) */
- (void) fflush(stdout);
- if (In3270) {
- return 0;
- }
-# endif /* defined(TN3270) */
- return 1;
-}
-
-#ifdef SIGINFO
-/*
- * Function that gets called when SIGINFO is received.
- */
-ayt_status()
-{
- (void) call(status, "status", "notmuch", 0);
-}
-#endif
-
-unsigned long inet_addr();
-
- int
-tn(argc, argv)
- int argc;
- char *argv[];
-{
- register struct hostent *host = 0;
- struct sockaddr_in sin;
- struct servent *sp = 0;
- unsigned long temp;
- extern char *inet_ntoa();
-#if defined(IP_OPTIONS) && defined(IPPROTO_IP)
- char *srp = 0, *strrchr();
- unsigned long sourceroute(), srlen;
-#endif
- char *cmd, *hostp = 0, *portp = 0, *user = 0;
-
- /* clear the socket address prior to use */
- memset((char *)&sin, 0, sizeof(sin));
-
- if (connected) {
- printf("?Already connected to %s\n", hostname);
- setuid(getuid());
- return 0;
- }
- if (argc < 2) {
- (void) strcpy(line, "open ");
- printf("(to) ");
- (void) fgets(&line[strlen(line)], sizeof(line) - strlen(line), stdin);
- makeargv();
- argc = margc;
- argv = margv;
- }
- cmd = *argv;
- --argc; ++argv;
- while (argc) {
- if (strcmp(*argv, "help") == 0 || isprefix(*argv, "?"))
- goto usage;
- if (strcmp(*argv, "-l") == 0) {
- --argc; ++argv;
- if (argc == 0)
- goto usage;
- user = *argv++;
- --argc;
- continue;
- }
- if (strcmp(*argv, "-a") == 0) {
- --argc; ++argv;
- autologin = 1;
- continue;
- }
- if (hostp == 0) {
- hostp = *argv++;
- --argc;
- continue;
- }
- if (portp == 0) {
- portp = *argv++;
- --argc;
- continue;
- }
- usage:
- printf("usage: %s [-l user] [-a] host-name [port]\n", cmd);
- setuid(getuid());
- return 0;
- }
- if (hostp == 0)
- goto usage;
-
-#if defined(IP_OPTIONS) && defined(IPPROTO_IP)
- if (hostp[0] == '@' || hostp[0] == '!') {
- if ((hostname = strrchr(hostp, ':')) == NULL)
- hostname = strrchr(hostp, '@');
- hostname++;
- srp = 0;
- temp = sourceroute(hostp, &srp, &srlen);
- if (temp == 0) {
- herror(srp);
- setuid(getuid());
- return 0;
- } else if (temp == -1) {
- printf("Bad source route option: %s\n", hostp);
- setuid(getuid());
- return 0;
- } else {
- sin.sin_addr.s_addr = temp;
- sin.sin_family = AF_INET;
- }
- } else {
-#endif
- temp = inet_addr(hostp);
- if (temp != (unsigned long) -1) {
- sin.sin_addr.s_addr = temp;
- sin.sin_family = AF_INET;
- (void) strcpy(_hostname, hostp);
- hostname = _hostname;
- } else {
- host = gethostbyname(hostp);
- if (host) {
- sin.sin_family = host->h_addrtype;
-#if defined(h_addr) /* In 4.3, this is a #define */
- memmove((caddr_t)&sin.sin_addr,
- host->h_addr_list[0], host->h_length);
-#else /* defined(h_addr) */
- memmove((caddr_t)&sin.sin_addr, host->h_addr, host->h_length);
-#endif /* defined(h_addr) */
- strncpy(_hostname, host->h_name, sizeof(_hostname));
- _hostname[sizeof(_hostname)-1] = '\0';
- hostname = _hostname;
- } else {
- herror(hostp);
- setuid(getuid());
- return 0;
- }
- }
-#if defined(IP_OPTIONS) && defined(IPPROTO_IP)
- }
-#endif
- if (portp) {
- if (*portp == '-') {
- portp++;
- telnetport = 1;
- } else
- telnetport = 0;
- sin.sin_port = atoi(portp);
- if (sin.sin_port == 0) {
- sp = getservbyname(portp, "tcp");
- if (sp)
- sin.sin_port = sp->s_port;
- else {
- printf("%s: bad port number\n", portp);
- setuid(getuid());
- return 0;
- }
- } else {
-#if !defined(htons)
- u_short htons P((unsigned short));
-#endif /* !defined(htons) */
- sin.sin_port = htons(sin.sin_port);
- }
- } else {
- if (sp == 0) {
- sp = getservbyname("telnet", "tcp");
- if (sp == 0) {
- fprintf(stderr, "telnet: tcp/telnet: unknown service\n");
- setuid(getuid());
- return 0;
- }
- sin.sin_port = sp->s_port;
- }
- telnetport = 1;
- }
- printf("Trying %s...\n", inet_ntoa(sin.sin_addr));
- do {
- net = socket(AF_INET, SOCK_STREAM, 0);
- setuid(getuid());
- if (net < 0) {
- perror("telnet: socket");
- return 0;
- }
-#if defined(IP_OPTIONS) && defined(IPPROTO_IP)
- if (srp && setsockopt(net, IPPROTO_IP, IP_OPTIONS, (char *)srp, srlen) < 0)
- perror("setsockopt (IP_OPTIONS)");
-#endif
-#if defined(IPPROTO_IP) && defined(IP_TOS)
- {
-# if defined(HAS_GETTOS)
- struct tosent *tp;
- if (tos < 0 && (tp = gettosbyname("telnet", "tcp")))
- tos = tp->t_tos;
-# endif
- if (tos < 0)
- tos = 020; /* Low Delay bit */
- if (tos
- && (setsockopt(net, IPPROTO_IP, IP_TOS,
- (char *)&tos, sizeof(int)) < 0)
- && (errno != ENOPROTOOPT))
- perror("telnet: setsockopt (IP_TOS) (ignored)");
- }
-#endif /* defined(IPPROTO_IP) && defined(IP_TOS) */
-
- if (debug && SetSockOpt(net, SOL_SOCKET, SO_DEBUG, 1) < 0) {
- perror("setsockopt (SO_DEBUG)");
- }
-
- if (connect(net, (struct sockaddr *)&sin, sizeof (sin)) < 0) {
-#if defined(h_addr) /* In 4.3, this is a #define */
- if (host && host->h_addr_list[1]) {
- int oerrno = errno;
-
- fprintf(stderr, "telnet: connect to address %s: ",
- inet_ntoa(sin.sin_addr));
- errno = oerrno;
- perror((char *)0);
- host->h_addr_list++;
- memmove((caddr_t)&sin.sin_addr,
- host->h_addr_list[0], host->h_length);
- (void) NetClose(net);
- continue;
- }
-#endif /* defined(h_addr) */
- perror("telnet: Unable to connect to remote host");
- return 0;
- }
- connected++;
-#if defined(AUTHENTICATION) || defined(ENCRYPTION)
- auth_encrypt_connect(connected);
-#endif /* defined(AUTHENTICATION) || defined(ENCRYPTION) */
- } while (connected == 0);
- cmdrc(hostp, hostname);
- if (autologin && user == NULL) {
- struct passwd *pw;
-
- user = getenv("USER");
- if (user == NULL ||
- (pw = getpwnam(user)) && pw->pw_uid != getuid()) {
- if (pw = getpwuid(getuid()))
- user = pw->pw_name;
- else
- user = NULL;
- }
- }
- if (user) {
- env_define((unsigned char *)"USER", (unsigned char *)user);
- env_export((unsigned char *)"USER");
- }
- (void) call(status, "status", "notmuch", 0);
- if (setjmp(peerdied) == 0)
- telnet(user);
- (void) NetClose(net);
- ExitString("Connection closed by foreign host.\n",1);
- /*NOTREACHED*/
-}
-
-#define HELPINDENT (sizeof ("connect"))
-
-static char
- openhelp[] = "connect to a site",
- closehelp[] = "close current connection",
- logouthelp[] = "forcibly logout remote user and close the connection",
- quithelp[] = "exit telnet",
- statushelp[] = "print status information",
- helphelp[] = "print help information",
- sendhelp[] = "transmit special characters ('send ?' for more)",
- sethelp[] = "set operating parameters ('set ?' for more)",
- unsethelp[] = "unset operating parameters ('unset ?' for more)",
- togglestring[] ="toggle operating parameters ('toggle ?' for more)",
- slchelp[] = "change state of special charaters ('slc ?' for more)",
- displayhelp[] = "display operating parameters",
-#if defined(TN3270) && defined(unix)
- transcomhelp[] = "specify Unix command for transparent mode pipe",
-#endif /* defined(TN3270) && defined(unix) */
-#if defined(AUTHENTICATION)
- authhelp[] = "turn on (off) authentication ('auth ?' for more)",
-#endif
-#ifdef ENCRYPTION
- encrypthelp[] = "turn on (off) encryption ('encrypt ?' for more)",
-#endif /* ENCRYPTION */
-#if defined(unix)
- zhelp[] = "suspend telnet",
-#endif /* defined(unix) */
- shellhelp[] = "invoke a subshell",
- envhelp[] = "change environment variables ('environ ?' for more)",
- modestring[] = "try to enter line or character mode ('mode ?' for more)";
-
-static int help();
-
-static Command cmdtab[] = {
- { "close", closehelp, bye, 1 },
- { "logout", logouthelp, logout, 1 },
- { "display", displayhelp, display, 0 },
- { "mode", modestring, modecmd, 0 },
- { "open", openhelp, tn, 0 },
- { "quit", quithelp, quit, 0 },
- { "send", sendhelp, sendcmd, 0 },
- { "set", sethelp, setcmd, 0 },
- { "unset", unsethelp, unsetcmd, 0 },
- { "status", statushelp, status, 0 },
- { "toggle", togglestring, toggle, 0 },
- { "slc", slchelp, slccmd, 0 },
-#if defined(TN3270) && defined(unix)
- { "transcom", transcomhelp, settranscom, 0 },
-#endif /* defined(TN3270) && defined(unix) */
-#if defined(AUTHENTICATION)
- { "auth", authhelp, auth_cmd, 0 },
-#endif
-#ifdef ENCRYPTION
- { "encrypt", encrypthelp, encrypt_cmd, 0 },
-#endif /* ENCRYPTION */
-#if defined(unix)
- { "z", zhelp, suspend, 0 },
-#endif /* defined(unix) */
-#if defined(TN3270)
- { "!", shellhelp, shell, 1 },
-#else
- { "!", shellhelp, shell, 0 },
-#endif
- { "environ", envhelp, env_cmd, 0 },
- { "?", helphelp, help, 0 },
- 0
-};
-
-static char crmodhelp[] = "deprecated command -- use 'toggle crmod' instead";
-static char escapehelp[] = "deprecated command -- use 'set escape' instead";
-
-static Command cmdtab2[] = {
- { "help", 0, help, 0 },
- { "escape", escapehelp, setescape, 0 },
- { "crmod", crmodhelp, togcrmod, 0 },
- 0
-};
-
-
-/*
- * Call routine with argc, argv set from args (terminated by 0).
- */
-
- /*VARARGS1*/
- static
-call(va_alist)
- va_dcl
-{
- va_list ap;
- typedef int (*intrtn_t)();
- intrtn_t routine;
- char *args[100];
- int argno = 0;
-
- va_start(ap);
- routine = (va_arg(ap, intrtn_t));
- while ((args[argno++] = va_arg(ap, char *)) != 0) {
- ;
- }
- va_end(ap);
- return (*routine)(argno-1, args);
-}
-
-
- static Command *
-getcmd(name)
- char *name;
-{
- Command *cm;
-
- if (cm = (Command *) genget(name, (char **) cmdtab, sizeof(Command)))
- return cm;
- return (Command *) genget(name, (char **) cmdtab2, sizeof(Command));
-}
-
- void
-command(top, tbuf, cnt)
- int top;
- char *tbuf;
- int cnt;
-{
- register Command *c;
-
- setcommandmode();
- if (!top) {
- putchar('\n');
-#if defined(unix)
- } else {
- (void) signal(SIGINT, SIG_DFL);
- (void) signal(SIGQUIT, SIG_DFL);
-#endif /* defined(unix) */
- }
- for (;;) {
- if (rlogin == _POSIX_VDISABLE)
- printf("%s> ", prompt);
- if (tbuf) {
- register char *cp;
- cp = line;
- while (cnt > 0 && (*cp++ = *tbuf++) != '\n')
- cnt--;
- tbuf = 0;
- if (cp == line || *--cp != '\n' || cp == line)
- goto getline;
- *cp = '\0';
- if (rlogin == _POSIX_VDISABLE)
- printf("%s\n", line);
- } else {
- getline:
- if (rlogin != _POSIX_VDISABLE)
- printf("%s> ", prompt);
- if (fgets(line, sizeof(line), stdin) == NULL) {
- if (feof(stdin) || ferror(stdin)) {
- (void) quit();
- /*NOTREACHED*/
- }
- break;
- }
- }
- if (line[0] == 0)
- break;
- makeargv();
- if (margv[0] == 0) {
- break;
- }
- c = getcmd(margv[0]);
- if (Ambiguous(c)) {
- printf("?Ambiguous command\n");
- continue;
- }
- if (c == 0) {
- printf("?Invalid command\n");
- continue;
- }
- if (c->needconnect && !connected) {
- printf("?Need to be connected first.\n");
- continue;
- }
- if ((*c->handler)(margc, margv)) {
- break;
- }
- }
- if (!top) {
- if (!connected) {
- longjmp(toplevel, 1);
- /*NOTREACHED*/
- }
-#if defined(TN3270)
- if (shell_active == 0) {
- setconnmode(0);
- }
-#else /* defined(TN3270) */
- setconnmode(0);
-#endif /* defined(TN3270) */
- }
-}
-
-/*
- * Help command.
- */
- static
-help(argc, argv)
- int argc;
- char *argv[];
-{
- register Command *c;
-
- if (argc == 1) {
- printf("Commands may be abbreviated. Commands are:\n\n");
- for (c = cmdtab; c->name; c++)
- if (c->help) {
- printf("%-*s\t%s\n", HELPINDENT, c->name,
- c->help);
- }
- return 0;
- }
- while (--argc > 0) {
- register char *arg;
- arg = *++argv;
- c = getcmd(arg);
- if (Ambiguous(c))
- printf("?Ambiguous help command %s\n", arg);
- else if (c == (Command *)0)
- printf("?Invalid help command %s\n", arg);
- else
- printf("%s\n", c->help);
- }
- return 0;
-}
-
-static char *rcname = 0;
-static char rcbuf[128];
-
-cmdrc(m1, m2)
- char *m1, *m2;
-{
- register Command *c;
- FILE *rcfile;
- int gotmachine = 0;
- int l1 = strlen(m1);
- int l2 = strlen(m2);
- char m1save[64];
-
- if (skiprc)
- return;
-
- strcpy(m1save, m1);
- m1 = m1save;
-
- if (rcname == 0) {
- rcname = getenv("HOME");
- if (rcname)
- strcpy(rcbuf, rcname);
- else
- rcbuf[0] = '\0';
- strcat(rcbuf, "/.telnetrc");
- rcname = rcbuf;
- }
-
- if ((rcfile = fopen(rcname, "r")) == 0) {
- return;
- }
-
- for (;;) {
- if (fgets(line, sizeof(line), rcfile) == NULL)
- break;
- if (line[0] == 0)
- break;
- if (line[0] == '#')
- continue;
- if (gotmachine) {
- if (!isspace(line[0]))
- gotmachine = 0;
- }
- if (gotmachine == 0) {
- if (isspace(line[0]))
- continue;
- if (strncasecmp(line, m1, l1) == 0)
- strncpy(line, &line[l1], sizeof(line) - l1);
- else if (strncasecmp(line, m2, l2) == 0)
- strncpy(line, &line[l2], sizeof(line) - l2);
- else if (strncasecmp(line, "DEFAULT", 7) == 0)
- strncpy(line, &line[7], sizeof(line) - 7);
- else
- continue;
- if (line[0] != ' ' && line[0] != '\t' && line[0] != '\n')
- continue;
- gotmachine = 1;
- }
- makeargv();
- if (margv[0] == 0)
- continue;
- c = getcmd(margv[0]);
- if (Ambiguous(c)) {
- printf("?Ambiguous command: %s\n", margv[0]);
- continue;
- }
- if (c == 0) {
- printf("?Invalid command: %s\n", margv[0]);
- continue;
- }
- /*
- * This should never happen...
- */
- if (c->needconnect && !connected) {
- printf("?Need to be connected first for %s.\n", margv[0]);
- continue;
- }
- (*c->handler)(margc, margv);
- }
- fclose(rcfile);
-}
-
-#if defined(IP_OPTIONS) && defined(IPPROTO_IP)
-
-/*
- * Source route is handed in as
- * [!]@hop1@hop2...[@|:]dst
- * If the leading ! is present, it is a
- * strict source route, otherwise it is
- * assmed to be a loose source route.
- *
- * We fill in the source route option as
- * hop1,hop2,hop3...dest
- * and return a pointer to hop1, which will
- * be the address to connect() to.
- *
- * Arguments:
- * arg: pointer to route list to decipher
- *
- * cpp: If *cpp is not equal to NULL, this is a
- * pointer to a pointer to a character array
- * that should be filled in with the option.
- *
- * lenp: pointer to an integer that contains the
- * length of *cpp if *cpp != NULL.
- *
- * Return values:
- *
- * Returns the address of the host to connect to. If the
- * return value is -1, there was a syntax error in the
- * option, either unknown characters, or too many hosts.
- * If the return value is 0, one of the hostnames in the
- * path is unknown, and *cpp is set to point to the bad
- * hostname.
- *
- * *cpp: If *cpp was equal to NULL, it will be filled
- * in with a pointer to our static area that has
- * the option filled in. This will be 32bit aligned.
- *
- * *lenp: This will be filled in with how long the option
- * pointed to by *cpp is.
- *
- */
- unsigned long
-sourceroute(arg, cpp, lenp)
- char *arg;
- char **cpp;
- int *lenp;
-{
- static char lsr[44];
-#ifdef sysV88
- static IOPTN ipopt;
-#endif
- char *cp, *cp2, *lsrp, *lsrep;
- register int tmp;
- struct in_addr sin_addr;
- register struct hostent *host = 0;
- register char c;
-
- /*
- * Verify the arguments, and make sure we have
- * at least 7 bytes for the option.
- */
- if (cpp == NULL || lenp == NULL)
- return((unsigned long)-1);
- if (*cpp != NULL && *lenp < 7)
- return((unsigned long)-1);
- /*
- * Decide whether we have a buffer passed to us,
- * or if we need to use our own static buffer.
- */
- if (*cpp) {
- lsrp = *cpp;
- lsrep = lsrp + *lenp;
- } else {
- *cpp = lsrp = lsr;
- lsrep = lsrp + 44;
- }
-
- cp = arg;
-
- /*
- * Next, decide whether we have a loose source
- * route or a strict source route, and fill in
- * the begining of the option.
- */
-#ifndef sysV88
- if (*cp == '!') {
- cp++;
- *lsrp++ = IPOPT_SSRR;
- } else
- *lsrp++ = IPOPT_LSRR;
-#else
- if (*cp == '!') {
- cp++;
- ipopt.io_type = IPOPT_SSRR;
- } else
- ipopt.io_type = IPOPT_LSRR;
-#endif
-
- if (*cp != '@')
- return((unsigned long)-1);
-
-#ifndef sysV88
- lsrp++; /* skip over length, we'll fill it in later */
- *lsrp++ = 4;
-#endif
-
- cp++;
-
- sin_addr.s_addr = 0;
-
- for (c = 0;;) {
- if (c == ':')
- cp2 = 0;
- else for (cp2 = cp; c = *cp2; cp2++) {
- if (c == ',') {
- *cp2++ = '\0';
- if (*cp2 == '@')
- cp2++;
- } else if (c == '@') {
- *cp2++ = '\0';
- } else if (c == ':') {
- *cp2++ = '\0';
- } else
- continue;
- break;
- }
- if (!c)
- cp2 = 0;
-
- if ((tmp = inet_addr(cp)) != -1) {
- sin_addr.s_addr = tmp;
- } else if (host = gethostbyname(cp)) {
-#if defined(h_addr)
- memmove((caddr_t)&sin_addr,
- host->h_addr_list[0], host->h_length);
-#else
- memmove((caddr_t)&sin_addr, host->h_addr, host->h_length);
-#endif
- } else {
- *cpp = cp;
- return(0);
- }
- memmove(lsrp, (char *)&sin_addr, 4);
- lsrp += 4;
- if (cp2)
- cp = cp2;
- else
- break;
- /*
- * Check to make sure there is space for next address
- */
- if (lsrp + 4 > lsrep)
- return((unsigned long)-1);
- }
-#ifndef sysV88
- if ((*(*cpp+IPOPT_OLEN) = lsrp - *cpp) <= 7) {
- *cpp = 0;
- *lenp = 0;
- return((unsigned long)-1);
- }
- *lsrp++ = IPOPT_NOP; /* 32 bit word align it */
- *lenp = lsrp - *cpp;
-#else
- ipopt.io_len = lsrp - *cpp;
- if (ipopt.io_len <= 5) { /* Is 3 better ? */
- *cpp = 0;
- *lenp = 0;
- return((unsigned long)-1);
- }
- *lenp = sizeof(ipopt);
- *cpp = (char *) &ipopt;
-#endif
- return(sin_addr.s_addr);
-}
-#endif
diff --git a/secure/usr.bin/telnet/externs.h b/secure/usr.bin/telnet/externs.h
deleted file mode 100644
index 7c52be982aa0..000000000000
--- a/secure/usr.bin/telnet/externs.h
+++ /dev/null
@@ -1,482 +0,0 @@
-/*
- * Copyright (c) 1988, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)externs.h 8.3 (Berkeley) 5/30/95
- */
-
-#ifndef BSD
-# define BSD 43
-#endif
-
-/*
- * ucb stdio.h defines BSD as something wierd
- */
-#if defined(sun) && defined(__svr4__)
-#define BSD 43
-#endif
-
-#ifndef USE_TERMIO
-# if BSD > 43 || defined(SYSV_TERMIO)
-# define USE_TERMIO
-# endif
-#endif
-
-#include <stdio.h>
-#include <setjmp.h>
-#if defined(CRAY) && !defined(NO_BSD_SETJMP)
-#include <bsdsetjmp.h>
-#endif
-#ifndef FILIO_H
-#include <sys/ioctl.h>
-#else
-#include <sys/filio.h>
-#endif
-#ifdef CRAY
-# include <errno.h>
-#endif /* CRAY */
-#ifdef USE_TERMIO
-# ifndef VINTR
-# ifdef SYSV_TERMIO
-# include <sys/termio.h>
-# else
-# include <sys/termios.h>
-# define termio termios
-# endif
-# endif
-#endif
-#if defined(NO_CC_T) || !defined(USE_TERMIO)
-# if !defined(USE_TERMIO)
-typedef char cc_t;
-# else
-typedef unsigned char cc_t;
-# endif
-#endif
-
-#ifndef NO_STRING_H
-#include <string.h>
-#else
-#include <strings.h>
-#endif
-
-#ifndef _POSIX_VDISABLE
-# ifdef sun
-# include <sys/param.h> /* pick up VDISABLE definition, mayby */
-# endif
-# ifdef VDISABLE
-# define _POSIX_VDISABLE VDISABLE
-# else
-# define _POSIX_VDISABLE ((cc_t)'\377')
-# endif
-#endif
-
-#define SUBBUFSIZE 256
-
-#ifndef CRAY
-extern int errno; /* outside this world */
-#endif /* !CRAY */
-
-#if !defined(P)
-# ifdef __STDC__
-# define P(x) x
-# else
-# define P(x) ()
-# endif
-#endif
-
-extern int
- autologin, /* Autologin enabled */
- skiprc, /* Don't process the ~/.telnetrc file */
- eight, /* use eight bit mode (binary in and/or out */
- flushout, /* flush output */
- connected, /* Are we connected to the other side? */
- globalmode, /* Mode tty should be in */
- In3270, /* Are we in 3270 mode? */
- telnetport, /* Are we connected to the telnet port? */
- localflow, /* Flow control handled locally */
- restartany, /* If flow control, restart output on any character */
- localchars, /* we recognize interrupt/quit */
- donelclchars, /* the user has set "localchars" */
- showoptions,
- net, /* Network file descriptor */
- tin, /* Terminal input file descriptor */
- tout, /* Terminal output file descriptor */
- crlf, /* Should '\r' be mapped to <CR><LF> (or <CR><NUL>)? */
- autoflush, /* flush output when interrupting? */
- autosynch, /* send interrupt characters with SYNCH? */
- SYNCHing, /* Is the stream in telnet SYNCH mode? */
- donebinarytoggle, /* the user has put us in binary */
- dontlecho, /* do we suppress local echoing right now? */
- crmod,
- netdata, /* Print out network data flow */
- prettydump, /* Print "netdata" output in user readable format */
-#if defined(unix)
-#if defined(TN3270)
- cursesdata, /* Print out curses data flow */
- apitrace, /* Trace API transactions */
-#endif /* defined(TN3270) */
- termdata, /* Print out terminal data flow */
-#endif /* defined(unix) */
- debug; /* Debug level */
-
-extern cc_t escape; /* Escape to command mode */
-extern cc_t rlogin; /* Rlogin mode escape character */
-#ifdef KLUDGELINEMODE
-extern cc_t echoc; /* Toggle local echoing */
-#endif
-
-extern char
- *prompt; /* Prompt for command. */
-
-extern char
- doopt[],
- dont[],
- will[],
- wont[],
- options[], /* All the little options */
- *hostname; /* Who are we connected to? */
-#ifdef ENCRYPTION
-extern void (*encrypt_output) P((unsigned char *, int));
-extern int (*decrypt_input) P((int));
-#endif /* ENCRYPTION */
-
-/*
- * We keep track of each side of the option negotiation.
- */
-
-#define MY_STATE_WILL 0x01
-#define MY_WANT_STATE_WILL 0x02
-#define MY_STATE_DO 0x04
-#define MY_WANT_STATE_DO 0x08
-
-/*
- * Macros to check the current state of things
- */
-
-#define my_state_is_do(opt) (options[opt]&MY_STATE_DO)
-#define my_state_is_will(opt) (options[opt]&MY_STATE_WILL)
-#define my_want_state_is_do(opt) (options[opt]&MY_WANT_STATE_DO)
-#define my_want_state_is_will(opt) (options[opt]&MY_WANT_STATE_WILL)
-
-#define my_state_is_dont(opt) (!my_state_is_do(opt))
-#define my_state_is_wont(opt) (!my_state_is_will(opt))
-#define my_want_state_is_dont(opt) (!my_want_state_is_do(opt))
-#define my_want_state_is_wont(opt) (!my_want_state_is_will(opt))
-
-#define set_my_state_do(opt) {options[opt] |= MY_STATE_DO;}
-#define set_my_state_will(opt) {options[opt] |= MY_STATE_WILL;}
-#define set_my_want_state_do(opt) {options[opt] |= MY_WANT_STATE_DO;}
-#define set_my_want_state_will(opt) {options[opt] |= MY_WANT_STATE_WILL;}
-
-#define set_my_state_dont(opt) {options[opt] &= ~MY_STATE_DO;}
-#define set_my_state_wont(opt) {options[opt] &= ~MY_STATE_WILL;}
-#define set_my_want_state_dont(opt) {options[opt] &= ~MY_WANT_STATE_DO;}
-#define set_my_want_state_wont(opt) {options[opt] &= ~MY_WANT_STATE_WILL;}
-
-/*
- * Make everything symetrical
- */
-
-#define HIS_STATE_WILL MY_STATE_DO
-#define HIS_WANT_STATE_WILL MY_WANT_STATE_DO
-#define HIS_STATE_DO MY_STATE_WILL
-#define HIS_WANT_STATE_DO MY_WANT_STATE_WILL
-
-#define his_state_is_do my_state_is_will
-#define his_state_is_will my_state_is_do
-#define his_want_state_is_do my_want_state_is_will
-#define his_want_state_is_will my_want_state_is_do
-
-#define his_state_is_dont my_state_is_wont
-#define his_state_is_wont my_state_is_dont
-#define his_want_state_is_dont my_want_state_is_wont
-#define his_want_state_is_wont my_want_state_is_dont
-
-#define set_his_state_do set_my_state_will
-#define set_his_state_will set_my_state_do
-#define set_his_want_state_do set_my_want_state_will
-#define set_his_want_state_will set_my_want_state_do
-
-#define set_his_state_dont set_my_state_wont
-#define set_his_state_wont set_my_state_dont
-#define set_his_want_state_dont set_my_want_state_wont
-#define set_his_want_state_wont set_my_want_state_dont
-
-
-extern FILE
- *NetTrace; /* Where debugging output goes */
-extern unsigned char
- NetTraceFile[]; /* Name of file where debugging output goes */
-extern void
- SetNetTrace P((char *)); /* Function to change where debugging goes */
-
-extern jmp_buf
- peerdied,
- toplevel; /* For error conditions. */
-
-extern void
- command P((int, char *, int)),
- Dump P((int, unsigned char *, int)),
- init_3270 P((void)),
- printoption P((char *, int, int)),
- printsub P((int, unsigned char *, int)),
- sendnaws P((void)),
- setconnmode P((int)),
- setcommandmode P((void)),
- setneturg P((void)),
- sys_telnet_init P((void)),
- telnet P((char *)),
- tel_enter_binary P((int)),
- TerminalFlushOutput P((void)),
- TerminalNewMode P((int)),
- TerminalRestoreState P((void)),
- TerminalSaveState P((void)),
- tninit P((void)),
- upcase P((char *)),
- willoption P((int)),
- wontoption P((int));
-
-extern void
- send_do P((int, int)),
- send_dont P((int, int)),
- send_will P((int, int)),
- send_wont P((int, int));
-
-extern void
- lm_will P((unsigned char *, int)),
- lm_wont P((unsigned char *, int)),
- lm_do P((unsigned char *, int)),
- lm_dont P((unsigned char *, int)),
- lm_mode P((unsigned char *, int, int));
-
-extern void
- slc_init P((void)),
- slcstate P((void)),
- slc_mode_export P((void)),
- slc_mode_import P((int)),
- slc_import P((int)),
- slc_export P((void)),
- slc P((unsigned char *, int)),
- slc_check P((void)),
- slc_start_reply P((void)),
- slc_add_reply P((int, int, int)),
- slc_end_reply P((void));
-extern int
- slc_update P((void));
-
-extern void
- env_opt P((unsigned char *, int)),
- env_opt_start P((void)),
- env_opt_start_info P((void)),
- env_opt_add P((unsigned char *)),
- env_opt_end P((int));
-
-extern unsigned char
- *env_default P((int, int)),
- *env_getvalue P((unsigned char *));
-
-extern int
- get_status P((void)),
- dosynch P((void));
-
-extern cc_t
- *tcval P((int));
-
-#ifndef USE_TERMIO
-
-extern struct tchars ntc;
-extern struct ltchars nltc;
-extern struct sgttyb nttyb;
-
-# define termEofChar ntc.t_eofc
-# define termEraseChar nttyb.sg_erase
-# define termFlushChar nltc.t_flushc
-# define termIntChar ntc.t_intrc
-# define termKillChar nttyb.sg_kill
-# define termLiteralNextChar nltc.t_lnextc
-# define termQuitChar ntc.t_quitc
-# define termSuspChar nltc.t_suspc
-# define termRprntChar nltc.t_rprntc
-# define termWerasChar nltc.t_werasc
-# define termStartChar ntc.t_startc
-# define termStopChar ntc.t_stopc
-# define termForw1Char ntc.t_brkc
-extern cc_t termForw2Char;
-extern cc_t termAytChar;
-
-# define termEofCharp (cc_t *)&ntc.t_eofc
-# define termEraseCharp (cc_t *)&nttyb.sg_erase
-# define termFlushCharp (cc_t *)&nltc.t_flushc
-# define termIntCharp (cc_t *)&ntc.t_intrc
-# define termKillCharp (cc_t *)&nttyb.sg_kill
-# define termLiteralNextCharp (cc_t *)&nltc.t_lnextc
-# define termQuitCharp (cc_t *)&ntc.t_quitc
-# define termSuspCharp (cc_t *)&nltc.t_suspc
-# define termRprntCharp (cc_t *)&nltc.t_rprntc
-# define termWerasCharp (cc_t *)&nltc.t_werasc
-# define termStartCharp (cc_t *)&ntc.t_startc
-# define termStopCharp (cc_t *)&ntc.t_stopc
-# define termForw1Charp (cc_t *)&ntc.t_brkc
-# define termForw2Charp (cc_t *)&termForw2Char
-# define termAytCharp (cc_t *)&termAytChar
-
-# else
-
-extern struct termio new_tc;
-
-# define termEofChar new_tc.c_cc[VEOF]
-# define termEraseChar new_tc.c_cc[VERASE]
-# define termIntChar new_tc.c_cc[VINTR]
-# define termKillChar new_tc.c_cc[VKILL]
-# define termQuitChar new_tc.c_cc[VQUIT]
-
-# ifndef VSUSP
-extern cc_t termSuspChar;
-# else
-# define termSuspChar new_tc.c_cc[VSUSP]
-# endif
-# if defined(VFLUSHO) && !defined(VDISCARD)
-# define VDISCARD VFLUSHO
-# endif
-# ifndef VDISCARD
-extern cc_t termFlushChar;
-# else
-# define termFlushChar new_tc.c_cc[VDISCARD]
-# endif
-# ifndef VWERASE
-extern cc_t termWerasChar;
-# else
-# define termWerasChar new_tc.c_cc[VWERASE]
-# endif
-# ifndef VREPRINT
-extern cc_t termRprntChar;
-# else
-# define termRprntChar new_tc.c_cc[VREPRINT]
-# endif
-# ifndef VLNEXT
-extern cc_t termLiteralNextChar;
-# else
-# define termLiteralNextChar new_tc.c_cc[VLNEXT]
-# endif
-# ifndef VSTART
-extern cc_t termStartChar;
-# else
-# define termStartChar new_tc.c_cc[VSTART]
-# endif
-# ifndef VSTOP
-extern cc_t termStopChar;
-# else
-# define termStopChar new_tc.c_cc[VSTOP]
-# endif
-# ifndef VEOL
-extern cc_t termForw1Char;
-# else
-# define termForw1Char new_tc.c_cc[VEOL]
-# endif
-# ifndef VEOL2
-extern cc_t termForw2Char;
-# else
-# define termForw2Char new_tc.c_cc[VEOL]
-# endif
-# ifndef VSTATUS
-extern cc_t termAytChar;
-#else
-# define termAytChar new_tc.c_cc[VSTATUS]
-#endif
-
-# if !defined(CRAY) || defined(__STDC__)
-# define termEofCharp &termEofChar
-# define termEraseCharp &termEraseChar
-# define termIntCharp &termIntChar
-# define termKillCharp &termKillChar
-# define termQuitCharp &termQuitChar
-# define termSuspCharp &termSuspChar
-# define termFlushCharp &termFlushChar
-# define termWerasCharp &termWerasChar
-# define termRprntCharp &termRprntChar
-# define termLiteralNextCharp &termLiteralNextChar
-# define termStartCharp &termStartChar
-# define termStopCharp &termStopChar
-# define termForw1Charp &termForw1Char
-# define termForw2Charp &termForw2Char
-# define termAytCharp &termAytChar
-# else
- /* Work around a compiler bug */
-# define termEofCharp 0
-# define termEraseCharp 0
-# define termIntCharp 0
-# define termKillCharp 0
-# define termQuitCharp 0
-# define termSuspCharp 0
-# define termFlushCharp 0
-# define termWerasCharp 0
-# define termRprntCharp 0
-# define termLiteralNextCharp 0
-# define termStartCharp 0
-# define termStopCharp 0
-# define termForw1Charp 0
-# define termForw2Charp 0
-# define termAytCharp 0
-# endif
-#endif
-
-
-/* Ring buffer structures which are shared */
-
-extern Ring
- netoring,
- netiring,
- ttyoring,
- ttyiring;
-
-/* Tn3270 section */
-#if defined(TN3270)
-
-extern int
- HaveInput, /* Whether an asynchronous I/O indication came in */
- noasynchtty, /* Don't do signals on I/O (SIGURG, SIGIO) */
- noasynchnet, /* Don't do signals on I/O (SIGURG, SIGIO) */
- sigiocount, /* Count of SIGIO receptions */
- shell_active; /* Subshell is active */
-
-extern char
- *Ibackp, /* Oldest byte of 3270 data */
- Ibuf[], /* 3270 buffer */
- *Ifrontp, /* Where next 3270 byte goes */
- tline[],
- *transcom; /* Transparent command */
-
-extern int
- settranscom P((int, char**));
-
-extern void
- inputAvailable P((int));
-#endif /* defined(TN3270) */
diff --git a/secure/usr.bin/telnet/krb4-proto.h b/secure/usr.bin/telnet/krb4-proto.h
deleted file mode 100644
index 75f6d4122e94..000000000000
--- a/secure/usr.bin/telnet/krb4-proto.h
+++ /dev/null
@@ -1,207 +0,0 @@
-#ifdef __STDC__
-# define P(s) s
-#else
-# define P(s) ()
-#endif
-
-/* add_ticket.c */
-int add_ticket P((KTEXT , int , char *, int , char *, char *, char *, int , KTEXT ));
-
-/* cr_err_reply.c */
-void cr_err_reply P((KTEXT , char *, char *, char *, u_long , u_long , char *));
-
-/* create_auth_reply.c */
-KTEXT create_auth_reply P((char *, char *, char *, long , int , unsigned long , int , KTEXT ));
-
-/* create_ciph.c */
-int create_ciph P((KTEXT , C_Block , char *, char *, char *, unsigned long , int , KTEXT , unsigned long , C_Block ));
-
-/* create_death_packet.c */
-KTEXT krb_create_death_packet P((char *));
-
-/* create_ticket.c */
-int krb_create_ticket P((KTEXT , unsigned int , char *, char *, char *, long , char *, int , long , char *, char *, C_Block ));
-
-/* debug_decl.c */
-
-/* decomp_ticket.c */
-int decomp_ticket P((KTEXT , unsigned char *, char *, char *, char *, unsigned long *, C_Block , int *, unsigned long *, char *, char *, C_Block , Key_schedule ));
-
-/* dest_tkt.c */
-int dest_tkt P((void ));
-
-/* extract_ticket.c */
-int extract_ticket P((KTEXT , int , char *, int *, int *, char *, KTEXT ));
-
-/* fgetst.c */
-int fgetst P((FILE *, char *, int ));
-
-/* get_ad_tkt.c */
-int get_ad_tkt P((char *, char *, char *, int ));
-
-/* get_admhst.c */
-int krb_get_admhst P((char *, char *, int ));
-
-/* get_cred.c */
-int krb_get_cred P((char *, char *, char *, CREDENTIALS *));
-
-/* get_in_tkt.c */
-int krb_get_pw_in_tkt P((char *, char *, char *, char *, char *, int , char *));
-int placebo_read_password P((des_cblock *, char *, int ));
-int placebo_read_pw_string P((char *, int , char *, int ));
-
-/* get_krbhst.c */
-int krb_get_krbhst P((char *, char *, int ));
-
-/* get_krbrlm.c */
-int krb_get_lrealm P((char *, int ));
-
-/* get_phost.c */
-char *krb_get_phost P((char *));
-
-/* get_pw_tkt.c */
-int get_pw_tkt P((char *, char *, char *, char *));
-
-/* get_request.c */
-int get_request P((KTEXT , int , char **, char **));
-
-/* get_svc_in_tkt.c */
-int krb_get_svc_in_tkt P((char *, char *, char *, char *, char *, int , char *));
-
-/* get_tf_fullname.c */
-int krb_get_tf_fullname P((char *, char *, char *, char *));
-
-/* get_tf_realm.c */
-int krb_get_tf_realm P((char *, char *));
-
-/* getopt.c */
-int getopt P((int , char **, char *));
-
-/* getrealm.c */
-char *krb_realmofhost P((char *));
-
-/* getst.c */
-int getst P((int , char *, int ));
-
-/* in_tkt.c */
-int in_tkt P((char *, char *));
-
-/* k_gethostname.c */
-int k_gethostname P((char *, int ));
-
-/* klog.c */
-char *klog P((int , char *, int , int , int , int , int , int , int , int , int , int ));
-int kset_logfile P((char *));
-
-/* kname_parse.c */
-int kname_parse P((char *, char *, char *, char *));
-int k_isname P((char *));
-int k_isinst P((char *));
-int k_isrealm P((char *));
-
-/* kntoln.c */
-int krb_kntoln P((AUTH_DAT *, char *));
-
-/* krb_err_txt.c */
-
-/* krb_get_in_tkt.c */
-int krb_get_in_tkt P((char *, char *, char *, char *, char *, int , int (*key_proc )(), int (*decrypt_proc )(), char *));
-
-/* kuserok.c */
-int kuserok P((AUTH_DAT *, char *));
-
-/* log.c */
-void log P((char *, int , int , int , int , int , int , int , int , int , int ));
-int set_logfile P((char *));
-int new_log P((long , char *));
-
-/* mk_err.c */
-long krb_mk_err P((u_char *, long , char *));
-
-/* mk_priv.c */
-long krb_mk_priv P((u_char *, u_char *, u_long , Key_schedule , C_Block , struct sockaddr_in *, struct sockaddr_in *));
-
-/* mk_req.c */
-int krb_mk_req P((KTEXT , char *, char *, char *, long ));
-int krb_set_lifetime P((int ));
-
-/* mk_safe.c */
-long krb_mk_safe P((u_char *, u_char *, u_long , C_Block *, struct sockaddr_in *, struct sockaddr_in *));
-
-/* month_sname.c */
-char *month_sname P((int ));
-
-/* netread.c */
-int krb_net_read P((int , char *, int ));
-
-/* netwrite.c */
-int krb_net_write P((int , char *, int ));
-
-/* one.c */
-
-/* pkt_cipher.c */
-KTEXT pkt_cipher P((KTEXT ));
-
-/* pkt_clen.c */
-int pkt_clen P((KTEXT ));
-
-/* rd_err.c */
-int krb_rd_err P((u_char *, u_long , long *, MSG_DAT *));
-
-/* rd_priv.c */
-long krb_rd_priv P((u_char *, u_long , Key_schedule , C_Block , struct sockaddr_in *, struct sockaddr_in *, MSG_DAT *));
-
-/* rd_req.c */
-int krb_set_key P((char *, int ));
-int krb_rd_req P((KTEXT , char *, char *, long , AUTH_DAT *, char *));
-
-/* rd_safe.c */
-long krb_rd_safe P((u_char *, u_long , C_Block *, struct sockaddr_in *, struct sockaddr_in *, MSG_DAT *));
-
-/* read_service_key.c */
-int read_service_key P((char *, char *, char *, int , char *, char *));
-
-/* recvauth.c */
-int krb_recvauth P((long , int , KTEXT , char *, char *, struct sockaddr_in *, struct sockaddr_in *, AUTH_DAT *, char *, Key_schedule , char *));
-
-/* save_credentials.c */
-int save_credentials P((char *, char *, char *, C_Block , int , int , KTEXT , long ));
-
-/* send_to_kdc.c */
-int send_to_kdc P((KTEXT , KTEXT , char *));
-
-/* sendauth.c */
-int krb_sendauth P((long , int , KTEXT , char *, char *, char *, u_long , MSG_DAT *, CREDENTIALS *, Key_schedule , struct sockaddr_in *, struct sockaddr_in *, char *));
-int krb_sendsvc P((int , char *));
-
-/* setenv.c */
-int setenv P((char *, char *, int ));
-void unsetenv P((char *));
-char *getenv P((char *));
-char *_findenv P((char *, int *));
-
-/* stime.c */
-char *stime P((long *));
-
-/* tf_shm.c */
-int krb_shm_create P((char *));
-int krb_is_diskless P((void ));
-int krb_shm_dest P((char *));
-
-/* tf_util.c */
-int tf_init P((char *, int ));
-int tf_get_pname P((char *));
-int tf_get_pinst P((char *));
-int tf_get_cred P((CREDENTIALS *));
-int tf_close P((void ));
-int tf_save_cred P((char *, char *, char *, C_Block , int , int , KTEXT , long ));
-
-/* tkt_string.c */
-char *tkt_string P((void ));
-void krb_set_tkt_string P((char *));
-
-/* util.c */
-int ad_print P((AUTH_DAT *));
-int placebo_cblock_print P((des_cblock ));
-
-#undef P
diff --git a/secure/usr.bin/telnet/main.c b/secure/usr.bin/telnet/main.c
deleted file mode 100644
index 09ac26c38caf..000000000000
--- a/secure/usr.bin/telnet/main.c
+++ /dev/null
@@ -1,322 +0,0 @@
-/*
- * Copyright (c) 1988, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char copyright[] =
-"@(#) Copyright (c) 1988, 1990, 1993\n\
- The Regents of the University of California. All rights reserved.\n";
-#endif /* not lint */
-
-#ifndef lint
-static char sccsid[] = "@(#)main.c 8.3 (Berkeley) 5/30/95";
-#endif /* not lint */
-
-#include <sys/types.h>
-
-#include "ring.h"
-#include "externs.h"
-#include "defines.h"
-
-/* These values need to be the same as defined in libtelnet/kerberos5.c */
-/* Either define them in both places, or put in some common header file. */
-#define OPTS_FORWARD_CREDS 0x00000002
-#define OPTS_FORWARDABLE_CREDS 0x00000001
-
-#if 0
-#define FORWARD
-#endif
-
-/*
- * Initialize variables.
- */
- void
-tninit()
-{
- init_terminal();
-
- init_network();
-
- init_telnet();
-
- init_sys();
-
-#if defined(TN3270)
- init_3270();
-#endif
-}
-
- void
-usage()
-{
- fprintf(stderr, "Usage: %s %s%s%s%s\n",
- prompt,
-#ifdef AUTHENTICATION
- "[-8] [-E] [-K] [-L] [-S tos] [-X atype] [-a] [-c] [-d] [-e char]",
- "\n\t[-k realm] [-l user] [-f/-F] [-n tracefile] ",
-#else
- "[-8] [-E] [-L] [-S tos] [-a] [-c] [-d] [-e char] [-l user]",
- "\n\t[-n tracefile]",
-#endif
-#if defined(TN3270) && defined(unix)
-# ifdef AUTHENTICATION
- "[-noasynch] [-noasynctty]\n\t[-noasyncnet] [-r] [-t transcom] ",
-# else
- "[-noasynch] [-noasynctty] [-noasyncnet] [-r]\n\t[-t transcom]",
-# endif
-#else
- "[-r] ",
-#endif
-#ifdef ENCRYPTION
- "[-x] [host-name [port]]"
-#else /* ENCRYPTION */
- "[host-name [port]]"
-#endif /* ENCRYPTION */
- );
- exit(1);
-}
-
-/*
- * main. Parse arguments, invoke the protocol or command parser.
- */
-
-
-main(argc, argv)
- int argc;
- char *argv[];
-{
- extern char *optarg;
- extern int optind;
- int ch;
- char *user, *strrchr();
-#ifdef FORWARD
- extern int forward_flags;
-#endif /* FORWARD */
-
- tninit(); /* Clear out things */
-#if defined(CRAY) && !defined(__STDC__)
- _setlist_init(); /* Work around compiler bug */
-#endif
-
- TerminalSaveState();
-
- if (prompt = strrchr(argv[0], '/'))
- ++prompt;
- else
- prompt = argv[0];
-
- user = NULL;
-
- rlogin = (strncmp(prompt, "rlog", 4) == 0) ? '~' : _POSIX_VDISABLE;
- autologin = -1;
-
- while ((ch = getopt(argc, argv, "8EKLS:X:acde:fFk:l:n:rt:x")) != EOF) {
- switch(ch) {
- case '8':
- eight = 3; /* binary output and input */
- break;
- case 'E':
- rlogin = escape = _POSIX_VDISABLE;
- break;
- case 'K':
-#ifdef AUTHENTICATION
- autologin = 0;
-#endif
- break;
- case 'L':
- eight |= 2; /* binary output only */
- break;
- case 'S':
- {
-#ifdef HAS_GETTOS
- extern int tos;
-
- if ((tos = parsetos(optarg, "tcp")) < 0)
- fprintf(stderr, "%s%s%s%s\n",
- prompt, ": Bad TOS argument '",
- optarg,
- "; will try to use default TOS");
-#else
- fprintf(stderr,
- "%s: Warning: -S ignored, no parsetos() support.\n",
- prompt);
-#endif
- }
- break;
- case 'X':
-#ifdef AUTHENTICATION
- auth_disable_name(optarg);
-#endif
- break;
- case 'a':
- autologin = 1;
- break;
- case 'c':
- skiprc = 1;
- break;
- case 'd':
- debug = 1;
- break;
- case 'e':
- set_escape_char(optarg);
- break;
- case 'f':
-#if defined(AUTHENTICATION) && defined(KRB5) && defined(FORWARD)
- if (forward_flags & OPTS_FORWARD_CREDS) {
- fprintf(stderr,
- "%s: Only one of -f and -F allowed.\n",
- prompt);
- usage();
- }
- forward_flags |= OPTS_FORWARD_CREDS;
-#else
- fprintf(stderr,
- "%s: Warning: -f ignored, no Kerberos V5 support.\n",
- prompt);
-#endif
- break;
- case 'F':
-#if defined(AUTHENTICATION) && defined(KRB5) && defined(FORWARD)
- if (forward_flags & OPTS_FORWARD_CREDS) {
- fprintf(stderr,
- "%s: Only one of -f and -F allowed.\n",
- prompt);
- usage();
- }
- forward_flags |= OPTS_FORWARD_CREDS;
- forward_flags |= OPTS_FORWARDABLE_CREDS;
-#else
- fprintf(stderr,
- "%s: Warning: -F ignored, no Kerberos V5 support.\n",
- prompt);
-#endif
- break;
- case 'k':
-#if defined(AUTHENTICATION) && defined(KRB4)
- {
- extern char *dest_realm, dst_realm_buf[], dst_realm_sz;
- dest_realm = dst_realm_buf;
- (void)strncpy(dest_realm, optarg, dst_realm_sz);
- }
-#else
- fprintf(stderr,
- "%s: Warning: -k ignored, no Kerberos V4 support.\n",
- prompt);
-#endif
- break;
- case 'l':
- autologin = 1;
- user = optarg;
- break;
- case 'n':
-#if defined(TN3270) && defined(unix)
- /* distinguish between "-n oasynch" and "-noasynch" */
- if (argv[optind - 1][0] == '-' && argv[optind - 1][1]
- == 'n' && argv[optind - 1][2] == 'o') {
- if (!strcmp(optarg, "oasynch")) {
- noasynchtty = 1;
- noasynchnet = 1;
- } else if (!strcmp(optarg, "oasynchtty"))
- noasynchtty = 1;
- else if (!strcmp(optarg, "oasynchnet"))
- noasynchnet = 1;
- } else
-#endif /* defined(TN3270) && defined(unix) */
- SetNetTrace(optarg);
- break;
- case 'r':
- rlogin = '~';
- break;
- case 't':
-#if defined(TN3270) && defined(unix)
- transcom = tline;
- (void)strcpy(transcom, optarg);
-#else
- fprintf(stderr,
- "%s: Warning: -t ignored, no TN3270 support.\n",
- prompt);
-#endif
- break;
- case 'x':
-#ifdef ENCRYPTION
- encrypt_auto(1);
- decrypt_auto(1);
-#else /* ENCRYPTION */
- fprintf(stderr,
- "%s: Warning: -x ignored, no ENCRYPT support.\n",
- prompt);
-#endif /* ENCRYPTION */
- break;
- case '?':
- default:
- usage();
- /* NOTREACHED */
- }
- }
- if (autologin == -1)
- autologin = (rlogin == _POSIX_VDISABLE) ? 0 : 1;
-
- argc -= optind;
- argv += optind;
-
- if (argc) {
- char *args[7], **argp = args;
-
- if (argc > 2)
- usage();
- *argp++ = prompt;
- if (user) {
- *argp++ = "-l";
- *argp++ = user;
- }
- *argp++ = argv[0]; /* host */
- if (argc > 1)
- *argp++ = argv[1]; /* port */
- *argp = 0;
-
- if (setjmp(toplevel) != 0)
- Exit(0);
- if (tn(argp - args, args) == 1)
- return (0);
- else
- return (1);
- }
- (void)setjmp(toplevel);
- for (;;) {
-#ifdef TN3270
- if (shell_active)
- shell_continue();
- else
-#endif
- command(1, 0, 0);
- }
-}
diff --git a/secure/usr.bin/telnet/network.c b/secure/usr.bin/telnet/network.c
deleted file mode 100644
index 0fe5cee0be4c..000000000000
--- a/secure/usr.bin/telnet/network.c
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * Copyright (c) 1988, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)network.c 8.2 (Berkeley) 12/15/93";
-#endif /* not lint */
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/time.h>
-
-#include <errno.h>
-
-#include <arpa/telnet.h>
-
-#include "ring.h"
-
-#include "defines.h"
-#include "externs.h"
-#include "fdset.h"
-
-Ring netoring, netiring;
-unsigned char netobuf[2*BUFSIZ], netibuf[BUFSIZ];
-
-/*
- * Initialize internal network data structures.
- */
-
- void
-init_network()
-{
- if (ring_init(&netoring, netobuf, sizeof netobuf) != 1) {
- exit(1);
- }
- if (ring_init(&netiring, netibuf, sizeof netibuf) != 1) {
- exit(1);
- }
- NetTrace = stdout;
-}
-
-
-/*
- * Check to see if any out-of-band data exists on a socket (for
- * Telnet "synch" processing).
- */
-
- int
-stilloob()
-{
- static struct timeval timeout = { 0 };
- fd_set excepts;
- int value;
-
- do {
- FD_ZERO(&excepts);
- FD_SET(net, &excepts);
- value = select(net+1, (fd_set *)0, (fd_set *)0, &excepts, &timeout);
- } while ((value == -1) && (errno == EINTR));
-
- if (value < 0) {
- perror("select");
- (void) quit();
- /* NOTREACHED */
- }
- if (FD_ISSET(net, &excepts)) {
- return 1;
- } else {
- return 0;
- }
-}
-
-
-/*
- * setneturg()
- *
- * Sets "neturg" to the current location.
- */
-
- void
-setneturg()
-{
- ring_mark(&netoring);
-}
-
-
-/*
- * netflush
- * Send as much data as possible to the network,
- * handling requests for urgent data.
- *
- * The return value indicates whether we did any
- * useful work.
- */
-
-
- int
-netflush()
-{
- register int n, n1;
-
-#ifdef ENCRYPTION
- if (encrypt_output)
- ring_encrypt(&netoring, encrypt_output);
-#endif /* ENCRYPTION */
- if ((n1 = n = ring_full_consecutive(&netoring)) > 0) {
- if (!ring_at_mark(&netoring)) {
- n = send(net, (char *)netoring.consume, n, 0); /* normal write */
- } else {
- /*
- * In 4.2 (and 4.3) systems, there is some question about
- * what byte in a sendOOB operation is the "OOB" data.
- * To make ourselves compatible, we only send ONE byte
- * out of band, the one WE THINK should be OOB (though
- * we really have more the TCP philosophy of urgent data
- * rather than the Unix philosophy of OOB data).
- */
- n = send(net, (char *)netoring.consume, 1, MSG_OOB);/* URGENT data */
- }
- }
- if (n < 0) {
- if (errno != ENOBUFS && errno != EWOULDBLOCK) {
- setcommandmode();
- perror(hostname);
- (void)NetClose(net);
- ring_clear_mark(&netoring);
- longjmp(peerdied, -1);
- /*NOTREACHED*/
- }
- n = 0;
- }
- if (netdata && n) {
- Dump('>', netoring.consume, n);
- }
- if (n) {
- ring_consumed(&netoring, n);
- /*
- * If we sent all, and more to send, then recurse to pick
- * up the other half.
- */
- if ((n1 == n) && ring_full_consecutive(&netoring)) {
- (void) netflush();
- }
- return 1;
- } else {
- return 0;
- }
-}
diff --git a/secure/usr.bin/telnet/ring.c b/secure/usr.bin/telnet/ring.c
deleted file mode 100644
index 37dfda8bc499..000000000000
--- a/secure/usr.bin/telnet/ring.c
+++ /dev/null
@@ -1,362 +0,0 @@
-/*
- * Copyright (c) 1988, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)ring.c 8.2 (Berkeley) 5/30/95";
-#endif /* not lint */
-
-/*
- * This defines a structure for a ring buffer.
- *
- * The circular buffer has two parts:
- *(((
- * full: [consume, supply)
- * empty: [supply, consume)
- *]]]
- *
- */
-
-#include <stdio.h>
-#include <errno.h>
-
-#ifdef size_t
-#undef size_t
-#endif
-
-#include <sys/types.h>
-#ifndef FILIO_H
-#include <sys/ioctl.h>
-#endif
-#include <sys/socket.h>
-
-#include "ring.h"
-#include "general.h"
-
-/* Internal macros */
-
-#if !defined(MIN)
-#define MIN(a,b) (((a)<(b))? (a):(b))
-#endif /* !defined(MIN) */
-
-#define ring_subtract(d,a,b) (((a)-(b) >= 0)? \
- (a)-(b): (((a)-(b))+(d)->size))
-
-#define ring_increment(d,a,c) (((a)+(c) < (d)->top)? \
- (a)+(c) : (((a)+(c))-(d)->size))
-
-#define ring_decrement(d,a,c) (((a)-(c) >= (d)->bottom)? \
- (a)-(c) : (((a)-(c))-(d)->size))
-
-
-/*
- * The following is a clock, used to determine full, empty, etc.
- *
- * There is some trickiness here. Since the ring buffers are initialized
- * to ZERO on allocation, we need to make sure, when interpreting the
- * clock, that when the times are EQUAL, then the buffer is FULL.
- */
-static u_long ring_clock = 0;
-
-
-#define ring_empty(d) (((d)->consume == (d)->supply) && \
- ((d)->consumetime >= (d)->supplytime))
-#define ring_full(d) (((d)->supply == (d)->consume) && \
- ((d)->supplytime > (d)->consumetime))
-
-
-
-
-
-/* Buffer state transition routines */
-
- ring_init(ring, buffer, count)
-Ring *ring;
- unsigned char *buffer;
- int count;
-{
- memset((char *)ring, 0, sizeof *ring);
-
- ring->size = count;
-
- ring->supply = ring->consume = ring->bottom = buffer;
-
- ring->top = ring->bottom+ring->size;
-
-#ifdef ENCRYPTION
- ring->clearto = 0;
-#endif /* ENCRYPTION */
-
- return 1;
-}
-
-/* Mark routines */
-
-/*
- * Mark the most recently supplied byte.
- */
-
- void
-ring_mark(ring)
- Ring *ring;
-{
- ring->mark = ring_decrement(ring, ring->supply, 1);
-}
-
-/*
- * Is the ring pointing to the mark?
- */
-
- int
-ring_at_mark(ring)
- Ring *ring;
-{
- if (ring->mark == ring->consume) {
- return 1;
- } else {
- return 0;
- }
-}
-
-/*
- * Clear any mark set on the ring.
- */
-
- void
-ring_clear_mark(ring)
- Ring *ring;
-{
- ring->mark = 0;
-}
-
-/*
- * Add characters from current segment to ring buffer.
- */
- void
-ring_supplied(ring, count)
- Ring *ring;
- int count;
-{
- ring->supply = ring_increment(ring, ring->supply, count);
- ring->supplytime = ++ring_clock;
-}
-
-/*
- * We have just consumed "c" bytes.
- */
- void
-ring_consumed(ring, count)
- Ring *ring;
- int count;
-{
- if (count == 0) /* don't update anything */
- return;
-
- if (ring->mark &&
- (ring_subtract(ring, ring->mark, ring->consume) < count)) {
- ring->mark = 0;
- }
-#ifdef ENCRYPTION
- if (ring->consume < ring->clearto &&
- ring->clearto <= ring->consume + count)
- ring->clearto = 0;
- else if (ring->consume + count > ring->top &&
- ring->bottom <= ring->clearto &&
- ring->bottom + ((ring->consume + count) - ring->top))
- ring->clearto = 0;
-#endif /* ENCRYPTION */
- ring->consume = ring_increment(ring, ring->consume, count);
- ring->consumetime = ++ring_clock;
- /*
- * Try to encourage "ring_empty_consecutive()" to be large.
- */
- if (ring_empty(ring)) {
- ring->consume = ring->supply = ring->bottom;
- }
-}
-
-
-
-/* Buffer state query routines */
-
-
-/* Number of bytes that may be supplied */
- int
-ring_empty_count(ring)
- Ring *ring;
-{
- if (ring_empty(ring)) { /* if empty */
- return ring->size;
- } else {
- return ring_subtract(ring, ring->consume, ring->supply);
- }
-}
-
-/* number of CONSECUTIVE bytes that may be supplied */
- int
-ring_empty_consecutive(ring)
- Ring *ring;
-{
- if ((ring->consume < ring->supply) || ring_empty(ring)) {
- /*
- * if consume is "below" supply, or empty, then
- * return distance to the top
- */
- return ring_subtract(ring, ring->top, ring->supply);
- } else {
- /*
- * else, return what we may.
- */
- return ring_subtract(ring, ring->consume, ring->supply);
- }
-}
-
-/* Return the number of bytes that are available for consuming
- * (but don't give more than enough to get to cross over set mark)
- */
-
- int
-ring_full_count(ring)
- Ring *ring;
-{
- if ((ring->mark == 0) || (ring->mark == ring->consume)) {
- if (ring_full(ring)) {
- return ring->size; /* nothing consumed, but full */
- } else {
- return ring_subtract(ring, ring->supply, ring->consume);
- }
- } else {
- return ring_subtract(ring, ring->mark, ring->consume);
- }
-}
-
-/*
- * Return the number of CONSECUTIVE bytes available for consuming.
- * However, don't return more than enough to cross over set mark.
- */
- int
-ring_full_consecutive(ring)
- Ring *ring;
-{
- if ((ring->mark == 0) || (ring->mark == ring->consume)) {
- if ((ring->supply < ring->consume) || ring_full(ring)) {
- return ring_subtract(ring, ring->top, ring->consume);
- } else {
- return ring_subtract(ring, ring->supply, ring->consume);
- }
- } else {
- if (ring->mark < ring->consume) {
- return ring_subtract(ring, ring->top, ring->consume);
- } else { /* Else, distance to mark */
- return ring_subtract(ring, ring->mark, ring->consume);
- }
- }
-}
-
-/*
- * Move data into the "supply" portion of of the ring buffer.
- */
- void
-ring_supply_data(ring, buffer, count)
- Ring *ring;
- unsigned char *buffer;
- int count;
-{
- int i;
-
- while (count) {
- i = MIN(count, ring_empty_consecutive(ring));
- memmove(ring->supply, buffer, i);
- ring_supplied(ring, i);
- count -= i;
- buffer += i;
- }
-}
-
-#ifdef notdef
-
-/*
- * Move data from the "consume" portion of the ring buffer
- */
- void
-ring_consume_data(ring, buffer, count)
- Ring *ring;
- unsigned char *buffer;
- int count;
-{
- int i;
-
- while (count) {
- i = MIN(count, ring_full_consecutive(ring));
- memmove(buffer, ring->consume, i);
- ring_consumed(ring, i);
- count -= i;
- buffer += i;
- }
-}
-#endif
-
-#ifdef ENCRYPTION
- void
-ring_encrypt(ring, encryptor)
- Ring *ring;
- void (*encryptor)();
-{
- unsigned char *s, *c;
-
- if (ring_empty(ring) || ring->clearto == ring->supply)
- return;
-
- if (!(c = ring->clearto))
- c = ring->consume;
-
- s = ring->supply;
-
- if (s <= c) {
- (*encryptor)(c, ring->top - c);
- (*encryptor)(ring->bottom, s - ring->bottom);
- } else
- (*encryptor)(c, s - c);
-
- ring->clearto = ring->supply;
-}
-
- void
-ring_clearto(ring)
- Ring *ring;
-{
- if (!ring_empty(ring))
- ring->clearto = ring->supply;
- else
- ring->clearto = 0;
-}
-#endif /* ENCRYPTION */
diff --git a/secure/usr.bin/telnet/ring.h b/secure/usr.bin/telnet/ring.h
deleted file mode 100644
index 2a36781e5ae5..000000000000
--- a/secure/usr.bin/telnet/ring.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright (c) 1988, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)ring.h 8.1 (Berkeley) 6/6/93
- */
-
-#if defined(P)
-# undef P
-#endif
-
-#if defined(__STDC__) || defined(LINT_ARGS)
-# define P(x) x
-#else
-# define P(x) ()
-#endif
-
-/*
- * This defines a structure for a ring buffer.
- *
- * The circular buffer has two parts:
- *(((
- * full: [consume, supply)
- * empty: [supply, consume)
- *]]]
- *
- */
-typedef struct {
- unsigned char *consume, /* where data comes out of */
- *supply, /* where data comes in to */
- *bottom, /* lowest address in buffer */
- *top, /* highest address+1 in buffer */
- *mark; /* marker (user defined) */
-#ifdef ENCRYPTION
- unsigned char *clearto; /* Data to this point is clear text */
- unsigned char *encryyptedto; /* Data is encrypted to here */
-#endif /* ENCRYPTION */
- int size; /* size in bytes of buffer */
- u_long consumetime, /* help us keep straight full, empty, etc. */
- supplytime;
-} Ring;
-
-/* Here are some functions and macros to deal with the ring buffer */
-
-/* Initialization routine */
-extern int
- ring_init P((Ring *ring, unsigned char *buffer, int count));
-
-/* Data movement routines */
-extern void
- ring_supply_data P((Ring *ring, unsigned char *buffer, int count));
-#ifdef notdef
-extern void
- ring_consume_data P((Ring *ring, unsigned char *buffer, int count));
-#endif
-
-/* Buffer state transition routines */
-extern void
- ring_supplied P((Ring *ring, int count)),
- ring_consumed P((Ring *ring, int count));
-
-/* Buffer state query routines */
-extern int
- ring_empty_count P((Ring *ring)),
- ring_empty_consecutive P((Ring *ring)),
- ring_full_count P((Ring *ring)),
- ring_full_consecutive P((Ring *ring));
-
-#ifdef ENCRYPTION
-extern void
- ring_encrypt P((Ring *ring, void (*func)())),
- ring_clearto P((Ring *ring));
-#endif /* ENCRYPTION */
-
-extern void
- ring_clear_mark(),
- ring_mark();
diff --git a/secure/usr.bin/telnet/sys_bsd.c b/secure/usr.bin/telnet/sys_bsd.c
deleted file mode 100644
index 3ede7c4856d6..000000000000
--- a/secure/usr.bin/telnet/sys_bsd.c
+++ /dev/null
@@ -1,1220 +0,0 @@
-/*
- * Copyright (c) 1988, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)sys_bsd.c 8.4 (Berkeley) 5/30/95";
-#endif /* not lint */
-
-/*
- * The following routines try to encapsulate what is system dependent
- * (at least between 4.x and dos) which is used in telnet.c.
- */
-
-
-#include <fcntl.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/socket.h>
-#include <signal.h>
-#include <errno.h>
-#include <arpa/telnet.h>
-
-#include "ring.h"
-
-#include "fdset.h"
-
-#include "defines.h"
-#include "externs.h"
-#include "types.h"
-
-#if defined(CRAY) || (defined(USE_TERMIO) && !defined(SYSV_TERMIO))
-#define SIG_FUNC_RET void
-#else
-#define SIG_FUNC_RET int
-#endif
-
-#ifdef SIGINFO
-extern SIG_FUNC_RET ayt_status();
-#endif
-
-int
- tout, /* Output file descriptor */
- tin, /* Input file descriptor */
- net;
-
-#ifndef USE_TERMIO
-struct tchars otc = { 0 }, ntc = { 0 };
-struct ltchars oltc = { 0 }, nltc = { 0 };
-struct sgttyb ottyb = { 0 }, nttyb = { 0 };
-int olmode = 0;
-# define cfgetispeed(ptr) (ptr)->sg_ispeed
-# define cfgetospeed(ptr) (ptr)->sg_ospeed
-# define old_tc ottyb
-
-#else /* USE_TERMIO */
-struct termio old_tc = { 0 };
-extern struct termio new_tc;
-
-# ifndef TCSANOW
-# ifdef TCSETS
-# define TCSANOW TCSETS
-# define TCSADRAIN TCSETSW
-# define tcgetattr(f, t) ioctl(f, TCGETS, (char *)t)
-# else
-# ifdef TCSETA
-# define TCSANOW TCSETA
-# define TCSADRAIN TCSETAW
-# define tcgetattr(f, t) ioctl(f, TCGETA, (char *)t)
-# else
-# define TCSANOW TIOCSETA
-# define TCSADRAIN TIOCSETAW
-# define tcgetattr(f, t) ioctl(f, TIOCGETA, (char *)t)
-# endif
-# endif
-# define tcsetattr(f, a, t) ioctl(f, a, (char *)t)
-# define cfgetospeed(ptr) ((ptr)->c_cflag&CBAUD)
-# ifdef CIBAUD
-# define cfgetispeed(ptr) (((ptr)->c_cflag&CIBAUD) >> IBSHIFT)
-# else
-# define cfgetispeed(ptr) cfgetospeed(ptr)
-# endif
-# endif /* TCSANOW */
-# ifdef sysV88
-# define TIOCFLUSH TC_PX_DRAIN
-# endif
-#endif /* USE_TERMIO */
-
-static fd_set ibits, obits, xbits;
-
-
- void
-init_sys()
-{
- tout = fileno(stdout);
- tin = fileno(stdin);
- FD_ZERO(&ibits);
- FD_ZERO(&obits);
- FD_ZERO(&xbits);
-
- errno = 0;
-}
-
-
- int
-TerminalWrite(buf, n)
- char *buf;
- int n;
-{
- return write(tout, buf, n);
-}
-
- int
-TerminalRead(buf, n)
- char *buf;
- int n;
-{
- return read(tin, buf, n);
-}
-
-/*
- *
- */
-
- int
-TerminalAutoFlush()
-{
-#if defined(LNOFLSH)
- int flush;
-
- ioctl(0, TIOCLGET, (char *)&flush);
- return !(flush&LNOFLSH); /* if LNOFLSH, no autoflush */
-#else /* LNOFLSH */
- return 1;
-#endif /* LNOFLSH */
-}
-
-#ifdef KLUDGELINEMODE
-extern int kludgelinemode;
-#endif
-/*
- * TerminalSpecialChars()
- *
- * Look at an input character to see if it is a special character
- * and decide what to do.
- *
- * Output:
- *
- * 0 Don't add this character.
- * 1 Do add this character
- */
-
-extern void xmitAO(), xmitEL(), xmitEC(), intp(), sendbrk();
-
- int
-TerminalSpecialChars(c)
- int c;
-{
- if (c == termIntChar) {
- intp();
- return 0;
- } else if (c == termQuitChar) {
-#ifdef KLUDGELINEMODE
- if (kludgelinemode)
- sendbrk();
- else
-#endif
- sendabort();
- return 0;
- } else if (c == termEofChar) {
- if (my_want_state_is_will(TELOPT_LINEMODE)) {
- sendeof();
- return 0;
- }
- return 1;
- } else if (c == termSuspChar) {
- sendsusp();
- return(0);
- } else if (c == termFlushChar) {
- xmitAO(); /* Transmit Abort Output */
- return 0;
- } else if (!MODE_LOCAL_CHARS(globalmode)) {
- if (c == termKillChar) {
- xmitEL();
- return 0;
- } else if (c == termEraseChar) {
- xmitEC(); /* Transmit Erase Character */
- return 0;
- }
- }
- return 1;
-}
-
-
-/*
- * Flush output to the terminal
- */
-
- void
-TerminalFlushOutput()
-{
-#ifdef TIOCFLUSH
- (void) ioctl(fileno(stdout), TIOCFLUSH, (char *) 0);
-#else
- (void) ioctl(fileno(stdout), TCFLSH, (char *) 0);
-#endif
-}
-
- void
-TerminalSaveState()
-{
-#ifndef USE_TERMIO
- ioctl(0, TIOCGETP, (char *)&ottyb);
- ioctl(0, TIOCGETC, (char *)&otc);
- ioctl(0, TIOCGLTC, (char *)&oltc);
- ioctl(0, TIOCLGET, (char *)&olmode);
-
- ntc = otc;
- nltc = oltc;
- nttyb = ottyb;
-
-#else /* USE_TERMIO */
- tcgetattr(0, &old_tc);
-
- new_tc = old_tc;
-
-#ifndef VDISCARD
- termFlushChar = CONTROL('O');
-#endif
-#ifndef VWERASE
- termWerasChar = CONTROL('W');
-#endif
-#ifndef VREPRINT
- termRprntChar = CONTROL('R');
-#endif
-#ifndef VLNEXT
- termLiteralNextChar = CONTROL('V');
-#endif
-#ifndef VSTART
- termStartChar = CONTROL('Q');
-#endif
-#ifndef VSTOP
- termStopChar = CONTROL('S');
-#endif
-#ifndef VSTATUS
- termAytChar = CONTROL('T');
-#endif
-#endif /* USE_TERMIO */
-}
-
- cc_t *
-tcval(func)
- register int func;
-{
- switch(func) {
- case SLC_IP: return(&termIntChar);
- case SLC_ABORT: return(&termQuitChar);
- case SLC_EOF: return(&termEofChar);
- case SLC_EC: return(&termEraseChar);
- case SLC_EL: return(&termKillChar);
- case SLC_XON: return(&termStartChar);
- case SLC_XOFF: return(&termStopChar);
- case SLC_FORW1: return(&termForw1Char);
-#ifdef USE_TERMIO
- case SLC_FORW2: return(&termForw2Char);
-# ifdef VDISCARD
- case SLC_AO: return(&termFlushChar);
-# endif
-# ifdef VSUSP
- case SLC_SUSP: return(&termSuspChar);
-# endif
-# ifdef VWERASE
- case SLC_EW: return(&termWerasChar);
-# endif
-# ifdef VREPRINT
- case SLC_RP: return(&termRprntChar);
-# endif
-# ifdef VLNEXT
- case SLC_LNEXT: return(&termLiteralNextChar);
-# endif
-# ifdef VSTATUS
- case SLC_AYT: return(&termAytChar);
-# endif
-#endif
-
- case SLC_SYNCH:
- case SLC_BRK:
- case SLC_EOR:
- default:
- return((cc_t *)0);
- }
-}
-
- void
-TerminalDefaultChars()
-{
-#ifndef USE_TERMIO
- ntc = otc;
- nltc = oltc;
- nttyb.sg_kill = ottyb.sg_kill;
- nttyb.sg_erase = ottyb.sg_erase;
-#else /* USE_TERMIO */
- memmove(new_tc.c_cc, old_tc.c_cc, sizeof(old_tc.c_cc));
-# ifndef VDISCARD
- termFlushChar = CONTROL('O');
-# endif
-# ifndef VWERASE
- termWerasChar = CONTROL('W');
-# endif
-# ifndef VREPRINT
- termRprntChar = CONTROL('R');
-# endif
-# ifndef VLNEXT
- termLiteralNextChar = CONTROL('V');
-# endif
-# ifndef VSTART
- termStartChar = CONTROL('Q');
-# endif
-# ifndef VSTOP
- termStopChar = CONTROL('S');
-# endif
-# ifndef VSTATUS
- termAytChar = CONTROL('T');
-# endif
-#endif /* USE_TERMIO */
-}
-
-#ifdef notdef
-void
-TerminalRestoreState()
-{
-}
-#endif
-
-/*
- * TerminalNewMode - set up terminal to a specific mode.
- * MODE_ECHO: do local terminal echo
- * MODE_FLOW: do local flow control
- * MODE_TRAPSIG: do local mapping to TELNET IAC sequences
- * MODE_EDIT: do local line editing
- *
- * Command mode:
- * MODE_ECHO|MODE_EDIT|MODE_FLOW|MODE_TRAPSIG
- * local echo
- * local editing
- * local xon/xoff
- * local signal mapping
- *
- * Linemode:
- * local/no editing
- * Both Linemode and Single Character mode:
- * local/remote echo
- * local/no xon/xoff
- * local/no signal mapping
- */
-
-
- void
-TerminalNewMode(f)
- register int f;
-{
- static int prevmode = 0;
-#ifndef USE_TERMIO
- struct tchars tc;
- struct ltchars ltc;
- struct sgttyb sb;
- int lmode;
-#else /* USE_TERMIO */
- struct termio tmp_tc;
-#endif /* USE_TERMIO */
- int onoff;
- int old;
- cc_t esc;
-
- globalmode = f&~MODE_FORCE;
- if (prevmode == f)
- return;
-
- /*
- * Write any outstanding data before switching modes
- * ttyflush() returns 0 only when there is no more data
- * left to write out, it returns -1 if it couldn't do
- * anything at all, otherwise it returns 1 + the number
- * of characters left to write.
-#ifndef USE_TERMIO
- * We would really like ask the kernel to wait for the output
- * to drain, like we can do with the TCSADRAIN, but we don't have
- * that option. The only ioctl that waits for the output to
- * drain, TIOCSETP, also flushes the input queue, which is NOT
- * what we want (TIOCSETP is like TCSADFLUSH).
-#endif
- */
- old = ttyflush(SYNCHing|flushout);
- if (old < 0 || old > 1) {
-#ifdef USE_TERMIO
- tcgetattr(tin, &tmp_tc);
-#endif /* USE_TERMIO */
- do {
- /*
- * Wait for data to drain, then flush again.
- */
-#ifdef USE_TERMIO
- tcsetattr(tin, TCSADRAIN, &tmp_tc);
-#endif /* USE_TERMIO */
- old = ttyflush(SYNCHing|flushout);
- } while (old < 0 || old > 1);
- }
-
- old = prevmode;
- prevmode = f&~MODE_FORCE;
-#ifndef USE_TERMIO
- sb = nttyb;
- tc = ntc;
- ltc = nltc;
- lmode = olmode;
-#else
- tmp_tc = new_tc;
-#endif
-
- if (f&MODE_ECHO) {
-#ifndef USE_TERMIO
- sb.sg_flags |= ECHO;
-#else
- tmp_tc.c_lflag |= ECHO;
- tmp_tc.c_oflag |= ONLCR;
- if (crlf)
- tmp_tc.c_iflag |= ICRNL;
-#endif
- } else {
-#ifndef USE_TERMIO
- sb.sg_flags &= ~ECHO;
-#else
- tmp_tc.c_lflag &= ~ECHO;
- tmp_tc.c_oflag &= ~ONLCR;
-# ifdef notdef
- if (crlf)
- tmp_tc.c_iflag &= ~ICRNL;
-# endif
-#endif
- }
-
- if ((f&MODE_FLOW) == 0) {
-#ifndef USE_TERMIO
- tc.t_startc = _POSIX_VDISABLE;
- tc.t_stopc = _POSIX_VDISABLE;
-#else
- tmp_tc.c_iflag &= ~(IXOFF|IXON); /* Leave the IXANY bit alone */
- } else {
- if (restartany < 0) {
- tmp_tc.c_iflag |= IXOFF|IXON; /* Leave the IXANY bit alone */
- } else if (restartany > 0) {
- tmp_tc.c_iflag |= IXOFF|IXON|IXANY;
- } else {
- tmp_tc.c_iflag |= IXOFF|IXON;
- tmp_tc.c_iflag &= ~IXANY;
- }
-#endif
- }
-
- if ((f&MODE_TRAPSIG) == 0) {
-#ifndef USE_TERMIO
- tc.t_intrc = _POSIX_VDISABLE;
- tc.t_quitc = _POSIX_VDISABLE;
- tc.t_eofc = _POSIX_VDISABLE;
- ltc.t_suspc = _POSIX_VDISABLE;
- ltc.t_dsuspc = _POSIX_VDISABLE;
-#else
- tmp_tc.c_lflag &= ~ISIG;
-#endif
- localchars = 0;
- } else {
-#ifdef USE_TERMIO
- tmp_tc.c_lflag |= ISIG;
-#endif
- localchars = 1;
- }
-
- if (f&MODE_EDIT) {
-#ifndef USE_TERMIO
- sb.sg_flags &= ~CBREAK;
- sb.sg_flags |= CRMOD;
-#else
- tmp_tc.c_lflag |= ICANON;
-#endif
- } else {
-#ifndef USE_TERMIO
- sb.sg_flags |= CBREAK;
- if (f&MODE_ECHO)
- sb.sg_flags |= CRMOD;
- else
- sb.sg_flags &= ~CRMOD;
-#else
- tmp_tc.c_lflag &= ~ICANON;
- tmp_tc.c_iflag &= ~ICRNL;
- tmp_tc.c_cc[VMIN] = 1;
- tmp_tc.c_cc[VTIME] = 0;
-#endif
- }
-
- if ((f&(MODE_EDIT|MODE_TRAPSIG)) == 0) {
-#ifndef USE_TERMIO
- ltc.t_lnextc = _POSIX_VDISABLE;
-#else
-# ifdef VLNEXT
- tmp_tc.c_cc[VLNEXT] = (cc_t)(_POSIX_VDISABLE);
-# endif
-#endif
- }
-
- if (f&MODE_SOFT_TAB) {
-#ifndef USE_TERMIO
- sb.sg_flags |= XTABS;
-#else
-# ifdef OXTABS
- tmp_tc.c_oflag |= OXTABS;
-# endif
-# ifdef TABDLY
- tmp_tc.c_oflag &= ~TABDLY;
- tmp_tc.c_oflag |= TAB3;
-# endif
-#endif
- } else {
-#ifndef USE_TERMIO
- sb.sg_flags &= ~XTABS;
-#else
-# ifdef OXTABS
- tmp_tc.c_oflag &= ~OXTABS;
-# endif
-# ifdef TABDLY
- tmp_tc.c_oflag &= ~TABDLY;
-# endif
-#endif
- }
-
- if (f&MODE_LIT_ECHO) {
-#ifndef USE_TERMIO
- lmode &= ~LCTLECH;
-#else
-# ifdef ECHOCTL
- tmp_tc.c_lflag &= ~ECHOCTL;
-# endif
-#endif
- } else {
-#ifndef USE_TERMIO
- lmode |= LCTLECH;
-#else
-# ifdef ECHOCTL
- tmp_tc.c_lflag |= ECHOCTL;
-# endif
-#endif
- }
-
- if (f == -1) {
- onoff = 0;
- } else {
-#ifndef USE_TERMIO
- if (f & MODE_OUTBIN)
- lmode |= LLITOUT;
- else
- lmode &= ~LLITOUT;
-
- if (f & MODE_INBIN)
- lmode |= LPASS8;
- else
- lmode &= ~LPASS8;
-#else
- if (f & MODE_INBIN)
- tmp_tc.c_iflag &= ~ISTRIP;
- else
- tmp_tc.c_iflag |= ISTRIP;
- if (f & MODE_OUTBIN) {
- tmp_tc.c_cflag &= ~(CSIZE|PARENB);
- tmp_tc.c_cflag |= CS8;
- tmp_tc.c_oflag &= ~OPOST;
- } else {
- tmp_tc.c_cflag &= ~(CSIZE|PARENB);
- tmp_tc.c_cflag |= old_tc.c_cflag & (CSIZE|PARENB);
- tmp_tc.c_oflag |= OPOST;
- }
-#endif
- onoff = 1;
- }
-
- if (f != -1) {
-#ifdef SIGTSTP
- SIG_FUNC_RET susp();
-#endif /* SIGTSTP */
-#ifdef SIGINFO
- SIG_FUNC_RET ayt();
-#endif
-
-#ifdef SIGTSTP
- (void) signal(SIGTSTP, susp);
-#endif /* SIGTSTP */
-#ifdef SIGINFO
- (void) signal(SIGINFO, ayt);
-#endif
-#if defined(USE_TERMIO) && defined(NOKERNINFO)
- tmp_tc.c_lflag |= NOKERNINFO;
-#endif
- /*
- * We don't want to process ^Y here. It's just another
- * character that we'll pass on to the back end. It has
- * to process it because it will be processed when the
- * user attempts to read it, not when we send it.
- */
-#ifndef USE_TERMIO
- ltc.t_dsuspc = _POSIX_VDISABLE;
-#else
-# ifdef VDSUSP
- tmp_tc.c_cc[VDSUSP] = (cc_t)(_POSIX_VDISABLE);
-# endif
-#endif
-#ifdef USE_TERMIO
- /*
- * If the VEOL character is already set, then use VEOL2,
- * otherwise use VEOL.
- */
- esc = (rlogin != _POSIX_VDISABLE) ? rlogin : escape;
- if ((tmp_tc.c_cc[VEOL] != esc)
-# ifdef VEOL2
- && (tmp_tc.c_cc[VEOL2] != esc)
-# endif
- ) {
- if (tmp_tc.c_cc[VEOL] == (cc_t)(_POSIX_VDISABLE))
- tmp_tc.c_cc[VEOL] = esc;
-# ifdef VEOL2
- else if (tmp_tc.c_cc[VEOL2] == (cc_t)(_POSIX_VDISABLE))
- tmp_tc.c_cc[VEOL2] = esc;
-# endif
- }
-#else
- if (tc.t_brkc == (cc_t)(_POSIX_VDISABLE))
- tc.t_brkc = esc;
-#endif
- } else {
-#ifdef SIGINFO
- SIG_FUNC_RET ayt_status();
-
- (void) signal(SIGINFO, ayt_status);
-#endif
-#ifdef SIGTSTP
- (void) signal(SIGTSTP, SIG_DFL);
-# ifndef SOLARIS
- (void) sigsetmask(sigblock(0) & ~(1<<(SIGTSTP-1)));
-# else SOLARIS
- (void) sigrelse(SIGTSTP);
-# endif SOLARIS
-#endif /* SIGTSTP */
-#ifndef USE_TERMIO
- ltc = oltc;
- tc = otc;
- sb = ottyb;
- lmode = olmode;
-#else
- tmp_tc = old_tc;
-#endif
- }
-#ifndef USE_TERMIO
- ioctl(tin, TIOCLSET, (char *)&lmode);
- ioctl(tin, TIOCSLTC, (char *)&ltc);
- ioctl(tin, TIOCSETC, (char *)&tc);
- ioctl(tin, TIOCSETN, (char *)&sb);
-#else
- if (tcsetattr(tin, TCSADRAIN, &tmp_tc) < 0)
- tcsetattr(tin, TCSANOW, &tmp_tc);
-#endif
-
-#if (!defined(TN3270)) || ((!defined(NOT43)) || defined(PUTCHAR))
-# if !defined(sysV88)
- ioctl(tin, FIONBIO, (char *)&onoff);
- ioctl(tout, FIONBIO, (char *)&onoff);
-# endif
-#endif /* (!defined(TN3270)) || ((!defined(NOT43)) || defined(PUTCHAR)) */
-#if defined(TN3270)
- if (noasynchtty == 0) {
- ioctl(tin, FIOASYNC, (char *)&onoff);
- }
-#endif /* defined(TN3270) */
-
-}
-
-/*
- * Try to guess whether speeds are "encoded" (4.2BSD) or just numeric (4.4BSD).
- */
-#if B4800 != 4800
-#define DECODE_BAUD
-#endif
-
-#ifdef DECODE_BAUD
-#ifndef B7200
-#define B7200 B4800
-#endif
-
-#ifndef B14400
-#define B14400 B9600
-#endif
-
-#ifndef B19200
-# define B19200 B14400
-#endif
-
-#ifndef B28800
-#define B28800 B19200
-#endif
-
-#ifndef B38400
-# define B38400 B28800
-#endif
-
-#ifndef B57600
-#define B57600 B38400
-#endif
-
-#ifndef B76800
-#define B76800 B57600
-#endif
-
-#ifndef B115200
-#define B115200 B76800
-#endif
-
-#ifndef B230400
-#define B230400 B115200
-#endif
-
-
-/*
- * This code assumes that the values B0, B50, B75...
- * are in ascending order. They do not have to be
- * contiguous.
- */
-struct termspeeds {
- long speed;
- long value;
-} termspeeds[] = {
- { 0, B0 }, { 50, B50 }, { 75, B75 },
- { 110, B110 }, { 134, B134 }, { 150, B150 },
- { 200, B200 }, { 300, B300 }, { 600, B600 },
- { 1200, B1200 }, { 1800, B1800 }, { 2400, B2400 },
- { 4800, B4800 }, { 7200, B7200 }, { 9600, B9600 },
- { 14400, B14400 }, { 19200, B19200 }, { 28800, B28800 },
- { 38400, B38400 }, { 57600, B57600 }, { 115200, B115200 },
- { 230400, B230400 }, { -1, B230400 }
-};
-#endif /* DECODE_BAUD */
-
- void
-TerminalSpeeds(ispeed, ospeed)
- long *ispeed;
- long *ospeed;
-{
-#ifdef DECODE_BAUD
- register struct termspeeds *tp;
-#endif /* DECODE_BAUD */
- register long in, out;
-
- out = cfgetospeed(&old_tc);
- in = cfgetispeed(&old_tc);
- if (in == 0)
- in = out;
-
-#ifdef DECODE_BAUD
- tp = termspeeds;
- while ((tp->speed != -1) && (tp->value < in))
- tp++;
- *ispeed = tp->speed;
-
- tp = termspeeds;
- while ((tp->speed != -1) && (tp->value < out))
- tp++;
- *ospeed = tp->speed;
-#else /* DECODE_BAUD */
- *ispeed = in;
- *ospeed = out;
-#endif /* DECODE_BAUD */
-}
-
- int
-TerminalWindowSize(rows, cols)
- long *rows, *cols;
-{
-#ifdef TIOCGWINSZ
- struct winsize ws;
-
- if (ioctl(fileno(stdin), TIOCGWINSZ, (char *)&ws) >= 0) {
- *rows = ws.ws_row;
- *cols = ws.ws_col;
- return 1;
- }
-#endif /* TIOCGWINSZ */
- return 0;
-}
-
- int
-NetClose(fd)
- int fd;
-{
- return close(fd);
-}
-
-
- void
-NetNonblockingIO(fd, onoff)
- int fd;
- int onoff;
-{
- ioctl(fd, FIONBIO, (char *)&onoff);
-}
-
-#if defined(TN3270)
- void
-NetSigIO(fd, onoff)
- int fd;
- int onoff;
-{
- ioctl(fd, FIOASYNC, (char *)&onoff); /* hear about input */
-}
-
- void
-NetSetPgrp(fd)
- int fd;
-{
- int myPid;
-
- myPid = getpid();
- fcntl(fd, F_SETOWN, myPid);
-}
-#endif /*defined(TN3270)*/
-
-/*
- * Various signal handling routines.
- */
-
- /* ARGSUSED */
- SIG_FUNC_RET
-deadpeer(sig)
- int sig;
-{
- setcommandmode();
- longjmp(peerdied, -1);
-}
-
- /* ARGSUSED */
- SIG_FUNC_RET
-intr(sig)
- int sig;
-{
- if (localchars) {
- intp();
- return;
- }
- setcommandmode();
- longjmp(toplevel, -1);
-}
-
- /* ARGSUSED */
- SIG_FUNC_RET
-intr2(sig)
- int sig;
-{
- if (localchars) {
-#ifdef KLUDGELINEMODE
- if (kludgelinemode)
- sendbrk();
- else
-#endif
- sendabort();
- return;
- }
-}
-
-#ifdef SIGTSTP
- /* ARGSUSED */
- SIG_FUNC_RET
-susp(sig)
- int sig;
-{
- if ((rlogin != _POSIX_VDISABLE) && rlogin_susp())
- return;
- if (localchars)
- sendsusp();
-}
-#endif
-
-#ifdef SIGWINCH
- /* ARGSUSED */
- SIG_FUNC_RET
-sendwin(sig)
- int sig;
-{
- if (connected) {
- sendnaws();
- }
-}
-#endif
-
-#ifdef SIGINFO
- /* ARGSUSED */
- SIG_FUNC_RET
-ayt(sig)
- int sig;
-{
- if (connected)
- sendayt();
- else
- ayt_status();
-}
-#endif
-
-
- void
-sys_telnet_init()
-{
- (void) signal(SIGINT, intr);
- (void) signal(SIGQUIT, intr2);
- (void) signal(SIGPIPE, deadpeer);
-#ifdef SIGWINCH
- (void) signal(SIGWINCH, sendwin);
-#endif
-#ifdef SIGTSTP
- (void) signal(SIGTSTP, susp);
-#endif
-#ifdef SIGINFO
- (void) signal(SIGINFO, ayt);
-#endif
-
- setconnmode(0);
-
- NetNonblockingIO(net, 1);
-
-#if defined(TN3270)
- if (noasynchnet == 0) { /* DBX can't handle! */
- NetSigIO(net, 1);
- NetSetPgrp(net);
- }
-#endif /* defined(TN3270) */
-
-#if defined(SO_OOBINLINE)
- if (SetSockOpt(net, SOL_SOCKET, SO_OOBINLINE, 1) == -1) {
- perror("SetSockOpt");
- }
-#endif /* defined(SO_OOBINLINE) */
-}
-
-/*
- * Process rings -
- *
- * This routine tries to fill up/empty our various rings.
- *
- * The parameter specifies whether this is a poll operation,
- * or a block-until-something-happens operation.
- *
- * The return value is 1 if something happened, 0 if not.
- */
-
- int
-process_rings(netin, netout, netex, ttyin, ttyout, poll)
- int poll; /* If 0, then block until something to do */
-{
- register int c;
- /* One wants to be a bit careful about setting returnValue
- * to one, since a one implies we did some useful work,
- * and therefore probably won't be called to block next
- * time (TN3270 mode only).
- */
- int returnValue = 0;
- static struct timeval TimeValue = { 0 };
-
- if (netout) {
- FD_SET(net, &obits);
- }
- if (ttyout) {
- FD_SET(tout, &obits);
- }
-#if defined(TN3270)
- if (ttyin) {
- FD_SET(tin, &ibits);
- }
-#else /* defined(TN3270) */
- if (ttyin) {
- FD_SET(tin, &ibits);
- }
-#endif /* defined(TN3270) */
-#if defined(TN3270)
- if (netin) {
- FD_SET(net, &ibits);
- }
-# else /* !defined(TN3270) */
- if (netin) {
- FD_SET(net, &ibits);
- }
-# endif /* !defined(TN3270) */
- if (netex) {
- FD_SET(net, &xbits);
- }
- if ((c = select(16, &ibits, &obits, &xbits,
- (poll == 0)? (struct timeval *)0 : &TimeValue)) < 0) {
- if (c == -1) {
- /*
- * we can get EINTR if we are in line mode,
- * and the user does an escape (TSTP), or
- * some other signal generator.
- */
- if (errno == EINTR) {
- return 0;
- }
-# if defined(TN3270)
- /*
- * we can get EBADF if we were in transparent
- * mode, and the transcom process died.
- */
- if (errno == EBADF) {
- /*
- * zero the bits (even though kernel does it)
- * to make sure we are selecting on the right
- * ones.
- */
- FD_ZERO(&ibits);
- FD_ZERO(&obits);
- FD_ZERO(&xbits);
- return 0;
- }
-# endif /* defined(TN3270) */
- /* I don't like this, does it ever happen? */
- printf("sleep(5) from telnet, after select\r\n");
- sleep(5);
- }
- return 0;
- }
-
- /*
- * Any urgent data?
- */
- if (FD_ISSET(net, &xbits)) {
- FD_CLR(net, &xbits);
- SYNCHing = 1;
- (void) ttyflush(1); /* flush already enqueued data */
- }
-
- /*
- * Something to read from the network...
- */
- if (FD_ISSET(net, &ibits)) {
- int canread;
-
- FD_CLR(net, &ibits);
- canread = ring_empty_consecutive(&netiring);
-#if !defined(SO_OOBINLINE)
- /*
- * In 4.2 (and some early 4.3) systems, the
- * OOB indication and data handling in the kernel
- * is such that if two separate TCP Urgent requests
- * come in, one byte of TCP data will be overlaid.
- * This is fatal for Telnet, but we try to live
- * with it.
- *
- * In addition, in 4.2 (and...), a special protocol
- * is needed to pick up the TCP Urgent data in
- * the correct sequence.
- *
- * What we do is: if we think we are in urgent
- * mode, we look to see if we are "at the mark".
- * If we are, we do an OOB receive. If we run
- * this twice, we will do the OOB receive twice,
- * but the second will fail, since the second
- * time we were "at the mark", but there wasn't
- * any data there (the kernel doesn't reset
- * "at the mark" until we do a normal read).
- * Once we've read the OOB data, we go ahead
- * and do normal reads.
- *
- * There is also another problem, which is that
- * since the OOB byte we read doesn't put us
- * out of OOB state, and since that byte is most
- * likely the TELNET DM (data mark), we would
- * stay in the TELNET SYNCH (SYNCHing) state.
- * So, clocks to the rescue. If we've "just"
- * received a DM, then we test for the
- * presence of OOB data when the receive OOB
- * fails (and AFTER we did the normal mode read
- * to clear "at the mark").
- */
- if (SYNCHing) {
- int atmark;
- static int bogus_oob = 0, first = 1;
-
- ioctl(net, SIOCATMARK, (char *)&atmark);
- if (atmark) {
- c = recv(net, netiring.supply, canread, MSG_OOB);
- if ((c == -1) && (errno == EINVAL)) {
- c = recv(net, netiring.supply, canread, 0);
- if (clocks.didnetreceive < clocks.gotDM) {
- SYNCHing = stilloob(net);
- }
- } else if (first && c > 0) {
- /*
- * Bogosity check. Systems based on 4.2BSD
- * do not return an error if you do a second
- * recv(MSG_OOB). So, we do one. If it
- * succeeds and returns exactly the same
- * data, then assume that we are running
- * on a broken system and set the bogus_oob
- * flag. (If the data was different, then
- * we probably got some valid new data, so
- * increment the count...)
- */
- int i;
- i = recv(net, netiring.supply + c, canread - c, MSG_OOB);
- if (i == c &&
- memcmp(netiring.supply, netiring.supply + c, i) == 0) {
- bogus_oob = 1;
- first = 0;
- } else if (i < 0) {
- bogus_oob = 0;
- first = 0;
- } else
- c += i;
- }
- if (bogus_oob && c > 0) {
- int i;
- /*
- * Bogosity. We have to do the read
- * to clear the atmark to get out of
- * an infinate loop.
- */
- i = read(net, netiring.supply + c, canread - c);
- if (i > 0)
- c += i;
- }
- } else {
- c = recv(net, netiring.supply, canread, 0);
- }
- } else {
- c = recv(net, netiring.supply, canread, 0);
- }
- settimer(didnetreceive);
-#else /* !defined(SO_OOBINLINE) */
- c = recv(net, (char *)netiring.supply, canread, 0);
-#endif /* !defined(SO_OOBINLINE) */
- if (c < 0 && errno == EWOULDBLOCK) {
- c = 0;
- } else if (c <= 0) {
- return -1;
- }
- if (netdata) {
- Dump('<', netiring.supply, c);
- }
- if (c)
- ring_supplied(&netiring, c);
- returnValue = 1;
- }
-
- /*
- * Something to read from the tty...
- */
- if (FD_ISSET(tin, &ibits)) {
- FD_CLR(tin, &ibits);
- c = TerminalRead(ttyiring.supply, ring_empty_consecutive(&ttyiring));
- if (c < 0 && errno == EIO)
- c = 0;
- if (c < 0 && errno == EWOULDBLOCK) {
- c = 0;
- } else {
- /* EOF detection for line mode!!!! */
- if ((c == 0) && MODE_LOCAL_CHARS(globalmode) && isatty(tin)) {
- /* must be an EOF... */
- *ttyiring.supply = termEofChar;
- c = 1;
- }
- if (c <= 0) {
- return -1;
- }
- if (termdata) {
- Dump('<', ttyiring.supply, c);
- }
- ring_supplied(&ttyiring, c);
- }
- returnValue = 1; /* did something useful */
- }
-
- if (FD_ISSET(net, &obits)) {
- FD_CLR(net, &obits);
- returnValue |= netflush();
- }
- if (FD_ISSET(tout, &obits)) {
- FD_CLR(tout, &obits);
- returnValue |= (ttyflush(SYNCHing|flushout) > 0);
- }
-
- return returnValue;
-}
diff --git a/secure/usr.bin/telnet/telnet.1 b/secure/usr.bin/telnet/telnet.1
deleted file mode 100644
index b996fea3b2b4..000000000000
--- a/secure/usr.bin/telnet/telnet.1
+++ /dev/null
@@ -1,1366 +0,0 @@
-.\" Copyright (c) 1983, 1990, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\" must display the following acknowledgement:
-.\" This product includes software developed by the University of
-.\" California, Berkeley and its contributors.
-.\" 4. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)telnet.1 8.6 (Berkeley) 6/1/94
-.\"
-.Dd June 1, 1994
-.Dt TELNET 1
-.Os BSD 4.2
-.Sh NAME
-.Nm telnet
-.Nd user interface to the
-.Tn TELNET
-protocol
-.Sh SYNOPSIS
-.Nm telnet
-.Op Fl 8EFKLacdfrx
-.Op Fl S Ar tos
-.Op Fl X Ar authtype
-.Op Fl e Ar escapechar
-.Op Fl k Ar realm
-.Op Fl l Ar user
-.Op Fl n Ar tracefile
-.Oo
-.Ar host
-.Op port
-.Oc
-.Sh DESCRIPTION
-The
-.Nm telnet
-command
-is used to communicate with another host using the
-.Tn TELNET
-protocol.
-If
-.Nm telnet
-is invoked without the
-.Ar host
-argument, it enters command mode,
-indicated by its prompt
-.Pq Nm telnet\&> .
-In this mode, it accepts and executes the commands listed below.
-If it is invoked with arguments, it performs an
-.Ic open
-command with those arguments.
-.Pp
-Options:
-.Bl -tag -width indent
-.It Fl 8
-Specifies an 8-bit data path. This causes an attempt to
-negotiate the
-.Dv TELNET BINARY
-option on both input and output.
-.It Fl E
-Stops any character from being recognized as an escape character.
-.It Fl F
-If Kerberos V5 authentication is being used, the
-.Fl F
-option allows the local credentials to be forwarded
-to the remote system, including any credentials that
-have already been forwarded into the local environment.
-.It Fl K
-Specifies no automatic login to the remote system.
-.It Fl L
-Specifies an 8-bit data path on output. This causes the
-BINARY option to be negotiated on output.
-.It Fl S Ar tos
-Sets the IP type-of-service (TOS) option for the telnet
-connection to the value
-.Ar tos,
-which can be a numeric TOS value
-or, on systems that support it, a symbolic
-TOS name found in the /etc/iptos file.
-.It Fl X Ar atype
-Disables the
-.Ar atype
-type of authentication.
-.It Fl a
-Attempt automatic login.
-Currently, this sends the user name via the
-.Ev USER
-variable
-of the
-.Ev ENVIRON
-option if supported by the remote system.
-The name used is that of the current user as returned by
-.Xr getlogin 2
-if it agrees with the current user ID,
-otherwise it is the name associated with the user ID.
-.It Fl c
-Disables the reading of the user's
-.Pa \&.telnetrc
-file. (See the
-.Ic toggle skiprc
-command on this man page.)
-.It Fl d
-Sets the initial value of the
-.Ic debug
-toggle to
-.Dv TRUE
-.It Fl e Ar escape char
-Sets the initial
-.Nm
-.Nm telnet
-escape character to
-.Ar escape char.
-If
-.Ar escape char
-is omitted, then
-there will be no escape character.
-.It Fl f
-If Kerberos V5 authentication is being used, the
-.Fl f
-option allows the local credentials to be forwarded to the remote system.
-.ne 1i
-.It Fl k Ar realm
-If Kerberos authentication is being used, the
-.Fl k
-option requests that telnet obtain tickets for the remote host in
-realm realm instead of the remote host's realm, as determined
-by
-.Xr krb_realmofhost 3 .
-.It Fl l Ar user
-When connecting to the remote system, if the remote system
-understands the
-.Ev ENVIRON
-option, then
-.Ar user
-will be sent to the remote system as the value for the variable USER.
-This option implies the
-.Fl a
-option.
-This option may also be used with the
-.Ic open
-command.
-.It Fl n Ar tracefile
-Opens
-.Ar tracefile
-for recording trace information.
-See the
-.Ic set tracefile
-command below.
-.It Fl r
-Specifies a user interface similar to
-.Xr rlogin 1 .
-In this
-mode, the escape character is set to the tilde (~) character,
-unless modified by the -e option.
-.It Fl x
-Turns on encryption of the data stream if possible. This
-option is not available outside of the United States and
-Canada.
-.It Ar host
-Indicates the official name, an alias, or the Internet address
-of a remote host.
-.It Ar port
-Indicates a port number (address of an application). If a number is
-not specified, the default
-.Nm telnet
-port is used.
-.El
-.Pp
-When in rlogin mode, a line of the form ~. disconnects from the
-remote host; ~ is the telnet escape character.
-Similarly, the line ~^Z suspends the telnet session.
-The line ~^] escapes to the normal telnet escape prompt.
-.Pp
-Once a connection has been opened,
-.Nm telnet
-will attempt to enable the
-.Dv TELNET LINEMODE
-option.
-If this fails, then
-.Nm telnet
-will revert to one of two input modes:
-either \*(Lqcharacter at a time\*(Rq
-or \*(Lqold line by line\*(Rq
-depending on what the remote system supports.
-.Pp
-When
-.Dv LINEMODE
-is enabled, character processing is done on the
-local system, under the control of the remote system. When input
-editing or character echoing is to be disabled, the remote system
-will relay that information. The remote system will also relay
-changes to any special characters that happen on the remote
-system, so that they can take effect on the local system.
-.Pp
-In \*(Lqcharacter at a time\*(Rq mode, most
-text typed is immediately sent to the remote host for processing.
-.Pp
-In \*(Lqold line by line\*(Rq mode, all text is echoed locally,
-and (normally) only completed lines are sent to the remote host.
-The \*(Lqlocal echo character\*(Rq (initially \*(Lq^E\*(Rq) may be used
-to turn off and on the local echo
-(this would mostly be used to enter passwords
-without the password being echoed).
-.Pp
-If the
-.Dv LINEMODE
-option is enabled, or if the
-.Ic localchars
-toggle is
-.Dv TRUE
-(the default for \*(Lqold line by line\*(Lq; see below),
-the user's
-.Ic quit ,
-.Ic intr ,
-and
-.Ic flush
-characters are trapped locally, and sent as
-.Tn TELNET
-protocol sequences to the remote side.
-If
-.Dv LINEMODE
-has ever been enabled, then the user's
-.Ic susp
-and
-.Ic eof
-are also sent as
-.Tn TELNET
-protocol sequences,
-and
-.Ic quit
-is sent as a
-.Dv TELNET ABORT
-instead of
-.Dv BREAK
-There are options (see
-.Ic toggle
-.Ic autoflush
-and
-.Ic toggle
-.Ic autosynch
-below)
-which cause this action to flush subsequent output to the terminal
-(until the remote host acknowledges the
-.Tn TELNET
-sequence) and flush previous terminal input
-(in the case of
-.Ic quit
-and
-.Ic intr ) .
-.Pp
-While connected to a remote host,
-.Nm telnet
-command mode may be entered by typing the
-.Nm telnet
-\*(Lqescape character\*(Rq (initially \*(Lq^]\*(Rq).
-When in command mode, the normal terminal editing conventions are available.
-.Pp
-The following
-.Nm telnet
-commands are available.
-Only enough of each command to uniquely identify it need be typed
-(this is also true for arguments to the
-.Ic mode ,
-.Ic set ,
-.Ic toggle ,
-.Ic unset ,
-.Ic slc ,
-.Ic environ ,
-and
-.Ic display
-commands).
-.Pp
-.Bl -tag -width "mode type"
-.It Ic auth Ar argument ...
-The auth command manipulates the information sent through the
-.Dv TELNET AUTHENTICATE
-option. Valid arguments for the
-auth command are as follows:
-.Bl -tag -width "disable type"
-.It Ic disable Ar type
-Disables the specified type of authentication. To
-obtain a list of available types, use the
-.Ic auth disable \&?
-command.
-.It Ic enable Ar type
-Enables the specified type of authentication. To
-obtain a list of available types, use the
-.Ic auth enable \&?
-command.
-.It Ic status
-Lists the current status of the various types of
-authentication.
-.El
-.It Ic close
-Close a
-.Tn TELNET
-session and return to command mode.
-.It Ic display Ar argument ...
-Displays all, or some, of the
-.Ic set
-and
-.Ic toggle
-values (see below).
-.It Ic encrypt Ar argument ...
-The encrypt command manipulates the information sent through the
-.Dv TELNET ENCRYPT
-option.
-.Pp
-Note: Because of export controls, the
-.Dv TELNET ENCRYPT
-option is not supported outside of the United States and Canada.
-.Pp
-Valid arguments for the encrypt command are as follows:
-.Bl -tag -width Ar
-.It Ic disable Ar type Ic [input|output]
-Disables the specified type of encryption. If you
-omit the input and output, both input and output
-are disabled. To obtain a list of available
-types, use the
-.Ic encrypt disable \&?
-command.
-.It Ic enable Ar type Ic [input|output]
-Enables the specified type of encryption. If you
-omit input and output, both input and output are
-enabled. To obtain a list of available types, use the
-.Ic encrypt enable \&?
-command.
-.It Ic input
-This is the same as the
-.Ic encrypt start input
-command.
-.It Ic -input
-This is the same as the
-.Ic encrypt stop input
-command.
-.It Ic output
-This is the same as the
-.Ic encrypt start output
-command.
-.It Ic -output
-This is the same as the
-.Ic encrypt stop output
-command.
-.It Ic start Ic [input|output]
-Attempts to start encryption. If you omit
-.Ic input
-and
-.Ic output,
-both input and output are enabled. To
-obtain a list of available types, use the
-.Ic encrypt enable \&?
-command.
-.It Ic status
-Lists the current status of encryption.
-.It Ic stop Ic [input|output]
-Stops encryption. If you omit input and output,
-encryption is on both input and output.
-.It Ic type Ar type
-Sets the default type of encryption to be used
-with later
-.Ic encrypt start
-or
-.Ic encrypt stop
-commands.
-.El
-.It Ic environ Ar arguments...
-The
-.Ic environ
-command is used to manipulate the
-the variables that my be sent through the
-.Dv TELNET ENVIRON
-option.
-The initial set of variables is taken from the users
-environment, with only the
-.Ev DISPLAY
-and
-.Ev PRINTER
-variables being exported by default.
-The
-.Ev USER
-variable is also exported if the
-.Fl a
-or
-.Fl l
-options are used.
-.br
-Valid arguments for the
-.Ic environ
-command are:
-.Bl -tag -width Fl
-.It Ic define Ar variable value
-Define the variable
-.Ar variable
-to have a value of
-.Ar value.
-Any variables defined by this command are automatically exported.
-The
-.Ar value
-may be enclosed in single or double quotes so
-that tabs and spaces may be included.
-.It Ic undefine Ar variable
-Remove
-.Ar variable
-from the list of environment variables.
-.It Ic export Ar variable
-Mark the variable
-.Ar variable
-to be exported to the remote side.
-.It Ic unexport Ar variable
-Mark the variable
-.Ar variable
-to not be exported unless
-explicitly asked for by the remote side.
-.It Ic list
-List the current set of environment variables.
-Those marked with a
-.Cm *
-will be sent automatically,
-other variables will only be sent if explicitly requested.
-.It Ic \&?
-Prints out help information for the
-.Ic environ
-command.
-.El
-.It Ic logout
-Sends the
-.Dv TELNET LOGOUT
-option to the remote side.
-This command is similar to a
-.Ic close
-command; however, if the remote side does not support the
-.Dv LOGOUT
-option, nothing happens.
-If, however, the remote side does support the
-.Dv LOGOUT
-option, this command should cause the remote side to close the
-.Tn TELNET
-connection.
-If the remote side also supports the concept of
-suspending a user's session for later reattachment,
-the logout argument indicates that you
-should terminate the session immediately.
-.It Ic mode Ar type
-.Ar Type
-is one of several options, depending on the state of the
-.Tn TELNET
-session.
-The remote host is asked for permission to go into the requested mode.
-If the remote host is capable of entering that mode, the requested
-mode will be entered.
-.Bl -tag -width Ar
-.It Ic character
-Disable the
-.Dv TELNET LINEMODE
-option, or, if the remote side does not understand the
-.Dv LINEMODE
-option, then enter \*(Lqcharacter at a time\*(Lq mode.
-.It Ic line
-Enable the
-.Dv TELNET LINEMODE
-option, or, if the remote side does not understand the
-.Dv LINEMODE
-option, then attempt to enter \*(Lqold-line-by-line\*(Lq mode.
-.It Ic isig Pq Ic \-isig
-Attempt to enable (disable) the
-.Dv TRAPSIG
-mode of the
-.Dv LINEMODE
-option.
-This requires that the
-.Dv LINEMODE
-option be enabled.
-.It Ic edit Pq Ic \-edit
-Attempt to enable (disable) the
-.Dv EDIT
-mode of the
-.Dv LINEMODE
-option.
-This requires that the
-.Dv LINEMODE
-option be enabled.
-.It Ic softtabs Pq Ic \-softtabs
-Attempt to enable (disable) the
-.Dv SOFT_TAB
-mode of the
-.Dv LINEMODE
-option.
-This requires that the
-.Dv LINEMODE
-option be enabled.
-.ne 1i
-.It Ic litecho Pq Ic \-litecho
-Attempt to enable (disable) the
-.Dv LIT_ECHO
-mode of the
-.Dv LINEMODE
-option.
-This requires that the
-.Dv LINEMODE
-option be enabled.
-.It Ic \&?
-Prints out help information for the
-.Ic mode
-command.
-.El
-.It Xo
-.Ic open Ar host
-.Oo Op Fl l
-.Ar user
-.Oc Ns Oo Fl
-.Ar port Oc
-.Xc
-Open a connection to the named host.
-If no port number
-is specified,
-.Nm telnet
-will attempt to contact a
-.Tn TELNET
-server at the default port.
-The host specification may be either a host name (see
-.Xr hosts 5 )
-or an Internet address specified in the \*(Lqdot notation\*(Rq (see
-.Xr inet 3 ) .
-The
-.Op Fl l
-option may be used to specify the user name
-to be passed to the remote system via the
-.Ev ENVIRON
-option.
-When connecting to a non-standard port,
-.Nm telnet
-omits any automatic initiation of
-.Tn TELNET
-options. When the port number is preceded by a minus sign,
-the initial option negotiation is done.
-After establishing a connection, the file
-.Pa \&.telnetrc
-in the
-users home directory is opened. Lines beginning with a # are
-comment lines. Blank lines are ignored. Lines that begin
-without white space are the start of a machine entry. The
-first thing on the line is the name of the machine that is
-being connected to. The rest of the line, and successive
-lines that begin with white space are assumed to be
-.Nm telnet
-commands and are processed as if they had been typed
-in manually to the
-.Nm telnet
-command prompt.
-.It Ic quit
-Close any open
-.Tn TELNET
-session and exit
-.Nm telnet .
-An end of file (in command mode) will also close a session and exit.
-.It Ic send Ar arguments
-Sends one or more special character sequences to the remote host.
-The following are the arguments which may be specified
-(more than one argument may be specified at a time):
-.Pp
-.Bl -tag -width escape
-.It Ic abort
-Sends the
-.Dv TELNET ABORT
-(Abort
-processes)
-sequence.
-.It Ic ao
-Sends the
-.Dv TELNET AO
-(Abort Output) sequence, which should cause the remote system to flush
-all output
-.Em from
-the remote system
-.Em to
-the user's terminal.
-.It Ic ayt
-Sends the
-.Dv TELNET AYT
-(Are You There)
-sequence, to which the remote system may or may not choose to respond.
-.It Ic brk
-Sends the
-.Dv TELNET BRK
-(Break) sequence, which may have significance to the remote
-system.
-.It Ic ec
-Sends the
-.Dv TELNET EC
-(Erase Character)
-sequence, which should cause the remote system to erase the last character
-entered.
-.It Ic el
-Sends the
-.Dv TELNET EL
-(Erase Line)
-sequence, which should cause the remote system to erase the line currently
-being entered.
-.It Ic eof
-Sends the
-.Dv TELNET EOF
-(End Of File)
-sequence.
-.It Ic eor
-Sends the
-.Dv TELNET EOR
-(End of Record)
-sequence.
-.It Ic escape
-Sends the current
-.Nm telnet
-escape character (initially \*(Lq^\*(Rq).
-.It Ic ga
-Sends the
-.Dv TELNET GA
-(Go Ahead)
-sequence, which likely has no significance to the remote system.
-.It Ic getstatus
-If the remote side supports the
-.Dv TELNET STATUS
-command,
-.Ic getstatus
-will send the subnegotiation to request that the server send
-its current option status.
-.ne 1i
-.It Ic ip
-Sends the
-.Dv TELNET IP
-(Interrupt Process) sequence, which should cause the remote
-system to abort the currently running process.
-.It Ic nop
-Sends the
-.Dv TELNET NOP
-(No OPeration)
-sequence.
-.It Ic susp
-Sends the
-.Dv TELNET SUSP
-(SUSPend process)
-sequence.
-.It Ic synch
-Sends the
-.Dv TELNET SYNCH
-sequence.
-This sequence causes the remote system to discard all previously typed
-(but not yet read) input.
-This sequence is sent as
-.Tn TCP
-urgent
-data (and may not work if the remote system is a
-.Bx 4.2
-system -- if
-it doesn't work, a lower case \*(Lqr\*(Rq may be echoed on the terminal).
-.It Ic do Ar cmd
-.It Ic dont Ar cmd
-.It Ic will Ar cmd
-.It Ic wont Ar cmd
-Sends the
-.Dv TELNET DO
-.Ar cmd
-sequence.
-.Ar Cmd
-can be either a decimal number between 0 and 255,
-or a symbolic name for a specific
-.Dv TELNET
-command.
-.Ar Cmd
-can also be either
-.Ic help
-or
-.Ic \&?
-to print out help information, including
-a list of known symbolic names.
-.It Ic \&?
-Prints out help information for the
-.Ic send
-command.
-.El
-.It Ic set Ar argument value
-.It Ic unset Ar argument value
-The
-.Ic set
-command will set any one of a number of
-.Nm telnet
-variables to a specific value or to
-.Dv TRUE .
-The special value
-.Ic off
-turns off the function associated with
-the variable, this is equivalent to using the
-.Ic unset
-command.
-The
-.Ic unset
-command will disable or set to
-.Dv FALSE
-any of the specified functions.
-The values of variables may be interrogated with the
-.Ic display
-command.
-The variables which may be set or unset, but not toggled, are
-listed here. In addition, any of the variables for the
-.Ic toggle
-command may be explicitly set or unset using
-the
-.Ic set
-and
-.Ic unset
-commands.
-.Bl -tag -width escape
-.It Ic ayt
-If
-.Tn TELNET
-is in localchars mode, or
-.Dv LINEMODE
-is enabled, and the status character is typed, a
-.Dv TELNET AYT
-sequence (see
-.Ic send ayt
-preceding) is sent to the
-remote host. The initial value for the "Are You There"
-character is the terminal's status character.
-.It Ic echo
-This is the value (initially \*(Lq^E\*(Rq) which, when in
-\*(Lqline by line\*(Rq mode, toggles between doing local echoing
-of entered characters (for normal processing), and suppressing
-echoing of entered characters (for entering, say, a password).
-.It Ic eof
-If
-.Nm telnet
-is operating in
-.Dv LINEMODE
-or \*(Lqold line by line\*(Rq mode, entering this character
-as the first character on a line will cause this character to be
-sent to the remote system.
-The initial value of the eof character is taken to be the terminal's
-.Ic eof
-character.
-.It Ic erase
-If
-.Nm telnet
-is in
-.Ic localchars
-mode (see
-.Ic toggle
-.Ic localchars
-below),
-.Sy and
-if
-.Nm telnet
-is operating in \*(Lqcharacter at a time\*(Rq mode, then when this
-character is typed, a
-.Dv TELNET EC
-sequence (see
-.Ic send
-.Ic ec
-above)
-is sent to the remote system.
-The initial value for the erase character is taken to be
-the terminal's
-.Ic erase
-character.
-.It Ic escape
-This is the
-.Nm telnet
-escape character (initially \*(Lq^[\*(Rq) which causes entry
-into
-.Nm telnet
-command mode (when connected to a remote system).
-.It Ic flushoutput
-If
-.Nm telnet
-is in
-.Ic localchars
-mode (see
-.Ic toggle
-.Ic localchars
-below)
-and the
-.Ic flushoutput
-character is typed, a
-.Dv TELNET AO
-sequence (see
-.Ic send
-.Ic ao
-above)
-is sent to the remote host.
-The initial value for the flush character is taken to be
-the terminal's
-.Ic flush
-character.
-.It Ic forw1
-.It Ic forw2
-If
-.Tn TELNET
-is operating in
-.Dv LINEMODE ,
-these are the
-characters that, when typed, cause partial lines to be
-forwarded to the remote system. The initial value for
-the forwarding characters are taken from the terminal's
-eol and eol2 characters.
-.It Ic interrupt
-If
-.Nm telnet
-is in
-.Ic localchars
-mode (see
-.Ic toggle
-.Ic localchars
-below)
-and the
-.Ic interrupt
-character is typed, a
-.Dv TELNET IP
-sequence (see
-.Ic send
-.Ic ip
-above)
-is sent to the remote host.
-The initial value for the interrupt character is taken to be
-the terminal's
-.Ic intr
-character.
-.It Ic kill
-If
-.Nm telnet
-is in
-.Ic localchars
-mode (see
-.Ic toggle
-.Ic localchars
-below),
-.Ic and
-if
-.Nm telnet
-is operating in \*(Lqcharacter at a time\*(Rq mode, then when this
-character is typed, a
-.Dv TELNET EL
-sequence (see
-.Ic send
-.Ic el
-above)
-is sent to the remote system.
-The initial value for the kill character is taken to be
-the terminal's
-.Ic kill
-character.
-.It Ic lnext
-If
-.Nm telnet
-is operating in
-.Dv LINEMODE
-or \*(Lqold line by line\*(Lq mode, then this character is taken to
-be the terminal's
-.Ic lnext
-character.
-The initial value for the lnext character is taken to be
-the terminal's
-.Ic lnext
-character.
-.It Ic quit
-If
-.Nm telnet
-is in
-.Ic localchars
-mode (see
-.Ic toggle
-.Ic localchars
-below)
-and the
-.Ic quit
-character is typed, a
-.Dv TELNET BRK
-sequence (see
-.Ic send
-.Ic brk
-above)
-is sent to the remote host.
-The initial value for the quit character is taken to be
-the terminal's
-.Ic quit
-character.
-.It Ic reprint
-If
-.Nm telnet
-is operating in
-.Dv LINEMODE
-or \*(Lqold line by line\*(Lq mode, then this character is taken to
-be the terminal's
-.Ic reprint
-character.
-The initial value for the reprint character is taken to be
-the terminal's
-.Ic reprint
-character.
-.It Ic rlogin
-This is the rlogin escape character.
-If set, the normal
-.Tn TELNET
-escape character is ignored unless it is
-preceded by this character at the beginning of a line.
-This character, at the beginning of a line followed by
-a "." closes the connection; when followed by a ^Z it
-suspends the telnet command. The initial state is to
-disable the rlogin escape character.
-.It Ic start
-If the
-.Dv TELNET TOGGLE-FLOW-CONTROL
-option has been enabled,
-then this character is taken to
-be the terminal's
-.Ic start
-character.
-The initial value for the kill character is taken to be
-the terminal's
-.Ic start
-character.
-.It Ic stop
-If the
-.Dv TELNET TOGGLE-FLOW-CONTROL
-option has been enabled,
-then this character is taken to
-be the terminal's
-.Ic stop
-character.
-The initial value for the kill character is taken to be
-the terminal's
-.Ic stop
-character.
-.It Ic susp
-If
-.Nm telnet
-is in
-.Ic localchars
-mode, or
-.Dv LINEMODE
-is enabled, and the
-.Ic suspend
-character is typed, a
-.Dv TELNET SUSP
-sequence (see
-.Ic send
-.Ic susp
-above)
-is sent to the remote host.
-The initial value for the suspend character is taken to be
-the terminal's
-.Ic suspend
-character.
-.ne 1i
-.It Ic tracefile
-This is the file to which the output, caused by
-.Ic netdata
-or
-.Ic option
-tracing being
-.Dv TRUE ,
-will be written. If it is set to
-.Dq Fl ,
-then tracing information will be written to standard output (the default).
-.It Ic worderase
-If
-.Nm telnet
-is operating in
-.Dv LINEMODE
-or \*(Lqold line by line\*(Lq mode, then this character is taken to
-be the terminal's
-.Ic worderase
-character.
-The initial value for the worderase character is taken to be
-the terminal's
-.Ic worderase
-character.
-.It Ic \&?
-Displays the legal
-.Ic set
-.Pq Ic unset
-commands.
-.El
-.It Ic slc Ar state
-The
-.Ic slc
-command (Set Local Characters) is used to set
-or change the state of the the special
-characters when the
-.Dv TELNET LINEMODE
-option has
-been enabled. Special characters are characters that get
-mapped to
-.Tn TELNET
-commands sequences (like
-.Ic ip
-or
-.Ic quit )
-or line editing characters (like
-.Ic erase
-and
-.Ic kill ) .
-By default, the local special characters are exported.
-.Bl -tag -width Fl
-.It Ic check
-Verify the current settings for the current special characters.
-The remote side is requested to send all the current special
-character settings, and if there are any discrepancies with
-the local side, the local side will switch to the remote value.
-.It Ic export
-Switch to the local defaults for the special characters. The
-local default characters are those of the local terminal at
-the time when
-.Nm telnet
-was started.
-.It Ic import
-Switch to the remote defaults for the special characters.
-The remote default characters are those of the remote system
-at the time when the
-.Tn TELNET
-connection was established.
-.It Ic \&?
-Prints out help information for the
-.Ic slc
-command.
-.El
-.It Ic status
-Show the current status of
-.Nm telnet .
-This includes the peer one is connected to, as well
-as the current mode.
-.It Ic toggle Ar arguments ...
-Toggle (between
-.Dv TRUE
-and
-.Dv FALSE )
-various flags that control how
-.Nm telnet
-responds to events.
-These flags may be set explicitly to
-.Dv TRUE
-or
-.Dv FALSE
-using the
-.Ic set
-and
-.Ic unset
-commands listed above.
-More than one argument may be specified.
-The state of these flags may be interrogated with the
-.Ic display
-command.
-Valid arguments are:
-.Bl -tag -width Ar
-.It Ic authdebug
-Turns on debugging information for the authentication code.
-.It Ic autoflush
-If
-.Ic autoflush
-and
-.Ic localchars
-are both
-.Dv TRUE ,
-then when the
-.Ic ao ,
-or
-.Ic quit
-characters are recognized (and transformed into
-.Tn TELNET
-sequences; see
-.Ic set
-above for details),
-.Nm telnet
-refuses to display any data on the user's terminal
-until the remote system acknowledges (via a
-.Dv TELNET TIMING MARK
-option)
-that it has processed those
-.Tn TELNET
-sequences.
-The initial value for this toggle is
-.Dv TRUE
-if the terminal user had not
-done an "stty noflsh", otherwise
-.Dv FALSE
-(see
-.Xr stty 1 ) .
-.It Ic autodecrypt
-When the
-.Dv TELNET ENCRYPT
-option is negotiated, by
-default the actual encryption (decryption) of the data
-stream does not start automatically. The autoencrypt
-(autodecrypt) command states that encryption of the
-output (input) stream should be enabled as soon as
-possible.
-.sp
-.Pp
-Note: Because of export controls, the
-.Dv TELNET ENCRYPT
-option is not supported outside the United States and Canada.
-.It Ic autologin
-If the remote side supports the
-.Dv TELNET AUTHENTICATION
-option
-.Tn TELNET
-attempts to use it to perform automatic authentication. If the
-.Dv AUTHENTICATION
-option is not supported, the user's login
-name are propagated through the
-.Dv TELNET ENVIRON
-option.
-This command is the same as specifying
-.Ar a
-option on the
-.Ic open
-command.
-.It Ic autosynch
-If
-.Ic autosynch
-and
-.Ic localchars
-are both
-.Dv TRUE ,
-then when either the
-.Ic intr
-or
-.Ic quit
-characters is typed (see
-.Ic set
-above for descriptions of the
-.Ic intr
-and
-.Ic quit
-characters), the resulting
-.Tn TELNET
-sequence sent is followed by the
-.Dv TELNET SYNCH
-sequence.
-This procedure
-.Ic should
-cause the remote system to begin throwing away all previously
-typed input until both of the
-.Tn TELNET
-sequences have been read and acted upon.
-The initial value of this toggle is
-.Dv FALSE .
-.It Ic binary
-Enable or disable the
-.Dv TELNET BINARY
-option on both input and output.
-.It Ic inbinary
-Enable or disable the
-.Dv TELNET BINARY
-option on input.
-.It Ic outbinary
-Enable or disable the
-.Dv TELNET BINARY
-option on output.
-.It Ic crlf
-If this is
-.Dv TRUE ,
-then carriage returns will be sent as
-.Li <CR><LF> .
-If this is
-.Dv FALSE ,
-then carriage returns will be send as
-.Li <CR><NUL> .
-The initial value for this toggle is
-.Dv FALSE .
-.It Ic crmod
-Toggle carriage return mode.
-When this mode is enabled, most carriage return characters received from
-the remote host will be mapped into a carriage return followed by
-a line feed.
-This mode does not affect those characters typed by the user, only
-those received from the remote host.
-This mode is not very useful unless the remote host
-only sends carriage return, but never line feed.
-The initial value for this toggle is
-.Dv FALSE .
-.It Ic debug
-Toggles socket level debugging (useful only to the
-.Ic super user ) .
-The initial value for this toggle is
-.Dv FALSE .
-.It Ic encdebug
-Turns on debugging information for the encryption code.
-.It Ic localchars
-If this is
-.Dv TRUE ,
-then the
-.Ic flush ,
-.Ic interrupt ,
-.Ic quit ,
-.Ic erase ,
-and
-.Ic kill
-characters (see
-.Ic set
-above) are recognized locally, and transformed into (hopefully) appropriate
-.Tn TELNET
-control sequences
-(respectively
-.Ic ao ,
-.Ic ip ,
-.Ic brk ,
-.Ic ec ,
-and
-.Ic el ;
-see
-.Ic send
-above).
-The initial value for this toggle is
-.Dv TRUE
-in \*(Lqold line by line\*(Rq mode,
-and
-.Dv FALSE
-in \*(Lqcharacter at a time\*(Rq mode.
-When the
-.Dv LINEMODE
-option is enabled, the value of
-.Ic localchars
-is ignored, and assumed to always be
-.Dv TRUE .
-If
-.Dv LINEMODE
-has ever been enabled, then
-.Ic quit
-is sent as
-.Ic abort ,
-and
-.Ic eof and
-.B suspend
-are sent as
-.Ic eof and
-.Ic susp ,
-see
-.Ic send
-above).
-.It Ic netdata
-Toggles the display of all network data (in hexadecimal format).
-The initial value for this toggle is
-.Dv FALSE .
-.It Ic options
-Toggles the display of some internal
-.Nm telnet
-protocol processing (having to do with
-.Tn TELNET
-options).
-The initial value for this toggle is
-.Dv FALSE .
-.ne 1i
-.It Ic prettydump
-When the
-.Ic netdata
-toggle is enabled, if
-.Ic prettydump
-is enabled the output from the
-.Ic netdata
-command will be formatted in a more user readable format.
-Spaces are put between each character in the output, and the
-beginning of any
-.Tn TELNET
-escape sequence is preceded by a '*' to aid in locating them.
-.It Ic skiprc
-When the skiprc toggle is
-.Dv TRUE ,
-.Tn TELNET
-skips the reading of the
-.Pa \&.telnetrc
-file in the users home
-directory when connections are opened. The initial
-value for this toggle is
-.Dv FALSE.
-.It Ic termdata
-Toggles the display of all terminal data (in hexadecimal format).
-The initial value for this toggle is
-.Dv FALSE .
-.It Ic verbose_encrypt
-When the
-.Ic verbose_encrypt
-toggle is
-.Dv TRUE ,
-.Tn TELNET
-prints out a message each time encryption is enabled or
-disabled. The initial value for this toggle is
-.Dv FALSE.
-Note: Because of export controls, data encryption
-is not supported outside of the United States and Canada.
-.It Ic \&?
-Displays the legal
-.Ic toggle
-commands.
-.El
-.It Ic z
-Suspend
-.Nm telnet .
-This command only works when the user is using the
-.Xr csh 1 .
-.It Ic \&! Op Ar command
-Execute a single command in a subshell on the local
-system. If
-.Ic command
-is omitted, then an interactive
-subshell is invoked.
-.It Ic \&? Op Ar command
-Get help. With no arguments,
-.Nm telnet
-prints a help summary.
-If a command is specified,
-.Nm telnet
-will print the help information for just that command.
-.El
-.Sh ENVIRONMENT
-.Nm Telnet
-uses at least the
-.Ev HOME ,
-.Ev SHELL ,
-.Ev DISPLAY ,
-and
-.Ev TERM
-environment variables.
-Other environment variables may be propagated
-to the other side via the
-.Dv TELNET ENVIRON
-option.
-.Sh FILES
-.Bl -tag -width ~/.telnetrc -compact
-.It Pa ~/.telnetrc
-user customized telnet startup values
-.El
-.Sh HISTORY
-The
-.Nm Telnet
-command appeared in
-.Bx 4.2 .
-.Sh NOTES
-.Pp
-On some remote systems, echo has to be turned off manually when in
-\*(Lqold line by line\*(Rq mode.
-.Pp
-In \*(Lqold line by line\*(Rq mode or
-.Dv LINEMODE
-the terminal's
-.Ic eof
-character is only recognized (and sent to the remote system)
-when it is the first character on a line.
diff --git a/secure/usr.bin/telnet/telnet.c b/secure/usr.bin/telnet/telnet.c
deleted file mode 100644
index 4402fdd3ae42..000000000000
--- a/secure/usr.bin/telnet/telnet.c
+++ /dev/null
@@ -1,2650 +0,0 @@
-/*
- * Copyright (c) 1988, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)telnet.c 8.4 (Berkeley) 5/30/95";
-#endif /* not lint */
-
-#include <sys/types.h>
-
-#if defined(unix)
-#include <signal.h>
-/* By the way, we need to include curses.h before telnet.h since,
- * among other things, telnet.h #defines 'DO', which is a variable
- * declared in curses.h.
- */
-#endif /* defined(unix) */
-
-#include <arpa/telnet.h>
-
-#include <ctype.h>
-
-#include "ring.h"
-
-#include "defines.h"
-#include "externs.h"
-#include "types.h"
-#include "general.h"
-
-
-#define strip(x) ((my_want_state_is_wont(TELOPT_BINARY)) ? ((x)&0x7f) : (x))
-
-static unsigned char subbuffer[SUBBUFSIZE],
- *subpointer, *subend; /* buffer for sub-options */
-#define SB_CLEAR() subpointer = subbuffer;
-#define SB_TERM() { subend = subpointer; SB_CLEAR(); }
-#define SB_ACCUM(c) if (subpointer < (subbuffer+sizeof subbuffer)) { \
- *subpointer++ = (c); \
- }
-
-#define SB_GET() ((*subpointer++)&0xff)
-#define SB_PEEK() ((*subpointer)&0xff)
-#define SB_EOF() (subpointer >= subend)
-#define SB_LEN() (subend - subpointer)
-
-char options[256]; /* The combined options */
-char do_dont_resp[256];
-char will_wont_resp[256];
-
-int
- eight = 0,
- autologin = 0, /* Autologin anyone? */
- skiprc = 0,
- connected,
- showoptions,
- In3270, /* Are we in 3270 mode? */
- ISend, /* trying to send network data in */
- debug = 0,
- crmod,
- netdata, /* Print out network data flow */
- crlf, /* Should '\r' be mapped to <CR><LF> (or <CR><NUL>)? */
-#if defined(TN3270)
- noasynchtty = 0,/* User specified "-noasynch" on command line */
- noasynchnet = 0,/* User specified "-noasynch" on command line */
- askedSGA = 0, /* We have talked about suppress go ahead */
-#endif /* defined(TN3270) */
- telnetport,
- SYNCHing, /* we are in TELNET SYNCH mode */
- flushout, /* flush output */
- autoflush = 0, /* flush output when interrupting? */
- autosynch, /* send interrupt characters with SYNCH? */
- localflow, /* we handle flow control locally */
- restartany, /* if flow control enabled, restart on any character */
- localchars, /* we recognize interrupt/quit */
- donelclchars, /* the user has set "localchars" */
- donebinarytoggle, /* the user has put us in binary */
- dontlecho, /* do we suppress local echoing right now? */
- globalmode;
-
-char *prompt = 0;
-
-cc_t escape;
-cc_t rlogin;
-#ifdef KLUDGELINEMODE
-cc_t echoc;
-#endif
-
-/*
- * Telnet receiver states for fsm
- */
-#define TS_DATA 0
-#define TS_IAC 1
-#define TS_WILL 2
-#define TS_WONT 3
-#define TS_DO 4
-#define TS_DONT 5
-#define TS_CR 6
-#define TS_SB 7 /* sub-option collection */
-#define TS_SE 8 /* looking for sub-option end */
-
-static int telrcv_state;
-#ifdef OLD_ENVIRON
-unsigned char telopt_environ = TELOPT_NEW_ENVIRON;
-#else
-# define telopt_environ TELOPT_NEW_ENVIRON
-#endif
-
-jmp_buf toplevel = { 0 };
-jmp_buf peerdied;
-
-int flushline;
-int linemode;
-
-#ifdef KLUDGELINEMODE
-int kludgelinemode = 1;
-#endif
-
-/*
- * The following are some clocks used to decide how to interpret
- * the relationship between various variables.
- */
-
-Clocks clocks;
-
-#ifdef notdef
-Modelist modelist[] = {
- { "telnet command mode", COMMAND_LINE },
- { "character-at-a-time mode", 0 },
- { "character-at-a-time mode (local echo)", LOCAL_ECHO|LOCAL_CHARS },
- { "line-by-line mode (remote echo)", LINE | LOCAL_CHARS },
- { "line-by-line mode", LINE | LOCAL_ECHO | LOCAL_CHARS },
- { "line-by-line mode (local echoing suppressed)", LINE | LOCAL_CHARS },
- { "3270 mode", 0 },
-};
-#endif
-
-
-/*
- * Initialize telnet environment.
- */
-
- void
-init_telnet()
-{
- env_init();
-
- SB_CLEAR();
- ClearArray(options);
-
- connected = In3270 = ISend = localflow = donebinarytoggle = 0;
-#if defined(AUTHENTICATION) || defined(ENCRYPTION)
- auth_encrypt_connect(connected);
-#endif /* defined(AUTHENTICATION) || defined(ENCRYPTION) */
- restartany = -1;
-
- SYNCHing = 0;
-
- /* Don't change NetTrace */
-
- escape = CONTROL(']');
- rlogin = _POSIX_VDISABLE;
-#ifdef KLUDGELINEMODE
- echoc = CONTROL('E');
-#endif
-
- flushline = 1;
- telrcv_state = TS_DATA;
-}
-
-
-#ifdef notdef
-#include <varargs.h>
-
- /*VARARGS*/
- static void
-printring(va_alist)
- va_dcl
-{
- va_list ap;
- char buffer[100]; /* where things go */
- char *ptr;
- char *format;
- char *string;
- Ring *ring;
- int i;
-
- va_start(ap);
-
- ring = va_arg(ap, Ring *);
- format = va_arg(ap, char *);
- ptr = buffer;
-
- while ((i = *format++) != 0) {
- if (i == '%') {
- i = *format++;
- switch (i) {
- case 'c':
- *ptr++ = va_arg(ap, int);
- break;
- case 's':
- string = va_arg(ap, char *);
- ring_supply_data(ring, buffer, ptr-buffer);
- ring_supply_data(ring, string, strlen(string));
- ptr = buffer;
- break;
- case 0:
- ExitString("printring: trailing %%.\n", 1);
- /*NOTREACHED*/
- default:
- ExitString("printring: unknown format character.\n", 1);
- /*NOTREACHED*/
- }
- } else {
- *ptr++ = i;
- }
- }
- ring_supply_data(ring, buffer, ptr-buffer);
-}
-#endif
-
-/*
- * These routines are in charge of sending option negotiations
- * to the other side.
- *
- * The basic idea is that we send the negotiation if either side
- * is in disagreement as to what the current state should be.
- */
-
- void
-send_do(c, init)
- register int c, init;
-{
- if (init) {
- if (((do_dont_resp[c] == 0) && my_state_is_do(c)) ||
- my_want_state_is_do(c))
- return;
- set_my_want_state_do(c);
- do_dont_resp[c]++;
- }
- NET2ADD(IAC, DO);
- NETADD(c);
- printoption("SENT", DO, c);
-}
-
- void
-send_dont(c, init)
- register int c, init;
-{
- if (init) {
- if (((do_dont_resp[c] == 0) && my_state_is_dont(c)) ||
- my_want_state_is_dont(c))
- return;
- set_my_want_state_dont(c);
- do_dont_resp[c]++;
- }
- NET2ADD(IAC, DONT);
- NETADD(c);
- printoption("SENT", DONT, c);
-}
-
- void
-send_will(c, init)
- register int c, init;
-{
- if (init) {
- if (((will_wont_resp[c] == 0) && my_state_is_will(c)) ||
- my_want_state_is_will(c))
- return;
- set_my_want_state_will(c);
- will_wont_resp[c]++;
- }
- NET2ADD(IAC, WILL);
- NETADD(c);
- printoption("SENT", WILL, c);
-}
-
- void
-send_wont(c, init)
- register int c, init;
-{
- if (init) {
- if (((will_wont_resp[c] == 0) && my_state_is_wont(c)) ||
- my_want_state_is_wont(c))
- return;
- set_my_want_state_wont(c);
- will_wont_resp[c]++;
- }
- NET2ADD(IAC, WONT);
- NETADD(c);
- printoption("SENT", WONT, c);
-}
-
-
- void
-willoption(option)
- int option;
-{
- int new_state_ok = 0;
-
- if (do_dont_resp[option]) {
- --do_dont_resp[option];
- if (do_dont_resp[option] && my_state_is_do(option))
- --do_dont_resp[option];
- }
-
- if ((do_dont_resp[option] == 0) && my_want_state_is_dont(option)) {
-
- switch (option) {
-
- case TELOPT_ECHO:
-# if defined(TN3270)
- /*
- * The following is a pain in the rear-end.
- * Various IBM servers (some versions of Wiscnet,
- * possibly Fibronics/Spartacus, and who knows who
- * else) will NOT allow us to send "DO SGA" too early
- * in the setup proceedings. On the other hand,
- * 4.2 servers (telnetd) won't set SGA correctly.
- * So, we are stuck. Empirically (but, based on
- * a VERY small sample), the IBM servers don't send
- * out anything about ECHO, so we postpone our sending
- * "DO SGA" until we see "WILL ECHO" (which 4.2 servers
- * DO send).
- */
- {
- if (askedSGA == 0) {
- askedSGA = 1;
- if (my_want_state_is_dont(TELOPT_SGA))
- send_do(TELOPT_SGA, 1);
- }
- }
- /* Fall through */
- case TELOPT_EOR:
-#endif /* defined(TN3270) */
- case TELOPT_BINARY:
- case TELOPT_SGA:
- settimer(modenegotiated);
- /* FALL THROUGH */
- case TELOPT_STATUS:
-#if defined(AUTHENTICATION)
- case TELOPT_AUTHENTICATION:
-#endif
-#ifdef ENCRYPTION
- case TELOPT_ENCRYPT:
-#endif /* ENCRYPTION */
- new_state_ok = 1;
- break;
-
- case TELOPT_TM:
- if (flushout)
- flushout = 0;
- /*
- * Special case for TM. If we get back a WILL,
- * pretend we got back a WONT.
- */
- set_my_want_state_dont(option);
- set_my_state_dont(option);
- return; /* Never reply to TM will's/wont's */
-
- case TELOPT_LINEMODE:
- default:
- break;
- }
-
- if (new_state_ok) {
- set_my_want_state_do(option);
- send_do(option, 0);
- setconnmode(0); /* possibly set new tty mode */
- } else {
- do_dont_resp[option]++;
- send_dont(option, 0);
- }
- }
- set_my_state_do(option);
-#ifdef ENCRYPTION
- if (option == TELOPT_ENCRYPT)
- encrypt_send_support();
-#endif /* ENCRYPTION */
-}
-
- void
-wontoption(option)
- int option;
-{
- if (do_dont_resp[option]) {
- --do_dont_resp[option];
- if (do_dont_resp[option] && my_state_is_dont(option))
- --do_dont_resp[option];
- }
-
- if ((do_dont_resp[option] == 0) && my_want_state_is_do(option)) {
-
- switch (option) {
-
-#ifdef KLUDGELINEMODE
- case TELOPT_SGA:
- if (!kludgelinemode)
- break;
- /* FALL THROUGH */
-#endif
- case TELOPT_ECHO:
- settimer(modenegotiated);
- break;
-
- case TELOPT_TM:
- if (flushout)
- flushout = 0;
- set_my_want_state_dont(option);
- set_my_state_dont(option);
- return; /* Never reply to TM will's/wont's */
-
- default:
- break;
- }
- set_my_want_state_dont(option);
- if (my_state_is_do(option))
- send_dont(option, 0);
- setconnmode(0); /* Set new tty mode */
- } else if (option == TELOPT_TM) {
- /*
- * Special case for TM.
- */
- if (flushout)
- flushout = 0;
- set_my_want_state_dont(option);
- }
- set_my_state_dont(option);
-}
-
- static void
-dooption(option)
- int option;
-{
- int new_state_ok = 0;
-
- if (will_wont_resp[option]) {
- --will_wont_resp[option];
- if (will_wont_resp[option] && my_state_is_will(option))
- --will_wont_resp[option];
- }
-
- if (will_wont_resp[option] == 0) {
- if (my_want_state_is_wont(option)) {
-
- switch (option) {
-
- case TELOPT_TM:
- /*
- * Special case for TM. We send a WILL, but pretend
- * we sent WONT.
- */
- send_will(option, 0);
- set_my_want_state_wont(TELOPT_TM);
- set_my_state_wont(TELOPT_TM);
- return;
-
-# if defined(TN3270)
- case TELOPT_EOR: /* end of record */
-# endif /* defined(TN3270) */
- case TELOPT_BINARY: /* binary mode */
- case TELOPT_NAWS: /* window size */
- case TELOPT_TSPEED: /* terminal speed */
- case TELOPT_LFLOW: /* local flow control */
- case TELOPT_TTYPE: /* terminal type option */
- case TELOPT_SGA: /* no big deal */
-#ifdef ENCRYPTION
- case TELOPT_ENCRYPT: /* encryption variable option */
-#endif /* ENCRYPTION */
- new_state_ok = 1;
- break;
-
- case TELOPT_NEW_ENVIRON: /* New environment variable option */
-#ifdef OLD_ENVIRON
- if (my_state_is_will(TELOPT_OLD_ENVIRON))
- send_wont(TELOPT_OLD_ENVIRON, 1); /* turn off the old */
- goto env_common;
- case TELOPT_OLD_ENVIRON: /* Old environment variable option */
- if (my_state_is_will(TELOPT_NEW_ENVIRON))
- break; /* Don't enable if new one is in use! */
- env_common:
- telopt_environ = option;
-#endif
- new_state_ok = 1;
- break;
-
-#if defined(AUTHENTICATION)
- case TELOPT_AUTHENTICATION:
- if (autologin)
- new_state_ok = 1;
- break;
-#endif
-
- case TELOPT_XDISPLOC: /* X Display location */
- if (env_getvalue((unsigned char *)"DISPLAY"))
- new_state_ok = 1;
- break;
-
- case TELOPT_LINEMODE:
-#ifdef KLUDGELINEMODE
- kludgelinemode = 0;
- send_do(TELOPT_SGA, 1);
-#endif
- set_my_want_state_will(TELOPT_LINEMODE);
- send_will(option, 0);
- set_my_state_will(TELOPT_LINEMODE);
- slc_init();
- return;
-
- case TELOPT_ECHO: /* We're never going to echo... */
- default:
- break;
- }
-
- if (new_state_ok) {
- set_my_want_state_will(option);
- send_will(option, 0);
- setconnmode(0); /* Set new tty mode */
- } else {
- will_wont_resp[option]++;
- send_wont(option, 0);
- }
- } else {
- /*
- * Handle options that need more things done after the
- * other side has acknowledged the option.
- */
- switch (option) {
- case TELOPT_LINEMODE:
-#ifdef KLUDGELINEMODE
- kludgelinemode = 0;
- send_do(TELOPT_SGA, 1);
-#endif
- set_my_state_will(option);
- slc_init();
- send_do(TELOPT_SGA, 0);
- return;
- }
- }
- }
- set_my_state_will(option);
-}
-
- static void
-dontoption(option)
- int option;
-{
-
- if (will_wont_resp[option]) {
- --will_wont_resp[option];
- if (will_wont_resp[option] && my_state_is_wont(option))
- --will_wont_resp[option];
- }
-
- if ((will_wont_resp[option] == 0) && my_want_state_is_will(option)) {
- switch (option) {
- case TELOPT_LINEMODE:
- linemode = 0; /* put us back to the default state */
- break;
-#ifdef OLD_ENVIRON
- case TELOPT_NEW_ENVIRON:
- /*
- * The new environ option wasn't recognized, try
- * the old one.
- */
- send_will(TELOPT_OLD_ENVIRON, 1);
- telopt_environ = TELOPT_OLD_ENVIRON;
- break;
-#endif
- }
- /* we always accept a DONT */
- set_my_want_state_wont(option);
- if (my_state_is_will(option))
- send_wont(option, 0);
- setconnmode(0); /* Set new tty mode */
- }
- set_my_state_wont(option);
-}
-
-/*
- * Given a buffer returned by tgetent(), this routine will turn
- * the pipe seperated list of names in the buffer into an array
- * of pointers to null terminated names. We toss out any bad,
- * duplicate, or verbose names (names with spaces).
- */
-
-static char *name_unknown = "UNKNOWN";
-static char *unknown[] = { 0, 0 };
-
- char **
-mklist(buf, name)
- char *buf, *name;
-{
- register int n;
- register char c, *cp, **argvp, *cp2, **argv, **avt;
-
- if (name) {
- if ((int)strlen(name) > 40) {
- name = 0;
- unknown[0] = name_unknown;
- } else {
- unknown[0] = name;
- upcase(name);
- }
- } else
- unknown[0] = name_unknown;
- /*
- * Count up the number of names.
- */
- for (n = 1, cp = buf; *cp && *cp != ':'; cp++) {
- if (*cp == '|')
- n++;
- }
- /*
- * Allocate an array to put the name pointers into
- */
- argv = (char **)malloc((n+3)*sizeof(char *));
- if (argv == 0)
- return(unknown);
-
- /*
- * Fill up the array of pointers to names.
- */
- *argv = 0;
- argvp = argv+1;
- n = 0;
- for (cp = cp2 = buf; (c = *cp); cp++) {
- if (c == '|' || c == ':') {
- *cp++ = '\0';
- /*
- * Skip entries that have spaces or are over 40
- * characters long. If this is our environment
- * name, then put it up front. Otherwise, as
- * long as this is not a duplicate name (case
- * insensitive) add it to the list.
- */
- if (n || (cp - cp2 > 41))
- ;
- else if (name && (strncasecmp(name, cp2, cp-cp2) == 0))
- *argv = cp2;
- else if (is_unique(cp2, argv+1, argvp))
- *argvp++ = cp2;
- if (c == ':')
- break;
- /*
- * Skip multiple delimiters. Reset cp2 to
- * the beginning of the next name. Reset n,
- * the flag for names with spaces.
- */
- while ((c = *cp) == '|')
- cp++;
- cp2 = cp;
- n = 0;
- }
- /*
- * Skip entries with spaces or non-ascii values.
- * Convert lower case letters to upper case.
- */
- if ((c == ' ') || !isascii(c))
- n = 1;
- else if (islower(c))
- *cp = toupper(c);
- }
-
- /*
- * Check for an old V6 2 character name. If the second
- * name points to the beginning of the buffer, and is
- * only 2 characters long, move it to the end of the array.
- */
- if ((argv[1] == buf) && (strlen(argv[1]) == 2)) {
- --argvp;
- for (avt = &argv[1]; avt < argvp; avt++)
- *avt = *(avt+1);
- *argvp++ = buf;
- }
-
- /*
- * Duplicate last name, for TTYPE option, and null
- * terminate the array. If we didn't find a match on
- * our terminal name, put that name at the beginning.
- */
- cp = *(argvp-1);
- *argvp++ = cp;
- *argvp = 0;
-
- if (*argv == 0) {
- if (name)
- *argv = name;
- else {
- --argvp;
- for (avt = argv; avt < argvp; avt++)
- *avt = *(avt+1);
- }
- }
- if (*argv)
- return(argv);
- else
- return(unknown);
-}
-
- int
-is_unique(name, as, ae)
- register char *name, **as, **ae;
-{
- register char **ap;
- register int n;
-
- n = strlen(name) + 1;
- for (ap = as; ap < ae; ap++)
- if (strncasecmp(*ap, name, n) == 0)
- return(0);
- return (1);
-}
-
-#ifdef TERMCAP
-char termbuf[1024];
-
- /*ARGSUSED*/
- int
-setupterm(tname, fd, errp)
- char *tname;
- int fd, *errp;
-{
- if (tgetent(termbuf, tname) == 1) {
- termbuf[1023] = '\0';
- if (errp)
- *errp = 1;
- return(0);
- }
- if (errp)
- *errp = 0;
- return(-1);
-}
-#else
-#define termbuf ttytype
-extern char ttytype[];
-#endif
-
-int resettermname = 1;
-
- char *
-gettermname()
-{
- char *tname;
- static char **tnamep = 0;
- static char **next;
- int err;
-
- if (resettermname) {
- resettermname = 0;
- if (tnamep && tnamep != unknown)
- free(tnamep);
- if ((tname = (char *)env_getvalue((unsigned char *)"TERM")) &&
- (setupterm(tname, 1, &err) == 0)) {
- tnamep = mklist(termbuf, tname);
- } else {
- if (tname && ((int)strlen(tname) <= 40)) {
- unknown[0] = tname;
- upcase(tname);
- } else
- unknown[0] = name_unknown;
- tnamep = unknown;
- }
- next = tnamep;
- }
- if (*next == 0)
- next = tnamep;
- return(*next++);
-}
-/*
- * suboption()
- *
- * Look at the sub-option buffer, and try to be helpful to the other
- * side.
- *
- * Currently we recognize:
- *
- * Terminal type, send request.
- * Terminal speed (send request).
- * Local flow control (is request).
- * Linemode
- */
-
- static void
-suboption()
-{
- unsigned char subchar;
-
- printsub('<', subbuffer, SB_LEN()+2);
- switch (subchar = SB_GET()) {
- case TELOPT_TTYPE:
- if (my_want_state_is_wont(TELOPT_TTYPE))
- return;
- if (SB_EOF() || SB_GET() != TELQUAL_SEND) {
- return;
- } else {
- char *name;
- unsigned char temp[50];
- int len;
-
-#if defined(TN3270)
- if (tn3270_ttype()) {
- return;
- }
-#endif /* defined(TN3270) */
- name = gettermname();
- len = strlen(name) + 4 + 2;
- if (len < NETROOM()) {
- sprintf((char *)temp, "%c%c%c%c%s%c%c", IAC, SB, TELOPT_TTYPE,
- TELQUAL_IS, name, IAC, SE);
- ring_supply_data(&netoring, temp, len);
- printsub('>', &temp[2], len-2);
- } else {
- ExitString("No room in buffer for terminal type.\n", 1);
- /*NOTREACHED*/
- }
- }
- break;
- case TELOPT_TSPEED:
- if (my_want_state_is_wont(TELOPT_TSPEED))
- return;
- if (SB_EOF())
- return;
- if (SB_GET() == TELQUAL_SEND) {
- long ospeed, ispeed;
- unsigned char temp[50];
- int len;
-
- TerminalSpeeds(&ispeed, &ospeed);
-
- sprintf((char *)temp, "%c%c%c%c%d,%d%c%c", IAC, SB, TELOPT_TSPEED,
- TELQUAL_IS, ospeed, ispeed, IAC, SE);
- len = strlen((char *)temp+4) + 4; /* temp[3] is 0 ... */
-
- if (len < NETROOM()) {
- ring_supply_data(&netoring, temp, len);
- printsub('>', temp+2, len - 2);
- }
-/*@*/ else printf("lm_will: not enough room in buffer\n");
- }
- break;
- case TELOPT_LFLOW:
- if (my_want_state_is_wont(TELOPT_LFLOW))
- return;
- if (SB_EOF())
- return;
- switch(SB_GET()) {
- case LFLOW_RESTART_ANY:
- restartany = 1;
- break;
- case LFLOW_RESTART_XON:
- restartany = 0;
- break;
- case LFLOW_ON:
- localflow = 1;
- break;
- case LFLOW_OFF:
- localflow = 0;
- break;
- default:
- return;
- }
- setcommandmode();
- setconnmode(0);
- break;
-
- case TELOPT_LINEMODE:
- if (my_want_state_is_wont(TELOPT_LINEMODE))
- return;
- if (SB_EOF())
- return;
- switch (SB_GET()) {
- case WILL:
- lm_will(subpointer, SB_LEN());
- break;
- case WONT:
- lm_wont(subpointer, SB_LEN());
- break;
- case DO:
- lm_do(subpointer, SB_LEN());
- break;
- case DONT:
- lm_dont(subpointer, SB_LEN());
- break;
- case LM_SLC:
- slc(subpointer, SB_LEN());
- break;
- case LM_MODE:
- lm_mode(subpointer, SB_LEN(), 0);
- break;
- default:
- break;
- }
- break;
-
-#ifdef OLD_ENVIRON
- case TELOPT_OLD_ENVIRON:
-#endif
- case TELOPT_NEW_ENVIRON:
- if (SB_EOF())
- return;
- switch(SB_PEEK()) {
- case TELQUAL_IS:
- case TELQUAL_INFO:
- if (my_want_state_is_dont(subchar))
- return;
- break;
- case TELQUAL_SEND:
- if (my_want_state_is_wont(subchar)) {
- return;
- }
- break;
- default:
- return;
- }
- env_opt(subpointer, SB_LEN());
- break;
-
- case TELOPT_XDISPLOC:
- if (my_want_state_is_wont(TELOPT_XDISPLOC))
- return;
- if (SB_EOF())
- return;
- if (SB_GET() == TELQUAL_SEND) {
- unsigned char temp[50], *dp;
- int len;
-
- if ((dp = env_getvalue((unsigned char *)"DISPLAY")) == NULL) {
- /*
- * Something happened, we no longer have a DISPLAY
- * variable. So, turn off the option.
- */
- send_wont(TELOPT_XDISPLOC, 1);
- break;
- }
- sprintf((char *)temp, "%c%c%c%c%s%c%c", IAC, SB, TELOPT_XDISPLOC,
- TELQUAL_IS, dp, IAC, SE);
- len = strlen((char *)temp+4) + 4; /* temp[3] is 0 ... */
-
- if (len < NETROOM()) {
- ring_supply_data(&netoring, temp, len);
- printsub('>', temp+2, len - 2);
- }
-/*@*/ else printf("lm_will: not enough room in buffer\n");
- }
- break;
-
-#if defined(AUTHENTICATION)
- case TELOPT_AUTHENTICATION: {
- if (!autologin)
- break;
- if (SB_EOF())
- return;
- switch(SB_GET()) {
- case TELQUAL_IS:
- if (my_want_state_is_dont(TELOPT_AUTHENTICATION))
- return;
- auth_is(subpointer, SB_LEN());
- break;
- case TELQUAL_SEND:
- if (my_want_state_is_wont(TELOPT_AUTHENTICATION))
- return;
- auth_send(subpointer, SB_LEN());
- break;
- case TELQUAL_REPLY:
- if (my_want_state_is_wont(TELOPT_AUTHENTICATION))
- return;
- auth_reply(subpointer, SB_LEN());
- break;
- case TELQUAL_NAME:
- if (my_want_state_is_dont(TELOPT_AUTHENTICATION))
- return;
- auth_name(subpointer, SB_LEN());
- break;
- }
- }
- break;
-#endif
-#ifdef ENCRYPTION
- case TELOPT_ENCRYPT:
- if (SB_EOF())
- return;
- switch(SB_GET()) {
- case ENCRYPT_START:
- if (my_want_state_is_dont(TELOPT_ENCRYPT))
- return;
- encrypt_start(subpointer, SB_LEN());
- break;
- case ENCRYPT_END:
- if (my_want_state_is_dont(TELOPT_ENCRYPT))
- return;
- encrypt_end();
- break;
- case ENCRYPT_SUPPORT:
- if (my_want_state_is_wont(TELOPT_ENCRYPT))
- return;
- encrypt_support(subpointer, SB_LEN());
- break;
- case ENCRYPT_REQSTART:
- if (my_want_state_is_wont(TELOPT_ENCRYPT))
- return;
- encrypt_request_start(subpointer, SB_LEN());
- break;
- case ENCRYPT_REQEND:
- if (my_want_state_is_wont(TELOPT_ENCRYPT))
- return;
- /*
- * We can always send an REQEND so that we cannot
- * get stuck encrypting. We should only get this
- * if we have been able to get in the correct mode
- * anyhow.
- */
- encrypt_request_end();
- break;
- case ENCRYPT_IS:
- if (my_want_state_is_dont(TELOPT_ENCRYPT))
- return;
- encrypt_is(subpointer, SB_LEN());
- break;
- case ENCRYPT_REPLY:
- if (my_want_state_is_wont(TELOPT_ENCRYPT))
- return;
- encrypt_reply(subpointer, SB_LEN());
- break;
- case ENCRYPT_ENC_KEYID:
- if (my_want_state_is_dont(TELOPT_ENCRYPT))
- return;
- encrypt_enc_keyid(subpointer, SB_LEN());
- break;
- case ENCRYPT_DEC_KEYID:
- if (my_want_state_is_wont(TELOPT_ENCRYPT))
- return;
- encrypt_dec_keyid(subpointer, SB_LEN());
- break;
- default:
- break;
- }
- break;
-#endif /* ENCRYPTION */
- default:
- break;
- }
-}
-
-static unsigned char str_lm[] = { IAC, SB, TELOPT_LINEMODE, 0, 0, IAC, SE };
-
- void
-lm_will(cmd, len)
- unsigned char *cmd;
- int len;
-{
- if (len < 1) {
-/*@*/ printf("lm_will: no command!!!\n"); /* Should not happen... */
- return;
- }
- switch(cmd[0]) {
- case LM_FORWARDMASK: /* We shouldn't ever get this... */
- default:
- str_lm[3] = DONT;
- str_lm[4] = cmd[0];
- if (NETROOM() > sizeof(str_lm)) {
- ring_supply_data(&netoring, str_lm, sizeof(str_lm));
- printsub('>', &str_lm[2], sizeof(str_lm)-2);
- }
-/*@*/ else printf("lm_will: not enough room in buffer\n");
- break;
- }
-}
-
- void
-lm_wont(cmd, len)
- unsigned char *cmd;
- int len;
-{
- if (len < 1) {
-/*@*/ printf("lm_wont: no command!!!\n"); /* Should not happen... */
- return;
- }
- switch(cmd[0]) {
- case LM_FORWARDMASK: /* We shouldn't ever get this... */
- default:
- /* We are always DONT, so don't respond */
- return;
- }
-}
-
- void
-lm_do(cmd, len)
- unsigned char *cmd;
- int len;
-{
- if (len < 1) {
-/*@*/ printf("lm_do: no command!!!\n"); /* Should not happen... */
- return;
- }
- switch(cmd[0]) {
- case LM_FORWARDMASK:
- default:
- str_lm[3] = WONT;
- str_lm[4] = cmd[0];
- if (NETROOM() > sizeof(str_lm)) {
- ring_supply_data(&netoring, str_lm, sizeof(str_lm));
- printsub('>', &str_lm[2], sizeof(str_lm)-2);
- }
-/*@*/ else printf("lm_do: not enough room in buffer\n");
- break;
- }
-}
-
- void
-lm_dont(cmd, len)
- unsigned char *cmd;
- int len;
-{
- if (len < 1) {
-/*@*/ printf("lm_dont: no command!!!\n"); /* Should not happen... */
- return;
- }
- switch(cmd[0]) {
- case LM_FORWARDMASK:
- default:
- /* we are always WONT, so don't respond */
- break;
- }
-}
-
-static unsigned char str_lm_mode[] = {
- IAC, SB, TELOPT_LINEMODE, LM_MODE, 0, IAC, SE
-};
-
- void
-lm_mode(cmd, len, init)
- unsigned char *cmd;
- int len, init;
-{
- if (len != 1)
- return;
- if ((linemode&MODE_MASK&~MODE_ACK) == *cmd)
- return;
- if (*cmd&MODE_ACK)
- return;
- linemode = *cmd&(MODE_MASK&~MODE_ACK);
- str_lm_mode[4] = linemode;
- if (!init)
- str_lm_mode[4] |= MODE_ACK;
- if (NETROOM() > sizeof(str_lm_mode)) {
- ring_supply_data(&netoring, str_lm_mode, sizeof(str_lm_mode));
- printsub('>', &str_lm_mode[2], sizeof(str_lm_mode)-2);
- }
-/*@*/ else printf("lm_mode: not enough room in buffer\n");
- setconnmode(0); /* set changed mode */
-}
-
-
-
-/*
- * slc()
- * Handle special character suboption of LINEMODE.
- */
-
-struct spc {
- cc_t val;
- cc_t *valp;
- char flags; /* Current flags & level */
- char mylevel; /* Maximum level & flags */
-} spc_data[NSLC+1];
-
-#define SLC_IMPORT 0
-#define SLC_EXPORT 1
-#define SLC_RVALUE 2
-static int slc_mode = SLC_EXPORT;
-
- void
-slc_init()
-{
- register struct spc *spcp;
-
- localchars = 1;
- for (spcp = spc_data; spcp < &spc_data[NSLC+1]; spcp++) {
- spcp->val = 0;
- spcp->valp = 0;
- spcp->flags = spcp->mylevel = SLC_NOSUPPORT;
- }
-
-#define initfunc(func, flags) { \
- spcp = &spc_data[func]; \
- if (spcp->valp = tcval(func)) { \
- spcp->val = *spcp->valp; \
- spcp->mylevel = SLC_VARIABLE|flags; \
- } else { \
- spcp->val = 0; \
- spcp->mylevel = SLC_DEFAULT; \
- } \
- }
-
- initfunc(SLC_SYNCH, 0);
- /* No BRK */
- initfunc(SLC_AO, 0);
- initfunc(SLC_AYT, 0);
- /* No EOR */
- initfunc(SLC_ABORT, SLC_FLUSHIN|SLC_FLUSHOUT);
- initfunc(SLC_EOF, 0);
-#ifndef SYSV_TERMIO
- initfunc(SLC_SUSP, SLC_FLUSHIN);
-#endif
- initfunc(SLC_EC, 0);
- initfunc(SLC_EL, 0);
-#ifndef SYSV_TERMIO
- initfunc(SLC_EW, 0);
- initfunc(SLC_RP, 0);
- initfunc(SLC_LNEXT, 0);
-#endif
- initfunc(SLC_XON, 0);
- initfunc(SLC_XOFF, 0);
-#ifdef SYSV_TERMIO
- spc_data[SLC_XON].mylevel = SLC_CANTCHANGE;
- spc_data[SLC_XOFF].mylevel = SLC_CANTCHANGE;
-#endif
- initfunc(SLC_FORW1, 0);
-#ifdef USE_TERMIO
- initfunc(SLC_FORW2, 0);
- /* No FORW2 */
-#endif
-
- initfunc(SLC_IP, SLC_FLUSHIN|SLC_FLUSHOUT);
-#undef initfunc
-
- if (slc_mode == SLC_EXPORT)
- slc_export();
- else
- slc_import(1);
-
-}
-
- void
-slcstate()
-{
- printf("Special characters are %s values\n",
- slc_mode == SLC_IMPORT ? "remote default" :
- slc_mode == SLC_EXPORT ? "local" :
- "remote");
-}
-
- void
-slc_mode_export()
-{
- slc_mode = SLC_EXPORT;
- if (my_state_is_will(TELOPT_LINEMODE))
- slc_export();
-}
-
- void
-slc_mode_import(def)
- int def;
-{
- slc_mode = def ? SLC_IMPORT : SLC_RVALUE;
- if (my_state_is_will(TELOPT_LINEMODE))
- slc_import(def);
-}
-
-unsigned char slc_import_val[] = {
- IAC, SB, TELOPT_LINEMODE, LM_SLC, 0, SLC_VARIABLE, 0, IAC, SE
-};
-unsigned char slc_import_def[] = {
- IAC, SB, TELOPT_LINEMODE, LM_SLC, 0, SLC_DEFAULT, 0, IAC, SE
-};
-
- void
-slc_import(def)
- int def;
-{
- if (NETROOM() > sizeof(slc_import_val)) {
- if (def) {
- ring_supply_data(&netoring, slc_import_def, sizeof(slc_import_def));
- printsub('>', &slc_import_def[2], sizeof(slc_import_def)-2);
- } else {
- ring_supply_data(&netoring, slc_import_val, sizeof(slc_import_val));
- printsub('>', &slc_import_val[2], sizeof(slc_import_val)-2);
- }
- }
-/*@*/ else printf("slc_import: not enough room\n");
-}
-
- void
-slc_export()
-{
- register struct spc *spcp;
-
- TerminalDefaultChars();
-
- slc_start_reply();
- for (spcp = &spc_data[1]; spcp < &spc_data[NSLC+1]; spcp++) {
- if (spcp->mylevel != SLC_NOSUPPORT) {
- if (spcp->val == (cc_t)(_POSIX_VDISABLE))
- spcp->flags = SLC_NOSUPPORT;
- else
- spcp->flags = spcp->mylevel;
- if (spcp->valp)
- spcp->val = *spcp->valp;
- slc_add_reply(spcp - spc_data, spcp->flags, spcp->val);
- }
- }
- slc_end_reply();
- (void)slc_update();
- setconnmode(1); /* Make sure the character values are set */
-}
-
- void
-slc(cp, len)
- register unsigned char *cp;
- int len;
-{
- register struct spc *spcp;
- register int func,level;
-
- slc_start_reply();
-
- for (; len >= 3; len -=3, cp +=3) {
-
- func = cp[SLC_FUNC];
-
- if (func == 0) {
- /*
- * Client side: always ignore 0 function.
- */
- continue;
- }
- if (func > NSLC) {
- if ((cp[SLC_FLAGS] & SLC_LEVELBITS) != SLC_NOSUPPORT)
- slc_add_reply(func, SLC_NOSUPPORT, 0);
- continue;
- }
-
- spcp = &spc_data[func];
-
- level = cp[SLC_FLAGS]&(SLC_LEVELBITS|SLC_ACK);
-
- if ((cp[SLC_VALUE] == (unsigned char)spcp->val) &&
- ((level&SLC_LEVELBITS) == (spcp->flags&SLC_LEVELBITS))) {
- continue;
- }
-
- if (level == (SLC_DEFAULT|SLC_ACK)) {
- /*
- * This is an error condition, the SLC_ACK
- * bit should never be set for the SLC_DEFAULT
- * level. Our best guess to recover is to
- * ignore the SLC_ACK bit.
- */
- cp[SLC_FLAGS] &= ~SLC_ACK;
- }
-
- if (level == ((spcp->flags&SLC_LEVELBITS)|SLC_ACK)) {
- spcp->val = (cc_t)cp[SLC_VALUE];
- spcp->flags = cp[SLC_FLAGS]; /* include SLC_ACK */
- continue;
- }
-
- level &= ~SLC_ACK;
-
- if (level <= (spcp->mylevel&SLC_LEVELBITS)) {
- spcp->flags = cp[SLC_FLAGS]|SLC_ACK;
- spcp->val = (cc_t)cp[SLC_VALUE];
- }
- if (level == SLC_DEFAULT) {
- if ((spcp->mylevel&SLC_LEVELBITS) != SLC_DEFAULT)
- spcp->flags = spcp->mylevel;
- else
- spcp->flags = SLC_NOSUPPORT;
- }
- slc_add_reply(func, spcp->flags, spcp->val);
- }
- slc_end_reply();
- if (slc_update())
- setconnmode(1); /* set the new character values */
-}
-
- void
-slc_check()
-{
- register struct spc *spcp;
-
- slc_start_reply();
- for (spcp = &spc_data[1]; spcp < &spc_data[NSLC+1]; spcp++) {
- if (spcp->valp && spcp->val != *spcp->valp) {
- spcp->val = *spcp->valp;
- if (spcp->val == (cc_t)(_POSIX_VDISABLE))
- spcp->flags = SLC_NOSUPPORT;
- else
- spcp->flags = spcp->mylevel;
- slc_add_reply(spcp - spc_data, spcp->flags, spcp->val);
- }
- }
- slc_end_reply();
- setconnmode(1);
-}
-
-
-unsigned char slc_reply[128];
-unsigned char *slc_replyp;
-
- void
-slc_start_reply()
-{
- slc_replyp = slc_reply;
- *slc_replyp++ = IAC;
- *slc_replyp++ = SB;
- *slc_replyp++ = TELOPT_LINEMODE;
- *slc_replyp++ = LM_SLC;
-}
-
- void
-slc_add_reply(func, flags, value)
- unsigned char func;
- unsigned char flags;
- cc_t value;
-{
- if ((*slc_replyp++ = func) == IAC)
- *slc_replyp++ = IAC;
- if ((*slc_replyp++ = flags) == IAC)
- *slc_replyp++ = IAC;
- if ((*slc_replyp++ = (unsigned char)value) == IAC)
- *slc_replyp++ = IAC;
-}
-
- void
-slc_end_reply()
-{
- register int len;
-
- *slc_replyp++ = IAC;
- *slc_replyp++ = SE;
- len = slc_replyp - slc_reply;
- if (len <= 6)
- return;
- if (NETROOM() > len) {
- ring_supply_data(&netoring, slc_reply, slc_replyp - slc_reply);
- printsub('>', &slc_reply[2], slc_replyp - slc_reply - 2);
- }
-/*@*/else printf("slc_end_reply: not enough room\n");
-}
-
- int
-slc_update()
-{
- register struct spc *spcp;
- int need_update = 0;
-
- for (spcp = &spc_data[1]; spcp < &spc_data[NSLC+1]; spcp++) {
- if (!(spcp->flags&SLC_ACK))
- continue;
- spcp->flags &= ~SLC_ACK;
- if (spcp->valp && (*spcp->valp != spcp->val)) {
- *spcp->valp = spcp->val;
- need_update = 1;
- }
- }
- return(need_update);
-}
-
-#ifdef OLD_ENVIRON
-# ifdef ENV_HACK
-/*
- * Earlier version of telnet/telnetd from the BSD code had
- * the definitions of VALUE and VAR reversed. To ensure
- * maximum interoperability, we assume that the server is
- * an older BSD server, until proven otherwise. The newer
- * BSD servers should be able to handle either definition,
- * so it is better to use the wrong values if we don't
- * know what type of server it is.
- */
-int env_auto = 1;
-int old_env_var = OLD_ENV_VAR;
-int old_env_value = OLD_ENV_VALUE;
-# else
-# define old_env_var OLD_ENV_VAR
-# define old_env_value OLD_ENV_VALUE
-# endif
-#endif
-
- void
-env_opt(buf, len)
- register unsigned char *buf;
- register int len;
-{
- register unsigned char *ep = 0, *epc = 0;
- register int i;
-
- switch(buf[0]&0xff) {
- case TELQUAL_SEND:
- env_opt_start();
- if (len == 1) {
- env_opt_add(NULL);
- } else for (i = 1; i < len; i++) {
- switch (buf[i]&0xff) {
-#ifdef OLD_ENVIRON
- case OLD_ENV_VAR:
-# ifdef ENV_HACK
- if (telopt_environ == TELOPT_OLD_ENVIRON
- && env_auto) {
- /* Server has the same definitions */
- old_env_var = OLD_ENV_VAR;
- old_env_value = OLD_ENV_VALUE;
- }
- /* FALL THROUGH */
-# endif
- case OLD_ENV_VALUE:
- /*
- * Although OLD_ENV_VALUE is not legal, we will
- * still recognize it, just in case it is an
- * old server that has VAR & VALUE mixed up...
- */
- /* FALL THROUGH */
-#else
- case NEW_ENV_VAR:
-#endif
- case ENV_USERVAR:
- if (ep) {
- *epc = 0;
- env_opt_add(ep);
- }
- ep = epc = &buf[i+1];
- break;
- case ENV_ESC:
- i++;
- /*FALL THROUGH*/
- default:
- if (epc)
- *epc++ = buf[i];
- break;
- }
- }
- if (ep) {
- *epc = 0;
- env_opt_add(ep);
- }
- env_opt_end(1);
- break;
-
- case TELQUAL_IS:
- case TELQUAL_INFO:
- /* Ignore for now. We shouldn't get it anyway. */
- break;
-
- default:
- break;
- }
-}
-
-#define OPT_REPLY_SIZE 256
-unsigned char *opt_reply;
-unsigned char *opt_replyp;
-unsigned char *opt_replyend;
-
- void
-env_opt_start()
-{
- if (opt_reply)
- opt_reply = (unsigned char *)realloc(opt_reply, OPT_REPLY_SIZE);
- else
- opt_reply = (unsigned char *)malloc(OPT_REPLY_SIZE);
- if (opt_reply == NULL) {
-/*@*/ printf("env_opt_start: malloc()/realloc() failed!!!\n");
- opt_reply = opt_replyp = opt_replyend = NULL;
- return;
- }
- opt_replyp = opt_reply;
- opt_replyend = opt_reply + OPT_REPLY_SIZE;
- *opt_replyp++ = IAC;
- *opt_replyp++ = SB;
- *opt_replyp++ = telopt_environ;
- *opt_replyp++ = TELQUAL_IS;
-}
-
- void
-env_opt_start_info()
-{
- env_opt_start();
- if (opt_replyp)
- opt_replyp[-1] = TELQUAL_INFO;
-}
-
- void
-env_opt_add(ep)
- register unsigned char *ep;
-{
- register unsigned char *vp, c;
-
- if (opt_reply == NULL) /*XXX*/
- return; /*XXX*/
-
- if (ep == NULL || *ep == '\0') {
- /* Send user defined variables first. */
- env_default(1, 0);
- while (ep = env_default(0, 0))
- env_opt_add(ep);
-
- /* Now add the list of well know variables. */
- env_default(1, 1);
- while (ep = env_default(0, 1))
- env_opt_add(ep);
- return;
- }
- vp = env_getvalue(ep);
- if (opt_replyp + (vp ? strlen((char *)vp) : 0) +
- strlen((char *)ep) + 6 > opt_replyend)
- {
- register int len;
- opt_replyend += OPT_REPLY_SIZE;
- len = opt_replyend - opt_reply;
- opt_reply = (unsigned char *)realloc(opt_reply, len);
- if (opt_reply == NULL) {
-/*@*/ printf("env_opt_add: realloc() failed!!!\n");
- opt_reply = opt_replyp = opt_replyend = NULL;
- return;
- }
- opt_replyp = opt_reply + len - (opt_replyend - opt_replyp);
- opt_replyend = opt_reply + len;
- }
- if (opt_welldefined(ep))
-#ifdef OLD_ENVIRON
- if (telopt_environ == TELOPT_OLD_ENVIRON)
- *opt_replyp++ = old_env_var;
- else
-#endif
- *opt_replyp++ = NEW_ENV_VAR;
- else
- *opt_replyp++ = ENV_USERVAR;
- for (;;) {
- while (c = *ep++) {
- switch(c&0xff) {
- case IAC:
- *opt_replyp++ = IAC;
- break;
- case NEW_ENV_VAR:
- case NEW_ENV_VALUE:
- case ENV_ESC:
- case ENV_USERVAR:
- *opt_replyp++ = ENV_ESC;
- break;
- }
- *opt_replyp++ = c;
- }
- if (ep = vp) {
-#ifdef OLD_ENVIRON
- if (telopt_environ == TELOPT_OLD_ENVIRON)
- *opt_replyp++ = old_env_value;
- else
-#endif
- *opt_replyp++ = NEW_ENV_VALUE;
- vp = NULL;
- } else
- break;
- }
-}
-
- int
-opt_welldefined(ep)
- char *ep;
-{
- if ((strcmp(ep, "USER") == 0) ||
- (strcmp(ep, "DISPLAY") == 0) ||
- (strcmp(ep, "PRINTER") == 0) ||
- (strcmp(ep, "SYSTEMTYPE") == 0) ||
- (strcmp(ep, "JOB") == 0) ||
- (strcmp(ep, "ACCT") == 0))
- return(1);
- return(0);
-}
- void
-env_opt_end(emptyok)
- register int emptyok;
-{
- register int len;
-
- len = opt_replyp - opt_reply + 2;
- if (emptyok || len > 6) {
- *opt_replyp++ = IAC;
- *opt_replyp++ = SE;
- if (NETROOM() > len) {
- ring_supply_data(&netoring, opt_reply, len);
- printsub('>', &opt_reply[2], len - 2);
- }
-/*@*/ else printf("slc_end_reply: not enough room\n");
- }
- if (opt_reply) {
- free(opt_reply);
- opt_reply = opt_replyp = opt_replyend = NULL;
- }
-}
-
-
-
- int
-telrcv()
-{
- register int c;
- register int scc;
- register unsigned char *sbp;
- int count;
- int returnValue = 0;
-
- scc = 0;
- count = 0;
- while (TTYROOM() > 2) {
- if (scc == 0) {
- if (count) {
- ring_consumed(&netiring, count);
- returnValue = 1;
- count = 0;
- }
- sbp = netiring.consume;
- scc = ring_full_consecutive(&netiring);
- if (scc == 0) {
- /* No more data coming in */
- break;
- }
- }
-
- c = *sbp++ & 0xff, scc--; count++;
-#ifdef ENCRYPTION
- if (decrypt_input)
- c = (*decrypt_input)(c);
-#endif /* ENCRYPTION */
-
- switch (telrcv_state) {
-
- case TS_CR:
- telrcv_state = TS_DATA;
- if (c == '\0') {
- break; /* Ignore \0 after CR */
- }
- else if ((c == '\n') && my_want_state_is_dont(TELOPT_ECHO) && !crmod) {
- TTYADD(c);
- break;
- }
- /* Else, fall through */
-
- case TS_DATA:
- if (c == IAC) {
- telrcv_state = TS_IAC;
- break;
- }
-# if defined(TN3270)
- if (In3270) {
- *Ifrontp++ = c;
- while (scc > 0) {
- c = *sbp++ & 0377, scc--; count++;
-#ifdef ENCRYPTION
- if (decrypt_input)
- c = (*decrypt_input)(c);
-#endif /* ENCRYPTION */
- if (c == IAC) {
- telrcv_state = TS_IAC;
- break;
- }
- *Ifrontp++ = c;
- }
- } else
-# endif /* defined(TN3270) */
- /*
- * The 'crmod' hack (see following) is needed
- * since we can't * set CRMOD on output only.
- * Machines like MULTICS like to send \r without
- * \n; since we must turn off CRMOD to get proper
- * input, the mapping is done here (sigh).
- */
- if ((c == '\r') && my_want_state_is_dont(TELOPT_BINARY)) {
- if (scc > 0) {
- c = *sbp&0xff;
-#ifdef ENCRYPTION
- if (decrypt_input)
- c = (*decrypt_input)(c);
-#endif /* ENCRYPTION */
- if (c == 0) {
- sbp++, scc--; count++;
- /* a "true" CR */
- TTYADD('\r');
- } else if (my_want_state_is_dont(TELOPT_ECHO) &&
- (c == '\n')) {
- sbp++, scc--; count++;
- TTYADD('\n');
- } else {
-#ifdef ENCRYPTION
- if (decrypt_input)
- (*decrypt_input)(-1);
-#endif /* ENCRYPTION */
-
- TTYADD('\r');
- if (crmod) {
- TTYADD('\n');
- }
- }
- } else {
- telrcv_state = TS_CR;
- TTYADD('\r');
- if (crmod) {
- TTYADD('\n');
- }
- }
- } else {
- TTYADD(c);
- }
- continue;
-
- case TS_IAC:
-process_iac:
- switch (c) {
-
- case WILL:
- telrcv_state = TS_WILL;
- continue;
-
- case WONT:
- telrcv_state = TS_WONT;
- continue;
-
- case DO:
- telrcv_state = TS_DO;
- continue;
-
- case DONT:
- telrcv_state = TS_DONT;
- continue;
-
- case DM:
- /*
- * We may have missed an urgent notification,
- * so make sure we flush whatever is in the
- * buffer currently.
- */
- printoption("RCVD", IAC, DM);
- SYNCHing = 1;
- (void) ttyflush(1);
- SYNCHing = stilloob();
- settimer(gotDM);
- break;
-
- case SB:
- SB_CLEAR();
- telrcv_state = TS_SB;
- continue;
-
-# if defined(TN3270)
- case EOR:
- if (In3270) {
- if (Ibackp == Ifrontp) {
- Ibackp = Ifrontp = Ibuf;
- ISend = 0; /* should have been! */
- } else {
- Ibackp += DataFromNetwork(Ibackp, Ifrontp-Ibackp, 1);
- ISend = 1;
- }
- }
- printoption("RCVD", IAC, EOR);
- break;
-# endif /* defined(TN3270) */
-
- case IAC:
-# if !defined(TN3270)
- TTYADD(IAC);
-# else /* !defined(TN3270) */
- if (In3270) {
- *Ifrontp++ = IAC;
- } else {
- TTYADD(IAC);
- }
-# endif /* !defined(TN3270) */
- break;
-
- case NOP:
- case GA:
- default:
- printoption("RCVD", IAC, c);
- break;
- }
- telrcv_state = TS_DATA;
- continue;
-
- case TS_WILL:
- printoption("RCVD", WILL, c);
- willoption(c);
- SetIn3270();
- telrcv_state = TS_DATA;
- continue;
-
- case TS_WONT:
- printoption("RCVD", WONT, c);
- wontoption(c);
- SetIn3270();
- telrcv_state = TS_DATA;
- continue;
-
- case TS_DO:
- printoption("RCVD", DO, c);
- dooption(c);
- SetIn3270();
- if (c == TELOPT_NAWS) {
- sendnaws();
- } else if (c == TELOPT_LFLOW) {
- localflow = 1;
- setcommandmode();
- setconnmode(0);
- }
- telrcv_state = TS_DATA;
- continue;
-
- case TS_DONT:
- printoption("RCVD", DONT, c);
- dontoption(c);
- flushline = 1;
- setconnmode(0); /* set new tty mode (maybe) */
- SetIn3270();
- telrcv_state = TS_DATA;
- continue;
-
- case TS_SB:
- if (c == IAC) {
- telrcv_state = TS_SE;
- } else {
- SB_ACCUM(c);
- }
- continue;
-
- case TS_SE:
- if (c != SE) {
- if (c != IAC) {
- /*
- * This is an error. We only expect to get
- * "IAC IAC" or "IAC SE". Several things may
- * have happend. An IAC was not doubled, the
- * IAC SE was left off, or another option got
- * inserted into the suboption are all possibilities.
- * If we assume that the IAC was not doubled,
- * and really the IAC SE was left off, we could
- * get into an infinate loop here. So, instead,
- * we terminate the suboption, and process the
- * partial suboption if we can.
- */
- SB_ACCUM(IAC);
- SB_ACCUM(c);
- subpointer -= 2;
- SB_TERM();
-
- printoption("In SUBOPTION processing, RCVD", IAC, c);
- suboption(); /* handle sub-option */
- SetIn3270();
- telrcv_state = TS_IAC;
- goto process_iac;
- }
- SB_ACCUM(c);
- telrcv_state = TS_SB;
- } else {
- SB_ACCUM(IAC);
- SB_ACCUM(SE);
- subpointer -= 2;
- SB_TERM();
- suboption(); /* handle sub-option */
- SetIn3270();
- telrcv_state = TS_DATA;
- }
- }
- }
- if (count)
- ring_consumed(&netiring, count);
- return returnValue||count;
-}
-
-static int bol = 1, local = 0;
-
- int
-rlogin_susp()
-{
- if (local) {
- local = 0;
- bol = 1;
- command(0, "z\n", 2);
- return(1);
- }
- return(0);
-}
-
- static int
-telsnd()
-{
- int tcc;
- int count;
- int returnValue = 0;
- unsigned char *tbp;
-
- tcc = 0;
- count = 0;
- while (NETROOM() > 2) {
- register int sc;
- register int c;
-
- if (tcc == 0) {
- if (count) {
- ring_consumed(&ttyiring, count);
- returnValue = 1;
- count = 0;
- }
- tbp = ttyiring.consume;
- tcc = ring_full_consecutive(&ttyiring);
- if (tcc == 0) {
- break;
- }
- }
- c = *tbp++ & 0xff, sc = strip(c), tcc--; count++;
- if (rlogin != _POSIX_VDISABLE) {
- if (bol) {
- bol = 0;
- if (sc == rlogin) {
- local = 1;
- continue;
- }
- } else if (local) {
- local = 0;
- if (sc == '.' || c == termEofChar) {
- bol = 1;
- command(0, "close\n", 6);
- continue;
- }
- if (sc == termSuspChar) {
- bol = 1;
- command(0, "z\n", 2);
- continue;
- }
- if (sc == escape) {
- command(0, (char *)tbp, tcc);
- bol = 1;
- count += tcc;
- tcc = 0;
- flushline = 1;
- break;
- }
- if (sc != rlogin) {
- ++tcc;
- --tbp;
- --count;
- c = sc = rlogin;
- }
- }
- if ((sc == '\n') || (sc == '\r'))
- bol = 1;
- } else if (sc == escape) {
- /*
- * Double escape is a pass through of a single escape character.
- */
- if (tcc && strip(*tbp) == escape) {
- tbp++;
- tcc--;
- count++;
- bol = 0;
- } else {
- command(0, (char *)tbp, tcc);
- bol = 1;
- count += tcc;
- tcc = 0;
- flushline = 1;
- break;
- }
- } else
- bol = 0;
-#ifdef KLUDGELINEMODE
- if (kludgelinemode && (globalmode&MODE_EDIT) && (sc == echoc)) {
- if (tcc > 0 && strip(*tbp) == echoc) {
- tcc--; tbp++; count++;
- } else {
- dontlecho = !dontlecho;
- settimer(echotoggle);
- setconnmode(0);
- flushline = 1;
- break;
- }
- }
-#endif
- if (MODE_LOCAL_CHARS(globalmode)) {
- if (TerminalSpecialChars(sc) == 0) {
- bol = 1;
- break;
- }
- }
- if (my_want_state_is_wont(TELOPT_BINARY)) {
- switch (c) {
- case '\n':
- /*
- * If we are in CRMOD mode (\r ==> \n)
- * on our local machine, then probably
- * a newline (unix) is CRLF (TELNET).
- */
- if (MODE_LOCAL_CHARS(globalmode)) {
- NETADD('\r');
- }
- NETADD('\n');
- bol = flushline = 1;
- break;
- case '\r':
- if (!crlf) {
- NET2ADD('\r', '\0');
- } else {
- NET2ADD('\r', '\n');
- }
- bol = flushline = 1;
- break;
- case IAC:
- NET2ADD(IAC, IAC);
- break;
- default:
- NETADD(c);
- break;
- }
- } else if (c == IAC) {
- NET2ADD(IAC, IAC);
- } else {
- NETADD(c);
- }
- }
- if (count)
- ring_consumed(&ttyiring, count);
- return returnValue||count; /* Non-zero if we did anything */
-}
-
-/*
- * Scheduler()
- *
- * Try to do something.
- *
- * If we do something useful, return 1; else return 0.
- *
- */
-
-
- int
-Scheduler(block)
- int block; /* should we block in the select ? */
-{
- /* One wants to be a bit careful about setting returnValue
- * to one, since a one implies we did some useful work,
- * and therefore probably won't be called to block next
- * time (TN3270 mode only).
- */
- int returnValue;
- int netin, netout, netex, ttyin, ttyout;
-
- /* Decide which rings should be processed */
-
- netout = ring_full_count(&netoring) &&
- (flushline ||
- (my_want_state_is_wont(TELOPT_LINEMODE)
-#ifdef KLUDGELINEMODE
- && (!kludgelinemode || my_want_state_is_do(TELOPT_SGA))
-#endif
- ) ||
- my_want_state_is_will(TELOPT_BINARY));
- ttyout = ring_full_count(&ttyoring);
-
-#if defined(TN3270)
- ttyin = ring_empty_count(&ttyiring) && (shell_active == 0);
-#else /* defined(TN3270) */
- ttyin = ring_empty_count(&ttyiring);
-#endif /* defined(TN3270) */
-
-#if defined(TN3270)
- netin = ring_empty_count(&netiring);
-# else /* !defined(TN3270) */
- netin = !ISend && ring_empty_count(&netiring);
-# endif /* !defined(TN3270) */
-
- netex = !SYNCHing;
-
- /* If we have seen a signal recently, reset things */
-# if defined(TN3270) && defined(unix)
- if (HaveInput) {
- HaveInput = 0;
- (void) signal(SIGIO, inputAvailable);
- }
-#endif /* defined(TN3270) && defined(unix) */
-
- /* Call to system code to process rings */
-
- returnValue = process_rings(netin, netout, netex, ttyin, ttyout, !block);
-
- /* Now, look at the input rings, looking for work to do. */
-
- if (ring_full_count(&ttyiring)) {
-# if defined(TN3270)
- if (In3270) {
- int c;
-
- c = DataFromTerminal(ttyiring.consume,
- ring_full_consecutive(&ttyiring));
- if (c) {
- returnValue = 1;
- ring_consumed(&ttyiring, c);
- }
- } else {
-# endif /* defined(TN3270) */
- returnValue |= telsnd();
-# if defined(TN3270)
- }
-# endif /* defined(TN3270) */
- }
-
- if (ring_full_count(&netiring)) {
-# if !defined(TN3270)
- returnValue |= telrcv();
-# else /* !defined(TN3270) */
- returnValue = Push3270();
-# endif /* !defined(TN3270) */
- }
- return returnValue;
-}
-
-/*
- * Select from tty and network...
- */
- void
-telnet(user)
- char *user;
-{
- sys_telnet_init();
-
-#if defined(AUTHENTICATION) || defined(ENCRYPTION)
- {
- static char local_host[256] = { 0 };
-
- if (!local_host[0]) {
- gethostname(local_host, sizeof(local_host));
- local_host[sizeof(local_host)-1] = 0;
- }
- auth_encrypt_init(local_host, hostname, "TELNET", 0);
- auth_encrypt_user(user);
- }
-#endif /* defined(AUTHENTICATION) || defined(ENCRYPTION) */
-# if !defined(TN3270)
- if (telnetport) {
-#if defined(AUTHENTICATION)
- if (autologin)
- send_will(TELOPT_AUTHENTICATION, 1);
-#endif
-#ifdef ENCRYPTION
- send_do(TELOPT_ENCRYPT, 1);
- send_will(TELOPT_ENCRYPT, 1);
-#endif /* ENCRYPTION */
- send_do(TELOPT_SGA, 1);
- send_will(TELOPT_TTYPE, 1);
- send_will(TELOPT_NAWS, 1);
- send_will(TELOPT_TSPEED, 1);
- send_will(TELOPT_LFLOW, 1);
- send_will(TELOPT_LINEMODE, 1);
- send_will(TELOPT_NEW_ENVIRON, 1);
- send_do(TELOPT_STATUS, 1);
- if (env_getvalue((unsigned char *)"DISPLAY"))
- send_will(TELOPT_XDISPLOC, 1);
- if (eight)
- tel_enter_binary(eight);
- }
-# endif /* !defined(TN3270) */
-
-# if !defined(TN3270)
- for (;;) {
- int schedValue;
-
- while ((schedValue = Scheduler(0)) != 0) {
- if (schedValue == -1) {
- setcommandmode();
- return;
- }
- }
-
- if (Scheduler(1) == -1) {
- setcommandmode();
- return;
- }
- }
-# else /* !defined(TN3270) */
- for (;;) {
- int schedValue;
-
- while (!In3270 && !shell_active) {
- if (Scheduler(1) == -1) {
- setcommandmode();
- return;
- }
- }
-
- while ((schedValue = Scheduler(0)) != 0) {
- if (schedValue == -1) {
- setcommandmode();
- return;
- }
- }
- /* If there is data waiting to go out to terminal, don't
- * schedule any more data for the terminal.
- */
- if (ring_full_count(&ttyoring)) {
- schedValue = 1;
- } else {
- if (shell_active) {
- if (shell_continue() == 0) {
- ConnectScreen();
- }
- } else if (In3270) {
- schedValue = DoTerminalOutput();
- }
- }
- if (schedValue && (shell_active == 0)) {
- if (Scheduler(1) == -1) {
- setcommandmode();
- return;
- }
- }
- }
-# endif /* !defined(TN3270) */
-}
-
-#if 0 /* XXX - this not being in is a bug */
-/*
- * nextitem()
- *
- * Return the address of the next "item" in the TELNET data
- * stream. This will be the address of the next character if
- * the current address is a user data character, or it will
- * be the address of the character following the TELNET command
- * if the current address is a TELNET IAC ("I Am a Command")
- * character.
- */
-
- static char *
-nextitem(current)
- char *current;
-{
- if ((*current&0xff) != IAC) {
- return current+1;
- }
- switch (*(current+1)&0xff) {
- case DO:
- case DONT:
- case WILL:
- case WONT:
- return current+3;
- case SB: /* loop forever looking for the SE */
- {
- register char *look = current+2;
-
- for (;;) {
- if ((*look++&0xff) == IAC) {
- if ((*look++&0xff) == SE) {
- return look;
- }
- }
- }
- }
- default:
- return current+2;
- }
-}
-#endif /* 0 */
-
-/*
- * netclear()
- *
- * We are about to do a TELNET SYNCH operation. Clear
- * the path to the network.
- *
- * Things are a bit tricky since we may have sent the first
- * byte or so of a previous TELNET command into the network.
- * So, we have to scan the network buffer from the beginning
- * until we are up to where we want to be.
- *
- * A side effect of what we do, just to keep things
- * simple, is to clear the urgent data pointer. The principal
- * caller should be setting the urgent data pointer AFTER calling
- * us in any case.
- */
-
- static void
-netclear()
-{
-#if 0 /* XXX */
- register char *thisitem, *next;
- char *good;
-#define wewant(p) ((nfrontp > p) && ((*p&0xff) == IAC) && \
- ((*(p+1)&0xff) != EC) && ((*(p+1)&0xff) != EL))
-
- thisitem = netobuf;
-
- while ((next = nextitem(thisitem)) <= netobuf.send) {
- thisitem = next;
- }
-
- /* Now, thisitem is first before/at boundary. */
-
- good = netobuf; /* where the good bytes go */
-
- while (netoring.add > thisitem) {
- if (wewant(thisitem)) {
- int length;
-
- next = thisitem;
- do {
- next = nextitem(next);
- } while (wewant(next) && (nfrontp > next));
- length = next-thisitem;
- memmove(good, thisitem, length);
- good += length;
- thisitem = next;
- } else {
- thisitem = nextitem(thisitem);
- }
- }
-
-#endif /* 0 */
-}
-
-/*
- * These routines add various telnet commands to the data stream.
- */
-
- static void
-doflush()
-{
- NET2ADD(IAC, DO);
- NETADD(TELOPT_TM);
- flushline = 1;
- flushout = 1;
- (void) ttyflush(1); /* Flush/drop output */
- /* do printoption AFTER flush, otherwise the output gets tossed... */
- printoption("SENT", DO, TELOPT_TM);
-}
-
- void
-xmitAO()
-{
- NET2ADD(IAC, AO);
- printoption("SENT", IAC, AO);
- if (autoflush) {
- doflush();
- }
-}
-
-
- void
-xmitEL()
-{
- NET2ADD(IAC, EL);
- printoption("SENT", IAC, EL);
-}
-
- void
-xmitEC()
-{
- NET2ADD(IAC, EC);
- printoption("SENT", IAC, EC);
-}
-
-
- int
-dosynch()
-{
- netclear(); /* clear the path to the network */
- NETADD(IAC);
- setneturg();
- NETADD(DM);
- printoption("SENT", IAC, DM);
- return 1;
-}
-
-int want_status_response = 0;
-
- int
-get_status()
-{
- unsigned char tmp[16];
- register unsigned char *cp;
-
- if (my_want_state_is_dont(TELOPT_STATUS)) {
- printf("Remote side does not support STATUS option\n");
- return 0;
- }
- cp = tmp;
-
- *cp++ = IAC;
- *cp++ = SB;
- *cp++ = TELOPT_STATUS;
- *cp++ = TELQUAL_SEND;
- *cp++ = IAC;
- *cp++ = SE;
- if (NETROOM() >= cp - tmp) {
- ring_supply_data(&netoring, tmp, cp-tmp);
- printsub('>', tmp+2, cp - tmp - 2);
- }
- ++want_status_response;
- return 1;
-}
-
- void
-intp()
-{
- NET2ADD(IAC, IP);
- printoption("SENT", IAC, IP);
- flushline = 1;
- if (autoflush) {
- doflush();
- }
- if (autosynch) {
- dosynch();
- }
-}
-
- void
-sendbrk()
-{
- NET2ADD(IAC, BREAK);
- printoption("SENT", IAC, BREAK);
- flushline = 1;
- if (autoflush) {
- doflush();
- }
- if (autosynch) {
- dosynch();
- }
-}
-
- void
-sendabort()
-{
- NET2ADD(IAC, ABORT);
- printoption("SENT", IAC, ABORT);
- flushline = 1;
- if (autoflush) {
- doflush();
- }
- if (autosynch) {
- dosynch();
- }
-}
-
- void
-sendsusp()
-{
- NET2ADD(IAC, SUSP);
- printoption("SENT", IAC, SUSP);
- flushline = 1;
- if (autoflush) {
- doflush();
- }
- if (autosynch) {
- dosynch();
- }
-}
-
- void
-sendeof()
-{
- NET2ADD(IAC, xEOF);
- printoption("SENT", IAC, xEOF);
-}
-
- void
-sendayt()
-{
- NET2ADD(IAC, AYT);
- printoption("SENT", IAC, AYT);
-}
-
-/*
- * Send a window size update to the remote system.
- */
-
- void
-sendnaws()
-{
- long rows, cols;
- unsigned char tmp[16];
- register unsigned char *cp;
-
- if (my_state_is_wont(TELOPT_NAWS))
- return;
-
-#define PUTSHORT(cp, x) { if ((*cp++ = ((x)>>8)&0xff) == IAC) *cp++ = IAC; \
- if ((*cp++ = ((x))&0xff) == IAC) *cp++ = IAC; }
-
- if (TerminalWindowSize(&rows, &cols) == 0) { /* Failed */
- return;
- }
-
- cp = tmp;
-
- *cp++ = IAC;
- *cp++ = SB;
- *cp++ = TELOPT_NAWS;
- PUTSHORT(cp, cols);
- PUTSHORT(cp, rows);
- *cp++ = IAC;
- *cp++ = SE;
- if (NETROOM() >= cp - tmp) {
- ring_supply_data(&netoring, tmp, cp-tmp);
- printsub('>', tmp+2, cp - tmp - 2);
- }
-}
-
- void
-tel_enter_binary(rw)
- int rw;
-{
- if (rw&1)
- send_do(TELOPT_BINARY, 1);
- if (rw&2)
- send_will(TELOPT_BINARY, 1);
-}
-
- void
-tel_leave_binary(rw)
- int rw;
-{
- if (rw&1)
- send_dont(TELOPT_BINARY, 1);
- if (rw&2)
- send_wont(TELOPT_BINARY, 1);
-}
diff --git a/secure/usr.bin/telnet/terminal.c b/secure/usr.bin/telnet/terminal.c
deleted file mode 100644
index b5ceeda2b525..000000000000
--- a/secure/usr.bin/telnet/terminal.c
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- * Copyright (c) 1988, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)terminal.c 8.2 (Berkeley) 2/16/95";
-#endif /* not lint */
-
-#include <arpa/telnet.h>
-#include <sys/types.h>
-
-#include "ring.h"
-
-#include "externs.h"
-#include "types.h"
-
-Ring ttyoring, ttyiring;
-unsigned char ttyobuf[2*BUFSIZ], ttyibuf[BUFSIZ];
-
-int termdata; /* Debugging flag */
-
-#ifdef USE_TERMIO
-# ifndef VDISCARD
-cc_t termFlushChar;
-# endif
-# ifndef VLNEXT
-cc_t termLiteralNextChar;
-# endif
-# ifndef VSUSP
-cc_t termSuspChar;
-# endif
-# ifndef VWERASE
-cc_t termWerasChar;
-# endif
-# ifndef VREPRINT
-cc_t termRprntChar;
-# endif
-# ifndef VSTART
-cc_t termStartChar;
-# endif
-# ifndef VSTOP
-cc_t termStopChar;
-# endif
-# ifndef VEOL
-cc_t termForw1Char;
-# endif
-# ifndef VEOL2
-cc_t termForw2Char;
-# endif
-# ifndef VSTATUS
-cc_t termAytChar;
-# endif
-#else
-cc_t termForw2Char;
-cc_t termAytChar;
-#endif
-
-/*
- * initialize the terminal data structures.
- */
-
- void
-init_terminal()
-{
- if (ring_init(&ttyoring, ttyobuf, sizeof ttyobuf) != 1) {
- exit(1);
- }
- if (ring_init(&ttyiring, ttyibuf, sizeof ttyibuf) != 1) {
- exit(1);
- }
- autoflush = TerminalAutoFlush();
-}
-
-
-/*
- * Send as much data as possible to the terminal.
- *
- * Return value:
- * -1: No useful work done, data waiting to go out.
- * 0: No data was waiting, so nothing was done.
- * 1: All waiting data was written out.
- * n: All data - n was written out.
- */
-
-
- int
-ttyflush(drop)
- int drop;
-{
- register int n, n0, n1;
-
- n0 = ring_full_count(&ttyoring);
- if ((n1 = n = ring_full_consecutive(&ttyoring)) > 0) {
- if (drop) {
- TerminalFlushOutput();
- /* we leave 'n' alone! */
- } else {
- n = TerminalWrite(ttyoring.consume, n);
- }
- }
- if (n > 0) {
- if (termdata && n) {
- Dump('>', ttyoring.consume, n);
- }
- /*
- * If we wrote everything, and the full count is
- * larger than what we wrote, then write the
- * rest of the buffer.
- */
- if (n1 == n && n0 > n) {
- n1 = n0 - n;
- if (!drop)
- n1 = TerminalWrite(ttyoring.bottom, n1);
- if (n1 > 0)
- n += n1;
- }
- ring_consumed(&ttyoring, n);
- }
- if (n < 0)
- return -1;
- if (n == n0) {
- if (n0)
- return -1;
- return 0;
- }
- return n0 - n + 1;
-}
-
-
-/*
- * These routines decides on what the mode should be (based on the values
- * of various global variables).
- */
-
-
- int
-getconnmode()
-{
- extern int linemode;
- int mode = 0;
-#ifdef KLUDGELINEMODE
- extern int kludgelinemode;
-#endif
-
- if (In3270)
- return(MODE_FLOW);
-
- if (my_want_state_is_dont(TELOPT_ECHO))
- mode |= MODE_ECHO;
-
- if (localflow)
- mode |= MODE_FLOW;
-
- if (my_want_state_is_will(TELOPT_BINARY))
- mode |= MODE_INBIN;
-
- if (his_want_state_is_will(TELOPT_BINARY))
- mode |= MODE_OUTBIN;
-
-#ifdef KLUDGELINEMODE
- if (kludgelinemode) {
- if (my_want_state_is_dont(TELOPT_SGA)) {
- mode |= (MODE_TRAPSIG|MODE_EDIT);
- if (dontlecho && (clocks.echotoggle > clocks.modenegotiated)) {
- mode &= ~MODE_ECHO;
- }
- }
- return(mode);
- }
-#endif
- if (my_want_state_is_will(TELOPT_LINEMODE))
- mode |= linemode;
- return(mode);
-}
-
- void
-setconnmode(force)
- int force;
-{
-#ifdef ENCRYPTION
- static int enc_passwd = 0;
-#endif /* ENCRYPTION */
- register int newmode;
-
- newmode = getconnmode()|(force?MODE_FORCE:0);
-
- TerminalNewMode(newmode);
-
-#ifdef ENCRYPTION
- if ((newmode & (MODE_ECHO|MODE_EDIT)) == MODE_EDIT) {
- if (my_want_state_is_will(TELOPT_ENCRYPT)
- && (enc_passwd == 0) && !encrypt_output) {
- encrypt_request_start(0, 0);
- enc_passwd = 1;
- }
- } else {
- if (enc_passwd) {
- encrypt_request_end();
- enc_passwd = 0;
- }
- }
-#endif /* ENCRYPTION */
-
-}
-
-
- void
-setcommandmode()
-{
- TerminalNewMode(-1);
-}
diff --git a/secure/usr.bin/telnet/tn3270.c b/secure/usr.bin/telnet/tn3270.c
deleted file mode 100644
index a75cd1ecb5a9..000000000000
--- a/secure/usr.bin/telnet/tn3270.c
+++ /dev/null
@@ -1,411 +0,0 @@
-/*
- * Copyright (c) 1988, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)tn3270.c 8.2 (Berkeley) 5/30/95";
-#endif /* not lint */
-
-#include <sys/types.h>
-#include <arpa/telnet.h>
-
-#include "general.h"
-
-#include "defines.h"
-#include "ring.h"
-#include "externs.h"
-#include "fdset.h"
-
-#if defined(TN3270)
-
-#include "../ctlr/screen.h"
-#include "../general/globals.h"
-
-#include "../sys_curses/telextrn.h"
-#include "../ctlr/externs.h"
-
-#if defined(unix)
-int
- HaveInput, /* There is input available to scan */
- cursesdata, /* Do we dump curses data? */
- sigiocount; /* Number of times we got a SIGIO */
-
-char tline[200];
-char *transcom = 0; /* transparent mode command (default: none) */
-#endif /* defined(unix) */
-
-char Ibuf[8*BUFSIZ], *Ifrontp, *Ibackp;
-
-static char sb_terminal[] = { IAC, SB,
- TELOPT_TTYPE, TELQUAL_IS,
- 'I', 'B', 'M', '-', '3', '2', '7', '8', '-', '2',
- IAC, SE };
-#define SBTERMMODEL 13
-
-static int
- Sent3270TerminalType; /* Have we said we are a 3270? */
-
-#endif /* defined(TN3270) */
-
-
- void
-init_3270()
-{
-#if defined(TN3270)
-#if defined(unix)
- HaveInput = 0;
- sigiocount = 0;
-#endif /* defined(unix) */
- Sent3270TerminalType = 0;
- Ifrontp = Ibackp = Ibuf;
- init_ctlr(); /* Initialize some things */
- init_keyboard();
- init_screen();
- init_system();
-#endif /* defined(TN3270) */
-}
-
-
-#if defined(TN3270)
-
-/*
- * DataToNetwork - queue up some data to go to network. If "done" is set,
- * then when last byte is queued, we add on an IAC EOR sequence (so,
- * don't call us with "done" until you want that done...)
- *
- * We actually do send all the data to the network buffer, since our
- * only client needs for us to do that.
- */
-
- int
-DataToNetwork(buffer, count, done)
- register char *buffer; /* where the data is */
- register int count; /* how much to send */
- int done; /* is this the last of a logical block */
-{
- register int loop, c;
- int origCount;
-
- origCount = count;
-
- while (count) {
- /* If not enough room for EORs, IACs, etc., wait */
- if (NETROOM() < 6) {
- fd_set o;
-
- FD_ZERO(&o);
- netflush();
- while (NETROOM() < 6) {
- FD_SET(net, &o);
- (void) select(net+1, (fd_set *) 0, &o, (fd_set *) 0,
- (struct timeval *) 0);
- netflush();
- }
- }
- c = ring_empty_count(&netoring);
- if (c > count) {
- c = count;
- }
- loop = c;
- while (loop) {
- if (((unsigned char)*buffer) == IAC) {
- break;
- }
- buffer++;
- loop--;
- }
- if ((c = c-loop)) {
- ring_supply_data(&netoring, buffer-c, c);
- count -= c;
- }
- if (loop) {
- NET2ADD(IAC, IAC);
- count--;
- buffer++;
- }
- }
-
- if (done) {
- NET2ADD(IAC, EOR);
- netflush(); /* try to move along as quickly as ... */
- }
- return(origCount - count);
-}
-
-
-#if defined(unix)
- void
-inputAvailable(signo)
- int signo;
-{
- HaveInput = 1;
- sigiocount++;
-}
-#endif /* defined(unix) */
-
- void
-outputPurge()
-{
- (void) ttyflush(1);
-}
-
-
-/*
- * The following routines are places where the various tn3270
- * routines make calls into telnet.c.
- */
-
-/*
- * DataToTerminal - queue up some data to go to terminal.
- *
- * Note: there are people who call us and depend on our processing
- * *all* the data at one time (thus the select).
- */
-
- int
-DataToTerminal(buffer, count)
- register char *buffer; /* where the data is */
- register int count; /* how much to send */
-{
- register int c;
- int origCount;
-
- origCount = count;
-
- while (count) {
- if (TTYROOM() == 0) {
-#if defined(unix)
- fd_set o;
-
- FD_ZERO(&o);
-#endif /* defined(unix) */
- (void) ttyflush(0);
- while (TTYROOM() == 0) {
-#if defined(unix)
- FD_SET(tout, &o);
- (void) select(tout+1, (fd_set *) 0, &o, (fd_set *) 0,
- (struct timeval *) 0);
-#endif /* defined(unix) */
- (void) ttyflush(0);
- }
- }
- c = TTYROOM();
- if (c > count) {
- c = count;
- }
- ring_supply_data(&ttyoring, buffer, c);
- count -= c;
- buffer += c;
- }
- return(origCount);
-}
-
-
-/*
- * Push3270 - Try to send data along the 3270 output (to screen) direction.
- */
-
- int
-Push3270()
-{
- int save = ring_full_count(&netiring);
-
- if (save) {
- if (Ifrontp+save > Ibuf+sizeof Ibuf) {
- if (Ibackp != Ibuf) {
- memmove(Ibuf, Ibackp, Ifrontp-Ibackp);
- Ifrontp -= (Ibackp-Ibuf);
- Ibackp = Ibuf;
- }
- }
- if (Ifrontp+save < Ibuf+sizeof Ibuf) {
- (void)telrcv();
- }
- }
- return save != ring_full_count(&netiring);
-}
-
-
-/*
- * Finish3270 - get the last dregs of 3270 data out to the terminal
- * before quitting.
- */
-
- void
-Finish3270()
-{
- while (Push3270() || !DoTerminalOutput()) {
-#if defined(unix)
- HaveInput = 0;
-#endif /* defined(unix) */
- ;
- }
-}
-
-
-/* StringToTerminal - output a null terminated string to the terminal */
-
- void
-StringToTerminal(s)
- char *s;
-{
- int count;
-
- count = strlen(s);
- if (count) {
- (void) DataToTerminal(s, count); /* we know it always goes... */
- }
-}
-
-
-#if ((!defined(NOT43)) || defined(PUTCHAR))
-/* _putchar - output a single character to the terminal. This name is so that
- * curses(3x) can call us to send out data.
- */
-
- void
-_putchar(c)
- char c;
-{
-#if defined(sun) /* SunOS 4.0 bug */
- c &= 0x7f;
-#endif /* defined(sun) */
- if (cursesdata) {
- Dump('>', &c, 1);
- }
- if (!TTYROOM()) {
- (void) DataToTerminal(&c, 1);
- } else {
- TTYADD(c);
- }
-}
-#endif /* ((!defined(NOT43)) || defined(PUTCHAR)) */
-
- void
-SetIn3270()
-{
- if (Sent3270TerminalType && my_want_state_is_will(TELOPT_BINARY)
- && my_want_state_is_do(TELOPT_BINARY) && !donebinarytoggle) {
- if (!In3270) {
- In3270 = 1;
- Init3270(); /* Initialize 3270 functions */
- /* initialize terminal key mapping */
- InitTerminal(); /* Start terminal going */
- setconnmode(0);
- }
- } else {
- if (In3270) {
- StopScreen(1);
- In3270 = 0;
- Stop3270(); /* Tell 3270 we aren't here anymore */
- setconnmode(0);
- }
- }
-}
-
-/*
- * tn3270_ttype()
- *
- * Send a response to a terminal type negotiation.
- *
- * Return '0' if no more responses to send; '1' if a response sent.
- */
-
- int
-tn3270_ttype()
-{
- /*
- * Try to send a 3270 type terminal name. Decide which one based
- * on the format of our screen, and (in the future) color
- * capaiblities.
- */
- InitTerminal(); /* Sets MaxNumberColumns, MaxNumberLines */
- if ((MaxNumberLines >= 24) && (MaxNumberColumns >= 80)) {
- Sent3270TerminalType = 1;
- if ((MaxNumberLines >= 27) && (MaxNumberColumns >= 132)) {
- MaxNumberLines = 27;
- MaxNumberColumns = 132;
- sb_terminal[SBTERMMODEL] = '5';
- } else if (MaxNumberLines >= 43) {
- MaxNumberLines = 43;
- MaxNumberColumns = 80;
- sb_terminal[SBTERMMODEL] = '4';
- } else if (MaxNumberLines >= 32) {
- MaxNumberLines = 32;
- MaxNumberColumns = 80;
- sb_terminal[SBTERMMODEL] = '3';
- } else {
- MaxNumberLines = 24;
- MaxNumberColumns = 80;
- sb_terminal[SBTERMMODEL] = '2';
- }
- NumberLines = 24; /* before we start out... */
- NumberColumns = 80;
- ScreenSize = NumberLines*NumberColumns;
- if ((MaxNumberLines*MaxNumberColumns) > MAXSCREENSIZE) {
- ExitString("Programming error: MAXSCREENSIZE too small.\n",
- 1);
- /*NOTREACHED*/
- }
- printsub('>', sb_terminal+2, sizeof sb_terminal-2);
- ring_supply_data(&netoring, sb_terminal, sizeof sb_terminal);
- return 1;
- } else {
- return 0;
- }
-}
-
-#if defined(unix)
- int
-settranscom(argc, argv)
- int argc;
- char *argv[];
-{
- int i;
-
- if (argc == 1 && transcom) {
- transcom = 0;
- }
- if (argc == 1) {
- return 1;
- }
- transcom = tline;
- (void) strcpy(transcom, argv[1]);
- for (i = 2; i < argc; ++i) {
- (void) strcat(transcom, " ");
- (void) strcat(transcom, argv[i]);
- }
- return 1;
-}
-#endif /* defined(unix) */
-
-#endif /* defined(TN3270) */
diff --git a/secure/usr.bin/telnet/types.h b/secure/usr.bin/telnet/types.h
deleted file mode 100644
index 191d311fd154..000000000000
--- a/secure/usr.bin/telnet/types.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (c) 1988, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)types.h 8.1 (Berkeley) 6/6/93
- */
-
-typedef struct {
- char *modedescriptions;
- char modetype;
-} Modelist;
-
-extern Modelist modelist[];
-
-typedef struct {
- int
- system, /* what the current time is */
- echotoggle, /* last time user entered echo character */
- modenegotiated, /* last time operating mode negotiated */
- didnetreceive, /* last time we read data from network */
- gotDM; /* when did we last see a data mark */
-} Clocks;
-
-extern Clocks clocks;
diff --git a/secure/usr.bin/telnet/utilities.c b/secure/usr.bin/telnet/utilities.c
deleted file mode 100644
index 06d08a45120c..000000000000
--- a/secure/usr.bin/telnet/utilities.c
+++ /dev/null
@@ -1,939 +0,0 @@
-/*
- * Copyright (c) 1988, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)utilities.c 8.3 (Berkeley) 5/30/95";
-#endif /* not lint */
-
-#define TELOPTS
-#define TELCMDS
-#define SLC_NAMES
-#include <arpa/telnet.h>
-#include <sys/types.h>
-#include <sys/time.h>
-
-#include <ctype.h>
-
-#include "general.h"
-
-#include "fdset.h"
-
-#include "ring.h"
-
-#include "defines.h"
-
-#include "externs.h"
-
-FILE *NetTrace = 0; /* Not in bss, since needs to stay */
-int prettydump;
-
-/*
- * upcase()
- *
- * Upcase (in place) the argument.
- */
-
- void
-upcase(argument)
- register char *argument;
-{
- register int c;
-
- while ((c = *argument) != 0) {
- if (islower(c)) {
- *argument = toupper(c);
- }
- argument++;
- }
-}
-
-/*
- * SetSockOpt()
- *
- * Compensate for differences in 4.2 and 4.3 systems.
- */
-
- int
-SetSockOpt(fd, level, option, yesno)
- int fd, level, option, yesno;
-{
-#ifndef NOT43
- return setsockopt(fd, level, option,
- (char *)&yesno, sizeof yesno);
-#else /* NOT43 */
- if (yesno == 0) { /* Can't do that in 4.2! */
- fprintf(stderr, "Error: attempt to turn off an option 0x%x.\n",
- option);
- return -1;
- }
- return setsockopt(fd, level, option, 0, 0);
-#endif /* NOT43 */
-}
-
-/*
- * The following are routines used to print out debugging information.
- */
-
-unsigned char NetTraceFile[256] = "(standard output)";
-
- void
-SetNetTrace(file)
- register char *file;
-{
- if (NetTrace && NetTrace != stdout)
- fclose(NetTrace);
- if (file && (strcmp(file, "-") != 0)) {
- NetTrace = fopen(file, "w");
- if (NetTrace) {
- strcpy((char *)NetTraceFile, file);
- return;
- }
- fprintf(stderr, "Cannot open %s.\n", file);
- }
- NetTrace = stdout;
- strcpy((char *)NetTraceFile, "(standard output)");
-}
-
- void
-Dump(direction, buffer, length)
- char direction;
- unsigned char *buffer;
- int length;
-{
-# define BYTES_PER_LINE 32
-# define min(x,y) ((x<y)? x:y)
- unsigned char *pThis;
- int offset;
- extern pettydump;
-
- offset = 0;
-
- while (length) {
- /* print one line */
- fprintf(NetTrace, "%c 0x%x\t", direction, offset);
- pThis = buffer;
- if (prettydump) {
- buffer = buffer + min(length, BYTES_PER_LINE/2);
- while (pThis < buffer) {
- fprintf(NetTrace, "%c%.2x",
- (((*pThis)&0xff) == 0xff) ? '*' : ' ',
- (*pThis)&0xff);
- pThis++;
- }
- length -= BYTES_PER_LINE/2;
- offset += BYTES_PER_LINE/2;
- } else {
- buffer = buffer + min(length, BYTES_PER_LINE);
- while (pThis < buffer) {
- fprintf(NetTrace, "%.2x", (*pThis)&0xff);
- pThis++;
- }
- length -= BYTES_PER_LINE;
- offset += BYTES_PER_LINE;
- }
- if (NetTrace == stdout) {
- fprintf(NetTrace, "\r\n");
- } else {
- fprintf(NetTrace, "\n");
- }
- if (length < 0) {
- fflush(NetTrace);
- return;
- }
- /* find next unique line */
- }
- fflush(NetTrace);
-}
-
-
- void
-printoption(direction, cmd, option)
- char *direction;
- int cmd, option;
-{
- if (!showoptions)
- return;
- if (cmd == IAC) {
- if (TELCMD_OK(option))
- fprintf(NetTrace, "%s IAC %s", direction, TELCMD(option));
- else
- fprintf(NetTrace, "%s IAC %d", direction, option);
- } else {
- register char *fmt;
- fmt = (cmd == WILL) ? "WILL" : (cmd == WONT) ? "WONT" :
- (cmd == DO) ? "DO" : (cmd == DONT) ? "DONT" : 0;
- if (fmt) {
- fprintf(NetTrace, "%s %s ", direction, fmt);
- if (TELOPT_OK(option))
- fprintf(NetTrace, "%s", TELOPT(option));
- else if (option == TELOPT_EXOPL)
- fprintf(NetTrace, "EXOPL");
- else
- fprintf(NetTrace, "%d", option);
- } else
- fprintf(NetTrace, "%s %d %d", direction, cmd, option);
- }
- if (NetTrace == stdout) {
- fprintf(NetTrace, "\r\n");
- fflush(NetTrace);
- } else {
- fprintf(NetTrace, "\n");
- }
- return;
-}
-
- void
-optionstatus()
-{
- register int i;
- extern char will_wont_resp[], do_dont_resp[];
-
- for (i = 0; i < 256; i++) {
- if (do_dont_resp[i]) {
- if (TELOPT_OK(i))
- printf("resp DO_DONT %s: %d\n", TELOPT(i), do_dont_resp[i]);
- else if (TELCMD_OK(i))
- printf("resp DO_DONT %s: %d\n", TELCMD(i), do_dont_resp[i]);
- else
- printf("resp DO_DONT %d: %d\n", i,
- do_dont_resp[i]);
- if (my_want_state_is_do(i)) {
- if (TELOPT_OK(i))
- printf("want DO %s\n", TELOPT(i));
- else if (TELCMD_OK(i))
- printf("want DO %s\n", TELCMD(i));
- else
- printf("want DO %d\n", i);
- } else {
- if (TELOPT_OK(i))
- printf("want DONT %s\n", TELOPT(i));
- else if (TELCMD_OK(i))
- printf("want DONT %s\n", TELCMD(i));
- else
- printf("want DONT %d\n", i);
- }
- } else {
- if (my_state_is_do(i)) {
- if (TELOPT_OK(i))
- printf(" DO %s\n", TELOPT(i));
- else if (TELCMD_OK(i))
- printf(" DO %s\n", TELCMD(i));
- else
- printf(" DO %d\n", i);
- }
- }
- if (will_wont_resp[i]) {
- if (TELOPT_OK(i))
- printf("resp WILL_WONT %s: %d\n", TELOPT(i), will_wont_resp[i]);
- else if (TELCMD_OK(i))
- printf("resp WILL_WONT %s: %d\n", TELCMD(i), will_wont_resp[i]);
- else
- printf("resp WILL_WONT %d: %d\n",
- i, will_wont_resp[i]);
- if (my_want_state_is_will(i)) {
- if (TELOPT_OK(i))
- printf("want WILL %s\n", TELOPT(i));
- else if (TELCMD_OK(i))
- printf("want WILL %s\n", TELCMD(i));
- else
- printf("want WILL %d\n", i);
- } else {
- if (TELOPT_OK(i))
- printf("want WONT %s\n", TELOPT(i));
- else if (TELCMD_OK(i))
- printf("want WONT %s\n", TELCMD(i));
- else
- printf("want WONT %d\n", i);
- }
- } else {
- if (my_state_is_will(i)) {
- if (TELOPT_OK(i))
- printf(" WILL %s\n", TELOPT(i));
- else if (TELCMD_OK(i))
- printf(" WILL %s\n", TELCMD(i));
- else
- printf(" WILL %d\n", i);
- }
- }
- }
-
-}
-
- void
-printsub(direction, pointer, length)
- char direction; /* '<' or '>' */
- unsigned char *pointer; /* where suboption data sits */
- int length; /* length of suboption data */
-{
- register int i;
- char buf[512];
- extern int want_status_response;
-
- if (showoptions || direction == 0 ||
- (want_status_response && (pointer[0] == TELOPT_STATUS))) {
- if (direction) {
- fprintf(NetTrace, "%s IAC SB ",
- (direction == '<')? "RCVD":"SENT");
- if (length >= 3) {
- register int j;
-
- i = pointer[length-2];
- j = pointer[length-1];
-
- if (i != IAC || j != SE) {
- fprintf(NetTrace, "(terminated by ");
- if (TELOPT_OK(i))
- fprintf(NetTrace, "%s ", TELOPT(i));
- else if (TELCMD_OK(i))
- fprintf(NetTrace, "%s ", TELCMD(i));
- else
- fprintf(NetTrace, "%d ", i);
- if (TELOPT_OK(j))
- fprintf(NetTrace, "%s", TELOPT(j));
- else if (TELCMD_OK(j))
- fprintf(NetTrace, "%s", TELCMD(j));
- else
- fprintf(NetTrace, "%d", j);
- fprintf(NetTrace, ", not IAC SE!) ");
- }
- }
- length -= 2;
- }
- if (length < 1) {
- fprintf(NetTrace, "(Empty suboption??\?)");
- if (NetTrace == stdout)
- fflush(NetTrace);
- return;
- }
- switch (pointer[0]) {
- case TELOPT_TTYPE:
- fprintf(NetTrace, "TERMINAL-TYPE ");
- switch (pointer[1]) {
- case TELQUAL_IS:
- fprintf(NetTrace, "IS \"%.*s\"", length-2, (char *)pointer+2);
- break;
- case TELQUAL_SEND:
- fprintf(NetTrace, "SEND");
- break;
- default:
- fprintf(NetTrace,
- "- unknown qualifier %d (0x%x).",
- pointer[1], pointer[1]);
- }
- break;
- case TELOPT_TSPEED:
- fprintf(NetTrace, "TERMINAL-SPEED");
- if (length < 2) {
- fprintf(NetTrace, " (empty suboption??\?)");
- break;
- }
- switch (pointer[1]) {
- case TELQUAL_IS:
- fprintf(NetTrace, " IS ");
- fprintf(NetTrace, "%.*s", length-2, (char *)pointer+2);
- break;
- default:
- if (pointer[1] == 1)
- fprintf(NetTrace, " SEND");
- else
- fprintf(NetTrace, " %d (unknown)", pointer[1]);
- for (i = 2; i < length; i++)
- fprintf(NetTrace, " ?%d?", pointer[i]);
- break;
- }
- break;
-
- case TELOPT_LFLOW:
- fprintf(NetTrace, "TOGGLE-FLOW-CONTROL");
- if (length < 2) {
- fprintf(NetTrace, " (empty suboption??\?)");
- break;
- }
- switch (pointer[1]) {
- case LFLOW_OFF:
- fprintf(NetTrace, " OFF"); break;
- case LFLOW_ON:
- fprintf(NetTrace, " ON"); break;
- case LFLOW_RESTART_ANY:
- fprintf(NetTrace, " RESTART-ANY"); break;
- case LFLOW_RESTART_XON:
- fprintf(NetTrace, " RESTART-XON"); break;
- default:
- fprintf(NetTrace, " %d (unknown)", pointer[1]);
- }
- for (i = 2; i < length; i++)
- fprintf(NetTrace, " ?%d?", pointer[i]);
- break;
-
- case TELOPT_NAWS:
- fprintf(NetTrace, "NAWS");
- if (length < 2) {
- fprintf(NetTrace, " (empty suboption??\?)");
- break;
- }
- if (length == 2) {
- fprintf(NetTrace, " ?%d?", pointer[1]);
- break;
- }
- fprintf(NetTrace, " %d %d (%d)",
- pointer[1], pointer[2],
- (int)((((unsigned int)pointer[1])<<8)|((unsigned int)pointer[2])));
- if (length == 4) {
- fprintf(NetTrace, " ?%d?", pointer[3]);
- break;
- }
- fprintf(NetTrace, " %d %d (%d)",
- pointer[3], pointer[4],
- (int)((((unsigned int)pointer[3])<<8)|((unsigned int)pointer[4])));
- for (i = 5; i < length; i++)
- fprintf(NetTrace, " ?%d?", pointer[i]);
- break;
-
-#if defined(AUTHENTICATION)
- case TELOPT_AUTHENTICATION:
- fprintf(NetTrace, "AUTHENTICATION");
- if (length < 2) {
- fprintf(NetTrace, " (empty suboption??\?)");
- break;
- }
- switch (pointer[1]) {
- case TELQUAL_REPLY:
- case TELQUAL_IS:
- fprintf(NetTrace, " %s ", (pointer[1] == TELQUAL_IS) ?
- "IS" : "REPLY");
- if (AUTHTYPE_NAME_OK(pointer[2]))
- fprintf(NetTrace, "%s ", AUTHTYPE_NAME(pointer[2]));
- else
- fprintf(NetTrace, "%d ", pointer[2]);
- if (length < 3) {
- fprintf(NetTrace, "(partial suboption??\?)");
- break;
- }
- fprintf(NetTrace, "%s|%s",
- ((pointer[3] & AUTH_WHO_MASK) == AUTH_WHO_CLIENT) ?
- "CLIENT" : "SERVER",
- ((pointer[3] & AUTH_HOW_MASK) == AUTH_HOW_MUTUAL) ?
- "MUTUAL" : "ONE-WAY");
-
- auth_printsub(&pointer[1], length - 1, buf, sizeof(buf));
- fprintf(NetTrace, "%s", buf);
- break;
-
- case TELQUAL_SEND:
- i = 2;
- fprintf(NetTrace, " SEND ");
- while (i < length) {
- if (AUTHTYPE_NAME_OK(pointer[i]))
- fprintf(NetTrace, "%s ", AUTHTYPE_NAME(pointer[i]));
- else
- fprintf(NetTrace, "%d ", pointer[i]);
- if (++i >= length) {
- fprintf(NetTrace, "(partial suboption??\?)");
- break;
- }
- fprintf(NetTrace, "%s|%s ",
- ((pointer[i] & AUTH_WHO_MASK) == AUTH_WHO_CLIENT) ?
- "CLIENT" : "SERVER",
- ((pointer[i] & AUTH_HOW_MASK) == AUTH_HOW_MUTUAL) ?
- "MUTUAL" : "ONE-WAY");
- ++i;
- }
- break;
-
- case TELQUAL_NAME:
- i = 2;
- fprintf(NetTrace, " NAME \"");
- while (i < length)
- putc(pointer[i++], NetTrace);
- putc('"', NetTrace);
- break;
-
- default:
- for (i = 2; i < length; i++)
- fprintf(NetTrace, " ?%d?", pointer[i]);
- break;
- }
- break;
-#endif
-
-#ifdef ENCRYPTION
- case TELOPT_ENCRYPT:
- fprintf(NetTrace, "ENCRYPT");
- if (length < 2) {
- fprintf(NetTrace, " (empty suboption??\?)");
- break;
- }
- switch (pointer[1]) {
- case ENCRYPT_START:
- fprintf(NetTrace, " START");
- break;
-
- case ENCRYPT_END:
- fprintf(NetTrace, " END");
- break;
-
- case ENCRYPT_REQSTART:
- fprintf(NetTrace, " REQUEST-START");
- break;
-
- case ENCRYPT_REQEND:
- fprintf(NetTrace, " REQUEST-END");
- break;
-
- case ENCRYPT_IS:
- case ENCRYPT_REPLY:
- fprintf(NetTrace, " %s ", (pointer[1] == ENCRYPT_IS) ?
- "IS" : "REPLY");
- if (length < 3) {
- fprintf(NetTrace, " (partial suboption??\?)");
- break;
- }
- if (ENCTYPE_NAME_OK(pointer[2]))
- fprintf(NetTrace, "%s ", ENCTYPE_NAME(pointer[2]));
- else
- fprintf(NetTrace, " %d (unknown)", pointer[2]);
-
- encrypt_printsub(&pointer[1], length - 1, buf, sizeof(buf));
- fprintf(NetTrace, "%s", buf);
- break;
-
- case ENCRYPT_SUPPORT:
- i = 2;
- fprintf(NetTrace, " SUPPORT ");
- while (i < length) {
- if (ENCTYPE_NAME_OK(pointer[i]))
- fprintf(NetTrace, "%s ", ENCTYPE_NAME(pointer[i]));
- else
- fprintf(NetTrace, "%d ", pointer[i]);
- i++;
- }
- break;
-
- case ENCRYPT_ENC_KEYID:
- fprintf(NetTrace, " ENC_KEYID ");
- goto encommon;
-
- case ENCRYPT_DEC_KEYID:
- fprintf(NetTrace, " DEC_KEYID ");
- goto encommon;
-
- default:
- fprintf(NetTrace, " %d (unknown)", pointer[1]);
- encommon:
- for (i = 2; i < length; i++)
- fprintf(NetTrace, " %d", pointer[i]);
- break;
- }
- break;
-#endif /* ENCRYPTION */
-
- case TELOPT_LINEMODE:
- fprintf(NetTrace, "LINEMODE ");
- if (length < 2) {
- fprintf(NetTrace, " (empty suboption??\?)");
- break;
- }
- switch (pointer[1]) {
- case WILL:
- fprintf(NetTrace, "WILL ");
- goto common;
- case WONT:
- fprintf(NetTrace, "WONT ");
- goto common;
- case DO:
- fprintf(NetTrace, "DO ");
- goto common;
- case DONT:
- fprintf(NetTrace, "DONT ");
- common:
- if (length < 3) {
- fprintf(NetTrace, "(no option??\?)");
- break;
- }
- switch (pointer[2]) {
- case LM_FORWARDMASK:
- fprintf(NetTrace, "Forward Mask");
- for (i = 3; i < length; i++)
- fprintf(NetTrace, " %x", pointer[i]);
- break;
- default:
- fprintf(NetTrace, "%d (unknown)", pointer[2]);
- for (i = 3; i < length; i++)
- fprintf(NetTrace, " %d", pointer[i]);
- break;
- }
- break;
-
- case LM_SLC:
- fprintf(NetTrace, "SLC");
- for (i = 2; i < length - 2; i += 3) {
- if (SLC_NAME_OK(pointer[i+SLC_FUNC]))
- fprintf(NetTrace, " %s", SLC_NAME(pointer[i+SLC_FUNC]));
- else
- fprintf(NetTrace, " %d", pointer[i+SLC_FUNC]);
- switch (pointer[i+SLC_FLAGS]&SLC_LEVELBITS) {
- case SLC_NOSUPPORT:
- fprintf(NetTrace, " NOSUPPORT"); break;
- case SLC_CANTCHANGE:
- fprintf(NetTrace, " CANTCHANGE"); break;
- case SLC_VARIABLE:
- fprintf(NetTrace, " VARIABLE"); break;
- case SLC_DEFAULT:
- fprintf(NetTrace, " DEFAULT"); break;
- }
- fprintf(NetTrace, "%s%s%s",
- pointer[i+SLC_FLAGS]&SLC_ACK ? "|ACK" : "",
- pointer[i+SLC_FLAGS]&SLC_FLUSHIN ? "|FLUSHIN" : "",
- pointer[i+SLC_FLAGS]&SLC_FLUSHOUT ? "|FLUSHOUT" : "");
- if (pointer[i+SLC_FLAGS]& ~(SLC_ACK|SLC_FLUSHIN|
- SLC_FLUSHOUT| SLC_LEVELBITS))
- fprintf(NetTrace, "(0x%x)", pointer[i+SLC_FLAGS]);
- fprintf(NetTrace, " %d;", pointer[i+SLC_VALUE]);
- if ((pointer[i+SLC_VALUE] == IAC) &&
- (pointer[i+SLC_VALUE+1] == IAC))
- i++;
- }
- for (; i < length; i++)
- fprintf(NetTrace, " ?%d?", pointer[i]);
- break;
-
- case LM_MODE:
- fprintf(NetTrace, "MODE ");
- if (length < 3) {
- fprintf(NetTrace, "(no mode??\?)");
- break;
- }
- {
- char tbuf[64];
- sprintf(tbuf, "%s%s%s%s%s",
- pointer[2]&MODE_EDIT ? "|EDIT" : "",
- pointer[2]&MODE_TRAPSIG ? "|TRAPSIG" : "",
- pointer[2]&MODE_SOFT_TAB ? "|SOFT_TAB" : "",
- pointer[2]&MODE_LIT_ECHO ? "|LIT_ECHO" : "",
- pointer[2]&MODE_ACK ? "|ACK" : "");
- fprintf(NetTrace, "%s", tbuf[1] ? &tbuf[1] : "0");
- }
- if (pointer[2]&~(MODE_MASK))
- fprintf(NetTrace, " (0x%x)", pointer[2]);
- for (i = 3; i < length; i++)
- fprintf(NetTrace, " ?0x%x?", pointer[i]);
- break;
- default:
- fprintf(NetTrace, "%d (unknown)", pointer[1]);
- for (i = 2; i < length; i++)
- fprintf(NetTrace, " %d", pointer[i]);
- }
- break;
-
- case TELOPT_STATUS: {
- register char *cp;
- register int j, k;
-
- fprintf(NetTrace, "STATUS");
-
- switch (pointer[1]) {
- default:
- if (pointer[1] == TELQUAL_SEND)
- fprintf(NetTrace, " SEND");
- else
- fprintf(NetTrace, " %d (unknown)", pointer[1]);
- for (i = 2; i < length; i++)
- fprintf(NetTrace, " ?%d?", pointer[i]);
- break;
- case TELQUAL_IS:
- if (--want_status_response < 0)
- want_status_response = 0;
- if (NetTrace == stdout)
- fprintf(NetTrace, " IS\r\n");
- else
- fprintf(NetTrace, " IS\n");
-
- for (i = 2; i < length; i++) {
- switch(pointer[i]) {
- case DO: cp = "DO"; goto common2;
- case DONT: cp = "DONT"; goto common2;
- case WILL: cp = "WILL"; goto common2;
- case WONT: cp = "WONT"; goto common2;
- common2:
- i++;
- if (TELOPT_OK((int)pointer[i]))
- fprintf(NetTrace, " %s %s", cp, TELOPT(pointer[i]));
- else
- fprintf(NetTrace, " %s %d", cp, pointer[i]);
-
- if (NetTrace == stdout)
- fprintf(NetTrace, "\r\n");
- else
- fprintf(NetTrace, "\n");
- break;
-
- case SB:
- fprintf(NetTrace, " SB ");
- i++;
- j = k = i;
- while (j < length) {
- if (pointer[j] == SE) {
- if (j+1 == length)
- break;
- if (pointer[j+1] == SE)
- j++;
- else
- break;
- }
- pointer[k++] = pointer[j++];
- }
- printsub(0, &pointer[i], k - i);
- if (i < length) {
- fprintf(NetTrace, " SE");
- i = j;
- } else
- i = j - 1;
-
- if (NetTrace == stdout)
- fprintf(NetTrace, "\r\n");
- else
- fprintf(NetTrace, "\n");
-
- break;
-
- default:
- fprintf(NetTrace, " %d", pointer[i]);
- break;
- }
- }
- break;
- }
- break;
- }
-
- case TELOPT_XDISPLOC:
- fprintf(NetTrace, "X-DISPLAY-LOCATION ");
- switch (pointer[1]) {
- case TELQUAL_IS:
- fprintf(NetTrace, "IS \"%.*s\"", length-2, (char *)pointer+2);
- break;
- case TELQUAL_SEND:
- fprintf(NetTrace, "SEND");
- break;
- default:
- fprintf(NetTrace, "- unknown qualifier %d (0x%x).",
- pointer[1], pointer[1]);
- }
- break;
-
- case TELOPT_NEW_ENVIRON:
- fprintf(NetTrace, "NEW-ENVIRON ");
-#ifdef OLD_ENVIRON
- goto env_common1;
- case TELOPT_OLD_ENVIRON:
- fprintf(NetTrace, "OLD-ENVIRON");
- env_common1:
-#endif
- switch (pointer[1]) {
- case TELQUAL_IS:
- fprintf(NetTrace, "IS ");
- goto env_common;
- case TELQUAL_SEND:
- fprintf(NetTrace, "SEND ");
- goto env_common;
- case TELQUAL_INFO:
- fprintf(NetTrace, "INFO ");
- env_common:
- {
- register int noquote = 2;
-#if defined(ENV_HACK) && defined(OLD_ENVIRON)
- extern int old_env_var, old_env_value;
-#endif
- for (i = 2; i < length; i++ ) {
- switch (pointer[i]) {
- case NEW_ENV_VALUE:
-#ifdef OLD_ENVIRON
- /* case NEW_ENV_OVAR: */
- if (pointer[0] == TELOPT_OLD_ENVIRON) {
-# ifdef ENV_HACK
- if (old_env_var == OLD_ENV_VALUE)
- fprintf(NetTrace, "\" (VALUE) " + noquote);
- else
-# endif
- fprintf(NetTrace, "\" VAR " + noquote);
- } else
-#endif /* OLD_ENVIRON */
- fprintf(NetTrace, "\" VALUE " + noquote);
- noquote = 2;
- break;
-
- case NEW_ENV_VAR:
-#ifdef OLD_ENVIRON
- /* case OLD_ENV_VALUE: */
- if (pointer[0] == TELOPT_OLD_ENVIRON) {
-# ifdef ENV_HACK
- if (old_env_value == OLD_ENV_VAR)
- fprintf(NetTrace, "\" (VAR) " + noquote);
- else
-# endif
- fprintf(NetTrace, "\" VALUE " + noquote);
- } else
-#endif /* OLD_ENVIRON */
- fprintf(NetTrace, "\" VAR " + noquote);
- noquote = 2;
- break;
-
- case ENV_ESC:
- fprintf(NetTrace, "\" ESC " + noquote);
- noquote = 2;
- break;
-
- case ENV_USERVAR:
- fprintf(NetTrace, "\" USERVAR " + noquote);
- noquote = 2;
- break;
-
- default:
- def_case:
- if (isprint(pointer[i]) && pointer[i] != '"') {
- if (noquote) {
- putc('"', NetTrace);
- noquote = 0;
- }
- putc(pointer[i], NetTrace);
- } else {
- fprintf(NetTrace, "\" %03o " + noquote,
- pointer[i]);
- noquote = 2;
- }
- break;
- }
- }
- if (!noquote)
- putc('"', NetTrace);
- break;
- }
- }
- break;
-
- default:
- if (TELOPT_OK(pointer[0]))
- fprintf(NetTrace, "%s (unknown)", TELOPT(pointer[0]));
- else
- fprintf(NetTrace, "%d (unknown)", pointer[0]);
- for (i = 1; i < length; i++)
- fprintf(NetTrace, " %d", pointer[i]);
- break;
- }
- if (direction) {
- if (NetTrace == stdout)
- fprintf(NetTrace, "\r\n");
- else
- fprintf(NetTrace, "\n");
- }
- if (NetTrace == stdout)
- fflush(NetTrace);
- }
-}
-
-/* EmptyTerminal - called to make sure that the terminal buffer is empty.
- * Note that we consider the buffer to run all the
- * way to the kernel (thus the select).
- */
-
- void
-EmptyTerminal()
-{
-#if defined(unix)
- fd_set o;
-
- FD_ZERO(&o);
-#endif /* defined(unix) */
-
- if (TTYBYTES() == 0) {
-#if defined(unix)
- FD_SET(tout, &o);
- (void) select(tout+1, (fd_set *) 0, &o, (fd_set *) 0,
- (struct timeval *) 0); /* wait for TTLOWAT */
-#endif /* defined(unix) */
- } else {
- while (TTYBYTES()) {
- (void) ttyflush(0);
-#if defined(unix)
- FD_SET(tout, &o);
- (void) select(tout+1, (fd_set *) 0, &o, (fd_set *) 0,
- (struct timeval *) 0); /* wait for TTLOWAT */
-#endif /* defined(unix) */
- }
- }
-}
-
- void
-SetForExit()
-{
- setconnmode(0);
-#if defined(TN3270)
- if (In3270) {
- Finish3270();
- }
-#else /* defined(TN3270) */
- do {
- (void)telrcv(); /* Process any incoming data */
- EmptyTerminal();
- } while (ring_full_count(&netiring)); /* While there is any */
-#endif /* defined(TN3270) */
- setcommandmode();
- fflush(stdout);
- fflush(stderr);
-#if defined(TN3270)
- if (In3270) {
- StopScreen(1);
- }
-#endif /* defined(TN3270) */
- setconnmode(0);
- EmptyTerminal(); /* Flush the path to the tty */
- setcommandmode();
-}
-
- void
-Exit(returnCode)
- int returnCode;
-{
- SetForExit();
- exit(returnCode);
-}
-
- void
-ExitString(string, returnCode)
- char *string;
- int returnCode;
-{
- SetForExit();
- fwrite(string, 1, strlen(string), stderr);
- exit(returnCode);
-}
diff --git a/secure/usr.sbin/xntpd/lib/authdes.c b/secure/usr.sbin/xntpd/lib/authdes.c
deleted file mode 100644
index d6d8d1bb6622..000000000000
--- a/secure/usr.sbin/xntpd/lib/authdes.c
+++ /dev/null
@@ -1,869 +0,0 @@
-/*
- * authdes.c - an implementation of the DES cipher algorithm for NTP
- */
-#include <sys/types.h>
-
-#include <netinet/in.h>
-
-#if BYTE_ORDER == BIG_ENDIAN
-#define XNTP_BIG_ENDIAN
-#endif
-#if BYTE_ORDER == LITTLE_ENDIAN
-#define XNTP_LITTLE_ENDIAN
-#endif
-
-/*
- * There are two entries in here. auth_subkeys() called to
- * compute the encryption and decryption key schedules, while
- * auth_des() is called to do the actual encryption/decryption
- */
-
-/*
- * Byte order woes. The DES code is sensitive to byte order. This
- * used to be resolved by calling ntohl() and htonl() to swap things
- * around, but this turned out to be quite costly on Vaxes where those
- * things are actual functions. The code now straightens out byte
- * order troubles on its own, with no performance penalty for little
- * end first machines, but at great expense to cleanliness.
- */
-#if !defined(XNTP_BIG_ENDIAN) && !defined(XNTP_LITTLE_ENDIAN)
- /*
- * Pick one or the other.
- */
- BYTE_ORDER_NOT_DEFINED_FOR_AUTHENTICATION
-#endif
-
-/*
- * Key setup. Here we entirely permute a key, saving the results
- * for both the encryption and decryption. Note that while the
- * decryption subkeys are simply the encryption keys reordered,
- * we save both so that a common cipher routine may be used.
- */
-
-/*
- * Permuted choice 1 tables. These are used to extract bits
- * from the left and right parts of the key to form Ci and Di.
- * The code that uses these tables knows which bits from which
- * part of each key are used to form Ci and Di.
- */
-static u_long PC1_CL[8] = {
- 0x00000000, 0x00000010, 0x00001000, 0x00001010,
- 0x00100000, 0x00100010, 0x00101000, 0x00101010
-};
-
-static u_long PC1_DL[16] = {
- 0x00000000, 0x00100000, 0x00001000, 0x00101000,
- 0x00000010, 0x00100010, 0x00001010, 0x00101010,
- 0x00000001, 0x00100001, 0x00001001, 0x00101001,
- 0x00000011, 0x00100011, 0x00001011, 0x00101011
-};
-
-static u_long PC1_CR[16] = {
- 0x00000000, 0x00000001, 0x00000100, 0x00000101,
- 0x00010000, 0x00010001, 0x00010100, 0x00010101,
- 0x01000000, 0x01000001, 0x01000100, 0x01000101,
- 0x01010000, 0x01010001, 0x01010100, 0x01010101
-};
-
-static u_long PC1_DR[8] = {
- 0x00000000, 0x01000000, 0x00010000, 0x01010000,
- 0x00000100, 0x01000100, 0x00010100, 0x01010100
-};
-
-
-/*
- * At the start of some iterations of the key schedule we do
- * a circular left shift by one place, while for others we do a shift by
- * two places. This has bits set for the iterations where we do 2 bit
- * shifts, starting at the low order bit.
- */
-#define TWO_BIT_SHIFTS 0x7efc
-
-/*
- * Permuted choice 2 tables. The first actually produces the low order
- * 24 bits of the subkey Ki from the 28 bit value of Ci. The second produces
- * the high order 24 bits from Di. The tables are indexed by six bit
- * segments of Ci and Di respectively. The code is handcrafted to compute
- * the appropriate 6 bit chunks.
- *
- * Note that for ease of computation, the 24 bit values are produced with
- * six bits going into each byte.
- */
-static u_long PC2_C[4][64] = {
- 0x00000000, 0x00040000, 0x01000000, 0x01040000,
- 0x00000400, 0x00040400, 0x01000400, 0x01040400,
- 0x00200000, 0x00240000, 0x01200000, 0x01240000,
- 0x00200400, 0x00240400, 0x01200400, 0x01240400,
- 0x00000001, 0x00040001, 0x01000001, 0x01040001,
- 0x00000401, 0x00040401, 0x01000401, 0x01040401,
- 0x00200001, 0x00240001, 0x01200001, 0x01240001,
- 0x00200401, 0x00240401, 0x01200401, 0x01240401,
- 0x02000000, 0x02040000, 0x03000000, 0x03040000,
- 0x02000400, 0x02040400, 0x03000400, 0x03040400,
- 0x02200000, 0x02240000, 0x03200000, 0x03240000,
- 0x02200400, 0x02240400, 0x03200400, 0x03240400,
- 0x02000001, 0x02040001, 0x03000001, 0x03040001,
- 0x02000401, 0x02040401, 0x03000401, 0x03040401,
- 0x02200001, 0x02240001, 0x03200001, 0x03240001,
- 0x02200401, 0x02240401, 0x03200401, 0x03240401,
-
- 0x00000000, 0x00000002, 0x00000800, 0x00000802,
- 0x08000000, 0x08000002, 0x08000800, 0x08000802,
- 0x00010000, 0x00010002, 0x00010800, 0x00010802,
- 0x08010000, 0x08010002, 0x08010800, 0x08010802,
- 0x00000100, 0x00000102, 0x00000900, 0x00000902,
- 0x08000100, 0x08000102, 0x08000900, 0x08000902,
- 0x00010100, 0x00010102, 0x00010900, 0x00010902,
- 0x08010100, 0x08010102, 0x08010900, 0x08010902,
- 0x00000010, 0x00000012, 0x00000810, 0x00000812,
- 0x08000010, 0x08000012, 0x08000810, 0x08000812,
- 0x00010010, 0x00010012, 0x00010810, 0x00010812,
- 0x08010010, 0x08010012, 0x08010810, 0x08010812,
- 0x00000110, 0x00000112, 0x00000910, 0x00000912,
- 0x08000110, 0x08000112, 0x08000910, 0x08000912,
- 0x00010110, 0x00010112, 0x00010910, 0x00010912,
- 0x08010110, 0x08010112, 0x08010910, 0x08010912,
-
- 0x00000000, 0x04000000, 0x00002000, 0x04002000,
- 0x10000000, 0x14000000, 0x10002000, 0x14002000,
- 0x00000020, 0x04000020, 0x00002020, 0x04002020,
- 0x10000020, 0x14000020, 0x10002020, 0x14002020,
- 0x00080000, 0x04080000, 0x00082000, 0x04082000,
- 0x10080000, 0x14080000, 0x10082000, 0x14082000,
- 0x00080020, 0x04080020, 0x00082020, 0x04082020,
- 0x10080020, 0x14080020, 0x10082020, 0x14082020,
- 0x20000000, 0x24000000, 0x20002000, 0x24002000,
- 0x30000000, 0x34000000, 0x30002000, 0x34002000,
- 0x20000020, 0x24000020, 0x20002020, 0x24002020,
- 0x30000020, 0x34000020, 0x30002020, 0x34002020,
- 0x20080000, 0x24080000, 0x20082000, 0x24082000,
- 0x30080000, 0x34080000, 0x30082000, 0x34082000,
- 0x20080020, 0x24080020, 0x20082020, 0x24082020,
- 0x30080020, 0x34080020, 0x30082020, 0x34082020,
-
- 0x00000000, 0x00100000, 0x00000008, 0x00100008,
- 0x00000200, 0x00100200, 0x00000208, 0x00100208,
- 0x00020000, 0x00120000, 0x00020008, 0x00120008,
- 0x00020200, 0x00120200, 0x00020208, 0x00120208,
- 0x00000004, 0x00100004, 0x0000000c, 0x0010000c,
- 0x00000204, 0x00100204, 0x0000020c, 0x0010020c,
- 0x00020004, 0x00120004, 0x0002000c, 0x0012000c,
- 0x00020204, 0x00120204, 0x0002020c, 0x0012020c,
- 0x00001000, 0x00101000, 0x00001008, 0x00101008,
- 0x00001200, 0x00101200, 0x00001208, 0x00101208,
- 0x00021000, 0x00121000, 0x00021008, 0x00121008,
- 0x00021200, 0x00121200, 0x00021208, 0x00121208,
- 0x00001004, 0x00101004, 0x0000100c, 0x0010100c,
- 0x00001204, 0x00101204, 0x0000120c, 0x0010120c,
- 0x00021004, 0x00121004, 0x0002100c, 0x0012100c,
- 0x00021204, 0x00121204, 0x0002120c, 0x0012120c
-};
-
-static u_long PC2_D[4][64] = {
- 0x00000000, 0x00000200, 0x00020000, 0x00020200,
- 0x00000001, 0x00000201, 0x00020001, 0x00020201,
- 0x08000000, 0x08000200, 0x08020000, 0x08020200,
- 0x08000001, 0x08000201, 0x08020001, 0x08020201,
- 0x00200000, 0x00200200, 0x00220000, 0x00220200,
- 0x00200001, 0x00200201, 0x00220001, 0x00220201,
- 0x08200000, 0x08200200, 0x08220000, 0x08220200,
- 0x08200001, 0x08200201, 0x08220001, 0x08220201,
- 0x00000002, 0x00000202, 0x00020002, 0x00020202,
- 0x00000003, 0x00000203, 0x00020003, 0x00020203,
- 0x08000002, 0x08000202, 0x08020002, 0x08020202,
- 0x08000003, 0x08000203, 0x08020003, 0x08020203,
- 0x00200002, 0x00200202, 0x00220002, 0x00220202,
- 0x00200003, 0x00200203, 0x00220003, 0x00220203,
- 0x08200002, 0x08200202, 0x08220002, 0x08220202,
- 0x08200003, 0x08200203, 0x08220003, 0x08220203,
-
- 0x00000000, 0x00000010, 0x20000000, 0x20000010,
- 0x00100000, 0x00100010, 0x20100000, 0x20100010,
- 0x00000800, 0x00000810, 0x20000800, 0x20000810,
- 0x00100800, 0x00100810, 0x20100800, 0x20100810,
- 0x04000000, 0x04000010, 0x24000000, 0x24000010,
- 0x04100000, 0x04100010, 0x24100000, 0x24100010,
- 0x04000800, 0x04000810, 0x24000800, 0x24000810,
- 0x04100800, 0x04100810, 0x24100800, 0x24100810,
- 0x00000004, 0x00000014, 0x20000004, 0x20000014,
- 0x00100004, 0x00100014, 0x20100004, 0x20100014,
- 0x00000804, 0x00000814, 0x20000804, 0x20000814,
- 0x00100804, 0x00100814, 0x20100804, 0x20100814,
- 0x04000004, 0x04000014, 0x24000004, 0x24000014,
- 0x04100004, 0x04100014, 0x24100004, 0x24100014,
- 0x04000804, 0x04000814, 0x24000804, 0x24000814,
- 0x04100804, 0x04100814, 0x24100804, 0x24100814,
-
- 0x00000000, 0x00001000, 0x00010000, 0x00011000,
- 0x02000000, 0x02001000, 0x02010000, 0x02011000,
- 0x00000020, 0x00001020, 0x00010020, 0x00011020,
- 0x02000020, 0x02001020, 0x02010020, 0x02011020,
- 0x00040000, 0x00041000, 0x00050000, 0x00051000,
- 0x02040000, 0x02041000, 0x02050000, 0x02051000,
- 0x00040020, 0x00041020, 0x00050020, 0x00051020,
- 0x02040020, 0x02041020, 0x02050020, 0x02051020,
- 0x00002000, 0x00003000, 0x00012000, 0x00013000,
- 0x02002000, 0x02003000, 0x02012000, 0x02013000,
- 0x00002020, 0x00003020, 0x00012020, 0x00013020,
- 0x02002020, 0x02003020, 0x02012020, 0x02013020,
- 0x00042000, 0x00043000, 0x00052000, 0x00053000,
- 0x02042000, 0x02043000, 0x02052000, 0x02053000,
- 0x00042020, 0x00043020, 0x00052020, 0x00053020,
- 0x02042020, 0x02043020, 0x02052020, 0x02053020,
-
- 0x00000000, 0x00000400, 0x01000000, 0x01000400,
- 0x00000100, 0x00000500, 0x01000100, 0x01000500,
- 0x10000000, 0x10000400, 0x11000000, 0x11000400,
- 0x10000100, 0x10000500, 0x11000100, 0x11000500,
- 0x00080000, 0x00080400, 0x01080000, 0x01080400,
- 0x00080100, 0x00080500, 0x01080100, 0x01080500,
- 0x10080000, 0x10080400, 0x11080000, 0x11080400,
- 0x10080100, 0x10080500, 0x11080100, 0x11080500,
- 0x00000008, 0x00000408, 0x01000008, 0x01000408,
- 0x00000108, 0x00000508, 0x01000108, 0x01000508,
- 0x10000008, 0x10000408, 0x11000008, 0x11000408,
- 0x10000108, 0x10000508, 0x11000108, 0x11000508,
- 0x00080008, 0x00080408, 0x01080008, 0x01080408,
- 0x00080108, 0x00080508, 0x01080108, 0x01080508,
- 0x10080008, 0x10080408, 0x11080008, 0x11080408,
- 0x10080108, 0x10080508, 0x11080108, 0x11080508
-};
-
-
-
-/*
- * Permute the key to give us our key schedule.
- */
-void
-DESauth_subkeys(key, encryptkeys, decryptkeys)
- u_long *key;
- u_char *encryptkeys;
- u_char *decryptkeys;
-{
- register u_long tmp;
- register u_long c, d;
- register u_char *ek, *dk;
- register int two_bit_shifts;
- register int i;
-
- /*
- * The first permutted choice gives us the 28 bits for C0 and
- * 28 for D0. C0 gets 12 bits from the left key and 16 from
- * the right, while D0 gets 16 from the left and 12 from the
- * right. The code knows which bits go where.
- */
- tmp = *key; /* left part of key */
- c = PC1_CL[(tmp >> 29) & 0x7]
- | (PC1_CL[(tmp >> 21) & 0x7] << 1)
- | (PC1_CL[(tmp >> 13) & 0x7] << 2)
- | (PC1_CL[(tmp >> 5) & 0x7] << 3);
- d = PC1_DL[(tmp >> 25) & 0xf]
- | (PC1_DL[(tmp >> 17) & 0xf] << 1)
- | (PC1_DL[(tmp >> 9) & 0xf] << 2)
- | (PC1_DL[(tmp >> 1) & 0xf] << 3);
-
- tmp = *(key+1); /* right part of key */
- c |= PC1_CR[(tmp >> 28) & 0xf]
- | (PC1_CR[(tmp >> 20) & 0xf] << 1)
- | (PC1_CR[(tmp >> 12) & 0xf] << 2)
- | (PC1_CR[(tmp >> 4) & 0xf] << 3);
- d |= PC1_DR[(tmp >> 25) & 0x7]
- | (PC1_DR[(tmp >> 17) & 0x7] << 1)
- | (PC1_DR[(tmp >> 9) & 0x7] << 2)
- | (PC1_DR[(tmp >> 1) & 0x7] << 3);
-
- /*
- * Now iterate to compute the key schedule. Note that we
- * record the entire set of subkeys in 6 bit chunks since
- * they are used that way. At 6 bits/char, we need
- * 48/6 char's/subkey * 16 subkeys/encryption == 128 chars.
- * encryptkeys and decryptkeys must be this big.
- */
- ek = encryptkeys;
- dk = decryptkeys + (8 * 15);
- two_bit_shifts = TWO_BIT_SHIFTS;
- for (i = 16; i > 0; i--) {
- /*
- * Do the rotation. One bit and two bit rotations
- * are done separately. Note C and D are 28 bits.
- */
- if (two_bit_shifts & 0x1) {
- c = ((c << 2) & 0xffffffc) | (c >> 26);
- d = ((d << 2) & 0xffffffc) | (d >> 26);
- } else {
- c = ((c << 1) & 0xffffffe) | (c >> 27);
- d = ((d << 1) & 0xffffffe) | (d >> 27);
- }
- two_bit_shifts >>= 1;
-
- /*
- * Apply permutted choice 2 to C to get the first
- * 24 bits worth of keys. Note that bits 9, 18, 22
- * and 25 (using DES numbering) in C are unused. The
- * shift-mask stuff is done to delete these bits from
- * the indices, since this cuts the table size in half.
- */
- tmp = PC2_C[0][((c >> 22) & 0x3f)]
- | PC2_C[1][((c >> 15) & 0xf) | ((c >> 16) & 0x30)]
- | PC2_C[2][((c >> 4) & 0x3) | ((c >> 9) & 0x3c)]
- | PC2_C[3][((c ) & 0x7) | ((c >> 4) & 0x38)];
- *ek++ = *dk++ = (u_char)(tmp >> 24);
- *ek++ = *dk++ = (u_char)(tmp >> 16);
- *ek++ = *dk++ = (u_char)(tmp >> 8);
- *ek++ = *dk++ = (u_char)tmp;
-
- /*
- * Apply permutted choice 2 to D to get the other half.
- * Here, bits 7, 10, 15 and 26 go unused. The sqeezing
- * actually turns out to be cheaper here.
- */
- tmp = PC2_D[0][((d >> 22) & 0x3f)]
- | PC2_D[1][((d >> 14) & 0xf) | ((d >> 15) & 0x30)]
- | PC2_D[2][((d >> 7) & 0x3f)]
- | PC2_D[3][((d ) & 0x3) | ((d >> 1) & 0x3c)];
- *ek++ = *dk++ = (u_char)(tmp >> 24);
- *ek++ = *dk++ = (u_char)(tmp >> 16);
- *ek++ = *dk++ = (u_char)(tmp >> 8);
- *ek++ = *dk++ = (u_char)tmp;
-
- /*
- * We are filling in the decryption subkeys from the end.
- * Space it back 16 elements to get to the start of the
- * next set.
- */
- dk -= 16;
- }
-}
-
-/*
- * The DES algorithm. This is intended to be fairly speedy at the
- * expense of some memory.
- *
- * This uses all the standard hacks. The S boxes and the P permutation
- * are precomputed into one table. The E box never actually appears
- * explicitly since it is easy to apply this algorithmically. The
- * initial permutation and final (inverse initial) permuation are
- * computed from tables designed to permute four bits at a time. This
- * should run pretty fast on machines with 32 bit words and
- * bit field/multiple bit shift instructions which are fast.
- */
-
-/*
- * The initial permutation array. This is used to compute both the
- * left and the right halves of the initial permutation using bytes
- * from words made from the following operations:
- *
- * ((left & 0x55555555) << 1) | (right & 0x55555555) for left half
- * (left & 0xaaaaaaaa) | ((right & 0xaaaaaaaa) >> 1) for right half
- *
- * The scheme is that we index into the table using each byte. The
- * result from the high order byte is or'd with the result from the
- * next byte shifted left once is or'd with the result from the next
- * byte shifted left twice if or'd with the result from the low order
- * byte shifted left by three. Clear?
- */
-static u_long IP[256] = {
- 0x00000000, 0x00000010, 0x00000001, 0x00000011,
- 0x00001000, 0x00001010, 0x00001001, 0x00001011,
- 0x00000100, 0x00000110, 0x00000101, 0x00000111,
- 0x00001100, 0x00001110, 0x00001101, 0x00001111,
- 0x00100000, 0x00100010, 0x00100001, 0x00100011,
- 0x00101000, 0x00101010, 0x00101001, 0x00101011,
- 0x00100100, 0x00100110, 0x00100101, 0x00100111,
- 0x00101100, 0x00101110, 0x00101101, 0x00101111,
- 0x00010000, 0x00010010, 0x00010001, 0x00010011,
- 0x00011000, 0x00011010, 0x00011001, 0x00011011,
- 0x00010100, 0x00010110, 0x00010101, 0x00010111,
- 0x00011100, 0x00011110, 0x00011101, 0x00011111,
- 0x00110000, 0x00110010, 0x00110001, 0x00110011,
- 0x00111000, 0x00111010, 0x00111001, 0x00111011,
- 0x00110100, 0x00110110, 0x00110101, 0x00110111,
- 0x00111100, 0x00111110, 0x00111101, 0x00111111,
- 0x10000000, 0x10000010, 0x10000001, 0x10000011,
- 0x10001000, 0x10001010, 0x10001001, 0x10001011,
- 0x10000100, 0x10000110, 0x10000101, 0x10000111,
- 0x10001100, 0x10001110, 0x10001101, 0x10001111,
- 0x10100000, 0x10100010, 0x10100001, 0x10100011,
- 0x10101000, 0x10101010, 0x10101001, 0x10101011,
- 0x10100100, 0x10100110, 0x10100101, 0x10100111,
- 0x10101100, 0x10101110, 0x10101101, 0x10101111,
- 0x10010000, 0x10010010, 0x10010001, 0x10010011,
- 0x10011000, 0x10011010, 0x10011001, 0x10011011,
- 0x10010100, 0x10010110, 0x10010101, 0x10010111,
- 0x10011100, 0x10011110, 0x10011101, 0x10011111,
- 0x10110000, 0x10110010, 0x10110001, 0x10110011,
- 0x10111000, 0x10111010, 0x10111001, 0x10111011,
- 0x10110100, 0x10110110, 0x10110101, 0x10110111,
- 0x10111100, 0x10111110, 0x10111101, 0x10111111,
- 0x01000000, 0x01000010, 0x01000001, 0x01000011,
- 0x01001000, 0x01001010, 0x01001001, 0x01001011,
- 0x01000100, 0x01000110, 0x01000101, 0x01000111,
- 0x01001100, 0x01001110, 0x01001101, 0x01001111,
- 0x01100000, 0x01100010, 0x01100001, 0x01100011,
- 0x01101000, 0x01101010, 0x01101001, 0x01101011,
- 0x01100100, 0x01100110, 0x01100101, 0x01100111,
- 0x01101100, 0x01101110, 0x01101101, 0x01101111,
- 0x01010000, 0x01010010, 0x01010001, 0x01010011,
- 0x01011000, 0x01011010, 0x01011001, 0x01011011,
- 0x01010100, 0x01010110, 0x01010101, 0x01010111,
- 0x01011100, 0x01011110, 0x01011101, 0x01011111,
- 0x01110000, 0x01110010, 0x01110001, 0x01110011,
- 0x01111000, 0x01111010, 0x01111001, 0x01111011,
- 0x01110100, 0x01110110, 0x01110101, 0x01110111,
- 0x01111100, 0x01111110, 0x01111101, 0x01111111,
- 0x11000000, 0x11000010, 0x11000001, 0x11000011,
- 0x11001000, 0x11001010, 0x11001001, 0x11001011,
- 0x11000100, 0x11000110, 0x11000101, 0x11000111,
- 0x11001100, 0x11001110, 0x11001101, 0x11001111,
- 0x11100000, 0x11100010, 0x11100001, 0x11100011,
- 0x11101000, 0x11101010, 0x11101001, 0x11101011,
- 0x11100100, 0x11100110, 0x11100101, 0x11100111,
- 0x11101100, 0x11101110, 0x11101101, 0x11101111,
- 0x11010000, 0x11010010, 0x11010001, 0x11010011,
- 0x11011000, 0x11011010, 0x11011001, 0x11011011,
- 0x11010100, 0x11010110, 0x11010101, 0x11010111,
- 0x11011100, 0x11011110, 0x11011101, 0x11011111,
- 0x11110000, 0x11110010, 0x11110001, 0x11110011,
- 0x11111000, 0x11111010, 0x11111001, 0x11111011,
- 0x11110100, 0x11110110, 0x11110101, 0x11110111,
- 0x11111100, 0x11111110, 0x11111101, 0x11111111
-};
-
-/*
- * The final permutation array. Like the IP array, used
- * to compute both the left and right results from the nibbles
- * of words computed from:
- *
- * ((left & 0x0f0f0f0f) << 4) | (right & 0x0f0f0f0f) for left result
- * (left & 0xf0f0f0f0) | ((right & 0xf0f0f0f0) >> 4) for right result
- *
- * The result from the high order byte is shifted left 6 bits and
- * or'd with the result from the next byte shifted left 4 bits, which
- * is or'd with the result from the next byte shifted left 2 bits,
- * which is or'd with the result from the low byte.
- *
- * There is one of these for big end machines (the natural order for
- * DES) and a second for little end machines. One is a byte swapped
- * version of the other.
- */
-#ifndef XNTP_LITTLE_ENDIAN
- /*
- * Big end version
- */
-static u_long FP[256] = {
- 0x00000000, 0x02000000, 0x00020000, 0x02020000,
- 0x00000200, 0x02000200, 0x00020200, 0x02020200,
- 0x00000002, 0x02000002, 0x00020002, 0x02020002,
- 0x00000202, 0x02000202, 0x00020202, 0x02020202,
- 0x01000000, 0x03000000, 0x01020000, 0x03020000,
- 0x01000200, 0x03000200, 0x01020200, 0x03020200,
- 0x01000002, 0x03000002, 0x01020002, 0x03020002,
- 0x01000202, 0x03000202, 0x01020202, 0x03020202,
- 0x00010000, 0x02010000, 0x00030000, 0x02030000,
- 0x00010200, 0x02010200, 0x00030200, 0x02030200,
- 0x00010002, 0x02010002, 0x00030002, 0x02030002,
- 0x00010202, 0x02010202, 0x00030202, 0x02030202,
- 0x01010000, 0x03010000, 0x01030000, 0x03030000,
- 0x01010200, 0x03010200, 0x01030200, 0x03030200,
- 0x01010002, 0x03010002, 0x01030002, 0x03030002,
- 0x01010202, 0x03010202, 0x01030202, 0x03030202,
- 0x00000100, 0x02000100, 0x00020100, 0x02020100,
- 0x00000300, 0x02000300, 0x00020300, 0x02020300,
- 0x00000102, 0x02000102, 0x00020102, 0x02020102,
- 0x00000302, 0x02000302, 0x00020302, 0x02020302,
- 0x01000100, 0x03000100, 0x01020100, 0x03020100,
- 0x01000300, 0x03000300, 0x01020300, 0x03020300,
- 0x01000102, 0x03000102, 0x01020102, 0x03020102,
- 0x01000302, 0x03000302, 0x01020302, 0x03020302,
- 0x00010100, 0x02010100, 0x00030100, 0x02030100,
- 0x00010300, 0x02010300, 0x00030300, 0x02030300,
- 0x00010102, 0x02010102, 0x00030102, 0x02030102,
- 0x00010302, 0x02010302, 0x00030302, 0x02030302,
- 0x01010100, 0x03010100, 0x01030100, 0x03030100,
- 0x01010300, 0x03010300, 0x01030300, 0x03030300,
- 0x01010102, 0x03010102, 0x01030102, 0x03030102,
- 0x01010302, 0x03010302, 0x01030302, 0x03030302,
- 0x00000001, 0x02000001, 0x00020001, 0x02020001,
- 0x00000201, 0x02000201, 0x00020201, 0x02020201,
- 0x00000003, 0x02000003, 0x00020003, 0x02020003,
- 0x00000203, 0x02000203, 0x00020203, 0x02020203,
- 0x01000001, 0x03000001, 0x01020001, 0x03020001,
- 0x01000201, 0x03000201, 0x01020201, 0x03020201,
- 0x01000003, 0x03000003, 0x01020003, 0x03020003,
- 0x01000203, 0x03000203, 0x01020203, 0x03020203,
- 0x00010001, 0x02010001, 0x00030001, 0x02030001,
- 0x00010201, 0x02010201, 0x00030201, 0x02030201,
- 0x00010003, 0x02010003, 0x00030003, 0x02030003,
- 0x00010203, 0x02010203, 0x00030203, 0x02030203,
- 0x01010001, 0x03010001, 0x01030001, 0x03030001,
- 0x01010201, 0x03010201, 0x01030201, 0x03030201,
- 0x01010003, 0x03010003, 0x01030003, 0x03030003,
- 0x01010203, 0x03010203, 0x01030203, 0x03030203,
- 0x00000101, 0x02000101, 0x00020101, 0x02020101,
- 0x00000301, 0x02000301, 0x00020301, 0x02020301,
- 0x00000103, 0x02000103, 0x00020103, 0x02020103,
- 0x00000303, 0x02000303, 0x00020303, 0x02020303,
- 0x01000101, 0x03000101, 0x01020101, 0x03020101,
- 0x01000301, 0x03000301, 0x01020301, 0x03020301,
- 0x01000103, 0x03000103, 0x01020103, 0x03020103,
- 0x01000303, 0x03000303, 0x01020303, 0x03020303,
- 0x00010101, 0x02010101, 0x00030101, 0x02030101,
- 0x00010301, 0x02010301, 0x00030301, 0x02030301,
- 0x00010103, 0x02010103, 0x00030103, 0x02030103,
- 0x00010303, 0x02010303, 0x00030303, 0x02030303,
- 0x01010101, 0x03010101, 0x01030101, 0x03030101,
- 0x01010301, 0x03010301, 0x01030301, 0x03030301,
- 0x01010103, 0x03010103, 0x01030103, 0x03030103,
- 0x01010303, 0x03010303, 0x01030303, 0x03030303
-};
-#else
- /*
- * Byte swapped for little end machines.
- */
-static u_long FP[256] = {
- 0x00000000, 0x00000002, 0x00000200, 0x00000202,
- 0x00020000, 0x00020002, 0x00020200, 0x00020202,
- 0x02000000, 0x02000002, 0x02000200, 0x02000202,
- 0x02020000, 0x02020002, 0x02020200, 0x02020202,
- 0x00000001, 0x00000003, 0x00000201, 0x00000203,
- 0x00020001, 0x00020003, 0x00020201, 0x00020203,
- 0x02000001, 0x02000003, 0x02000201, 0x02000203,
- 0x02020001, 0x02020003, 0x02020201, 0x02020203,
- 0x00000100, 0x00000102, 0x00000300, 0x00000302,
- 0x00020100, 0x00020102, 0x00020300, 0x00020302,
- 0x02000100, 0x02000102, 0x02000300, 0x02000302,
- 0x02020100, 0x02020102, 0x02020300, 0x02020302,
- 0x00000101, 0x00000103, 0x00000301, 0x00000303,
- 0x00020101, 0x00020103, 0x00020301, 0x00020303,
- 0x02000101, 0x02000103, 0x02000301, 0x02000303,
- 0x02020101, 0x02020103, 0x02020301, 0x02020303,
- 0x00010000, 0x00010002, 0x00010200, 0x00010202,
- 0x00030000, 0x00030002, 0x00030200, 0x00030202,
- 0x02010000, 0x02010002, 0x02010200, 0x02010202,
- 0x02030000, 0x02030002, 0x02030200, 0x02030202,
- 0x00010001, 0x00010003, 0x00010201, 0x00010203,
- 0x00030001, 0x00030003, 0x00030201, 0x00030203,
- 0x02010001, 0x02010003, 0x02010201, 0x02010203,
- 0x02030001, 0x02030003, 0x02030201, 0x02030203,
- 0x00010100, 0x00010102, 0x00010300, 0x00010302,
- 0x00030100, 0x00030102, 0x00030300, 0x00030302,
- 0x02010100, 0x02010102, 0x02010300, 0x02010302,
- 0x02030100, 0x02030102, 0x02030300, 0x02030302,
- 0x00010101, 0x00010103, 0x00010301, 0x00010303,
- 0x00030101, 0x00030103, 0x00030301, 0x00030303,
- 0x02010101, 0x02010103, 0x02010301, 0x02010303,
- 0x02030101, 0x02030103, 0x02030301, 0x02030303,
- 0x01000000, 0x01000002, 0x01000200, 0x01000202,
- 0x01020000, 0x01020002, 0x01020200, 0x01020202,
- 0x03000000, 0x03000002, 0x03000200, 0x03000202,
- 0x03020000, 0x03020002, 0x03020200, 0x03020202,
- 0x01000001, 0x01000003, 0x01000201, 0x01000203,
- 0x01020001, 0x01020003, 0x01020201, 0x01020203,
- 0x03000001, 0x03000003, 0x03000201, 0x03000203,
- 0x03020001, 0x03020003, 0x03020201, 0x03020203,
- 0x01000100, 0x01000102, 0x01000300, 0x01000302,
- 0x01020100, 0x01020102, 0x01020300, 0x01020302,
- 0x03000100, 0x03000102, 0x03000300, 0x03000302,
- 0x03020100, 0x03020102, 0x03020300, 0x03020302,
- 0x01000101, 0x01000103, 0x01000301, 0x01000303,
- 0x01020101, 0x01020103, 0x01020301, 0x01020303,
- 0x03000101, 0x03000103, 0x03000301, 0x03000303,
- 0x03020101, 0x03020103, 0x03020301, 0x03020303,
- 0x01010000, 0x01010002, 0x01010200, 0x01010202,
- 0x01030000, 0x01030002, 0x01030200, 0x01030202,
- 0x03010000, 0x03010002, 0x03010200, 0x03010202,
- 0x03030000, 0x03030002, 0x03030200, 0x03030202,
- 0x01010001, 0x01010003, 0x01010201, 0x01010203,
- 0x01030001, 0x01030003, 0x01030201, 0x01030203,
- 0x03010001, 0x03010003, 0x03010201, 0x03010203,
- 0x03030001, 0x03030003, 0x03030201, 0x03030203,
- 0x01010100, 0x01010102, 0x01010300, 0x01010302,
- 0x01030100, 0x01030102, 0x01030300, 0x01030302,
- 0x03010100, 0x03010102, 0x03010300, 0x03010302,
- 0x03030100, 0x03030102, 0x03030300, 0x03030302,
- 0x01010101, 0x01010103, 0x01010301, 0x01010303,
- 0x01030101, 0x01030103, 0x01030301, 0x01030303,
- 0x03010101, 0x03010103, 0x03010301, 0x03010303,
- 0x03030101, 0x03030103, 0x03030301, 0x03030303
-};
-#endif
-
-
-/*
- * The SP table is actually the S boxes and the P permutation
- * table combined.
- */
-static u_long SP[8][64] = {
- 0x00808200, 0x00000000, 0x00008000, 0x00808202,
- 0x00808002, 0x00008202, 0x00000002, 0x00008000,
- 0x00000200, 0x00808200, 0x00808202, 0x00000200,
- 0x00800202, 0x00808002, 0x00800000, 0x00000002,
- 0x00000202, 0x00800200, 0x00800200, 0x00008200,
- 0x00008200, 0x00808000, 0x00808000, 0x00800202,
- 0x00008002, 0x00800002, 0x00800002, 0x00008002,
- 0x00000000, 0x00000202, 0x00008202, 0x00800000,
- 0x00008000, 0x00808202, 0x00000002, 0x00808000,
- 0x00808200, 0x00800000, 0x00800000, 0x00000200,
- 0x00808002, 0x00008000, 0x00008200, 0x00800002,
- 0x00000200, 0x00000002, 0x00800202, 0x00008202,
- 0x00808202, 0x00008002, 0x00808000, 0x00800202,
- 0x00800002, 0x00000202, 0x00008202, 0x00808200,
- 0x00000202, 0x00800200, 0x00800200, 0x00000000,
- 0x00008002, 0x00008200, 0x00000000, 0x00808002,
-
- 0x40084010, 0x40004000, 0x00004000, 0x00084010,
- 0x00080000, 0x00000010, 0x40080010, 0x40004010,
- 0x40000010, 0x40084010, 0x40084000, 0x40000000,
- 0x40004000, 0x00080000, 0x00000010, 0x40080010,
- 0x00084000, 0x00080010, 0x40004010, 0x00000000,
- 0x40000000, 0x00004000, 0x00084010, 0x40080000,
- 0x00080010, 0x40000010, 0x00000000, 0x00084000,
- 0x00004010, 0x40084000, 0x40080000, 0x00004010,
- 0x00000000, 0x00084010, 0x40080010, 0x00080000,
- 0x40004010, 0x40080000, 0x40084000, 0x00004000,
- 0x40080000, 0x40004000, 0x00000010, 0x40084010,
- 0x00084010, 0x00000010, 0x00004000, 0x40000000,
- 0x00004010, 0x40084000, 0x00080000, 0x40000010,
- 0x00080010, 0x40004010, 0x40000010, 0x00080010,
- 0x00084000, 0x00000000, 0x40004000, 0x00004010,
- 0x40000000, 0x40080010, 0x40084010, 0x00084000,
-
- 0x00000104, 0x04010100, 0x00000000, 0x04010004,
- 0x04000100, 0x00000000, 0x00010104, 0x04000100,
- 0x00010004, 0x04000004, 0x04000004, 0x00010000,
- 0x04010104, 0x00010004, 0x04010000, 0x00000104,
- 0x04000000, 0x00000004, 0x04010100, 0x00000100,
- 0x00010100, 0x04010000, 0x04010004, 0x00010104,
- 0x04000104, 0x00010100, 0x00010000, 0x04000104,
- 0x00000004, 0x04010104, 0x00000100, 0x04000000,
- 0x04010100, 0x04000000, 0x00010004, 0x00000104,
- 0x00010000, 0x04010100, 0x04000100, 0x00000000,
- 0x00000100, 0x00010004, 0x04010104, 0x04000100,
- 0x04000004, 0x00000100, 0x00000000, 0x04010004,
- 0x04000104, 0x00010000, 0x04000000, 0x04010104,
- 0x00000004, 0x00010104, 0x00010100, 0x04000004,
- 0x04010000, 0x04000104, 0x00000104, 0x04010000,
- 0x00010104, 0x00000004, 0x04010004, 0x00010100,
-
- 0x80401000, 0x80001040, 0x80001040, 0x00000040,
- 0x00401040, 0x80400040, 0x80400000, 0x80001000,
- 0x00000000, 0x00401000, 0x00401000, 0x80401040,
- 0x80000040, 0x00000000, 0x00400040, 0x80400000,
- 0x80000000, 0x00001000, 0x00400000, 0x80401000,
- 0x00000040, 0x00400000, 0x80001000, 0x00001040,
- 0x80400040, 0x80000000, 0x00001040, 0x00400040,
- 0x00001000, 0x00401040, 0x80401040, 0x80000040,
- 0x00400040, 0x80400000, 0x00401000, 0x80401040,
- 0x80000040, 0x00000000, 0x00000000, 0x00401000,
- 0x00001040, 0x00400040, 0x80400040, 0x80000000,
- 0x80401000, 0x80001040, 0x80001040, 0x00000040,
- 0x80401040, 0x80000040, 0x80000000, 0x00001000,
- 0x80400000, 0x80001000, 0x00401040, 0x80400040,
- 0x80001000, 0x00001040, 0x00400000, 0x80401000,
- 0x00000040, 0x00400000, 0x00001000, 0x00401040,
-
- 0x00000080, 0x01040080, 0x01040000, 0x21000080,
- 0x00040000, 0x00000080, 0x20000000, 0x01040000,
- 0x20040080, 0x00040000, 0x01000080, 0x20040080,
- 0x21000080, 0x21040000, 0x00040080, 0x20000000,
- 0x01000000, 0x20040000, 0x20040000, 0x00000000,
- 0x20000080, 0x21040080, 0x21040080, 0x01000080,
- 0x21040000, 0x20000080, 0x00000000, 0x21000000,
- 0x01040080, 0x01000000, 0x21000000, 0x00040080,
- 0x00040000, 0x21000080, 0x00000080, 0x01000000,
- 0x20000000, 0x01040000, 0x21000080, 0x20040080,
- 0x01000080, 0x20000000, 0x21040000, 0x01040080,
- 0x20040080, 0x00000080, 0x01000000, 0x21040000,
- 0x21040080, 0x00040080, 0x21000000, 0x21040080,
- 0x01040000, 0x00000000, 0x20040000, 0x21000000,
- 0x00040080, 0x01000080, 0x20000080, 0x00040000,
- 0x00000000, 0x20040000, 0x01040080, 0x20000080,
-
- 0x10000008, 0x10200000, 0x00002000, 0x10202008,
- 0x10200000, 0x00000008, 0x10202008, 0x00200000,
- 0x10002000, 0x00202008, 0x00200000, 0x10000008,
- 0x00200008, 0x10002000, 0x10000000, 0x00002008,
- 0x00000000, 0x00200008, 0x10002008, 0x00002000,
- 0x00202000, 0x10002008, 0x00000008, 0x10200008,
- 0x10200008, 0x00000000, 0x00202008, 0x10202000,
- 0x00002008, 0x00202000, 0x10202000, 0x10000000,
- 0x10002000, 0x00000008, 0x10200008, 0x00202000,
- 0x10202008, 0x00200000, 0x00002008, 0x10000008,
- 0x00200000, 0x10002000, 0x10000000, 0x00002008,
- 0x10000008, 0x10202008, 0x00202000, 0x10200000,
- 0x00202008, 0x10202000, 0x00000000, 0x10200008,
- 0x00000008, 0x00002000, 0x10200000, 0x00202008,
- 0x00002000, 0x00200008, 0x10002008, 0x00000000,
- 0x10202000, 0x10000000, 0x00200008, 0x10002008,
-
- 0x00100000, 0x02100001, 0x02000401, 0x00000000,
- 0x00000400, 0x02000401, 0x00100401, 0x02100400,
- 0x02100401, 0x00100000, 0x00000000, 0x02000001,
- 0x00000001, 0x02000000, 0x02100001, 0x00000401,
- 0x02000400, 0x00100401, 0x00100001, 0x02000400,
- 0x02000001, 0x02100000, 0x02100400, 0x00100001,
- 0x02100000, 0x00000400, 0x00000401, 0x02100401,
- 0x00100400, 0x00000001, 0x02000000, 0x00100400,
- 0x02000000, 0x00100400, 0x00100000, 0x02000401,
- 0x02000401, 0x02100001, 0x02100001, 0x00000001,
- 0x00100001, 0x02000000, 0x02000400, 0x00100000,
- 0x02100400, 0x00000401, 0x00100401, 0x02100400,
- 0x00000401, 0x02000001, 0x02100401, 0x02100000,
- 0x00100400, 0x00000000, 0x00000001, 0x02100401,
- 0x00000000, 0x00100401, 0x02100000, 0x00000400,
- 0x02000001, 0x02000400, 0x00000400, 0x00100001,
-
- 0x08000820, 0x00000800, 0x00020000, 0x08020820,
- 0x08000000, 0x08000820, 0x00000020, 0x08000000,
- 0x00020020, 0x08020000, 0x08020820, 0x00020800,
- 0x08020800, 0x00020820, 0x00000800, 0x00000020,
- 0x08020000, 0x08000020, 0x08000800, 0x00000820,
- 0x00020800, 0x00020020, 0x08020020, 0x08020800,
- 0x00000820, 0x00000000, 0x00000000, 0x08020020,
- 0x08000020, 0x08000800, 0x00020820, 0x00020000,
- 0x00020820, 0x00020000, 0x08020800, 0x00000800,
- 0x00000020, 0x08020020, 0x00000800, 0x00020820,
- 0x08000800, 0x00000020, 0x08000020, 0x08020000,
- 0x08020020, 0x08000000, 0x00020000, 0x08000820,
- 0x00000000, 0x08020820, 0x00020020, 0x08000020,
- 0x08020000, 0x08000800, 0x08000820, 0x00000000,
- 0x08020820, 0x00020800, 0x00020800, 0x00000820,
- 0x00000820, 0x00020020, 0x08000000, 0x08020800
-};
-
-
-
-/*
- * DESauth_des - perform an in place DES encryption on 64 bits
- *
- * Note that the `data' argument is always in big-end-first
- * byte order, i.e. *(char *)data is the high order byte of
- * the 8 byte data word. We modify the initial and final
- * permutation computations for little-end-first machines to
- * swap bytes into the natural host order at the beginning and
- * back to big-end order at the end. This is unclean but avoids
- * a byte swapping performance penalty on Vaxes (which are slow already).
- */
-void
-DESauth_des(data, subkeys)
- u_long *data;
- u_char *subkeys;
-{
- register u_long left, right;
- register u_long temp;
- register u_char *kp;
- register int i;
-
- /*
- * Do the initial permutation. The first operation gets
- * all the bits which are used to form the left half of the
- * permutted result in one word, which is then used to
- * index the appropriate table a byte at a time.
- */
- temp = ((*data & 0x55555555) << 1) | (*(data+1) & 0x55555555);
-#ifdef XNTP_LITTLE_ENDIAN
- /*
- * Modify the computation to use the opposite set of bytes.
- */
- left = (IP[(temp >> 24) & 0xff] << 3)
- | (IP[(temp >> 16) & 0xff] << 2)
- | (IP[(temp >> 8) & 0xff] << 1)
- | IP[temp & 0xff];
-#else
- left = IP[(temp >> 24) & 0xff]
- | (IP[(temp >> 16) & 0xff] << 1)
- | (IP[(temp >> 8) & 0xff] << 2)
- | (IP[temp & 0xff] << 3);
-#endif
-
- /*
- * Same thing again except for the right half.
- */
- temp = (*data & 0xaaaaaaaa) | ((*(data+1) & 0xaaaaaaaa) >> 1);
-#ifdef XNTP_LITTLE_ENDIAN
- right = (IP[(temp >> 24) & 0xff] << 3)
- | (IP[(temp >> 16) & 0xff] << 2)
- | (IP[(temp >> 8) & 0xff] << 1)
- | IP[temp & 0xff];
-#else
- right = IP[(temp >> 24) & 0xff]
- | (IP[(temp >> 16) & 0xff] << 1)
- | (IP[(temp >> 8) & 0xff] << 2)
- | (IP[temp & 0xff] << 3);
-#endif
-
- /*
- * Do the 16 rounds through the cipher function. We actually
- * do two at a time, one on the left half and one on the right
- * half.
- */
- kp = subkeys;
- for (i = 0; i < 8; i++) {
- /*
- * The E expansion is easy to compute algorithmically.
- * Take a look at its form and compare it to
- * everything involving temp below. Note that
- * since SP[0-7] don't have any bits in common set
- * it is okay to do the successive xor's.
- */
- temp = (right >> 1) | ((right & 1) ? 0x80000000 : 0);
- left ^= SP[0][((temp >> 26) & 0x3f) ^ *kp++];
- left ^= SP[1][((temp >> 22) & 0x3f) ^ *kp++];
- left ^= SP[2][((temp >> 18) & 0x3f) ^ *kp++];
- left ^= SP[3][((temp >> 14) & 0x3f) ^ *kp++];
- left ^= SP[4][((temp >> 10) & 0x3f) ^ *kp++];
- left ^= SP[5][((temp >> 6) & 0x3f) ^ *kp++];
- left ^= SP[6][((temp >> 2) & 0x3f) ^ *kp++];
- left ^= SP[7][(((right << 1) | ((right & 0x80000000)?1:0))
- & 0x3f) ^ *kp++];
-
- /*
- * Careful here. Right now `right' is actually the
- * left side and `left' is the right side. Do the
- * same thing again, except swap `left' and `right'
- */
- temp = (left >> 1) | ((left & 1) ? 0x80000000 : 0);
- right ^= SP[0][((temp >> 26) & 0x3f) ^ *kp++];
- right ^= SP[1][((temp >> 22) & 0x3f) ^ *kp++];
- right ^= SP[2][((temp >> 18) & 0x3f) ^ *kp++];
- right ^= SP[3][((temp >> 14) & 0x3f) ^ *kp++];
- right ^= SP[4][((temp >> 10) & 0x3f) ^ *kp++];
- right ^= SP[5][((temp >> 6) & 0x3f) ^ *kp++];
- right ^= SP[6][((temp >> 2) & 0x3f) ^ *kp++];
- right ^= SP[7][(((left << 1) | ((left & 0x80000000)?1:0))
- & 0x3f) ^ *kp++];
-
- /*
- * By the time we get here, all is straightened out
- * again. `left' is left and `right' is right.
- */
- }
-
- /*
- * Now the final permutation. Note this is like the IP above
- * except that the data is computed from
- *
- * ((left & 0x0f0f0f0f) << 4) | (right & 0x0f0f0f0f) for left result
- * (left & 0xf0f0f0f0) | ((right & 0xf0f0f0f0) >> 4) for right result
- *
- * Just to confuse things more, we're supposed to swap the right
- * and the left halves before doing this. Instead, we'll just
- * switch which goes where when computing the temporary.
- *
- * This operation also byte swaps stuff back into big end byte
- * order. This is accomplished by modifying the FP table for
- * little end machines, however, so we don't have to worry about
- * it here.
- */
- temp = ((right & 0x0f0f0f0f) << 4) | (left & 0x0f0f0f0f);
- *data = (FP[(temp >> 24) & 0xff] << 6)
- | (FP[(temp >> 16) & 0xff] << 4)
- | (FP[(temp >> 8) & 0xff] << 2)
- | FP[temp & 0xff];
-
- temp = (right & 0xf0f0f0f0) | ((left & 0xf0f0f0f0) >> 4);
- *(data+1) = (FP[(temp >> 24) & 0xff] << 6)
- | (FP[(temp >> 16) & 0xff] << 4)
- | (FP[(temp >> 8) & 0xff] << 2)
- | FP[temp & 0xff];
-};
diff --git a/share/doc/FAQ/Makefile b/share/doc/FAQ/Makefile
index 40ecc8aa7790..dce0bd70c52e 100644
--- a/share/doc/FAQ/Makefile
+++ b/share/doc/FAQ/Makefile
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile,v 1.1 1995/09/08 19:40:04 jfieber Exp $
DOC= freebsd-faq
SRCS= freebsd-faq.sgml
diff --git a/share/doc/FAQ/freebsd-faq.sgml b/share/doc/FAQ/freebsd-faq.sgml
index ff2be18672de..82185d1c1284 100644
--- a/share/doc/FAQ/freebsd-faq.sgml
+++ b/share/doc/FAQ/freebsd-faq.sgml
@@ -4,7 +4,7 @@
<title>Frequently Asked Questions for FreeBSD 2.X
<author>The FreeBSD FAQ Team, <tt/FAQ@FreeBSD.ORG/
-<date> $Id: freebsd-faq.sgml,v 1.19 1995/11/13 22:53:21 roberto Exp $
+<date> $Id: freebsd-faq.sgml,v 1.4.4.3 1995/11/15 07:58:12 jkh Exp $
<abstract>
This is the FAQ for FreeBSD systems version 2.X All entries are
assumed to be relevant to FreeBSD 2.0.5+, unless otherwise noted.
diff --git a/share/doc/Makefile b/share/doc/Makefile
index 170aaf64254f..b33ef09bbb49 100644
--- a/share/doc/Makefile
+++ b/share/doc/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 6/5/93
-# $Id: Makefile,v 1.7 1995/10/18 05:07:43 jfieber Exp $
+# $Id: Makefile,v 1.4.4.3 1995/10/18 05:08:52 jfieber Exp $
SUBDIR= FAQ handbook psd smm usd papers
diff --git a/share/doc/handbook/Makefile b/share/doc/handbook/Makefile
index 25553dc92b95..67e654426211 100644
--- a/share/doc/handbook/Makefile
+++ b/share/doc/handbook/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.6 1995/10/14 21:49:43 jfieber Exp $
+# $Id: Makefile,v 1.1.2.2 1995/10/14 21:55:29 jfieber Exp $
SRCS= authors.sgml basics.sgml bibliography.sgml boothelp.sgml
SRCS+= booting.sgml contrib.sgml crypt.sgml ctm.sgml current.sgml dialup.sgml
diff --git a/share/doc/handbook/authors.sgml b/share/doc/handbook/authors.sgml
index 6e1b8d963558..8ce9212f6480 100644
--- a/share/doc/handbook/authors.sgml
+++ b/share/doc/handbook/authors.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: authors.sgml,v 1.10 1995/10/07 04:31:13 jfieber Exp $ -->
+<!-- $Id: authors.sgml,v 1.3.4.3 1995/10/22 00:50:22 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
<!--
diff --git a/share/doc/handbook/basics.sgml b/share/doc/handbook/basics.sgml
index 37f5245ab53e..bde96347db01 100644
--- a/share/doc/handbook/basics.sgml
+++ b/share/doc/handbook/basics.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: basics.sgml,v 1.3 1995/06/30 17:37:29 jfieber Exp $ -->
+<!-- $Id: basics.sgml,v 1.1.1.1.4.3 1995/10/22 00:50:23 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
<chapt><heading>Unix Basics<label id="basics"></heading>
diff --git a/share/doc/handbook/bibliography.sgml b/share/doc/handbook/bibliography.sgml
index 6c69e2e7d6a5..270e758ac240 100644
--- a/share/doc/handbook/bibliography.sgml
+++ b/share/doc/handbook/bibliography.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: bibliography.sgml,v 1.4 1995/09/27 00:46:14 jmz Exp $ -->
+<!-- $Id: bibliography.sgml,v 1.1.1.1.4.2 1995/10/12 03:15:45 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
<chapt>
diff --git a/share/doc/handbook/boothelp.sgml b/share/doc/handbook/boothelp.sgml
index fbda261aa669..d4ac5ff22c03 100644
--- a/share/doc/handbook/boothelp.sgml
+++ b/share/doc/handbook/boothelp.sgml
@@ -1,4 +1,4 @@
-<!-- $Id$ -->
+<!-- $Id: boothelp.sgml,v 1.1 1995/09/03 21:12:24 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
<!DOCTYPE linuxdoc PUBLIC "-//FreeBSD//DTD linuxdoc//EN" [
diff --git a/share/doc/handbook/booting.sgml b/share/doc/handbook/booting.sgml
index 475fac0c69f6..2e33cbcb6908 100644
--- a/share/doc/handbook/booting.sgml
+++ b/share/doc/handbook/booting.sgml
@@ -3,7 +3,7 @@
This conversion has been made by Ollivier Robert.
- $Id: booting.sgml,v 1.7 1995/10/07 04:31:15 jfieber Exp $
+ $Id: booting.sgml,v 1.2.4.3 1995/10/22 00:50:24 jfieber Exp $
<!DOCTYPE linuxdoc PUBLIC "-//FreeBSD//DTD linuxdoc//EN">
diff --git a/share/doc/handbook/contrib.sgml b/share/doc/handbook/contrib.sgml
index 21669b3dce1b..f62dd5b596fd 100644
--- a/share/doc/handbook/contrib.sgml
+++ b/share/doc/handbook/contrib.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: contrib.sgml,v 1.37 1995/11/14 23:58:40 asami Exp $ -->
+<!-- $Id: contrib.sgml,v 1.15.2.5 1995/11/15 07:51:46 jkh Exp $ -->
<!-- The FreeBSD Documentation Project -->
<chapt><heading>FreeBSD contributor list<label id="contrib"></heading>
diff --git a/share/doc/handbook/crypt.sgml b/share/doc/handbook/crypt.sgml
index 2efe3504cdaa..2c0818b289c0 100644
--- a/share/doc/handbook/crypt.sgml
+++ b/share/doc/handbook/crypt.sgml
@@ -1,4 +1,4 @@
-<!-- $Id$ -->
+<!-- $Id: crypt.sgml,v 1.1 1995/09/25 04:53:28 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
<sect><heading>DES, MD5, and Crypt<label id="crypt"></heading>
diff --git a/share/doc/handbook/ctm.sgml b/share/doc/handbook/ctm.sgml
index e158c311cff3..6f0d9028d947 100644
--- a/share/doc/handbook/ctm.sgml
+++ b/share/doc/handbook/ctm.sgml
@@ -3,7 +3,7 @@
#
# Converted by Ollivier RObert <roberto@FreeBSD.ORG>
#
-# $Id: ctm.sgml,v 1.5 1995/10/16 09:11:22 jkh Exp $
+# $Id: ctm.sgml,v 1.1.1.1.4.3 1995/10/18 04:36:18 jfieber Exp $
#
# ----------------------------------------------------------------------------
# "THE BEER-WARE LICENSE" (Revision 42):
diff --git a/share/doc/handbook/current.sgml b/share/doc/handbook/current.sgml
index fd341478effc..5e74e1205ce7 100644
--- a/share/doc/handbook/current.sgml
+++ b/share/doc/handbook/current.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: current.sgml,v 1.6 1995/10/16 09:01:52 jkh Exp $ -->
+<!-- $Id: current.sgml,v 1.2.4.3 1995/10/18 04:36:25 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
@@ -10,7 +10,7 @@
THE FREEBSD CURRENT POLICY
-Last updated: $Date: 1995/10/16 09:01:52 $
+Last updated: $Date: 1995/10/18 04:36:25 $
This document attempts to explain the rationale behind FreeBSD-current,
what you should expect should you decide to run it, and states some
diff --git a/share/doc/handbook/dialup.sgml b/share/doc/handbook/dialup.sgml
index 1505356690e4..aede3138e9a7 100644
--- a/share/doc/handbook/dialup.sgml
+++ b/share/doc/handbook/dialup.sgml
@@ -1,6 +1,6 @@
<!-- This is an SGML document in the linuxdoc DTD of the Tutorial for
Configuring a FreeBSD for Dialup Services by Guy Helmer.
- $Id: dialup.sgml,v 1.3 1995/08/29 01:42:35 jfieber Exp $
+ $Id: dialup.sgml,v 1.1.1.1.4.2 1995/10/12 03:15:53 jfieber Exp $
<!DOCTYPE linuxdoc PUBLIC "-//Linux//DTD linuxdoc//EN">
diff --git a/share/doc/handbook/diskless.sgml b/share/doc/handbook/diskless.sgml
index 2f070a06eb8f..3f7cfb11b7e6 100644
--- a/share/doc/handbook/diskless.sgml
+++ b/share/doc/handbook/diskless.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: diskless.sgml,v 1.2 1995/06/30 17:37:35 jfieber Exp $ -->
+<!-- $Id: diskless.sgml,v 1.1.1.1.4.2 1995/10/12 03:15:54 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
<sect><heading>Diskless operation<label id="diskless"></heading>
diff --git a/share/doc/handbook/dma.sgml b/share/doc/handbook/dma.sgml
index f1fbc2df0ecb..1ae7566d44ee 100644
--- a/share/doc/handbook/dma.sgml
+++ b/share/doc/handbook/dma.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: dma.sgml,v 1.1.2.1 1995/10/30 15:23:53 jfieber Exp $ -->
+<!-- $Id: dma.sgml,v 1.1.2.2 1995/11/01 16:40:14 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
<!--
diff --git a/share/doc/handbook/eresources.sgml b/share/doc/handbook/eresources.sgml
index 9ea902730aaf..2bd35553a043 100644
--- a/share/doc/handbook/eresources.sgml
+++ b/share/doc/handbook/eresources.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: eresources.sgml,v 1.2.4.2 1995/10/12 03:15:56 jfieber Exp $ -->
+<!-- $Id: eresources.sgml,v 1.2.4.3 1995/11/07 18:24:44 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
<chapt>
diff --git a/share/doc/handbook/esdi.sgml b/share/doc/handbook/esdi.sgml
index 6d2c3dee5df4..4be3c5fd16d2 100644
--- a/share/doc/handbook/esdi.sgml
+++ b/share/doc/handbook/esdi.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: esdi.sgml,v 1.1 1995/09/25 04:53:30 jfieber Exp $ -->
+<!-- $Id: esdi.sgml,v 1.2 1995/10/07 04:31:20 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
<!--
diff --git a/share/doc/handbook/firewalls.sgml b/share/doc/handbook/firewalls.sgml
index a1da2f7aaef3..40bf6e9b224d 100644
--- a/share/doc/handbook/firewalls.sgml
+++ b/share/doc/handbook/firewalls.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: firewalls.sgml,v 1.2 1995/11/01 00:42:17 gpalmer Exp $ -->
+<!-- $Id: firewalls.sgml,v 1.1.2.1 1995/11/01 03:15:14 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
<sect><heading>Firewalls<label id="firewalls"></heading>
diff --git a/share/doc/handbook/glossary.sgml b/share/doc/handbook/glossary.sgml
index 99c1a205d40d..ad18d17426f1 100644
--- a/share/doc/handbook/glossary.sgml
+++ b/share/doc/handbook/glossary.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: glossary.sgml,v 1.3 1995/06/30 17:37:37 jfieber Exp $ -->
+<!-- $Id: glossary.sgml,v 1.1.1.1.4.2 1995/10/12 03:15:57 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
<chapt><heading>* Glossary<label id="glossary"></heading>
diff --git a/share/doc/handbook/handbook.sgml b/share/doc/handbook/handbook.sgml
index 370e7a5e3885..d53b485f6d7f 100644
--- a/share/doc/handbook/handbook.sgml
+++ b/share/doc/handbook/handbook.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: handbook.sgml,v 1.7.4.4 1995/10/26 21:40:20 jfieber Exp $ -->
+<!-- $Id: handbook.sgml,v 1.7.4.5 1995/10/30 17:48:17 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
<!DOCTYPE linuxdoc PUBLIC "-//FreeBSD//DTD linuxdoc//EN" [
diff --git a/share/doc/handbook/history.sgml b/share/doc/handbook/history.sgml
index 6d606f6eb258..b68b22b9fa52 100644
--- a/share/doc/handbook/history.sgml
+++ b/share/doc/handbook/history.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: history.sgml,v 1.10 1995/11/15 07:44:56 jkh Exp $ -->
+<!-- $Id: history.sgml,v 1.1.4.5 1995/11/15 07:50:30 jkh Exp $ -->
<!-- The FreeBSD Documentation Project -->
<sect><heading>A brief history of FreeBSD<label id="history"></heading>
diff --git a/share/doc/handbook/hw.sgml b/share/doc/handbook/hw.sgml
index 6ff7817f8bde..091b2e2099c8 100644
--- a/share/doc/handbook/hw.sgml
+++ b/share/doc/handbook/hw.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: hw.sgml,v 1.8 1995/10/07 04:31:26 jfieber Exp $ -->
+<!-- $Id: hw.sgml,v 1.6.2.1 1995/10/12 03:16:02 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
<!--
diff --git a/share/doc/handbook/install.sgml b/share/doc/handbook/install.sgml
index 56e7d2633b9a..a7f5b54ade21 100644
--- a/share/doc/handbook/install.sgml
+++ b/share/doc/handbook/install.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: install.sgml,v 1.9.2.3 1995/10/22 00:50:28 jfieber Exp $ -->
+<!-- $Id: install.sgml,v 1.9.2.5 1995/10/30 17:48:19 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
<!--
diff --git a/share/doc/handbook/kerberos.sgml b/share/doc/handbook/kerberos.sgml
index db45bbdf1c72..96459e1f4b9b 100644
--- a/share/doc/handbook/kerberos.sgml
+++ b/share/doc/handbook/kerberos.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: kerberos.sgml,v 1.5 1995/09/27 00:46:21 jmz Exp $ -->
+<!-- $Id: kerberos.sgml,v 1.2.4.2 1995/10/12 03:16:05 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
<sect><heading>Kerberos<label id="kerberos"></heading>
diff --git a/share/doc/handbook/kernelconfig.sgml b/share/doc/handbook/kernelconfig.sgml
index 98b15a1d8f80..5e1b6cca9564 100644
--- a/share/doc/handbook/kernelconfig.sgml
+++ b/share/doc/handbook/kernelconfig.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: kernelconfig.sgml,v 1.1 1995/10/07 04:31:31 jfieber Exp $ -->
+<!-- $Id: kernelconfig.sgml,v 1.1.2.1 1995/10/22 00:50:29 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
<!-- <!DOCTYPE linuxdoc PUBLIC '-//FreeBSD//DTD linuxdoc//EN'> -->
<chapt><heading>Configuring the FreeBSD Kernel<label id="kernelconfig"></heading>
diff --git a/share/doc/handbook/kerneldebug.sgml b/share/doc/handbook/kerneldebug.sgml
index 685ebea8c239..4c5e31128e95 100644
--- a/share/doc/handbook/kerneldebug.sgml
+++ b/share/doc/handbook/kerneldebug.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: kerneldebug.sgml,v 1.4 1995/09/27 00:46:22 jmz Exp $ -->
+<!-- $Id: kerneldebug.sgml,v 1.3.2.2 1995/10/22 00:50:30 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
<chapt><heading>Kernel Debugging<label id="kerneldebug"></heading>
diff --git a/share/doc/handbook/memoryuse.sgml b/share/doc/handbook/memoryuse.sgml
index bb5baee34005..05b4fcb33e51 100644
--- a/share/doc/handbook/memoryuse.sgml
+++ b/share/doc/handbook/memoryuse.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: memoryuse.sgml,v 1.3 1995/09/25 04:53:33 jfieber Exp $ -->
+<!-- $Id: memoryuse.sgml,v 1.1.4.3 1995/10/22 00:50:32 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
<sect><heading>PC memory utilization<label id="memoryuse"></heading>
diff --git a/share/doc/handbook/mirrors.sgml b/share/doc/handbook/mirrors.sgml
index afb21e52576f..6c11f7e16e9f 100644
--- a/share/doc/handbook/mirrors.sgml
+++ b/share/doc/handbook/mirrors.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: mirrors.sgml,v 1.4 1995/10/16 08:56:17 jkh Exp $ -->
+<!-- $Id: mirrors.sgml,v 1.1.2.2 1995/10/18 04:36:31 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
<!--
diff --git a/share/doc/handbook/nfs.sgml b/share/doc/handbook/nfs.sgml
index fcce7203f769..e909f71b0b5e 100644
--- a/share/doc/handbook/nfs.sgml
+++ b/share/doc/handbook/nfs.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: nfs.sgml,v 1.3 1995/09/27 00:46:23 jmz Exp $ -->
+<!-- $Id: nfs.sgml,v 1.1.1.1.4.2 1995/10/12 03:16:20 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
<sect><heading>NFS<label id="nfs"></heading>
diff --git a/share/doc/handbook/nutshell.sgml b/share/doc/handbook/nutshell.sgml
index 9d8c2ae8aa64..fff9b783b6df 100644
--- a/share/doc/handbook/nutshell.sgml
+++ b/share/doc/handbook/nutshell.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: nutshell.sgml,v 1.6 1995/09/17 10:56:37 davidg Exp $ -->
+<!-- $Id: nutshell.sgml,v 1.1.4.2 1995/10/12 03:16:22 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
<sect><heading>FreeBSD in a nutshell<label id="nutshell"></heading>
diff --git a/share/doc/handbook/porting.sgml b/share/doc/handbook/porting.sgml
index 73ee39c6a869..0a7a26ba35a2 100644
--- a/share/doc/handbook/porting.sgml
+++ b/share/doc/handbook/porting.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: porting.sgml,v 1.8 1995/11/14 23:58:43 asami Exp $ -->
+<!-- $Id: porting.sgml,v 1.2.4.3 1995/11/16 01:59:13 jkh Exp $ -->
<!-- The FreeBSD Documentation Project -->
<sect><heading>Porting applications<label id="porting"></heading>
@@ -125,7 +125,7 @@
# Date created: 5 December 1994
# Whom: asami
#
- # $Id: porting.sgml,v 1.8 1995/11/14 23:58:43 asami Exp $
+ # $Id: porting.sgml,v 1.2.4.3 1995/11/16 01:59:13 jkh Exp $
#
DISTNAME= oneko-1.1b
@@ -882,7 +882,7 @@ lib/libtcl.so.7.3
person who wrote this Makefile]
# Whom: Satoshi Asami <asami@FreeBSD.ORG>
#
- # $Id: porting.sgml,v 1.8 1995/11/14 23:58:43 asami Exp $
+ # $Id: porting.sgml,v 1.2.4.3 1995/11/16 01:59:13 jkh Exp $
[ ^^^^ don't worry about this...it will be automatically filled in by CVS when
it is committed to our repository]
#
diff --git a/share/doc/handbook/ports.sgml b/share/doc/handbook/ports.sgml
index 4fd37eab1529..fd9bc8fa0595 100644
--- a/share/doc/handbook/ports.sgml
+++ b/share/doc/handbook/ports.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: ports.sgml,v 1.7 1995/09/27 00:46:26 jmz Exp $ -->
+<!-- $Id: ports.sgml,v 1.2.4.2 1995/10/12 03:16:27 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
<sect><heading>The Ports collection<label id="ports"></heading>
diff --git a/share/doc/handbook/ppp.sgml b/share/doc/handbook/ppp.sgml
index 41186779eda2..d28a21a229c3 100644
--- a/share/doc/handbook/ppp.sgml
+++ b/share/doc/handbook/ppp.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: ppp.sgml,v 1.5 1995/09/27 00:46:27 jmz Exp $ -->
+<!-- $Id: ppp.sgml,v 1.1.1.1.4.2 1995/10/12 03:16:29 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
<sect><heading>Setting up kernel PPP<label id="ppp"></heading>
diff --git a/share/doc/handbook/printing.sgml b/share/doc/handbook/printing.sgml
index fd6d75bd0b7f..842fb4b37468 100644
--- a/share/doc/handbook/printing.sgml
+++ b/share/doc/handbook/printing.sgml
@@ -1,7 +1,7 @@
<!-- This is an SGML document in the linuxdoc DTD describing
Printing with FreeBSD. By Sean Kelly, 1995.
- $Id: printing.sgml,v 1.1 1995/10/01 04:43:13 jfieber Exp $
+ $Id: printing.sgml,v 1.2 1995/10/01 22:16:19 jfieber Exp $
The FreeBSD Documentation Project
diff --git a/share/doc/handbook/relnotes.sgml b/share/doc/handbook/relnotes.sgml
index 83d0aad04d9f..236288ff18ca 100644
--- a/share/doc/handbook/relnotes.sgml
+++ b/share/doc/handbook/relnotes.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: relnotes.sgml,v 1.4.2.3 1995/10/30 16:18:55 jfieber Exp $ -->
+<!-- $Id: relnotes.sgml,v 1.4.2.4 1995/11/07 18:24:45 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
<!--
diff --git a/share/doc/handbook/routing.sgml b/share/doc/handbook/routing.sgml
index 5441cce05ffd..df35e1c26f0a 100644
--- a/share/doc/handbook/routing.sgml
+++ b/share/doc/handbook/routing.sgml
@@ -1,4 +1,4 @@
-<!-- $Id$ -->
+<!-- $Id: routing.sgml,v 1.1 1995/10/07 04:31:41 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
<!-- <!DOCTYPE linuxdoc PUBLIC '-//FreeBSD//DTD linuxdoc//EN'> -->
diff --git a/share/doc/handbook/scsi.sgml b/share/doc/handbook/scsi.sgml
index a73abe19b179..0d3149b46370 100644
--- a/share/doc/handbook/scsi.sgml
+++ b/share/doc/handbook/scsi.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: scsi.sgml,v 1.1.1.1.4.2 1995/10/12 03:16:32 jfieber Exp $ -->
+<!-- $Id: scsi.sgml,v 1.1.1.1.4.3 1995/10/30 15:23:57 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
<!--
diff --git a/share/doc/handbook/sections.sgml b/share/doc/handbook/sections.sgml
index 5d3fcdc9b558..75d468ecdd53 100644
--- a/share/doc/handbook/sections.sgml
+++ b/share/doc/handbook/sections.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: sections.sgml,v 1.6 1995/10/14 21:49:54 jfieber Exp $ -->
+<!-- $Id: sections.sgml,v 1.1.2.2 1995/10/14 21:55:34 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
<!-- Entities containing all the pieces of the handbook are -->
diff --git a/share/doc/handbook/skey.sgml b/share/doc/handbook/skey.sgml
index 865e2ca5cfe0..be6389fa407e 100644
--- a/share/doc/handbook/skey.sgml
+++ b/share/doc/handbook/skey.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: skey.sgml,v 1.2 1995/09/26 19:12:28 wollman Exp $ -->
+<!-- $Id: skey.sgml,v 1.3 1995/10/07 04:31:56 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
<!--
Copyright 1995 Massachusetts Institute of Technology
diff --git a/share/doc/handbook/slipc.sgml b/share/doc/handbook/slipc.sgml
index 68374c93524c..d7b9c3456d31 100644
--- a/share/doc/handbook/slipc.sgml
+++ b/share/doc/handbook/slipc.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: slipc.sgml,v 1.4 1995/10/07 04:31:59 jfieber Exp $ -->
+<!-- $Id: slipc.sgml,v 1.1.1.1.4.3 1995/10/12 03:16:35 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
<sect><heading>Setting up a SLIP client<label id="slipc"></heading>
diff --git a/share/doc/handbook/submitters.sgml b/share/doc/handbook/submitters.sgml
index b0680caa4f48..ea448d0a8ba1 100644
--- a/share/doc/handbook/submitters.sgml
+++ b/share/doc/handbook/submitters.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: submitters.sgml,v 1.8 1995/10/07 04:32:03 jfieber Exp $ -->
+<!-- $Id: submitters.sgml,v 1.2.4.2 1995/10/12 03:16:37 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
<chapt><heading>Contributing to FreeBSD<label id="submitters"></heading>
@@ -193,7 +193,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- $Id: submitters.sgml,v 1.8 1995/10/07 04:32:03 jfieber Exp $
+ $Id: submitters.sgml,v 1.2.4.2 1995/10/12 03:16:37 jfieber Exp $
</verb></tscreen>
For your convenience, a copy of this text can be found in
<tt>/usr/share/examples/etc/bsd-style-copyright</tt>.
diff --git a/share/doc/handbook/sup.sgml b/share/doc/handbook/sup.sgml
index b75ec5710f9c..cb4c6a6ac405 100644
--- a/share/doc/handbook/sup.sgml
+++ b/share/doc/handbook/sup.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: sup.sgml,v 1.8 1995/09/27 19:20:43 nate Exp $ -->
+<!-- $Id: sup.sgml,v 1.2.4.3 1995/10/12 03:16:39 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
diff --git a/share/doc/handbook/troubleshooting.sgml b/share/doc/handbook/troubleshooting.sgml
index 518bcef46d79..f251a0a4c8f4 100644
--- a/share/doc/handbook/troubleshooting.sgml
+++ b/share/doc/handbook/troubleshooting.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: troubleshooting.sgml,v 1.3 1995/07/07 22:25:55 jfieber Exp $ -->
+<!-- $Id: troubleshooting.sgml,v 1.1.1.1.4.2 1995/10/12 03:16:40 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
<chapt><heading>Troubleshooting<label id="troubleshooting"></heading>
diff --git a/share/doc/handbook/userppp.sgml b/share/doc/handbook/userppp.sgml
index cd1c50cdc66d..cd5c254ba333 100644
--- a/share/doc/handbook/userppp.sgml
+++ b/share/doc/handbook/userppp.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: userppp.sgml,v 1.2 1995/08/19 22:16:06 jfieber Exp $ -->
+<!-- $Id: userppp.sgml,v 1.3 1995/08/29 01:42:52 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
<sect>Setting up user PPP<label id="userppp">
diff --git a/share/doc/iso/ucb/program.nr b/share/doc/iso/ucb/program.nr
index a43166176bc6..a4dc5edbb5c2 100644
--- a/share/doc/iso/ucb/program.nr
+++ b/share/doc/iso/ucb/program.nr
@@ -1,5 +1,5 @@
-.\"$Header: program.nr,v 1.1 88/12/05 18:10:57 nhall Exp $
-.\"$Source: /usr/argo/doc/kernel/RCS/program.nr,v $
+.\"$Header: /home/ncvs/src/share/doc/iso/ucb/program.nr,v 1.1.1.1 1994/05/30 19:08:12 rgrimes Exp $
+.\"$Source: /home/ncvs/src/share/doc/iso/ucb/program.nr,v $
.\"
.\"
.\" FONT CONVENTIONS
diff --git a/share/doc/iso/wisc/appendix_a.nr b/share/doc/iso/wisc/appendix_a.nr
index 25228542e66d..d61df31eb8d6 100644
--- a/share/doc/iso/wisc/appendix_a.nr
+++ b/share/doc/iso/wisc/appendix_a.nr
@@ -1,4 +1,4 @@
-.\" $Header: appendix_a.nr,v 1.3 88/12/07 10:42:12 nhall Exp $
+.\" $Header: /home/ncvs/src/share/doc/iso/wisc/appendix_a.nr,v 1.1.1.1 1994/05/30 19:08:06 rgrimes Exp $
.(x
Appendix A
.)x
diff --git a/share/doc/iso/wisc/appendix_b.nr b/share/doc/iso/wisc/appendix_b.nr
index 01ade558e652..875c4e823ec0 100644
--- a/share/doc/iso/wisc/appendix_b.nr
+++ b/share/doc/iso/wisc/appendix_b.nr
@@ -1,4 +1,4 @@
-.\" $Header: appendix_b.nr,v 1.1 88/12/05 18:08:02 nhall Exp $
+.\" $Header: /home/ncvs/src/share/doc/iso/wisc/appendix_b.nr,v 1.1.1.1 1994/05/30 19:08:06 rgrimes Exp $
.(x
Appendix B
.)x
diff --git a/share/doc/iso/wisc/debug.nr b/share/doc/iso/wisc/debug.nr
index 352eeee05e7f..c59e703f5003 100644
--- a/share/doc/iso/wisc/debug.nr
+++ b/share/doc/iso/wisc/debug.nr
@@ -1,5 +1,5 @@
-.\"$Header: debug.nr,v 1.4 88/12/06 16:05:36 nhall Exp $
-.\"$Source: /usr/argo/doc/kernel/RCS/debug.nr,v $
+.\"$Header: /home/ncvs/src/share/doc/iso/wisc/debug.nr,v 1.1.1.1 1994/05/30 19:08:05 rgrimes Exp $
+.\"$Source: /home/ncvs/src/share/doc/iso/wisc/debug.nr,v $
.\"
.\" Program names should be in italics
.\"
diff --git a/share/doc/iso/wisc/errors.nr b/share/doc/iso/wisc/errors.nr
index 51b5eb5ff4be..56d1a8fcb089 100644
--- a/share/doc/iso/wisc/errors.nr
+++ b/share/doc/iso/wisc/errors.nr
@@ -1,5 +1,5 @@
-.\"$Header: errors.nr,v 1.2 88/12/06 16:06:07 nhall Exp $
-.\"$Source: /usr/argo/doc/kernel/RCS/errors.nr,v $
+.\"$Header: /home/ncvs/src/share/doc/iso/wisc/errors.nr,v 1.1.1.1 1994/05/30 19:08:05 rgrimes Exp $
+.\"$Source: /home/ncvs/src/share/doc/iso/wisc/errors.nr,v $
.NC "Error Handling"
This section describes the various ways that the ARGO kernel
handles errors.
diff --git a/share/doc/iso/wisc/parts.nr b/share/doc/iso/wisc/parts.nr
index 1cd70b12003e..19b8170cb690 100644
--- a/share/doc/iso/wisc/parts.nr
+++ b/share/doc/iso/wisc/parts.nr
@@ -1,5 +1,5 @@
-.\"$Header: parts.nr,v 1.1 88/12/05 18:10:50 nhall Exp $
-.\"$Source: /usr/argo/doc/kernel/RCS/parts.nr,v $
+.\"$Header: /home/ncvs/src/share/doc/iso/wisc/parts.nr,v 1.1.1.1 1994/05/30 19:08:06 rgrimes Exp $
+.\"$Source: /home/ncvs/src/share/doc/iso/wisc/parts.nr,v $
.\"
.\"
.\" LOOK FOR ALL CASES OF 'writing' (as in, "at this writing")
diff --git a/share/doc/iso/wisc/program.nr b/share/doc/iso/wisc/program.nr
index dfb33055260a..53dc594700b6 100644
--- a/share/doc/iso/wisc/program.nr
+++ b/share/doc/iso/wisc/program.nr
@@ -1,5 +1,5 @@
-.\"$Header: program.nr,v 1.1 88/12/05 18:10:57 nhall Exp $
-.\"$Source: /usr/argo/doc/kernel/RCS/program.nr,v $
+.\"$Header: /home/ncvs/src/share/doc/iso/wisc/program.nr,v 1.1.1.1 1994/05/30 19:08:06 rgrimes Exp $
+.\"$Source: /home/ncvs/src/share/doc/iso/wisc/program.nr,v $
.\"
.\"
.\" FONT CONVENTIONS
diff --git a/share/doc/iso/wiscman/cons.4 b/share/doc/iso/wiscman/cons.4
index 73bd3fc60b9c..6c8ff5921ab5 100644
--- a/share/doc/iso/wiscman/cons.4
+++ b/share/doc/iso/wiscman/cons.4
@@ -3,9 +3,9 @@
.\" LICENSED MATERIALS - PROPERTY OF IBM
.\" REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083
.\"
-.\"$Header:cons.4_ca 11.3$
+.\"$Header: /home/ncvs/src/share/doc/iso/wiscman/cons.4,v 1.1.1.1 1994/05/30 19:08:11 rgrimes Exp $
.\"$ACIS:cons.4_ca 11.3$
-.\"$Source: /ibm/acis/usr/man/man4/RCS/cons.4_ca,v $
+.\"$Source: /home/ncvs/src/share/doc/iso/wiscman/cons.4,v $
.\" This file uses -man macros.
.TH CONS 4 "Sept 1988" "Space overwritten by .AC macro" " "
.AC 1 0
diff --git a/share/doc/iso/wiscman/if.4n b/share/doc/iso/wiscman/if.4n
index ca6884c75ac4..39895dbf06c7 100644
--- a/share/doc/iso/wiscman/if.4n
+++ b/share/doc/iso/wiscman/if.4n
@@ -3,9 +3,9 @@
# LICENSED MATERIALS - PROPERTY OF IBM
# REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083
#
-.\"# $Header:if.4n_ca 1.5$
+.\"# $Header: /home/ncvs/src/share/doc/iso/wiscman/if.4n,v 1.1.1.1 1994/05/30 19:08:12 rgrimes Exp $
.\"# $ACIS:if.4n_ca 1.5$
-.\"# $Source: /ibm/acis/usr/man/man4/RCS/if.4n_ca,v $
+.\"# $Source: /home/ncvs/src/share/doc/iso/wiscman/if.4n,v $
.\" @(#)if.4n 1.2 87/08/23 3.2/4.3NFSSRC
.\" @(#)if.4n 1.2 87/02/10 NFSSRC
.\" @(#)if.4n 1.1 86/09/25 SMI;
diff --git a/share/doc/iso/wiscman/rvd.4p b/share/doc/iso/wiscman/rvd.4p
index 44d7e8499af6..d2098dac68da 100644
--- a/share/doc/iso/wiscman/rvd.4p
+++ b/share/doc/iso/wiscman/rvd.4p
@@ -3,9 +3,9 @@
.\" LICENSED MATERIALS - PROPERTY OF IBM
.\" REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083
.\"
-.\"$Header:rvd.4p_ca 11.0$
+.\"$Header: /home/ncvs/src/share/doc/iso/wiscman/rvd.4p,v 1.1.1.1 1994/05/30 19:08:12 rgrimes Exp $
.\"$ACIS:rvd.4p_ca 11.0$
-.\"$Source: /ibm/acis/usr/man/man4/RCS/rvd.4p_ca,v $
+.\"$Source: /home/ncvs/src/share/doc/iso/wiscman/rvd.4p,v $
.\"This file contains -man macros.
.TH RVD 4P "July 1987" "Space overwritten by .AC macro" " "
.AC 1 0
diff --git a/share/doc/papers/Makefile b/share/doc/papers/Makefile
index cd1088603ca8..e3fd6961d744 100644
--- a/share/doc/papers/Makefile
+++ b/share/doc/papers/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1 1995/01/11 04:09:56 wollman Exp $
+# $Id: Makefile,v 1.2 1995/01/11 19:51:41 wollman Exp $
SUBDIR= beyond4.3 diskperf fsinterface kernmalloc kerntune memfs \
newvm nqnfs px relengr sysperf
diff --git a/share/doc/papers/beyond4.3/Makefile b/share/doc/papers/beyond4.3/Makefile
index 7f9858ebcfbf..6c3db75ed55b 100644
--- a/share/doc/papers/beyond4.3/Makefile
+++ b/share/doc/papers/beyond4.3/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 5.2 (Berkeley) 6/8/93
-# $Id$
+# $Id: Makefile,v 1.4 1995/01/11 04:10:00 wollman Exp $
VOLUME= papers
SRCS= beyond43.ms
diff --git a/share/doc/papers/diskperf/Makefile b/share/doc/papers/diskperf/Makefile
index 1b9ccd32348d..22dc271b35bd 100644
--- a/share/doc/papers/diskperf/Makefile
+++ b/share/doc/papers/diskperf/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 6.3 (Berkeley) 6/8/93
-# $Id$
+# $Id: Makefile,v 1.2 1995/01/11 04:10:01 wollman Exp $
VOLUME= papers
DOC= diskperf
diff --git a/share/doc/papers/fsinterface/Makefile b/share/doc/papers/fsinterface/Makefile
index 3eccadd88ab8..7017442b81f3 100644
--- a/share/doc/papers/fsinterface/Makefile
+++ b/share/doc/papers/fsinterface/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 5.3 (Berkeley) 6/8/93
-# $Id$
+# $Id: Makefile,v 1.3 1995/01/11 04:10:02 wollman Exp $
VOLUME= papers
DOC= fsinterface
diff --git a/share/doc/papers/kernmalloc/Makefile b/share/doc/papers/kernmalloc/Makefile
index 7c97c8224a0a..2d3f4ea1063d 100644
--- a/share/doc/papers/kernmalloc/Makefile
+++ b/share/doc/papers/kernmalloc/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 1.8 (Berkeley) 6/8/93
-# $Id$
+# $Id: Makefile,v 1.2 1995/01/11 04:10:03 wollman Exp $
VOLUME= papers
DOC= kernmalloc
diff --git a/share/doc/papers/kerntune/Makefile b/share/doc/papers/kerntune/Makefile
index 605d782e7eb5..f6b347e0f114 100644
--- a/share/doc/papers/kerntune/Makefile
+++ b/share/doc/papers/kerntune/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 1.5 (Berkeley) 6/8/93
-# $Id$
+# $Id: Makefile,v 1.2 1995/01/11 04:10:04 wollman Exp $
VOLUME= papers
DOC= kerntune
diff --git a/share/doc/papers/memfs/Makefile b/share/doc/papers/memfs/Makefile
index 033b7703641e..6b720dccae21 100644
--- a/share/doc/papers/memfs/Makefile
+++ b/share/doc/papers/memfs/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 1.8 (Berkeley) 6/8/93
-# $Id: Makefile,v 1.2 1995/01/11 04:10:05 wollman Exp $
+# $Id: Makefile,v 1.3 1995/01/22 16:49:22 bde Exp $
VOLUME= papers
DOC= memfs
diff --git a/share/doc/papers/newvm/Makefile b/share/doc/papers/newvm/Makefile
index 2bddf9d415f3..dde2f2610ac7 100644
--- a/share/doc/papers/newvm/Makefile
+++ b/share/doc/papers/newvm/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 1.4 (Berkeley) 6/8/93
-# $Id$
+# $Id: Makefile,v 1.2 1995/01/11 04:10:05 wollman Exp $
VOLUME= papers
DOC= newvm
diff --git a/share/doc/papers/nqnfs/Makefile b/share/doc/papers/nqnfs/Makefile
index 316cdd79fc00..ebd726a7f660 100644
--- a/share/doc/papers/nqnfs/Makefile
+++ b/share/doc/papers/nqnfs/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 4/20/94
-# $Id$
+# $Id: Makefile,v 1.2 1995/01/11 04:10:06 wollman Exp $
VOLUME= papers
DOC= nqnfs
diff --git a/share/doc/papers/px/Makefile b/share/doc/papers/px/Makefile
index f7282e5d3370..fb15007bc5c6 100644
--- a/share/doc/papers/px/Makefile
+++ b/share/doc/papers/px/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 5.3 (Berkeley) 6/8/93
-# $Id$
+# $Id: Makefile,v 1.2 1995/01/11 04:10:07 wollman Exp $
VOLUME= papers
DOC= px
diff --git a/share/doc/papers/relengr/Makefile b/share/doc/papers/relengr/Makefile
index da1b8bf66002..90ba1cdb195b 100644
--- a/share/doc/papers/relengr/Makefile
+++ b/share/doc/papers/relengr/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 1.6 (Berkeley) 6/8/93
-# $Id$
+# $Id: Makefile,v 1.3 1995/01/11 04:10:09 wollman Exp $
VOLUME= papers
DOC= releng
diff --git a/share/doc/papers/sysperf/Makefile b/share/doc/papers/sysperf/Makefile
index ae567bce547e..0d146c1ede03 100644
--- a/share/doc/papers/sysperf/Makefile
+++ b/share/doc/papers/sysperf/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 1.6 (Berkeley) 6/8/93
-# $Id$
+# $Id: Makefile,v 1.2 1995/01/11 04:10:10 wollman Exp $
VOLUME= papers
DOC= sysperf
diff --git a/share/doc/psd/05.sysman/Makefile b/share/doc/psd/05.sysman/Makefile
index 6881a28cf71e..ad2c6965f5ca 100644
--- a/share/doc/psd/05.sysman/Makefile
+++ b/share/doc/psd/05.sysman/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 6/8/93
-# $Id$
+# $Id: Makefile,v 1.2 1995/01/11 01:51:59 wollman Exp $
VOLUME= psd/05.sysman
SRCS= 0.t 1.0.t 1.1.t 1.2.t 1.3.t 1.4.t 1.5.t 1.6.t 1.7.t \
diff --git a/share/doc/psd/12.make/Makefile b/share/doc/psd/12.make/Makefile
index 0fad5f7396e1..e02451e7b4b8 100644
--- a/share/doc/psd/12.make/Makefile
+++ b/share/doc/psd/12.make/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 8/14/93
-# $Id$
+# $Id: Makefile,v 1.1 1995/01/11 01:52:00 wollman Exp $
VOLUME= psd/12.make
SRCS= tutorial.ms
diff --git a/share/doc/psd/18.gprof/Makefile b/share/doc/psd/18.gprof/Makefile
index 942c411bd33d..91b16e083e03 100644
--- a/share/doc/psd/18.gprof/Makefile
+++ b/share/doc/psd/18.gprof/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 8/14/93
-# $Id$
+# $Id: Makefile,v 1.1 1995/01/11 01:52:01 wollman Exp $
VOLUME= psd/18.gprof
SRCS= header.me abstract.me intro.me profiling.me gathering.me \
diff --git a/share/doc/psd/19.curses/Makefile b/share/doc/psd/19.curses/Makefile
index ce71b294f189..abfbc43b7dad 100644
--- a/share/doc/psd/19.curses/Makefile
+++ b/share/doc/psd/19.curses/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 8/14/93
-# $Id: Makefile,v 1.1 1995/01/11 01:52:02 wollman Exp $
+# $Id: Makefile,v 1.2 1995/02/08 21:27:09 bde Exp $
VOLUME= psd/19.curses
SRCS= Master
diff --git a/share/doc/psd/20.ipctut/Makefile b/share/doc/psd/20.ipctut/Makefile
index 2c8befd5e684..9cc8bc8a2817 100644
--- a/share/doc/psd/20.ipctut/Makefile
+++ b/share/doc/psd/20.ipctut/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 8/14/93
-# $Id$
+# $Id: Makefile,v 1.2 1995/01/11 01:52:03 wollman Exp $
VOLUME= psd/20.ipctut
SRCS= tutor.me
diff --git a/share/doc/psd/21.ipc/Makefile b/share/doc/psd/21.ipc/Makefile
index c825d14f3b65..1e6b18ccc339 100644
--- a/share/doc/psd/21.ipc/Makefile
+++ b/share/doc/psd/21.ipc/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 6/8/93
-# $Id$
+# $Id: Makefile,v 1.2 1995/01/11 01:52:04 wollman Exp $
VOLUME= psd/21.ipc
SRCS= 0.t 1.t 2.t 3.t 4.t 5.t
diff --git a/share/doc/psd/22.rpcgen/Makefile b/share/doc/psd/22.rpcgen/Makefile
index 6bf3fb638b59..34aadfe84f5d 100644
--- a/share/doc/psd/22.rpcgen/Makefile
+++ b/share/doc/psd/22.rpcgen/Makefile
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile,v 1.1 1995/01/11 01:52:05 wollman Exp $
VOLUME= psd/22.rpcgen
SRCS= rpcgen.ms
diff --git a/share/doc/psd/23.rpc/Makefile b/share/doc/psd/23.rpc/Makefile
index 78a0bcea7193..29368e48a0bb 100644
--- a/share/doc/psd/23.rpc/Makefile
+++ b/share/doc/psd/23.rpc/Makefile
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile,v 1.1 1995/01/11 01:52:06 wollman Exp $
VOLUME= psd/23.rpc
SRCS= rpc.prog.ms
diff --git a/share/doc/psd/24.xdr/Makefile b/share/doc/psd/24.xdr/Makefile
index dbff9a145e2a..77e41b2cccc2 100644
--- a/share/doc/psd/24.xdr/Makefile
+++ b/share/doc/psd/24.xdr/Makefile
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile,v 1.1 1995/01/11 01:52:06 wollman Exp $
VOLUME= psd/24.xdr
SRCS= xdr.nts.ms
diff --git a/share/doc/psd/25.xdrrfc/Makefile b/share/doc/psd/25.xdrrfc/Makefile
index 28bf75670c09..f100025340f4 100644
--- a/share/doc/psd/25.xdrrfc/Makefile
+++ b/share/doc/psd/25.xdrrfc/Makefile
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile,v 1.1 1995/01/11 01:52:07 wollman Exp $
VOLUME= psd/25.xdrrfc
SRCS= xdr.rfc.ms
diff --git a/share/doc/psd/26.rpcrfc/Makefile b/share/doc/psd/26.rpcrfc/Makefile
index 88107dea503b..1defdf854674 100644
--- a/share/doc/psd/26.rpcrfc/Makefile
+++ b/share/doc/psd/26.rpcrfc/Makefile
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile,v 1.1 1995/01/11 01:52:08 wollman Exp $
VOLUME= psd/26.rpcrfc
SRCS= rpc.rfc.ms
diff --git a/share/doc/psd/27.nfsrpc/Makefile b/share/doc/psd/27.nfsrpc/Makefile
index bcdc4274e13e..aded8eb88f23 100644
--- a/share/doc/psd/27.nfsrpc/Makefile
+++ b/share/doc/psd/27.nfsrpc/Makefile
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile,v 1.1 1995/01/11 01:52:09 wollman Exp $
VOLUME= psd/27.nfsrfc
SRCS= nfs.rfc.ms
diff --git a/share/doc/psd/Makefile b/share/doc/psd/Makefile
index 805dde5ec50c..e6165315845d 100644
--- a/share/doc/psd/Makefile
+++ b/share/doc/psd/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 6/8/93
-# $Id: Makefile,v 1.3 1995/01/11 04:24:41 wollman Exp $
+# $Id: Makefile,v 1.7 1995/01/12 20:57:11 wollman Exp $
# The following modules do not build/install:
# 10.gdb, 13.rcs
diff --git a/share/doc/psd/contents/Makefile b/share/doc/psd/contents/Makefile
index 421308f3e4ea..e70f7593684b 100644
--- a/share/doc/psd/contents/Makefile
+++ b/share/doc/psd/contents/Makefile
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile,v 1.1 1995/01/11 01:52:59 wollman Exp $
VOLUME= psd
SRCS= contents.ms
diff --git a/share/doc/psd/title/Makefile b/share/doc/psd/title/Makefile
index 9762851e7b26..6daa57b44d4c 100644
--- a/share/doc/psd/title/Makefile
+++ b/share/doc/psd/title/Makefile
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile,v 1.1 1995/01/11 01:53:03 wollman Exp $
VOLUME= psd
SRCS= Title
diff --git a/share/doc/smm/01.setup/Makefile b/share/doc/smm/01.setup/Makefile
index 0aabf0636ef1..f352a7af599c 100644
--- a/share/doc/smm/01.setup/Makefile
+++ b/share/doc/smm/01.setup/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 7/27/93
-# $Id$
+# $Id: Makefile,v 1.2 1995/01/11 00:15:04 wollman Exp $
VOLUME= smm/01.setup
SRCS= 0.t 1.t 2.t 3.t 4.t 5.t 6.t
diff --git a/share/doc/smm/02.config/Makefile b/share/doc/smm/02.config/Makefile
index 53ccfdb6b7c0..990cbfed332a 100644
--- a/share/doc/smm/02.config/Makefile
+++ b/share/doc/smm/02.config/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 6/8/93
-# $Id$
+# $Id: Makefile,v 1.1 1995/01/11 00:15:05 wollman Exp $
VOLUME= smm/02.config
SRCS= 0.t 1.t 2.t 3.t 4.t 5.t 6.t a.t b.t c.t d.t e.t
diff --git a/share/doc/smm/03.fsck/Makefile b/share/doc/smm/03.fsck/Makefile
index 055f7b85d80e..8579299332cd 100644
--- a/share/doc/smm/03.fsck/Makefile
+++ b/share/doc/smm/03.fsck/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 6/8/93
-# $Id$
+# $Id: Makefile,v 1.1 1995/01/11 00:15:06 wollman Exp $
VOLUME= smm/03.fsck
SRCS= 0.t 1.t 2.t 3.t 4.t
diff --git a/share/doc/smm/04.quotas/Makefile b/share/doc/smm/04.quotas/Makefile
index f97818a9d66b..70276effc478 100644
--- a/share/doc/smm/04.quotas/Makefile
+++ b/share/doc/smm/04.quotas/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 6/8/93
-# $Id$
+# $Id: Makefile,v 1.2 1995/01/11 00:15:07 wollman Exp $
VOLUME= smm/04.quotas
SRCS= quotas.ms
diff --git a/share/doc/smm/05.fastfs/Makefile b/share/doc/smm/05.fastfs/Makefile
index cbe4794c6493..9c308f776ae8 100644
--- a/share/doc/smm/05.fastfs/Makefile
+++ b/share/doc/smm/05.fastfs/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 6/8/93
-# $Id$
+# $Id: Makefile,v 1.2 1995/01/11 00:15:09 wollman Exp $
VOLUME= smm/05.fastfs
SRCS= 0.t 1.t 2.t 3.t 4.t 5.t 6.t
diff --git a/share/doc/smm/06.nfs/Makefile b/share/doc/smm/06.nfs/Makefile
index ff8f631a9da8..e73c6ea332ff 100644
--- a/share/doc/smm/06.nfs/Makefile
+++ b/share/doc/smm/06.nfs/Makefile
@@ -1,5 +1,5 @@
# @(#)Makefile 8.1 (Berkeley) 6/8/93
-# $Id$
+# $Id: Makefile,v 1.2 1995/01/11 00:15:10 wollman Exp $
VOLUME= smm/06.nfs
SRCS= 0.t 1.t 2.t ref.t
diff --git a/share/doc/smm/07.lpd/Makefile b/share/doc/smm/07.lpd/Makefile
index bab42d6baff0..2d440eb24cb3 100644
--- a/share/doc/smm/07.lpd/Makefile
+++ b/share/doc/smm/07.lpd/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 6/8/93
-# $Id$
+# $Id: Makefile,v 1.1 1995/01/11 00:15:12 wollman Exp $
VOLUME= smm/07.lpd
SRCS= 0.t 1.t 2.t 3.t 4.t 5.t 6.t 7.t
diff --git a/share/doc/smm/08.sendmailop/Makefile b/share/doc/smm/08.sendmailop/Makefile
index eecdd0db509a..910da8c91bdd 100644
--- a/share/doc/smm/08.sendmailop/Makefile
+++ b/share/doc/smm/08.sendmailop/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.2 (Berkeley) 2/28/94
-# $Id$
+# $Id: Makefile,v 1.1 1995/01/11 00:15:14 wollman Exp $
VOLUME= smm/08.sendmailop
SRCS= op.me
diff --git a/share/doc/smm/09.sendmail/Makefile b/share/doc/smm/09.sendmail/Makefile
index 77622cc0e8a5..e2f32508ea2b 100644
--- a/share/doc/smm/09.sendmail/Makefile
+++ b/share/doc/smm/09.sendmail/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.2 (Berkeley) 2/28/94
-# $Id$
+# $Id: Makefile,v 1.1 1995/01/11 00:15:15 wollman Exp $
VOLUME= smm/09.sendmail
SRCS= intro.me
diff --git a/share/doc/smm/11.timedop/Makefile b/share/doc/smm/11.timedop/Makefile
index 56f510610c1a..537bd74517e7 100644
--- a/share/doc/smm/11.timedop/Makefile
+++ b/share/doc/smm/11.timedop/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 6/8/93
-# $Id$
+# $Id: Makefile,v 1.1 1995/01/11 00:15:16 wollman Exp $
VOLUME= smm/11.timedop
SRCS= timed.ms
diff --git a/share/doc/smm/12.timed/Makefile b/share/doc/smm/12.timed/Makefile
index 3315cabb39fa..aa536651e4a9 100644
--- a/share/doc/smm/12.timed/Makefile
+++ b/share/doc/smm/12.timed/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 6/8/93
-# $Id$
+# $Id: Makefile,v 1.1 1995/01/11 00:15:17 wollman Exp $
VOLUME= smm/12.timed
SRCS= timed.ms
diff --git a/share/doc/smm/18.net/Makefile b/share/doc/smm/18.net/Makefile
index a8cbbae69f28..54ec1a139256 100644
--- a/share/doc/smm/18.net/Makefile
+++ b/share/doc/smm/18.net/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 6/10/93
-# $Id$
+# $Id: Makefile,v 1.3 1995/01/11 00:16:04 wollman Exp $
VOLUME= smm/18.net
SRCS= 0.t 1.t 2.t 3.t 4.t 5.t 6.t 7.t 8.t 9.t a.t b.t c.t d.t e.t f.t
diff --git a/share/doc/smm/Makefile b/share/doc/smm/Makefile
index 9f4b0be14f77..74b699b71749 100644
--- a/share/doc/smm/Makefile
+++ b/share/doc/smm/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 6/10/93
-# $Id: Makefile,v 1.2 1995/01/11 00:12:20 wollman Exp $
+# $Id: Makefile,v 1.3 1995/01/11 19:51:47 wollman Exp $
# The following modules do not describe FreeBSD:
# 14.uucpimpl, 15.uucpnet
diff --git a/share/doc/smm/contents/Makefile b/share/doc/smm/contents/Makefile
index 24d90896cb27..8734d81d1680 100644
--- a/share/doc/smm/contents/Makefile
+++ b/share/doc/smm/contents/Makefile
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile,v 1.1 1995/01/11 00:15:20 wollman Exp $
VOLUME= smm
SRCS= contents.ms
diff --git a/share/doc/smm/title/Makefile b/share/doc/smm/title/Makefile
index 98d12be9d03a..1fdae6bb91a2 100644
--- a/share/doc/smm/title/Makefile
+++ b/share/doc/smm/title/Makefile
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile,v 1.1 1995/01/11 00:15:22 wollman Exp $
VOLUME= smm
SRCS= Title
diff --git a/share/doc/usd/04.csh/Makefile b/share/doc/usd/04.csh/Makefile
index a0715282dc6e..772a0902303e 100644
--- a/share/doc/usd/04.csh/Makefile
+++ b/share/doc/usd/04.csh/Makefile
@@ -1,5 +1,5 @@
# @(#)Makefile 8.1 (Berkeley) 8/14/93
-# $Id: Makefile,v 1.2 1994/09/24 02:54:22 davidg Exp $
+# $Id: Makefile,v 1.1 1995/01/11 03:24:07 wollman Exp $
VOLUME= usd/04.csh
SRCS= tabs csh.1 csh.2 csh.3 csh.4 csh.a csh.g
diff --git a/share/doc/usd/07.mail/Makefile b/share/doc/usd/07.mail/Makefile
index c87560bebccd..a1d6f98425ea 100644
--- a/share/doc/usd/07.mail/Makefile
+++ b/share/doc/usd/07.mail/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 6/8/93
-# $Id$
+# $Id: Makefile,v 1.1 1995/01/11 03:24:08 wollman Exp $
VOLUME= usd/07.mail
SRCS= mail0.nr mail1.nr mail2.nr mail3.nr mail4.nr mail5.nr mail6.nr \
diff --git a/share/doc/usd/10.exref/Makefile b/share/doc/usd/10.exref/Makefile
index d1393a12d26d..087bd5611a61 100644
--- a/share/doc/usd/10.exref/Makefile
+++ b/share/doc/usd/10.exref/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 6/8/93
-# $Id: Makefile,v 1.4 1995/07/30 08:04:33 bde Exp $
+# $Id: Makefile,v 1.2.4.1 1995/09/17 11:19:50 davidg Exp $
VOLUME= usd/10.exref
SRCS= ex.rm
diff --git a/share/doc/usd/11.vitut/Makefile b/share/doc/usd/11.vitut/Makefile
index f77ba6d6a4aa..ee29a6154203 100644
--- a/share/doc/usd/11.vitut/Makefile
+++ b/share/doc/usd/11.vitut/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 6/8/93
-# $Id$
+# $Id: Makefile,v 1.1 1995/01/11 03:24:12 wollman Exp $
VOLUME= usd/11.edit
SRCS= edittut.ms
diff --git a/share/doc/usd/12.vi/Makefile b/share/doc/usd/12.vi/Makefile
index a077907981d3..4ccac97f30bb 100644
--- a/share/doc/usd/12.vi/Makefile
+++ b/share/doc/usd/12.vi/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 8/14/93
-# $Id: Makefile,v 1.3 1995/07/30 08:04:50 bde Exp $
+# $Id: Makefile,v 1.1.4.1 1995/09/17 11:19:51 davidg Exp $
VOLUME= usd/12.vi
SRCS= vi.in vi.chars
diff --git a/share/doc/usd/13.viref/Makefile b/share/doc/usd/13.viref/Makefile
index e5033022289d..b376cb39a8c4 100644
--- a/share/doc/usd/13.viref/Makefile
+++ b/share/doc/usd/13.viref/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.16 (Berkeley) 8/15/94
-# $Id: Makefile,v 1.1 1995/01/11 03:24:15 wollman Exp $
+# $Id: Makefile,v 1.2 1995/05/30 06:58:01 rgrimes Exp $
VOLUME= usd/13.viref
SRCS= vi.ref ${.OBJDIR}/index.so
diff --git a/share/doc/usd/18.msdiffs/Makefile b/share/doc/usd/18.msdiffs/Makefile
index 3a5456a89776..4e143e88f4b8 100644
--- a/share/doc/usd/18.msdiffs/Makefile
+++ b/share/doc/usd/18.msdiffs/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 6/8/93
-# $Id$
+# $Id: Makefile,v 1.2 1995/01/11 03:24:16 wollman Exp $
VOLUME= usd/18.msdiffs
SRCS= ms.diffs
diff --git a/share/doc/usd/19.memacros/Makefile b/share/doc/usd/19.memacros/Makefile
index 780c2b7669eb..1df96bd73881 100644
--- a/share/doc/usd/19.memacros/Makefile
+++ b/share/doc/usd/19.memacros/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 6/8/93
-# $Id$
+# $Id: Makefile,v 1.2 1995/01/11 03:24:18 wollman Exp $
VOLUME= usd/19.memacros
SRCS= intro.me
diff --git a/share/doc/usd/20.meref/Makefile b/share/doc/usd/20.meref/Makefile
index 8833858ff52a..297f78efb90e 100644
--- a/share/doc/usd/20.meref/Makefile
+++ b/share/doc/usd/20.meref/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 6/8/93
-# $Id$
+# $Id: Makefile,v 1.2 1995/01/11 03:24:19 wollman Exp $
VOLUME= usd/20.meref
SRCS= ref.me
diff --git a/share/doc/usd/30.rogue/Makefile b/share/doc/usd/30.rogue/Makefile
index fd9f1a43fe3d..d142c4fc5871 100644
--- a/share/doc/usd/30.rogue/Makefile
+++ b/share/doc/usd/30.rogue/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 6/8/93
-# $Id: Makefile,v 1.2 1995/01/14 19:55:40 jkh Exp $
+# $Id: Makefile,v 1.3 1995/02/19 09:11:30 rgrimes Exp $
.if exists(${.CURDIR}/../../../../games)
VOLUME= usd/30.rogue
diff --git a/share/doc/usd/31.trek/Makefile b/share/doc/usd/31.trek/Makefile
index d8fe835d891d..d0023255e0e4 100644
--- a/share/doc/usd/31.trek/Makefile
+++ b/share/doc/usd/31.trek/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 6/8/93
-# $Id: Makefile,v 1.1 1995/01/11 03:24:22 wollman Exp $
+# $Id: Makefile,v 1.2 1995/01/14 19:56:16 jkh Exp $
.if exists(${.CURDIR}/../../../../games)
VOLUME= usd/31.trek
diff --git a/share/doc/usd/Makefile b/share/doc/usd/Makefile
index 3ca9ffd5d0bf..4f8b0d1e2905 100644
--- a/share/doc/usd/Makefile
+++ b/share/doc/usd/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.2 (Berkeley) 4/20/94
-# $Id: Makefile,v 1.3 1995/01/12 20:58:10 wollman Exp $
+# $Id: Makefile,v 1.4 1995/05/30 06:57:59 rgrimes Exp $
# The following modules are encumbered:
# 01.begin 02.learn 03.shell 05.dc 06.bc 09.edtut 10.edadv 15.sed 16.awk
diff --git a/share/doc/usd/contents/Makefile b/share/doc/usd/contents/Makefile
index b7bc9c0cb0f0..71b402100342 100644
--- a/share/doc/usd/contents/Makefile
+++ b/share/doc/usd/contents/Makefile
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile,v 1.1 1995/01/11 03:24:24 wollman Exp $
VOLUME= usd
SRCS= contents.ms
diff --git a/share/doc/usd/title/Makefile b/share/doc/usd/title/Makefile
index 96df227f126b..bb07b01316be 100644
--- a/share/doc/usd/title/Makefile
+++ b/share/doc/usd/title/Makefile
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile,v 1.1 1995/01/11 03:24:28 wollman Exp $
VOLUME= usd
SRCS= Title
diff --git a/share/examples/FreeBSD_version/Makefile b/share/examples/FreeBSD_version/Makefile
index 685c2348f20e..e9e6e1f665b1 100644
--- a/share/examples/FreeBSD_version/Makefile
+++ b/share/examples/FreeBSD_version/Makefile
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile,v 1.1 1994/08/10 06:40:35 wollman Exp $
PROG= FreeBSD_version
NOMAN=
diff --git a/share/examples/Makefile b/share/examples/Makefile
index 334a288a7485..c7d3e1ec4467 100644
--- a/share/examples/Makefile
+++ b/share/examples/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.13.4.1 1995/10/13 09:03:49 jfieber Exp $
+# $Id: Makefile,v 1.13.4.2 1995/10/23 20:39:13 jkh Exp $
#
# Doing a make install builds /usr/share/examples
diff --git a/share/examples/etc/README.examples b/share/examples/etc/README.examples
index e15b3b7380a5..354ed5456273 100644
--- a/share/examples/etc/README.examples
+++ b/share/examples/etc/README.examples
@@ -1,4 +1,4 @@
-$Id$
+$Id: README.examples,v 1.1 1994/09/19 21:27:56 wollman Exp $
The /usr/share/examples/etc directory contains the original
distribution versions of the files which are shipped in /etc. This is
diff --git a/share/man/man0/Makefile b/share/man/man0/Makefile
index f612c8eb25bb..6b799e771cd4 100644
--- a/share/man/man0/Makefile
+++ b/share/man/man0/Makefile
@@ -3,7 +3,7 @@
# All rights reserved.
#
# From: @(#)Makefile 8.2 (Berkeley) 1/29/94
-# $Id$
+# $Id: Makefile,v 1.2 1995/01/11 21:33:43 wollman Exp $
#
SRCS= man1 man2 man3 man4 man5 man6 man7 man8
diff --git a/share/man/man4/inet.4 b/share/man/man4/inet.4
index f22c4e48e3ad..2a7f144504c6 100644
--- a/share/man/man4/inet.4
+++ b/share/man/man4/inet.4
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" From: @(#)inet.4 8.1 (Berkeley) 6/5/93
-.\" $Id: inet.4,v 1.2 1995/02/15 03:30:51 wollman Exp $
+.\" $Id: inet.4,v 1.3 1995/03/16 18:24:19 wollman Exp $
.\"
.Dd February 14, 1995
.Dt INET 4
diff --git a/share/man/man4/lkm.4 b/share/man/man4/lkm.4
index 51c1de4dd0fd..4e0319f753be 100644
--- a/share/man/man4/lkm.4
+++ b/share/man/man4/lkm.4
@@ -23,7 +23,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.\" $Id: lkm.4,v 1.2 1994/11/19 18:13:59 nate Exp $
+.\" $Id: lkm.4,v 1.3 1995/04/05 01:06:00 jkh Exp $
.\"
.Dd September 4, 1993
.Dt LKM 4
diff --git a/share/man/man4/man4.i386/cy.4 b/share/man/man4/man4.i386/cy.4
index c1e2dbd8fc3f..929840b8bfae 100644
--- a/share/man/man4/man4.i386/cy.4
+++ b/share/man/man4/man4.i386/cy.4
@@ -35,7 +35,7 @@
.\" from: @(#)dca.4 5.2 (Berkeley) 3/27/91
.\" from: com.4,v 1.1 1993/08/06 11:19:07 cgd Exp
.\" from: sio.4,v 1.16 1995/06/26 06:05:30 bde Exp $
-.\" $Id$
+.\" $Id: cy.4,v 1.1 1995/10/10 09:34:21 bde Exp $
.\"
.Dd October 10, 1995
.Dt CY 4 i386
diff --git a/share/man/man4/man4.i386/dgb.4 b/share/man/man4/man4.i386/dgb.4
index b72ae1412f53..969f597dd4e5 100644
--- a/share/man/man4/man4.i386/dgb.4
+++ b/share/man/man4/man4.i386/dgb.4
@@ -35,7 +35,7 @@
.\" from: @(#)dca.4 5.2 (Berkeley) 3/27/91
.\" from: com.4,v 1.1 1993/08/06 11:19:07 cgd Exp
.\" from: sio.4,v 1.15 1994/12/06 20:14:30 bde Exp
-.\" $Id$
+.\" $Id: dgb.4,v 1.1 1995/10/17 17:38:42 bde Exp $
.\"
.Dd Oct 13, 1995
.Dt DGB 4 i386
diff --git a/share/man/man4/man4.i386/ed.4 b/share/man/man4/man4.i386/ed.4
index 4b1e05b76f91..2ac7446ecaa9 100644
--- a/share/man/man4/man4.i386/ed.4
+++ b/share/man/man4/man4.i386/ed.4
@@ -28,7 +28,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $Id: ed.4,v 1.1 1994/08/23 09:50:48 davidg Exp $
+.\" $Id: ed.4,v 1.2 1994/08/23 10:51:40 davidg Exp $
.\"
.Dd August 22, 1994
.Dt ED 4 i386
diff --git a/share/man/man4/man4.i386/fe.4 b/share/man/man4/man4.i386/fe.4
index aa61f9b917c6..e491504f0b9b 100644
--- a/share/man/man4/man4.i386/fe.4
+++ b/share/man/man4/man4.i386/fe.4
@@ -20,7 +20,7 @@
.\" Contributed by M.S. <seki@sysrap.cs.fujitsu.co.jp>
.\" for fe driver version 0.8
.\"
-.\" $Id$
+.\" $Id: fe.4,v 1.1 1995/04/23 18:54:40 wollman Exp $
.Dd April 23, 1995
.Dt FE 4
.Sh NAME
diff --git a/share/man/man4/man4.i386/npx.4 b/share/man/man4/man4.i386/npx.4
index f904bd19fd87..dd1e4fe4b810 100644
--- a/share/man/man4/man4.i386/npx.4
+++ b/share/man/man4/man4.i386/npx.4
@@ -28,7 +28,7 @@
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" from: npx.4,v 1.1 1993/08/06 10:58:03 cgd Exp
-.\" $Id$
+.\" $Id: npx.4,v 1.1 1993/08/28 12:41:22 rgrimes Exp $
.\"
.Dd August 28, 1993
.Dt NPX 4 i386
diff --git a/share/man/man4/man4.i386/si.4 b/share/man/man4/man4.i386/si.4
index aa346f614167..f00d5ca17dd9 100644
--- a/share/man/man4/man4.i386/si.4
+++ b/share/man/man4/man4.i386/si.4
@@ -1,4 +1,4 @@
-.\" $Id$
+.\" $Id: si.4,v 1.1 1995/09/26 18:23:38 peter Exp $
.\" The following requests are required for all man pages.
.Dd September 16, 1995
.Os FreeBSD
diff --git a/share/man/man4/man4.i386/sio.4 b/share/man/man4/man4.i386/sio.4
index 67790426d6cb..7cabda775522 100644
--- a/share/man/man4/man4.i386/sio.4
+++ b/share/man/man4/man4.i386/sio.4
@@ -34,7 +34,7 @@
.\"
.\" from: @(#)dca.4 5.2 (Berkeley) 3/27/91
.\" from: com.4,v 1.1 1993/08/06 11:19:07 cgd Exp
-.\" $Id: sio.4,v 1.16 1995/06/26 06:05:30 bde Exp $
+.\" $Id: sio.4,v 1.15.4.1 1995/07/26 23:38:19 jkh Exp $
.\"
.Dd June 3, 1994
.Dt SIO 4 i386
diff --git a/share/man/man4/snp.4 b/share/man/man4/snp.4
index 2e00eadb89ca..66f246a023c8 100644
--- a/share/man/man4/snp.4
+++ b/share/man/man4/snp.4
@@ -1,5 +1,5 @@
.\"
-.\" $Id: snp.4,v 1.5 1995/02/27 19:45:57 ugen Exp $
+.\" $Id: snp.4,v 1.6 1995/02/28 00:24:47 pst Exp $
.\" $Source: /home/ncvs/src/share/man/man4/snp.4,v $
.\"
.Dd February 24, 1995
diff --git a/share/man/man4/tcp.4 b/share/man/man4/tcp.4
index 5aecf1d45e49..cb3604b10c29 100644
--- a/share/man/man4/tcp.4
+++ b/share/man/man4/tcp.4
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" From: @(#)tcp.4 8.1 (Berkeley) 6/5/93
-.\" $Id: tcp.4,v 1.3 1995/02/15 03:30:54 wollman Exp $
+.\" $Id: tcp.4,v 1.4 1995/02/15 22:07:27 wollman Exp $
.\"
.Dd February 14, 1995
.Dt TCP 4
diff --git a/share/man/man4/ttcp.4 b/share/man/man4/ttcp.4
index ab585fe98834..ccf9b8f1e3c9 100644
--- a/share/man/man4/ttcp.4
+++ b/share/man/man4/ttcp.4
@@ -25,7 +25,7 @@
.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $Id$
+.\" $Id: ttcp.4,v 1.1 1995/02/15 22:07:28 wollman Exp $
.\"
.Dd February 15, 1995
.Dt TTCP 4
diff --git a/share/man/man4/yp.4 b/share/man/man4/yp.4
index d87650491756..97681fdd0ba6 100644
--- a/share/man/man4/yp.4
+++ b/share/man/man4/yp.4
@@ -26,7 +26,7 @@
.\" SUCH DAMAGE.
.\"
.\" from: @(#)yp.8 1.0 (deraadt) 4/26/93
-.\" $Id: yp.4,v 1.4 1995/09/02 04:20:01 wpaul Exp $
+.\" $Id: yp.4,v 1.3.4.1 1995/10/05 20:50:09 davidg Exp $
.\"
.Dd April 5, 1993
.Dt YP 4
diff --git a/share/man/man5/a.out.5 b/share/man/man5/a.out.5
index f1869995895a..eea69cf1e02e 100644
--- a/share/man/man5/a.out.5
+++ b/share/man/man5/a.out.5
@@ -33,7 +33,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)a.out.5 8.1 (Berkeley) 6/5/93
-.\" $Id$
+.\" $Id: a.out.5,v 1.2 1994/12/23 22:41:45 nate Exp $
.\"
.Dd June 5, 1993
.Dt A.OUT 5
diff --git a/share/man/man5/ethers.5 b/share/man/man5/ethers.5
index beba6a9bc171..893bc938fc05 100644
--- a/share/man/man5/ethers.5
+++ b/share/man/man5/ethers.5
@@ -28,7 +28,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $Id$
+.\" $Id: ethers.5,v 1.1 1995/04/12 22:16:08 wpaul Exp $
.\"
.Dd April 12, 1995
.Dt ETHERS 5
diff --git a/share/man/man5/group.5 b/share/man/man5/group.5
index a785743544ca..4fee01be0860 100644
--- a/share/man/man5/group.5
+++ b/share/man/man5/group.5
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" From: @(#)group.5 8.3 (Berkeley) 4/19/94
-.\" $Id$
+.\" $Id: group.5,v 1.2 1994/09/20 22:44:35 wollman Exp $
.\"
.Dd September 29, 1994
.Dt GROUP 5
diff --git a/share/man/man5/link.5 b/share/man/man5/link.5
index c27e84ee9a2e..82c7874c8e03 100644
--- a/share/man/man5/link.5
+++ b/share/man/man5/link.5
@@ -26,7 +26,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.\" $Id: link.5,v 1.1 1994/12/23 22:41:46 nate Exp $
+.\" $Id: link.5,v 1.2 1995/04/16 12:35:13 ats Exp $
.\"
.Dd October 23, 1993
.Dt LINK 5
diff --git a/share/man/man5/procfs.5 b/share/man/man5/procfs.5
index 71d38d935c66..142f9f6f7b9e 100644
--- a/share/man/man5/procfs.5
+++ b/share/man/man5/procfs.5
@@ -1,4 +1,4 @@
-.\" $Id: procfs.5,v 1.1 1994/08/10 20:03:06 wollman Exp $
+.\" $Id: procfs.5,v 1.2 1994/08/10 20:03:54 wollman Exp $
.\" Written by Garrett Wollman
.\" This file is in the public domain.
.\"
diff --git a/share/mk/Makefile b/share/mk/Makefile
index d6e1c3a8c440..44d820473dc6 100644
--- a/share/mk/Makefile
+++ b/share/mk/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.9 1995/09/08 19:27:48 jfieber Exp $
+# $Id: Makefile,v 1.7.4.1 1995/09/18 03:27:17 davidg Exp $
# From: @(#)Makefile 8.1 (Berkeley) 6/8/93
FILES= bsd.README
diff --git a/share/mk/bsd.dep.mk b/share/mk/bsd.dep.mk
index 9c7afab83bb8..f07ea048c54a 100644
--- a/share/mk/bsd.dep.mk
+++ b/share/mk/bsd.dep.mk
@@ -1,4 +1,4 @@
-# $Id: bsd.dep.mk,v 1.1 1994/08/04 21:10:07 wollman Exp $
+# $Id: bsd.dep.mk,v 1.2 1995/02/08 21:35:24 bde Exp $
# some of the rules involve .h sources, so remove them from mkdep line
.if !target(depend)
diff --git a/share/mk/bsd.doc.mk b/share/mk/bsd.doc.mk
index 774a1035a306..c8eb75ca5352 100644
--- a/share/mk/bsd.doc.mk
+++ b/share/mk/bsd.doc.mk
@@ -1,5 +1,5 @@
# from: @(#)bsd.doc.mk 5.3 (Berkeley) 1/2/91
-# $Id: bsd.doc.mk,v 1.19.4.2 1995/10/15 08:32:22 jkh Exp $
+# $Id: bsd.doc.mk,v 1.19.4.3 1995/10/15 16:30:48 jkh Exp $
PRINTER?= ascii
diff --git a/share/mk/bsd.info.mk b/share/mk/bsd.info.mk
index 472ba22ded01..5d3e6deecbf4 100644
--- a/share/mk/bsd.info.mk
+++ b/share/mk/bsd.info.mk
@@ -1,4 +1,4 @@
-# $Id: bsd.info.mk,v 1.15 1995/07/27 15:03:27 wollman Exp $
+# $Id: bsd.info.mk,v 1.13.4.1 1995/09/17 11:14:36 davidg Exp $
BINMODE= 444
BINDIR?= /usr/share/info
diff --git a/share/mk/bsd.kmod.mk b/share/mk/bsd.kmod.mk
index d913b368a802..21dc8718d59c 100644
--- a/share/mk/bsd.kmod.mk
+++ b/share/mk/bsd.kmod.mk
@@ -1,5 +1,5 @@
# From: @(#)bsd.prog.mk 5.26 (Berkeley) 6/25/91
-# $Id: bsd.kmod.mk,v 1.10 1995/02/25 20:51:11 phk Exp $
+# $Id: bsd.kmod.mk,v 1.11 1995/03/20 19:18:51 wollman Exp $
.if exists(${.CURDIR}/../Makefile.inc)
.include "${.CURDIR}/../Makefile.inc"
diff --git a/share/mk/bsd.lib.mk b/share/mk/bsd.lib.mk
index bac67dd1229f..e5c17202bb97 100644
--- a/share/mk/bsd.lib.mk
+++ b/share/mk/bsd.lib.mk
@@ -1,5 +1,5 @@
# from: @(#)bsd.lib.mk 5.26 (Berkeley) 5/2/91
-# $Id: bsd.lib.mk,v 1.24 1995/03/28 17:54:11 nate Exp $
+# $Id: bsd.lib.mk,v 1.24.4.1 1995/08/27 03:12:58 davidg Exp $
#
.if exists(${.CURDIR}/../Makefile.inc)
diff --git a/share/mk/bsd.man.mk b/share/mk/bsd.man.mk
index 2dd9d99df1d6..78a070408de6 100644
--- a/share/mk/bsd.man.mk
+++ b/share/mk/bsd.man.mk
@@ -1,5 +1,5 @@
# from: @(#)bsd.man.mk 5.2 (Berkeley) 5/11/90
-# $Id: bsd.man.mk,v 1.3 1994/08/28 15:37:40 bde Exp $
+# $Id: bsd.man.mk,v 1.4 1994/12/28 03:50:51 ache Exp $
.if exists(${.CURDIR}/../Makefile.inc)
.include "${.CURDIR}/../Makefile.inc"
diff --git a/share/mk/bsd.own.mk b/share/mk/bsd.own.mk
index e6ea911b44f9..69a0f4be2318 100644
--- a/share/mk/bsd.own.mk
+++ b/share/mk/bsd.own.mk
@@ -1,4 +1,4 @@
-# $Id: bsd.own.mk,v 1.1 1994/08/04 21:10:08 wollman Exp $
+# $Id: bsd.own.mk,v 1.2 1994/09/16 14:30:21 jkh Exp $
BINGRP?= bin
BINOWN?= bin
diff --git a/share/mk/bsd.port.mk b/share/mk/bsd.port.mk
index 7e2b18647276..937374d1e842 100644
--- a/share/mk/bsd.port.mk
+++ b/share/mk/bsd.port.mk
@@ -3,7 +3,7 @@
# bsd.port.mk - 940820 Jordan K. Hubbard.
# This file is in the public domain.
#
-# $Id: bsd.port.mk,v 1.182 1995/10/04 23:22:21 ache Exp $
+# $Id: bsd.port.mk,v 1.165.2.2 1995/10/05 20:58:10 davidg Exp $
#
# Please view me with 4 column tabs!
diff --git a/share/mk/bsd.port.subdir.mk b/share/mk/bsd.port.subdir.mk
index b571142dcee3..486f2da95429 100644
--- a/share/mk/bsd.port.subdir.mk
+++ b/share/mk/bsd.port.subdir.mk
@@ -1,5 +1,5 @@
# from: @(#)bsd.subdir.mk 5.9 (Berkeley) 2/1/91
-# $Id: bsd.port.subdir.mk,v 1.10 1995/03/03 23:30:32 gpalmer Exp $
+# $Id: bsd.port.subdir.mk,v 1.11 1995/03/21 03:59:13 jkh Exp $
.MAIN: all
diff --git a/share/mk/bsd.prog.mk b/share/mk/bsd.prog.mk
index 74172c24f4a6..657d53aef5a4 100644
--- a/share/mk/bsd.prog.mk
+++ b/share/mk/bsd.prog.mk
@@ -1,5 +1,5 @@
# from: @(#)bsd.prog.mk 5.26 (Berkeley) 6/25/91
-# $Id: bsd.prog.mk,v 1.25 1995/04/26 14:34:19 jkh Exp $
+# $Id: bsd.prog.mk,v 1.26 1995/05/07 06:39:30 bde Exp $
.if exists(${.CURDIR}/../Makefile.inc)
.include "${.CURDIR}/../Makefile.inc"
diff --git a/share/mk/bsd.sgml.mk b/share/mk/bsd.sgml.mk
index bc9a1d8828ad..41ddf94accfb 100644
--- a/share/mk/bsd.sgml.mk
+++ b/share/mk/bsd.sgml.mk
@@ -1,7 +1,7 @@
# bsd.sgml.mk - 8 Sep 1995 John Fieber
# This file is in the public domain.
#
-# $Id: bsd.sgml.mk,v 1.3 1995/09/10 21:49:24 jfieber Exp $
+# $Id: bsd.sgml.mk,v 1.3.2.1 1995/10/15 08:33:48 jkh Exp $
.if exists(${.CURDIR}/../Makefile.inc)
.include "${.CURDIR}/../Makefile.inc"
diff --git a/share/mk/bsd.subdir.mk b/share/mk/bsd.subdir.mk
index ec2a5fa214e8..9da0febb156d 100644
--- a/share/mk/bsd.subdir.mk
+++ b/share/mk/bsd.subdir.mk
@@ -1,5 +1,5 @@
# from: @(#)bsd.subdir.mk 5.9 (Berkeley) 2/1/91
-# $Id: bsd.subdir.mk,v 1.7 1995/01/23 20:50:56 jkh Exp $
+# $Id: bsd.subdir.mk,v 1.8 1995/02/25 20:51:14 phk Exp $
.MAIN: all
diff --git a/share/mk/sys.mk b/share/mk/sys.mk
index 4143c90c5969..f80913665496 100644
--- a/share/mk/sys.mk
+++ b/share/mk/sys.mk
@@ -1,5 +1,5 @@
# from: @(#)sys.mk 8.2 (Berkeley) 3/21/94
-# $Id: sys.mk,v 1.9 1994/12/28 03:51:03 ache Exp $
+# $Id: sys.mk,v 1.9.4.1 1995/08/18 23:50:42 davidg Exp $
unix ?= We run FreeBSD, not UNIX.
diff --git a/share/sgml/FreeBSD/Makefile b/share/sgml/FreeBSD/Makefile
index 084125b1f217..0247ce185ff0 100644
--- a/share/sgml/FreeBSD/Makefile
+++ b/share/sgml/FreeBSD/Makefile
@@ -1,4 +1,4 @@
-# $Id:$
+# $Id: Makefile,v 1.1.1.1 1995/05/09 23:19:45 jfieber Exp $
SUBDIR= dtd rep lib
diff --git a/share/sgml/FreeBSD/Makefile.inc b/share/sgml/FreeBSD/Makefile.inc
index 847d34b5eb96..3e61d8021861 100644
--- a/share/sgml/FreeBSD/Makefile.inc
+++ b/share/sgml/FreeBSD/Makefile.inc
@@ -1,3 +1,3 @@
-# $Id:$
+# $Id: Makefile.inc,v 1.1.1.1 1995/05/09 23:19:45 jfieber Exp $
BINDIR?= /usr/share/sgml/FreeBSD
diff --git a/share/sgml/FreeBSD/dtd/Makefile b/share/sgml/FreeBSD/dtd/Makefile
index 10a7e94ab62e..a21c39056432 100644
--- a/share/sgml/FreeBSD/dtd/Makefile
+++ b/share/sgml/FreeBSD/dtd/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.2 1995/07/25 00:34:37 bde Exp $
+# $Id: Makefile,v 1.1.1.1.4.1 1995/09/17 23:42:31 davidg Exp $
FILES= linuxdoc linuxdoc.dec
NOOBJ= noobj
diff --git a/share/sgml/FreeBSD/lib/Makefile b/share/sgml/FreeBSD/lib/Makefile
index 4a3889986fb4..43e2778a27c4 100644
--- a/share/sgml/FreeBSD/lib/Makefile
+++ b/share/sgml/FreeBSD/lib/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.2 1995/07/25 00:34:47 bde Exp $
+# $Id: Makefile,v 1.1.1.1.4.1 1995/09/17 23:42:39 davidg Exp $
FILES= linuxdoc.sty
NOOBJ= noobj
diff --git a/share/sgml/FreeBSD/rep/Makefile b/share/sgml/FreeBSD/rep/Makefile
index 148fe871c99e..c9754d89d17d 100644
--- a/share/sgml/FreeBSD/rep/Makefile
+++ b/share/sgml/FreeBSD/rep/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.2 1995/07/25 00:34:52 bde Exp $
+# $Id: Makefile,v 1.1.1.1.4.1 1995/09/17 23:42:40 davidg Exp $
FILES= html.general html.mapping html.math latex.general latex.mapping
FILES+= latex.math nroff.general nroff.mapping nroff.math
diff --git a/share/sgml/Makefile b/share/sgml/Makefile
index ddc70e608bbc..aab931b9c141 100644
--- a/share/sgml/Makefile
+++ b/share/sgml/Makefile
@@ -1,4 +1,4 @@
-# $Id:$
+# $Id: Makefile,v 1.1.1.1 1995/05/09 23:19:45 jfieber Exp $
SUBDIR= FreeBSD
diff --git a/share/sgml/Makefile.inc b/share/sgml/Makefile.inc
index 0fd5d0e6cead..98600df65a7b 100644
--- a/share/sgml/Makefile.inc
+++ b/share/sgml/Makefile.inc
@@ -1,3 +1,3 @@
-# $Id:$
+# $Id: Makefile.inc,v 1.1.1.1 1995/05/09 23:19:45 jfieber Exp $
BINDIR?= /usr/share/sgml
diff --git a/share/syscons/Makefile b/share/syscons/Makefile
index 5ffd23a3556d..409a985eb771 100644
--- a/share/syscons/Makefile
+++ b/share/syscons/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.2 1993/09/30 23:24:48 jkh Exp $
+# $Id: Makefile,v 1.1 1994/09/25 03:42:20 ache Exp $
SUBDIR= fonts keymaps scrnmaps
diff --git a/share/syscons/fonts/INDEX.fonts b/share/syscons/fonts/INDEX.fonts
index 973931421aff..29439fde44fd 100644
--- a/share/syscons/fonts/INDEX.fonts
+++ b/share/syscons/fonts/INDEX.fonts
@@ -1,5 +1,5 @@
#
-# $Id: INDEX.fonts,v 1.7 1995/04/03 21:10:19 w Exp $
+# $Id: INDEX.fonts,v 1.2 1995/04/05 08:02:24 jkh Exp $
#
# database for vidfont(8)
#
diff --git a/share/syscons/fonts/Makefile b/share/syscons/fonts/Makefile
index 32a90865788f..f2dbb1821f0c 100644
--- a/share/syscons/fonts/Makefile
+++ b/share/syscons/fonts/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.5 1995/02/22 21:49:46 roberto Exp $
+# $Id: Makefile,v 1.6 1995/05/30 06:58:14 rgrimes Exp $
FONTS= cp437-8x8.fnt cp437-8x14.fnt cp437-8x16.fnt \
cp437-thin-8x8.fnt cp437-thin-8x16.fnt \
diff --git a/share/syscons/keymaps/INDEX.keymaps b/share/syscons/keymaps/INDEX.keymaps
index 0ad53123375d..e2f0f307266f 100644
--- a/share/syscons/keymaps/INDEX.keymaps
+++ b/share/syscons/keymaps/INDEX.keymaps
@@ -1,5 +1,5 @@
#
-# $Id: INDEX.keymaps,v 1.7 1995/04/03 21:10:48 w Exp $
+# $Id: INDEX.keymaps,v 1.3 1995/04/05 08:02:52 jkh Exp $
#
# database for kbdmap(8)
#
diff --git a/share/zoneinfo/Makefile b/share/zoneinfo/Makefile
index b279d8466387..6cfe49e3c793 100644
--- a/share/zoneinfo/Makefile
+++ b/share/zoneinfo/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.8 1995/11/16 02:00:38 gpalmer Exp $
+# $Id: Makefile,v 1.7.6.1 1995/11/16 02:03:30 gpalmer Exp $
NOBIN=
CLEANFILES+= yearistype
diff --git a/sys/Makefile b/sys/Makefile
index 00d80648ef6d..8cd55f2eff87 100644
--- a/sys/Makefile
+++ b/sys/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.2 1994/08/02 07:38:17 davidg Exp $
+# $Id: Makefile,v 1.3 1994/08/25 13:54:28 paul Exp $
SUBDIR= ${MACHINE}/boot libkern
diff --git a/sys/conf/newvers.sh b/sys/conf/newvers.sh
index a70cee69be1e..ff2beda426ab 100644
--- a/sys/conf/newvers.sh
+++ b/sys/conf/newvers.sh
@@ -32,12 +32,12 @@
# SUCH DAMAGE.
#
# @(#)newvers.sh 8.1 (Berkeley) 4/20/94
-# $Id: newvers.sh,v 1.16.4.2 1995/07/29 18:44:00 rgrimes Exp $
+# $Id: newvers.sh,v 1.16.4.3 1995/11/10 12:03:20 jkh Exp $
TYPE="FreeBSD"
REVISION="2.1"
BRANCH="STABLE"
-RELEASE="${REVISION}-${BRANCH}"
+RELEASE=2.1.0-RELEASE
SNAPDATE=""
if [ "X${SNAPDATE}" != "X" ]; then
RELEASE="${RELEASE}-${SNAPDATE}"
diff --git a/sys/conf/nfsswapkernel.c b/sys/conf/nfsswapkernel.c
index 80cb84a3734f..44e81ef5a9fc 100644
--- a/sys/conf/nfsswapkernel.c
+++ b/sys/conf/nfsswapkernel.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)nfsswapvmunix.c 8.1 (Berkeley) 6/10/93
- * $Id: nfsswapvmunix.c,v 1.2 1994/08/02 07:38:29 davidg Exp $
+ * $Id: nfsswapkernel.c,v 1.1 1994/08/05 09:25:31 davidg Exp $
*/
/*
diff --git a/sys/conf/param.c b/sys/conf/param.c
index a876f19829b1..453341efe749 100644
--- a/sys/conf/param.c
+++ b/sys/conf/param.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)param.c 8.2 (Berkeley) 1/21/94
- * $Id: param.c,v 1.9 1995/05/25 07:36:24 davidg Exp $
+ * $Id: param.c,v 1.9.4.1 1995/08/23 04:22:29 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/conf/systags.sh b/sys/conf/systags.sh
index 4cda02af41d8..7d8ec313c3cb 100644
--- a/sys/conf/systags.sh
+++ b/sys/conf/systags.sh
@@ -38,7 +38,7 @@
#
# First written May 16, 1992 by Van Jacobson, Lawrence Berkeley Laboratory.
#
-# $Id$
+# $Id: systags.sh,v 1.2 1994/08/02 07:38:32 davidg Exp $
rm -f tags tags.tmp tags.cfiles tags.sfiles tags.hfiles
MACHINE=`machine`
diff --git a/sys/ddb/db_access.c b/sys/ddb/db_access.c
index fb53d27f5f12..df6feaadde5d 100644
--- a/sys/ddb/db_access.c
+++ b/sys/ddb/db_access.c
@@ -23,7 +23,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: db_access.c,v 1.6 1994/08/18 22:34:18 wollman Exp $
+ * $Id: db_access.c,v 1.7 1995/05/30 07:56:46 rgrimes Exp $
*/
/*
diff --git a/sys/ddb/db_access.h b/sys/ddb/db_access.h
index dbf3d2112115..8a489d64ce6b 100644
--- a/sys/ddb/db_access.h
+++ b/sys/ddb/db_access.h
@@ -23,7 +23,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: db_access.h,v 1.3 1993/11/07 17:39:20 wollman Exp $
+ * $Id: db_access.h,v 1.4 1995/05/30 07:56:47 rgrimes Exp $
*/
#ifndef _DDB_DB_ACCESS_H_
diff --git a/sys/ddb/db_aout.c b/sys/ddb/db_aout.c
index 62cbba94b653..6893510cd794 100644
--- a/sys/ddb/db_aout.c
+++ b/sys/ddb/db_aout.c
@@ -23,7 +23,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: db_aout.c,v 1.10 1995/01/25 21:37:04 bde Exp $
+ * $Id: db_aout.c,v 1.11 1995/05/30 07:56:49 rgrimes Exp $
*/
/*
diff --git a/sys/ddb/db_break.c b/sys/ddb/db_break.c
index 05a4cc16a93c..bc112d431a95 100644
--- a/sys/ddb/db_break.c
+++ b/sys/ddb/db_break.c
@@ -23,7 +23,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: db_break.c,v 1.5 1994/08/18 22:34:19 wollman Exp $
+ * $Id: db_break.c,v 1.6 1995/05/30 07:56:50 rgrimes Exp $
*/
/*
diff --git a/sys/ddb/db_break.h b/sys/ddb/db_break.h
index efe62c717e29..a46662d04c97 100644
--- a/sys/ddb/db_break.h
+++ b/sys/ddb/db_break.h
@@ -23,7 +23,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: db_break.h,v 1.2 1993/10/16 16:47:09 rgrimes Exp $
+ * $Id: db_break.h,v 1.3 1995/05/30 07:56:51 rgrimes Exp $
*/
/*
diff --git a/sys/ddb/db_command.c b/sys/ddb/db_command.c
index 73b313a26ab3..47f69f0ecd36 100644
--- a/sys/ddb/db_command.c
+++ b/sys/ddb/db_command.c
@@ -23,7 +23,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: db_command.c,v 1.14 1995/08/27 02:39:39 bde Exp $
+ * $Id: db_command.c,v 1.13.4.1 1995/09/12 04:21:42 davidg Exp $
*/
/*
diff --git a/sys/ddb/db_command.h b/sys/ddb/db_command.h
index 3b6d77ae7102..aae91d44305d 100644
--- a/sys/ddb/db_command.h
+++ b/sys/ddb/db_command.h
@@ -23,7 +23,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: db_command.h,v 1.5 1994/08/18 22:34:21 wollman Exp $
+ * $Id: db_command.h,v 1.6 1995/05/30 07:56:54 rgrimes Exp $
*/
#ifndef _DDB_DB_COMMAND_H_
diff --git a/sys/ddb/db_examine.c b/sys/ddb/db_examine.c
index 8f321b936c85..ea46d42b4c6e 100644
--- a/sys/ddb/db_examine.c
+++ b/sys/ddb/db_examine.c
@@ -23,7 +23,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: db_examine.c,v 1.7 1995/05/22 13:07:11 davidg Exp $
+ * $Id: db_examine.c,v 1.8 1995/05/30 07:56:55 rgrimes Exp $
*/
/*
diff --git a/sys/ddb/db_expr.c b/sys/ddb/db_expr.c
index 8f4b78f99def..8e2dacf442ad 100644
--- a/sys/ddb/db_expr.c
+++ b/sys/ddb/db_expr.c
@@ -23,7 +23,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: db_expr.c,v 1.4 1994/08/13 03:49:18 wollman Exp $
+ * $Id: db_expr.c,v 1.5 1995/05/30 07:56:56 rgrimes Exp $
*/
/*
diff --git a/sys/ddb/db_input.c b/sys/ddb/db_input.c
index c3097742eb9f..9b02f2d0ebd1 100644
--- a/sys/ddb/db_input.c
+++ b/sys/ddb/db_input.c
@@ -23,7 +23,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: db_input.c,v 1.6 1994/08/18 22:34:23 wollman Exp $
+ * $Id: db_input.c,v 1.7 1995/05/30 07:56:58 rgrimes Exp $
*/
/*
diff --git a/sys/ddb/db_lex.c b/sys/ddb/db_lex.c
index 3985c4f67e34..5c4597bcafc0 100644
--- a/sys/ddb/db_lex.c
+++ b/sys/ddb/db_lex.c
@@ -23,7 +23,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: db_lex.c,v 1.5 1994/08/18 22:34:23 wollman Exp $
+ * $Id: db_lex.c,v 1.6 1995/05/30 07:57:00 rgrimes Exp $
*/
/*
diff --git a/sys/ddb/db_lex.h b/sys/ddb/db_lex.h
index 0be7d4ac4a18..278217ee429b 100644
--- a/sys/ddb/db_lex.h
+++ b/sys/ddb/db_lex.h
@@ -23,7 +23,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: db_lex.h,v 1.4 1994/08/18 22:34:24 wollman Exp $
+ * $Id: db_lex.h,v 1.5 1995/05/30 07:57:01 rgrimes Exp $
*/
#ifndef _DDB_DB_LEX_H_
diff --git a/sys/ddb/db_output.c b/sys/ddb/db_output.c
index ca92bfc912de..a2bcea107da6 100644
--- a/sys/ddb/db_output.c
+++ b/sys/ddb/db_output.c
@@ -23,7 +23,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: db_output.c,v 1.10 1994/10/30 20:55:44 bde Exp $
+ * $Id: db_output.c,v 1.11 1995/05/30 07:57:02 rgrimes Exp $
*/
/*
diff --git a/sys/ddb/db_output.h b/sys/ddb/db_output.h
index 3a2f5fd321a9..35999bd6f8ca 100644
--- a/sys/ddb/db_output.h
+++ b/sys/ddb/db_output.h
@@ -23,7 +23,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: db_output.h,v 1.6 1994/09/27 12:15:53 davidg Exp $
+ * $Id: db_output.h,v 1.7 1995/05/30 07:57:04 rgrimes Exp $
*/
#ifndef _DDB_DB_OUTPUT_H_
diff --git a/sys/ddb/db_print.c b/sys/ddb/db_print.c
index 7f0557b5c771..4cfd4cd9c846 100644
--- a/sys/ddb/db_print.c
+++ b/sys/ddb/db_print.c
@@ -23,7 +23,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: db_print.c,v 1.6 1994/09/27 03:34:56 phk Exp $
+ * $Id: db_print.c,v 1.7 1995/05/30 07:57:06 rgrimes Exp $
*/
/*
diff --git a/sys/ddb/db_ps.c b/sys/ddb/db_ps.c
index 639d1ee671ee..2714c16e943c 100644
--- a/sys/ddb/db_ps.c
+++ b/sys/ddb/db_ps.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: db_ps.c,v 1.6.4.1 1995/08/23 04:25:16 davidg Exp $
+ * $Id: db_ps.c,v 1.6.4.2 1995/09/12 04:21:43 davidg Exp $
*/
#include <sys/param.h>
#include <sys/systm.h>
diff --git a/sys/ddb/db_run.c b/sys/ddb/db_run.c
index e161a73228ce..6ac3eaedf519 100644
--- a/sys/ddb/db_run.c
+++ b/sys/ddb/db_run.c
@@ -23,7 +23,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: db_run.c,v 1.4 1994/08/13 03:49:22 wollman Exp $
+ * $Id: db_run.c,v 1.5 1995/05/30 07:57:08 rgrimes Exp $
*/
/*
diff --git a/sys/ddb/db_sym.c b/sys/ddb/db_sym.c
index 81c7b4d94a80..409a911bcb39 100644
--- a/sys/ddb/db_sym.c
+++ b/sys/ddb/db_sym.c
@@ -23,7 +23,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: db_sym.c,v 1.8 1995/05/22 13:07:12 davidg Exp $
+ * $Id: db_sym.c,v 1.9 1995/05/30 07:57:10 rgrimes Exp $
*/
/*
diff --git a/sys/ddb/db_sym.h b/sys/ddb/db_sym.h
index 319279dab56b..29088b690249 100644
--- a/sys/ddb/db_sym.h
+++ b/sys/ddb/db_sym.h
@@ -23,7 +23,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: db_sym.h,v 1.7 1995/03/16 18:11:00 bde Exp $
+ * $Id: db_sym.h,v 1.8 1995/05/30 07:57:11 rgrimes Exp $
*/
#ifndef _DDB_DB_SYM_H_
diff --git a/sys/ddb/db_trap.c b/sys/ddb/db_trap.c
index 83419b825537..0c7697ddb9e7 100644
--- a/sys/ddb/db_trap.c
+++ b/sys/ddb/db_trap.c
@@ -23,7 +23,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: db_trap.c,v 1.6 1994/10/02 19:36:21 phk Exp $
+ * $Id: db_trap.c,v 1.7 1995/05/30 07:57:14 rgrimes Exp $
*/
/*
diff --git a/sys/ddb/db_variables.c b/sys/ddb/db_variables.c
index 25485f5256c2..a22cc9dafabe 100644
--- a/sys/ddb/db_variables.c
+++ b/sys/ddb/db_variables.c
@@ -23,7 +23,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: db_variables.c,v 1.6 1994/09/27 03:34:58 phk Exp $
+ * $Id: db_variables.c,v 1.7 1995/05/30 07:57:17 rgrimes Exp $
*/
/*
diff --git a/sys/ddb/db_variables.h b/sys/ddb/db_variables.h
index 76aeedecaf62..631ef5e24e30 100644
--- a/sys/ddb/db_variables.h
+++ b/sys/ddb/db_variables.h
@@ -23,7 +23,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: db_variables.h,v 1.3 1993/11/25 01:30:14 wollman Exp $
+ * $Id: db_variables.h,v 1.4 1995/05/30 07:57:19 rgrimes Exp $
*/
/*
diff --git a/sys/ddb/db_watch.c b/sys/ddb/db_watch.c
index b74fab9e9fa6..5e5d0a81c978 100644
--- a/sys/ddb/db_watch.c
+++ b/sys/ddb/db_watch.c
@@ -23,7 +23,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: db_watch.c,v 1.5 1994/08/18 22:34:28 wollman Exp $
+ * $Id: db_watch.c,v 1.6 1995/05/30 07:57:20 rgrimes Exp $
*/
/*
diff --git a/sys/ddb/db_watch.h b/sys/ddb/db_watch.h
index 61cb7c1806bb..da9909a33037 100644
--- a/sys/ddb/db_watch.h
+++ b/sys/ddb/db_watch.h
@@ -23,7 +23,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: db_watch.h,v 1.3 1994/08/18 22:34:29 wollman Exp $
+ * $Id: db_watch.h,v 1.4 1995/05/30 07:57:21 rgrimes Exp $
*/
/*
diff --git a/sys/ddb/db_write_cmd.c b/sys/ddb/db_write_cmd.c
index 1b2a99e42c1f..2b06fa55141d 100644
--- a/sys/ddb/db_write_cmd.c
+++ b/sys/ddb/db_write_cmd.c
@@ -23,7 +23,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: db_write_cmd.c,v 1.4 1994/08/13 03:49:26 wollman Exp $
+ * $Id: db_write_cmd.c,v 1.5 1995/05/30 07:57:23 rgrimes Exp $
*/
/*
diff --git a/sys/ddb/ddb.h b/sys/ddb/ddb.h
index 23702b28cb7f..d20e696e7baf 100644
--- a/sys/ddb/ddb.h
+++ b/sys/ddb/ddb.h
@@ -27,7 +27,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: ddb.h,v 1.5 1995/03/16 18:11:01 bde Exp $
+ * $Id: ddb.h,v 1.6 1995/05/30 07:57:24 rgrimes Exp $
*/
/*
diff --git a/sys/dev/aic7xxx/aic7xxx.seq b/sys/dev/aic7xxx/aic7xxx.seq
index 357d76cc660e..7e3ebdf8f1df 100644
--- a/sys/dev/aic7xxx/aic7xxx.seq
+++ b/sys/dev/aic7xxx/aic7xxx.seq
@@ -41,7 +41,7 @@
#
##-M#########################################################################
-VERSION AIC7XXX_SEQ_VER "$Id: aic7xxx.seq,v 1.16.4.3 1995/10/29 09:45:26 davidg Exp $"
+VERSION AIC7XXX_SEQ_VER "$Id: aic7xxx.seq,v 1.16.4.4 1995/11/07 07:01:50 davidg Exp $"
SCBMASK = 0xff
diff --git a/sys/dev/aic7xxx/aic7xxx_asm.c b/sys/dev/aic7xxx/aic7xxx_asm.c
index e2745f094023..3a5b073052dc 100644
--- a/sys/dev/aic7xxx/aic7xxx_asm.c
+++ b/sys/dev/aic7xxx/aic7xxx_asm.c
@@ -43,7 +43,7 @@
* are token separators.
*
*-M*************************************************************************/
-static char id[] = "$Id: aic7xxx_asm.c,v 1.8 1995/04/15 21:45:56 gibbs Exp $";
+static char id[] = "$Id: aic7xxx_asm.c,v 1.9 1995/05/30 07:57:33 rgrimes Exp $";
#include <ctype.h>
#include <stdio.h>
#include <string.h>
diff --git a/sys/gnu/i386/fpemul/control_w.h b/sys/gnu/i386/fpemul/control_w.h
index 0e799c568f03..5a02225c5c34 100644
--- a/sys/gnu/i386/fpemul/control_w.h
+++ b/sys/gnu/i386/fpemul/control_w.h
@@ -54,7 +54,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: control_w.h,v 1.3 1994/06/10 07:44:07 rich Exp $
+ * $Id: control_w.h,v 1.4 1995/05/30 07:57:41 rgrimes Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/div_small.s b/sys/gnu/i386/fpemul/div_small.s
index d25313b3792c..aff2738fe43f 100644
--- a/sys/gnu/i386/fpemul/div_small.s
+++ b/sys/gnu/i386/fpemul/div_small.s
@@ -57,7 +57,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: div_small.s,v 1.2 1994/04/29 21:07:11 gclarkii Exp $
+ * $Id: div_small.s,v 1.3 1994/06/10 07:44:08 rich Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/errors.c b/sys/gnu/i386/fpemul/errors.c
index a303b3416f84..c917fd40de7b 100644
--- a/sys/gnu/i386/fpemul/errors.c
+++ b/sys/gnu/i386/fpemul/errors.c
@@ -56,7 +56,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: errors.c,v 1.3 1994/06/10 07:44:10 rich Exp $
+ * $Id: errors.c,v 1.4 1995/03/16 18:11:10 bde Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/exception.h b/sys/gnu/i386/fpemul/exception.h
index 11f9d02160d8..af814f1d5191 100644
--- a/sys/gnu/i386/fpemul/exception.h
+++ b/sys/gnu/i386/fpemul/exception.h
@@ -54,7 +54,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: exception.h,v 1.2 1994/04/29 21:07:13 gclarkii Exp $
+ * $Id: exception.h,v 1.3 1994/06/10 07:44:12 rich Exp $
*
*
*/
diff --git a/sys/gnu/i386/fpemul/fpu_arith.c b/sys/gnu/i386/fpemul/fpu_arith.c
index 5745e1b32d17..4321cf2c94f5 100644
--- a/sys/gnu/i386/fpemul/fpu_arith.c
+++ b/sys/gnu/i386/fpemul/fpu_arith.c
@@ -56,7 +56,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: fpu_arith.c,v 1.3 1994/06/10 07:44:14 rich Exp $
+ * $Id: fpu_arith.c,v 1.4 1995/05/30 07:57:43 rgrimes Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/fpu_asm.h b/sys/gnu/i386/fpemul/fpu_asm.h
index e618c04e1f35..2f6e58a65410 100644
--- a/sys/gnu/i386/fpemul/fpu_asm.h
+++ b/sys/gnu/i386/fpemul/fpu_asm.h
@@ -54,7 +54,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: fpu_asm.h,v 1.2 1994/04/29 21:07:14 gclarkii Exp $
+ * $Id: fpu_asm.h,v 1.3 1994/06/10 07:44:16 rich Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/fpu_aux.c b/sys/gnu/i386/fpemul/fpu_aux.c
index 629e45a79472..135fef9e105f 100644
--- a/sys/gnu/i386/fpemul/fpu_aux.c
+++ b/sys/gnu/i386/fpemul/fpu_aux.c
@@ -56,7 +56,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: fpu_aux.c,v 1.2 1994/04/29 21:16:19 gclarkii Exp $
+ * $Id: fpu_aux.c,v 1.3 1994/06/10 07:44:17 rich Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/fpu_emu.h b/sys/gnu/i386/fpemul/fpu_emu.h
index b62a9cf89476..b81a85127fec 100644
--- a/sys/gnu/i386/fpemul/fpu_emu.h
+++ b/sys/gnu/i386/fpemul/fpu_emu.h
@@ -54,7 +54,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: fpu_emu.h,v 1.2 1994/04/29 21:16:20 gclarkii Exp $
+ * $Id: fpu_emu.h,v 1.3 1994/06/10 07:44:19 rich Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/fpu_entry.c b/sys/gnu/i386/fpemul/fpu_entry.c
index edbe94d6aeea..d237df576347 100644
--- a/sys/gnu/i386/fpemul/fpu_entry.c
+++ b/sys/gnu/i386/fpemul/fpu_entry.c
@@ -55,7 +55,7 @@
*
* W. Metzenthen June 1994.
*
- * $Id: fpu_entry.c,v 1.5 1994/08/30 20:18:52 davidg Exp $
+ * $Id: fpu_entry.c,v 1.6 1995/05/30 07:57:45 rgrimes Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/fpu_etc.c b/sys/gnu/i386/fpemul/fpu_etc.c
index 936e39a8b8bb..9993d3bddfd4 100644
--- a/sys/gnu/i386/fpemul/fpu_etc.c
+++ b/sys/gnu/i386/fpemul/fpu_etc.c
@@ -56,7 +56,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: fpu_etc.c,v 1.2 1994/04/29 21:16:22 gclarkii Exp $
+ * $Id: fpu_etc.c,v 1.3 1994/06/10 07:44:24 rich Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/fpu_proto.h b/sys/gnu/i386/fpemul/fpu_proto.h
index c15c913899fb..4e6c71819c3b 100644
--- a/sys/gnu/i386/fpemul/fpu_proto.h
+++ b/sys/gnu/i386/fpemul/fpu_proto.h
@@ -1,6 +1,6 @@
/*
*
- * $Id: fpu_proto.h,v 1.2 1994/04/29 21:16:23 gclarkii Exp $
+ * $Id: fpu_proto.h,v 1.3 1995/03/16 18:11:11 bde Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/fpu_system.h b/sys/gnu/i386/fpemul/fpu_system.h
index bb9e5d04fdb4..c2dcfe14da6f 100644
--- a/sys/gnu/i386/fpemul/fpu_system.h
+++ b/sys/gnu/i386/fpemul/fpu_system.h
@@ -54,7 +54,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: fpu_system.h,v 1.3 1994/06/10 07:44:25 rich Exp $
+ * $Id: fpu_system.h,v 1.4 1995/05/30 07:57:51 rgrimes Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/fpu_trig.c b/sys/gnu/i386/fpemul/fpu_trig.c
index ca32f91d0aef..af2bd0553ce9 100644
--- a/sys/gnu/i386/fpemul/fpu_trig.c
+++ b/sys/gnu/i386/fpemul/fpu_trig.c
@@ -56,7 +56,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: fpu_trig.c,v 1.3 1994/04/29 21:16:25 gclarkii Exp $
+ * $Id: fpu_trig.c,v 1.4 1994/06/10 07:44:27 rich Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/get_address.c b/sys/gnu/i386/fpemul/get_address.c
index 5839e57c2684..957ea4e2eeba 100644
--- a/sys/gnu/i386/fpemul/get_address.c
+++ b/sys/gnu/i386/fpemul/get_address.c
@@ -56,7 +56,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: get_address.c,v 1.2 1994/04/29 21:16:26 gclarkii Exp $
+ * $Id: get_address.c,v 1.3 1994/06/10 07:44:29 rich Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/load_store.c b/sys/gnu/i386/fpemul/load_store.c
index e45b67ecefd8..0537a1106abb 100644
--- a/sys/gnu/i386/fpemul/load_store.c
+++ b/sys/gnu/i386/fpemul/load_store.c
@@ -57,7 +57,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: load_store.c,v 1.3 1994/06/10 07:44:30 rich Exp $
+ * $Id: load_store.c,v 1.4 1994/09/21 22:22:46 bde Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/math_emu.h b/sys/gnu/i386/fpemul/math_emu.h
index 4dc90b83a984..031d391595b5 100644
--- a/sys/gnu/i386/fpemul/math_emu.h
+++ b/sys/gnu/i386/fpemul/math_emu.h
@@ -1,6 +1,6 @@
/*
*
- * $Id:$
+ * $Id: math_emu.h,v 1.2 1994/04/29 21:23:24 gclarkii Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/poly_2xm1.c b/sys/gnu/i386/fpemul/poly_2xm1.c
index b7e81f241f1c..d4da1bb81527 100644
--- a/sys/gnu/i386/fpemul/poly_2xm1.c
+++ b/sys/gnu/i386/fpemul/poly_2xm1.c
@@ -56,7 +56,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: poly_2xm1.c,v 1.2 1994/04/29 21:23:25 gclarkii Exp $
+ * $Id: poly_2xm1.c,v 1.3 1994/06/10 07:44:32 rich Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/poly_atan.c b/sys/gnu/i386/fpemul/poly_atan.c
index 179049fcfb10..f597ed9af43e 100644
--- a/sys/gnu/i386/fpemul/poly_atan.c
+++ b/sys/gnu/i386/fpemul/poly_atan.c
@@ -56,7 +56,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: poly_atan.c,v 1.3 1994/04/29 21:23:26 gclarkii Exp $
+ * $Id: poly_atan.c,v 1.4 1994/06/10 07:44:34 rich Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/poly_div.s b/sys/gnu/i386/fpemul/poly_div.s
index 3ac5bf06fe1b..dce95ed82aae 100644
--- a/sys/gnu/i386/fpemul/poly_div.s
+++ b/sys/gnu/i386/fpemul/poly_div.s
@@ -57,7 +57,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: poly_div.s,v 1.2 1994/04/29 21:23:27 gclarkii Exp $
+ * $Id: poly_div.s,v 1.3 1994/06/10 07:44:36 rich Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/poly_l2.c b/sys/gnu/i386/fpemul/poly_l2.c
index 0607c1609d28..7c44103fd049 100644
--- a/sys/gnu/i386/fpemul/poly_l2.c
+++ b/sys/gnu/i386/fpemul/poly_l2.c
@@ -56,7 +56,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: poly_l2.c,v 1.4 1994/04/30 16:47:08 gclarkii Exp $
+ * $Id: poly_l2.c,v 1.5 1994/06/10 07:44:38 rich Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/poly_mul64.s b/sys/gnu/i386/fpemul/poly_mul64.s
index c0f5d0fc5ba9..be5a136a1299 100644
--- a/sys/gnu/i386/fpemul/poly_mul64.s
+++ b/sys/gnu/i386/fpemul/poly_mul64.s
@@ -59,7 +59,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: poly_mul64.s,v 1.2 1994/04/29 21:23:29 gclarkii Exp $
+ * $Id: poly_mul64.s,v 1.3 1994/06/10 07:44:39 rich Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/poly_sin.c b/sys/gnu/i386/fpemul/poly_sin.c
index a1aa11c1ca66..7c6751eb77ab 100644
--- a/sys/gnu/i386/fpemul/poly_sin.c
+++ b/sys/gnu/i386/fpemul/poly_sin.c
@@ -56,7 +56,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: poly_sin.c,v 1.4 1994/06/10 07:44:41 rich Exp $
+ * $Id: poly_sin.c,v 1.5 1994/08/31 04:45:22 davidg Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/poly_tan.c b/sys/gnu/i386/fpemul/poly_tan.c
index 6098c814b42f..58e3c904b148 100644
--- a/sys/gnu/i386/fpemul/poly_tan.c
+++ b/sys/gnu/i386/fpemul/poly_tan.c
@@ -56,7 +56,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: poly_tan.c,v 1.4 1994/06/10 07:44:42 rich Exp $
+ * $Id: poly_tan.c,v 1.5 1995/05/30 07:57:52 rgrimes Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/polynomial.s b/sys/gnu/i386/fpemul/polynomial.s
index f54c729fe6fd..8f48ff4183ae 100644
--- a/sys/gnu/i386/fpemul/polynomial.s
+++ b/sys/gnu/i386/fpemul/polynomial.s
@@ -64,7 +64,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: polynomial.s,v 1.2 1994/04/29 21:23:31 gclarkii Exp $
+ * $Id: polynomial.s,v 1.3 1994/06/10 07:44:43 rich Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/reg_add_sub.c b/sys/gnu/i386/fpemul/reg_add_sub.c
index a122452f19f9..ff8b0ea37c2e 100644
--- a/sys/gnu/i386/fpemul/reg_add_sub.c
+++ b/sys/gnu/i386/fpemul/reg_add_sub.c
@@ -55,7 +55,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: reg_add_sub.c,v 1.2 1994/04/29 21:30:15 gclarkii Exp $
+ * $Id: reg_add_sub.c,v 1.3 1994/06/10 07:44:44 rich Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/reg_compare.c b/sys/gnu/i386/fpemul/reg_compare.c
index 52623f72711a..606567186d7b 100644
--- a/sys/gnu/i386/fpemul/reg_compare.c
+++ b/sys/gnu/i386/fpemul/reg_compare.c
@@ -56,7 +56,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: reg_compare.c,v 1.4 1994/08/31 04:45:23 davidg Exp $
+ * $Id: reg_compare.c,v 1.5 1995/05/30 07:57:54 rgrimes Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/reg_constant.h b/sys/gnu/i386/fpemul/reg_constant.h
index 6e4ffa86d78e..d64a3d55f91b 100644
--- a/sys/gnu/i386/fpemul/reg_constant.h
+++ b/sys/gnu/i386/fpemul/reg_constant.h
@@ -54,7 +54,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: reg_constant.h,v 1.2 1994/04/29 21:30:18 gclarkii Exp $
+ * $Id: reg_constant.h,v 1.3 1994/06/10 07:44:49 rich Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/reg_div.s b/sys/gnu/i386/fpemul/reg_div.s
index 5de5a466c49f..8f7357530b7e 100644
--- a/sys/gnu/i386/fpemul/reg_div.s
+++ b/sys/gnu/i386/fpemul/reg_div.s
@@ -60,7 +60,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: reg_div.s,v 1.2 1994/04/29 21:30:19 gclarkii Exp $
+ * $Id: reg_div.s,v 1.3 1994/06/10 07:44:50 rich Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/reg_ld_str.c b/sys/gnu/i386/fpemul/reg_ld_str.c
index 8fde12fd18d4..f89882cb5884 100644
--- a/sys/gnu/i386/fpemul/reg_ld_str.c
+++ b/sys/gnu/i386/fpemul/reg_ld_str.c
@@ -56,7 +56,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: reg_ld_str.c,v 1.4 1994/08/31 04:45:24 davidg Exp $
+ * $Id: reg_ld_str.c,v 1.5 1994/09/21 22:22:48 bde Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/reg_mul.c b/sys/gnu/i386/fpemul/reg_mul.c
index b51e9fcf2ed7..5924e5e75df2 100644
--- a/sys/gnu/i386/fpemul/reg_mul.c
+++ b/sys/gnu/i386/fpemul/reg_mul.c
@@ -56,7 +56,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: reg_mul.c,v 1.2 1994/04/29 21:30:21 gclarkii Exp $
+ * $Id: reg_mul.c,v 1.3 1994/06/10 07:44:53 rich Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/reg_norm.s b/sys/gnu/i386/fpemul/reg_norm.s
index 6f9dd7c9693a..37b080e0271b 100644
--- a/sys/gnu/i386/fpemul/reg_norm.s
+++ b/sys/gnu/i386/fpemul/reg_norm.s
@@ -61,7 +61,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: reg_norm.s,v 1.2 1994/04/29 21:30:22 gclarkii Exp $
+ * $Id: reg_norm.s,v 1.3 1994/06/10 07:44:54 rich Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/reg_round.s b/sys/gnu/i386/fpemul/reg_round.s
index 99a2a8aa352e..7490bbb31d7e 100644
--- a/sys/gnu/i386/fpemul/reg_round.s
+++ b/sys/gnu/i386/fpemul/reg_round.s
@@ -65,7 +65,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: reg_round.s,v 1.2 1994/04/29 21:30:23 gclarkii Exp $
+ * $Id: reg_round.s,v 1.3 1994/06/10 07:44:55 rich Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/reg_u_add.s b/sys/gnu/i386/fpemul/reg_u_add.s
index 86c84753e679..35b5025643d7 100644
--- a/sys/gnu/i386/fpemul/reg_u_add.s
+++ b/sys/gnu/i386/fpemul/reg_u_add.s
@@ -62,7 +62,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: reg_u_add.s,v 1.2 1994/04/29 21:34:23 gclarkii Exp $
+ * $Id: reg_u_add.s,v 1.3 1994/06/10 07:44:56 rich Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/reg_u_div.s b/sys/gnu/i386/fpemul/reg_u_div.s
index 4952923886a2..7f61b057fd78 100644
--- a/sys/gnu/i386/fpemul/reg_u_div.s
+++ b/sys/gnu/i386/fpemul/reg_u_div.s
@@ -57,7 +57,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: reg_u_div.s,v 1.2 1994/04/29 21:34:24 gclarkii Exp $
+ * $Id: reg_u_div.s,v 1.3 1994/06/10 07:44:57 rich Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/reg_u_mul.s b/sys/gnu/i386/fpemul/reg_u_mul.s
index 798f2046c8eb..328d2b07da56 100644
--- a/sys/gnu/i386/fpemul/reg_u_mul.s
+++ b/sys/gnu/i386/fpemul/reg_u_mul.s
@@ -57,7 +57,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: reg_u_mul.s,v 1.2 1994/04/29 21:34:25 gclarkii Exp $
+ * $Id: reg_u_mul.s,v 1.3 1994/06/10 07:44:58 rich Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/reg_u_sub.s b/sys/gnu/i386/fpemul/reg_u_sub.s
index 3161e190284b..7d6d8961669e 100644
--- a/sys/gnu/i386/fpemul/reg_u_sub.s
+++ b/sys/gnu/i386/fpemul/reg_u_sub.s
@@ -61,7 +61,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: reg_u_sub.s,v 1.2 1994/04/29 21:34:26 gclarkii Exp $
+ * $Id: reg_u_sub.s,v 1.3 1994/06/10 07:44:59 rich Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/status_w.h b/sys/gnu/i386/fpemul/status_w.h
index 75b87b4757d1..e54b36415c9d 100644
--- a/sys/gnu/i386/fpemul/status_w.h
+++ b/sys/gnu/i386/fpemul/status_w.h
@@ -54,7 +54,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: status_w.h,v 1.2 1994/04/29 21:34:27 gclarkii Exp $
+ * $Id: status_w.h,v 1.3 1994/06/10 07:45:01 rich Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/version.h b/sys/gnu/i386/fpemul/version.h
index 9c08aeda7e2f..40c4513175a3 100644
--- a/sys/gnu/i386/fpemul/version.h
+++ b/sys/gnu/i386/fpemul/version.h
@@ -54,7 +54,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: version.h,v 1.2 1994/04/29 21:34:28 gclarkii Exp $
+ * $Id: version.h,v 1.3 1994/06/10 07:45:02 rich Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/wm_shrx.s b/sys/gnu/i386/fpemul/wm_shrx.s
index 9de946448597..2044a682141e 100644
--- a/sys/gnu/i386/fpemul/wm_shrx.s
+++ b/sys/gnu/i386/fpemul/wm_shrx.s
@@ -62,7 +62,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: wm_shrx.s,v 1.2 1994/04/29 21:34:29 gclarkii Exp $
+ * $Id: wm_shrx.s,v 1.3 1994/06/10 07:45:03 rich Exp $
*
*/
diff --git a/sys/gnu/i386/fpemul/wm_sqrt.s b/sys/gnu/i386/fpemul/wm_sqrt.s
index b1bc03b2a933..cbe0451f5f46 100644
--- a/sys/gnu/i386/fpemul/wm_sqrt.s
+++ b/sys/gnu/i386/fpemul/wm_sqrt.s
@@ -60,7 +60,7 @@
* W. Metzenthen June 1994.
*
*
- * $Id: wm_sqrt.s,v 1.2 1994/04/29 21:34:30 gclarkii Exp $
+ * $Id: wm_sqrt.s,v 1.3 1994/06/10 07:45:04 rich Exp $
*
*/
diff --git a/sys/gnu/i386/isa/dgb.c b/sys/gnu/i386/isa/dgb.c
index f9fdf9a93f47..0afe9848d094 100644
--- a/sys/gnu/i386/isa/dgb.c
+++ b/sys/gnu/i386/isa/dgb.c
@@ -1,5 +1,5 @@
/*-
- * dgb.c $Id: dgb.c,v 1.4 1995/10/12 23:28:31 bde Exp $
+ * dgb.c $Id: dgb.c,v 1.2.2.2 1995/10/13 03:41:22 davidg Exp $
*
* Digiboard driver.
*
diff --git a/sys/gnu/i386/isa/dgreg.h b/sys/gnu/i386/isa/dgreg.h
index 9bddca9e3efa..f25996e76333 100644
--- a/sys/gnu/i386/isa/dgreg.h
+++ b/sys/gnu/i386/isa/dgreg.h
@@ -1,5 +1,5 @@
/*-
- * dgreg.h $Id: dgreg.h,v 1.2 1995/10/04 21:51:26 jkh Exp $
+ * dgreg.h $Id: dgreg.h,v 1.1.2.1 1995/10/07 04:28:06 davidg Exp $
*
* Digiboard driver.
*
diff --git a/sys/gnu/i386/isa/nic3008.c b/sys/gnu/i386/isa/nic3008.c
index 12e2e0507c81..d1d15b90314e 100644
--- a/sys/gnu/i386/isa/nic3008.c
+++ b/sys/gnu/i386/isa/nic3008.c
@@ -1,6 +1,6 @@
-static char nic38_id[] = "@(#)$Id: nic3008.c,v 1.7 1995/09/08 11:06:46 bde Exp $";
+static char nic38_id[] = "@(#)$Id: nic3008.c,v 1.6.4.1 1995/09/14 07:08:44 davidg Exp $";
/*******************************************************************************
- * II - Version 0.1 $Revision: 1.7 $ $State: Exp $
+ * II - Version 0.1 $Revision: 1.6.4.1 $ $State: Exp $
*
* Copyright 1994 Dietmar Friede
*******************************************************************************
@@ -10,6 +10,13 @@ static char nic38_id[] = "@(#)$Id: nic3008.c,v 1.7 1995/09/08 11:06:46 bde E
*
*******************************************************************************
* $Log: nic3008.c,v $
+ * Revision 1.6.4.1 1995/09/14 07:08:44 davidg
+ * Brought in changes from main branch:
+ * 1) Bruce and Andrey's tty fixes
+ * 2) many of Bruce's prototype and function argument fixes/corrections
+ * 3) Bruce's version of the Cyclades driver
+ * 4) Improvements to the RISCom/8 driver
+ *
* Revision 1.7 1995/09/08 11:06:46 bde
* Fix benign type mismatches in devsw functions. 82 out of 299 devsw
* functions were wrong.
diff --git a/sys/gnu/i386/isa/nic3008.h b/sys/gnu/i386/isa/nic3008.h
index da82696bde35..d96f664934ec 100644
--- a/sys/gnu/i386/isa/nic3008.h
+++ b/sys/gnu/i386/isa/nic3008.h
@@ -1,4 +1,4 @@
-static char nic38hid[] = "@(#)$Id: nic3008.h,v 1.1 1995/01/25 14:06:18 jkr Exp jkr $";
+static char nic38hid[] = "@(#)$Id: nic3008.h,v 1.1 1995/02/14 15:00:12 jkh Exp $";
/*******************************************************************************
* II - Version 0.1 $Revision: 1.1 $ $State: Exp $
*
@@ -10,6 +10,15 @@ static char nic38hid[] = "@(#)$Id: nic3008.h,v 1.1 1995/01/25 14:06:18 jkr E
*
*******************************************************************************
* $Log: nic3008.h,v $
+ * Revision 1.1 1995/02/14 15:00:12 jkh
+ * An ISDN driver that supports the EDSS1 and the 1TR6 ISDN interfaces.
+ * EDSS1 is the "Euro-ISDN", 1TR6 is the soon obsolete german ISDN Interface.
+ * Obtained from: Dietmar Friede <dfriede@drnhh.neuhaus.de> and
+ * Juergen Krause <jkr@saarlink.de>
+ *
+ * This is only one part - the rest to follow in a couple of hours.
+ * This part is a benign import, since it doesn't affect anything else.
+ *
*
******************************************************************************/
diff --git a/sys/gnu/i386/isa/nic3009.c b/sys/gnu/i386/isa/nic3009.c
index dad9c1df6e91..6c351fe24736 100644
--- a/sys/gnu/i386/isa/nic3009.c
+++ b/sys/gnu/i386/isa/nic3009.c
@@ -1,6 +1,6 @@
-static char nic39_id[] = "@(#)$Id: nic3009.c,v 1.7 1995/09/08 11:06:47 bde Exp $";
+static char nic39_id[] = "@(#)$Id: nic3009.c,v 1.6.4.1 1995/09/14 07:08:45 davidg Exp $";
/*******************************************************************************
- * II - Version 0.1 $Revision: 1.7 $ $State: Exp $
+ * II - Version 0.1 $Revision: 1.6.4.1 $ $State: Exp $
*
* Copyright 1994 Dietmar Friede
*******************************************************************************
@@ -10,6 +10,13 @@ static char nic39_id[] = "@(#)$Id: nic3009.c,v 1.7 1995/09/08 11:06:47 bde E
*
*******************************************************************************
* $Log: nic3009.c,v $
+ * Revision 1.6.4.1 1995/09/14 07:08:45 davidg
+ * Brought in changes from main branch:
+ * 1) Bruce and Andrey's tty fixes
+ * 2) many of Bruce's prototype and function argument fixes/corrections
+ * 3) Bruce's version of the Cyclades driver
+ * 4) Improvements to the RISCom/8 driver
+ *
* Revision 1.7 1995/09/08 11:06:47 bde
* Fix benign type mismatches in devsw functions. 82 out of 299 devsw
* functions were wrong.
diff --git a/sys/gnu/i386/isa/nic3009.h b/sys/gnu/i386/isa/nic3009.h
index 223619f6a5ca..eadb6377e2ed 100644
--- a/sys/gnu/i386/isa/nic3009.h
+++ b/sys/gnu/i386/isa/nic3009.h
@@ -1,4 +1,4 @@
-static char nic39hid[] = "@(#)$Id: nic3009.h,v 1.1 1995/01/25 14:06:18 jkr Exp jkr $";
+static char nic39hid[] = "@(#)$Id: nic3009.h,v 1.1 1995/02/14 15:00:16 jkh Exp $";
/*******************************************************************************
* II - Version 0.1 $Revision: 1.1 $ $State: Exp $
*
@@ -10,6 +10,15 @@ static char nic39hid[] = "@(#)$Id: nic3009.h,v 1.1 1995/01/25 14:06:18 jkr E
*
*******************************************************************************
* $Log: nic3009.h,v $
+ * Revision 1.1 1995/02/14 15:00:16 jkh
+ * An ISDN driver that supports the EDSS1 and the 1TR6 ISDN interfaces.
+ * EDSS1 is the "Euro-ISDN", 1TR6 is the soon obsolete german ISDN Interface.
+ * Obtained from: Dietmar Friede <dfriede@drnhh.neuhaus.de> and
+ * Juergen Krause <jkr@saarlink.de>
+ *
+ * This is only one part - the rest to follow in a couple of hours.
+ * This part is a benign import, since it doesn't affect anything else.
+ *
*
******************************************************************************/
diff --git a/sys/gnu/i386/isa/niccyreg.h b/sys/gnu/i386/isa/niccyreg.h
index a9d832849ea0..d474d9b95016 100644
--- a/sys/gnu/i386/isa/niccyreg.h
+++ b/sys/gnu/i386/isa/niccyreg.h
@@ -1,4 +1,4 @@
-static char nicregh_id[] = "@(#)$Id: niccyreg.h,v 1.1 1995/01/25 14:06:18 jkr Exp jkr $";
+static char nicregh_id[] = "@(#)$Id: niccyreg.h,v 1.1 1995/02/14 15:00:19 jkh Exp $";
/*******************************************************************************
* II - Version 0.1 $Revision: 1.1 $ $State: Exp $
*
@@ -10,6 +10,15 @@ static char nicregh_id[] = "@(#)$Id: niccyreg.h,v 1.1 1995/01/25 14:06:18 jk
*
*******************************************************************************
* $Log: niccyreg.h,v $
+ * Revision 1.1 1995/02/14 15:00:19 jkh
+ * An ISDN driver that supports the EDSS1 and the 1TR6 ISDN interfaces.
+ * EDSS1 is the "Euro-ISDN", 1TR6 is the soon obsolete german ISDN Interface.
+ * Obtained from: Dietmar Friede <dfriede@drnhh.neuhaus.de> and
+ * Juergen Krause <jkr@saarlink.de>
+ *
+ * This is only one part - the rest to follow in a couple of hours.
+ * This part is a benign import, since it doesn't affect anything else.
+ *
*
******************************************************************************/
diff --git a/sys/gnu/isdn/if_ii.c b/sys/gnu/isdn/if_ii.c
index 280023d017a6..e362edf19dfa 100644
--- a/sys/gnu/isdn/if_ii.c
+++ b/sys/gnu/isdn/if_ii.c
@@ -1,6 +1,6 @@
-static char _if_iiid[] = "@(#)$Id: if_ii.c,v 1.2 1995/02/15 06:28:26 jkh Exp $";
+static char _if_iiid[] = "@(#)$Id: if_ii.c,v 1.3 1995/05/30 07:58:00 rgrimes Exp $";
/*******************************************************************************
- * II - Version 0.1 $Revision: 1.2 $ $State: Exp $
+ * II - Version 0.1 $Revision: 1.3 $ $State: Exp $
*
* Copyright 1994 Dietmar Friede
*******************************************************************************
@@ -10,6 +10,9 @@ static char _if_iiid[] = "@(#)$Id: if_ii.c,v 1.2 1995/02/15 06:28:26 jkh Exp
*
*******************************************************************************
* $Log: if_ii.c,v $
+ * Revision 1.3 1995/05/30 07:58:00 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.2 1995/02/15 06:28:26 jkh
* Fix up include paths, nuke some warnings.
*
diff --git a/sys/gnu/isdn/iispy.c b/sys/gnu/isdn/iispy.c
index 361cc7a95af7..27fce441141e 100644
--- a/sys/gnu/isdn/iispy.c
+++ b/sys/gnu/isdn/iispy.c
@@ -1,6 +1,6 @@
-static char _ispyid[] = "@(#)$Id: iispy.c,v 1.4 1995/09/08 11:06:56 bde Exp $";
+static char _ispyid[] = "@(#)$Id: iispy.c,v 1.3.4.1 1995/09/14 07:08:52 davidg Exp $";
/*******************************************************************************
- * II - Version 0.1 $Revision: 1.4 $ $State: Exp $
+ * II - Version 0.1 $Revision: 1.3.4.1 $ $State: Exp $
*
* Copyright 1994 Dietmar Friede
*******************************************************************************
@@ -10,6 +10,13 @@ static char _ispyid[] = "@(#)$Id: iispy.c,v 1.4 1995/09/08 11:06:56 bde Exp
*
*******************************************************************************
* $Log: iispy.c,v $
+ * Revision 1.3.4.1 1995/09/14 07:08:52 davidg
+ * Brought in changes from main branch:
+ * 1) Bruce and Andrey's tty fixes
+ * 2) many of Bruce's prototype and function argument fixes/corrections
+ * 3) Bruce's version of the Cyclades driver
+ * 4) Improvements to the RISCom/8 driver
+ *
* Revision 1.4 1995/09/08 11:06:56 bde
* Fix benign type mismatches in devsw functions. 82 out of 299 devsw
* functions were wrong.
diff --git a/sys/gnu/isdn/iitel.c b/sys/gnu/isdn/iitel.c
index b22ae7bb11f8..ca4e439ed229 100644
--- a/sys/gnu/isdn/iitel.c
+++ b/sys/gnu/isdn/iitel.c
@@ -1,6 +1,6 @@
-static char _itelid[] = "@(#)$Id: iitel.c,v 1.5 1995/09/08 11:06:57 bde Exp $";
+static char _itelid[] = "@(#)$Id: iitel.c,v 1.3.4.1 1995/09/14 07:08:53 davidg Exp $";
/*******************************************************************************
- * II - Version 0.1 $Revision: 1.5 $ $State: Exp $
+ * II - Version 0.1 $Revision: 1.3.4.1 $ $State: Exp $
*
* Copyright 1994 Dietmar Friede
*******************************************************************************
@@ -10,6 +10,13 @@ static char _itelid[] = "@(#)$Id: iitel.c,v 1.5 1995/09/08 11:06:57 bde Exp
*
*******************************************************************************
* $Log: iitel.c,v $
+ * Revision 1.3.4.1 1995/09/14 07:08:53 davidg
+ * Brought in changes from main branch:
+ * 1) Bruce and Andrey's tty fixes
+ * 2) many of Bruce's prototype and function argument fixes/corrections
+ * 3) Bruce's version of the Cyclades driver
+ * 4) Improvements to the RISCom/8 driver
+ *
* Revision 1.5 1995/09/08 11:06:57 bde
* Fix benign type mismatches in devsw functions. 82 out of 299 devsw
* functions were wrong.
diff --git a/sys/gnu/isdn/iitty.c b/sys/gnu/isdn/iitty.c
index f579291ab631..488203b65929 100644
--- a/sys/gnu/isdn/iitty.c
+++ b/sys/gnu/isdn/iitty.c
@@ -1,6 +1,6 @@
-static char _ittyid[] = "@(#)$Id: iitty.c,v 1.11 1995/07/31 21:28:42 bde Exp $";
+static char _ittyid[] = "@(#)$Id: iitty.c,v 1.5.4.1 1995/09/14 07:08:54 davidg Exp $";
/*******************************************************************************
- * II - Version 0.1 $Revision: 1.11 $ $State: Exp $
+ * II - Version 0.1 $Revision: 1.5.4.1 $ $State: Exp $
*
* Copyright 1994 Dietmar Friede
*******************************************************************************
@@ -10,6 +10,13 @@ static char _ittyid[] = "@(#)$Id: iitty.c,v 1.11 1995/07/31 21:28:42 bde Exp
*
*******************************************************************************
* $Log: iitty.c,v $
+ * Revision 1.5.4.1 1995/09/14 07:08:54 davidg
+ * Brought in changes from main branch:
+ * 1) Bruce and Andrey's tty fixes
+ * 2) many of Bruce's prototype and function argument fixes/corrections
+ * 3) Bruce's version of the Cyclades driver
+ * 4) Improvements to the RISCom/8 driver
+ *
* Revision 1.11 1995/07/31 21:28:42 bde
* Use tsleep() instead of ttysleep() to wait for carrier since a generation
* change isn't an error.
diff --git a/sys/gnu/isdn/isdn.c b/sys/gnu/isdn/isdn.c
index 0010b6a6c585..177784bf56ba 100644
--- a/sys/gnu/isdn/isdn.c
+++ b/sys/gnu/isdn/isdn.c
@@ -1,6 +1,6 @@
-static char _isdnid[] = "@(#)$Id: isdn.c,v 1.5 1995/09/08 11:06:58 bde Exp $";
+static char _isdnid[] = "@(#)$Id: isdn.c,v 1.4.4.1 1995/09/14 07:08:56 davidg Exp $";
/*******************************************************************************
- * II - Version 0.1 $Revision: 1.5 $ $State: Exp $
+ * II - Version 0.1 $Revision: 1.4.4.1 $ $State: Exp $
*
* Copyright 1994 Dietmar Friede
*******************************************************************************
@@ -10,6 +10,13 @@ static char _isdnid[] = "@(#)$Id: isdn.c,v 1.5 1995/09/08 11:06:58 bde Exp $
*
*******************************************************************************
* $Log: isdn.c,v $
+ * Revision 1.4.4.1 1995/09/14 07:08:56 davidg
+ * Brought in changes from main branch:
+ * 1) Bruce and Andrey's tty fixes
+ * 2) many of Bruce's prototype and function argument fixes/corrections
+ * 3) Bruce's version of the Cyclades driver
+ * 4) Improvements to the RISCom/8 driver
+ *
* Revision 1.5 1995/09/08 11:06:58 bde
* Fix benign type mismatches in devsw functions. 82 out of 299 devsw
* functions were wrong.
diff --git a/sys/gnu/isdn/isdn_ioctl.h b/sys/gnu/isdn/isdn_ioctl.h
index e0475d1812c7..489de8fc84d4 100644
--- a/sys/gnu/isdn/isdn_ioctl.h
+++ b/sys/gnu/isdn/isdn_ioctl.h
@@ -1,6 +1,6 @@
-static char _isdn_ioctl_id[] = "@(#)$Id: isdn_ioctl.h,v 1.1 1995/02/14 15:00:35 jkh Exp $";
+static char _isdn_ioctl_id[] = "@(#)$Id: isdn_ioctl.h,v 1.2 1995/03/28 07:54:45 bde Exp $";
/*******************************************************************************
- * II - Version 0.1 $Revision: 1.1 $ $State: Exp $
+ * II - Version 0.1 $Revision: 1.2 $ $State: Exp $
*
* Copyright 1994 Dietmar Friede
*******************************************************************************
@@ -10,6 +10,11 @@ static char _isdn_ioctl_id[] = "@(#)$Id: isdn_ioctl.h,v 1.1 1995/02/14 15:00
*
*******************************************************************************
* $Log: isdn_ioctl.h,v $
+ * Revision 1.2 1995/03/28 07:54:45 bde
+ * Add and move declarations to fix all of the warnings from `gcc -Wimplicit'
+ * (except in netccitt, netiso and netns) that I didn't notice when I fixed
+ * "all" such warnings before.
+ *
* Revision 1.1 1995/02/14 15:00:35 jkh
* An ISDN driver that supports the EDSS1 and the 1TR6 ISDN interfaces.
* EDSS1 is the "Euro-ISDN", 1TR6 is the soon obsolete german ISDN Interface.
diff --git a/sys/i386/Makefile b/sys/i386/Makefile
index 4ad5a34556fb..755a53cc4567 100644
--- a/sys/i386/Makefile
+++ b/sys/i386/Makefile
@@ -1,5 +1,5 @@
# from: @(#)Makefile 7.3 (Berkeley) 6/9/91
-# $Id$
+# $Id: Makefile,v 1.2 1993/10/16 19:15:20 rgrimes Exp $
# Makefile for i386 tags file
diff --git a/sys/i386/apm/apm.c b/sys/i386/apm/apm.c
index 29caaeda505b..dc97562958aa 100644
--- a/sys/i386/apm/apm.c
+++ b/sys/i386/apm/apm.c
@@ -13,7 +13,7 @@
*
* Sep, 1994 Implemented on FreeBSD 1.1.5.1R (Toshiba AVS001WD)
*
- * $Id: apm.c,v 1.13 1995/07/16 10:11:30 bde Exp $
+ * $Id: apm.c,v 1.12.4.1 1995/09/14 07:08:57 davidg Exp $
*/
#include "apm.h"
diff --git a/sys/i386/apm/apm_init/Makefile b/sys/i386/apm/apm_init/Makefile
index 3cc1f9d5e00a..adb25629ec95 100644
--- a/sys/i386/apm/apm_init/Makefile
+++ b/sys/i386/apm/apm_init/Makefile
@@ -12,7 +12,7 @@
#
# Sep., 1994 Implemented on FreeBSD 1.1.5.1R (Toshiba AVS001WD)
#
-# $Id: Makefile,v 1.3 1995/02/17 02:22:30 phk Exp $
+# $Id: Makefile,v 1.4 1995/05/30 07:58:11 rgrimes Exp $
#
OBJS = apm_init.o real_prot.o table.o
diff --git a/sys/i386/apm/apm_init/apm_init.S b/sys/i386/apm/apm_init/apm_init.S
index 76becc44d202..d5b243ad5d4c 100644
--- a/sys/i386/apm/apm_init/apm_init.S
+++ b/sys/i386/apm/apm_init/apm_init.S
@@ -12,7 +12,7 @@
*
* Sep., 1994 Implemented on FreeBSD 1.1.5.1R (Toshiba AVS001WD)
*
- * $Id: apm_init.S,v 1.3 1994/10/01 21:29:49 phk Exp $
+ * $Id: apm_init.S,v 1.4 1995/02/17 02:22:31 phk Exp $
*/
/*
diff --git a/sys/i386/apm/apm_init/bin2asm.c b/sys/i386/apm/apm_init/bin2asm.c
index 09c98f450ff1..e9b6384fea9c 100644
--- a/sys/i386/apm/apm_init/bin2asm.c
+++ b/sys/i386/apm/apm_init/bin2asm.c
@@ -12,7 +12,7 @@
*
* Sep., 1994 Implemented on FreeBSD 1.1.5.1R (Toshiba AVS001WD)
*
- * $Id: bin2asm.c,v 1.3 1995/02/17 02:22:33 phk Exp $
+ * $Id: bin2asm.c,v 1.4 1995/05/30 07:58:13 rgrimes Exp $
*/
#include <stdio.h>
diff --git a/sys/i386/apm/apm_init/real_prot.S b/sys/i386/apm/apm_init/real_prot.S
index d61a394bb763..a2681cba0eb0 100644
--- a/sys/i386/apm/apm_init/real_prot.S
+++ b/sys/i386/apm/apm_init/real_prot.S
@@ -24,7 +24,7 @@
* the rights to redistribute these changes.
*
* from: Mach, Revision 2.2 92/04/04 11:34:13 rpd
- * $Id: asm.S,v 1.2 1993/10/16 19:11:27 rgrimes Exp $
+ * $Id: real_prot.S,v 1.1 1994/10/01 02:55:51 davidg Exp $
*/
diff --git a/sys/i386/apm/apm_init/real_prot.h b/sys/i386/apm/apm_init/real_prot.h
index 93b3f28fd427..8f5e373db7fd 100644
--- a/sys/i386/apm/apm_init/real_prot.h
+++ b/sys/i386/apm/apm_init/real_prot.h
@@ -24,7 +24,7 @@
* the rights to redistribute these changes.
*
* from: Mach, Revision 2.7 92/02/29 15:33:41 rpd
- * $Id: real_prot.h,v 1.2 1995/02/17 02:22:33 phk Exp $
+ * $Id: real_prot.h,v 1.3 1995/05/30 07:58:16 rgrimes Exp $
*/
/*
diff --git a/sys/i386/apm/apm_init/rmaouthdr b/sys/i386/apm/apm_init/rmaouthdr
index 47838b069352..9dc9057ef123 100644
--- a/sys/i386/apm/apm_init/rmaouthdr
+++ b/sys/i386/apm/apm_init/rmaouthdr
@@ -1,6 +1,6 @@
#!/bin/csh -f
#
# from: Mach, Revision 2.2 92/04/04 11:36:01 rpd
-# $Id: rmaouthdr,v 1.3 1993/10/16 19:11:37 rgrimes Exp $
+# $Id: rmaouthdr,v 1.1 1994/10/01 02:55:53 davidg Exp $
#
dd if=$1 of=$2 ibs=32 skip=1 obs=1024b
diff --git a/sys/i386/apm/apm_init/table.c b/sys/i386/apm/apm_init/table.c
index b50d60fe803a..f4d0733487ce 100644
--- a/sys/i386/apm/apm_init/table.c
+++ b/sys/i386/apm/apm_init/table.c
@@ -12,7 +12,7 @@
*
* Sep., 1994 Implemented on FreeBSD 1.1.5.1R (Toshiba AVS001WD)
*
- * $Id: table.c,v 1.3 1995/02/17 02:22:34 phk Exp $
+ * $Id: table.c,v 1.4 1995/05/30 07:58:18 rgrimes Exp $
*/
#include <apm_bios.h>
diff --git a/sys/i386/apm/apm_setup.h b/sys/i386/apm/apm_setup.h
index f5e67efec461..90874e1a3276 100644
--- a/sys/i386/apm/apm_setup.h
+++ b/sys/i386/apm/apm_setup.h
@@ -12,7 +12,7 @@
*
* Sep., 1994 Implemented on FreeBSD 1.1.5.1R (Toshiba AVS001WD)
*
- * $Id: apm_setup.h,v 1.3 1995/02/17 02:22:22 phk Exp $
+ * $Id: apm_setup.h,v 1.4 1995/05/30 07:58:08 rgrimes Exp $
*/
extern u_long apm_version;
diff --git a/sys/i386/apm/apm_setup.s b/sys/i386/apm/apm_setup.s
index b3ae77d26a56..dba2be70a72b 100644
--- a/sys/i386/apm/apm_setup.s
+++ b/sys/i386/apm/apm_setup.s
@@ -12,7 +12,7 @@
*
* Sep., 1994 Implemented on FreeBSD 1.1.5.1R (Toshiba AVS001WD)
*
- * $Id: apm_setup.s,v 1.4 1994/10/10 01:14:03 phk Exp $
+ * $Id: apm_setup.s,v 1.5 1995/02/17 02:22:23 phk Exp $
*/
#include "apm.h"
diff --git a/sys/i386/boot/Makefile b/sys/i386/boot/Makefile
index c151bf2804a2..346062cfc154 100644
--- a/sys/i386/boot/Makefile
+++ b/sys/i386/boot/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.24 1995/03/28 19:22:34 phk Exp $
+# $Id: Makefile,v 1.25 1995/04/15 08:24:33 phk Exp $
SUBDIR= biosboot netboot dosboot kzipboot
diff --git a/sys/i386/boot/biosboot/Makefile b/sys/i386/boot/biosboot/Makefile
index 7dfcf5420a70..71fee274fa08 100644
--- a/sys/i386/boot/biosboot/Makefile
+++ b/sys/i386/boot/biosboot/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.29 1995/04/20 18:36:13 phk Exp $
+# $Id: Makefile,v 1.30 1995/04/20 23:15:03 joerg Exp $
#
PROG= boot
diff --git a/sys/i386/boot/biosboot/README.386BSD b/sys/i386/boot/biosboot/README.386BSD
index e8e7d028747f..37ced007d66c 100644
--- a/sys/i386/boot/biosboot/README.386BSD
+++ b/sys/i386/boot/biosboot/README.386BSD
@@ -149,4 +149,4 @@ Before you do this ensure you have a booting floppy with correct
disktab and bootblock files on it so that if it doesn't work, you can
re-disklabel from the floppy.
-$Id: README.386BSD,v 1.2 1993/10/16 19:11:25 rgrimes Exp $
+$Id: README.386BSD,v 1.3 1995/02/16 12:02:08 jkh Exp $
diff --git a/sys/i386/boot/biosboot/README.MACH b/sys/i386/boot/biosboot/README.MACH
index cb6232936e28..9de108123bd2 100644
--- a/sys/i386/boot/biosboot/README.MACH
+++ b/sys/i386/boot/biosboot/README.MACH
@@ -24,7 +24,7 @@
* the rights to redistribute these changes.
*
* from: Mach, Revision 2.2 92/04/04 11:33:55 rpd
- * $Id$
+ * $Id: README.MACH,v 1.3 1993/10/16 19:11:26 rgrimes Exp $
*/
********NOTE: This is not all relevant to the 386BSD version**********
diff --git a/sys/i386/boot/biosboot/README.serial b/sys/i386/boot/biosboot/README.serial
index d2a24afda35d..0e08c4f6a0df 100644
--- a/sys/i386/boot/biosboot/README.serial
+++ b/sys/i386/boot/biosboot/README.serial
@@ -152,4 +152,4 @@ CAVEATS:
from the new kernel.
-$Id: README.serial,v 1.2 1995/02/16 07:37:35 wpaul Exp $
+$Id: README.serial,v 1.3 1995/04/20 23:15:07 joerg Exp $
diff --git a/sys/i386/boot/biosboot/asm.S b/sys/i386/boot/biosboot/asm.S
index ac59d5bb3bcb..7d04d643cef9 100644
--- a/sys/i386/boot/biosboot/asm.S
+++ b/sys/i386/boot/biosboot/asm.S
@@ -24,7 +24,7 @@
* the rights to redistribute these changes.
*
* from: Mach, Revision 2.2 92/04/04 11:34:13 rpd
- * $Id: asm.S,v 1.5 1994/10/06 09:41:01 rgrimes Exp $
+ * $Id: asm.S,v 1.6 1995/01/25 21:37:36 bde Exp $
*/
diff --git a/sys/i386/boot/biosboot/asm.h b/sys/i386/boot/biosboot/asm.h
index 5d2c380b9fd3..3044b6437103 100644
--- a/sys/i386/boot/biosboot/asm.h
+++ b/sys/i386/boot/biosboot/asm.h
@@ -24,7 +24,7 @@
* the rights to redistribute these changes.
*
* from: Mach, Revision 2.7 92/02/29 15:33:41 rpd
- * $Id: asm.h,v 1.3 1993/10/16 19:11:29 rgrimes Exp $
+ * $Id: asm.h,v 1.4 1995/05/30 07:58:25 rgrimes Exp $
*/
#define S_ARG0 4(%esp)
diff --git a/sys/i386/boot/biosboot/bios.S b/sys/i386/boot/biosboot/bios.S
index 54ccf6ea0ec6..297a4fd1e939 100644
--- a/sys/i386/boot/biosboot/bios.S
+++ b/sys/i386/boot/biosboot/bios.S
@@ -24,7 +24,7 @@
* the rights to redistribute these changes.
*
* from: Mach, Revision 2.2 92/04/04 11:34:26 rpd
- * $Id: bios.S,v 1.3 1994/10/02 05:18:25 rgrimes Exp $
+ * $Id: bios.S,v 1.4 1994/11/18 05:02:12 phk Exp $
*/
/*
diff --git a/sys/i386/boot/biosboot/boot.c b/sys/i386/boot/biosboot/boot.c
index 11b538ea5a48..887ab2b6c49f 100644
--- a/sys/i386/boot/biosboot/boot.c
+++ b/sys/i386/boot/biosboot/boot.c
@@ -24,7 +24,7 @@
* the rights to redistribute these changes.
*
* from: Mach, [92/04/03 16:51:14 rvb]
- * $Id: boot.c,v 1.44 1995/06/11 19:31:10 rgrimes Exp $
+ * $Id: boot.c,v 1.44.2.1 1995/08/23 04:29:21 davidg Exp $
*/
diff --git a/sys/i386/boot/biosboot/boot.h b/sys/i386/boot/biosboot/boot.h
index e054257d4d51..c4f00ba0929b 100644
--- a/sys/i386/boot/biosboot/boot.h
+++ b/sys/i386/boot/biosboot/boot.h
@@ -24,7 +24,7 @@
* the rights to redistribute these changes.
*
* from: Mach, Revision 2.2 92/04/04 11:35:03 rpd
- * $Id: boot.h,v 1.10 1995/05/30 07:58:29 rgrimes Exp $
+ * $Id: boot.h,v 1.10.4.1 1995/08/23 04:32:44 davidg Exp $
*/
#include <sys/types.h>
diff --git a/sys/i386/boot/biosboot/boot2.S b/sys/i386/boot/biosboot/boot2.S
index 26a5442dc706..ffc536344b2d 100644
--- a/sys/i386/boot/biosboot/boot2.S
+++ b/sys/i386/boot/biosboot/boot2.S
@@ -24,7 +24,7 @@
* the rights to redistribute these changes.
*
* from: Mach, Revision 2.2 92/04/04 11:35:26 rpd
- * $Id: boot2.S,v 1.5 1994/08/30 01:38:03 bde Exp $
+ * $Id: boot2.S,v 1.6 1995/01/25 21:37:40 bde Exp $
*/
#include "asm.h"
diff --git a/sys/i386/boot/biosboot/disk.c b/sys/i386/boot/biosboot/disk.c
index ff3abe2ce7a8..98233a2c65a5 100644
--- a/sys/i386/boot/biosboot/disk.c
+++ b/sys/i386/boot/biosboot/disk.c
@@ -24,7 +24,7 @@
* the rights to redistribute these changes.
*
* from: Mach, Revision 2.2 92/04/04 11:35:49 rpd
- * $Id: disk.c,v 1.13.4.1 1995/08/23 04:34:30 davidg Exp $
+ * $Id: disk.c,v 1.13.4.2 1995/09/30 11:52:28 davidg Exp $
*/
/*
diff --git a/sys/i386/boot/biosboot/io.c b/sys/i386/boot/biosboot/io.c
index a9d4844d7ace..e3c63b817d7b 100644
--- a/sys/i386/boot/biosboot/io.c
+++ b/sys/i386/boot/biosboot/io.c
@@ -24,7 +24,7 @@
* the rights to redistribute these changes.
*
* from: Mach, Revision 2.2 92/04/04 11:35:57 rpd
- * $Id: io.c,v 1.14 1995/05/30 07:58:33 rgrimes Exp $
+ * $Id: io.c,v 1.14.4.1 1995/08/23 04:35:52 davidg Exp $
*/
#include "boot.h"
diff --git a/sys/i386/boot/biosboot/probe_keyboard.c b/sys/i386/boot/biosboot/probe_keyboard.c
index bd5113c5b7cc..fd2cddf799f0 100644
--- a/sys/i386/boot/biosboot/probe_keyboard.c
+++ b/sys/i386/boot/biosboot/probe_keyboard.c
@@ -42,7 +42,7 @@
*
* This grody hack brought to you by Bill Paul (wpaul@ctr.columbia.edu)
*
- * $Id: probe_keyboard.c,v 1.4 1995/04/14 21:26:52 joerg Exp $
+ * $Id: probe_keyboard.c,v 1.5 1995/04/20 23:15:10 joerg Exp $
*/
#ifndef FORCE_COMCONSOLE
diff --git a/sys/i386/boot/biosboot/serial.S b/sys/i386/boot/biosboot/serial.S
index 281442418c57..8bf790362892 100644
--- a/sys/i386/boot/biosboot/serial.S
+++ b/sys/i386/boot/biosboot/serial.S
@@ -24,7 +24,7 @@
* the rights to redistribute these changes.
*
* from: Mach, Revision 2.2 92/04/04 11:34:26 rpd
- * $Id: serial.S,v 1.2 1995/03/19 06:10:32 phk Exp $
+ * $Id: serial.S,v 1.3 1995/04/21 16:30:18 bde Exp $
*/
/*
diff --git a/sys/i386/boot/biosboot/start.S b/sys/i386/boot/biosboot/start.S
index 94ebc046538d..51e5ff43eb83 100644
--- a/sys/i386/boot/biosboot/start.S
+++ b/sys/i386/boot/biosboot/start.S
@@ -24,7 +24,7 @@
* the rights to redistribute these changes.
*
* from: Mach, Revision 2.2 92/04/04 11:36:29 rpd
- * $Id: start.S,v 1.6 1995/09/16 13:51:20 bde Exp $
+ * $Id: start.S,v 1.5.8.1 1995/09/30 11:49:28 davidg Exp $
*/
/*
diff --git a/sys/i386/boot/biosboot/sys.c b/sys/i386/boot/biosboot/sys.c
index e04110e4be58..b97dfcc23b3f 100644
--- a/sys/i386/boot/biosboot/sys.c
+++ b/sys/i386/boot/biosboot/sys.c
@@ -24,7 +24,7 @@
* the rights to redistribute these changes.
*
* from: Mach, Revision 2.2 92/04/04 11:36:34 rpd
- * $Id: sys.c,v 1.9 1995/05/30 07:58:34 rgrimes Exp $
+ * $Id: sys.c,v 1.9.4.1 1995/08/23 04:36:42 davidg Exp $
*/
#include "boot.h"
diff --git a/sys/i386/boot/biosboot/table.c b/sys/i386/boot/biosboot/table.c
index aa9778911b97..28064ed2604a 100644
--- a/sys/i386/boot/biosboot/table.c
+++ b/sys/i386/boot/biosboot/table.c
@@ -24,7 +24,7 @@
* the rights to redistribute these changes.
*
* from: Mach, Revision 2.2 92/04/04 11:36:43 rpd
- * $Id: table.c,v 1.7 1995/05/30 07:58:36 rgrimes Exp $
+ * $Id: table.c,v 1.7.4.1 1995/08/23 04:38:47 davidg Exp $
*/
/*
diff --git a/sys/i386/boot/dosboot/Makefile b/sys/i386/boot/dosboot/Makefile
index 4646bbb0c229..9e308f9a87b1 100644
--- a/sys/i386/boot/dosboot/Makefile
+++ b/sys/i386/boot/dosboot/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1 1995/03/28 19:22:43 phk Exp $
+# $Id: Makefile,v 1.2 1995/05/30 07:58:41 rgrimes Exp $
#
MPROG= fbsdboot.exe
diff --git a/sys/i386/boot/dosboot/ansi.h b/sys/i386/boot/dosboot/ansi.h
index 4acad948f68e..66662e62e39c 100644
--- a/sys/i386/boot/dosboot/ansi.h
+++ b/sys/i386/boot/dosboot/ansi.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: @(#)ansi.h 7.1 (Berkeley) 3/9/91
- * $Id: ansi.h,v 1.2 1993/10/16 14:39:05 rgrimes Exp $
+ * $Id: ansi.h,v 1.2 1995/04/27 18:22:12 phk Exp $
*/
#ifndef _ANSI_H_
diff --git a/sys/i386/boot/dosboot/boot.c b/sys/i386/boot/dosboot/boot.c
index 8482279bea24..07de5b2baa65 100644
--- a/sys/i386/boot/dosboot/boot.c
+++ b/sys/i386/boot/dosboot/boot.c
@@ -24,7 +24,7 @@
* the rights to redistribute these changes.
*
* from: Mach, [92/04/03 16:51:14 rvb]
- * $Id: boot.c,v 1.9.2.1 1994/05/01 05:14:49 rgrimes Exp $
+ * $Id: boot.c,v 1.2 1995/04/27 18:22:13 phk Exp $
*/
diff --git a/sys/i386/boot/dosboot/boot.h b/sys/i386/boot/dosboot/boot.h
index 322610f6ab0b..c7c7939aef8c 100644
--- a/sys/i386/boot/dosboot/boot.h
+++ b/sys/i386/boot/dosboot/boot.h
@@ -24,7 +24,7 @@
* the rights to redistribute these changes.
*
* from: Mach, Revision 2.2 92/04/04 11:35:03 rpd
- * $Id: boot.h,v 1.3 1993/10/16 19:11:32 rgrimes Exp $
+ * $Id: boot.h,v 1.2 1995/04/27 18:22:14 phk Exp $
*/
#include "types.h"
diff --git a/sys/i386/boot/dosboot/bootinfo.h b/sys/i386/boot/dosboot/bootinfo.h
index 8315158db1cb..484c24968da3 100644
--- a/sys/i386/boot/dosboot/bootinfo.h
+++ b/sys/i386/boot/dosboot/bootinfo.h
@@ -29,7 +29,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: bootinfo.h,v 1.3 1994/11/18 05:26:52 phk Exp $
+ * $Id: bootinfo.h,v 1.2 1995/04/27 18:22:15 phk Exp $
*/
#ifndef _MACHINE_BOOTINFO_H_
diff --git a/sys/i386/boot/dosboot/cdefs.h b/sys/i386/boot/dosboot/cdefs.h
index 09995d4a391d..263d2169c87c 100644
--- a/sys/i386/boot/dosboot/cdefs.h
+++ b/sys/i386/boot/dosboot/cdefs.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: @(#)cdefs.h 8.1 (Berkeley) 6/2/93
- * $Id: cdefs.h,v 1.6 1993/10/16 17:16:24 rgrimes Exp $
+ * $Id: cdefs.h,v 1.2 1995/04/27 18:22:15 phk Exp $
*/
#ifndef _CDEFS_H_
diff --git a/sys/i386/boot/dosboot/dinode.h b/sys/i386/boot/dosboot/dinode.h
index adfac172282e..0f676346f46a 100644
--- a/sys/i386/boot/dosboot/dinode.h
+++ b/sys/i386/boot/dosboot/dinode.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: @(#)dinode.h 7.10 (Berkeley) 5/8/91
- * $Id: dinode.h,v 1.5 1993/12/19 22:51:07 alm Exp $
+ * $Id: dinode.h,v 1.2 1995/04/27 18:22:16 phk Exp $
*/
#ifndef _UFS_DINODE_H_
diff --git a/sys/i386/boot/dosboot/dir.h b/sys/i386/boot/dosboot/dir.h
index bc02fde23d7e..6bb49d0b103e 100644
--- a/sys/i386/boot/dosboot/dir.h
+++ b/sys/i386/boot/dosboot/dir.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: @(#)dir.h 7.3 (Berkeley) 2/5/91
- * $Id: dir.h,v 1.2 1993/10/16 17:16:31 rgrimes Exp $
+ * $Id: dir.h,v 1.2 1995/04/27 18:22:17 phk Exp $
*/
/*
diff --git a/sys/i386/boot/dosboot/disk.c b/sys/i386/boot/dosboot/disk.c
index 0a5fcec9b86f..7460fe4ff2fd 100644
--- a/sys/i386/boot/dosboot/disk.c
+++ b/sys/i386/boot/dosboot/disk.c
@@ -24,7 +24,7 @@
* the rights to redistribute these changes.
*
* from: Mach, Revision 2.2 92/04/04 11:35:49 rpd
- * $Id: disk.c,v 1.4 1994/02/22 22:59:40 rgrimes Exp $
+ * $Id: disk.c,v 1.2 1995/04/27 18:22:17 phk Exp $
*/
#include <stdio.h>
#include <memory.h>
diff --git a/sys/i386/boot/dosboot/disklabe.h b/sys/i386/boot/dosboot/disklabe.h
index c155df578398..99d23cd95968 100644
--- a/sys/i386/boot/dosboot/disklabe.h
+++ b/sys/i386/boot/dosboot/disklabe.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)disklabel.h 8.1 (Berkeley) 6/2/93
- * $Id: disklabel.h,v 1.8 1994/11/14 13:08:44 bde Exp $
+ * $Id: disklabe.h,v 1.2 1995/04/27 18:22:18 phk Exp $
*/
#ifndef _SYS_DISKLABEL_H_
diff --git a/sys/i386/boot/dosboot/dkbad.h b/sys/i386/boot/dosboot/dkbad.h
index 33f1c5373ae6..15fd0fa89ba4 100644
--- a/sys/i386/boot/dosboot/dkbad.h
+++ b/sys/i386/boot/dosboot/dkbad.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)dkbad.h 8.1 (Berkeley) 6/2/93
- * $Id: dkbad.h,v 1.5 1995/04/15 23:21:28 bde Exp $
+ * $Id: dkbad.h,v 1.2 1995/04/27 18:22:19 phk Exp $
*/
#ifndef _SYS_DKBAD_H_
diff --git a/sys/i386/boot/dosboot/endian.h b/sys/i386/boot/dosboot/endian.h
index ff7dad5b10bf..2d60bac9ad40 100644
--- a/sys/i386/boot/dosboot/endian.h
+++ b/sys/i386/boot/dosboot/endian.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: @(#)endian.h 7.8 (Berkeley) 4/3/91
- * $Id: endian.h,v 1.5 1994/09/10 20:03:14 csgr Exp $
+ * $Id: endian.h,v 1.2 1995/04/27 18:22:21 phk Exp $
*/
#ifndef _MACHINE_ENDIAN_H_
diff --git a/sys/i386/boot/dosboot/exec.h b/sys/i386/boot/dosboot/exec.h
index 6f6a9e97ee1c..45e5c58d0e2a 100644
--- a/sys/i386/boot/dosboot/exec.h
+++ b/sys/i386/boot/dosboot/exec.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)exec.h 8.3 (Berkeley) 1/21/94
- * $Id: exec.h,v 1.9 1994/10/09 21:50:57 sos Exp $
+ * $Id: exec.h,v 1.2 1995/04/27 18:22:22 phk Exp $
*/
#ifndef _SYS_EXEC_H_
diff --git a/sys/i386/boot/dosboot/fs.h b/sys/i386/boot/dosboot/fs.h
index 68ccd98040f2..9db12c905161 100644
--- a/sys/i386/boot/dosboot/fs.h
+++ b/sys/i386/boot/dosboot/fs.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: @(#)fs.h 7.12 (Berkeley) 5/8/91
- * $Id: fs.h,v 1.6 1993/12/19 22:51:09 alm Exp $
+ * $Id: fs.h,v 1.2 1995/04/27 18:22:25 phk Exp $
*/
#ifndef _UFS_FS_H_
diff --git a/sys/i386/boot/dosboot/imgact.h b/sys/i386/boot/dosboot/imgact.h
index dde841e1ea83..c8ae79b4256e 100644
--- a/sys/i386/boot/dosboot/imgact.h
+++ b/sys/i386/boot/dosboot/imgact.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: @(#)exec.h 8.1 (Berkeley) 6/11/93
- * $Id: imgact_aout.h,v 1.1 1994/09/24 21:09:18 davidg Exp $
+ * $Id: imgact.h,v 1.2 1995/04/27 18:22:26 phk Exp $
*/
#ifndef _IMGACT_AOUT_H_
diff --git a/sys/i386/boot/dosboot/inode.h b/sys/i386/boot/dosboot/inode.h
index 9f9310b0416e..843cd8b57e02 100644
--- a/sys/i386/boot/dosboot/inode.h
+++ b/sys/i386/boot/dosboot/inode.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: @(#)inode.h 7.17 (Berkeley) 5/8/91
- * $Id: inode.h,v 1.6 1993/12/19 00:55:37 wollman Exp $
+ * $Id: inode.h,v 1.2 1995/04/27 18:22:27 phk Exp $
*/
#ifndef _UFS_INODE_H_
diff --git a/sys/i386/boot/dosboot/mexec.h b/sys/i386/boot/dosboot/mexec.h
index dbaf8f2b28ab..7b043382bb2c 100644
--- a/sys/i386/boot/dosboot/mexec.h
+++ b/sys/i386/boot/dosboot/mexec.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)exec.h 8.1 (Berkeley) 6/11/93
- * $Id: exec.h,v 1.5 1994/09/24 21:36:38 davidg Exp $
+ * $Id: mexec.h,v 1.2 1995/04/27 18:22:28 phk Exp $
*/
#ifndef _EXEC_H_
diff --git a/sys/i386/boot/dosboot/param.h b/sys/i386/boot/dosboot/param.h
index 67882bfb70b3..d24cf4e36e20 100644
--- a/sys/i386/boot/dosboot/param.h
+++ b/sys/i386/boot/dosboot/param.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)param.h 5.8 (Berkeley) 6/28/91
- * $Id: param.h,v 1.16 1994/09/18 22:05:22 bde Exp $
+ * $Id: param.h,v 1.2 1995/04/27 18:22:28 phk Exp $
*/
#ifndef _MACHINE_PARAM_H_
diff --git a/sys/i386/boot/dosboot/quota.h b/sys/i386/boot/dosboot/quota.h
index e1d72077748d..a7be1041bc68 100644
--- a/sys/i386/boot/dosboot/quota.h
+++ b/sys/i386/boot/dosboot/quota.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)quota.h 7.9 (Berkeley) 2/22/91
- * $Id: quota.h,v 1.3 1993/11/25 01:38:27 wollman Exp $
+ * $Id: quota.h,v 1.2 1995/04/27 18:22:31 phk Exp $
*/
#ifndef _QUOTA_
diff --git a/sys/i386/boot/dosboot/reboot.h b/sys/i386/boot/dosboot/reboot.h
index 51b5f1f98f75..63b67f41f23d 100644
--- a/sys/i386/boot/dosboot/reboot.h
+++ b/sys/i386/boot/dosboot/reboot.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)reboot.h 8.1 (Berkeley) 6/2/93
- * $Id: reboot.h,v 1.7 1994/11/26 09:08:40 phk Exp $
+ * $Id: reboot.h,v 1.2 1995/04/27 18:22:32 phk Exp $
*/
#ifndef _SYS_REBOOT_H_
diff --git a/sys/i386/boot/dosboot/sys.c b/sys/i386/boot/dosboot/sys.c
index 172545cc7235..a15ab92ec7da 100644
--- a/sys/i386/boot/dosboot/sys.c
+++ b/sys/i386/boot/dosboot/sys.c
@@ -24,7 +24,7 @@
* the rights to redistribute these changes.
*
* from: Mach, Revision 2.2 92/04/04 11:36:34 rpd
- * $Id: sys.c,v 1.3 1993/10/16 19:11:39 rgrimes Exp $
+ * $Id: sys.c,v 1.2 1995/04/27 18:22:33 phk Exp $
*/
#include <stdio.h>
#include <string.h>
diff --git a/sys/i386/boot/dosboot/syslimit.h b/sys/i386/boot/dosboot/syslimit.h
index 007dbc615fcc..99e832d87c61 100644
--- a/sys/i386/boot/dosboot/syslimit.h
+++ b/sys/i386/boot/dosboot/syslimit.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: @(#)syslimits.h 7.4 (Berkeley) 2/4/91
- * $Id: syslimits.h,v 1.4 1994/01/20 22:57:32 davidg Exp $
+ * $Id: syslimit.h,v 1.2 1995/04/27 18:22:34 phk Exp $
*/
#ifndef _SYS_SYSLIMITS_H_
diff --git a/sys/i386/boot/dosboot/sysparam.h b/sys/i386/boot/dosboot/sysparam.h
index 6331d6932ff9..facbfb176ce5 100644
--- a/sys/i386/boot/dosboot/sysparam.h
+++ b/sys/i386/boot/dosboot/sysparam.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)param.h 8.2 (Berkeley) 1/21/94
- * $Id: param.h,v 1.5 1994/09/01 05:12:51 davidg Exp $
+ * $Id: sysparam.h,v 1.2 1995/04/27 18:22:35 phk Exp $
*/
#ifndef _SYS_PARAM_H_
diff --git a/sys/i386/boot/dosboot/types.h b/sys/i386/boot/dosboot/types.h
index 77d83731065e..ebebca5d6532 100644
--- a/sys/i386/boot/dosboot/types.h
+++ b/sys/i386/boot/dosboot/types.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)types.h 8.4 (Berkeley) 1/21/94
- * $Id: types.h,v 1.4 1994/09/25 15:56:25 davidg Exp $
+ * $Id: types.h,v 1.2 1995/04/27 18:22:36 phk Exp $
*/
#ifndef _SYS_TYPES_H_
diff --git a/sys/i386/boot/kzipboot/Makefile b/sys/i386/boot/kzipboot/Makefile
index d24eb59bc767..74a32afc2a5a 100644
--- a/sys/i386/boot/kzipboot/Makefile
+++ b/sys/i386/boot/kzipboot/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.4 1995/10/06 02:57:22 peter Exp $
+# $Id: Makefile,v 1.2.4.4 1995/10/06 04:43:25 jkh Exp $
PROG= kztail.o kzhead.o
BINMODE = 444 # target is a relocatable object
diff --git a/sys/i386/boot/netboot/3c509.c b/sys/i386/boot/netboot/3c509.c
index 9ebfe5d3ae2c..47678602110c 100644
--- a/sys/i386/boot/netboot/3c509.c
+++ b/sys/i386/boot/netboot/3c509.c
@@ -18,7 +18,7 @@ Author: Martin Renters.
3c509 support added by Serge Babkin (babkin@hq.icb.chel.su)
-$Id: 3c509.c,v 1.1 1995/04/12 20:14:56 martin Exp $
+$Id: 3c509.c,v 1.2 1995/05/30 07:58:52 rgrimes Exp $
***************************************************************************/
diff --git a/sys/i386/conf/BOOTMFS b/sys/i386/conf/BOOTMFS
new file mode 100644
index 000000000000..585a170f500e
--- /dev/null
+++ b/sys/i386/conf/BOOTMFS
@@ -0,0 +1,120 @@
+#
+# BOOTMFS -- Generic machine with WD/AHx/NCR/BTx family disks
+#
+# $Id: BOOTMFS,v 1.46.2.6 1995/10/25 17:29:51 jkh Exp $
+#
+
+machine "i386"
+cpu "I386_CPU"
+cpu "I486_CPU"
+cpu "I586_CPU"
+ident BOOTMFS
+maxusers 10
+
+options MATH_EMULATE #Support for x87 emulation
+options INET #InterNETworking
+options FFS #Berkeley Fast Filesystem
+options NFS #Network Filesystem
+options MSDOSFS #MSDOS Filesystem
+options "CD9660" #ISO 9660 Filesystem
+options "COMPAT_43" #Compatible with BSD 4.3
+options "SCSI_DELAY=15" #Be pessimistic about Joe SCSI device
+options BOUNCE_BUFFERS #include support for DMA bounce buffers
+options UCONSOLE #Allow users to grab the console
+
+
+config kernel root on wd0
+
+controller isa0
+controller pci0
+
+controller fdc0 at isa? port "IO_FD1" bio irq 6 drq 2 vector fdintr
+disk fd0 at fdc0 drive 0
+disk fd1 at fdc0 drive 1
+tape ft0 at fdc0 drive 2
+
+controller wdc0 at isa? port "IO_WD1" bio irq 14 vector wdintr
+disk wd0 at wdc0 drive 0
+disk wd1 at wdc0 drive 1
+
+controller wdc1 at isa? port "IO_WD2" bio irq 15 vector wdintr
+disk wd2 at wdc1 drive 0
+disk wd3 at wdc1 drive 1
+
+#options ATAPI #Enable ATAPI support for IDE bus
+#device wcd0 #IDE CD-ROM
+
+controller ncr0
+controller ahc0
+
+controller bt0 at isa? port "IO_BT0" bio irq ? vector btintr
+controller uha0 at isa? port "IO_UHA0" bio irq ? drq 5 vector uhaintr
+controller ahc1 at isa? bio irq ? vector ahcintr
+controller ahb0 at isa? bio irq ? vector ahbintr
+controller aha0 at isa? port "IO_AHA0" bio irq ? drq 5 vector ahaintr
+controller aic0 at isa? port 0x340 bio irq 11 vector aicintr
+controller nca0 at isa? port 0x1f88 bio irq 10 vector ncaintr
+controller nca1 at isa? port 0x350 bio irq 5 vector ncaintr
+controller sea0 at isa? bio irq 5 iomem 0xc8000 iosiz 0x2000 vector seaintr
+
+controller scbus0
+
+device sd0
+
+device st0
+
+device cd0 #Only need one of these, the code dynamically grows
+
+device wt0 at isa? port 0x300 bio irq 5 drq 1 vector wtintr
+device mcd0 at isa? port 0x300 bio irq 10 vector mcdintr
+device mcd1 at isa? port 0x340 bio irq 11 vector mcdintr
+
+controller matcd0 at isa? port 0x230 bio
+
+device scd0 at isa? port 0x230 bio
+
+# syscons is the default console driver, resembling an SCO console
+device sc0 at isa? port "IO_KBD" tty irq 1 vector scintr
+# Enable this and PCVT_FREEBSD for pcvt vt220 compatible console driver
+#device vt0 at isa? port "IO_KBD" tty irq 1 vector pcrint
+#options "PCVT_FREEBSD=210" # pcvt running on FreeBSD 2.1
+#options XSERVER # include code for XFree86
+
+device npx0 at isa? port "IO_NPX" irq 13 vector npxintr
+
+device sio0 at isa? port "IO_COM1" tty irq 4 vector siointr
+device sio1 at isa? port "IO_COM2" tty irq 3 vector siointr
+device sio2 at isa? port "IO_COM3" tty irq 5 vector siointr
+device sio3 at isa? port "IO_COM4" tty irq 9 vector siointr
+
+device lpt0 at isa? port? tty irq 7 vector lptintr
+device lpt1 at isa? port? tty
+device lpt2 at isa? port? tty
+device mse0 at isa? port 0x23c tty irq 5 vector mseintr
+
+# Order is important here due to intrusive probes, do *not* alphabetize
+# this list of network interfaces until the probes have been fixed.
+# Right now it appears that the ie0 must be probed before ep0. See
+# revision 1.20 of this file.
+device de0
+device ed0 at isa? port 0x280 net irq 5 iomem 0xd8000 vector edintr
+device ed1 at isa? port 0x300 net irq 5 iomem 0xd8000 vector edintr
+device ie0 at isa? port 0x360 net irq 7 iomem 0xd0000 vector ieintr
+device ep0 at isa? port 0x300 net irq 10 vector epintr
+device ix0 at isa? port 0x300 net irq 10 iomem 0xd0000 iosiz 32768 vector ixintr
+device le0 at isa? port 0x300 net irq 5 iomem 0xd0000 vector le_intr
+device lnc0 at isa? port 0x280 net irq 10 drq 0 vector lncintr
+device lnc1 at isa? port 0x300 net irq 10 drq 0 vector lncintr
+device ze0 at isa? port 0x300 net irq 5 iomem 0xd8000 vector zeintr
+device zp0 at isa? port 0x300 net irq 10 iomem 0xd8000 vector zpintr
+
+pseudo-device loop
+pseudo-device ether
+pseudo-device log
+pseudo-device sl 1
+# ijppp uses tun instead of ppp device
+#pseudo-device ppp 1
+pseudo-device tun 1
+pseudo-device gzip # Exec gzipped a.out's
+options "MFS_ROOT=1000"
+options MFS
diff --git a/sys/i386/conf/GENERIC b/sys/i386/conf/GENERIC
index 23604f341f68..b074f90d05b2 100644
--- a/sys/i386/conf/GENERIC
+++ b/sys/i386/conf/GENERIC
@@ -1,7 +1,7 @@
#
# GENERIC -- Generic machine with WD/AHx/NCR/BTx family disks
#
-# $Id: GENERIC,v 1.46.2.5 1995/09/23 00:50:05 jkh Exp $
+# $Id: GENERIC,v 1.46.2.6 1995/10/25 17:29:51 jkh Exp $
#
machine "i386"
diff --git a/sys/i386/conf/LINT b/sys/i386/conf/LINT
index a2328ed0cbf7..b2ec92ff9678 100644
--- a/sys/i386/conf/LINT
+++ b/sys/i386/conf/LINT
@@ -2,7 +2,7 @@
# LINT -- config file for checking all the sources, tries to pull in
# as much of the source tree as it can.
#
-# $Id: LINT,v 1.184.4.8 1995/10/11 06:26:55 davidg Exp $
+# $Id: LINT,v 1.184.4.9 1995/10/25 17:29:53 jkh Exp $
#
# NB: You probably don't want to try running a kernel built from this
# file. Instead, you should start from GENERIC, and add options from
diff --git a/sys/i386/conf/Makefile.i386 b/sys/i386/conf/Makefile.i386
index 19e5c4ac0058..622a0ef9f9e4 100644
--- a/sys/i386/conf/Makefile.i386
+++ b/sys/i386/conf/Makefile.i386
@@ -1,6 +1,6 @@
# Copyright 1990 W. Jolitz
# from: @(#)Makefile.i386 7.1 5/10/91
-# $Id: Makefile.i386,v 1.64 1995/05/30 07:59:05 rgrimes Exp $
+# $Id: Makefile.i386,v 1.64.4.1 1995/08/23 05:00:48 davidg Exp $
#
# Makefile for FreeBSD
#
diff --git a/sys/i386/conf/devices.i386 b/sys/i386/conf/devices.i386
index 904a399e93fa..cc28d24e5359 100644
--- a/sys/i386/conf/devices.i386
+++ b/sys/i386/conf/devices.i386
@@ -1,6 +1,6 @@
# This file tells what major numbers the various possible swap devices have.
#
-# $Id: devices.i386,v 1.9 1995/08/19 15:59:25 joerg Exp $
+# $Id: devices.i386,v 1.8.4.1 1995/09/14 23:47:09 jkh Exp $
#
wd 0
dk 1
diff --git a/sys/i386/conf/files.i386 b/sys/i386/conf/files.i386
index 146402a3d2bb..db5bc18d9d41 100644
--- a/sys/i386/conf/files.i386
+++ b/sys/i386/conf/files.i386
@@ -1,7 +1,7 @@
# This file tells config what files go into building a kernel,
# files marked standard are always included.
#
-# $Id: files.i386,v 1.98.4.4 1995/09/10 01:51:13 davidg Exp $
+# $Id: files.i386,v 1.98.4.5 1995/09/14 23:47:10 jkh Exp $
#
aic7xxx_asm optional ahc device-driver \
dependency "$S/dev/aic7xxx/aic7xxx_asm.c" \
diff --git a/sys/i386/eisa/eisaconf.c b/sys/i386/eisa/eisaconf.c
index ca6baf3f0cd8..ca262e730d43 100644
--- a/sys/i386/eisa/eisaconf.c
+++ b/sys/i386/eisa/eisaconf.c
@@ -13,7 +13,7 @@
* on the understanding that TFS is not responsible for the correct
* functioning of this software in any circumstances.
*
- * $Id: eisaconf.c,v 1.1 1995/04/23 08:55:41 julian Exp $
+ * $Id: eisaconf.c,v 1.2 1995/05/30 07:59:07 rgrimes Exp $
*/
/*
diff --git a/sys/i386/eisa/eisaconf.h b/sys/i386/eisa/eisaconf.h
index 9b16c23543fa..5fbf9945f1f9 100644
--- a/sys/i386/eisa/eisaconf.h
+++ b/sys/i386/eisa/eisaconf.h
@@ -13,7 +13,7 @@
* on the understanding that TFS is not responsible for the correct
* functioning of this software in any circumstances.
*
- * $Id: eisaconf.h,v 1.1 1995/04/23 08:55:42 julian Exp $
+ * $Id: eisaconf.h,v 1.2 1995/05/30 07:59:09 rgrimes Exp $
*/
/*
diff --git a/sys/i386/eisa/eisadevs.c b/sys/i386/eisa/eisadevs.c
index c1bb00c9ad73..3103c40a2616 100644
--- a/sys/i386/eisa/eisadevs.c
+++ b/sys/i386/eisa/eisadevs.c
@@ -13,7 +13,7 @@
* on the understanding that TFS is not responsible for the correct
* functioning of this software in any circumstances.
*
- * $Id: eisadevs.c,v 1.2 1995/08/09 13:00:25 peter Exp $
+ * $Id: eisadevs.c,v 1.1.4.1 1995/09/26 05:22:13 davidg Exp $
*/
/*
diff --git a/sys/i386/i386/autoconf.c b/sys/i386/i386/autoconf.c
index f0648c9f4441..c2d16ef0b8e3 100644
--- a/sys/i386/i386/autoconf.c
+++ b/sys/i386/i386/autoconf.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)autoconf.c 7.1 (Berkeley) 5/9/91
- * $Id: autoconf.c,v 1.32 1995/05/29 04:08:13 davidg Exp $
+ * $Id: autoconf.c,v 1.33 1995/05/30 07:59:14 rgrimes Exp $
*/
/*
diff --git a/sys/i386/i386/conf.c b/sys/i386/i386/conf.c
index 21cbd2899917..a5cd95a6b20a 100644
--- a/sys/i386/i386/conf.c
+++ b/sys/i386/i386/conf.c
@@ -42,7 +42,7 @@
* SUCH DAMAGE.
*
* from: @(#)conf.c 5.8 (Berkeley) 5/12/91
- * $Id: conf.c,v 1.85.4.3 1995/10/13 03:41:37 davidg Exp $
+ * $Id: conf.c,v 1.85.4.4 1995/10/14 13:52:32 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/i386/i386/cons.c b/sys/i386/i386/cons.c
index 8d991923c8e5..dd46b44d0a15 100644
--- a/sys/i386/i386/cons.c
+++ b/sys/i386/i386/cons.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* from: @(#)cons.c 7.2 (Berkeley) 5/9/91
- * $Id: cons.c,v 1.28 1995/05/30 07:59:18 rgrimes Exp $
+ * $Id: cons.c,v 1.28.4.1 1995/08/23 05:17:52 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/i386/i386/cons.h b/sys/i386/i386/cons.h
index d99c3e5b06ea..25f73db5d18f 100644
--- a/sys/i386/i386/cons.h
+++ b/sys/i386/i386/cons.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* from: @(#)cons.h 7.2 (Berkeley) 5/9/91
- * $Id: cons.h,v 1.8 1995/04/23 12:55:55 bde Exp $
+ * $Id: cons.h,v 1.9 1995/04/24 16:43:01 bde Exp $
*/
#ifndef _MACHINE_CONS_H_
diff --git a/sys/i386/i386/db_disasm.c b/sys/i386/i386/db_disasm.c
index 8ce7365a7ac9..5ec95baa4632 100644
--- a/sys/i386/i386/db_disasm.c
+++ b/sys/i386/i386/db_disasm.c
@@ -23,7 +23,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: db_disasm.c,v 1.8 1995/01/29 02:38:15 bde Exp $
+ * $Id: db_disasm.c,v 1.9 1995/05/30 07:59:20 rgrimes Exp $
*/
/*
diff --git a/sys/i386/i386/db_interface.c b/sys/i386/i386/db_interface.c
index 8daa0a27aa32..16a62024fbfe 100644
--- a/sys/i386/i386/db_interface.c
+++ b/sys/i386/i386/db_interface.c
@@ -23,7 +23,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: db_interface.c,v 1.13 1995/04/08 21:31:53 joerg Exp $
+ * $Id: db_interface.c,v 1.14 1995/05/30 07:59:22 rgrimes Exp $
*/
/*
diff --git a/sys/i386/i386/db_trace.c b/sys/i386/i386/db_trace.c
index dcbf19410f94..7c41c8209f73 100644
--- a/sys/i386/i386/db_trace.c
+++ b/sys/i386/i386/db_trace.c
@@ -23,7 +23,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: db_trace.c,v 1.10 1995/03/16 18:11:26 bde Exp $
+ * $Id: db_trace.c,v 1.11 1995/05/30 07:59:23 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/i386/i386/dkbad.c b/sys/i386/i386/dkbad.c
index cc70487ae304..0e963fc9f6a0 100644
--- a/sys/i386/i386/dkbad.c
+++ b/sys/i386/i386/dkbad.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)dkbad.c 5.4 (Berkeley) 1/19/91
- * $Id: dkbad.c,v 1.3 1993/12/19 00:50:01 wollman Exp $
+ * $Id: dkbad.c,v 1.4 1994/08/13 03:49:38 wollman Exp $
*/
diff --git a/sys/i386/i386/exception.s b/sys/i386/i386/exception.s
index e0e7b3c68631..4af49d506f5b 100644
--- a/sys/i386/i386/exception.s
+++ b/sys/i386/i386/exception.s
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: exception.s,v 1.9 1995/06/11 19:31:13 rgrimes Exp $
+ * $Id: exception.s,v 1.9.2.1 1995/08/23 05:22:34 davidg Exp $
*/
#include "npx.h" /* NNPX */
diff --git a/sys/i386/i386/genassym.c b/sys/i386/i386/genassym.c
index a5261849d80e..552cc9a336c1 100644
--- a/sys/i386/i386/genassym.c
+++ b/sys/i386/i386/genassym.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)genassym.c 5.11 (Berkeley) 5/10/91
- * $Id: genassym.c,v 1.26 1995/05/25 07:41:18 davidg Exp $
+ * $Id: genassym.c,v 1.27 1995/05/30 07:59:25 rgrimes Exp $
*/
#include <stdio.h>
diff --git a/sys/i386/i386/in_cksum.c b/sys/i386/i386/in_cksum.c
index 1764a58da93b..4c79e22ff551 100644
--- a/sys/i386/i386/in_cksum.c
+++ b/sys/i386/i386/in_cksum.c
@@ -32,7 +32,7 @@
*
* from tahoe: in_cksum.c 1.2 86/01/05
* from: @(#)in_cksum.c 1.3 (Berkeley) 1/19/91
- * $Id: in_cksum.c,v 1.6 1994/08/13 03:49:39 wollman Exp $
+ * $Id: in_cksum.c,v 1.7 1995/05/30 07:59:31 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/i386/i386/locore.s b/sys/i386/i386/locore.s
index af3cc58ea8a7..0b6d4a1b9dcc 100644
--- a/sys/i386/i386/locore.s
+++ b/sys/i386/i386/locore.s
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)locore.s 7.3 (Berkeley) 5/13/91
- * $Id: locore.s,v 1.52.4.1 1995/08/19 00:51:53 davidg Exp $
+ * $Id: locore.s,v 1.52.4.2 1995/09/30 13:42:32 davidg Exp $
*/
/*
diff --git a/sys/i386/i386/machdep.c b/sys/i386/i386/machdep.c
index 57d026f93715..1ff7ee8483ac 100644
--- a/sys/i386/i386/machdep.c
+++ b/sys/i386/i386/machdep.c
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* from: @(#)machdep.c 7.4 (Berkeley) 6/3/91
- * $Id: machdep.c,v 1.128.4.3 1995/09/08 04:22:49 davidg Exp $
+ * $Id: machdep.c,v 1.128.4.4 1995/10/25 11:14:38 davidg Exp $
*/
#include "npx.h"
diff --git a/sys/i386/i386/math_emu.h b/sys/i386/i386/math_emu.h
index 453a903554a6..a29ebdebe556 100644
--- a/sys/i386/i386/math_emu.h
+++ b/sys/i386/i386/math_emu.h
@@ -3,7 +3,7 @@
*
* (C) 1991 Linus Torvalds
*
- * $Id$
+ * $Id: math_emu.h,v 1.2 1993/10/16 14:15:02 rgrimes Exp $
*/
#ifndef _LINUX_MATH_EMU_H
#define _LINUX_MATH_EMU_H
diff --git a/sys/i386/i386/math_emulate.c b/sys/i386/i386/math_emulate.c
index 392a18950eb8..330c6bcd572f 100644
--- a/sys/i386/i386/math_emulate.c
+++ b/sys/i386/i386/math_emulate.c
@@ -6,7 +6,7 @@
* [expediant "port" of linux 8087 emulator to 386BSD, with apologies -wfj]
*
* from: 386BSD 0.1
- * $Id: math_emulate.c,v 1.12 1995/05/30 07:59:35 rgrimes Exp $
+ * $Id: math_emulate.c,v 1.12.4.1 1995/08/23 07:20:29 davidg Exp $
*/
/*
diff --git a/sys/i386/i386/mem.c b/sys/i386/i386/mem.c
index ae65b98449b8..eeaed6ae225d 100644
--- a/sys/i386/i386/mem.c
+++ b/sys/i386/i386/mem.c
@@ -38,7 +38,7 @@
*
* from: Utah $Hdr: mem.c 1.13 89/10/08$
* from: @(#)mem.c 7.2 (Berkeley) 5/9/91
- * $Id: mem.c,v 1.9.8.1 1995/09/14 07:09:00 davidg Exp $
+ * $Id: mem.c,v 1.9.8.2 1995/09/20 13:04:07 davidg Exp $
*/
/*
diff --git a/sys/i386/i386/microtime.s b/sys/i386/i386/microtime.s
index 19031c727c0b..502abb966fec 100644
--- a/sys/i386/i386/microtime.s
+++ b/sys/i386/i386/microtime.s
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: Steve McCanne's microtime code
- * $Id: microtime.s,v 1.6 1994/08/13 17:45:09 wollman Exp $
+ * $Id: microtime.s,v 1.7 1994/11/05 23:53:46 bde Exp $
*/
#include <machine/asmacros.h>
diff --git a/sys/i386/i386/ns_cksum.c b/sys/i386/i386/ns_cksum.c
index 142c9f827eec..402b56fb69c1 100644
--- a/sys/i386/i386/ns_cksum.c
+++ b/sys/i386/i386/ns_cksum.c
@@ -32,7 +32,7 @@
*
* from: @(#)ns_cksum.c 7.7 (Berkeley) 4/29/91
* from NetBSD: ns_cksum.c,v 1.2 1993/05/22 07:59:55 cgd Exp
- * $Id: ns_cksum.c,v 1.2 1993/12/19 00:50:07 wollman Exp $
+ * $Id: ns_cksum.c,v 1.3 1994/08/13 03:49:43 wollman Exp $
*/
#include <sys/param.h>
diff --git a/sys/i386/i386/pmap.c b/sys/i386/i386/pmap.c
index 62412cfbd24c..4e5fca093422 100644
--- a/sys/i386/i386/pmap.c
+++ b/sys/i386/i386/pmap.c
@@ -39,7 +39,7 @@
* SUCH DAMAGE.
*
* from: @(#)pmap.c 7.7 (Berkeley) 5/12/91
- * $Id: pmap.c,v 1.58 1995/05/30 07:59:38 rgrimes Exp $
+ * $Id: pmap.c,v 1.58.4.1 1995/09/12 05:36:42 davidg Exp $
*/
/*
diff --git a/sys/i386/i386/procfs_machdep.c b/sys/i386/i386/procfs_machdep.c
index 1b51d06a6eef..d29baa2dfa8e 100644
--- a/sys/i386/i386/procfs_machdep.c
+++ b/sys/i386/i386/procfs_machdep.c
@@ -37,7 +37,7 @@
* @(#)procfs_machdep.c 8.3 (Berkeley) 1/27/94
*
* From:
- * $Id: procfs_machdep.c,v 1.3 1995/01/14 13:20:09 bde Exp $
+ * $Id: procfs_machdep.c,v 1.4 1995/03/16 18:11:29 bde Exp $
*/
/*
diff --git a/sys/i386/i386/support.s b/sys/i386/i386/support.s
index db0fa03c5e4e..3bca98aa6542 100644
--- a/sys/i386/i386/support.s
+++ b/sys/i386/i386/support.s
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: support.s,v 1.21 1995/03/11 03:49:50 phk Exp $
+ * $Id: support.s,v 1.22 1995/05/02 05:20:26 davidg Exp $
*/
#include "assym.s" /* system definitions */
diff --git a/sys/i386/i386/swapgeneric.c b/sys/i386/i386/swapgeneric.c
index 95fbd9d049e1..4d07077417cb 100644
--- a/sys/i386/i386/swapgeneric.c
+++ b/sys/i386/i386/swapgeneric.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)swapgeneric.c 5.5 (Berkeley) 5/9/91
- * $Id: swapgeneric.c,v 1.11 1995/08/19 15:59:35 joerg Exp $
+ * $Id: swapgeneric.c,v 1.10.4.1 1995/09/30 13:50:10 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/i386/i386/swtch.s b/sys/i386/i386/swtch.s
index e15298d6d046..e8cf8699cda4 100644
--- a/sys/i386/i386/swtch.s
+++ b/sys/i386/i386/swtch.s
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: swtch.s,v 1.19 1995/01/21 15:20:23 bde Exp $
+ * $Id: swtch.s,v 1.20 1995/02/17 02:22:42 phk Exp $
*/
#include "npx.h" /* for NNPX */
diff --git a/sys/i386/i386/symbols.raw b/sys/i386/i386/symbols.raw
index a2193bab8d19..aae5c07d6bbd 100644
--- a/sys/i386/i386/symbols.raw
+++ b/sys/i386/i386/symbols.raw
@@ -1,6 +1,6 @@
# @(#)symbols.raw 7.6 (Berkeley) 5/8/91
#
-# $Id: symbols.raw,v 1.4 1994/10/09 07:34:30 davidg Exp $
+# $Id: symbols.raw,v 1.4.8.1 1995/08/23 07:24:58 davidg Exp $
#
diff --git a/sys/i386/i386/sys_machdep.c b/sys/i386/i386/sys_machdep.c
index 3c4f1cc264c3..f68d0d4c0302 100644
--- a/sys/i386/i386/sys_machdep.c
+++ b/sys/i386/i386/sys_machdep.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: @(#)sys_machdep.c 5.5 (Berkeley) 1/19/91
- * $Id: sys_machdep.c,v 1.8 1995/03/10 08:13:07 davidg Exp $
+ * $Id: sys_machdep.c,v 1.9 1995/05/30 07:59:40 rgrimes Exp $
*
*/
diff --git a/sys/i386/i386/trap.c b/sys/i386/i386/trap.c
index 3883c3d16f72..868e487f3dc3 100644
--- a/sys/i386/i386/trap.c
+++ b/sys/i386/i386/trap.c
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* from: @(#)trap.c 7.4 (Berkeley) 5/13/91
- * $Id: trap.c,v 1.53.2.2 1995/08/23 07:31:17 davidg Exp $
+ * $Id: trap.c,v 1.53.2.3 1995/10/10 00:45:46 davidg Exp $
*/
/*
diff --git a/sys/i386/i386/userconfig.c b/sys/i386/i386/userconfig.c
index c558944cdd7f..0cba21573424 100644
--- a/sys/i386/i386/userconfig.c
+++ b/sys/i386/i386/userconfig.c
@@ -46,7 +46,7 @@
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
**
- ** $Id: userconfig.c,v 1.35 1995/10/06 05:36:51 jkh Exp $
+ ** $Id: userconfig.c,v 1.28.4.3 1995/10/06 05:43:44 jkh Exp $
**/
/**
@@ -2143,7 +2143,7 @@ visuserconfig(void)
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: userconfig.c,v 1.35 1995/10/06 05:36:51 jkh Exp $
+ * $Id: userconfig.c,v 1.28.4.3 1995/10/06 05:43:44 jkh Exp $
*/
diff --git a/sys/i386/i386/vm_machdep.c b/sys/i386/i386/vm_machdep.c
index 2ff3602015b3..689972b1714a 100644
--- a/sys/i386/i386/vm_machdep.c
+++ b/sys/i386/i386/vm_machdep.c
@@ -38,7 +38,7 @@
*
* from: @(#)vm_machdep.c 7.3 (Berkeley) 5/13/91
* Utah $Hdr: vm_machdep.c 1.16.1.1 89/06/23$
- * $Id: vm_machdep.c,v 1.38 1995/05/18 09:17:07 davidg Exp $
+ * $Id: vm_machdep.c,v 1.39 1995/05/30 07:59:46 rgrimes Exp $
*/
#include "npx.h"
diff --git a/sys/i386/ibcs2/coff.h b/sys/i386/ibcs2/coff.h
index 0a25b84ee584..468908376a94 100644
--- a/sys/i386/ibcs2/coff.h
+++ b/sys/i386/ibcs2/coff.h
@@ -26,7 +26,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: coff.h,v 1.1 1994/10/12 19:37:16 sos Exp $
+ * $Id: coff.h,v 1.1 1994/10/14 08:53:14 sos Exp $
*/
#ifndef _COFF_H
diff --git a/sys/i386/ibcs2/ibcs2.h b/sys/i386/ibcs2/ibcs2.h
index 8063c7be0b84..6671a7975a7f 100644
--- a/sys/i386/ibcs2/ibcs2.h
+++ b/sys/i386/ibcs2/ibcs2.h
@@ -26,7 +26,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: ibcs2.h,v 1.3 1994/10/17 22:13:06 sos Exp $
+ * $Id: ibcs2.h,v 1.4 1995/05/30 07:59:50 rgrimes Exp $
*/
/* trace all iBCS2 system calls */
diff --git a/sys/i386/ibcs2/ibcs2_dummy.c b/sys/i386/ibcs2/ibcs2_dummy.c
index 7a7c10275faf..9fba1318f742 100644
--- a/sys/i386/ibcs2/ibcs2_dummy.c
+++ b/sys/i386/ibcs2/ibcs2_dummy.c
@@ -26,7 +26,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: ibcs2_dummy.c,v 1.1 1994/10/14 08:52:59 sos Exp $
+ * $Id: ibcs2_dummy.c,v 1.2 1995/05/30 07:59:51 rgrimes Exp $
*/
#include <i386/ibcs2/ibcs2.h>
diff --git a/sys/i386/ibcs2/ibcs2_file.c b/sys/i386/ibcs2/ibcs2_file.c
index c6217582a179..5e160419cf43 100644
--- a/sys/i386/ibcs2/ibcs2_file.c
+++ b/sys/i386/ibcs2/ibcs2_file.c
@@ -35,7 +35,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: ibcs2_file.c,v 1.2 1994/12/14 22:03:48 sos Exp $
+ * $Id: ibcs2_file.c,v 1.3 1995/05/30 07:59:53 rgrimes Exp $
*/
#include <i386/ibcs2/ibcs2.h>
diff --git a/sys/i386/ibcs2/ibcs2_ioctl.c b/sys/i386/ibcs2/ibcs2_ioctl.c
index 2f2a6cb8a67c..1f5beda9da16 100644
--- a/sys/i386/ibcs2/ibcs2_ioctl.c
+++ b/sys/i386/ibcs2/ibcs2_ioctl.c
@@ -26,7 +26,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: ibcs2_ioctl.c,v 1.3 1994/10/23 19:19:42 sos Exp $
+ * $Id: ibcs2_ioctl.c,v 1.4 1995/05/30 07:59:54 rgrimes Exp $
*/
#include <i386/ibcs2/ibcs2.h>
diff --git a/sys/i386/ibcs2/ibcs2_ipc.c b/sys/i386/ibcs2/ibcs2_ipc.c
index e2e5a5b81fcf..c267249feb79 100644
--- a/sys/i386/ibcs2/ibcs2_ipc.c
+++ b/sys/i386/ibcs2/ibcs2_ipc.c
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: ibcs2_ipc.c,v 1.1 1994/10/14 08:53:04 sos Exp $
+ * $Id: ibcs2_ipc.c,v 1.2 1995/05/30 07:59:56 rgrimes Exp $
*/
#include <i386/ibcs2/ibcs2.h>
diff --git a/sys/i386/ibcs2/ibcs2_isc.c b/sys/i386/ibcs2/ibcs2_isc.c
index a6c9dbd09593..493e71097ff9 100644
--- a/sys/i386/ibcs2/ibcs2_isc.c
+++ b/sys/i386/ibcs2/ibcs2_isc.c
@@ -26,7 +26,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: ibcs2_isc.c,v 1.3 1995/04/30 11:30:12 ache Exp $
+ * $Id: ibcs2_isc.c,v 1.4 1995/05/30 07:59:58 rgrimes Exp $
*/
#include <i386/ibcs2/ibcs2.h>
diff --git a/sys/i386/ibcs2/ibcs2_misc.c b/sys/i386/ibcs2/ibcs2_misc.c
index 742f211fd056..57bafc162e3e 100644
--- a/sys/i386/ibcs2/ibcs2_misc.c
+++ b/sys/i386/ibcs2/ibcs2_misc.c
@@ -35,7 +35,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: ibcs2_misc.c,v 1.4 1995/05/02 17:14:38 ache Exp $
+ * $Id: ibcs2_misc.c,v 1.5 1995/05/30 07:59:59 rgrimes Exp $
*/
#include <i386/ibcs2/ibcs2.h>
diff --git a/sys/i386/ibcs2/ibcs2_signal.c b/sys/i386/ibcs2/ibcs2_signal.c
index 3171c2c2ea5a..ab8d2898004a 100644
--- a/sys/i386/ibcs2/ibcs2_signal.c
+++ b/sys/i386/ibcs2/ibcs2_signal.c
@@ -35,7 +35,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: ibcs2_signal.c,v 1.1 1994/10/14 08:53:07 sos Exp $
+ * $Id: ibcs2_signal.c,v 1.2 1995/05/30 08:00:06 rgrimes Exp $
*/
#include <i386/ibcs2/ibcs2.h>
diff --git a/sys/i386/ibcs2/ibcs2_socksys.c b/sys/i386/ibcs2/ibcs2_socksys.c
index a1a52ad50851..a8c22fdf0620 100644
--- a/sys/i386/ibcs2/ibcs2_socksys.c
+++ b/sys/i386/ibcs2/ibcs2_socksys.c
@@ -28,7 +28,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: ibcs2_socksys.c,v 1.2 1994/10/17 22:13:08 sos Exp $
+ * $Id: ibcs2_socksys.c,v 1.3 1995/05/30 08:00:07 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/i386/ibcs2/ibcs2_socksys.h b/sys/i386/ibcs2/ibcs2_socksys.h
index fc5b2e2fa963..5229872397b6 100644
--- a/sys/i386/ibcs2/ibcs2_socksys.h
+++ b/sys/i386/ibcs2/ibcs2_socksys.h
@@ -28,7 +28,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: ibcs2_socksys.h,v 1.2 1994/10/17 22:13:10 sos Exp $
+ * $Id: ibcs2_socksys.h,v 1.3 1995/05/30 08:00:09 rgrimes Exp $
*/
struct ss_call {
diff --git a/sys/i386/ibcs2/ibcs2_stats.c b/sys/i386/ibcs2/ibcs2_stats.c
index eee1ef4ca155..642ec2dada96 100644
--- a/sys/i386/ibcs2/ibcs2_stats.c
+++ b/sys/i386/ibcs2/ibcs2_stats.c
@@ -35,7 +35,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: ibcs2_stats.c,v 1.1 1994/10/14 08:53:09 sos Exp $
+ * $Id: ibcs2_stats.c,v 1.2 1995/05/30 08:00:11 rgrimes Exp $
*/
#include <i386/ibcs2/ibcs2.h>
diff --git a/sys/i386/ibcs2/ibcs2_sysent.c b/sys/i386/ibcs2/ibcs2_sysent.c
index 23ce9ce927cb..3d7fdfd7b5ef 100644
--- a/sys/i386/ibcs2/ibcs2_sysent.c
+++ b/sys/i386/ibcs2/ibcs2_sysent.c
@@ -26,7 +26,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: ibcs2_sysent.c,v 1.1 1994/10/14 08:53:10 sos Exp $
+ * $Id: ibcs2_sysent.c,v 1.2 1995/05/30 08:00:12 rgrimes Exp $
*/
#include <i386/ibcs2/ibcs2.h>
diff --git a/sys/i386/ibcs2/ibcs2_sysi86.c b/sys/i386/ibcs2/ibcs2_sysi86.c
index 611ad1080a77..786a8e00f40c 100644
--- a/sys/i386/ibcs2/ibcs2_sysi86.c
+++ b/sys/i386/ibcs2/ibcs2_sysi86.c
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: ibcs2_sysi86.c,v 1.1 1994/10/14 08:53:11 sos Exp $
+ * $Id: ibcs2_sysi86.c,v 1.2 1995/05/30 08:00:14 rgrimes Exp $
*/
#include <i386/ibcs2/ibcs2.h>
diff --git a/sys/i386/ibcs2/ibcs2_xenix.c b/sys/i386/ibcs2/ibcs2_xenix.c
index 3bbe7e7c9e71..cb41d65b12de 100644
--- a/sys/i386/ibcs2/ibcs2_xenix.c
+++ b/sys/i386/ibcs2/ibcs2_xenix.c
@@ -26,7 +26,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: ibcs2_xenix.c,v 1.4 1995/05/02 13:14:59 ache Exp $
+ * $Id: ibcs2_xenix.c,v 1.5 1995/05/30 08:00:15 rgrimes Exp $
*/
#include <i386/ibcs2/ibcs2.h>
diff --git a/sys/i386/ibcs2/imgact_coff.c b/sys/i386/ibcs2/imgact_coff.c
index 58ffb1b4e94e..b4c4f065795a 100644
--- a/sys/i386/ibcs2/imgact_coff.c
+++ b/sys/i386/ibcs2/imgact_coff.c
@@ -26,7 +26,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: imgact_coff.c,v 1.4.4.1 1995/08/31 10:00:11 davidg Exp $
+ * $Id: imgact_coff.c,v 1.4.4.2 1995/09/15 08:36:10 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/i386/include/ansi.h b/sys/i386/include/ansi.h
index c98cea021c7b..a902d997fda4 100644
--- a/sys/i386/include/ansi.h
+++ b/sys/i386/include/ansi.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ansi.h 8.2 (Berkeley) 1/4/94
- * $Id: ansi.h,v 1.8 1995/06/28 01:39:26 bde Exp $
+ * $Id: ansi.h,v 1.7.4.1 1995/10/01 06:29:18 davidg Exp $
*/
#ifndef _MACHINE_ANSI_H_
diff --git a/sys/i386/include/apm_bios.h b/sys/i386/include/apm_bios.h
index 868455b3bacb..c950708af068 100644
--- a/sys/i386/include/apm_bios.h
+++ b/sys/i386/include/apm_bios.h
@@ -12,7 +12,7 @@
*
* Aug, 1994 Implemented on FreeBSD 1.1.5.1R (Toshiba AVS001WD)
*
- * $Id: apm_bios.h,v 1.4 1995/02/17 02:22:45 phk Exp $
+ * $Id: apm_bios.h,v 1.5 1995/05/30 08:00:23 rgrimes Exp $
*/
#ifndef _MACHINE_APM_BIOS_H_
diff --git a/sys/i386/include/apm_segments.h b/sys/i386/include/apm_segments.h
index c76df0787fad..c511f5c6d502 100644
--- a/sys/i386/include/apm_segments.h
+++ b/sys/i386/include/apm_segments.h
@@ -12,7 +12,7 @@
*
* Sep., 1994 Implemented on FreeBSD 1.1.5.1R (Toshiba AVS001WD)
*
- * $Id: apm_segments.h,v 1.3 1995/02/17 02:22:46 phk Exp $
+ * $Id: apm_segments.h,v 1.4 1995/05/30 08:00:25 rgrimes Exp $
*/
#ifndef _MACHINE_APM_SEGMENTS_H
diff --git a/sys/i386/include/asmacros.h b/sys/i386/include/asmacros.h
index b2a6dc839f2e..aa9bbe215fec 100644
--- a/sys/i386/include/asmacros.h
+++ b/sys/i386/include/asmacros.h
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: asmacros.h,v 1.4 1994/08/19 11:20:11 jkh Exp $
+ * $Id: asmacros.h,v 1.5 1994/09/08 12:25:18 bde Exp $
*/
#ifndef _MACHINE_ASMACROS_H_
diff --git a/sys/i386/include/bootinfo.h b/sys/i386/include/bootinfo.h
index d0b471f4ee5a..919b6b205be2 100644
--- a/sys/i386/include/bootinfo.h
+++ b/sys/i386/include/bootinfo.h
@@ -29,7 +29,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: bootinfo.h,v 1.4 1995/01/25 21:40:32 bde Exp $
+ * $Id: bootinfo.h,v 1.5 1995/05/30 08:00:26 rgrimes Exp $
*/
#ifndef _MACHINE_BOOTINFO_H_
diff --git a/sys/i386/include/cons.h b/sys/i386/include/cons.h
index faa17d12332c..4ae03493d093 100644
--- a/sys/i386/include/cons.h
+++ b/sys/i386/include/cons.h
@@ -3,6 +3,6 @@
* needs to access these functions. In the mean time, just include the
* header where it sits.
*
- * $Id$
+ * $Id: cons.h,v 1.2 1994/08/02 07:38:41 davidg Exp $
*/
#include <i386/i386/cons.h>
diff --git a/sys/i386/include/console.h b/sys/i386/include/console.h
index 870c5de887ec..ec465ea8a587 100644
--- a/sys/i386/include/console.h
+++ b/sys/i386/include/console.h
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: console.h,v 1.18 1995/01/28 22:15:30 sos Exp $
+ * $Id: console.h,v 1.19 1995/05/30 08:00:28 rgrimes Exp $
*/
#ifndef _CONSOLE_H_
diff --git a/sys/i386/include/cpu.h b/sys/i386/include/cpu.h
index 58a5ab6778ba..8075d30cc14a 100644
--- a/sys/i386/include/cpu.h
+++ b/sys/i386/include/cpu.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)cpu.h 5.4 (Berkeley) 5/9/91
- * $Id: cpu.h,v 1.19 1994/12/03 10:18:24 bde Exp $
+ * $Id: cpu.h,v 1.20 1995/05/04 07:50:06 davidg Exp $
*/
#ifndef _MACHINE_CPU_H_
diff --git a/sys/i386/include/cpufunc.h b/sys/i386/include/cpufunc.h
index b34e918d4ab3..fe292c43861f 100644
--- a/sys/i386/include/cpufunc.h
+++ b/sys/i386/include/cpufunc.h
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: cpufunc.h,v 1.37.4.1 1995/08/23 09:40:21 davidg Exp $
+ * $Id: cpufunc.h,v 1.37.4.2 1995/09/12 05:48:43 davidg Exp $
*/
/*
diff --git a/sys/i386/include/cputypes.h b/sys/i386/include/cputypes.h
index 52d8e2051224..83ac156181c8 100644
--- a/sys/i386/include/cputypes.h
+++ b/sys/i386/include/cputypes.h
@@ -24,7 +24,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: cputypes.h,v 1.2 1993/11/07 17:42:49 wollman Exp $
+ * $Id: cputypes.h,v 1.3 1994/09/04 19:59:23 pst Exp $
*/
#ifndef _MACHINE_CPUTYPES_H_
diff --git a/sys/i386/include/db_machdep.h b/sys/i386/include/db_machdep.h
index cae2a45e191b..369f7f76b556 100644
--- a/sys/i386/include/db_machdep.h
+++ b/sys/i386/include/db_machdep.h
@@ -23,7 +23,7 @@
* any improvements or extensions that they make and grant Carnegie Mellon
* the rights to redistribute these changes.
*
- * $Id: db_machdep.h,v 1.7 1995/01/14 10:34:52 bde Exp $
+ * $Id: db_machdep.h,v 1.8 1995/05/30 08:00:34 rgrimes Exp $
*/
#ifndef _MACHINE_DB_MACHDEP_H_
diff --git a/sys/i386/include/devconf.h b/sys/i386/include/devconf.h
index f4fbe34aa5d3..7b1d7bc85cb0 100644
--- a/sys/i386/include/devconf.h
+++ b/sys/i386/include/devconf.h
@@ -22,7 +22,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: devconf.h,v 1.8 1995/02/04 12:47:19 se Exp $
+ * $Id: devconf.h,v 1.9 1995/05/30 08:00:37 rgrimes Exp $
*/
/*
* devconf.h - machine-dependent device configuration table
diff --git a/sys/i386/include/endian.h b/sys/i386/include/endian.h
index ac60e4c73d20..14d1cd737e0e 100644
--- a/sys/i386/include/endian.h
+++ b/sys/i386/include/endian.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: @(#)endian.h 7.8 (Berkeley) 4/3/91
- * $Id: endian.h,v 1.5 1994/09/10 20:03:14 csgr Exp $
+ * $Id: endian.h,v 1.6 1995/02/12 08:31:31 jkh Exp $
*/
#ifndef _MACHINE_ENDIAN_H_
diff --git a/sys/i386/include/exec.h b/sys/i386/include/exec.h
index c08283f7384a..65241472837f 100644
--- a/sys/i386/include/exec.h
+++ b/sys/i386/include/exec.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)exec.h 8.1 (Berkeley) 6/11/93
- * $Id: exec.h,v 1.4 1994/08/09 14:39:56 jkh Exp $
+ * $Id: exec.h,v 1.5 1994/09/24 21:36:38 davidg Exp $
*/
#ifndef _EXEC_H_
diff --git a/sys/i386/include/float.h b/sys/i386/include/float.h
index fb5967e6eadc..3024ca2b3dd3 100644
--- a/sys/i386/include/float.h
+++ b/sys/i386/include/float.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: @(#)float.h 7.1 (Berkeley) 5/8/90
- * $Id: float.h,v 1.4 1993/10/16 14:39:16 rgrimes Exp $
+ * $Id: float.h,v 1.5 1993/11/07 17:42:53 wollman Exp $
*/
#ifndef _MACHINE_FLOAT_H_
diff --git a/sys/i386/include/floatingpoint.h b/sys/i386/include/floatingpoint.h
index 69cb204c835c..65d4df8d095d 100644
--- a/sys/i386/include/floatingpoint.h
+++ b/sys/i386/include/floatingpoint.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: @(#) floatingpoint.h 1.0 (Berkeley) 9/23/93
- * $Id: floatingpoint.h,v 1.5 1994/08/04 19:16:36 wollman Exp $
+ * $Id: floatingpoint.h,v 1.6 1994/09/20 22:26:37 bde Exp $
*/
#ifndef _FLOATINGPOINT_H_
diff --git a/sys/i386/include/frame.h b/sys/i386/include/frame.h
index 9bee6edd2d13..0c89e9ee83d4 100644
--- a/sys/i386/include/frame.h
+++ b/sys/i386/include/frame.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)frame.h 5.2 (Berkeley) 1/18/91
- * $Id: frame.h,v 1.9 1994/05/25 08:56:02 rgrimes Exp $
+ * $Id: frame.h,v 1.10 1995/03/16 18:11:42 bde Exp $
*/
#ifndef _MACHINE_FRAME_H_
diff --git a/sys/i386/include/ieeefp.h b/sys/i386/include/ieeefp.h
index d36ede3cbd1e..055f15e9e0d5 100644
--- a/sys/i386/include/ieeefp.h
+++ b/sys/i386/include/ieeefp.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: @(#) ieeefp.h 1.0 (Berkeley) 9/23/93
- * $Id: ieeefp.h,v 1.1 1994/08/04 19:16:37 wollman Exp $
+ * $Id: ieeefp.h,v 1.2 1994/08/05 14:36:04 wollman Exp $
*/
/*
diff --git a/sys/i386/include/ioctl_ctx.h b/sys/i386/include/ioctl_ctx.h
index a330664c8579..c9e289f3c434 100644
--- a/sys/i386/include/ioctl_ctx.h
+++ b/sys/i386/include/ioctl_ctx.h
@@ -7,7 +7,7 @@
* of this software, nor does the author assume any responsibility
* for damages incurred with its use
*
- * $Id: ioctl_ctx.h,v 1.1 1994/10/01 17:59:38 davidg Exp $
+ * $Id: ioctl_ctx.h,v 1.2 1995/05/30 08:00:40 rgrimes Exp $
*/
/*
diff --git a/sys/i386/include/ioctl_fd.h b/sys/i386/include/ioctl_fd.h
index 67329399ad84..eb9adca9ba18 100644
--- a/sys/i386/include/ioctl_fd.h
+++ b/sys/i386/include/ioctl_fd.h
@@ -24,7 +24,7 @@
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*
- * $Id: ioctl_fd.h,v 1.6 1994/09/25 18:41:21 joerg Exp $
+ * $Id: ioctl_fd.h,v 1.7 1994/10/30 19:17:39 joerg Exp $
*/
#ifndef _IOCTL_FD_H
diff --git a/sys/i386/include/ipl.h b/sys/i386/include/ipl.h
index 773fa9c700c6..f60f2e765c1a 100644
--- a/sys/i386/include/ipl.h
+++ b/sys/i386/include/ipl.h
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: ipl.h,v 1.2 1994/08/02 07:38:49 davidg Exp $
*/
#ifndef _ISA_IPL_H_
diff --git a/sys/i386/include/limits.h b/sys/i386/include/limits.h
index c71216f7afff..85dff93060bb 100644
--- a/sys/i386/include/limits.h
+++ b/sys/i386/include/limits.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)limits.h 8.3 (Berkeley) 1/4/94
- * $Id: limits.h,v 1.8 1994/08/02 07:38:50 davidg Exp $
+ * $Id: limits.h,v 1.9 1995/02/03 21:49:18 bde Exp $
*/
#ifndef _MACHINE_LIMITS_H_
diff --git a/sys/i386/include/lpt.h b/sys/i386/include/lpt.h
index a203c7d69d54..2a58a87eb1fe 100644
--- a/sys/i386/include/lpt.h
+++ b/sys/i386/include/lpt.h
@@ -11,7 +11,7 @@
*
* Geoff Rehmet, Rhodes University, South Africa <csgr@cs.ru.ac.za>
*
- * $Id: lpt.h,v 1.2 1994/08/02 07:38:52 davidg Exp $
+ * $Id: lpt.h,v 1.3 1995/05/30 08:00:41 rgrimes Exp $
*/
#ifndef _LPT_PRINTER_H_
diff --git a/sys/i386/include/md_var.h b/sys/i386/include/md_var.h
index 34854b05c1b2..7592c61602ea 100644
--- a/sys/i386/include/md_var.h
+++ b/sys/i386/include/md_var.h
@@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: md_var.h,v 1.2 1995/03/28 07:55:08 bde Exp $
+ * $Id: md_var.h,v 1.3 1995/05/30 08:00:43 rgrimes Exp $
*/
#ifndef _MACHINE_MD_VAR_H_
diff --git a/sys/i386/include/mouse.h b/sys/i386/include/mouse.h
index 95a66e474c6d..bbd99a544cee 100644
--- a/sys/i386/include/mouse.h
+++ b/sys/i386/include/mouse.h
@@ -19,7 +19,7 @@
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: mouse.h,v 1.1 1994/05/17 14:05:31 jkh Exp $
+ * $Id: mouse.h,v 1.1 1994/09/09 11:27:31 dfr Exp $
*/
struct mouseinfo {
diff --git a/sys/i386/include/mtpr.h b/sys/i386/include/mtpr.h
index e8347e677541..e56ef7f85400 100644
--- a/sys/i386/include/mtpr.h
+++ b/sys/i386/include/mtpr.h
@@ -1,4 +1,4 @@
/*
* Unused in 386BSD port
- * $Id$
+ * $Id: mtpr.h,v 1.2 1993/10/16 14:39:21 rgrimes Exp $
*/
diff --git a/sys/i386/include/npx.h b/sys/i386/include/npx.h
index e56fdc216e2b..62290efd43bc 100644
--- a/sys/i386/include/npx.h
+++ b/sys/i386/include/npx.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)npx.h 5.3 (Berkeley) 1/18/91
- * $Id: npx.h,v 1.6 1994/11/05 22:59:09 bde Exp $
+ * $Id: npx.h,v 1.7 1995/01/03 03:57:46 bde Exp $
*/
/*
diff --git a/sys/i386/include/param.h b/sys/i386/include/param.h
index 716c19b64b74..33ddb6f96b8e 100644
--- a/sys/i386/include/param.h
+++ b/sys/i386/include/param.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)param.h 5.8 (Berkeley) 6/28/91
- * $Id: param.h,v 1.18 1995/02/19 10:36:17 gpalmer Exp $
+ * $Id: param.h,v 1.19 1995/05/25 07:41:27 davidg Exp $
*/
#ifndef _MACHINE_PARAM_H_
diff --git a/sys/i386/include/pc/display.h b/sys/i386/include/pc/display.h
index 9e64a3f13307..31a203cc852d 100644
--- a/sys/i386/include/pc/display.h
+++ b/sys/i386/include/pc/display.h
@@ -1,7 +1,7 @@
/*
* IBM PC display definitions
*
- * $Id$
+ * $Id: display.h,v 1.2 1993/10/16 14:40:55 rgrimes Exp $
*/
/* Color attributes for foreground text */
diff --git a/sys/i386/include/pc/msdos.h b/sys/i386/include/pc/msdos.h
index ea221c7954a5..63c6c3f724b9 100644
--- a/sys/i386/include/pc/msdos.h
+++ b/sys/i386/include/pc/msdos.h
@@ -3,7 +3,7 @@
* [obtained from mtools -wfj]
* how to decipher DOS disk structures in coexisting with DOS
*
- * $Id$
+ * $Id: msdos.h,v 1.2 1993/10/16 14:40:57 rgrimes Exp $
*/
#define MSECTOR_SIZE 512 /* MSDOS sector size in bytes */
diff --git a/sys/i386/include/pcaudioio.h b/sys/i386/include/pcaudioio.h
index d88733470281..25d9f3b2f71a 100644
--- a/sys/i386/include/pcaudioio.h
+++ b/sys/i386/include/pcaudioio.h
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: pcaudioio.h,v 1.3 1994/09/29 08:31:39 sos Exp $
+ * $Id: pcaudioio.h,v 1.4 1995/05/30 08:00:44 rgrimes Exp $
*/
#ifndef _PCAUDIOIO_H_
diff --git a/sys/i386/include/pcb.h b/sys/i386/include/pcb.h
index 8ce7febb5ada..2667c4797f81 100644
--- a/sys/i386/include/pcb.h
+++ b/sys/i386/include/pcb.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)pcb.h 5.10 (Berkeley) 5/12/91
- * $Id: pcb.h,v 1.7 1994/10/08 22:21:33 phk Exp $
+ * $Id: pcb.h,v 1.8 1994/12/03 10:02:55 bde Exp $
*/
#ifndef _I386_PCB_H_
diff --git a/sys/i386/include/pmap.h b/sys/i386/include/pmap.h
index 8cd0362a9c92..d30e019ca6db 100644
--- a/sys/i386/include/pmap.h
+++ b/sys/i386/include/pmap.h
@@ -42,7 +42,7 @@
*
* from: hp300: @(#)pmap.h 7.2 (Berkeley) 12/16/90
* from: @(#)pmap.h 7.4 (Berkeley) 5/12/91
- * $Id: pmap.h,v 1.26 1995/05/30 08:00:48 rgrimes Exp $
+ * $Id: pmap.h,v 1.26.4.1 1995/09/08 04:23:52 davidg Exp $
*/
#ifndef _MACHINE_PMAP_H_
diff --git a/sys/i386/include/proc.h b/sys/i386/include/proc.h
index 92de3af87dcf..240b5fcb02ab 100644
--- a/sys/i386/include/proc.h
+++ b/sys/i386/include/proc.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: @(#)proc.h 7.1 (Berkeley) 5/15/91
- * $Id: proc.h,v 1.2 1993/10/16 14:39:24 rgrimes Exp $
+ * $Id: proc.h,v 1.4 1994/05/25 08:56:29 rgrimes Exp $
*/
#ifndef _MACHINE_PROC_H_
diff --git a/sys/i386/include/profile.h b/sys/i386/include/profile.h
index 9fe27ec5eda8..49919f327cb0 100644
--- a/sys/i386/include/profile.h
+++ b/sys/i386/include/profile.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)profile.h 8.1 (Berkeley) 6/11/93
- * $Id: profile.h,v 1.3 1994/08/21 04:55:29 paul Exp $
+ * $Id: profile.h,v 1.4 1994/09/15 16:27:14 paul Exp $
*/
#ifndef _I386_MACHINE_PROFILE_H_
diff --git a/sys/i386/include/psl.h b/sys/i386/include/psl.h
index 3d96dbc52495..8f9ec93948ec 100644
--- a/sys/i386/include/psl.h
+++ b/sys/i386/include/psl.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)psl.h 5.2 (Berkeley) 1/18/91
- * $Id: psl.h,v 1.5 1994/08/10 03:51:18 wollman Exp $
+ * $Id: psl.h,v 1.6 1995/01/14 13:20:25 bde Exp $
*/
#ifndef _MACHINE_PSL_H_
diff --git a/sys/i386/include/pte.h b/sys/i386/include/pte.h
index b68f71610cca..2778280ea121 100644
--- a/sys/i386/include/pte.h
+++ b/sys/i386/include/pte.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)pte.h 5.5 (Berkeley) 5/9/91
- * $Id: pte.h,v 1.7 1994/09/04 23:10:25 davidg Exp $
+ * $Id: pte.h,v 1.8 1995/05/30 08:00:49 rgrimes Exp $
*/
#ifndef _MACHINE_PTE_H_
diff --git a/sys/i386/include/ptrace.h b/sys/i386/include/ptrace.h
index 0892b83e2606..548ecc495223 100644
--- a/sys/i386/include/ptrace.h
+++ b/sys/i386/include/ptrace.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ptrace.h 8.1 (Berkeley) 6/11/93
- * $Id$
+ * $Id: ptrace.h,v 1.2 1994/08/02 07:38:57 davidg Exp $
*/
/*
diff --git a/sys/i386/include/reg.h b/sys/i386/include/reg.h
index 9fc18148ff36..e81c0dd8bf2b 100644
--- a/sys/i386/include/reg.h
+++ b/sys/i386/include/reg.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)reg.h 5.5 (Berkeley) 1/18/91
- * $Id: reg.h,v 1.9 1994/10/02 17:31:29 phk Exp $
+ * $Id: reg.h,v 1.10 1995/01/14 10:41:41 bde Exp $
*/
#ifndef _MACHINE_REG_H_
diff --git a/sys/i386/include/reloc.h b/sys/i386/include/reloc.h
index 7f9cfad64a27..be61d3e4bb09 100644
--- a/sys/i386/include/reloc.h
+++ b/sys/i386/include/reloc.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)reloc.h 8.1 (Berkeley) 6/10/93
- * $Id: reloc.h,v 1.3 1994/08/09 14:39:57 jkh Exp $
+ * $Id: reloc.h,v 1.4 1994/08/21 04:55:30 paul Exp $
*/
#ifndef _I386_MACHINE_RELOC_H_
diff --git a/sys/i386/include/segments.h b/sys/i386/include/segments.h
index dcac309481a7..1e2fd1dcdbee 100644
--- a/sys/i386/include/segments.h
+++ b/sys/i386/include/segments.h
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* from: @(#)segments.h 7.1 (Berkeley) 5/9/91
- * $Id: segments.h,v 1.8 1995/02/14 19:21:15 sos Exp $
+ * $Id: segments.h,v 1.9 1995/05/30 08:00:50 rgrimes Exp $
*/
#ifndef _MACHINE_SEGMENTS_H_
diff --git a/sys/i386/include/si.h b/sys/i386/include/si.h
index 9770fb63eb52..ded99e1d9b00 100644
--- a/sys/i386/include/si.h
+++ b/sys/i386/include/si.h
@@ -30,7 +30,7 @@
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
* NO EVENT SHALL THE AUTHORS BE LIABLE.
*
- * $Id: si.h,v 1.3 1995/08/22 00:42:07 peter Exp $
+ * $Id: si.h,v 1.4 1995/09/13 08:39:28 peter Exp $
*/
/*
diff --git a/sys/i386/include/signal.h b/sys/i386/include/signal.h
index 093278f1399a..89914bf9e6d6 100644
--- a/sys/i386/include/signal.h
+++ b/sys/i386/include/signal.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)signal.h 8.1 (Berkeley) 6/11/93
- * $Id: signal.h,v 1.3 1994/08/02 07:39:01 davidg Exp $
+ * $Id: signal.h,v 1.4 1994/08/21 04:55:30 paul Exp $
*/
#ifndef _I386_MACHINE_SIGNAL_H_
diff --git a/sys/i386/include/speaker.h b/sys/i386/include/speaker.h
index f097e4807cf8..b5bd693039b8 100644
--- a/sys/i386/include/speaker.h
+++ b/sys/i386/include/speaker.h
@@ -4,7 +4,7 @@
* v1.4 by Eric S. Raymond (esr@snark.thyrsus.com) Aug 1993
* modified for FreeBSD by Andrew A. Chernov <ache@astral.msk.su>
*
- * $Id$
+ * $Id: speaker.h,v 1.2 1994/08/02 07:39:05 davidg Exp $
*/
#ifndef _SPEAKER_H_
diff --git a/sys/i386/include/specialreg.h b/sys/i386/include/specialreg.h
index 75cc79dae89b..a06b5a9d2771 100644
--- a/sys/i386/include/specialreg.h
+++ b/sys/i386/include/specialreg.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: @(#)specialreg.h 7.1 (Berkeley) 5/9/91
- * $Id: specialreg.h,v 1.6 1995/01/14 10:44:55 bde Exp $
+ * $Id: specialreg.h,v 1.7 1995/05/30 08:00:54 rgrimes Exp $
*/
#ifndef _MACHINE_SPECIALREG_H_
diff --git a/sys/i386/include/spl.h b/sys/i386/include/spl.h
index 6f537d118c94..94e6749ca8ed 100644
--- a/sys/i386/include/spl.h
+++ b/sys/i386/include/spl.h
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: spl.h,v 1.8 1995/05/11 07:44:16 bde Exp $
+ * $Id: spl.h,v 1.8.4.1 1995/08/23 09:43:11 davidg Exp $
*/
#ifndef _MACHINE_IPL_H_
diff --git a/sys/i386/include/stdarg.h b/sys/i386/include/stdarg.h
index 0fce3ee8f433..3eb6000c856f 100644
--- a/sys/i386/include/stdarg.h
+++ b/sys/i386/include/stdarg.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)stdarg.h 8.1 (Berkeley) 6/10/93
- * $Id: stdarg.h,v 1.5 1994/08/02 07:39:09 davidg Exp $
+ * $Id: stdarg.h,v 1.6 1995/01/24 16:22:52 ache Exp $
*/
#ifndef _STDARG_H_
diff --git a/sys/i386/include/sysarch.h b/sys/i386/include/sysarch.h
index 746cef1011fe..4414a66eb779 100644
--- a/sys/i386/include/sysarch.h
+++ b/sys/i386/include/sysarch.h
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: sysarch.h,v 1.4 1994/08/02 07:39:11 davidg Exp $
*/
/*
diff --git a/sys/i386/include/trap.h b/sys/i386/include/trap.h
index e1ead777f348..30debd1ebd74 100644
--- a/sys/i386/include/trap.h
+++ b/sys/i386/include/trap.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)trap.h 5.4 (Berkeley) 5/9/91
- * $Id: trap.h,v 1.3 1993/11/07 17:43:15 wollman Exp $
+ * $Id: trap.h,v 1.4 1995/01/14 13:20:26 bde Exp $
*/
#ifndef _MACHINE_TRAP_H_
diff --git a/sys/i386/include/tss.h b/sys/i386/include/tss.h
index fd07e357ffd8..db0f55dc23ce 100644
--- a/sys/i386/include/tss.h
+++ b/sys/i386/include/tss.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)tss.h 5.4 (Berkeley) 1/18/91
- * $Id: tss.h,v 1.4 1993/11/17 23:25:04 wollman Exp $
+ * $Id: tss.h,v 1.5 1995/05/30 08:00:57 rgrimes Exp $
*/
#ifndef _MACHINE_TSS_H_
diff --git a/sys/i386/include/types.h b/sys/i386/include/types.h
index 78ce8d568ffc..c15dbd455914 100644
--- a/sys/i386/include/types.h
+++ b/sys/i386/include/types.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)types.h 8.3 (Berkeley) 1/5/94
- * $Id$
+ * $Id: types.h,v 1.4 1994/08/02 07:39:13 davidg Exp $
*/
#ifndef _MACHTYPES_H_
diff --git a/sys/i386/include/ultrasound.h b/sys/i386/include/ultrasound.h
index 42d968850c14..e14efe213a2b 100644
--- a/sys/i386/include/ultrasound.h
+++ b/sys/i386/include/ultrasound.h
@@ -24,7 +24,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: ultrasound.h,v 1.3 1994/08/02 07:39:15 davidg Exp $
*/
/*
diff --git a/sys/i386/include/varargs.h b/sys/i386/include/varargs.h
index fa6c9a7a9541..ee128f280f77 100644
--- a/sys/i386/include/varargs.h
+++ b/sys/i386/include/varargs.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)varargs.h 8.2 (Berkeley) 3/22/94
- * $Id$
+ * $Id: varargs.h,v 1.2 1994/08/02 07:39:17 davidg Exp $
*/
#ifndef _VARARGS_H_
diff --git a/sys/i386/include/vmparam.h b/sys/i386/include/vmparam.h
index 8ff3b451fcc2..c5a5def1d08e 100644
--- a/sys/i386/include/vmparam.h
+++ b/sys/i386/include/vmparam.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* from: @(#)vmparam.h 5.9 (Berkeley) 5/12/91
- * $Id: vmparam.h,v 1.17 1995/01/09 16:04:44 davidg Exp $
+ * $Id: vmparam.h,v 1.18 1995/05/25 07:41:28 davidg Exp $
*/
diff --git a/sys/i386/isa/README.le b/sys/i386/isa/README.le
index 32dcc280c77c..9144f495ae44 100644
--- a/sys/i386/isa/README.le
+++ b/sys/i386/isa/README.le
@@ -1,4 +1,4 @@
-$Id: README.le,v 1.1 1994/10/01 20:15:43 wollman Exp $
+$Id: README.le,v 1.2 1994/11/13 21:19:18 nate Exp $
----------------
diff --git a/sys/i386/isa/aha1542.c b/sys/i386/isa/aha1542.c
index ad0de030a96d..3c3d9faa9bc4 100644
--- a/sys/i386/isa/aha1542.c
+++ b/sys/i386/isa/aha1542.c
@@ -12,7 +12,7 @@
* on the understanding that TFS is not responsible for the correct
* functioning of this software in any circumstances.
*
- * $Id: aha1542.c,v 1.48 1995/10/01 15:09:51 dufault Exp $
+ * $Id: aha1542.c,v 1.45.4.2 1995/10/07 11:54:53 davidg Exp $
*/
/*
diff --git a/sys/i386/isa/aha1742.c b/sys/i386/isa/aha1742.c
index c2b7df48edf2..579df07d876a 100644
--- a/sys/i386/isa/aha1742.c
+++ b/sys/i386/isa/aha1742.c
@@ -14,7 +14,7 @@
*
* commenced: Sun Sep 27 18:14:01 PDT 1992
*
- * $Id: aha1742.c,v 1.34.4.1 1995/08/23 09:45:18 davidg Exp $
+ * $Id: aha1742.c,v 1.34.4.2 1995/08/31 06:36:02 davidg Exp $
*/
#include <sys/types.h>
diff --git a/sys/i386/isa/aic6360.c b/sys/i386/isa/aic6360.c
index db5ea86138c0..2253e5aa73c5 100644
--- a/sys/i386/isa/aic6360.c
+++ b/sys/i386/isa/aic6360.c
@@ -31,7 +31,7 @@
*/
/*
- * $Id: aic6360.c,v 1.9 1995/05/30 08:01:12 rgrimes Exp $
+ * $Id: aic6360.c,v 1.9.4.1 1995/08/31 06:36:03 davidg Exp $
*
* Acknowledgements: Many of the algorithms used in this driver are
* inspired by the work of Julian Elischer (julian@tfs.com) and
diff --git a/sys/i386/isa/aic7770.c b/sys/i386/isa/aic7770.c
index 33871f9a6672..89e2d0dee9e0 100644
--- a/sys/i386/isa/aic7770.c
+++ b/sys/i386/isa/aic7770.c
@@ -19,7 +19,7 @@
* 4. Modifications may be freely made to this file if the above conditions
* are met.
*
- * $Id: aic7770.c,v 1.14.4.1 1995/07/22 04:24:56 davidg Exp $
+ * $Id: aic7770.c,v 1.14.4.2 1995/09/21 02:10:55 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/i386/isa/asc.c b/sys/i386/isa/asc.c
index 4e994d9a98ff..e91e1a55c8b6 100644
--- a/sys/i386/isa/asc.c
+++ b/sys/i386/isa/asc.c
@@ -34,7 +34,7 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
- * $Id: asc.c,v 1.4 1995/09/08 18:30:33 julian Exp $
+ * $Id: asc.c,v 1.5 1995/09/08 19:01:28 julian Exp $
*/
#include "asc.h"
diff --git a/sys/i386/isa/ascreg.h b/sys/i386/isa/ascreg.h
index a1a7393de651..092a2d2fa1da 100644
--- a/sys/i386/isa/ascreg.h
+++ b/sys/i386/isa/ascreg.h
@@ -31,7 +31,7 @@
*/
/*
- * $Id:$
+ * $Id: ascreg.h,v 1.2 1995/09/08 18:30:34 julian Exp $
*/
/*** Registers (base=3EB): ************/
diff --git a/sys/i386/isa/bt742a.c b/sys/i386/isa/bt742a.c
index 491256940a75..cce1996830f1 100644
--- a/sys/i386/isa/bt742a.c
+++ b/sys/i386/isa/bt742a.c
@@ -12,7 +12,7 @@
* on the understanding that TFS is not responsible for the correct
* functioning of this software in any circumstances.
*
- * $Id: bt742a.c,v 1.36.4.1 1995/08/31 06:17:11 davidg Exp $
+ * $Id: bt742a.c,v 1.36.4.2 1995/08/31 06:36:05 davidg Exp $
*/
/*
diff --git a/sys/i386/isa/clock.c b/sys/i386/isa/clock.c
index 3c107c41a8d1..b14f7558a89f 100644
--- a/sys/i386/isa/clock.c
+++ b/sys/i386/isa/clock.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)clock.c 7.2 (Berkeley) 5/12/91
- * $Id: clock.c,v 1.36 1995/08/25 19:24:56 bde Exp $
+ * $Id: clock.c,v 1.35.2.1 1995/09/12 05:55:35 davidg Exp $
*/
/*
diff --git a/sys/i386/isa/ctx.c b/sys/i386/isa/ctx.c
index 5fa567e579cc..727a7464a8b6 100644
--- a/sys/i386/isa/ctx.c
+++ b/sys/i386/isa/ctx.c
@@ -8,7 +8,7 @@
* of this software, nor does the author assume any responsibility
* for damages incurred with its use.
*
- * $Id: ctx.c,v 1.7 1995/09/08 11:07:34 bde Exp $
+ * $Id: ctx.c,v 1.6.4.1 1995/09/14 07:09:05 davidg Exp $
*/
/*
diff --git a/sys/i386/isa/ctxreg.h b/sys/i386/isa/ctxreg.h
index 043bb1542656..e6acbab14230 100644
--- a/sys/i386/isa/ctxreg.h
+++ b/sys/i386/isa/ctxreg.h
@@ -7,7 +7,7 @@
* of this software, nor does the author assume any responsibility
* for damages incurred with its use
*
- * $Id: ctxreg.h,v 1.1 1994/10/01 17:59:42 davidg Exp $
+ * $Id: ctxreg.h,v 1.2 1995/05/30 08:01:28 rgrimes Exp $
*/
/*
diff --git a/sys/i386/isa/cy.c b/sys/i386/isa/cy.c
index 8740d7aef330..6f817aa937e8 100644
--- a/sys/i386/isa/cy.c
+++ b/sys/i386/isa/cy.c
@@ -27,7 +27,7 @@
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: cy.c,v 1.7.4.1 1995/09/14 07:09:10 davidg Exp $
+ * $Id: cy.c,v 1.7.4.2 1995/10/11 02:42:42 davidg Exp $
*/
#include "cy.h"
diff --git a/sys/i386/isa/cyreg.h b/sys/i386/isa/cyreg.h
index 8df7294c9a94..463a35404620 100644
--- a/sys/i386/isa/cyreg.h
+++ b/sys/i386/isa/cyreg.h
@@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: $
+ * $Id: cyreg.h,v 1.1 1995/07/05 12:15:51 bde Exp $
*/
/*
diff --git a/sys/i386/isa/diskslice_machdep.c b/sys/i386/isa/diskslice_machdep.c
index 54b285b67865..c8d4ecc48f8e 100644
--- a/sys/i386/isa/diskslice_machdep.c
+++ b/sys/i386/isa/diskslice_machdep.c
@@ -35,7 +35,7 @@
*
* from: @(#)ufs_disksubr.c 7.16 (Berkeley) 5/4/91
* from: ufs_disksubr.c,v 1.8 1994/06/07 01:21:39 phk Exp $
- * $Id: diskslice_machdep.c,v 1.16 1995/08/23 11:43:45 jkh Exp $
+ * $Id: diskslice_machdep.c,v 1.14.4.1 1995/09/12 07:19:45 davidg Exp $
*/
#include <stddef.h>
diff --git a/sys/i386/isa/elink.c b/sys/i386/isa/elink.c
index 07b2516b9328..712b7748e358 100644
--- a/sys/i386/isa/elink.c
+++ b/sys/i386/isa/elink.c
@@ -26,7 +26,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: elink.c,v 1.4 1995/02/26 05:14:46 bde Exp $
+ * $Id: elink.c,v 1.5 1995/05/30 08:01:36 rgrimes Exp $
*/
/*
diff --git a/sys/i386/isa/elink.h b/sys/i386/isa/elink.h
index 93a5dac6f5ce..aff636cf10ba 100644
--- a/sys/i386/isa/elink.h
+++ b/sys/i386/isa/elink.h
@@ -26,7 +26,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: elink.h,v 1.1 1994/05/25 20:06:43 ats Exp $
+ * $Id: elink.h,v 1.1 1994/08/24 22:32:42 ats Exp $
*/
#define ELINK_ID_PORT 0x100
diff --git a/sys/i386/isa/fd.c b/sys/i386/isa/fd.c
index 3c468238f2ac..5c8d81e19d07 100644
--- a/sys/i386/isa/fd.c
+++ b/sys/i386/isa/fd.c
@@ -43,7 +43,7 @@
* SUCH DAMAGE.
*
* from: @(#)fd.c 7.4 (Berkeley) 5/25/91
- * $Id: fd.c,v 1.61.2.1 1995/06/08 10:26:23 davidg Exp $
+ * $Id: fd.c,v 1.62 1995/06/11 19:31:19 rgrimes Exp $
*
*/
diff --git a/sys/i386/isa/fdc.h b/sys/i386/isa/fdc.h
index 0216b7aa2e2e..a907ae690e67 100644
--- a/sys/i386/isa/fdc.h
+++ b/sys/i386/isa/fdc.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: @(#)fd.c 7.4 (Berkeley) 5/25/91
- * $Id: fdc.h,v 1.4 1994/10/10 01:12:26 phk Exp $
+ * $Id: fdc.h,v 1.5 1995/01/06 15:19:41 joerg Exp $
*
*/
diff --git a/sys/i386/isa/fdreg.h b/sys/i386/isa/fdreg.h
index aef83574199a..133abf2cf681 100644
--- a/sys/i386/isa/fdreg.h
+++ b/sys/i386/isa/fdreg.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: @(#)fdreg.h 7.1 (Berkeley) 5/9/91
- * $Id: fdreg.h,v 1.7 1994/09/25 18:42:23 joerg Exp $
+ * $Id: fdreg.h,v 1.8 1994/09/25 23:37:38 phk Exp $
*/
/*
diff --git a/sys/i386/isa/ft.c b/sys/i386/isa/ft.c
index a56a84f432f7..4c49d2e5f983 100644
--- a/sys/i386/isa/ft.c
+++ b/sys/i386/isa/ft.c
@@ -17,7 +17,7 @@
* POSSIBILITY OF SUCH DAMAGE.
*
* ft.c - QIC-40/80 floppy tape driver
- * $Id: ft.c,v 1.21 1995/05/06 19:34:28 joerg Exp $
+ * $Id: ft.c,v 1.22 1995/05/30 08:01:41 rgrimes Exp $
*
* 01/19/95 ++sg
* Cleaned up recalibrate/seek code at attach time for FreeBSD 2.x.
diff --git a/sys/i386/isa/ic/cd1400.h b/sys/i386/isa/ic/cd1400.h
index 4ed6ea669d1c..071827118405 100644
--- a/sys/i386/isa/ic/cd1400.h
+++ b/sys/i386/isa/ic/cd1400.h
@@ -27,7 +27,7 @@
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: cd1400.h,v 1.2 1995/07/05 12:15:40 bde Exp $
+ * $Id: cd1400.h,v 1.1.4.1 1995/09/14 07:09:41 davidg Exp $
*/
/*
diff --git a/sys/i386/isa/ic/i8042.h b/sys/i386/isa/ic/i8042.h
index 84ee90f08e62..b69cd2846e9d 100644
--- a/sys/i386/isa/ic/i8042.h
+++ b/sys/i386/isa/ic/i8042.h
@@ -1,5 +1,5 @@
/*
- * $Id$
+ * $Id: i8042.h,v 1.2 1993/10/16 13:48:47 rgrimes Exp $
*/
#define KBSTATP 0x64 /* kbd controller status port (I) */
diff --git a/sys/i386/isa/ic/i8237.h b/sys/i386/isa/ic/i8237.h
index 5493ca8eb44e..e14959bce62e 100644
--- a/sys/i386/isa/ic/i8237.h
+++ b/sys/i386/isa/ic/i8237.h
@@ -1,7 +1,7 @@
/*
* Intel 8237 DMA Controller
*
- * $Id: i8237.h,v 1.3 1994/11/01 17:26:47 ache Exp $
+ * $Id: i8237.h,v 1.4 1995/05/30 08:03:34 rgrimes Exp $
*/
#define DMA37MD_SINGLE 0x40 /* single pass mode */
diff --git a/sys/i386/isa/ic/i82586.h b/sys/i386/isa/ic/i82586.h
index 577313d81e5a..eb98b255504c 100644
--- a/sys/i386/isa/ic/i82586.h
+++ b/sys/i386/isa/ic/i82586.h
@@ -31,7 +31,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: i82586.h,v 1.1 1993/10/12 06:53:10 rgrimes Exp $
*/
/*
diff --git a/sys/i386/isa/ic/lemac.h b/sys/i386/isa/ic/lemac.h
index 4eee86f6aa62..cb79b6244a01 100644
--- a/sys/i386/isa/ic/lemac.h
+++ b/sys/i386/isa/ic/lemac.h
@@ -21,7 +21,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: lemac.h,v 1.1 1994/08/12 06:51:12 davidg Exp $
+ * $Id: lemac.h,v 1.2 1995/05/30 08:03:36 rgrimes Exp $
*/
#ifndef _LEMAC_H_
#define _LEMAC_H_
diff --git a/sys/i386/isa/ic/nec765.h b/sys/i386/isa/ic/nec765.h
index 810e825bd66e..5cf1e73feeee 100644
--- a/sys/i386/isa/ic/nec765.h
+++ b/sys/i386/isa/ic/nec765.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: @(#)nec765.h 7.1 (Berkeley) 5/9/91
- * $Id: nec765.h,v 1.3 1994/09/17 16:56:10 davidg Exp $
+ * $Id: nec765.h,v 1.4 1995/01/06 15:20:00 joerg Exp $
*/
/*
diff --git a/sys/i386/isa/ic/ns16450.h b/sys/i386/isa/ic/ns16450.h
index aa6280df57d1..988bc31bb3d4 100644
--- a/sys/i386/isa/ic/ns16450.h
+++ b/sys/i386/isa/ic/ns16450.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: @(#)ns16450.h 7.1 (Berkeley) 5/9/91
- * $Id$
+ * $Id: ns16450.h,v 1.2 1993/10/16 13:48:51 rgrimes Exp $
*/
/*
diff --git a/sys/i386/isa/ic/ns16550.h b/sys/i386/isa/ic/ns16550.h
index ff59757a5f73..50e704482e78 100644
--- a/sys/i386/isa/ic/ns16550.h
+++ b/sys/i386/isa/ic/ns16550.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: @(#)ns16550.h 7.1 (Berkeley) 5/9/91
- * $Id$
+ * $Id: ns16550.h,v 1.2 1993/10/16 13:48:52 rgrimes Exp $
*/
/*
diff --git a/sys/i386/isa/icu.h b/sys/i386/isa/icu.h
index a68269b0801a..943f92ad249a 100644
--- a/sys/i386/isa/icu.h
+++ b/sys/i386/isa/icu.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)icu.h 5.6 (Berkeley) 5/9/91
- * $Id: icu.h,v 1.6 1994/09/18 23:18:32 bde Exp $
+ * $Id: icu.h,v 1.7 1994/10/01 02:56:11 davidg Exp $
*/
/*
diff --git a/sys/i386/isa/icu.s b/sys/i386/isa/icu.s
index 229cecbb447c..4a70c595dc63 100644
--- a/sys/i386/isa/icu.s
+++ b/sys/i386/isa/icu.s
@@ -36,7 +36,7 @@
*
* @(#)icu.s 7.2 (Berkeley) 5/21/91
*
- * $Id: icu.s,v 1.23 1995/07/05 14:35:34 bde Exp $
+ * $Id: icu.s,v 1.22.4.1 1995/09/15 08:41:12 davidg Exp $
*/
/*
diff --git a/sys/i386/isa/if_ed.c b/sys/i386/isa/if_ed.c
index fa10e60c51d4..0dc0c6ab2555 100644
--- a/sys/i386/isa/if_ed.c
+++ b/sys/i386/isa/if_ed.c
@@ -13,7 +13,7 @@
* the SMC Elite Ultra (8216), the 3Com 3c503, the NE1000 and NE2000,
* and a variety of similar clones.
*
- * $Id: if_ed.c,v 1.73.4.2 1995/09/12 06:12:23 davidg Exp $
+ * $Id: if_ed.c,v 1.73.4.3 1995/11/15 07:46:35 davidg Exp $
*/
#include "ed.h"
diff --git a/sys/i386/isa/if_edreg.h b/sys/i386/isa/if_edreg.h
index 430fa9393602..29edf2e71fc5 100644
--- a/sys/i386/isa/if_edreg.h
+++ b/sys/i386/isa/if_edreg.h
@@ -6,7 +6,7 @@
* of this software, nor does the author assume any responsibility
* for damages incurred with its use.
*
- * $Id: if_edreg.h,v 1.17 1995/01/23 19:06:08 davidg Exp $
+ * $Id: if_edreg.h,v 1.18 1995/05/30 08:02:00 rgrimes Exp $
*/
/*
* National Semiconductor DS8390 NIC register definitions
diff --git a/sys/i386/isa/if_eg.c b/sys/i386/isa/if_eg.c
index ec02037d1230..a88f03a9a2e6 100644
--- a/sys/i386/isa/if_eg.c
+++ b/sys/i386/isa/if_eg.c
@@ -27,7 +27,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: if_eg.c,v 1.3 1995/04/12 20:47:47 wollman Exp $
+ * $Id: if_eg.c,v 1.4 1995/05/30 08:02:02 rgrimes Exp $
*/
/* To do:
diff --git a/sys/i386/isa/if_egreg.h b/sys/i386/isa/if_egreg.h
index c4647a0bfcca..7bca983243d8 100644
--- a/sys/i386/isa/if_egreg.h
+++ b/sys/i386/isa/if_egreg.h
@@ -27,7 +27,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: if_egreg.h,v 1.1 1995/04/08 09:39:36 phk Exp $
+ * $Id: if_egreg.h,v 1.2 1995/05/30 08:02:03 rgrimes Exp $
*/
/*
diff --git a/sys/i386/isa/if_el.c b/sys/i386/isa/if_el.c
index 0571a8a62e2c..d08aefd4dfd9 100644
--- a/sys/i386/isa/if_el.c
+++ b/sys/i386/isa/if_el.c
@@ -6,7 +6,7 @@
*
* Questions, comments, bug reports and fixes to kimmel@cs.umass.edu.
*
- * $Id: if_el.c,v 1.13.2.1 1995/06/09 18:12:09 davidg Exp $
+ * $Id: if_el.c,v 1.14 1995/06/11 19:31:25 rgrimes Exp $
*/
/* Except of course for the portions of code lifted from other FreeBSD
* drivers (mainly elread, elget and el_ioctl)
diff --git a/sys/i386/isa/if_elreg.h b/sys/i386/isa/if_elreg.h
index 4d7859dd71c6..7529b967a591 100644
--- a/sys/i386/isa/if_elreg.h
+++ b/sys/i386/isa/if_elreg.h
@@ -4,7 +4,7 @@
* of the software, derivative works or modified versions, and any
* portions thereof.
*
- * $Id$
+ * $Id: if_elreg.h,v 1.2 1994/08/02 07:39:34 davidg Exp $
*/
/* 3COM Etherlink 3C501 Register Definitions */
diff --git a/sys/i386/isa/if_ep.c b/sys/i386/isa/if_ep.c
index b64a9211b9a5..3098367a078f 100644
--- a/sys/i386/isa/if_ep.c
+++ b/sys/i386/isa/if_ep.c
@@ -38,7 +38,7 @@
*/
/*
- * $Id: if_ep.c,v 1.28.4.1 1995/08/19 23:21:56 davidg Exp $
+ * $Id: if_ep.c,v 1.28.4.2 1995/09/08 13:58:31 davidg Exp $
*
* Promiscuous mode added and interrupt logic slightly changed
* to reduce the number of adapter failures. Transceiver select
diff --git a/sys/i386/isa/if_epreg.h b/sys/i386/isa/if_epreg.h
index e0b7d09834c6..1ab2140b727e 100644
--- a/sys/i386/isa/if_epreg.h
+++ b/sys/i386/isa/if_epreg.h
@@ -31,7 +31,7 @@
*/
/*
- * $Id: if_epreg.h,v 1.7 1995/04/10 21:25:06 jkh Exp $
+ * $Id: if_epreg.h,v 1.8 1995/05/30 08:02:09 rgrimes Exp $
*
* Promiscuous mode added and interrupt logic slightly changed
* to reduce the number of adapter failures. Transceiver select
diff --git a/sys/i386/isa/if_ie.c b/sys/i386/isa/if_ie.c
index 146c89b0dadd..5ee49426d04a 100644
--- a/sys/i386/isa/if_ie.c
+++ b/sys/i386/isa/if_ie.c
@@ -43,7 +43,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: if_ie.c,v 1.25 1995/08/16 16:12:32 bde Exp $
+ * $Id: if_ie.c,v 1.24.4.1 1995/09/12 06:17:26 davidg Exp $
*/
/*
diff --git a/sys/i386/isa/if_ie507.h b/sys/i386/isa/if_ie507.h
index 4bf87fcbb597..2a9eabf8d98e 100644
--- a/sys/i386/isa/if_ie507.h
+++ b/sys/i386/isa/if_ie507.h
@@ -1,5 +1,5 @@
/*
- * $Id: if_ie507.h,v 1.1 1994/05/25 20:06:49 ats Exp $
+ * $Id: if_ie507.h,v 1.1 1994/08/24 22:32:44 ats Exp $
* Definitions for 3C507
*/
diff --git a/sys/i386/isa/if_iereg.h b/sys/i386/isa/if_iereg.h
index 3588b8414058..e3e2bd2f33c2 100644
--- a/sys/i386/isa/if_iereg.h
+++ b/sys/i386/isa/if_iereg.h
@@ -1,5 +1,5 @@
/*
- * $Id$
+ * $Id: if_iereg.h,v 1.1 1993/10/12 06:52:34 rgrimes Exp $
* definitions for AT&T StarLAN 10 etc...
*/
diff --git a/sys/i386/isa/if_ix.c b/sys/i386/isa/if_ix.c
index cd7ca39c8460..ac69b1b40141 100644
--- a/sys/i386/isa/if_ix.c
+++ b/sys/i386/isa/if_ix.c
@@ -28,7 +28,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: if_ix.c,v 1.9 1995/10/05 03:01:13 davidg Exp $
+ * $Id: if_ix.c,v 1.7.4.1 1995/10/07 12:01:40 davidg Exp $
*/
#include "ix.h"
diff --git a/sys/i386/isa/if_ixreg.h b/sys/i386/isa/if_ixreg.h
index 3dd4903986c0..b2a7416526f9 100644
--- a/sys/i386/isa/if_ixreg.h
+++ b/sys/i386/isa/if_ixreg.h
@@ -28,7 +28,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: if_ixreg.h,v 1.5 1995/05/10 15:19:29 rgrimes Exp $
+ * $Id: if_ixreg.h,v 1.6 1995/05/30 08:02:17 rgrimes Exp $
*/
/*
diff --git a/sys/i386/isa/if_le.c b/sys/i386/isa/if_le.c
index 743923cba368..3efd719fda81 100644
--- a/sys/i386/isa/if_le.c
+++ b/sys/i386/isa/if_le.c
@@ -21,7 +21,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: if_le.c,v 1.17 1995/05/30 08:02:22 rgrimes Exp $
+ * $Id: if_le.c,v 1.17.4.1 1995/08/19 23:24:14 davidg Exp $
*/
/*
diff --git a/sys/i386/isa/if_ze.c b/sys/i386/isa/if_ze.c
index b1de9e69f5b3..ce5fd2df677d 100644
--- a/sys/i386/isa/if_ze.c
+++ b/sys/i386/isa/if_ze.c
@@ -47,7 +47,7 @@
*/
/*
- * $Id: if_ze.c,v 1.16 1995/05/24 20:33:42 davidg Exp $
+ * $Id: if_ze.c,v 1.17 1995/05/30 08:02:27 rgrimes Exp $
*/
#include "ze.h"
diff --git a/sys/i386/isa/if_zp.c b/sys/i386/isa/if_zp.c
index 87496fce7466..cd857162939e 100644
--- a/sys/i386/isa/if_zp.c
+++ b/sys/i386/isa/if_zp.c
@@ -34,7 +34,7 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* From: if_ep.c,v 1.9 1994/01/25 10:46:29 deraadt Exp $
- * $Id: if_zp.c,v 1.6 1995/05/30 08:02:31 rgrimes Exp $
+ * $Id: if_zp.c,v 1.6.4.1 1995/08/19 23:27:14 davidg Exp $
*/
/*-
* TODO:
diff --git a/sys/i386/isa/if_zpreg.h b/sys/i386/isa/if_zpreg.h
index a1eb1f54f4e6..6a0b66dbe84e 100644
--- a/sys/i386/isa/if_zpreg.h
+++ b/sys/i386/isa/if_zpreg.h
@@ -21,7 +21,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: if_zpreg.h,v 1.1 1995/02/17 02:22:53 phk Exp $
+ * $Id: if_zpreg.h,v 1.2 1995/05/30 08:02:33 rgrimes Exp $
*/
/**************************************************************************
* *
diff --git a/sys/i386/isa/isa.c b/sys/i386/isa/isa.c
index 1dd0fb99557a..4f13db36e5c1 100644
--- a/sys/i386/isa/isa.c
+++ b/sys/i386/isa/isa.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)isa.c 7.2 (Berkeley) 5/13/91
- * $Id: isa.c,v 1.49 1995/05/13 00:09:38 jkh Exp $
+ * $Id: isa.c,v 1.50 1995/05/30 08:02:35 rgrimes Exp $
*/
/*
diff --git a/sys/i386/isa/isa.h b/sys/i386/isa/isa.h
index 2f3b7cc77474..573c0de69f4d 100644
--- a/sys/i386/isa/isa.h
+++ b/sys/i386/isa/isa.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)isa.h 5.7 (Berkeley) 5/9/91
- * $Id: isa.h,v 1.16 1995/09/08 03:14:00 julian Exp $
+ * $Id: isa.h,v 1.14.4.1 1995/09/12 06:22:36 davidg Exp $
*/
#ifndef _I386_ISA_ISA_H_
diff --git a/sys/i386/isa/isa_device.h b/sys/i386/isa/isa_device.h
index 4e3c08c4a318..b3d6c43fea05 100644
--- a/sys/i386/isa/isa_device.h
+++ b/sys/i386/isa/isa_device.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: @(#)isa_device.h 7.1 (Berkeley) 5/9/91
- * $Id: isa_device.h,v 1.22 1995/05/11 02:15:55 jkh Exp $
+ * $Id: isa_device.h,v 1.23 1995/05/11 07:41:52 jkh Exp $
*/
#ifndef _I386_ISA_ISA_DEVICE_H_
diff --git a/sys/i386/isa/iso8859.font b/sys/i386/isa/iso8859.font
index 0553a6bc2104..1eb5bb89e47f 100644
--- a/sys/i386/isa/iso8859.font
+++ b/sys/i386/isa/iso8859.font
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id$
+ * $Id: iso8859.font,v 1.6 1994/09/29 08:29:19 sos Exp $
*/
char font_8x8[256*8] = {
diff --git a/sys/i386/isa/kbd.h b/sys/i386/isa/kbd.h
index d34b6340675e..5fc218d7e5ad 100644
--- a/sys/i386/isa/kbd.h
+++ b/sys/i386/isa/kbd.h
@@ -1,7 +1,7 @@
/*
* Keyboard definitions
* from: unknown origin, 386BSD 0.1
- * $Id: kbd.h,v 1.3 1993/11/07 17:44:33 wollman Exp $
+ * $Id: kbd.h,v 1.4 1995/05/30 08:02:38 rgrimes Exp $
*/
#ifndef _I386_ISA_KBD_H_
diff --git a/sys/i386/isa/kbdtables.h b/sys/i386/isa/kbdtables.h
index a76105381ae7..437e267cad92 100644
--- a/sys/i386/isa/kbdtables.h
+++ b/sys/i386/isa/kbdtables.h
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: kbdtables.h,v 1.28 1995/03/27 19:41:11 sos Exp $
+ * $Id: kbdtables.h,v 1.29 1995/03/28 21:30:13 sos Exp $
*/
#define SET8 0x80 /* set eight bit on */
diff --git a/sys/i386/isa/lpt.c b/sys/i386/isa/lpt.c
index 4a81ebbb8030..099d1d4d6b5e 100644
--- a/sys/i386/isa/lpt.c
+++ b/sys/i386/isa/lpt.c
@@ -46,7 +46,7 @@
* SUCH DAMAGE.
*
* from: unknown origin, 386BSD 0.1
- * $Id: lpt.c,v 1.30.4.2 1995/09/14 07:09:17 davidg Exp $
+ * $Id: lpt.c,v 1.30.4.3 1995/09/30 14:22:17 davidg Exp $
*/
/*
diff --git a/sys/i386/isa/lptreg.h b/sys/i386/isa/lptreg.h
index 9e10ba91a510..bc5566f35fef 100644
--- a/sys/i386/isa/lptreg.h
+++ b/sys/i386/isa/lptreg.h
@@ -6,7 +6,7 @@
* William Jolitz.
*
* form: @(#)lptreg.h 1.1 (Berkeley) 12/19/90
- * $Id$
+ * $Id: lptreg.h,v 1.2 1993/10/16 13:46:12 rgrimes Exp $
*/
/*
diff --git a/sys/i386/isa/mcd.c b/sys/i386/isa/mcd.c
index 04e5edb67595..c82eedc42bbf 100644
--- a/sys/i386/isa/mcd.c
+++ b/sys/i386/isa/mcd.c
@@ -40,7 +40,7 @@
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: mcd.c,v 1.46 1995/09/08 11:07:48 bde Exp $
+ * $Id: mcd.c,v 1.44.4.2 1995/09/14 07:09:19 davidg Exp $
*/
static char COPYRIGHT[] = "mcd-driver (C)1993 by H.Veit & B.Moore";
diff --git a/sys/i386/isa/mcdreg.h b/sys/i386/isa/mcdreg.h
index d5ece62169e7..a350b4c6c911 100644
--- a/sys/i386/isa/mcdreg.h
+++ b/sys/i386/isa/mcdreg.h
@@ -41,7 +41,7 @@
* the manufacturer or anyone else might provide better documentation,
* so this file (and the driver) will then have a better quality.
*
- * $Id: mcdreg.h,v 1.7 1995/01/30 06:44:40 ache Exp $
+ * $Id: mcdreg.h,v 1.8 1995/05/30 08:02:45 rgrimes Exp $
*/
#ifndef MCD_H
diff --git a/sys/i386/isa/mse.c b/sys/i386/isa/mse.c
index affda09cc13c..878a8ccca451 100644
--- a/sys/i386/isa/mse.c
+++ b/sys/i386/isa/mse.c
@@ -11,7 +11,7 @@
* this software for any purpose. It is provided "as is"
* without express or implied warranty.
*
- * $Id: mse.c,v 1.14 1995/09/08 11:07:50 bde Exp $
+ * $Id: mse.c,v 1.12.4.1 1995/09/14 07:09:20 davidg Exp $
*/
/*
* Driver for the Logitech and ATI Inport Bus mice for use with 386bsd and
diff --git a/sys/i386/isa/npx.c b/sys/i386/isa/npx.c
index 0a5327941724..1d8f5607e185 100644
--- a/sys/i386/isa/npx.c
+++ b/sys/i386/isa/npx.c
@@ -32,7 +32,7 @@
* SUCH DAMAGE.
*
* from: @(#)npx.c 7.2 (Berkeley) 5/12/91
- * $Id: npx.c,v 1.22 1995/04/12 20:48:01 wollman Exp $
+ * $Id: npx.c,v 1.23 1995/05/30 08:02:51 rgrimes Exp $
*/
#include "npx.h"
diff --git a/sys/i386/isa/pcaudio.c b/sys/i386/isa/pcaudio.c
index ae43936208e6..25af8e62b1f0 100644
--- a/sys/i386/isa/pcaudio.c
+++ b/sys/i386/isa/pcaudio.c
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: pcaudio.c,v 1.13 1995/05/30 08:02:55 rgrimes Exp $
+ * $Id: pcaudio.c,v 1.13.4.1 1995/09/14 07:09:21 davidg Exp $
*/
#include "pca.h"
diff --git a/sys/i386/isa/pcibus.c b/sys/i386/isa/pcibus.c
index da82b07a86f7..c0f7d233243f 100644
--- a/sys/i386/isa/pcibus.c
+++ b/sys/i386/isa/pcibus.c
@@ -1,6 +1,6 @@
/**************************************************************************
**
-** $Id: pcibus.c,v 1.8.4.4 1995/10/20 22:12:53 davidg Exp $
+** $Id: pcibus.c,v 1.8.4.5 1995/11/03 08:07:20 davidg Exp $
**
** pci bus subroutines for i386 architecture.
**
diff --git a/sys/i386/isa/readMBR.c b/sys/i386/isa/readMBR.c
index 751572346df4..ba82273119fb 100644
--- a/sys/i386/isa/readMBR.c
+++ b/sys/i386/isa/readMBR.c
@@ -15,7 +15,7 @@
* written by julian elischer (julian@tfs.com)
*
* @(#)readMBR.c 8.5 (tfs) 1/21/94
- * $Id: readMBR.c,v 1.4 1994/11/14 13:22:41 bde Exp $
+ * $Id: readMBR.c,v 1.5 1995/05/30 08:03:00 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/i386/isa/rtc.h b/sys/i386/isa/rtc.h
index f580ff367836..5e2a81aecb5a 100644
--- a/sys/i386/isa/rtc.h
+++ b/sys/i386/isa/rtc.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)rtc.h 7.1 (Berkeley) 5/12/91
- * $Id: rtc.h,v 1.6 1994/09/20 00:31:07 ache Exp $
+ * $Id: rtc.h,v 1.7 1994/12/04 20:22:20 joerg Exp $
*/
#ifndef _I386_ISA_RTC_H_
diff --git a/sys/i386/isa/scd.c b/sys/i386/isa/scd.c
index fee6a4be6a0d..a44b28bf9164 100644
--- a/sys/i386/isa/scd.c
+++ b/sys/i386/isa/scd.c
@@ -41,7 +41,7 @@
*/
-/* $Id: scd.c,v 1.6 1995/09/08 11:07:55 bde Exp $ */
+/* $Id: scd.c,v 1.5.4.1 1995/09/14 07:09:27 davidg Exp $ */
/* Please send any comments to micke@dynas.se */
diff --git a/sys/i386/isa/scdreg.h b/sys/i386/isa/scdreg.h
index 692999242916..ce70b0e42af2 100644
--- a/sys/i386/isa/scdreg.h
+++ b/sys/i386/isa/scdreg.h
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: scdreg.h,v 1.3 1995/02/06 22:35:07 jkh Exp $
+ * $Id: scdreg.h,v 1.1 1995/03/24 18:33:02 jkh Exp $
*
*/
diff --git a/sys/i386/isa/seagate.c b/sys/i386/isa/seagate.c
index d4988e57c54f..98bba527bc83 100644
--- a/sys/i386/isa/seagate.c
+++ b/sys/i386/isa/seagate.c
@@ -60,7 +60,7 @@
* that category, with the possible exception of scanners and
* some of the older MO drives.
*
- * $Id: seagate.c,v 1.8.4.1 1995/08/08 12:29:36 jkh Exp $
+ * $Id: seagate.c,v 1.8.4.2 1995/08/31 06:36:08 davidg Exp $
*/
/*
diff --git a/sys/i386/isa/si.c b/sys/i386/isa/si.c
index 17055e087a10..bd141b41d5c2 100644
--- a/sys/i386/isa/si.c
+++ b/sys/i386/isa/si.c
@@ -30,7 +30,7 @@
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
* NO EVENT SHALL THE AUTHORS BE LIABLE.
*
- * $Id: si.c,v 1.8 1995/09/22 18:28:21 peter Exp $
+ * $Id: si.c,v 1.9 1995/09/22 20:00:12 peter Exp $
*/
#ifndef lint
diff --git a/sys/i386/isa/si_code.c b/sys/i386/isa/si_code.c
index e1282eabf982..c598b366e536 100644
--- a/sys/i386/isa/si_code.c
+++ b/sys/i386/isa/si_code.c
@@ -30,7 +30,7 @@
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
* NO EVENT SHALL THE AUTHORS BE LIABLE.
*
- * $Id$
+ * $Id: si_code.c,v 1.1 1995/08/10 08:10:57 peter Exp $
*/
/*
diff --git a/sys/i386/isa/sio.c b/sys/i386/isa/sio.c
index 2a5e7d992e59..9c649775dbf1 100644
--- a/sys/i386/isa/sio.c
+++ b/sys/i386/isa/sio.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: @(#)com.c 7.5 (Berkeley) 5/16/91
- * $Id: sio.c,v 1.110 1995/08/13 07:49:35 bde Exp $
+ * $Id: sio.c,v 1.99.4.1 1995/09/14 07:09:28 davidg Exp $
*/
#include "sio.h"
diff --git a/sys/i386/isa/sioreg.h b/sys/i386/isa/sioreg.h
index d43bcdf02ee9..8648f12a6228 100644
--- a/sys/i386/isa/sioreg.h
+++ b/sys/i386/isa/sioreg.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: @(#)comreg.h 7.2 (Berkeley) 5/9/91
- * $Id: sioreg.h,v 1.2 1993/10/16 19:17:18 rgrimes Exp $
+ * $Id: sioreg.h,v 1.3 1995/01/20 07:34:18 wpaul Exp $
*/
diff --git a/sys/i386/isa/sireg.h b/sys/i386/isa/sireg.h
index 6a8dd4fc88f8..9628d01ef371 100644
--- a/sys/i386/isa/sireg.h
+++ b/sys/i386/isa/sireg.h
@@ -30,7 +30,7 @@
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
* NO EVENT SHALL THE AUTHORS BE LIABLE.
*
- * $Id$
+ * $Id: sireg.h,v 1.1 1995/08/09 13:13:47 peter Exp $
*/
/*
diff --git a/sys/i386/isa/sound/sound.doc b/sys/i386/isa/sound/sound.doc
index 24dc73203ebc..0aeeb782693c 100644
--- a/sys/i386/isa/sound/sound.doc
+++ b/sys/i386/isa/sound/sound.doc
@@ -1,4 +1,4 @@
-$Id: sound.doc,v 1.4 1995/09/01 19:09:10 jkh Exp $
+$Id: sound.doc,v 1.3.4.1 1995/09/14 23:37:16 jkh Exp $
Instructions on using audio on a FreeBSD 2.1 (or 2.0-current) system.
See also /sys/i386/conf/LINT.
diff --git a/sys/i386/isa/sound/soundcard.c b/sys/i386/isa/sound/soundcard.c
index 6cff1ed0e691..d23caee766f1 100644
--- a/sys/i386/isa/sound/soundcard.c
+++ b/sys/i386/isa/sound/soundcard.c
@@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: soundcard.c,v 1.29 1995/09/08 19:57:13 bde Exp $
+ * $Id: soundcard.c,v 1.26.4.1 1995/09/14 23:37:21 jkh Exp $
*/
#include "sound_config.h"
diff --git a/sys/i386/isa/spkr.c b/sys/i386/isa/spkr.c
index 1d85e7a4acc0..722b409e5ca4 100644
--- a/sys/i386/isa/spkr.c
+++ b/sys/i386/isa/spkr.c
@@ -4,7 +4,7 @@
* v1.4 by Eric S. Raymond (esr@snark.thyrsus.com) Aug 1993
* modified for FreeBSD by Andrew A. Chernov <ache@astral.msk.su>
*
- * $Id: spkr.c,v 1.14 1995/05/30 08:03:09 rgrimes Exp $
+ * $Id: spkr.c,v 1.14.4.1 1995/09/14 07:09:30 davidg Exp $
*/
#include "speaker.h"
diff --git a/sys/i386/isa/syscons.c b/sys/i386/isa/syscons.c
index 6de1771f260f..a38c6107eeb2 100644
--- a/sys/i386/isa/syscons.c
+++ b/sys/i386/isa/syscons.c
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: syscons.c,v 1.124 1995/08/16 22:36:43 nate Exp $
+ * $Id: syscons.c,v 1.117.4.5 1995/09/14 07:09:32 davidg Exp $
*/
#include "sc.h"
diff --git a/sys/i386/isa/syscons.h b/sys/i386/isa/syscons.h
index a255e759c1c1..0b394546794c 100644
--- a/sys/i386/isa/syscons.h
+++ b/sys/i386/isa/syscons.h
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: syscons.h,v 1.10 1995/07/11 18:34:30 bde Exp $
+ * $Id: syscons.h,v 1.9.4.1 1995/09/14 07:09:34 davidg Exp $
*/
#ifndef _I386_ISA_SYSCONS_H_
diff --git a/sys/i386/isa/timerreg.h b/sys/i386/isa/timerreg.h
index 5742f6601493..4609bb29ca0e 100644
--- a/sys/i386/isa/timerreg.h
+++ b/sys/i386/isa/timerreg.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: Header: timerreg.h,v 1.2 93/02/28 15:08:58 mccanne Exp
- * $Id$
+ * $Id: timerreg.h,v 1.2 1993/10/16 13:46:26 rgrimes Exp $
*/
/*
diff --git a/sys/i386/isa/ultra14f.c b/sys/i386/isa/ultra14f.c
index 49c1692336c8..6d2907894ce4 100644
--- a/sys/i386/isa/ultra14f.c
+++ b/sys/i386/isa/ultra14f.c
@@ -22,7 +22,7 @@
* today: Fri Jun 2 17:21:03 EST 1994
* added 24F support ++sg
*
- * $Id: ultra14f.c,v 1.36 1995/08/25 20:39:01 bde Exp $
+ * $Id: ultra14f.c,v 1.33.4.3 1995/09/14 07:09:37 davidg Exp $
*/
#include <sys/types.h>
diff --git a/sys/i386/isa/vector.s b/sys/i386/isa/vector.s
index bbed601c550d..50752660f03c 100644
--- a/sys/i386/isa/vector.s
+++ b/sys/i386/isa/vector.s
@@ -1,6 +1,6 @@
/*
* from: vector.s, 386BSD 0.1 unknown origin
- * $Id: vector.s,v 1.11 1994/12/03 10:03:19 bde Exp $
+ * $Id: vector.s,v 1.12 1995/04/15 21:32:18 bde Exp $
*/
#include <i386/isa/icu.h>
diff --git a/sys/i386/isa/wd.c b/sys/i386/isa/wd.c
index b0ef45b11848..c5e2a61267ef 100644
--- a/sys/i386/isa/wd.c
+++ b/sys/i386/isa/wd.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)wd.c 7.2 (Berkeley) 5/9/91
- * $Id: wd.c,v 1.81.4.1 1995/10/02 08:14:31 davidg Exp $
+ * $Id: wd.c,v 1.81.4.2 1995/10/22 23:14:38 davidg Exp $
*/
/* TODO:
diff --git a/sys/i386/isa/wdreg.h b/sys/i386/isa/wdreg.h
index 1674923447c9..18c21bc1b4cc 100644
--- a/sys/i386/isa/wdreg.h
+++ b/sys/i386/isa/wdreg.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)wdreg.h 7.1 (Berkeley) 5/9/91
- * $Id: wdreg.h,v 1.7 1995/02/26 01:15:29 bde Exp $
+ * $Id: wdreg.h,v 1.8 1995/03/22 05:23:01 davidg Exp $
*/
/*
diff --git a/sys/i386/isa/wt.c b/sys/i386/isa/wt.c
index cdb863c828f9..0653a6dc4d23 100644
--- a/sys/i386/isa/wt.c
+++ b/sys/i386/isa/wt.c
@@ -19,7 +19,7 @@
* the original CMU copyright notice.
*
* Version 1.3, Thu Nov 11 12:09:13 MSK 1993
- * $Id: wt.c,v 1.19 1995/09/08 11:08:03 bde Exp $
+ * $Id: wt.c,v 1.17.4.1 1995/09/14 07:09:39 davidg Exp $
*
*/
diff --git a/sys/i386/isa/wtreg.h b/sys/i386/isa/wtreg.h
index cbc19ca6a69b..712d9d09e6b7 100644
--- a/sys/i386/isa/wtreg.h
+++ b/sys/i386/isa/wtreg.h
@@ -19,7 +19,7 @@
* the original CMU copyright notice.
*
* Version 1.3, Thu Nov 11 12:09:13 MSK 1993
- * $Id: wtreg.h,v 1.4 1993/12/13 18:38:44 alm Exp $
+ * $Id: wtreg.h,v 1.5 1995/05/30 08:03:24 rgrimes Exp $
*
*/
diff --git a/sys/i386/linux/imgact_linux.c b/sys/i386/linux/imgact_linux.c
index 276e8ce8788e..91c076104008 100644
--- a/sys/i386/linux/imgact_linux.c
+++ b/sys/i386/linux/imgact_linux.c
@@ -28,7 +28,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: imgact_linux.c,v 1.1 1995/06/25 17:32:32 sos Exp $
+ * $Id: imgact_linux.c,v 1.1.4.1 1995/08/31 10:00:29 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/i386/linux/linux.h b/sys/i386/linux/linux.h
index 9d13bd156057..5c3059fa05ef 100644
--- a/sys/i386/linux/linux.h
+++ b/sys/i386/linux/linux.h
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: linux.h,v 1.3 1995/06/08 13:50:52 sos Exp $
+ * $Id: linux.h,v 1.1 1995/06/25 17:32:32 sos Exp $
*/
#ifndef LINUX_H
diff --git a/sys/i386/linux/linux_dummy.c b/sys/i386/linux/linux_dummy.c
index 13288acf297c..a75648e66aca 100644
--- a/sys/i386/linux/linux_dummy.c
+++ b/sys/i386/linux/linux_dummy.c
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: linux_dummy.c,v 1.3 1995/06/08 13:50:52 sos Exp $
+ * $Id: linux_dummy.c,v 1.1 1995/06/25 17:32:33 sos Exp $
*/
#include <sys/param.h>
diff --git a/sys/i386/linux/linux_file.c b/sys/i386/linux/linux_file.c
index 646101db8113..0184ae1fe595 100644
--- a/sys/i386/linux/linux_file.c
+++ b/sys/i386/linux/linux_file.c
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: linux_file.c,v 1.2 1995/08/28 00:50:08 swallace Exp $
+ * $Id: linux_file.c,v 1.1.4.1 1995/10/07 12:23:53 davidg Exp $
*/
#include <i386/linux/linux.h>
diff --git a/sys/i386/linux/linux_generic.c b/sys/i386/linux/linux_generic.c
index 48df332aeb98..ba2e9945832d 100644
--- a/sys/i386/linux/linux_generic.c
+++ b/sys/i386/linux/linux_generic.c
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: linux_generic.c,v 1.3 1995/06/25 17:30:46 sos Exp $
+ * $Id: linux_generic.c,v 1.1 1995/06/25 17:32:34 sos Exp $
*/
#include <i386/linux/linux.h>
diff --git a/sys/i386/linux/linux_ioctl.c b/sys/i386/linux/linux_ioctl.c
index 12adff4a18a8..ab8e099bb6d9 100644
--- a/sys/i386/linux/linux_ioctl.c
+++ b/sys/i386/linux/linux_ioctl.c
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: linux_ioctl.c,v 1.2 1995/06/07 21:27:57 sos Exp $
+ * $Id: linux_ioctl.c,v 1.1 1995/06/25 17:32:35 sos Exp $
*/
#include <i386/linux/linux.h>
diff --git a/sys/i386/linux/linux_ipc.c b/sys/i386/linux/linux_ipc.c
index b38b229c691f..e014a3c8b809 100644
--- a/sys/i386/linux/linux_ipc.c
+++ b/sys/i386/linux/linux_ipc.c
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: linux_ipc.c,v 1.2 1995/06/07 21:27:57 sos Exp $
+ * $Id: linux_ipc.c,v 1.1 1995/06/25 17:32:36 sos Exp $
*/
#include <i386/linux/linux.h>
diff --git a/sys/i386/linux/linux_misc.c b/sys/i386/linux/linux_misc.c
index 5af00b996f4b..84101fea8231 100644
--- a/sys/i386/linux/linux_misc.c
+++ b/sys/i386/linux/linux_misc.c
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: linux_misc.c,v 1.2 1995/10/04 07:08:04 julian Exp $
+ * $Id: linux_misc.c,v 1.1.4.1 1995/10/07 12:31:18 davidg Exp $
*/
#include <i386/linux/linux.h>
diff --git a/sys/i386/linux/linux_signal.c b/sys/i386/linux/linux_signal.c
index 528bb62d2aa3..2d04e0c8f3b5 100644
--- a/sys/i386/linux/linux_signal.c
+++ b/sys/i386/linux/linux_signal.c
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: linux_signal.c,v 1.2 1995/06/07 21:27:57 sos Exp $
+ * $Id: linux_signal.c,v 1.1 1995/06/25 17:32:40 sos Exp $
*/
#include <sys/param.h>
diff --git a/sys/i386/linux/linux_socket.c b/sys/i386/linux/linux_socket.c
index 9267063a7f7e..b0297c52fdab 100644
--- a/sys/i386/linux/linux_socket.c
+++ b/sys/i386/linux/linux_socket.c
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: linux_socket.c,v 1.2 1995/06/07 21:27:57 sos Exp $
+ * $Id: linux_socket.c,v 1.1 1995/06/25 17:32:41 sos Exp $
*/
#include <i386/linux/linux.h>
diff --git a/sys/i386/linux/linux_stats.c b/sys/i386/linux/linux_stats.c
index 1dbfcf11e64b..97fe9c62c3a9 100644
--- a/sys/i386/linux/linux_stats.c
+++ b/sys/i386/linux/linux_stats.c
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: linux_stats.c,v 1.3 1995/06/08 13:50:52 sos Exp $
+ * $Id: linux_stats.c,v 1.1 1995/06/25 17:32:42 sos Exp $
*/
#include <sys/param.h>
diff --git a/sys/i386/linux/linux_sysent.c b/sys/i386/linux/linux_sysent.c
index 015d49a6d949..8936c15cebd2 100644
--- a/sys/i386/linux/linux_sysent.c
+++ b/sys/i386/linux/linux_sysent.c
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: linux_sysent.c,v 1.3 1995/06/08 13:50:52 sos Exp $
+ * $Id: linux_sysent.c,v 1.1 1995/06/25 17:32:43 sos Exp $
*/
#include <i386/linux/linux.h>
diff --git a/sys/i386/scsi/93cx6.c b/sys/i386/scsi/93cx6.c
index b82c9ba19997..57a44fa92644 100644
--- a/sys/i386/scsi/93cx6.c
+++ b/sys/i386/scsi/93cx6.c
@@ -18,7 +18,7 @@
* 4. Modifications may be freely made to this file if the above conditions
* are met.
*
- * $Id: 93cx6.c,v 1.2 1995/09/05 23:51:58 gibbs Exp $
+ * $Id: 93cx6.c,v 1.1.2.1 1995/09/21 02:11:07 davidg Exp $
*/
/*
diff --git a/sys/i386/scsi/93cx6.h b/sys/i386/scsi/93cx6.h
index 4084125efd01..69bd7d816b9b 100644
--- a/sys/i386/scsi/93cx6.h
+++ b/sys/i386/scsi/93cx6.h
@@ -20,7 +20,7 @@
* 4. Modifications may be freely made to this file if the above conditions
* are met.
*
- * $Id: 93cx6.h,v 1.2 1995/09/05 23:52:00 gibbs Exp $
+ * $Id: 93cx6.h,v 1.1.2.1 1995/09/21 02:11:10 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/i386/scsi/aic7xxx.c b/sys/i386/scsi/aic7xxx.c
index 413a0e5bb80a..10487b7dd6c9 100644
--- a/sys/i386/scsi/aic7xxx.c
+++ b/sys/i386/scsi/aic7xxx.c
@@ -24,7 +24,7 @@
*
* commenced: Sun Sep 27 18:14:01 PDT 1992
*
- * $Id: aic7xxx.c,v 1.29.2.5 1995/09/21 02:11:16 davidg Exp $
+ * $Id: aic7xxx.c,v 1.29.2.6 1995/10/29 09:45:51 davidg Exp $
*/
/*
* TODO:
diff --git a/sys/i386/scsi/aic7xxx.h b/sys/i386/scsi/aic7xxx.h
index 708ee8ae56b4..62947fda109f 100644
--- a/sys/i386/scsi/aic7xxx.h
+++ b/sys/i386/scsi/aic7xxx.h
@@ -20,7 +20,7 @@
* 4. Modifications may be freely made to this file if the above conditions
* are met.
*
- * $Id: aic7xxx.h,v 1.10.2.3 1995/09/21 02:11:20 davidg Exp $
+ * $Id: aic7xxx.h,v 1.10.2.4 1995/10/29 09:45:56 davidg Exp $
*/
#ifndef _AIC7XXX_H_
diff --git a/sys/isofs/cd9660/TODO b/sys/isofs/cd9660/TODO
index de414974103b..353600b9d4e2 100644
--- a/sys/isofs/cd9660/TODO
+++ b/sys/isofs/cd9660/TODO
@@ -1,4 +1,4 @@
-# $Id: TODO,v 1.1.1.1 1994/05/24 10:04:12 rgrimes Exp $
+# $Id: TODO,v 1.2 1995/01/16 17:03:23 joerg Exp $
1) should understand "older", original High Sierra ("CDROM001") type
diff --git a/sys/isofs/cd9660/cd9660_bmap.c b/sys/isofs/cd9660/cd9660_bmap.c
index 32439ce96abf..bccaa6e8afd4 100644
--- a/sys/isofs/cd9660/cd9660_bmap.c
+++ b/sys/isofs/cd9660/cd9660_bmap.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)cd9660_bmap.c 8.3 (Berkeley) 1/23/94
- * $Id$
+ * $Id: cd9660_bmap.c,v 1.2 1994/08/02 07:41:15 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/isofs/cd9660/cd9660_lookup.c b/sys/isofs/cd9660/cd9660_lookup.c
index 22fd911af37a..6de968d6874d 100644
--- a/sys/isofs/cd9660/cd9660_lookup.c
+++ b/sys/isofs/cd9660/cd9660_lookup.c
@@ -38,7 +38,7 @@
* from: @(#)ufs_lookup.c 7.33 (Berkeley) 5/19/91
*
* @(#)cd9660_lookup.c 8.2 (Berkeley) 1/23/94
- * $Id: cd9660_lookup.c,v 1.7.4.1 1995/10/26 09:16:53 davidg Exp $
+ * $Id: cd9660_lookup.c,v 1.7.4.2 1995/11/12 10:40:34 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/isofs/cd9660/cd9660_node.c b/sys/isofs/cd9660/cd9660_node.c
index 7b321a788274..748fd9f4adfc 100644
--- a/sys/isofs/cd9660/cd9660_node.c
+++ b/sys/isofs/cd9660/cd9660_node.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)cd9660_node.c 8.2 (Berkeley) 1/23/94
- * $Id: cd9660_node.c,v 1.10 1995/03/16 18:12:15 bde Exp $
+ * $Id: cd9660_node.c,v 1.11 1995/05/30 08:04:59 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/isofs/cd9660/cd9660_node.h b/sys/isofs/cd9660/cd9660_node.h
index 1e593a28c20b..4b625e888d0c 100644
--- a/sys/isofs/cd9660/cd9660_node.h
+++ b/sys/isofs/cd9660/cd9660_node.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)cd9660_node.h 8.2 (Berkeley) 1/23/94
- * $Id: cd9660_node.h,v 1.4 1995/01/16 17:03:25 joerg Exp $
+ * $Id: cd9660_node.h,v 1.5 1995/03/16 18:12:16 bde Exp $
*/
/*
diff --git a/sys/isofs/cd9660/cd9660_rrip.c b/sys/isofs/cd9660/cd9660_rrip.c
index dca898301697..de78072b906d 100644
--- a/sys/isofs/cd9660/cd9660_rrip.c
+++ b/sys/isofs/cd9660/cd9660_rrip.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)cd9660_rrip.c 8.2 (Berkeley) 1/23/94
- * $Id: cd9660_rrip.c,v 1.6 1995/01/16 17:03:26 joerg Exp $
+ * $Id: cd9660_rrip.c,v 1.7 1995/05/30 08:05:00 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/isofs/cd9660/cd9660_rrip.h b/sys/isofs/cd9660/cd9660_rrip.h
index bc9429cbc5ee..48b12badc402 100644
--- a/sys/isofs/cd9660/cd9660_rrip.h
+++ b/sys/isofs/cd9660/cd9660_rrip.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)cd9660_rrip.h 8.1 (Berkeley) 1/21/94
- * $Id: cd9660_rrip.h,v 1.2 1994/08/02 07:41:30 davidg Exp $
+ * $Id: cd9660_rrip.h,v 1.3 1995/01/16 17:03:26 joerg Exp $
*/
typedef struct {
diff --git a/sys/isofs/cd9660/cd9660_util.c b/sys/isofs/cd9660/cd9660_util.c
index ed832098cebc..b9cbb9d4eb27 100644
--- a/sys/isofs/cd9660/cd9660_util.c
+++ b/sys/isofs/cd9660/cd9660_util.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)cd9660_util.c 8.1 (Berkeley) 1/21/94
- * $Id: cd9660_util.c,v 1.4 1995/05/30 08:05:02 rgrimes Exp $
+ * $Id: cd9660_util.c,v 1.4.4.1 1995/08/20 02:26:03 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/isofs/cd9660/cd9660_vfsops.c b/sys/isofs/cd9660/cd9660_vfsops.c
index afa08f473811..692cc039fc74 100644
--- a/sys/isofs/cd9660/cd9660_vfsops.c
+++ b/sys/isofs/cd9660/cd9660_vfsops.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)cd9660_vfsops.c 8.3 (Berkeley) 1/31/94
- * $Id: cd9660_vfsops.c,v 1.12 1995/05/19 03:25:35 davidg Exp $
+ * $Id: cd9660_vfsops.c,v 1.13 1995/05/30 08:05:03 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/isofs/cd9660/cd9660_vnops.c b/sys/isofs/cd9660/cd9660_vnops.c
index e4b9b4434013..46483bff0dbe 100644
--- a/sys/isofs/cd9660/cd9660_vnops.c
+++ b/sys/isofs/cd9660/cd9660_vnops.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)cd9660_vnops.c 8.3 (Berkeley) 1/23/94
- * $Id: cd9660_vnops.c,v 1.14 1995/05/30 08:05:05 rgrimes Exp $
+ * $Id: cd9660_vnops.c,v 1.14.4.1 1995/11/12 10:40:36 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/isofs/cd9660/iso.h b/sys/isofs/cd9660/iso.h
index 406572e42e0c..12c0f1fbfb82 100644
--- a/sys/isofs/cd9660/iso.h
+++ b/sys/isofs/cd9660/iso.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)iso.h 8.2 (Berkeley) 1/23/94
- * $Id: iso.h,v 1.4 1995/01/16 17:03:29 joerg Exp $
+ * $Id: iso.h,v 1.5 1995/05/30 08:05:06 rgrimes Exp $
*/
#define ISODCL(from, to) (to - from + 1)
diff --git a/sys/isofs/cd9660/iso_rrip.h b/sys/isofs/cd9660/iso_rrip.h
index 031aaa37358b..610c84cb2e4f 100644
--- a/sys/isofs/cd9660/iso_rrip.h
+++ b/sys/isofs/cd9660/iso_rrip.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)iso_rrip.h 8.2 (Berkeley) 1/23/94
- * $Id$
+ * $Id: iso_rrip.h,v 1.2 1994/08/02 07:41:40 davidg Exp $
*/
diff --git a/sys/kern/Make.tags.inc b/sys/kern/Make.tags.inc
index a09e4848a08d..4f223d3c824b 100644
--- a/sys/kern/Make.tags.inc
+++ b/sys/kern/Make.tags.inc
@@ -1,5 +1,5 @@
# @(#)Make.tags.inc 8.1 (Berkeley) 6/11/93
-# $Id$
+# $Id: Make.tags.inc,v 1.2 1994/08/02 07:41:47 davidg Exp $
# Common files for "make tags".
# Included by the Makefile for each architecture.
diff --git a/sys/kern/imgact_aout.c b/sys/kern/imgact_aout.c
index 2736ab3dbab2..5ccaffec84cc 100644
--- a/sys/kern/imgact_aout.c
+++ b/sys/kern/imgact_aout.c
@@ -28,7 +28,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: imgact_aout.c,v 1.14.2.1 1995/08/31 10:00:39 davidg Exp $
+ * $Id: imgact_aout.c,v 1.14.2.2 1995/09/08 13:25:45 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/imgact_gzip.c b/sys/kern/imgact_gzip.c
index 1fb4c9213b04..2040d856913b 100644
--- a/sys/kern/imgact_gzip.c
+++ b/sys/kern/imgact_gzip.c
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id: imgact_gzip.c,v 1.13 1995/03/16 18:12:27 bde Exp $
+ * $Id: imgact_gzip.c,v 1.14 1995/05/30 08:05:18 rgrimes Exp $
*
* This module handles execution of a.out files which have been run through
* "gzip". This saves diskspace, but wastes cpu-cycles and VM.
diff --git a/sys/kern/imgact_shell.c b/sys/kern/imgact_shell.c
index 988cc3bbdaf4..92541c59add3 100644
--- a/sys/kern/imgact_shell.c
+++ b/sys/kern/imgact_shell.c
@@ -28,7 +28,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: imgact_shell.c,v 1.6 1994/09/25 19:33:32 phk Exp $
+ * $Id: imgact_shell.c,v 1.6.8.1 1995/09/08 13:25:46 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/inflate.c b/sys/kern/inflate.c
index 862418bbcd5d..6f7e1e39e96f 100644
--- a/sys/kern/inflate.c
+++ b/sys/kern/inflate.c
@@ -7,7 +7,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id: inflate.c,v 1.4 1994/10/22 11:40:28 phk Exp $
+ * $Id: inflate.c,v 1.5 1995/04/15 06:54:13 phk Exp $
*
*
*/
diff --git a/sys/kern/init_main.c b/sys/kern/init_main.c
index 89874b23d0ec..ee03c59b34af 100644
--- a/sys/kern/init_main.c
+++ b/sys/kern/init_main.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)init_main.c 8.9 (Berkeley) 1/21/94
- * $Id: init_main.c,v 1.24 1995/05/14 02:59:55 davidg Exp $
+ * $Id: init_main.c,v 1.25 1995/05/19 03:26:43 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/init_sysent.c b/sys/kern/init_sysent.c
index 8f34c0d9d709..e0ad737deadc 100644
--- a/sys/kern/init_sysent.c
+++ b/sys/kern/init_sysent.c
@@ -2,7 +2,7 @@
* System call switch table.
*
* DO NOT EDIT-- this file is automatically generated.
- * created from $Id: syscalls.master,v 1.14 1995/03/25 16:52:11 davidg Exp $
+ * created from $Id: init_sysent.c,v 1.22 1995/04/23 12:20:46 ache Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/kern_acct.c b/sys/kern/kern_acct.c
index c6c2b4247211..b3afd4a1ed85 100644
--- a/sys/kern/kern_acct.c
+++ b/sys/kern/kern_acct.c
@@ -37,7 +37,7 @@
* SUCH DAMAGE.
*
* @(#)kern_acct.c 8.1 (Berkeley) 6/14/93
- * $Id: kern_acct.c,v 1.6 1994/10/02 17:35:09 phk Exp $
+ * $Id: kern_acct.c,v 1.6.8.1 1995/08/20 02:51:59 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/kern_clock.c b/sys/kern/kern_clock.c
index 7a6d79b5fc05..a84e9a5a0ed5 100644
--- a/sys/kern/kern_clock.c
+++ b/sys/kern/kern_clock.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)kern_clock.c 8.5 (Berkeley) 1/21/94
- * $Id: kern_clock.c,v 1.12 1995/03/16 18:12:29 bde Exp $
+ * $Id: kern_clock.c,v 1.13 1995/05/30 08:05:20 rgrimes Exp $
*/
/* Portions of this software are covered by the following: */
diff --git a/sys/kern/kern_descrip.c b/sys/kern/kern_descrip.c
index 07cec1b7d13c..f3d230d51e3a 100644
--- a/sys/kern/kern_descrip.c
+++ b/sys/kern/kern_descrip.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)kern_descrip.c 8.6 (Berkeley) 4/19/94
- * $Id: kern_descrip.c,v 1.9 1995/03/28 07:56:26 bde Exp $
+ * $Id: kern_descrip.c,v 1.10 1995/05/30 08:05:21 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/kern_devconf.c b/sys/kern/kern_devconf.c
index bcdf87e23ad4..5d4fc47b7682 100644
--- a/sys/kern/kern_devconf.c
+++ b/sys/kern/kern_devconf.c
@@ -22,7 +22,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: kern_devconf.c,v 1.9 1995/04/13 15:33:14 wollman Exp $
+ * $Id: kern_devconf.c,v 1.10 1995/05/30 08:05:23 rgrimes Exp $
*/
/*
diff --git a/sys/kern/kern_exec.c b/sys/kern/kern_exec.c
index ea2b811457fd..b795f5e913a7 100644
--- a/sys/kern/kern_exec.c
+++ b/sys/kern/kern_exec.c
@@ -28,7 +28,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: kern_exec.c,v 1.21 1995/05/30 08:05:24 rgrimes Exp $
+ * $Id: kern_exec.c,v 1.21.4.1 1995/08/31 10:00:43 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/kern_exit.c b/sys/kern/kern_exit.c
index 156dc47cf792..c7696e79cb9a 100644
--- a/sys/kern/kern_exit.c
+++ b/sys/kern/kern_exit.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)kern_exit.c 8.7 (Berkeley) 2/12/94
- * $Id: kern_exit.c,v 1.14 1995/03/16 18:12:31 bde Exp $
+ * $Id: kern_exit.c,v 1.15 1995/05/30 08:05:25 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/kern_fork.c b/sys/kern/kern_fork.c
index d1f671a2a9cc..ed35ae37340b 100644
--- a/sys/kern/kern_fork.c
+++ b/sys/kern/kern_fork.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)kern_fork.c 8.6 (Berkeley) 4/8/94
- * $Id: kern_fork.c,v 1.11 1995/03/16 18:12:32 bde Exp $
+ * $Id: kern_fork.c,v 1.12 1995/05/30 08:05:27 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/kern_ktrace.c b/sys/kern/kern_ktrace.c
index d89e2ca45052..c3d96cc5ed4e 100644
--- a/sys/kern/kern_ktrace.c
+++ b/sys/kern/kern_ktrace.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)kern_ktrace.c 8.2 (Berkeley) 9/23/93
- * $Id: kern_ktrace.c,v 1.5 1994/10/02 17:35:15 phk Exp $
+ * $Id: kern_ktrace.c,v 1.6 1995/05/30 08:05:28 rgrimes Exp $
*/
#ifdef KTRACE
diff --git a/sys/kern/kern_lkm.c b/sys/kern/kern_lkm.c
index 4d8760e856af..379585084a8f 100644
--- a/sys/kern/kern_lkm.c
+++ b/sys/kern/kern_lkm.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: kern_lkm.c,v 1.15 1995/09/08 11:08:34 bde Exp $
+ * $Id: kern_lkm.c,v 1.13.4.1 1995/09/14 07:09:57 davidg Exp $
*/
/*
diff --git a/sys/kern/kern_lockf.c b/sys/kern/kern_lockf.c
index 261c47f9efea..026434d424d1 100644
--- a/sys/kern/kern_lockf.c
+++ b/sys/kern/kern_lockf.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)ufs_lockf.c 8.3 (Berkeley) 1/6/94
- * $Id: kern_lockf.c,v 1.3 1994/10/25 11:27:51 davidg Exp $
+ * $Id: kern_lockf.c,v 1.4 1995/05/30 08:05:31 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/kern_malloc.c b/sys/kern/kern_malloc.c
index 600e54f6b1ce..ce376fc472c2 100644
--- a/sys/kern/kern_malloc.c
+++ b/sys/kern/kern_malloc.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)kern_malloc.c 8.3 (Berkeley) 1/4/94
- * $Id: kern_malloc.c,v 1.11 1995/04/16 11:25:15 davidg Exp $
+ * $Id: kern_malloc.c,v 1.12 1995/05/30 08:05:33 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/kern_physio.c b/sys/kern/kern_physio.c
index a1417acb23b7..47926e0febed 100644
--- a/sys/kern/kern_physio.c
+++ b/sys/kern/kern_physio.c
@@ -16,7 +16,7 @@
* 4. Modifications may be freely made to this file if the above conditions
* are met.
*
- * $Id: kern_physio.c,v 1.12 1995/09/08 11:08:36 bde Exp $
+ * $Id: kern_physio.c,v 1.11.4.1 1995/09/14 07:09:58 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/kern_proc.c b/sys/kern/kern_proc.c
index 3fa8cf2da8d2..7f39e81f1c68 100644
--- a/sys/kern/kern_proc.c
+++ b/sys/kern/kern_proc.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)kern_proc.c 8.4 (Berkeley) 1/4/94
- * $Id: kern_proc.c,v 1.9 1994/10/10 01:00:45 phk Exp $
+ * $Id: kern_proc.c,v 1.10 1995/05/30 08:05:37 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/kern_prot.c b/sys/kern/kern_prot.c
index 8538ebc6af83..3b11cd67d6a9 100644
--- a/sys/kern/kern_prot.c
+++ b/sys/kern/kern_prot.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)kern_prot.c 8.6 (Berkeley) 1/21/94
- * $Id: kern_prot.c,v 1.12 1995/06/15 22:32:03 ache Exp $
+ * $Id: kern_prot.c,v 1.11.4.1 1995/08/08 04:07:22 ache Exp $
*/
/*
diff --git a/sys/kern/kern_resource.c b/sys/kern/kern_resource.c
index 732888d78769..d89ba5cf17b1 100644
--- a/sys/kern/kern_resource.c
+++ b/sys/kern/kern_resource.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)kern_resource.c 8.5 (Berkeley) 1/21/94
- * $Id: kern_resource.c,v 1.11 1995/02/20 19:42:33 guido Exp $
+ * $Id: kern_resource.c,v 1.12 1995/05/30 08:05:39 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c
index 28089127b82e..6f184df1a22c 100644
--- a/sys/kern/kern_sig.c
+++ b/sys/kern/kern_sig.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)kern_sig.c 8.7 (Berkeley) 4/18/94
- * $Id: kern_sig.c,v 1.10 1995/03/16 18:12:35 bde Exp $
+ * $Id: kern_sig.c,v 1.11 1995/05/30 08:05:40 rgrimes Exp $
*/
#define SIGPROP /* include signal properties table */
diff --git a/sys/kern/kern_subr.c b/sys/kern/kern_subr.c
index a89ad533fc59..ae7e6492fb27 100644
--- a/sys/kern/kern_subr.c
+++ b/sys/kern/kern_subr.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)kern_subr.c 8.3 (Berkeley) 1/21/94
- * $Id: kern_subr.c,v 1.7 1995/04/30 05:11:46 davidg Exp $
+ * $Id: kern_subr.c,v 1.8 1995/05/08 23:11:12 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/kern_synch.c b/sys/kern/kern_synch.c
index 534e477d303f..4185a47ba25f 100644
--- a/sys/kern/kern_synch.c
+++ b/sys/kern/kern_synch.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)kern_synch.c 8.6 (Berkeley) 1/21/94
- * $Id: kern_synch.c,v 1.10 1995/03/16 18:12:36 bde Exp $
+ * $Id: kern_synch.c,v 1.11 1995/05/30 08:05:44 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/kern_sysctl.c b/sys/kern/kern_sysctl.c
index ad4f6cb6452e..2731113e433c 100644
--- a/sys/kern/kern_sysctl.c
+++ b/sys/kern/kern_sysctl.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)kern_sysctl.c 8.4 (Berkeley) 4/14/94
- * $Id: kern_sysctl.c,v 1.25.4.1 1995/07/29 05:14:28 davidg Exp $
+ * $Id: kern_sysctl.c,v 1.25.4.2 1995/08/20 03:12:38 davidg Exp $
*/
/*
diff --git a/sys/kern/kern_time.c b/sys/kern/kern_time.c
index 7828751e67dc..ef7a575b676a 100644
--- a/sys/kern/kern_time.c
+++ b/sys/kern/kern_time.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)kern_time.c 8.1 (Berkeley) 6/10/93
- * $Id: kern_time.c,v 1.8 1995/05/30 08:05:47 rgrimes Exp $
+ * $Id: kern_time.c,v 1.8.4.1 1995/08/24 03:46:26 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/kern_xxx.c b/sys/kern/kern_xxx.c
index 02c1b299b3a8..fd49dc18ae6d 100644
--- a/sys/kern/kern_xxx.c
+++ b/sys/kern/kern_xxx.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)kern_xxx.c 8.2 (Berkeley) 11/14/93
- * $Id: kern_xxx.c,v 1.10.4.1 1995/08/24 03:50:12 davidg Exp $
+ * $Id: kern_xxx.c,v 1.10.4.2 1995/09/12 08:06:48 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/makesyscalls.sh b/sys/kern/makesyscalls.sh
index abe49ba9cbc2..df512d6f0174 100644
--- a/sys/kern/makesyscalls.sh
+++ b/sys/kern/makesyscalls.sh
@@ -1,6 +1,6 @@
#! /bin/sh -
# @(#)makesyscalls.sh 8.1 (Berkeley) 6/10/93
-# $Id: makesyscalls.sh,v 1.11 1995/02/14 19:22:29 sos Exp $
+# $Id: makesyscalls.sh,v 1.12 1995/03/16 18:12:39 bde Exp $
set -e
diff --git a/sys/kern/subr_autoconf.c b/sys/kern/subr_autoconf.c
index f48ce99f0a37..e22bf276adfc 100644
--- a/sys/kern/subr_autoconf.c
+++ b/sys/kern/subr_autoconf.c
@@ -41,7 +41,7 @@
*
* @(#)subr_autoconf.c 8.1 (Berkeley) 6/10/93
*
- * $Id$
+ * $Id: subr_autoconf.c,v 1.2 1994/08/02 07:42:26 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/subr_diskslice.c b/sys/kern/subr_diskslice.c
index 618f4f40564a..b6b2099ba748 100644
--- a/sys/kern/subr_diskslice.c
+++ b/sys/kern/subr_diskslice.c
@@ -43,7 +43,7 @@
* from: wd.c,v 1.55 1994/10/22 01:57:12 phk Exp $
* from: @(#)ufs_disksubr.c 7.16 (Berkeley) 5/4/91
* from: ufs_disksubr.c,v 1.8 1994/06/07 01:21:39 phk Exp $
- * $Id: subr_diskslice.c,v 1.13 1995/05/24 23:33:42 davidg Exp $
+ * $Id: subr_diskslice.c,v 1.14 1995/05/30 08:05:51 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/subr_log.c b/sys/kern/subr_log.c
index 0e4145a3d0b7..3184cf78f39c 100644
--- a/sys/kern/subr_log.c
+++ b/sys/kern/subr_log.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)subr_log.c 8.1 (Berkeley) 6/10/93
- * $Id: subr_log.c,v 1.8 1995/05/30 08:05:52 rgrimes Exp $
+ * $Id: subr_log.c,v 1.8.4.1 1995/08/11 04:02:25 davidg Exp $
*/
/*
diff --git a/sys/kern/subr_prf.c b/sys/kern/subr_prf.c
index 060ea9ad18d5..8e2020e494b8 100644
--- a/sys/kern/subr_prf.c
+++ b/sys/kern/subr_prf.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)subr_prf.c 8.3 (Berkeley) 1/21/94
- * $Id: subr_prf.c,v 1.18 1995/08/24 12:54:11 davidg Exp $
+ * $Id: subr_prf.c,v 1.13.4.2 1995/09/12 08:09:31 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/subr_prof.c b/sys/kern/subr_prof.c
index 3c8ef387223e..bf64fa556948 100644
--- a/sys/kern/subr_prof.c
+++ b/sys/kern/subr_prof.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)subr_prof.c 8.3 (Berkeley) 9/23/93
- * $Id: subr_prof.c,v 1.5 1995/01/29 03:03:23 bde Exp $
+ * $Id: subr_prof.c,v 1.6 1995/03/16 18:12:41 bde Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/subr_rlist.c b/sys/kern/subr_rlist.c
index 0bc6f4cc4eb5..202ce5c19dbc 100644
--- a/sys/kern/subr_rlist.c
+++ b/sys/kern/subr_rlist.c
@@ -54,7 +54,7 @@
* functioning of this software, nor does the author assume any responsibility
* for damages incurred with its use.
*
- * $Id: subr_rlist.c,v 1.9 1995/03/16 18:12:41 bde Exp $
+ * $Id: subr_rlist.c,v 1.10 1995/05/30 08:05:54 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/subr_xxx.c b/sys/kern/subr_xxx.c
index e866b8aaf908..883b367c65bb 100644
--- a/sys/kern/subr_xxx.c
+++ b/sys/kern/subr_xxx.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)subr_xxx.c 8.1 (Berkeley) 6/10/93
- * $Id$
+ * $Id: subr_xxx.c,v 1.3 1994/08/02 07:42:36 davidg Exp $
*/
/*
diff --git a/sys/kern/sys_generic.c b/sys/kern/sys_generic.c
index d4641221b98a..f1c8be51f71a 100644
--- a/sys/kern/sys_generic.c
+++ b/sys/kern/sys_generic.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)sys_generic.c 8.5 (Berkeley) 1/21/94
- * $Id: sys_generic.c,v 1.12 1995/04/13 18:24:33 davidg Exp $
+ * $Id: sys_generic.c,v 1.13 1995/05/30 08:05:56 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/sys_process.c b/sys/kern/sys_process.c
index 4a01c60cdfb2..c9d3dd912010 100644
--- a/sys/kern/sys_process.c
+++ b/sys/kern/sys_process.c
@@ -28,7 +28,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: sys_process.c,v 1.13 1995/05/12 21:39:48 davidg Exp $
+ * $Id: sys_process.c,v 1.14 1995/05/30 08:05:58 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/sys_socket.c b/sys/kern/sys_socket.c
index 92cbedc4b504..8224b1852b64 100644
--- a/sys/kern/sys_socket.c
+++ b/sys/kern/sys_socket.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)sys_socket.c 8.1 (Berkeley) 6/10/93
- * $Id: sys_socket.c,v 1.4 1994/10/02 17:35:25 phk Exp $
+ * $Id: sys_socket.c,v 1.5 1995/05/30 08:05:59 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/syscalls.c b/sys/kern/syscalls.c
index 3b9f75c424f0..ffb6ee8d48e0 100644
--- a/sys/kern/syscalls.c
+++ b/sys/kern/syscalls.c
@@ -2,7 +2,7 @@
* System call names.
*
* DO NOT EDIT-- this file is automatically generated.
- * created from $Id: syscalls.master,v 1.14 1995/03/25 16:52:11 davidg Exp $
+ * created from $Id: syscalls.c,v 1.19 1995/04/23 12:20:50 ache Exp $
*/
char *syscallnames[] = {
diff --git a/sys/kern/syscalls.master b/sys/kern/syscalls.master
index 1b14370c7abb..ca104ad831bf 100644
--- a/sys/kern/syscalls.master
+++ b/sys/kern/syscalls.master
@@ -1,4 +1,4 @@
- $Id: syscalls.master,v 1.14 1995/03/25 16:52:11 davidg Exp $
+ $Id: syscalls.master,v 1.15 1995/04/23 12:20:52 ache Exp $
; from: @(#)syscalls.master 8.2 (Berkeley) 1/13/94
;
; System call name/number master file.
diff --git a/sys/kern/sysv_ipc.c b/sys/kern/sysv_ipc.c
index f0e907b903d9..74dd28d5bbb5 100644
--- a/sys/kern/sysv_ipc.c
+++ b/sys/kern/sysv_ipc.c
@@ -1,4 +1,4 @@
-/* $Id$ */
+/* $Id: sysv_ipc.c,v 1.1 1994/09/13 14:46:55 dfr Exp $ */
/* $NetBSD: sysv_ipc.c,v 1.7 1994/06/29 06:33:11 cgd Exp $ */
/*
diff --git a/sys/kern/sysv_msg.c b/sys/kern/sysv_msg.c
index 4444f6e6acf4..665ddabb8c59 100644
--- a/sys/kern/sysv_msg.c
+++ b/sys/kern/sysv_msg.c
@@ -1,4 +1,4 @@
-/* $Id: sysv_msg.c,v 1.3 1994/10/02 17:35:26 phk Exp $ */
+/* $Id: sysv_msg.c,v 1.4 1995/05/30 08:06:01 rgrimes Exp $ */
/*
* Implementation of SVID messages
diff --git a/sys/kern/sysv_sem.c b/sys/kern/sysv_sem.c
index 0be0e3474517..eded79afa801 100644
--- a/sys/kern/sysv_sem.c
+++ b/sys/kern/sysv_sem.c
@@ -1,4 +1,4 @@
-/* $Id: sysv_sem.c,v 1.4 1994/10/06 21:06:32 davidg Exp $ */
+/* $Id: sysv_sem.c,v 1.5 1995/05/30 08:06:02 rgrimes Exp $ */
/*
* Implementation of SVID semaphores
diff --git a/sys/kern/sysv_shm.c b/sys/kern/sysv_shm.c
index de8379c2dd62..1eeb944cb304 100644
--- a/sys/kern/sysv_shm.c
+++ b/sys/kern/sysv_shm.c
@@ -1,4 +1,4 @@
-/* $Id: sysv_shm.c,v 1.4 1995/02/20 22:23:13 davidg Exp $ */
+/* $Id: sysv_shm.c,v 1.5 1995/05/30 08:06:04 rgrimes Exp $ */
/* $NetBSD: sysv_shm.c,v 1.23 1994/07/04 23:25:12 glass Exp $ */
/*
diff --git a/sys/kern/tty.c b/sys/kern/tty.c
index f07c26664fff..0a8d99b34405 100644
--- a/sys/kern/tty.c
+++ b/sys/kern/tty.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)tty.c 8.8 (Berkeley) 1/21/94
- * $Id: tty.c,v 1.46.2.1 1995/09/14 07:10:00 davidg Exp $
+ * $Id: tty.c,v 1.46.2.2 1995/11/03 08:01:04 davidg Exp $
*/
/*-
diff --git a/sys/kern/tty_compat.c b/sys/kern/tty_compat.c
index bb16ea53b54d..705e07a105b1 100644
--- a/sys/kern/tty_compat.c
+++ b/sys/kern/tty_compat.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tty_compat.c 8.1 (Berkeley) 6/10/93
- * $Id: tty_compat.c,v 1.17 1995/08/02 12:53:14 ache Exp $
+ * $Id: tty_compat.c,v 1.13.4.1 1995/09/14 07:10:02 davidg Exp $
*/
/*
diff --git a/sys/kern/tty_conf.c b/sys/kern/tty_conf.c
index 14186e3e7ecb..9b259d4db3b4 100644
--- a/sys/kern/tty_conf.c
+++ b/sys/kern/tty_conf.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)tty_conf.c 8.4 (Berkeley) 1/21/94
- * $Id: tty_conf.c,v 1.7 1995/07/29 13:35:34 bde Exp $
+ * $Id: tty_conf.c,v 1.6.4.1 1995/09/14 07:10:03 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/tty_pty.c b/sys/kern/tty_pty.c
index 3890a029c918..e88731ad3efa 100644
--- a/sys/kern/tty_pty.c
+++ b/sys/kern/tty_pty.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tty_pty.c 8.2 (Berkeley) 9/23/93
- * $Id: tty_pty.c,v 1.11.4.2 1995/09/26 15:38:27 davidg Exp $
+ * $Id: tty_pty.c,v 1.11.4.3 1995/10/26 08:38:05 davidg Exp $
*/
/*
diff --git a/sys/kern/tty_subr.c b/sys/kern/tty_subr.c
index d9992ee4c5f0..c9980dd49f44 100644
--- a/sys/kern/tty_subr.c
+++ b/sys/kern/tty_subr.c
@@ -6,7 +6,7 @@
* of this software, nor does the author assume any responsibility
* for damages incurred with its use.
*
- * $Id: tty_subr.c,v 1.10.4.2 1995/10/26 08:38:08 davidg Exp $
+ * $Id: tty_subr.c,v 1.10.4.3 1995/11/03 08:05:05 davidg Exp $
*/
/*
diff --git a/sys/kern/tty_tb.c b/sys/kern/tty_tb.c
index 8f4c84c66383..cd9d4a512af6 100644
--- a/sys/kern/tty_tb.c
+++ b/sys/kern/tty_tb.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tty_tb.c 8.1 (Berkeley) 6/10/93
- * $Id$
+ * $Id: tty_tb.c,v 1.2 1994/08/02 07:42:55 davidg Exp $
*/
#include "tb.h"
diff --git a/sys/kern/tty_tty.c b/sys/kern/tty_tty.c
index 9fe7f33e0b90..2d25e4716052 100644
--- a/sys/kern/tty_tty.c
+++ b/sys/kern/tty_tty.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tty_tty.c 8.2 (Berkeley) 9/23/93
- * $Id: tty_tty.c,v 1.4 1994/12/04 01:46:13 ache Exp $
+ * $Id: tty_tty.c,v 1.5 1995/05/30 08:06:19 rgrimes Exp $
*/
/*
diff --git a/sys/kern/uipc_domain.c b/sys/kern/uipc_domain.c
index f387f998af17..8fc6a9ea92a5 100644
--- a/sys/kern/uipc_domain.c
+++ b/sys/kern/uipc_domain.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)uipc_domain.c 8.2 (Berkeley) 10/18/93
- * $Id: uipc_domain.c,v 1.5 1995/05/11 00:13:04 wollman Exp $
+ * $Id: uipc_domain.c,v 1.6 1995/05/11 00:16:44 wollman Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/uipc_mbuf.c b/sys/kern/uipc_mbuf.c
index d71ff9f7db5a..9e8a1bf9f3f7 100644
--- a/sys/kern/uipc_mbuf.c
+++ b/sys/kern/uipc_mbuf.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)uipc_mbuf.c 8.2 (Berkeley) 1/4/94
- * $Id: uipc_mbuf.c,v 1.8 1995/02/23 19:10:21 davidg Exp $
+ * $Id: uipc_mbuf.c,v 1.9 1995/03/15 07:51:53 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/uipc_proto.c b/sys/kern/uipc_proto.c
index 0b72465d1d6c..31473f038bbb 100644
--- a/sys/kern/uipc_proto.c
+++ b/sys/kern/uipc_proto.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)uipc_proto.c 8.1 (Berkeley) 6/10/93
- * $Id: uipc_proto.c,v 1.2 1994/08/02 07:43:04 davidg Exp $
+ * $Id: uipc_proto.c,v 1.3 1995/05/11 00:13:05 wollman Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c
index dfbd37939b6a..762eb2b3815f 100644
--- a/sys/kern/uipc_socket.c
+++ b/sys/kern/uipc_socket.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)uipc_socket.c 8.3 (Berkeley) 4/15/94
- * $Id: uipc_socket.c,v 1.11 1995/08/25 20:27:46 bde Exp $
+ * $Id: uipc_socket.c,v 1.10.4.1 1995/09/12 08:29:56 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/uipc_socket2.c b/sys/kern/uipc_socket2.c
index 3f7d082dd68d..3036e3f3ea85 100644
--- a/sys/kern/uipc_socket2.c
+++ b/sys/kern/uipc_socket2.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)uipc_socket2.c 8.1 (Berkeley) 6/10/93
- * $Id: uipc_socket2.c,v 1.4 1994/10/02 17:35:33 phk Exp $
+ * $Id: uipc_socket2.c,v 1.5 1995/05/30 08:06:22 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/uipc_syscalls.c b/sys/kern/uipc_syscalls.c
index 7c0864e5170d..261066993544 100644
--- a/sys/kern/uipc_syscalls.c
+++ b/sys/kern/uipc_syscalls.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)uipc_syscalls.c 8.4 (Berkeley) 2/21/94
- * $Id: uipc_syscalls.c,v 1.5 1995/03/16 18:12:46 bde Exp $
+ * $Id: uipc_syscalls.c,v 1.6 1995/05/30 08:06:24 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/uipc_usrreq.c b/sys/kern/uipc_usrreq.c
index c8fdcf4108e6..7c01403363e2 100644
--- a/sys/kern/uipc_usrreq.c
+++ b/sys/kern/uipc_usrreq.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* From: @(#)uipc_usrreq.c 8.3 (Berkeley) 1/4/94
- * $Id: uipc_usrreq.c,v 1.9 1995/05/30 08:06:25 rgrimes Exp $
+ * $Id: uipc_usrreq.c,v 1.9.4.1 1995/08/11 03:53:38 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/vfs_bio.c b/sys/kern/vfs_bio.c
index c0c824095148..12cbac4d07c0 100644
--- a/sys/kern/vfs_bio.c
+++ b/sys/kern/vfs_bio.c
@@ -18,7 +18,7 @@
* 5. Modifications may be freely made to this file if the above conditions
* are met.
*
- * $Id: vfs_bio.c,v 1.46.4.5 1995/07/25 05:07:40 davidg Exp $
+ * $Id: vfs_bio.c,v 1.46.4.6 1995/10/01 20:25:42 davidg Exp $
*/
/*
diff --git a/sys/kern/vfs_cache.c b/sys/kern/vfs_cache.c
index a05b4a0d2ca3..227fb0a3d514 100644
--- a/sys/kern/vfs_cache.c
+++ b/sys/kern/vfs_cache.c
@@ -33,7 +33,7 @@
* SUCH DAMAGE.
*
* @(#)vfs_cache.c 8.3 (Berkeley) 8/22/94
- * $Id: vfs_cache.c,v 1.14 1995/04/15 00:49:35 davidg Exp $
+ * $Id: vfs_cache.c,v 1.15 1995/05/30 08:06:28 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/vfs_cluster.c b/sys/kern/vfs_cluster.c
index c5b075528336..238b4fa64d3d 100644
--- a/sys/kern/vfs_cluster.c
+++ b/sys/kern/vfs_cluster.c
@@ -33,7 +33,7 @@
* SUCH DAMAGE.
*
* @(#)vfs_cluster.c 8.7 (Berkeley) 2/13/94
- * $Id: vfs_cluster.c,v 1.16 1995/05/30 08:06:30 rgrimes Exp $
+ * $Id: vfs_cluster.c,v 1.16.4.1 1995/10/09 04:31:29 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/vfs_conf.c b/sys/kern/vfs_conf.c
index 251d704e176c..aef8b1b197a3 100644
--- a/sys/kern/vfs_conf.c
+++ b/sys/kern/vfs_conf.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)vfs_conf.c 8.8 (Berkeley) 3/31/94
- * $Id: vfs_conf.c,v 1.5 1994/09/21 03:46:47 wollman Exp $
+ * $Id: vfs_conf.c,v 1.6 1994/11/12 01:47:43 phk Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/vfs_init.c b/sys/kern/vfs_init.c
index ad1272142241..4b7f85267c40 100644
--- a/sys/kern/vfs_init.c
+++ b/sys/kern/vfs_init.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)vfs_init.c 8.3 (Berkeley) 1/4/94
- * $Id: vfs_init.c,v 1.9 1994/10/20 00:48:28 wollman Exp $
+ * $Id: vfs_init.c,v 1.10 1995/05/30 08:06:32 rgrimes Exp $
*/
diff --git a/sys/kern/vfs_lookup.c b/sys/kern/vfs_lookup.c
index b816d557d663..bdf35aa1115b 100644
--- a/sys/kern/vfs_lookup.c
+++ b/sys/kern/vfs_lookup.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)vfs_lookup.c 8.4 (Berkeley) 2/16/94
- * $Id: vfs_lookup.c,v 1.7.4.2 1995/09/12 08:39:06 davidg Exp $
+ * $Id: vfs_lookup.c,v 1.7.4.3 1995/10/26 09:17:15 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
index 58c81cbb3f53..82835eec7b31 100644
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)vfs_subr.c 8.13 (Berkeley) 4/18/94
- * $Id: vfs_subr.c,v 1.30.4.1 1995/08/24 05:21:05 davidg Exp $
+ * $Id: vfs_subr.c,v 1.30.4.2 1995/10/28 10:11:40 davidg Exp $
*/
/*
diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c
index b95c9eec8d36..fecaef165ea9 100644
--- a/sys/kern/vfs_syscalls.c
+++ b/sys/kern/vfs_syscalls.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)vfs_syscalls.c 8.13 (Berkeley) 4/15/94
- * $Id: vfs_syscalls.c,v 1.25.4.2 1995/09/18 05:30:19 davidg Exp $
+ * $Id: vfs_syscalls.c,v 1.25.4.3 1995/10/26 09:17:19 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c
index b24031506e42..e5fa3c883504 100644
--- a/sys/kern/vfs_vnops.c
+++ b/sys/kern/vfs_vnops.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)vfs_vnops.c 8.2 (Berkeley) 1/21/94
- * $Id: vfs_vnops.c,v 1.11.4.3 1995/08/24 05:29:36 davidg Exp $
+ * $Id: vfs_vnops.c,v 1.11.4.4 1995/10/26 09:17:22 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/kern/vnode_if.sh b/sys/kern/vnode_if.sh
index 339e65894371..95f2e4a5a871 100644
--- a/sys/kern/vnode_if.sh
+++ b/sys/kern/vnode_if.sh
@@ -32,7 +32,7 @@
# SUCH DAMAGE.
#
# @(#)vnode_if.sh 8.1 (Berkeley) 6/10/93
-# $Id$
+# $Id: vnode_if.sh,v 1.2 1994/08/02 07:43:34 davidg Exp $
#
# Script to produce VFS front-end sugar.
diff --git a/sys/kern/vnode_if.src b/sys/kern/vnode_if.src
index 4e36675e5884..0f346a3769da 100644
--- a/sys/kern/vnode_if.src
+++ b/sys/kern/vnode_if.src
@@ -31,7 +31,7 @@
# SUCH DAMAGE.
#
# @(#)vnode_if.src 8.3 (Berkeley) 2/3/94
-# $Id: vnode_if.src,v 1.2 1994/08/02 07:43:37 davidg Exp $
+# $Id: vnode_if.src,v 1.3 1994/09/28 16:45:12 dfr Exp $
#
vop_lookup {
IN struct vnode *dvp;
diff --git a/sys/libkern/Makefile b/sys/libkern/Makefile
index 60dc3a01ba12..c57dd896cab7 100644
--- a/sys/libkern/Makefile
+++ b/sys/libkern/Makefile
@@ -1,5 +1,5 @@
# @(#)Makefile 7.9 (Berkeley) 6/1/93
-# $Id: Makefile,v 1.8 1995/03/16 17:32:20 wollman Exp $
+# $Id: Makefile,v 1.9 1995/03/23 07:02:14 rgrimes Exp $
.undef NOPROFILE
diff --git a/sys/libkern/adddi3.c b/sys/libkern/adddi3.c
index 38b9df95e66b..ba34645b6c01 100644
--- a/sys/libkern/adddi3.c
+++ b/sys/libkern/adddi3.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: adddi3.c,v 1.2 1994/08/02 07:43:42 davidg Exp $
*/
#include "quad.h"
diff --git a/sys/libkern/anddi3.c b/sys/libkern/anddi3.c
index 9f92718ea670..879af8e02997 100644
--- a/sys/libkern/anddi3.c
+++ b/sys/libkern/anddi3.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: anddi3.c,v 1.2 1994/08/02 07:43:44 davidg Exp $
*/
#include "quad.h"
diff --git a/sys/libkern/ashldi3.c b/sys/libkern/ashldi3.c
index 74fa0fdcdbce..ea555137cc6b 100644
--- a/sys/libkern/ashldi3.c
+++ b/sys/libkern/ashldi3.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: ashldi3.c,v 1.2 1994/08/02 07:43:46 davidg Exp $
*/
#include "quad.h"
diff --git a/sys/libkern/ashrdi3.c b/sys/libkern/ashrdi3.c
index 51b9da5fefdf..d2e824e0fae6 100644
--- a/sys/libkern/ashrdi3.c
+++ b/sys/libkern/ashrdi3.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: ashrdi3.c,v 1.2 1994/08/02 07:43:48 davidg Exp $
*/
#if defined(LIBC_SCCS) && !defined(lint)
diff --git a/sys/libkern/bcmp.c b/sys/libkern/bcmp.c
index de9449b46717..54abcc74e6fe 100644
--- a/sys/libkern/bcmp.c
+++ b/sys/libkern/bcmp.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: bcmp.c,v 1.2 1994/08/02 07:43:50 davidg Exp $
*/
#include <string.h>
diff --git a/sys/libkern/cmpdi2.c b/sys/libkern/cmpdi2.c
index 238bd4eb743e..4d821c65e68a 100644
--- a/sys/libkern/cmpdi2.c
+++ b/sys/libkern/cmpdi2.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: cmpdi2.c,v 1.2 1994/08/02 07:43:53 davidg Exp $
*/
#include "quad.h"
diff --git a/sys/libkern/divdi3.c b/sys/libkern/divdi3.c
index f6687f9c9601..bb45da43d514 100644
--- a/sys/libkern/divdi3.c
+++ b/sys/libkern/divdi3.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: divdi3.c,v 1.2 1994/08/02 07:43:54 davidg Exp $
*/
#include "quad.h"
diff --git a/sys/libkern/ffs.c b/sys/libkern/ffs.c
index 74e24502caee..d657105c5727 100644
--- a/sys/libkern/ffs.c
+++ b/sys/libkern/ffs.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: ffs.c,v 1.2 1994/08/02 07:43:57 davidg Exp $
*/
#include <string.h>
diff --git a/sys/libkern/iordi3.c b/sys/libkern/iordi3.c
index 2819cf8e5a0a..58a11b3f653a 100644
--- a/sys/libkern/iordi3.c
+++ b/sys/libkern/iordi3.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: iordi3.c,v 1.2 1994/08/02 07:44:00 davidg Exp $
*/
#include "quad.h"
diff --git a/sys/libkern/locc.c b/sys/libkern/locc.c
index 7a16e327ff2c..2fabe9f3bb12 100644
--- a/sys/libkern/locc.c
+++ b/sys/libkern/locc.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)locc.c 8.1 (Berkeley) 6/10/93
- * $Id: locc.c,v 1.2 1994/08/02 07:44:04 davidg Exp $
+ * $Id: locc.c,v 1.3 1995/03/17 06:15:38 phk Exp $
*/
#include <sys/libkern.h>
diff --git a/sys/libkern/lshldi3.c b/sys/libkern/lshldi3.c
index 0aba85e00813..2290bb6c3bb8 100644
--- a/sys/libkern/lshldi3.c
+++ b/sys/libkern/lshldi3.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: lshldi3.c,v 1.2 1994/08/02 07:44:06 davidg Exp $
*/
#include "quad.h"
diff --git a/sys/libkern/lshrdi3.c b/sys/libkern/lshrdi3.c
index b93de210cec7..abf38548a006 100644
--- a/sys/libkern/lshrdi3.c
+++ b/sys/libkern/lshrdi3.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: lshrdi3.c,v 1.2 1994/08/02 07:44:08 davidg Exp $
*/
#include "quad.h"
diff --git a/sys/libkern/mcount.c b/sys/libkern/mcount.c
index fc3625b1974d..73273f48d17b 100644
--- a/sys/libkern/mcount.c
+++ b/sys/libkern/mcount.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: mcount.c,v 1.3 1994/09/15 15:41:48 paul Exp $
+ * $Id: mcount.c,v 1.4 1995/05/30 08:06:39 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/libkern/moddi3.c b/sys/libkern/moddi3.c
index efb6f92a5387..d4ee276a5e8d 100644
--- a/sys/libkern/moddi3.c
+++ b/sys/libkern/moddi3.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: moddi3.c,v 1.2 1994/08/02 07:44:11 davidg Exp $
*/
#include "quad.h"
diff --git a/sys/libkern/muldi3.c b/sys/libkern/muldi3.c
index 96d100cbe712..ed7cb8ea797b 100644
--- a/sys/libkern/muldi3.c
+++ b/sys/libkern/muldi3.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: muldi3.c,v 1.2 1994/08/02 07:44:13 davidg Exp $
+ * $Id: muldi3.c,v 1.3 1995/05/30 08:06:41 rgrimes Exp $
*/
#include "quad.h"
diff --git a/sys/libkern/negdi2.c b/sys/libkern/negdi2.c
index c4065e218d03..7a6cccc93245 100644
--- a/sys/libkern/negdi2.c
+++ b/sys/libkern/negdi2.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: negdi2.c,v 1.2 1994/08/02 07:44:15 davidg Exp $
*/
#include "quad.h"
diff --git a/sys/libkern/notdi2.c b/sys/libkern/notdi2.c
index f451088c3500..d276002eaec1 100644
--- a/sys/libkern/notdi2.c
+++ b/sys/libkern/notdi2.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: notdi2.c,v 1.2 1994/08/02 07:44:17 davidg Exp $
*/
#include "quad.h"
diff --git a/sys/libkern/qdivrem.c b/sys/libkern/qdivrem.c
index a2a64c4a984f..de2455cf1113 100644
--- a/sys/libkern/qdivrem.c
+++ b/sys/libkern/qdivrem.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: qdivrem.c,v 1.2 1994/08/02 07:44:19 davidg Exp $
+ * $Id: qdivrem.c,v 1.3 1995/05/30 08:06:42 rgrimes Exp $
*/
/*
diff --git a/sys/libkern/quad.h b/sys/libkern/quad.h
index dadd02c8a0f9..ebbe4443367c 100644
--- a/sys/libkern/quad.h
+++ b/sys/libkern/quad.h
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* @(#)quad.h 8.1 (Berkeley) 6/4/93
- * $Id$
+ * $Id: quad.h,v 1.2 1994/08/02 07:44:21 davidg Exp $
*/
/*
diff --git a/sys/libkern/random.c b/sys/libkern/random.c
index 08d316ea5c6f..a5b07f1cf0c2 100644
--- a/sys/libkern/random.c
+++ b/sys/libkern/random.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)random.c 8.1 (Berkeley) 6/10/93
- * $Id: random.c,v 1.2 1994/08/02 07:44:23 davidg Exp $
+ * $Id: random.c,v 1.3 1995/03/17 06:15:39 phk Exp $
*/
#include <sys/libkern.h>
diff --git a/sys/libkern/rindex.c b/sys/libkern/rindex.c
index bd661fbeb065..341d8571766c 100644
--- a/sys/libkern/rindex.c
+++ b/sys/libkern/rindex.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: rindex.c,v 1.2 1994/08/02 07:44:25 davidg Exp $
*/
#include <stddef.h>
diff --git a/sys/libkern/scanc.c b/sys/libkern/scanc.c
index c44a6a62599a..389c19f904dc 100644
--- a/sys/libkern/scanc.c
+++ b/sys/libkern/scanc.c
@@ -32,7 +32,7 @@
*
* @(#)scanc.c 8.1 (Berkeley) 6/10/93
*
- * $Id: scanc.c,v 1.2 1994/08/02 07:44:27 davidg Exp $
+ * $Id: scanc.c,v 1.3 1995/03/17 06:15:39 phk Exp $
*/
#include <sys/libkern.h>
diff --git a/sys/libkern/skpc.c b/sys/libkern/skpc.c
index 0663e44f6a76..c962901a1152 100644
--- a/sys/libkern/skpc.c
+++ b/sys/libkern/skpc.c
@@ -32,7 +32,7 @@
*
* @(#)skpc.c 8.1 (Berkeley) 6/10/93
*
- * $Id: skpc.c,v 1.2 1994/08/02 07:44:29 davidg Exp $
+ * $Id: skpc.c,v 1.3 1995/03/17 06:15:40 phk Exp $
*/
#include <sys/libkern.h>
diff --git a/sys/libkern/strcat.c b/sys/libkern/strcat.c
index 07e79231ddb5..06c24dabcd13 100644
--- a/sys/libkern/strcat.c
+++ b/sys/libkern/strcat.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: strcat.c,v 1.2 1994/08/02 07:44:31 davidg Exp $
*/
#include <string.h>
diff --git a/sys/libkern/strcmp.c b/sys/libkern/strcmp.c
index c9c397b57124..fadd811bf976 100644
--- a/sys/libkern/strcmp.c
+++ b/sys/libkern/strcmp.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: strcmp.c,v 1.2 1994/08/02 07:44:33 davidg Exp $
*/
#include <sys/cdefs.h>
diff --git a/sys/libkern/strcpy.c b/sys/libkern/strcpy.c
index 2715720e3d23..3da63196467d 100644
--- a/sys/libkern/strcpy.c
+++ b/sys/libkern/strcpy.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: strcpy.c,v 1.2 1994/08/02 07:44:36 davidg Exp $
*/
#include <sys/cdefs.h>
diff --git a/sys/libkern/strlen.c b/sys/libkern/strlen.c
index 1d1352c09e6b..2f9d5da1daa5 100644
--- a/sys/libkern/strlen.c
+++ b/sys/libkern/strlen.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: strlen.c,v 1.2 1994/08/02 07:44:38 davidg Exp $
*/
#include <sys/cdefs.h>
diff --git a/sys/libkern/strncpy.c b/sys/libkern/strncpy.c
index 8aea6908849d..250989447f72 100644
--- a/sys/libkern/strncpy.c
+++ b/sys/libkern/strncpy.c
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: strncpy.c,v 1.2 1994/08/02 07:44:39 davidg Exp $
*/
#include <sys/cdefs.h>
diff --git a/sys/libkern/subdi3.c b/sys/libkern/subdi3.c
index cb54477a4d45..25cf697d67da 100644
--- a/sys/libkern/subdi3.c
+++ b/sys/libkern/subdi3.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: subdi3.c,v 1.2 1994/08/02 07:44:41 davidg Exp $
*/
#include "quad.h"
diff --git a/sys/libkern/ucmpdi2.c b/sys/libkern/ucmpdi2.c
index 4aa3e50637dd..a1a037975785 100644
--- a/sys/libkern/ucmpdi2.c
+++ b/sys/libkern/ucmpdi2.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: ucmpdi2.c,v 1.2 1994/08/02 07:44:43 davidg Exp $
*/
#include "quad.h"
diff --git a/sys/libkern/udivdi3.c b/sys/libkern/udivdi3.c
index f9a77ec432c7..7cb62e7b30a4 100644
--- a/sys/libkern/udivdi3.c
+++ b/sys/libkern/udivdi3.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: udivdi3.c,v 1.2 1994/08/02 07:44:44 davidg Exp $
*/
#include "quad.h"
diff --git a/sys/libkern/umoddi3.c b/sys/libkern/umoddi3.c
index ccd457d0adce..14a5bc864cc3 100644
--- a/sys/libkern/umoddi3.c
+++ b/sys/libkern/umoddi3.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: umoddi3.c,v 1.2 1994/08/02 07:44:46 davidg Exp $
*/
#include "quad.h"
diff --git a/sys/libkern/xordi3.c b/sys/libkern/xordi3.c
index e49190902a22..98b2a2bb2df3 100644
--- a/sys/libkern/xordi3.c
+++ b/sys/libkern/xordi3.c
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: xordi3.c,v 1.2 1994/08/02 07:44:48 davidg Exp $
*/
#include "quad.h"
diff --git a/sys/miscfs/deadfs/dead_vnops.c b/sys/miscfs/deadfs/dead_vnops.c
index d701c33152d8..64b2ea71790f 100644
--- a/sys/miscfs/deadfs/dead_vnops.c
+++ b/sys/miscfs/deadfs/dead_vnops.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)dead_vnops.c 8.1 (Berkeley) 6/10/93
- * $Id: dead_vnops.c,v 1.5 1994/10/06 21:06:40 davidg Exp $
+ * $Id: dead_vnops.c,v 1.6 1994/10/08 22:37:00 phk Exp $
*/
#include <sys/param.h>
diff --git a/sys/miscfs/devfs/devfs_back.c b/sys/miscfs/devfs/devfs_back.c
index 5e615cb7b228..b2c4cea7a94e 100644
--- a/sys/miscfs/devfs/devfs_back.c
+++ b/sys/miscfs/devfs/devfs_back.c
@@ -2,7 +2,7 @@
/*
* Written by Julian Elischer (julian@DIALix.oz.au)
*
- * $Header: /home/ncvs/src/sys/miscfs/devfs/devfs_back.c,v 1.2 1995/04/20 07:34:51 julian Exp $
+ * $Header: /home/ncvs/src/sys/miscfs/devfs/Attic/devfs_back.c,v 1.3 1995/05/30 08:06:49 rgrimes Exp $
*/
#include "param.h"
diff --git a/sys/miscfs/devfs/devfs_front.c b/sys/miscfs/devfs/devfs_front.c
index a3d02554ccc7..c8245229272d 100644
--- a/sys/miscfs/devfs/devfs_front.c
+++ b/sys/miscfs/devfs/devfs_front.c
@@ -1,7 +1,7 @@
/*
* Written by Julian Elischer (julian@DIALix.oz.au)
*
- * $Header: /home/ncvs/src/sys/miscfs/devfs/devfs_front.c,v 1.3 1995/04/20 07:42:41 julian Exp $
+ * $Header: /home/ncvs/src/sys/miscfs/devfs/Attic/devfs_front.c,v 1.4 1995/05/30 08:06:50 rgrimes Exp $
*
*/
diff --git a/sys/miscfs/devfs/devfs_vfsops.c b/sys/miscfs/devfs/devfs_vfsops.c
index 5781df7058c6..94ce86bc61db 100644
--- a/sys/miscfs/devfs/devfs_vfsops.c
+++ b/sys/miscfs/devfs/devfs_vfsops.c
@@ -1,7 +1,7 @@
/*
* Written by Julian Elischer (julian@DIALix.oz.au)
*
- * $Header: /home/ncvs/src/sys/miscfs/devfs/devfs_vfsops.c,v 1.2 1995/04/20 07:34:53 julian Exp $
+ * $Header: /home/ncvs/src/sys/miscfs/devfs/devfs_vfsops.c,v 1.3 1995/05/30 08:06:52 rgrimes Exp $
*
*
*/
diff --git a/sys/miscfs/devfs/devfs_vnops.c b/sys/miscfs/devfs/devfs_vnops.c
index 5deda3e88d45..41e09d7d02c9 100644
--- a/sys/miscfs/devfs/devfs_vnops.c
+++ b/sys/miscfs/devfs/devfs_vnops.c
@@ -1,7 +1,7 @@
/*
* Written by Julian Elischer (julian@DIALix.oz.au)
*
- * $Header: /home/ncvs/src/sys/miscfs/devfs/devfs_vnops.c,v 1.4 1995/05/03 23:04:26 julian Exp $
+ * $Header: /home/ncvs/src/sys/miscfs/devfs/devfs_vnops.c,v 1.5 1995/05/30 08:06:53 rgrimes Exp $
*
* symlinks can wait 'til later.
*/
diff --git a/sys/miscfs/devfs/devfsdefs.h b/sys/miscfs/devfs/devfsdefs.h
index c6216e208d5c..7bf50a578301 100644
--- a/sys/miscfs/devfs/devfsdefs.h
+++ b/sys/miscfs/devfs/devfsdefs.h
@@ -7,7 +7,7 @@
/*
* Written by Julian Elischer (julian@DIALIX.oz.au)
*
- * $Header: /home/ncvs/src/sys/miscfs/devfs/devfsdefs.h,v 1.3 1995/05/03 23:06:31 julian Exp $
+ * $Header: /home/ncvs/src/sys/miscfs/devfs/devfsdefs.h,v 1.4 1995/05/30 08:06:55 rgrimes Exp $
*/
/* first a couple of defines for compatibility with inodes */
diff --git a/sys/miscfs/fdesc/fdesc.h b/sys/miscfs/fdesc/fdesc.h
index 4c682e7bd370..ba022238ee04 100644
--- a/sys/miscfs/fdesc/fdesc.h
+++ b/sys/miscfs/fdesc/fdesc.h
@@ -35,7 +35,7 @@
*
* @(#)fdesc.h 8.5 (Berkeley) 1/21/94
*
- * $Id: fdesc.h,v 1.8 1993/04/06 15:28:33 jsp Exp $
+ * $Id: fdesc.h,v 1.1.1.1 1994/05/24 10:04:59 rgrimes Exp $
*/
#ifdef KERNEL
diff --git a/sys/miscfs/fdesc/fdesc_vfsops.c b/sys/miscfs/fdesc/fdesc_vfsops.c
index f63a0cd2fff5..fe5eff822ff4 100644
--- a/sys/miscfs/fdesc/fdesc_vfsops.c
+++ b/sys/miscfs/fdesc/fdesc_vfsops.c
@@ -35,7 +35,7 @@
*
* @(#)fdesc_vfsops.c 8.4 (Berkeley) 1/21/94
*
- * $Id: fdesc_vfsops.c,v 1.5 1995/09/02 20:17:57 mpp Exp $
+ * $Id: fdesc_vfsops.c,v 1.4.4.1 1995/09/12 08:48:25 davidg Exp $
*/
/*
diff --git a/sys/miscfs/fdesc/fdesc_vnops.c b/sys/miscfs/fdesc/fdesc_vnops.c
index a2f64130b5f9..ecdae524f037 100644
--- a/sys/miscfs/fdesc/fdesc_vnops.c
+++ b/sys/miscfs/fdesc/fdesc_vnops.c
@@ -35,7 +35,7 @@
*
* @(#)fdesc_vnops.c 8.9 (Berkeley) 1/21/94
*
- * $Id: fdesc_vnops.c,v 1.10 1995/09/02 20:19:12 mpp Exp $
+ * $Id: fdesc_vnops.c,v 1.9.4.1 1995/09/12 08:48:26 davidg Exp $
*/
/*
diff --git a/sys/miscfs/fifofs/fifo.h b/sys/miscfs/fifofs/fifo.h
index 3f2d8ef714e1..21f8582e9fab 100644
--- a/sys/miscfs/fifofs/fifo.h
+++ b/sys/miscfs/fifofs/fifo.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)fifo.h 8.2 (Berkeley) 2/2/94
- * $Id: fifo.h,v 1.4 1995/02/14 06:30:18 phk Exp $
+ * $Id: fifo.h,v 1.5 1995/03/16 18:13:13 bde Exp $
*/
extern int (**fifo_vnodeop_p)();
diff --git a/sys/miscfs/fifofs/fifo_vnops.c b/sys/miscfs/fifofs/fifo_vnops.c
index f557ab13505f..65112abb7512 100644
--- a/sys/miscfs/fifofs/fifo_vnops.c
+++ b/sys/miscfs/fifofs/fifo_vnops.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)fifo_vnops.c 8.2 (Berkeley) 1/4/94
- * $Id: fifo_vnops.c,v 1.9 1995/05/30 08:06:59 rgrimes Exp $
+ * $Id: fifo_vnops.c,v 1.9.4.1 1995/09/28 13:32:03 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/miscfs/kernfs/kernfs.h b/sys/miscfs/kernfs/kernfs.h
index 2def608e55fc..b96ee4cf1964 100644
--- a/sys/miscfs/kernfs/kernfs.h
+++ b/sys/miscfs/kernfs/kernfs.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)kernfs.h 8.4 (Berkeley) 1/21/94
- * $Id$
+ * $Id: kernfs.h,v 1.2 1994/08/02 07:44:59 davidg Exp $
*/
#define _PATH_KERNFS "/kern" /* Default mountpoint */
diff --git a/sys/miscfs/kernfs/kernfs_vfsops.c b/sys/miscfs/kernfs/kernfs_vfsops.c
index e6f97c700f91..6173bd30f629 100644
--- a/sys/miscfs/kernfs/kernfs_vfsops.c
+++ b/sys/miscfs/kernfs/kernfs_vfsops.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)kernfs_vfsops.c 8.4 (Berkeley) 1/21/94
- * $Id: kernfs_vfsops.c,v 1.8 1995/03/16 20:23:38 wollman Exp $
+ * $Id: kernfs_vfsops.c,v 1.9 1995/05/25 01:35:15 davidg Exp $
*/
/*
diff --git a/sys/miscfs/kernfs/kernfs_vnops.c b/sys/miscfs/kernfs/kernfs_vnops.c
index 4558ff76d709..e2f2c3969480 100644
--- a/sys/miscfs/kernfs/kernfs_vnops.c
+++ b/sys/miscfs/kernfs/kernfs_vnops.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)kernfs_vnops.c 8.6 (Berkeley) 2/10/94
- * $Id: kernfs_vnops.c,v 1.10 1995/07/31 09:52:21 mpp Exp $
+ * $Id: kernfs_vnops.c,v 1.8.4.1 1995/09/07 21:55:27 davidg Exp $
*/
/*
diff --git a/sys/miscfs/nullfs/null.h b/sys/miscfs/nullfs/null.h
index 14286ffeee0c..6163735db5fe 100644
--- a/sys/miscfs/nullfs/null.h
+++ b/sys/miscfs/nullfs/null.h
@@ -35,7 +35,7 @@
*
* @(#)null.h 8.2 (Berkeley) 1/21/94
*
- * $Id: lofs.h,v 1.8 1992/05/30 10:05:43 jsp Exp jsp $
+ * $Id: null.h,v 1.1.1.1 1994/05/24 10:05:04 rgrimes Exp $
*/
struct null_args {
diff --git a/sys/miscfs/nullfs/null_subr.c b/sys/miscfs/nullfs/null_subr.c
index 8d18ffdc9e71..e71f56a16c68 100644
--- a/sys/miscfs/nullfs/null_subr.c
+++ b/sys/miscfs/nullfs/null_subr.c
@@ -35,7 +35,7 @@
*
* @(#)null_subr.c 8.4 (Berkeley) 1/21/94
*
- * $Id: null_subr.c,v 1.2 1994/05/25 09:08:00 rgrimes Exp $
+ * $Id: null_subr.c,v 1.3 1994/10/02 17:48:14 phk Exp $
*/
#include <sys/param.h>
diff --git a/sys/miscfs/nullfs/null_vfsops.c b/sys/miscfs/nullfs/null_vfsops.c
index eb1a19231c7d..6dfc42cf9932 100644
--- a/sys/miscfs/nullfs/null_vfsops.c
+++ b/sys/miscfs/nullfs/null_vfsops.c
@@ -36,7 +36,7 @@
* @(#)null_vfsops.c 8.2 (Berkeley) 1/21/94
*
* @(#)lofs_vfsops.c 1.2 (Berkeley) 6/18/92
- * $Id: null_vfsops.c,v 1.6 1995/03/16 20:23:39 wollman Exp $
+ * $Id: null_vfsops.c,v 1.7 1995/05/30 08:07:01 rgrimes Exp $
*/
/*
diff --git a/sys/miscfs/nullfs/null_vnops.c b/sys/miscfs/nullfs/null_vnops.c
index 464d15aa6246..34b3f3695e9a 100644
--- a/sys/miscfs/nullfs/null_vnops.c
+++ b/sys/miscfs/nullfs/null_vnops.c
@@ -35,7 +35,7 @@
*
* @(#)null_vnops.c 8.1 (Berkeley) 6/10/93
*
- * $Id: null_vnops.c,v 1.7 1995/03/19 14:28:54 davidg Exp $
+ * $Id: null_vnops.c,v 1.8 1995/05/30 08:07:03 rgrimes Exp $
*/
/*
diff --git a/sys/miscfs/portal/portal.h b/sys/miscfs/portal/portal.h
index 38d7ee0cdd27..00c99d3d6215 100644
--- a/sys/miscfs/portal/portal.h
+++ b/sys/miscfs/portal/portal.h
@@ -35,7 +35,7 @@
*
* @(#)portal.h 8.4 (Berkeley) 1/21/94
*
- * $Id: portal.h,v 1.3 1992/05/30 10:05:24 jsp Exp jsp $
+ * $Id: portal.h,v 1.1.1.1 1994/05/24 10:05:06 rgrimes Exp $
*/
struct portal_args {
diff --git a/sys/miscfs/portal/portal_vfsops.c b/sys/miscfs/portal/portal_vfsops.c
index 52c7bcf6094e..f5a17bafb995 100644
--- a/sys/miscfs/portal/portal_vfsops.c
+++ b/sys/miscfs/portal/portal_vfsops.c
@@ -35,7 +35,7 @@
*
* @(#)portal_vfsops.c 8.6 (Berkeley) 1/21/94
*
- * $Id: portal_vfsops.c,v 1.7 1995/03/16 20:23:41 wollman Exp $
+ * $Id: portal_vfsops.c,v 1.8 1995/05/30 08:07:05 rgrimes Exp $
*/
/*
diff --git a/sys/miscfs/portal/portal_vnops.c b/sys/miscfs/portal/portal_vnops.c
index 41fd2de3f416..d9977c100475 100644
--- a/sys/miscfs/portal/portal_vnops.c
+++ b/sys/miscfs/portal/portal_vnops.c
@@ -35,7 +35,7 @@
*
* @(#)portal_vnops.c 8.8 (Berkeley) 1/21/94
*
- * $Id: portal_vnops.c,v 1.5 1995/03/28 07:57:02 bde Exp $
+ * $Id: portal_vnops.c,v 1.6 1995/05/30 08:07:06 rgrimes Exp $
*/
/*
diff --git a/sys/miscfs/procfs/README b/sys/miscfs/procfs/README
index 38811b3f6e3a..7c54a04ec66c 100644
--- a/sys/miscfs/procfs/README
+++ b/sys/miscfs/procfs/README
@@ -110,4 +110,4 @@ the debugger, the debugger should fork and the child should stop itself
"attach". as before, the child will hit a breakpoint on the first
instruction in any newly exec'd image.
-$Id: README,v 3.1 1993/12/15 09:40:17 jsp Exp $
+$Id: README,v 1.1.1.1 1994/05/24 10:05:10 rgrimes Exp $
diff --git a/sys/miscfs/procfs/procfs.h b/sys/miscfs/procfs/procfs.h
index 22c3800b930d..8c5779e1b323 100644
--- a/sys/miscfs/procfs/procfs.h
+++ b/sys/miscfs/procfs/procfs.h
@@ -36,7 +36,7 @@
*
* @(#)procfs.h 8.6 (Berkeley) 2/3/94
*
- * $Id: procfs.h,v 1.4 1995/04/15 02:30:08 davidg Exp $
+ * $Id: procfs.h,v 1.5 1995/05/25 01:35:22 davidg Exp $
*/
/*
diff --git a/sys/miscfs/procfs/procfs_ctl.c b/sys/miscfs/procfs/procfs_ctl.c
index a9cbb49721f8..9f40725654ef 100644
--- a/sys/miscfs/procfs/procfs_ctl.c
+++ b/sys/miscfs/procfs/procfs_ctl.c
@@ -36,7 +36,7 @@
*
* @(#)procfs_ctl.c 8.3 (Berkeley) 1/21/94
*
- * $Id: procfs_ctl.c,v 1.6 1995/07/16 10:12:50 bde Exp $
+ * $Id: procfs_ctl.c,v 1.5.4.1 1995/09/14 07:10:11 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/miscfs/procfs/procfs_fpregs.c b/sys/miscfs/procfs/procfs_fpregs.c
index 331a671279e2..eb6e7cdbc7a9 100644
--- a/sys/miscfs/procfs/procfs_fpregs.c
+++ b/sys/miscfs/procfs/procfs_fpregs.c
@@ -36,7 +36,7 @@
*
* @(#)procfs_fpregs.c 8.1 (Berkeley) 1/27/94
*
- * $Id: procfs_fpregs.c,v 1.1.1.1 1994/05/24 10:05:09 rgrimes Exp $
+ * $Id: procfs_fpregs.c,v 1.2 1994/08/02 07:45:12 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/miscfs/procfs/procfs_mem.c b/sys/miscfs/procfs/procfs_mem.c
index 0f1b3b02f96d..cce660c462b4 100644
--- a/sys/miscfs/procfs/procfs_mem.c
+++ b/sys/miscfs/procfs/procfs_mem.c
@@ -37,7 +37,7 @@
*
* @(#)procfs_mem.c 8.4 (Berkeley) 1/21/94
*
- * $Id: procfs_mem.c,v 1.6 1995/01/05 03:59:38 davidg Exp $
+ * $Id: procfs_mem.c,v 1.7 1995/05/30 08:07:09 rgrimes Exp $
*/
/*
diff --git a/sys/miscfs/procfs/procfs_note.c b/sys/miscfs/procfs/procfs_note.c
index a7699f29e123..ca4b7d6920bc 100644
--- a/sys/miscfs/procfs/procfs_note.c
+++ b/sys/miscfs/procfs/procfs_note.c
@@ -36,7 +36,7 @@
*
* @(#)procfs_note.c 8.2 (Berkeley) 1/21/94
*
- * $Id: procfs_note.c,v 1.1.1.1 1994/05/24 10:05:09 rgrimes Exp $
+ * $Id: procfs_note.c,v 1.2 1994/08/02 07:45:16 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/miscfs/procfs/procfs_regs.c b/sys/miscfs/procfs/procfs_regs.c
index 8b0600a480d0..be9c579765e0 100644
--- a/sys/miscfs/procfs/procfs_regs.c
+++ b/sys/miscfs/procfs/procfs_regs.c
@@ -36,7 +36,7 @@
*
* @(#)procfs_regs.c 8.3 (Berkeley) 1/27/94
*
- * $Id: procfs_regs.c,v 1.1.1.1 1994/05/24 10:05:08 rgrimes Exp $
+ * $Id: procfs_regs.c,v 1.2 1994/08/02 07:45:18 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/miscfs/procfs/procfs_status.c b/sys/miscfs/procfs/procfs_status.c
index f1290222d06b..1af11f2a7db3 100644
--- a/sys/miscfs/procfs/procfs_status.c
+++ b/sys/miscfs/procfs/procfs_status.c
@@ -36,7 +36,7 @@
*
* @(#)procfs_status.c 8.3 (Berkeley) 2/17/94
*
- * $Id: procfs_status.c,v 1.3 1994/10/10 07:55:38 phk Exp $
+ * $Id: procfs_status.c,v 1.4 1995/05/30 08:07:10 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/miscfs/procfs/procfs_subr.c b/sys/miscfs/procfs/procfs_subr.c
index 6c464c1bdb77..83cad2bd8f74 100644
--- a/sys/miscfs/procfs/procfs_subr.c
+++ b/sys/miscfs/procfs/procfs_subr.c
@@ -36,7 +36,7 @@
*
* @(#)procfs_subr.c 8.4 (Berkeley) 1/27/94
*
- * $Id: procfs_subr.c,v 1.4 1995/04/15 02:30:12 davidg Exp $
+ * $Id: procfs_subr.c,v 1.5 1995/05/30 08:07:11 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/miscfs/procfs/procfs_vfsops.c b/sys/miscfs/procfs/procfs_vfsops.c
index 4113063218c3..20d5ef4acd9e 100644
--- a/sys/miscfs/procfs/procfs_vfsops.c
+++ b/sys/miscfs/procfs/procfs_vfsops.c
@@ -36,7 +36,7 @@
*
* @(#)procfs_vfsops.c 8.4 (Berkeley) 1/21/94
*
- * $Id: procfs_vfsops.c,v 1.9 1995/03/16 20:23:42 wollman Exp $
+ * $Id: procfs_vfsops.c,v 1.10 1995/05/25 01:35:23 davidg Exp $
*/
/*
diff --git a/sys/miscfs/procfs/procfs_vnops.c b/sys/miscfs/procfs/procfs_vnops.c
index dcf52a7b6389..66a17a12ad65 100644
--- a/sys/miscfs/procfs/procfs_vnops.c
+++ b/sys/miscfs/procfs/procfs_vnops.c
@@ -36,7 +36,7 @@
*
* @(#)procfs_vnops.c 8.6 (Berkeley) 2/7/94
*
- * $Id: procfs_vnops.c,v 1.16 1995/09/02 18:28:48 mpp Exp $
+ * $Id: procfs_vnops.c,v 1.14.4.2 1995/09/12 08:52:41 davidg Exp $
*/
/*
diff --git a/sys/miscfs/specfs/spec_vnops.c b/sys/miscfs/specfs/spec_vnops.c
index f3b88f026619..142f70310034 100644
--- a/sys/miscfs/specfs/spec_vnops.c
+++ b/sys/miscfs/specfs/spec_vnops.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)spec_vnops.c 8.6 (Berkeley) 4/9/94
- * $Id: spec_vnops.c,v 1.11 1995/04/09 06:03:10 davidg Exp $
+ * $Id: spec_vnops.c,v 1.11.4.1 1995/07/08 04:11:55 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/miscfs/specfs/specdev.h b/sys/miscfs/specfs/specdev.h
index bc26f9d59d12..46d6ff393f8d 100644
--- a/sys/miscfs/specfs/specdev.h
+++ b/sys/miscfs/specfs/specdev.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)specdev.h 8.2 (Berkeley) 2/2/94
- * $Id$
+ * $Id: specdev.h,v 1.2 1994/08/02 07:45:30 davidg Exp $
*/
/*
diff --git a/sys/miscfs/umapfs/umap.h b/sys/miscfs/umapfs/umap.h
index 5be2e5eed466..2490d8c2009a 100644
--- a/sys/miscfs/umapfs/umap.h
+++ b/sys/miscfs/umapfs/umap.h
@@ -35,7 +35,7 @@
*
* @(#)umap.h 8.3 (Berkeley) 1/21/94
*
- * $Id: umap.h,v 1.2 1994/08/02 07:45:33 davidg Exp $
+ * $Id: umap.h,v 1.3 1995/05/30 08:07:15 rgrimes Exp $
*/
#define MAPFILEENTRIES 64
diff --git a/sys/miscfs/umapfs/umap_subr.c b/sys/miscfs/umapfs/umap_subr.c
index 792f4a87b05e..bc2f2af81075 100644
--- a/sys/miscfs/umapfs/umap_subr.c
+++ b/sys/miscfs/umapfs/umap_subr.c
@@ -35,7 +35,7 @@
*
* @(#)umap_subr.c 8.6 (Berkeley) 1/26/94
*
- * $Id: umap_subr.c,v 1.3 1994/10/10 07:55:43 phk Exp $
+ * $Id: umap_subr.c,v 1.4 1995/05/30 08:07:17 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/miscfs/umapfs/umap_vfsops.c b/sys/miscfs/umapfs/umap_vfsops.c
index 64f05bbd62d6..c67baec959ae 100644
--- a/sys/miscfs/umapfs/umap_vfsops.c
+++ b/sys/miscfs/umapfs/umap_vfsops.c
@@ -35,7 +35,7 @@
*
* @(#)umap_vfsops.c 8.3 (Berkeley) 1/21/94
*
- * $Id: umap_vfsops.c,v 1.7 1995/03/16 20:23:43 wollman Exp $
+ * $Id: umap_vfsops.c,v 1.8 1995/05/30 08:07:18 rgrimes Exp $
*/
/*
diff --git a/sys/miscfs/umapfs/umap_vnops.c b/sys/miscfs/umapfs/umap_vnops.c
index a82d1c6d327b..33812e76cb0b 100644
--- a/sys/miscfs/umapfs/umap_vnops.c
+++ b/sys/miscfs/umapfs/umap_vnops.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)umap_vnops.c 8.3 (Berkeley) 1/5/94
- * $Id: umap_vnops.c,v 1.8 1995/03/19 14:28:55 davidg Exp $
+ * $Id: umap_vnops.c,v 1.9 1995/05/30 08:07:22 rgrimes Exp $
*/
/*
diff --git a/sys/miscfs/union/libc.opendir.c b/sys/miscfs/union/libc.opendir.c
index 15e3a0ce7637..f3130ee7a5b2 100644
--- a/sys/miscfs/union/libc.opendir.c
+++ b/sys/miscfs/union/libc.opendir.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: libc.opendir.c,v 1.2 1994/08/02 07:45:40 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/miscfs/union/union.h b/sys/miscfs/union/union.h
index 05fa4814086a..bfa9eeae5b2b 100644
--- a/sys/miscfs/union/union.h
+++ b/sys/miscfs/union/union.h
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* @(#)union.h 8.2 (Berkeley) 2/17/94
- * $Id: union.h,v 1.2 1994/08/02 07:45:42 davidg Exp $
+ * $Id: union.h,v 1.3 1995/03/16 18:14:02 bde Exp $
*/
struct union_args {
diff --git a/sys/miscfs/union/union_subr.c b/sys/miscfs/union/union_subr.c
index 65149d3c5888..573038af5398 100644
--- a/sys/miscfs/union/union_subr.c
+++ b/sys/miscfs/union/union_subr.c
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* @(#)union_subr.c 8.4 (Berkeley) 2/17/94
- * $Id: union_subr.c,v 1.7 1995/08/17 11:53:50 bde Exp $
+ * $Id: union_subr.c,v 1.6.4.1 1995/09/18 05:33:20 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/miscfs/union/union_vfsops.c b/sys/miscfs/union/union_vfsops.c
index 670c7ce98d90..837bb6c94d37 100644
--- a/sys/miscfs/union/union_vfsops.c
+++ b/sys/miscfs/union/union_vfsops.c
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* @(#)union_vfsops.c 8.7 (Berkeley) 3/5/94
- * $Id: union_vfsops.c,v 1.9 1995/03/16 20:23:44 wollman Exp $
+ * $Id: union_vfsops.c,v 1.10 1995/05/30 08:07:26 rgrimes Exp $
*/
/*
diff --git a/sys/miscfs/union/union_vnops.c b/sys/miscfs/union/union_vnops.c
index 2d082db7642f..36305d5b8f26 100644
--- a/sys/miscfs/union/union_vnops.c
+++ b/sys/miscfs/union/union_vnops.c
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* @(#)union_vnops.c 8.6 (Berkeley) 2/17/94
- * $Id: union_vnops.c,v 1.8 1994/11/04 14:41:46 davidg Exp $
+ * $Id: union_vnops.c,v 1.8.8.1 1995/09/18 05:33:21 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/msdosfs/bootsect.h b/sys/msdosfs/bootsect.h
index f83b9ec0b1a1..73915dbb53e3 100644
--- a/sys/msdosfs/bootsect.h
+++ b/sys/msdosfs/bootsect.h
@@ -1,4 +1,4 @@
-/* $Id: bootsect.h,v 1.1 1994/09/19 15:41:36 dfr Exp $ */
+/* $Id: bootsect.h,v 1.2 1995/05/30 08:07:29 rgrimes Exp $ */
/* $NetBSD: bootsect.h,v 1.4 1994/06/29 06:35:28 cgd Exp $ */
/*
diff --git a/sys/msdosfs/bpb.h b/sys/msdosfs/bpb.h
index 7618126c3101..b10a0efd55f8 100644
--- a/sys/msdosfs/bpb.h
+++ b/sys/msdosfs/bpb.h
@@ -1,4 +1,4 @@
-/* $Id: bpb.h,v 1.1 1994/09/19 15:41:37 dfr Exp $ */
+/* $Id: bpb.h,v 1.2 1995/05/30 08:07:30 rgrimes Exp $ */
/* $NetBSD: bpb.h,v 1.3 1994/06/29 06:35:29 cgd Exp $ */
/*
diff --git a/sys/msdosfs/denode.h b/sys/msdosfs/denode.h
index a7f2928ec8c5..4d50522cb256 100644
--- a/sys/msdosfs/denode.h
+++ b/sys/msdosfs/denode.h
@@ -1,4 +1,4 @@
-/* $Id: denode.h,v 1.4 1995/03/16 18:14:17 bde Exp $ */
+/* $Id: denode.h,v 1.5 1995/05/30 08:07:32 rgrimes Exp $ */
/* $NetBSD: denode.h,v 1.8 1994/08/21 18:43:49 ws Exp $ */
/*-
diff --git a/sys/msdosfs/direntry.h b/sys/msdosfs/direntry.h
index f4eecac02d97..6a82a32ea8d6 100644
--- a/sys/msdosfs/direntry.h
+++ b/sys/msdosfs/direntry.h
@@ -1,4 +1,4 @@
-/* $Id: direntry.h,v 1.1 1994/09/19 15:41:39 dfr Exp $ */
+/* $Id: direntry.h,v 1.2 1995/05/30 08:07:33 rgrimes Exp $ */
/* $NetBSD: direntry.h,v 1.7 1994/08/21 18:43:54 ws Exp $ */
/*-
diff --git a/sys/msdosfs/fat.h b/sys/msdosfs/fat.h
index 3b043c14d230..80a1f9a02433 100644
--- a/sys/msdosfs/fat.h
+++ b/sys/msdosfs/fat.h
@@ -1,4 +1,4 @@
-/* $Id: fat.h,v 1.2 1994/09/27 20:42:41 phk Exp $ */
+/* $Id: fat.h,v 1.3 1995/05/30 08:07:34 rgrimes Exp $ */
/* $NetBSD: fat.h,v 1.4 1994/08/21 18:43:57 ws Exp $ */
/*-
diff --git a/sys/msdosfs/msdosfs_conv.c b/sys/msdosfs/msdosfs_conv.c
index 88999827db52..046c4a3e332e 100644
--- a/sys/msdosfs/msdosfs_conv.c
+++ b/sys/msdosfs/msdosfs_conv.c
@@ -1,4 +1,4 @@
-/* $Id: msdosfs_conv.c,v 1.4 1995/03/29 18:48:06 ache Exp $ */
+/* $Id: msdosfs_conv.c,v 1.5 1995/05/30 08:07:36 rgrimes Exp $ */
/* $NetBSD: msdosfs_conv.c,v 1.6.2.1 1994/08/30 02:27:57 cgd Exp $ */
/*
diff --git a/sys/msdosfs/msdosfs_denode.c b/sys/msdosfs/msdosfs_denode.c
index 60a68111833d..60755aed9b43 100644
--- a/sys/msdosfs/msdosfs_denode.c
+++ b/sys/msdosfs/msdosfs_denode.c
@@ -1,4 +1,4 @@
-/* $Id: msdosfs_denode.c,v 1.11 1995/04/11 17:13:17 bde Exp $ */
+/* $Id: msdosfs_denode.c,v 1.12 1995/05/30 08:07:37 rgrimes Exp $ */
/* $NetBSD: msdosfs_denode.c,v 1.9 1994/08/21 18:44:00 ws Exp $ */
/*-
diff --git a/sys/msdosfs/msdosfs_fat.c b/sys/msdosfs/msdosfs_fat.c
index b43f9595b6b5..514bfe7b224e 100644
--- a/sys/msdosfs/msdosfs_fat.c
+++ b/sys/msdosfs/msdosfs_fat.c
@@ -1,4 +1,4 @@
-/* $Id: msdosfs_fat.c,v 1.6 1995/04/11 16:43:20 bde Exp $ */
+/* $Id: msdosfs_fat.c,v 1.7 1995/05/30 08:07:40 rgrimes Exp $ */
/* $NetBSD: msdosfs_fat.c,v 1.12 1994/08/21 18:44:04 ws Exp $ */
/*-
diff --git a/sys/msdosfs/msdosfs_lookup.c b/sys/msdosfs/msdosfs_lookup.c
index a80e5ae7bac3..da09cbba138e 100644
--- a/sys/msdosfs/msdosfs_lookup.c
+++ b/sys/msdosfs/msdosfs_lookup.c
@@ -1,4 +1,4 @@
-/* $Id: msdosfs_lookup.c,v 1.3 1995/05/09 16:30:44 bde Exp $ */
+/* $Id: msdosfs_lookup.c,v 1.4 1995/05/30 08:07:41 rgrimes Exp $ */
/* $NetBSD: msdosfs_lookup.c,v 1.14 1994/08/21 18:44:07 ws Exp $ */
/*-
diff --git a/sys/msdosfs/msdosfs_vfsops.c b/sys/msdosfs/msdosfs_vfsops.c
index bbb4fc6d2769..e5cb9575fe87 100644
--- a/sys/msdosfs/msdosfs_vfsops.c
+++ b/sys/msdosfs/msdosfs_vfsops.c
@@ -1,4 +1,4 @@
-/* $Id: msdosfs_vfsops.c,v 1.6 1994/12/12 12:35:47 bde Exp $ */
+/* $Id: msdosfs_vfsops.c,v 1.7 1995/05/30 08:07:43 rgrimes Exp $ */
/* $NetBSD: msdosfs_vfsops.c,v 1.19 1994/08/21 18:44:10 ws Exp $ */
/*-
diff --git a/sys/msdosfs/msdosfs_vnops.c b/sys/msdosfs/msdosfs_vnops.c
index dfdcddde20b7..c2d31af314fd 100644
--- a/sys/msdosfs/msdosfs_vnops.c
+++ b/sys/msdosfs/msdosfs_vnops.c
@@ -1,4 +1,4 @@
-/* $Id: msdosfs_vnops.c,v 1.17.2.3 1995/10/09 06:13:08 davidg Exp $ */
+/* $Id: msdosfs_vnops.c,v 1.17.2.4 1995/10/26 09:17:31 davidg Exp $ */
/* $NetBSD: msdosfs_vnops.c,v 1.20 1994/08/21 18:44:13 ws Exp $ */
/*-
diff --git a/sys/msdosfs/msdosfsmount.h b/sys/msdosfs/msdosfsmount.h
index 5309acbd0851..59d4010ec47e 100644
--- a/sys/msdosfs/msdosfsmount.h
+++ b/sys/msdosfs/msdosfsmount.h
@@ -1,4 +1,4 @@
-/* $Id: msdosfsmount.h,v 1.2 1994/09/27 20:42:59 phk Exp $ */
+/* $Id: msdosfsmount.h,v 1.3 1995/05/30 08:07:47 rgrimes Exp $ */
/* $NetBSD: msdosfsmount.h,v 1.7 1994/08/21 18:44:17 ws Exp $ */
/*-
diff --git a/sys/net/bpf.c b/sys/net/bpf.c
index bb2ea53fb0de..6c15fdb320f9 100644
--- a/sys/net/bpf.c
+++ b/sys/net/bpf.c
@@ -37,7 +37,7 @@
*
* @(#)bpf.c 8.2 (Berkeley) 3/28/94
*
- * $Id: bpf.c,v 1.13 1995/09/22 17:57:45 wollman Exp $
+ * $Id: bpf.c,v 1.7.4.4 1995/10/07 12:47:58 davidg Exp $
*/
#include "bpfilter.h"
diff --git a/sys/net/bpf.h b/sys/net/bpf.h
index d546b6415c5c..f5ef5227169c 100644
--- a/sys/net/bpf.h
+++ b/sys/net/bpf.h
@@ -37,7 +37,7 @@
*
* @(#)bpf.h 8.1 (Berkeley) 6/10/93
*
- * $Id: bpf.h,v 1.6 1995/09/08 11:08:55 bde Exp $
+ * $Id: bpf.h,v 1.4.4.2 1995/09/14 07:10:16 davidg Exp $
*/
#ifndef _NET_BPF_H_
diff --git a/sys/net/bpf_compat.h b/sys/net/bpf_compat.h
index 44dab52e0c9d..a6312a501453 100644
--- a/sys/net/bpf_compat.h
+++ b/sys/net/bpf_compat.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)bpf_compat.h 8.1 (Berkeley) 6/10/93
- * $Id: bpf_compat.h,v 1.2 1994/08/02 07:45:56 davidg Exp $
+ * $Id: bpf_compat.h,v 1.3 1994/08/21 05:11:39 paul Exp $
*/
#ifndef _NET_BPF_COMPAT_H_
diff --git a/sys/net/bpf_filter.c b/sys/net/bpf_filter.c
index 076f25577060..95c2804a94e7 100644
--- a/sys/net/bpf_filter.c
+++ b/sys/net/bpf_filter.c
@@ -37,7 +37,7 @@
*
* @(#)bpf_filter.c 8.1 (Berkeley) 6/10/93
*
- * $Id: bpf_filter.c,v 1.4 1995/04/01 01:46:27 davidg Exp $
+ * $Id: bpf_filter.c,v 1.5 1995/05/30 08:07:56 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/net/bpfdesc.h b/sys/net/bpfdesc.h
index a0cf3b3006a6..17358dedb388 100644
--- a/sys/net/bpfdesc.h
+++ b/sys/net/bpfdesc.h
@@ -37,7 +37,7 @@
*
* @(#)bpfdesc.h 8.1 (Berkeley) 6/10/93
*
- * $Id: bpfdesc.h,v 1.4 1994/08/21 05:11:39 paul Exp $
+ * $Id: bpfdesc.h,v 1.4.8.1 1995/07/23 04:58:33 davidg Exp $
*/
#ifndef _NET_BPFDESC_H_
diff --git a/sys/net/if.c b/sys/net/if.c
index 5a69e467759a..3a2a5f28dcd8 100644
--- a/sys/net/if.c
+++ b/sys/net/if.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)if.c 8.3 (Berkeley) 1/4/94
- * $Id: if.c,v 1.15 1995/05/30 08:07:58 rgrimes Exp $
+ * $Id: if.c,v 1.15.4.1 1995/07/13 09:10:43 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/net/if.h b/sys/net/if.h
index 9e898fb50bcd..c0af5e39815b 100644
--- a/sys/net/if.h
+++ b/sys/net/if.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)if.h 8.1 (Berkeley) 6/10/93
- * $Id: if.h,v 1.17 1995/04/26 18:10:44 pst Exp $
+ * $Id: if.h,v 1.18 1995/05/30 08:07:59 rgrimes Exp $
*/
#ifndef _NET_IF_H_
diff --git a/sys/net/if_arp.h b/sys/net/if_arp.h
index 151511094301..b3a2cd34465e 100644
--- a/sys/net/if_arp.h
+++ b/sys/net/if_arp.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)if_arp.h 8.1 (Berkeley) 6/10/93
- * $Id: if_arp.h,v 1.4 1994/11/15 14:41:38 bde Exp $
+ * $Id: if_arp.h,v 1.5 1994/11/16 02:15:05 phk Exp $
*/
#ifndef _NET_IF_ARP_H_
diff --git a/sys/net/if_disc.c b/sys/net/if_disc.c
index 0c261066022e..9f41a4309e72 100644
--- a/sys/net/if_disc.c
+++ b/sys/net/if_disc.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* From: @(#)if_loop.c 8.1 (Berkeley) 6/10/93
- * $Id: if_disc.c,v 1.4 1995/05/30 08:08:01 rgrimes Exp $
+ * $Id: if_disc.c,v 1.4.4.1 1995/10/07 12:51:12 davidg Exp $
*/
/*
diff --git a/sys/net/if_dl.h b/sys/net/if_dl.h
index e76b88ad1f67..1dfed2de457f 100644
--- a/sys/net/if_dl.h
+++ b/sys/net/if_dl.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)if_dl.h 8.1 (Berkeley) 6/10/93
- * $Id: if_dl.h,v 1.3 1994/08/21 05:11:41 paul Exp $
+ * $Id: if_dl.h,v 1.4 1995/05/30 08:08:02 rgrimes Exp $
*/
#ifndef _NET_IF_DL_H_
diff --git a/sys/net/if_ethersubr.c b/sys/net/if_ethersubr.c
index ff63303ae010..5dce597bdf50 100644
--- a/sys/net/if_ethersubr.c
+++ b/sys/net/if_ethersubr.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)if_ethersubr.c 8.1 (Berkeley) 6/10/93
- * $Id: if_ethersubr.c,v 1.8.2.1 1995/06/03 04:46:21 davidg Exp $
+ * $Id: if_ethersubr.c,v 1.9 1995/06/11 19:31:39 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/net/if_fddisubr.c b/sys/net/if_fddisubr.c
index 41ea156800c9..9c6825a813b4 100644
--- a/sys/net/if_fddisubr.c
+++ b/sys/net/if_fddisubr.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: if_ethersubr.c,v 1.5 1994/12/13 22:31:45 wollman Exp
- * $Id: if_fddisubr.c,v 1.4 1995/05/09 13:35:40 davidg Exp $
+ * $Id: if_fddisubr.c,v 1.5 1995/05/30 08:08:05 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/net/if_llc.h b/sys/net/if_llc.h
index da89ee7126f7..74e27fb4d00f 100644
--- a/sys/net/if_llc.h
+++ b/sys/net/if_llc.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)if_llc.h 8.1 (Berkeley) 6/10/93
- * $Id: if_llc.h,v 1.2 1994/08/02 07:46:16 davidg Exp $
+ * $Id: if_llc.h,v 1.3 1994/08/21 05:11:42 paul Exp $
*/
#ifndef _NET_IF_LLC_H_
diff --git a/sys/net/if_loop.c b/sys/net/if_loop.c
index 843cfae457d4..e6dc67d78862 100644
--- a/sys/net/if_loop.c
+++ b/sys/net/if_loop.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)if_loop.c 8.1 (Berkeley) 6/10/93
- * $Id: if_loop.c,v 1.10 1995/05/30 08:08:06 rgrimes Exp $
+ * $Id: if_loop.c,v 1.10.4.1 1995/10/07 12:51:13 davidg Exp $
*/
/*
diff --git a/sys/net/if_ppp.c b/sys/net/if_ppp.c
index 10c876b5f10a..26eaf575f6a4 100644
--- a/sys/net/if_ppp.c
+++ b/sys/net/if_ppp.c
@@ -69,7 +69,7 @@
* Paul Mackerras (paulus@cs.anu.edu.au).
*/
-/* $Id: if_ppp.c,v 1.14.2.2 1995/09/14 07:10:18 davidg Exp $ */
+/* $Id: if_ppp.c,v 1.14.2.3 1995/10/07 12:55:50 davidg Exp $ */
/* from if_sl.c,v 1.11 84/10/04 12:54:47 rick Exp */
#include "ppp.h"
diff --git a/sys/net/if_ppp.h b/sys/net/if_ppp.h
index 97df728e1a7e..789a86075b34 100644
--- a/sys/net/if_ppp.h
+++ b/sys/net/if_ppp.h
@@ -16,7 +16,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: if_ppp.h,v 1.2 1994/09/23 00:13:20 wollman Exp $
+ * $Id: if_ppp.h,v 1.3 1995/05/30 08:08:09 rgrimes Exp $
*/
#ifndef _IF_PPP_H_
diff --git a/sys/net/if_sl.c b/sys/net/if_sl.c
index c18f83d50e21..4ce1c1e0748a 100644
--- a/sys/net/if_sl.c
+++ b/sys/net/if_sl.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)if_sl.c 8.6 (Berkeley) 2/1/94
- * $Id: if_sl.c,v 1.20.4.2 1995/09/14 07:10:19 davidg Exp $
+ * $Id: if_sl.c,v 1.20.4.3 1995/10/07 12:57:41 davidg Exp $
*/
/*
diff --git a/sys/net/if_slvar.h b/sys/net/if_slvar.h
index ade190ff7157..e1506927c611 100644
--- a/sys/net/if_slvar.h
+++ b/sys/net/if_slvar.h
@@ -32,7 +32,7 @@
*
* @(#)if_slvar.h 8.3 (Berkeley) 2/1/94
*
- * $Id: if_slvar.h,v 1.5 1995/03/30 20:43:32 ache Exp $
+ * $Id: if_slvar.h,v 1.6 1995/05/30 08:08:13 rgrimes Exp $
*/
#ifndef _NET_IF_SLVAR_H_
diff --git a/sys/net/if_types.h b/sys/net/if_types.h
index 9a573612b2d4..a02ecfdb1e2b 100644
--- a/sys/net/if_types.h
+++ b/sys/net/if_types.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)if_types.h 8.2 (Berkeley) 4/20/94
- * $Id: if_types.h,v 1.3 1994/08/21 05:11:43 paul Exp $
+ * $Id: if_types.h,v 1.4 1995/02/25 15:57:55 davidg Exp $
*/
#ifndef _NET_IF_TYPES_H_
diff --git a/sys/net/netisr.h b/sys/net/netisr.h
index 35583483ce8f..ab72a7382d34 100644
--- a/sys/net/netisr.h
+++ b/sys/net/netisr.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)netisr.h 8.1 (Berkeley) 6/10/93
- * $Id: netisr.h,v 1.5 1995/01/05 19:51:47 se Exp $
+ * $Id: netisr.h,v 1.6 1995/05/11 00:13:10 wollman Exp $
*/
#ifndef _NET_NETISR_H_
diff --git a/sys/net/pppcompress.c b/sys/net/pppcompress.c
index 5485b0fbb4cf..85ba7569f8e9 100644
--- a/sys/net/pppcompress.c
+++ b/sys/net/pppcompress.c
@@ -44,7 +44,7 @@
* so that the entire packet being decompressed doesn't have
* to be in contiguous memory (just the compressed header).
*
- * $Id: pppcompress.c,v 1.3 1994/11/01 09:03:20 pst Exp $
+ * $Id: pppcompress.c,v 1.4 1995/05/30 08:08:17 rgrimes Exp $
*/
#include <sys/types.h>
diff --git a/sys/net/pppcompress.h b/sys/net/pppcompress.h
index 93f3e510211d..99b8817071cc 100644
--- a/sys/net/pppcompress.h
+++ b/sys/net/pppcompress.h
@@ -39,7 +39,7 @@
* - added sl_uncompress_tcp_part.
*
* From: slcompress.h 7.4 90/06/28
- * $Id: pppcompress.h,v 1.2 1994/09/23 00:13:22 wollman Exp $
+ * $Id: pppcompress.h,v 1.3 1995/05/30 08:08:18 rgrimes Exp $
*/
#ifndef _NET_PPPCOMPRESS_H_
diff --git a/sys/net/radix.c b/sys/net/radix.c
index 7073d604c8f1..e327827ea19e 100644
--- a/sys/net/radix.c
+++ b/sys/net/radix.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)radix.c 8.4 (Berkeley) 11/2/94
- * $Id: radix.c,v 1.8 1995/04/28 23:01:34 pst Exp $
+ * $Id: radix.c,v 1.9 1995/05/30 08:08:20 rgrimes Exp $
*/
/*
diff --git a/sys/net/radix.h b/sys/net/radix.h
index 2384936cc56b..118bb1acfb64 100644
--- a/sys/net/radix.h
+++ b/sys/net/radix.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)radix.h 8.2 (Berkeley) 10/31/94
- * $Id$
+ * $Id: radix.h,v 1.8 1995/04/28 23:01:37 pst Exp $
*/
#ifndef _RADIX_H_
diff --git a/sys/net/raw_cb.c b/sys/net/raw_cb.c
index dfb08e41598c..a918446d2815 100644
--- a/sys/net/raw_cb.c
+++ b/sys/net/raw_cb.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)raw_cb.c 8.1 (Berkeley) 6/10/93
- * $Id: raw_cb.c,v 1.3 1994/10/08 22:38:24 phk Exp $
+ * $Id: raw_cb.c,v 1.4 1995/05/30 08:08:21 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/net/raw_cb.h b/sys/net/raw_cb.h
index e975432e2180..6f117344a7d8 100644
--- a/sys/net/raw_cb.h
+++ b/sys/net/raw_cb.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)raw_cb.h 8.1 (Berkeley) 6/10/93
- * $Id: raw_cb.h,v 1.2 1994/08/02 07:46:36 davidg Exp $
+ * $Id: raw_cb.h,v 1.3 1994/08/21 05:11:46 paul Exp $
*/
#ifndef _NET_RAW_CB_H_
diff --git a/sys/net/raw_usrreq.c b/sys/net/raw_usrreq.c
index bf6f6bbdb433..a55de12309f2 100644
--- a/sys/net/raw_usrreq.c
+++ b/sys/net/raw_usrreq.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)raw_usrreq.c 8.1 (Berkeley) 6/10/93
- * $Id: raw_usrreq.c,v 1.5 1995/02/16 01:11:38 wollman Exp $
+ * $Id: raw_usrreq.c,v 1.6 1995/05/30 08:08:22 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/net/route.c b/sys/net/route.c
index 1da0261e193c..34b22b9925d4 100644
--- a/sys/net/route.c
+++ b/sys/net/route.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)route.c 8.2 (Berkeley) 11/15/93
- * $Id: route.c,v 1.23.4.1 1995/07/23 04:55:01 davidg Exp $
+ * $Id: route.c,v 1.23.4.2 1995/11/03 07:59:19 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/net/route.h b/sys/net/route.h
index e12f986986e8..ad0e225285d7 100644
--- a/sys/net/route.h
+++ b/sys/net/route.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)route.h 8.3 (Berkeley) 4/19/94
- * $Id: route.h,v 1.13 1995/03/20 21:30:21 wollman Exp $
+ * $Id: route.h,v 1.14 1995/05/30 08:08:26 rgrimes Exp $
*/
#ifndef _NET_ROUTE_H_
diff --git a/sys/net/rtsock.c b/sys/net/rtsock.c
index 7e65578dc12e..95a0e3306cb5 100644
--- a/sys/net/rtsock.c
+++ b/sys/net/rtsock.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)rtsock.c 8.5 (Berkeley) 11/2/94
- * $Id: rtsock.c,v 1.12 1995/05/15 22:57:53 davidg Exp $
+ * $Id: rtsock.c,v 1.13 1995/05/30 08:08:31 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/net/slcompress.c b/sys/net/slcompress.c
index 5630b51b64fe..05a57c58d437 100644
--- a/sys/net/slcompress.c
+++ b/sys/net/slcompress.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)slcompress.c 8.2 (Berkeley) 4/16/94
- * $Id: slcompress.c,v 1.4 1994/10/08 22:38:27 phk Exp $
+ * $Id: slcompress.c,v 1.5 1995/05/30 08:08:33 rgrimes Exp $
*/
/*
diff --git a/sys/net/slcompress.h b/sys/net/slcompress.h
index 239f63327f13..710d845afae8 100644
--- a/sys/net/slcompress.h
+++ b/sys/net/slcompress.h
@@ -35,7 +35,7 @@
*
* Van Jacobson (van@helios.ee.lbl.gov), Dec 31, 1989:
* - Initial distribution.
- * $Id: slcompress.h,v 1.5 1994/08/22 14:16:36 bde Exp $
+ * $Id: slcompress.h,v 1.6 1995/05/30 08:08:34 rgrimes Exp $
*/
#ifndef _NET_SLCOMPRESS_H_
diff --git a/sys/net/slip.h b/sys/net/slip.h
index d438d42a3c8b..6ccf58075b81 100644
--- a/sys/net/slip.h
+++ b/sys/net/slip.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)slip.h 8.1 (Berkeley) 2/12/94
- * $Id: slip.h,v 1.5 1995/04/28 18:47:29 ache Exp $
+ * $Id: slip.h,v 1.6 1995/04/29 15:24:00 bde Exp $
*/
#ifndef _NET_SLIP_H_
diff --git a/sys/netccitt/ccitt_proto.c b/sys/netccitt/ccitt_proto.c
index b6b49b4579d8..7abd9412615b 100644
--- a/sys/netccitt/ccitt_proto.c
+++ b/sys/netccitt/ccitt_proto.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)ccitt_proto.c 8.1 (Berkeley) 6/10/93
- * $Id: ccitt_proto.c,v 1.2 1994/08/02 07:46:54 davidg Exp $
+ * $Id: ccitt_proto.c,v 1.3 1995/05/11 00:13:13 wollman Exp $
*/
#include <sys/param.h>
diff --git a/sys/netccitt/dll.h b/sys/netccitt/dll.h
index 005525b05f63..01a69f805f72 100644
--- a/sys/netccitt/dll.h
+++ b/sys/netccitt/dll.h
@@ -33,7 +33,7 @@
* SUCH DAMAGE.
*
* @(#)dll.h 8.1 (Berkeley) 6/10/93
- * $Id: dll.h,v 1.3 1994/08/21 05:44:06 paul Exp $
+ * $Id: dll.h,v 1.4 1995/05/30 08:08:37 rgrimes Exp $
*/
#ifndef _NETCCITT_DLL_H_
diff --git a/sys/netccitt/hd_debug.c b/sys/netccitt/hd_debug.c
index f368d420035a..7ab44a2eabdb 100644
--- a/sys/netccitt/hd_debug.c
+++ b/sys/netccitt/hd_debug.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)hd_debug.c 8.1 (Berkeley) 6/10/93
- * $Id: hd_debug.c,v 1.3 1995/02/15 06:29:42 jkh Exp $
+ * $Id: hd_debug.c,v 1.4 1995/05/30 08:08:38 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/netccitt/hd_input.c b/sys/netccitt/hd_input.c
index 91fd2fe7bdfa..2c4fdd532ca8 100644
--- a/sys/netccitt/hd_input.c
+++ b/sys/netccitt/hd_input.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)hd_input.c 8.1 (Berkeley) 6/10/93
- * $Id: hd_input.c,v 1.4 1995/05/11 19:26:39 rgrimes Exp $
+ * $Id: hd_input.c,v 1.5 1995/05/30 08:08:40 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/netccitt/hd_output.c b/sys/netccitt/hd_output.c
index 903c27e507ca..cc1d41f57617 100644
--- a/sys/netccitt/hd_output.c
+++ b/sys/netccitt/hd_output.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)hd_output.c 8.1 (Berkeley) 6/10/93
- * $Id: hd_output.c,v 1.3 1995/02/15 06:29:44 jkh Exp $
+ * $Id: hd_output.c,v 1.4 1995/05/30 08:08:42 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/netccitt/hd_subr.c b/sys/netccitt/hd_subr.c
index c379188a8ce0..4d0b32eefc27 100644
--- a/sys/netccitt/hd_subr.c
+++ b/sys/netccitt/hd_subr.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)hd_subr.c 8.1 (Berkeley) 6/10/93
- * $Id: hd_subr.c,v 1.3 1995/02/15 06:29:45 jkh Exp $
+ * $Id: hd_subr.c,v 1.4 1995/05/30 08:08:43 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/netccitt/hd_timer.c b/sys/netccitt/hd_timer.c
index 8764043c527a..31520707f5dc 100644
--- a/sys/netccitt/hd_timer.c
+++ b/sys/netccitt/hd_timer.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)hd_timer.c 8.1 (Berkeley) 6/10/93
- * $Id: hd_timer.c,v 1.3 1995/02/15 06:29:46 jkh Exp $
+ * $Id: hd_timer.c,v 1.4 1995/05/30 08:08:44 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/netccitt/hd_var.h b/sys/netccitt/hd_var.h
index 24679ac32f77..ef8787082127 100644
--- a/sys/netccitt/hd_var.h
+++ b/sys/netccitt/hd_var.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)hd_var.h 8.1 (Berkeley) 6/10/93
- * $Id: hd_var.h,v 1.2 1994/08/02 07:47:10 davidg Exp $
+ * $Id: hd_var.h,v 1.3 1994/08/21 05:44:06 paul Exp $
*/
#ifndef _NETCCITT_HD_VAR_H_
diff --git a/sys/netccitt/hdlc.h b/sys/netccitt/hdlc.h
index f7fd79359b20..5ba875211180 100644
--- a/sys/netccitt/hdlc.h
+++ b/sys/netccitt/hdlc.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)hdlc.h 8.1 (Berkeley) 6/10/93
- * $Id: hdlc.h,v 1.2 1994/08/02 07:47:12 davidg Exp $
+ * $Id: hdlc.h,v 1.3 1994/08/21 05:44:07 paul Exp $
*/
#ifndef _NETCCITT_HDLC_H_
diff --git a/sys/netccitt/if_x25subr.c b/sys/netccitt/if_x25subr.c
index 7b85f4a3ee14..a48116031dd6 100644
--- a/sys/netccitt/if_x25subr.c
+++ b/sys/netccitt/if_x25subr.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)if_x25subr.c 8.1 (Berkeley) 6/10/93
- * $Id: if_x25subr.c,v 1.5 1995/04/26 18:10:50 pst Exp $
+ * $Id: if_x25subr.c,v 1.6 1995/05/30 08:08:46 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/netccitt/llc_input.c b/sys/netccitt/llc_input.c
index 18effc365c7c..37d8ef6e7d98 100644
--- a/sys/netccitt/llc_input.c
+++ b/sys/netccitt/llc_input.c
@@ -37,7 +37,7 @@
* SUCH DAMAGE.
*
* @(#)llc_input.c 8.1 (Berkeley) 6/10/93
- * $Id: llc_input.c,v 1.3 1994/12/13 22:32:13 wollman Exp $
+ * $Id: llc_input.c,v 1.4 1995/05/30 08:08:48 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/netccitt/llc_output.c b/sys/netccitt/llc_output.c
index 05cf9ae69975..cb72e4f4095b 100644
--- a/sys/netccitt/llc_output.c
+++ b/sys/netccitt/llc_output.c
@@ -37,7 +37,7 @@
* SUCH DAMAGE.
*
* @(#)llc_output.c 8.1 (Berkeley) 6/10/93
- * $Id: llc_output.c,v 1.3 1995/03/19 14:29:00 davidg Exp $
+ * $Id: llc_output.c,v 1.4 1995/05/30 08:08:50 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/netccitt/llc_subr.c b/sys/netccitt/llc_subr.c
index 9699be643e21..8f03f93220f7 100644
--- a/sys/netccitt/llc_subr.c
+++ b/sys/netccitt/llc_subr.c
@@ -37,7 +37,7 @@
* SUCH DAMAGE.
*
* @(#)llc_subr.c 8.1 (Berkeley) 6/10/93
- * $Id: llc_subr.c,v 1.4 1995/05/11 19:26:40 rgrimes Exp $
+ * $Id: llc_subr.c,v 1.5 1995/05/30 08:08:52 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/netccitt/llc_timer.c b/sys/netccitt/llc_timer.c
index 0714d51e3b94..e96261102957 100644
--- a/sys/netccitt/llc_timer.c
+++ b/sys/netccitt/llc_timer.c
@@ -37,7 +37,7 @@
* SUCH DAMAGE.
*
* @(#)llc_timer.c 8.1 (Berkeley) 6/10/93
- * $Id: llc_timer.c,v 1.2 1994/08/02 07:47:23 davidg Exp $
+ * $Id: llc_timer.c,v 1.3 1995/05/30 08:08:53 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/netccitt/llc_var.h b/sys/netccitt/llc_var.h
index 6de1aa28a02b..a36b8d9d7037 100644
--- a/sys/netccitt/llc_var.h
+++ b/sys/netccitt/llc_var.h
@@ -37,7 +37,7 @@
* SUCH DAMAGE.
*
* @(#)llc_var.h 8.1 (Berkeley) 6/10/93
- * $Id: llc_var.h,v 1.3 1994/08/21 05:44:08 paul Exp $
+ * $Id: llc_var.h,v 1.4 1995/05/30 08:08:55 rgrimes Exp $
*/
#ifndef _NETCCITT_LLC_VAR_H_
diff --git a/sys/netccitt/pk.h b/sys/netccitt/pk.h
index 50b9b091adcb..053e1a432157 100644
--- a/sys/netccitt/pk.h
+++ b/sys/netccitt/pk.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)pk.h 8.1 (Berkeley) 6/10/93
- * $Id: pk.h,v 1.3 1994/08/21 05:44:09 paul Exp $
+ * $Id: pk.h,v 1.4 1995/05/30 08:08:57 rgrimes Exp $
*/
#ifndef _NETCCITT_PK_H_
diff --git a/sys/netccitt/pk_acct.c b/sys/netccitt/pk_acct.c
index d3ba5bc0c4b5..21371785272b 100644
--- a/sys/netccitt/pk_acct.c
+++ b/sys/netccitt/pk_acct.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)pk_acct.c 8.1 (Berkeley) 6/10/93
- * $Id: pk_acct.c,v 1.2 1994/08/02 07:47:29 davidg Exp $
+ * $Id: pk_acct.c,v 1.3 1995/05/30 08:08:58 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/netccitt/pk_debug.c b/sys/netccitt/pk_debug.c
index 338d167b37f0..2e6d08c7ecc8 100644
--- a/sys/netccitt/pk_debug.c
+++ b/sys/netccitt/pk_debug.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)pk_debug.c 8.1 (Berkeley) 6/10/93
- * $Id$
+ * $Id: pk_debug.c,v 1.2 1994/08/02 07:47:31 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/netccitt/pk_input.c b/sys/netccitt/pk_input.c
index 777de53c2f3b..0e8658085833 100644
--- a/sys/netccitt/pk_input.c
+++ b/sys/netccitt/pk_input.c
@@ -39,7 +39,7 @@
* SUCH DAMAGE.
*
* @(#)pk_input.c 8.1 (Berkeley) 6/10/93
- * $Id: pk_input.c,v 1.4 1995/05/11 00:13:14 wollman Exp $
+ * $Id: pk_input.c,v 1.5 1995/05/30 08:08:59 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/netccitt/pk_llcsubr.c b/sys/netccitt/pk_llcsubr.c
index be18dafbcc72..30f00cbe0c5c 100644
--- a/sys/netccitt/pk_llcsubr.c
+++ b/sys/netccitt/pk_llcsubr.c
@@ -37,7 +37,7 @@
* SUCH DAMAGE.
*
* @(#)pk_llcsubr.c 8.1 (Berkeley) 6/10/93
- * $Id: pk_llcsubr.c,v 1.3 1994/12/13 22:32:16 wollman Exp $
+ * $Id: pk_llcsubr.c,v 1.4 1995/05/30 08:09:04 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/netccitt/pk_output.c b/sys/netccitt/pk_output.c
index 7645502b2e00..9d609fc10656 100644
--- a/sys/netccitt/pk_output.c
+++ b/sys/netccitt/pk_output.c
@@ -39,7 +39,7 @@
* SUCH DAMAGE.
*
* @(#)pk_output.c 8.1 (Berkeley) 6/10/93
- * $Id: pk_output.c,v 1.2 1994/08/02 07:47:38 davidg Exp $
+ * $Id: pk_output.c,v 1.3 1995/05/30 08:09:05 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/netccitt/pk_subr.c b/sys/netccitt/pk_subr.c
index a64375facb03..5f5c6e0f88c4 100644
--- a/sys/netccitt/pk_subr.c
+++ b/sys/netccitt/pk_subr.c
@@ -39,7 +39,7 @@
* SUCH DAMAGE.
*
* @(#)pk_subr.c 8.1 (Berkeley) 6/10/93
- * $Id: pk_subr.c,v 1.3 1994/12/13 22:32:17 wollman Exp $
+ * $Id: pk_subr.c,v 1.4 1995/05/30 08:09:07 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/netccitt/pk_timer.c b/sys/netccitt/pk_timer.c
index 72aea7783c33..559c75cba676 100644
--- a/sys/netccitt/pk_timer.c
+++ b/sys/netccitt/pk_timer.c
@@ -39,7 +39,7 @@
* SUCH DAMAGE.
*
* @(#)pk_timer.c 8.1 (Berkeley) 6/10/93
- * $Id: pk_timer.c,v 1.2 1994/08/02 07:47:44 davidg Exp $
+ * $Id: pk_timer.c,v 1.3 1995/05/30 08:09:08 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/netccitt/pk_usrreq.c b/sys/netccitt/pk_usrreq.c
index 84d6e2e1745d..f0057c5fb35b 100644
--- a/sys/netccitt/pk_usrreq.c
+++ b/sys/netccitt/pk_usrreq.c
@@ -39,7 +39,7 @@
* SUCH DAMAGE.
*
* @(#)pk_usrreq.c 8.1 (Berkeley) 6/10/93
- * $Id: pk_usrreq.c,v 1.2 1994/08/02 07:47:46 davidg Exp $
+ * $Id: pk_usrreq.c,v 1.3 1995/05/30 08:09:09 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/netccitt/pk_var.h b/sys/netccitt/pk_var.h
index 6bfe7bd8d9e9..af439559a551 100644
--- a/sys/netccitt/pk_var.h
+++ b/sys/netccitt/pk_var.h
@@ -39,7 +39,7 @@
* SUCH DAMAGE.
*
* @(#)pk_var.h 8.1 (Berkeley) 6/10/93
- * $Id: pk_var.h,v 1.4 1995/03/16 18:14:40 bde Exp $
+ * $Id: pk_var.h,v 1.5 1995/05/30 08:09:11 rgrimes Exp $
*/
#ifndef _NETCCITT_PK_VAR_H_
diff --git a/sys/netccitt/x25.h b/sys/netccitt/x25.h
index bb9146043050..efb540cfbf7e 100644
--- a/sys/netccitt/x25.h
+++ b/sys/netccitt/x25.h
@@ -38,7 +38,7 @@
* SUCH DAMAGE.
*
* @(#)x25.h 8.1 (Berkeley) 6/10/93
- * $Id: x25.h,v 1.3 1994/08/21 05:44:11 paul Exp $
+ * $Id: x25.h,v 1.4 1995/05/30 08:09:12 rgrimes Exp $
*/
#ifndef _NETCCITT_X25_H_
diff --git a/sys/netccitt/x25acct.h b/sys/netccitt/x25acct.h
index a5ecdd21a91b..db1cfbb1143b 100644
--- a/sys/netccitt/x25acct.h
+++ b/sys/netccitt/x25acct.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)x25acct.h 8.1 (Berkeley) 6/10/93
- * $Id: x25acct.h,v 1.2 1994/08/02 07:47:52 davidg Exp $
+ * $Id: x25acct.h,v 1.3 1994/08/21 05:44:11 paul Exp $
*/
#ifndef _NETCCITT_X25ACCT_H_
diff --git a/sys/netccitt/x25err.h b/sys/netccitt/x25err.h
index 94cf7cd89e82..f510a65a2701 100644
--- a/sys/netccitt/x25err.h
+++ b/sys/netccitt/x25err.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)x25err.h 8.1 (Berkeley) 6/10/93
- * $Id: x25err.h,v 1.3 1994/08/21 05:44:12 paul Exp $
+ * $Id: x25err.h,v 1.4 1995/05/30 08:09:13 rgrimes Exp $
*/
#ifndef _NETCCITT_X25ERR_H_
diff --git a/sys/netinet/icmp_var.h b/sys/netinet/icmp_var.h
index 90eeb4fbcd3f..9d0d9a99e86e 100644
--- a/sys/netinet/icmp_var.h
+++ b/sys/netinet/icmp_var.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)icmp_var.h 8.1 (Berkeley) 6/10/93
- * $Id: icmp_var.h,v 1.3 1994/08/21 05:27:23 paul Exp $
+ * $Id: icmp_var.h,v 1.4 1995/02/16 00:27:40 wollman Exp $
*/
#ifndef _NETINET_ICMP_VAR_H_
diff --git a/sys/netinet/if_ether.c b/sys/netinet/if_ether.c
index 8f6321620758..dac3b8057051 100644
--- a/sys/netinet/if_ether.c
+++ b/sys/netinet/if_ether.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)if_ether.c 8.1 (Berkeley) 6/10/93
- * $Id: if_ether.c,v 1.17 1995/05/30 08:09:18 rgrimes Exp $
+ * $Id: if_ether.c,v 1.17.4.1 1995/07/23 05:26:13 davidg Exp $
*/
/*
diff --git a/sys/netinet/if_ether.h b/sys/netinet/if_ether.h
index 2551fe378113..8b12220ef33b 100644
--- a/sys/netinet/if_ether.h
+++ b/sys/netinet/if_ether.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)if_ether.h 8.1 (Berkeley) 6/10/93
- * $Id: if_ether.h,v 1.8 1995/04/02 01:26:26 wpaul Exp $
+ * $Id: if_ether.h,v 1.9 1995/05/30 08:09:20 rgrimes Exp $
*/
#ifndef _NETINET_IF_ETHER_H_
diff --git a/sys/netinet/if_fddi.h b/sys/netinet/if_fddi.h
index 14ec34389f19..c849a44d1d0d 100644
--- a/sys/netinet/if_fddi.h
+++ b/sys/netinet/if_fddi.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)if_fddi.h 8.1 (Berkeley) 6/10/93
- * $Id: if_fddi.h,v 1.1 1995/03/14 09:14:14 davidg Exp $
+ * $Id: if_fddi.h,v 1.2 1995/05/30 08:09:21 rgrimes Exp $
*/
#ifndef _NETINET_IF_FDDI_H_
diff --git a/sys/netinet/igmp.c b/sys/netinet/igmp.c
index 1f795d9d14b3..952a6ff3ca2f 100644
--- a/sys/netinet/igmp.c
+++ b/sys/netinet/igmp.c
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* @(#)igmp.c 8.1 (Berkeley) 7/19/93
- * $Id: igmp.c,v 1.12 1995/06/13 17:51:05 wollman Exp $
+ * $Id: igmp.c,v 1.11.4.1 1995/09/06 10:31:29 davidg Exp $
*/
/*
diff --git a/sys/netinet/igmp.h b/sys/netinet/igmp.h
index 07cefc8203d4..0189785cf8b4 100644
--- a/sys/netinet/igmp.h
+++ b/sys/netinet/igmp.h
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* @(#)igmp.h 8.1 (Berkeley) 6/10/93
- * $Id: igmp.h,v 1.6 1995/06/13 17:51:06 wollman Exp $
+ * $Id: igmp.h,v 1.5.4.1 1995/09/06 10:31:30 davidg Exp $
*/
#ifndef _NETINET_IGMP_H_
diff --git a/sys/netinet/igmp_var.h b/sys/netinet/igmp_var.h
index d845110bd742..e12a469957c1 100644
--- a/sys/netinet/igmp_var.h
+++ b/sys/netinet/igmp_var.h
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* @(#)igmp_var.h 8.1 (Berkeley) 7/19/93
- * $Id: igmp_var.h,v 1.6 1995/06/13 17:51:07 wollman Exp $
+ * $Id: igmp_var.h,v 1.5.4.1 1995/09/06 10:31:31 davidg Exp $
*/
#ifndef _NETINET_IGMP_VAR_H_
diff --git a/sys/netinet/in.c b/sys/netinet/in.c
index 51c073af344c..454c4d8f94b2 100644
--- a/sys/netinet/in.c
+++ b/sys/netinet/in.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)in.c 8.2 (Berkeley) 11/15/93
- * $Id: in.c,v 1.14 1995/05/30 08:09:26 rgrimes Exp $
+ * $Id: in.c,v 1.14.4.1 1995/07/23 03:38:11 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/netinet/in.h b/sys/netinet/in.h
index 0892b205aa42..5aad1daced3b 100644
--- a/sys/netinet/in.h
+++ b/sys/netinet/in.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)in.h 8.3 (Berkeley) 1/3/94
- * $Id: in.h,v 1.10 1995/06/13 17:51:08 wollman Exp $
+ * $Id: in.h,v 1.9.4.1 1995/09/06 10:31:32 davidg Exp $
*/
#ifndef _NETINET_IN_H_
diff --git a/sys/netinet/in_cksum.c b/sys/netinet/in_cksum.c
index 9f12495e6f76..46bdaec4cebe 100644
--- a/sys/netinet/in_cksum.c
+++ b/sys/netinet/in_cksum.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)in_cksum.c 8.1 (Berkeley) 6/10/93
- * $Id: in_cksum.c,v 1.2 1994/08/02 07:48:16 davidg Exp $
+ * $Id: in_cksum.c,v 1.3 1995/05/30 08:09:27 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/netinet/in_pcb.c b/sys/netinet/in_pcb.c
index 4df50be200a9..dd19aed3484f 100644
--- a/sys/netinet/in_pcb.c
+++ b/sys/netinet/in_pcb.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)in_pcb.c 8.2 (Berkeley) 1/4/94
- * $Id: in_pcb.c,v 1.12 1995/05/30 08:09:28 rgrimes Exp $
+ * $Id: in_pcb.c,v 1.12.4.1 1995/10/07 20:13:01 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/netinet/in_pcb.h b/sys/netinet/in_pcb.h
index 248ad7afdbe7..74af065f670d 100644
--- a/sys/netinet/in_pcb.h
+++ b/sys/netinet/in_pcb.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)in_pcb.h 8.1 (Berkeley) 6/10/93
- * $Id: in_pcb.h,v 1.7 1995/04/09 16:46:47 jkh Exp $
+ * $Id: in_pcb.h,v 1.8 1995/04/10 00:43:18 davidg Exp $
*/
#ifndef _NETINET_IN_PCB_H_
diff --git a/sys/netinet/in_proto.c b/sys/netinet/in_proto.c
index e3586ebf2c90..b31852d90d82 100644
--- a/sys/netinet/in_proto.c
+++ b/sys/netinet/in_proto.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* From: @(#)in_proto.c 8.1 (Berkeley) 6/10/93
- * $Id: in_proto.c,v 1.17 1995/06/26 16:11:51 wollman Exp $
+ * $Id: in_proto.c,v 1.15.4.1 1995/09/06 10:31:34 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/netinet/in_rmx.c b/sys/netinet/in_rmx.c
index 884d121db9e8..4b105c3de05a 100644
--- a/sys/netinet/in_rmx.c
+++ b/sys/netinet/in_rmx.c
@@ -26,7 +26,7 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: in_rmx.c,v 1.13 1995/05/30 08:09:31 rgrimes Exp $
+ * $Id: in_rmx.c,v 1.13.4.1 1995/07/23 05:19:01 davidg Exp $
*/
/*
diff --git a/sys/netinet/in_systm.h b/sys/netinet/in_systm.h
index f35ab2ff1685..fa82138e21bd 100644
--- a/sys/netinet/in_systm.h
+++ b/sys/netinet/in_systm.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)in_systm.h 8.1 (Berkeley) 6/10/93
- * $Id: in_systm.h,v 1.2 1994/08/02 07:48:25 davidg Exp $
+ * $Id: in_systm.h,v 1.3 1994/08/21 05:27:29 paul Exp $
*/
#ifndef _NETINET_IN_SYSTM_H_
diff --git a/sys/netinet/in_var.h b/sys/netinet/in_var.h
index a21ec47468f1..6c06bc1adad6 100644
--- a/sys/netinet/in_var.h
+++ b/sys/netinet/in_var.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)in_var.h 8.1 (Berkeley) 6/10/93
- * $Id: in_var.h,v 1.9 1995/03/23 18:14:41 wollman Exp $
+ * $Id: in_var.h,v 1.10 1995/05/30 08:09:32 rgrimes Exp $
*/
#ifndef _NETINET_IN_VAR_H_
diff --git a/sys/netinet/ip.h b/sys/netinet/ip.h
index 864474a065b3..52586555e009 100644
--- a/sys/netinet/ip.h
+++ b/sys/netinet/ip.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ip.h 8.1 (Berkeley) 6/10/93
- * $Id: ip.h,v 1.4 1995/05/05 14:36:38 ache Exp $
+ * $Id: ip.h,v 1.5 1995/05/30 08:09:33 rgrimes Exp $
*/
#ifndef _NETINET_IP_H_
diff --git a/sys/netinet/ip_fw.c b/sys/netinet/ip_fw.c
index caf58295e5b7..f8b17e55dbad 100644
--- a/sys/netinet/ip_fw.c
+++ b/sys/netinet/ip_fw.c
@@ -11,7 +11,7 @@
*
* This software is provided ``AS IS'' without any warranties of any kind.
*
- * $Id: ip_fw.c,v 1.14.4.1 1995/07/23 05:43:47 davidg Exp $
+ * $Id: ip_fw.c,v 1.14.4.2 1995/08/25 01:58:04 davidg Exp $
*/
/*
diff --git a/sys/netinet/ip_fw.h b/sys/netinet/ip_fw.h
index f488181713bc..b780cc3f4492 100644
--- a/sys/netinet/ip_fw.h
+++ b/sys/netinet/ip_fw.h
@@ -11,7 +11,7 @@
*
* This software is provided ``AS IS'' without any warranties of any kind.
*
- * $Id: ip_fw.h,v 1.13 1995/07/23 05:36:30 davidg Exp $
+ * $Id: ip_fw.h,v 1.11.4.1 1995/07/23 05:43:48 davidg Exp $
*/
/*
diff --git a/sys/netinet/ip_fwdef.c b/sys/netinet/ip_fwdef.c
index 8af86ba54783..30ea69ec6f4b 100644
--- a/sys/netinet/ip_fwdef.c
+++ b/sys/netinet/ip_fwdef.c
@@ -11,7 +11,7 @@
*
* This software is provided ``AS IS'' without any warranties of any kind.
*
- * $Id: ip_fwdef.c,v 1.6 1995/07/23 05:36:31 davidg Exp $
+ * $Id: ip_fwdef.c,v 1.3.4.1 1995/07/23 05:43:50 davidg Exp $
*/
/*
diff --git a/sys/netinet/ip_icmp.c b/sys/netinet/ip_icmp.c
index 4b203f523de3..e60a9b796b20 100644
--- a/sys/netinet/ip_icmp.c
+++ b/sys/netinet/ip_icmp.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ip_icmp.c 8.2 (Berkeley) 1/4/94
- * $Id: ip_icmp.c,v 1.7 1995/05/30 08:09:42 rgrimes Exp $
+ * $Id: ip_icmp.c,v 1.7.4.1 1995/07/23 05:52:51 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/netinet/ip_icmp.h b/sys/netinet/ip_icmp.h
index aa0e3e169ff6..6254725758d0 100644
--- a/sys/netinet/ip_icmp.h
+++ b/sys/netinet/ip_icmp.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ip_icmp.h 8.1 (Berkeley) 6/10/93
- * $Id: ip_icmp.h,v 1.3 1994/08/21 05:27:31 paul Exp $
+ * $Id: ip_icmp.h,v 1.4 1995/05/30 08:09:43 rgrimes Exp $
*/
#ifndef _NETINET_IP_ICMP_H_
diff --git a/sys/netinet/ip_input.c b/sys/netinet/ip_input.c
index 6f107515d09d..08096a31604e 100644
--- a/sys/netinet/ip_input.c
+++ b/sys/netinet/ip_input.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ip_input.c 8.2 (Berkeley) 1/4/94
- * $Id: ip_input.c,v 1.25 1995/07/09 14:29:46 davidg Exp $
+ * $Id: ip_input.c,v 1.22.4.2 1995/09/06 10:31:35 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/netinet/ip_mroute.c b/sys/netinet/ip_mroute.c
index df300d2bf5f9..e712aef544ec 100644
--- a/sys/netinet/ip_mroute.c
+++ b/sys/netinet/ip_mroute.c
@@ -9,7 +9,7 @@
* Modified by Bill Fenner, PARC, April 1995
*
* MROUTING Revision: 3.5
- * $Id: ip_mroute.c,v 1.23 1995/10/06 19:30:43 wollman Exp $
+ * $Id: ip_mroute.c,v 1.16.4.2 1995/10/09 06:22:13 davidg Exp $
*/
diff --git a/sys/netinet/ip_mroute.h b/sys/netinet/ip_mroute.h
index bf1392cdf32e..43e08e7252f1 100644
--- a/sys/netinet/ip_mroute.h
+++ b/sys/netinet/ip_mroute.h
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* @(#)ip_mroute.h 8.1 (Berkeley) 6/10/93
- * $Id: ip_mroute.h,v 1.9 1995/08/23 18:20:17 wollman Exp $
+ * $Id: ip_mroute.h,v 1.7.4.1 1995/09/06 10:31:39 davidg Exp $
*/
#ifndef _NETINET_IP_MROUTE_H_
diff --git a/sys/netinet/ip_output.c b/sys/netinet/ip_output.c
index b5f1e974a87d..a548a9814efc 100644
--- a/sys/netinet/ip_output.c
+++ b/sys/netinet/ip_output.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ip_output.c 8.3 (Berkeley) 1/21/94
- * $Id: ip_output.c,v 1.23 1995/07/26 18:05:13 wollman Exp $
+ * $Id: ip_output.c,v 1.19.4.2 1995/09/06 10:31:40 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/netinet/ip_var.h b/sys/netinet/ip_var.h
index c84180fbc00c..ef3853c410fe 100644
--- a/sys/netinet/ip_var.h
+++ b/sys/netinet/ip_var.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ip_var.h 8.1 (Berkeley) 6/10/93
- * $Id: ip_var.h,v 1.13 1995/07/26 18:05:16 wollman Exp $
+ * $Id: ip_var.h,v 1.10.4.1 1995/09/06 10:31:42 davidg Exp $
*/
#ifndef _NETINET_IP_VAR_H_
diff --git a/sys/netinet/raw_ip.c b/sys/netinet/raw_ip.c
index 616ef748ab0c..109e8bb883bd 100644
--- a/sys/netinet/raw_ip.c
+++ b/sys/netinet/raw_ip.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)raw_ip.c 8.7 (Berkeley) 5/15/95
- * $Id: raw_ip.c,v 1.19.4.2 1995/10/07 20:17:31 davidg Exp $
+ * $Id: raw_ip.c,v 1.19.4.3 1995/10/21 03:02:54 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/netinet/tcp.h b/sys/netinet/tcp.h
index a79acf96625b..6c1eefdccc14 100644
--- a/sys/netinet/tcp.h
+++ b/sys/netinet/tcp.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tcp.h 8.1 (Berkeley) 6/10/93
- * $Id: tcp.h,v 1.5 1995/02/14 02:35:14 wollman Exp $
+ * $Id: tcp.h,v 1.6 1995/05/30 08:09:53 rgrimes Exp $
*/
#ifndef _NETINET_TCP_H_
diff --git a/sys/netinet/tcp_debug.c b/sys/netinet/tcp_debug.c
index cef966cc7328..5f4dbf202339 100644
--- a/sys/netinet/tcp_debug.c
+++ b/sys/netinet/tcp_debug.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tcp_debug.c 8.1 (Berkeley) 6/10/93
- * $Id: tcp_debug.c,v 1.3 1995/02/09 23:13:22 wollman Exp $
+ * $Id: tcp_debug.c,v 1.4 1995/04/19 10:26:04 olah Exp $
*/
#ifdef TCPDEBUG
diff --git a/sys/netinet/tcp_debug.h b/sys/netinet/tcp_debug.h
index 159b79810809..86b32462e2cb 100644
--- a/sys/netinet/tcp_debug.h
+++ b/sys/netinet/tcp_debug.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tcp_debug.h 8.1 (Berkeley) 6/10/93
- * $Id: tcp_debug.h,v 1.2 1994/08/02 07:48:56 davidg Exp $
+ * $Id: tcp_debug.h,v 1.3 1994/08/21 05:27:35 paul Exp $
*/
#ifndef _NETINET_TCP_DEBUG_H_
diff --git a/sys/netinet/tcp_fsm.h b/sys/netinet/tcp_fsm.h
index 28f04f082f1e..f2e6d2278efd 100644
--- a/sys/netinet/tcp_fsm.h
+++ b/sys/netinet/tcp_fsm.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tcp_fsm.h 8.1 (Berkeley) 6/10/93
- * $Id: tcp_fsm.h,v 1.5 1995/02/16 01:53:31 wollman Exp $
+ * $Id: tcp_fsm.h,v 1.6 1995/03/30 23:35:55 davidg Exp $
*/
#ifndef _NETINET_TCP_FSM_H_
diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c
index b149eebf4883..ddcec02f4340 100644
--- a/sys/netinet/tcp_input.c
+++ b/sys/netinet/tcp_input.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* From: @(#)tcp_input.c 8.5 (Berkeley) 4/10/94
- * $Id: tcp_input.c,v 1.25.4.1 1995/07/23 05:12:13 davidg Exp $
+ * $Id: tcp_input.c,v 1.25.4.2 1995/08/24 05:52:06 davidg Exp $
*/
#ifndef TUBA_INCLUDE
diff --git a/sys/netinet/tcp_output.c b/sys/netinet/tcp_output.c
index 958713c48e32..987dde00bbf2 100644
--- a/sys/netinet/tcp_output.c
+++ b/sys/netinet/tcp_output.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tcp_output.c 8.3 (Berkeley) 12/30/93
- * $Id: tcp_output.c,v 1.12 1995/09/13 17:36:31 wollman Exp $
+ * $Id: tcp_output.c,v 1.11.4.1 1995/09/15 08:58:07 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/netinet/tcp_seq.h b/sys/netinet/tcp_seq.h
index 6f0532f3449b..da9fdd0f6cf8 100644
--- a/sys/netinet/tcp_seq.h
+++ b/sys/netinet/tcp_seq.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tcp_seq.h 8.1 (Berkeley) 6/10/93
- * $Id: tcp_seq.h,v 1.4 1995/02/08 20:18:46 wollman Exp $
+ * $Id: tcp_seq.h,v 1.5 1995/02/14 02:35:17 wollman Exp $
*/
#ifndef _NETINET_TCP_SEQ_H_
diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c
index 09b148cc5b08..d583c261d4d1 100644
--- a/sys/netinet/tcp_subr.c
+++ b/sys/netinet/tcp_subr.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tcp_subr.c 8.1 (Berkeley) 6/10/93
- * $Id: tcp_subr.c,v 1.11 1995/05/30 08:09:58 rgrimes Exp $
+ * $Id: tcp_subr.c,v 1.11.4.1 1995/07/23 05:04:31 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/netinet/tcp_timer.c b/sys/netinet/tcp_timer.c
index 9badee0f24cd..9d963f1a3eab 100644
--- a/sys/netinet/tcp_timer.c
+++ b/sys/netinet/tcp_timer.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tcp_timer.c 8.1 (Berkeley) 6/10/93
- * $Id: tcp_timer.c,v 1.7 1995/05/30 08:09:59 rgrimes Exp $
+ * $Id: tcp_timer.c,v 1.7.4.1 1995/07/29 23:16:52 davidg Exp $
*/
#ifndef TUBA_INCLUDE
diff --git a/sys/netinet/tcp_timer.h b/sys/netinet/tcp_timer.h
index b9af05f81061..6e15f9656213 100644
--- a/sys/netinet/tcp_timer.h
+++ b/sys/netinet/tcp_timer.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tcp_timer.h 8.1 (Berkeley) 6/10/93
- * $Id: tcp_timer.h,v 1.5 1995/02/08 20:18:47 wollman Exp $
+ * $Id: tcp_timer.h,v 1.6 1995/02/14 02:35:18 wollman Exp $
*/
#ifndef _NETINET_TCP_TIMER_H_
diff --git a/sys/netinet/tcp_usrreq.c b/sys/netinet/tcp_usrreq.c
index 4ea6c47b7358..361eb00ecb81 100644
--- a/sys/netinet/tcp_usrreq.c
+++ b/sys/netinet/tcp_usrreq.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* From: @(#)tcp_usrreq.c 8.2 (Berkeley) 1/3/94
- * $Id: tcp_usrreq.c,v 1.15.2.1 1995/09/15 09:01:55 davidg Exp $
+ * $Id: tcp_usrreq.c,v 1.15.2.2 1995/11/03 07:53:59 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/netinet/tcp_var.h b/sys/netinet/tcp_var.h
index 0ac6a74c61cb..7c0c4f13ee9e 100644
--- a/sys/netinet/tcp_var.h
+++ b/sys/netinet/tcp_var.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tcp_var.h 8.3 (Berkeley) 4/10/94
- * $Id: tcp_var.h,v 1.11.4.1 1995/07/23 05:02:02 davidg Exp $
+ * $Id: tcp_var.h,v 1.11.4.2 1995/07/29 23:16:53 davidg Exp $
*/
#ifndef _NETINET_TCP_VAR_H_
diff --git a/sys/netinet/tcpip.h b/sys/netinet/tcpip.h
index bc71fbc654d3..571fcbb43435 100644
--- a/sys/netinet/tcpip.h
+++ b/sys/netinet/tcpip.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tcpip.h 8.1 (Berkeley) 6/10/93
- * $Id: tcpip.h,v 1.3 1994/08/21 05:27:40 paul Exp $
+ * $Id: tcpip.h,v 1.4 1995/02/08 20:18:48 wollman Exp $
*/
#ifndef _NETINET_TCPIP_H_
diff --git a/sys/netinet/udp.h b/sys/netinet/udp.h
index d47ea918a458..406c0d1d3647 100644
--- a/sys/netinet/udp.h
+++ b/sys/netinet/udp.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)udp.h 8.1 (Berkeley) 6/10/93
- * $Id: udp.h,v 1.2 1994/08/02 07:49:22 davidg Exp $
+ * $Id: udp.h,v 1.3 1994/08/21 05:27:41 paul Exp $
*/
#ifndef _NETINET_UDP_H_
diff --git a/sys/netinet/udp_usrreq.c b/sys/netinet/udp_usrreq.c
index d5abe2633bc3..aa6fdbdff385 100644
--- a/sys/netinet/udp_usrreq.c
+++ b/sys/netinet/udp_usrreq.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)udp_usrreq.c 8.6 (Berkeley) 5/23/95
- * $Id: udp_usrreq.c,v 1.14 1995/09/22 19:56:26 wollman Exp $
+ * $Id: udp_usrreq.c,v 1.12.4.2 1995/10/07 20:20:58 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/netinet/udp_var.h b/sys/netinet/udp_var.h
index 6e98e9c4a7ac..efea9af2af69 100644
--- a/sys/netinet/udp_var.h
+++ b/sys/netinet/udp_var.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)udp_var.h 8.1 (Berkeley) 6/10/93
- * $Id: udp_var.h,v 1.4 1995/02/16 00:27:47 wollman Exp $
+ * $Id: udp_var.h,v 1.5 1995/04/09 01:29:31 davidg Exp $
*/
#ifndef _NETINET_UDP_VAR_H_
diff --git a/sys/netiso/argo_debug.h b/sys/netiso/argo_debug.h
index e87da1cd89f8..1c8d3a638cdc 100644
--- a/sys/netiso/argo_debug.h
+++ b/sys/netiso/argo_debug.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)argo_debug.h 8.1 (Berkeley) 6/10/93
- * $Id: argo_debug.h,v 1.3 1994/08/21 06:14:11 paul Exp $
+ * $Id: argo_debug.h,v 1.4 1995/05/30 08:10:09 rgrimes Exp $
*/
#ifndef _NETISO_ARGO_DEBUG_H_
@@ -64,7 +64,7 @@ SOFTWARE.
* ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
*/
/*
- * $Header: /home/ncvs/src/sys/netiso/argo_debug.h,v 1.3 1994/08/21 06:14:11 paul Exp $
+ * $Header: /home/ncvs/src/sys/netiso/argo_debug.h,v 1.4 1995/05/30 08:10:09 rgrimes Exp $
* $Source: /home/ncvs/src/sys/netiso/argo_debug.h,v $
*/
diff --git a/sys/netiso/clnl.h b/sys/netiso/clnl.h
index 65c536ae075f..068cbc61dc88 100644
--- a/sys/netiso/clnl.h
+++ b/sys/netiso/clnl.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)clnl.h 8.1 (Berkeley) 6/10/93
- * $Id: clnl.h,v 1.3 1994/08/21 06:14:12 paul Exp $
+ * $Id: clnl.h,v 1.4 1995/05/30 08:10:11 rgrimes Exp $
*/
#ifndef _NETISO_CLNL_H_
diff --git a/sys/netiso/clnp.h b/sys/netiso/clnp.h
index 646b6b8fc6f2..a7308cb4a97d 100644
--- a/sys/netiso/clnp.h
+++ b/sys/netiso/clnp.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)clnp.h 8.2 (Berkeley) 4/16/94
- * $Id: clnp.h,v 1.3 1994/08/21 06:14:13 paul Exp $
+ * $Id: clnp.h,v 1.4 1995/05/30 08:10:12 rgrimes Exp $
*/
#ifndef _NETISO_CLNP_H_
@@ -63,7 +63,7 @@ SOFTWARE.
/*
* ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
*/
-/* $Header: /home/ncvs/src/sys/netiso/clnp.h,v 1.3 1994/08/21 06:14:13 paul Exp $ */
+/* $Header: /home/ncvs/src/sys/netiso/clnp.h,v 1.4 1995/05/30 08:10:12 rgrimes Exp $ */
/* $Source: /home/ncvs/src/sys/netiso/clnp.h,v $ */
/* should be config option but cpp breaks with too many #defines */
diff --git a/sys/netiso/clnp_debug.c b/sys/netiso/clnp_debug.c
index 52d6f040dfa6..de475fb26ff4 100644
--- a/sys/netiso/clnp_debug.c
+++ b/sys/netiso/clnp_debug.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)clnp_debug.c 8.1 (Berkeley) 6/10/93
- * $Id: clnp_debug.c,v 1.2 1994/08/02 07:49:35 davidg Exp $
+ * $Id: clnp_debug.c,v 1.3 1995/05/30 08:10:14 rgrimes Exp $
*/
/***********************************************************
@@ -60,7 +60,7 @@ SOFTWARE.
/*
* ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
*/
-/* $Header: /home/ncvs/src/sys/netiso/clnp_debug.c,v 1.2 1994/08/02 07:49:35 davidg Exp $ */
+/* $Header: /home/ncvs/src/sys/netiso/clnp_debug.c,v 1.3 1995/05/30 08:10:14 rgrimes Exp $ */
/* $Source: /home/ncvs/src/sys/netiso/clnp_debug.c,v $ */
#include <sys/param.h>
diff --git a/sys/netiso/clnp_er.c b/sys/netiso/clnp_er.c
index ca12308dde17..1df3ebfa5def 100644
--- a/sys/netiso/clnp_er.c
+++ b/sys/netiso/clnp_er.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)clnp_er.c 8.1 (Berkeley) 6/10/93
- * $Id: clnp_er.c,v 1.3 1994/11/15 14:26:10 bde Exp $
+ * $Id: clnp_er.c,v 1.4 1995/05/30 08:10:15 rgrimes Exp $
*/
/***********************************************************
@@ -60,7 +60,7 @@ SOFTWARE.
/*
* ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
*/
-/* $Header: /home/ncvs/src/sys/netiso/clnp_er.c,v 1.3 1994/11/15 14:26:10 bde Exp $ */
+/* $Header: /home/ncvs/src/sys/netiso/clnp_er.c,v 1.4 1995/05/30 08:10:15 rgrimes Exp $ */
/* $Source: /home/ncvs/src/sys/netiso/clnp_er.c,v $ */
#include <sys/param.h>
diff --git a/sys/netiso/clnp_frag.c b/sys/netiso/clnp_frag.c
index 69c92a5b8c1a..d10b94ab8258 100644
--- a/sys/netiso/clnp_frag.c
+++ b/sys/netiso/clnp_frag.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)clnp_frag.c 8.1 (Berkeley) 6/10/93
- * $Id: clnp_frag.c,v 1.2 1994/08/02 07:49:37 davidg Exp $
+ * $Id: clnp_frag.c,v 1.3 1995/05/30 08:10:17 rgrimes Exp $
*/
/***********************************************************
@@ -60,7 +60,7 @@ SOFTWARE.
/*
* ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
*/
-/* $Header: /home/ncvs/src/sys/netiso/clnp_frag.c,v 1.2 1994/08/02 07:49:37 davidg Exp $ */
+/* $Header: /home/ncvs/src/sys/netiso/clnp_frag.c,v 1.3 1995/05/30 08:10:17 rgrimes Exp $ */
/* $Source: /home/ncvs/src/sys/netiso/clnp_frag.c,v $ */
#include <sys/param.h>
diff --git a/sys/netiso/clnp_input.c b/sys/netiso/clnp_input.c
index c67df925bb3f..afefeac758e6 100644
--- a/sys/netiso/clnp_input.c
+++ b/sys/netiso/clnp_input.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)clnp_input.c 8.1 (Berkeley) 6/10/93
- * $Id: clnp_input.c,v 1.5 1995/05/11 00:13:20 wollman Exp $
+ * $Id: clnp_input.c,v 1.6 1995/05/30 08:10:19 rgrimes Exp $
*/
/***********************************************************
@@ -60,7 +60,7 @@ SOFTWARE.
/*
* ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
*/
-/* $Header: /home/ncvs/src/sys/netiso/clnp_input.c,v 1.5 1995/05/11 00:13:20 wollman Exp $ */
+/* $Header: /home/ncvs/src/sys/netiso/clnp_input.c,v 1.6 1995/05/30 08:10:19 rgrimes Exp $ */
/* $Source: /home/ncvs/src/sys/netiso/clnp_input.c,v $ */
#include <sys/param.h>
diff --git a/sys/netiso/clnp_options.c b/sys/netiso/clnp_options.c
index bac8b5b8da67..8a1731bcedc8 100644
--- a/sys/netiso/clnp_options.c
+++ b/sys/netiso/clnp_options.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)clnp_options.c 8.1 (Berkeley) 6/10/93
- * $Id: clnp_options.c,v 1.2 1994/08/02 07:49:40 davidg Exp $
+ * $Id: clnp_options.c,v 1.3 1995/05/30 08:10:20 rgrimes Exp $
*/
/***********************************************************
@@ -60,7 +60,7 @@ SOFTWARE.
/*
* ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
*/
-/* $Header: /home/ncvs/src/sys/netiso/clnp_options.c,v 1.2 1994/08/02 07:49:40 davidg Exp $ */
+/* $Header: /home/ncvs/src/sys/netiso/clnp_options.c,v 1.3 1995/05/30 08:10:20 rgrimes Exp $ */
/* $Source: /home/ncvs/src/sys/netiso/clnp_options.c,v $ */
#ifdef ISO
diff --git a/sys/netiso/clnp_output.c b/sys/netiso/clnp_output.c
index 579d923724c0..8fa6d55de6e5 100644
--- a/sys/netiso/clnp_output.c
+++ b/sys/netiso/clnp_output.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)clnp_output.c 8.1 (Berkeley) 6/10/93
- * $Id: clnp_output.c,v 1.3 1994/11/15 14:26:12 bde Exp $
+ * $Id: clnp_output.c,v 1.4 1995/05/30 08:10:22 rgrimes Exp $
*/
/***********************************************************
@@ -60,7 +60,7 @@ SOFTWARE.
/*
* ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
*/
-/* $Header: /home/ncvs/src/sys/netiso/clnp_output.c,v 1.3 1994/11/15 14:26:12 bde Exp $ */
+/* $Header: /home/ncvs/src/sys/netiso/clnp_output.c,v 1.4 1995/05/30 08:10:22 rgrimes Exp $ */
/* $Source: /home/ncvs/src/sys/netiso/clnp_output.c,v $ */
#include <sys/param.h>
diff --git a/sys/netiso/clnp_raw.c b/sys/netiso/clnp_raw.c
index ade1ba24cf7e..d8ad5de03cce 100644
--- a/sys/netiso/clnp_raw.c
+++ b/sys/netiso/clnp_raw.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)clnp_raw.c 8.1 (Berkeley) 6/10/93
- * $Id: clnp_raw.c,v 1.2 1994/08/02 07:49:44 davidg Exp $
+ * $Id: clnp_raw.c,v 1.3 1995/05/30 08:10:23 rgrimes Exp $
*/
/***********************************************************
@@ -60,7 +60,7 @@ SOFTWARE.
/*
* ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
*/
-/* $Header: /home/ncvs/src/sys/netiso/clnp_raw.c,v 1.2 1994/08/02 07:49:44 davidg Exp $ */
+/* $Header: /home/ncvs/src/sys/netiso/clnp_raw.c,v 1.3 1995/05/30 08:10:23 rgrimes Exp $ */
/* $Source: /home/ncvs/src/sys/netiso/clnp_raw.c,v $ */
#include <sys/param.h>
diff --git a/sys/netiso/clnp_stat.h b/sys/netiso/clnp_stat.h
index a6cdd0478f11..c3bf145694b9 100644
--- a/sys/netiso/clnp_stat.h
+++ b/sys/netiso/clnp_stat.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)clnp_stat.h 8.1 (Berkeley) 6/10/93
- * $Id: clnp_stat.h,v 1.3 1994/08/21 06:14:13 paul Exp $
+ * $Id: clnp_stat.h,v 1.4 1995/05/30 08:10:24 rgrimes Exp $
*/
#ifndef _NETISO_CLNP_STAT_H_
@@ -63,7 +63,7 @@ SOFTWARE.
/*
* ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
*/
-/* $Header: /home/ncvs/src/sys/netiso/clnp_stat.h,v 1.3 1994/08/21 06:14:13 paul Exp $ */
+/* $Header: /home/ncvs/src/sys/netiso/clnp_stat.h,v 1.4 1995/05/30 08:10:24 rgrimes Exp $ */
/* $Source: /home/ncvs/src/sys/netiso/clnp_stat.h,v $ */
struct clnp_stat {
diff --git a/sys/netiso/clnp_subr.c b/sys/netiso/clnp_subr.c
index 138871ef625d..8bedadbe0dca 100644
--- a/sys/netiso/clnp_subr.c
+++ b/sys/netiso/clnp_subr.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)clnp_subr.c 8.1 (Berkeley) 6/10/93
- * $Id: clnp_subr.c,v 1.2 1994/08/02 07:49:50 davidg Exp $
+ * $Id: clnp_subr.c,v 1.3 1995/05/30 08:10:26 rgrimes Exp $
*/
/***********************************************************
@@ -60,7 +60,7 @@ SOFTWARE.
/*
* ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
*/
-/* $Header: /home/ncvs/src/sys/netiso/clnp_subr.c,v 1.2 1994/08/02 07:49:50 davidg Exp $ */
+/* $Header: /home/ncvs/src/sys/netiso/clnp_subr.c,v 1.3 1995/05/30 08:10:26 rgrimes Exp $ */
/* $Source: /home/ncvs/src/sys/netiso/clnp_subr.c,v $ */
#ifdef ISO
diff --git a/sys/netiso/clnp_timer.c b/sys/netiso/clnp_timer.c
index 401d35866cf8..6bddeae241d2 100644
--- a/sys/netiso/clnp_timer.c
+++ b/sys/netiso/clnp_timer.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)clnp_timer.c 8.1 (Berkeley) 6/10/93
- * $Id: clnp_timer.c,v 1.3 1994/11/15 14:26:13 bde Exp $
+ * $Id: clnp_timer.c,v 1.4 1995/05/30 08:10:27 rgrimes Exp $
*/
/***********************************************************
@@ -60,7 +60,7 @@ SOFTWARE.
/*
* ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
*/
-/* $Header: /home/ncvs/src/sys/netiso/clnp_timer.c,v 1.3 1994/11/15 14:26:13 bde Exp $ */
+/* $Header: /home/ncvs/src/sys/netiso/clnp_timer.c,v 1.4 1995/05/30 08:10:27 rgrimes Exp $ */
/* $Source: /home/ncvs/src/sys/netiso/clnp_timer.c,v $ */
#include <sys/param.h>
diff --git a/sys/netiso/cltp_usrreq.c b/sys/netiso/cltp_usrreq.c
index 7b95f93bf087..385ca5cd661a 100644
--- a/sys/netiso/cltp_usrreq.c
+++ b/sys/netiso/cltp_usrreq.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)cltp_usrreq.c 8.1 (Berkeley) 6/10/93
- * $Id: cltp_usrreq.c,v 1.3 1994/11/15 14:26:14 bde Exp $
+ * $Id: cltp_usrreq.c,v 1.4 1995/05/30 08:10:29 rgrimes Exp $
*/
#ifndef CLTPOVAL_SRC /* XXX -- till files gets changed */
diff --git a/sys/netiso/cltp_var.h b/sys/netiso/cltp_var.h
index 122a272b3dd7..5b393e76a2bf 100644
--- a/sys/netiso/cltp_var.h
+++ b/sys/netiso/cltp_var.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)cltp_var.h 8.1 (Berkeley) 6/10/93
- * $Id: cltp_var.h,v 1.2 1994/08/02 07:49:58 davidg Exp $
+ * $Id: cltp_var.h,v 1.3 1994/08/21 06:14:14 paul Exp $
*/
#ifndef _NETISO_CLTP_VAR_H_
diff --git a/sys/netiso/cons.h b/sys/netiso/cons.h
index ecaa3741b5d9..ad089dae7ad4 100644
--- a/sys/netiso/cons.h
+++ b/sys/netiso/cons.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)cons.h 8.1 (Berkeley) 6/10/93
- * $Id: cons.h,v 1.3 1994/08/21 06:14:15 paul Exp $
+ * $Id: cons.h,v 1.4 1995/05/30 08:10:30 rgrimes Exp $
*/
#ifndef _NETISO_CONS_H_
@@ -64,7 +64,7 @@ SOFTWARE.
* ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
*/
/*
- * $Header: /home/ncvs/src/sys/netiso/cons.h,v 1.3 1994/08/21 06:14:15 paul Exp $
+ * $Header: /home/ncvs/src/sys/netiso/cons.h,v 1.4 1995/05/30 08:10:30 rgrimes Exp $
* $Source: /home/ncvs/src/sys/netiso/cons.h,v $
*
* interface between TP and CONS
diff --git a/sys/netiso/cons_pcb.h b/sys/netiso/cons_pcb.h
index 7a3b52f416d9..a70d9188cca5 100644
--- a/sys/netiso/cons_pcb.h
+++ b/sys/netiso/cons_pcb.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)cons_pcb.h 8.1 (Berkeley) 6/10/93
- * $Id: cons_pcb.h,v 1.3 1994/08/21 06:14:16 paul Exp $
+ * $Id: cons_pcb.h,v 1.4 1995/05/30 08:10:31 rgrimes Exp $
*/
#ifndef _NETISO_CONS_PCB_H_
@@ -63,7 +63,7 @@ SOFTWARE.
/*
* ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
*/
-/* $Header: /home/ncvs/src/sys/netiso/cons_pcb.h,v 1.3 1994/08/21 06:14:16 paul Exp $ */
+/* $Header: /home/ncvs/src/sys/netiso/cons_pcb.h,v 1.4 1995/05/30 08:10:31 rgrimes Exp $ */
/* $Source: /home/ncvs/src/sys/netiso/cons_pcb.h,v $ */
/*
diff --git a/sys/netiso/eonvar.h b/sys/netiso/eonvar.h
index 8b005329b34f..78b8a0ec27f0 100644
--- a/sys/netiso/eonvar.h
+++ b/sys/netiso/eonvar.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)eonvar.h 8.1 (Berkeley) 6/10/93
- * $Id: eonvar.h,v 1.3 1994/08/21 06:14:17 paul Exp $
+ * $Id: eonvar.h,v 1.4 1995/05/30 08:10:33 rgrimes Exp $
*/
#ifndef _NETISO_EONVAR_H_
diff --git a/sys/netiso/esis.c b/sys/netiso/esis.c
index f62de5d41012..2dbcb06845f4 100644
--- a/sys/netiso/esis.c
+++ b/sys/netiso/esis.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)esis.c 8.1 (Berkeley) 6/10/93
- * $Id: esis.c,v 1.3 1994/12/13 22:33:03 wollman Exp $
+ * $Id: esis.c,v 1.4 1995/05/30 08:10:34 rgrimes Exp $
*/
/***********************************************************
diff --git a/sys/netiso/esis.h b/sys/netiso/esis.h
index 400d120387d6..d2601f19cc44 100644
--- a/sys/netiso/esis.h
+++ b/sys/netiso/esis.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)esis.h 8.1 (Berkeley) 6/10/93
- * $Id: esis.h,v 1.3 1994/08/21 06:14:18 paul Exp $
+ * $Id: esis.h,v 1.4 1995/05/30 08:10:36 rgrimes Exp $
*/
#ifndef _NETISO_ESIS_H_
@@ -64,7 +64,7 @@ SOFTWARE.
* ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
*/
/*
- * $Header: /home/ncvs/src/sys/netiso/esis.h,v 1.3 1994/08/21 06:14:18 paul Exp $
+ * $Header: /home/ncvs/src/sys/netiso/esis.h,v 1.4 1995/05/30 08:10:36 rgrimes Exp $
* $Source: /home/ncvs/src/sys/netiso/esis.h,v $
*/
diff --git a/sys/netiso/idrp_usrreq.c b/sys/netiso/idrp_usrreq.c
index 8e3a3d213844..e0de340c6156 100644
--- a/sys/netiso/idrp_usrreq.c
+++ b/sys/netiso/idrp_usrreq.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)idrp_usrreq.c 8.1 (Berkeley) 6/10/93
- * $Id: idrp_usrreq.c,v 1.2 1994/08/02 07:50:16 davidg Exp $
+ * $Id: idrp_usrreq.c,v 1.3 1995/05/30 08:10:38 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/netiso/if_cons.c b/sys/netiso/if_cons.c
index 28559b7bd1e5..ae4ad51e8637 100644
--- a/sys/netiso/if_cons.c
+++ b/sys/netiso/if_cons.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)if_cons.c 8.1 (Berkeley) 6/10/93
- * $Id: if_cons.c,v 1.3 1994/12/13 22:33:04 wollman Exp $
+ * $Id: if_cons.c,v 1.4 1995/05/30 08:10:39 rgrimes Exp $
*/
/***********************************************************
@@ -61,7 +61,7 @@ SOFTWARE.
* ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
*/
/*
- * $Header: /home/ncvs/src/sys/netiso/if_cons.c,v 1.3 1994/12/13 22:33:04 wollman Exp $
+ * $Header: /home/ncvs/src/sys/netiso/if_cons.c,v 1.4 1995/05/30 08:10:39 rgrimes Exp $
* $Source: /home/ncvs/src/sys/netiso/if_cons.c,v $
*
* cons.c - Connection Oriented Network Service:
diff --git a/sys/netiso/if_eon.c b/sys/netiso/if_eon.c
index c8ac5997be30..f5e972d60dac 100644
--- a/sys/netiso/if_eon.c
+++ b/sys/netiso/if_eon.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)if_eon.c 8.1 (Berkeley) 6/10/93
- * $Id: if_eon.c,v 1.3 1995/04/26 18:10:57 pst Exp $
+ * $Id: if_eon.c,v 1.4 1995/05/30 08:10:45 rgrimes Exp $
*/
/***********************************************************
@@ -61,7 +61,7 @@ SOFTWARE.
* ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
*/
/*
- * $Header: /home/ncvs/src/sys/netiso/if_eon.c,v 1.3 1995/04/26 18:10:57 pst Exp $
+ * $Header: /home/ncvs/src/sys/netiso/if_eon.c,v 1.4 1995/05/30 08:10:45 rgrimes Exp $
* $Source: /home/ncvs/src/sys/netiso/if_eon.c,v $
*
* EON rfc
diff --git a/sys/netiso/iso.c b/sys/netiso/iso.c
index 447fb2127988..bccba097cfeb 100644
--- a/sys/netiso/iso.c
+++ b/sys/netiso/iso.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)iso.c 8.2 (Berkeley) 11/15/93
- * $Id: iso.c,v 1.3 1995/04/26 18:10:58 pst Exp $
+ * $Id: iso.c,v 1.4 1995/05/30 08:10:46 rgrimes Exp $
*/
/***********************************************************
@@ -61,7 +61,7 @@ SOFTWARE.
* ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
*/
/*
- * $Header: /home/ncvs/src/sys/netiso/iso.c,v 1.3 1995/04/26 18:10:58 pst Exp $
+ * $Header: /home/ncvs/src/sys/netiso/iso.c,v 1.4 1995/05/30 08:10:46 rgrimes Exp $
* $Source: /home/ncvs/src/sys/netiso/iso.c,v $
*
* iso.c: miscellaneous routines to support the iso address family
diff --git a/sys/netiso/iso.h b/sys/netiso/iso.h
index 1ac1f1353b36..ebb912ddc621 100644
--- a/sys/netiso/iso.h
+++ b/sys/netiso/iso.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)iso.h 8.1 (Berkeley) 6/10/93
- * $Id: iso.h,v 1.3 1994/08/21 06:14:19 paul Exp $
+ * $Id: iso.h,v 1.4 1995/05/30 08:10:49 rgrimes Exp $
*/
#ifndef _NETISO_ISO_H_
@@ -63,7 +63,7 @@ SOFTWARE.
/*
* ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
*/
-/* $Header: /home/ncvs/src/sys/netiso/iso.h,v 1.3 1994/08/21 06:14:19 paul Exp $ */
+/* $Header: /home/ncvs/src/sys/netiso/iso.h,v 1.4 1995/05/30 08:10:49 rgrimes Exp $ */
/* $Source: /home/ncvs/src/sys/netiso/iso.h,v $ */
/*
diff --git a/sys/netiso/iso_chksum.c b/sys/netiso/iso_chksum.c
index 19a3b65af687..11705c390102 100644
--- a/sys/netiso/iso_chksum.c
+++ b/sys/netiso/iso_chksum.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)iso_chksum.c 8.1 (Berkeley) 6/10/93
- * $Id: iso_chksum.c,v 1.2 1994/08/02 07:50:31 davidg Exp $
+ * $Id: iso_chksum.c,v 1.3 1995/05/30 08:10:50 rgrimes Exp $
*/
/***********************************************************
@@ -61,7 +61,7 @@ SOFTWARE.
* ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
*/
/*
- * $Header: /home/ncvs/src/sys/netiso/iso_chksum.c,v 1.2 1994/08/02 07:50:31 davidg Exp $
+ * $Header: /home/ncvs/src/sys/netiso/iso_chksum.c,v 1.3 1995/05/30 08:10:50 rgrimes Exp $
* $Source: /home/ncvs/src/sys/netiso/iso_chksum.c,v $
*
* ISO CHECKSUM
diff --git a/sys/netiso/iso_errno.h b/sys/netiso/iso_errno.h
index 7f03492afec2..ec7aaea82e98 100644
--- a/sys/netiso/iso_errno.h
+++ b/sys/netiso/iso_errno.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)iso_errno.h 8.1 (Berkeley) 6/10/93
- * $Id: iso_errno.h,v 1.4 1994/11/27 20:58:30 ats Exp $
+ * $Id: iso_errno.h,v 1.5 1995/05/30 08:10:52 rgrimes Exp $
*/
#ifndef _NETISO_ISO_ERRNO_H_
diff --git a/sys/netiso/iso_pcb.c b/sys/netiso/iso_pcb.c
index 613f2c4e0d0b..8e5540e5f336 100644
--- a/sys/netiso/iso_pcb.c
+++ b/sys/netiso/iso_pcb.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)iso_pcb.c 8.1 (Berkeley) 6/10/93
- * $Id: iso_pcb.c,v 1.2 1994/08/02 07:50:37 davidg Exp $
+ * $Id: iso_pcb.c,v 1.3 1995/05/30 08:10:53 rgrimes Exp $
*/
/***********************************************************
@@ -61,7 +61,7 @@ SOFTWARE.
* ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
*/
/*
- * $Header: /home/ncvs/src/sys/netiso/iso_pcb.c,v 1.2 1994/08/02 07:50:37 davidg Exp $
+ * $Header: /home/ncvs/src/sys/netiso/iso_pcb.c,v 1.3 1995/05/30 08:10:53 rgrimes Exp $
* $Source: /home/ncvs/src/sys/netiso/iso_pcb.c,v $
*
* Iso address family net-layer(s) pcb stuff. NEH 1/29/87
diff --git a/sys/netiso/iso_pcb.h b/sys/netiso/iso_pcb.h
index 80fc29a193a0..5a7a67390f07 100644
--- a/sys/netiso/iso_pcb.h
+++ b/sys/netiso/iso_pcb.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)iso_pcb.h 8.1 (Berkeley) 6/10/93
- * $Id: iso_pcb.h,v 1.3 1994/08/21 06:14:20 paul Exp $
+ * $Id: iso_pcb.h,v 1.4 1995/05/30 08:10:55 rgrimes Exp $
*/
#ifndef _NETISO_ISO_PCB_H_
@@ -63,7 +63,7 @@ SOFTWARE.
/*
* ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
*/
-/* $Header: /home/ncvs/src/sys/netiso/iso_pcb.h,v 1.3 1994/08/21 06:14:20 paul Exp $ */
+/* $Header: /home/ncvs/src/sys/netiso/iso_pcb.h,v 1.4 1995/05/30 08:10:55 rgrimes Exp $ */
/* $Source: /home/ncvs/src/sys/netiso/iso_pcb.h,v $ */
#define MAXX25CRUDLEN 16 /* 16 bytes of call request user data */
diff --git a/sys/netiso/iso_proto.c b/sys/netiso/iso_proto.c
index 86d6cf26089f..57377c9449a8 100644
--- a/sys/netiso/iso_proto.c
+++ b/sys/netiso/iso_proto.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)iso_proto.c 8.1 (Berkeley) 6/10/93
- * $Id: iso_proto.c,v 1.3 1995/05/11 00:13:20 wollman Exp $
+ * $Id: iso_proto.c,v 1.4 1995/05/30 08:10:56 rgrimes Exp $
*/
/***********************************************************
@@ -60,7 +60,7 @@ SOFTWARE.
/*
* ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
*/
-/* $Header: /home/ncvs/src/sys/netiso/iso_proto.c,v 1.3 1995/05/11 00:13:20 wollman Exp $
+/* $Header: /home/ncvs/src/sys/netiso/iso_proto.c,v 1.4 1995/05/30 08:10:56 rgrimes Exp $
* $Source: /home/ncvs/src/sys/netiso/iso_proto.c,v $
*
* iso_proto.c : protocol switch tables in the ISO domain
diff --git a/sys/netiso/iso_snpac.c b/sys/netiso/iso_snpac.c
index 3650231162d3..965b226452d4 100644
--- a/sys/netiso/iso_snpac.c
+++ b/sys/netiso/iso_snpac.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)iso_snpac.c 8.1 (Berkeley) 6/10/93
- * $Id: iso_snpac.c,v 1.3 1994/12/13 22:33:05 wollman Exp $
+ * $Id: iso_snpac.c,v 1.4 1995/05/30 08:10:58 rgrimes Exp $
*/
/***********************************************************
@@ -60,7 +60,7 @@ SOFTWARE.
/*
* ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
*/
-/* $Header: /home/ncvs/src/sys/netiso/iso_snpac.c,v 1.3 1994/12/13 22:33:05 wollman Exp $ */
+/* $Header: /home/ncvs/src/sys/netiso/iso_snpac.c,v 1.4 1995/05/30 08:10:58 rgrimes Exp $ */
/* $Source: /home/ncvs/src/sys/netiso/iso_snpac.c,v $ */
#ifdef ISO
diff --git a/sys/netiso/iso_snpac.h b/sys/netiso/iso_snpac.h
index e817b818b5a0..0d9e48ee397b 100644
--- a/sys/netiso/iso_snpac.h
+++ b/sys/netiso/iso_snpac.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)iso_snpac.h 8.1 (Berkeley) 6/10/93
- * $Id: iso_snpac.h,v 1.4 1995/03/28 07:57:14 bde Exp $
+ * $Id: iso_snpac.h,v 1.5 1995/05/30 08:10:59 rgrimes Exp $
*/
#ifndef _NETISO_ISO_SNPAC_H_
diff --git a/sys/netiso/iso_var.h b/sys/netiso/iso_var.h
index b87499509ce5..67068ddc2f06 100644
--- a/sys/netiso/iso_var.h
+++ b/sys/netiso/iso_var.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)iso_var.h 8.1 (Berkeley) 6/10/93
- * $Id: iso_var.h,v 1.4 1995/03/16 18:15:21 bde Exp $
+ * $Id: iso_var.h,v 1.5 1995/05/30 08:11:01 rgrimes Exp $
*/
#ifndef _NETISO_ISO_VAR_H_
@@ -63,7 +63,7 @@ SOFTWARE.
/*
* ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
*/
-/* $Header: /home/ncvs/src/sys/netiso/iso_var.h,v 1.4 1995/03/16 18:15:21 bde Exp $
+/* $Header: /home/ncvs/src/sys/netiso/iso_var.h,v 1.5 1995/05/30 08:11:01 rgrimes Exp $
* $Source: /home/ncvs/src/sys/netiso/iso_var.h,v $
*/
diff --git a/sys/netiso/tp.trans b/sys/netiso/tp.trans
index edefc769b816..4fcfd5f19889 100644
--- a/sys/netiso/tp.trans
+++ b/sys/netiso/tp.trans
@@ -60,7 +60,7 @@ SOFTWARE.
/*
* ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
*/
-/* $Header: tp.trans,v 5.1 88/10/12 12:22:07 root Exp $
+/* $Header: /home/ncvs/src/sys/netiso/tp.trans,v 1.1.1.1 1994/05/24 10:07:31 rgrimes Exp $
*
* Transition file for TP.
*
diff --git a/sys/netiso/tp_astring.c b/sys/netiso/tp_astring.c
index 5bfa71115102..acf2d5b4b139 100644
--- a/sys/netiso/tp_astring.c
+++ b/sys/netiso/tp_astring.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tp_astring.c 8.1 (Berkeley) 6/10/93
- * $Id$
+ * $Id: tp_astring.c,v 1.2 1994/08/02 07:50:51 davidg Exp $
*/
char *tp_sstring[] = {
diff --git a/sys/netiso/tp_clnp.h b/sys/netiso/tp_clnp.h
index 7e54a6739731..a8a132ff62ec 100644
--- a/sys/netiso/tp_clnp.h
+++ b/sys/netiso/tp_clnp.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tp_clnp.h 8.1 (Berkeley) 6/10/93
- * $Id: tp_clnp.h,v 1.3 1994/08/21 06:14:23 paul Exp $
+ * $Id: tp_clnp.h,v 1.4 1995/05/30 08:11:02 rgrimes Exp $
*/
#ifndef _NETISO_TP_CLNP_H_
@@ -66,7 +66,7 @@ SOFTWARE.
/*
* ARGO TP
*
- * $Header: /home/ncvs/src/sys/netiso/tp_clnp.h,v 1.3 1994/08/21 06:14:23 paul Exp $
+ * $Header: /home/ncvs/src/sys/netiso/tp_clnp.h,v 1.4 1995/05/30 08:11:02 rgrimes Exp $
* $Source: /home/ncvs/src/sys/netiso/tp_clnp.h,v $
*
* AF_ISO net-dependent structures and include files
diff --git a/sys/netiso/tp_cons.c b/sys/netiso/tp_cons.c
index ca2dc328a3c3..3f2ce3f10077 100644
--- a/sys/netiso/tp_cons.c
+++ b/sys/netiso/tp_cons.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tp_cons.c 8.1 (Berkeley) 6/10/93
- * $Id: tp_cons.c,v 1.3 1994/11/15 14:26:15 bde Exp $
+ * $Id: tp_cons.c,v 1.4 1995/05/30 08:11:04 rgrimes Exp $
*/
/***********************************************************
@@ -62,7 +62,7 @@ SOFTWARE.
*/
/*
* ARGO TP
- * $Header: /home/ncvs/src/sys/netiso/tp_cons.c,v 1.3 1994/11/15 14:26:15 bde Exp $
+ * $Header: /home/ncvs/src/sys/netiso/tp_cons.c,v 1.4 1995/05/30 08:11:04 rgrimes Exp $
* $Source: /home/ncvs/src/sys/netiso/tp_cons.c,v $
*
* Here is where you find the iso- and cons-dependent code. We've tried
diff --git a/sys/netiso/tp_driver.c b/sys/netiso/tp_driver.c
index 5c42447896a2..124731a614d6 100644
--- a/sys/netiso/tp_driver.c
+++ b/sys/netiso/tp_driver.c
@@ -1,5 +1,5 @@
/*
- * $Id: tp_driver.c,v 1.2 1994/08/02 07:50:59 davidg Exp $
+ * $Id: tp_driver.c,v 1.3 1995/05/30 08:11:05 rgrimes Exp $
*/
#define _XEBEC_PG static
diff --git a/sys/netiso/tp_emit.c b/sys/netiso/tp_emit.c
index d26cea088097..84570905c376 100644
--- a/sys/netiso/tp_emit.c
+++ b/sys/netiso/tp_emit.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tp_emit.c 8.1 (Berkeley) 6/10/93
- * $Id: tp_emit.c,v 1.2 1994/08/02 07:51:02 davidg Exp $
+ * $Id: tp_emit.c,v 1.3 1995/05/30 08:11:07 rgrimes Exp $
*/
/***********************************************************
@@ -63,7 +63,7 @@ SOFTWARE.
/*
* ARGO TP
*
- * $Header: /home/ncvs/src/sys/netiso/tp_emit.c,v 1.2 1994/08/02 07:51:02 davidg Exp $
+ * $Header: /home/ncvs/src/sys/netiso/tp_emit.c,v 1.3 1995/05/30 08:11:07 rgrimes Exp $
* $Source: /home/ncvs/src/sys/netiso/tp_emit.c,v $
*
* This file contains tp_emit() and tp_error_emit(), which
diff --git a/sys/netiso/tp_events.h b/sys/netiso/tp_events.h
index c425ceedb03f..f37640ba1774 100644
--- a/sys/netiso/tp_events.h
+++ b/sys/netiso/tp_events.h
@@ -1,5 +1,5 @@
/*
- * $Id: tp_events.h,v 1.3 1994/08/21 06:14:24 paul Exp $
+ * $Id: tp_events.h,v 1.4 1995/05/30 08:11:09 rgrimes Exp $
*/
#ifndef _NETISO_TP_EVENTS_H_
diff --git a/sys/netiso/tp_inet.c b/sys/netiso/tp_inet.c
index d8a9a4284aaa..87fd7616895f 100644
--- a/sys/netiso/tp_inet.c
+++ b/sys/netiso/tp_inet.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tp_inet.c 8.1 (Berkeley) 6/10/93
- * $Id: tp_inet.c,v 1.4 1995/04/26 21:32:36 pst Exp $
+ * $Id: tp_inet.c,v 1.5 1995/05/30 08:11:10 rgrimes Exp $
*/
/***********************************************************
@@ -62,7 +62,7 @@ SOFTWARE.
*/
/*
* ARGO TP
- * $Header: /home/ncvs/src/sys/netiso/tp_inet.c,v 1.4 1995/04/26 21:32:36 pst Exp $
+ * $Header: /home/ncvs/src/sys/netiso/tp_inet.c,v 1.5 1995/05/30 08:11:10 rgrimes Exp $
* $Source: /home/ncvs/src/sys/netiso/tp_inet.c,v $
*
* Here is where you find the inet-dependent code. We've tried
diff --git a/sys/netiso/tp_input.c b/sys/netiso/tp_input.c
index 2caa2bf036e3..b0bb28a9b398 100644
--- a/sys/netiso/tp_input.c
+++ b/sys/netiso/tp_input.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tp_input.c 8.1 (Berkeley) 6/10/93
- * $Id: tp_input.c,v 1.2 1994/08/02 07:51:11 davidg Exp $
+ * $Id: tp_input.c,v 1.3 1995/05/30 08:11:12 rgrimes Exp $
*/
/***********************************************************
@@ -63,7 +63,7 @@ SOFTWARE.
/*
* ARGO TP
*
- * $Header: /home/ncvs/src/sys/netiso/tp_input.c,v 1.2 1994/08/02 07:51:11 davidg Exp $
+ * $Header: /home/ncvs/src/sys/netiso/tp_input.c,v 1.3 1995/05/30 08:11:12 rgrimes Exp $
* $Source: /home/ncvs/src/sys/netiso/tp_input.c,v $
*
* tp_input() gets an mbuf chain from ip. Actually, not directly
diff --git a/sys/netiso/tp_ip.h b/sys/netiso/tp_ip.h
index 865e2fde69de..433ba968e4e4 100644
--- a/sys/netiso/tp_ip.h
+++ b/sys/netiso/tp_ip.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tp_ip.h 8.1 (Berkeley) 6/10/93
- * $Id: tp_ip.h,v 1.3 1994/08/21 06:14:24 paul Exp $
+ * $Id: tp_ip.h,v 1.4 1995/05/30 08:11:13 rgrimes Exp $
*/
#ifndef _NETISO_TP_IP_H_
@@ -66,7 +66,7 @@ SOFTWARE.
/*
* ARGO TP
*
- * $Header: /home/ncvs/src/sys/netiso/tp_ip.h,v 1.3 1994/08/21 06:14:24 paul Exp $
+ * $Header: /home/ncvs/src/sys/netiso/tp_ip.h,v 1.4 1995/05/30 08:11:13 rgrimes Exp $
* $Source: /home/ncvs/src/sys/netiso/tp_ip.h,v $
*
* internet IP-dependent structures and include files
diff --git a/sys/netiso/tp_iso.c b/sys/netiso/tp_iso.c
index b62debedf2f0..74b33517f8ca 100644
--- a/sys/netiso/tp_iso.c
+++ b/sys/netiso/tp_iso.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tp_iso.c 8.1 (Berkeley) 6/10/93
- * $Id: tp_iso.c,v 1.2 1994/08/02 07:51:14 davidg Exp $
+ * $Id: tp_iso.c,v 1.3 1995/05/30 08:11:18 rgrimes Exp $
*/
/***********************************************************
@@ -62,7 +62,7 @@ SOFTWARE.
*/
/*
* ARGO TP
- * $Header: /home/ncvs/src/sys/netiso/tp_iso.c,v 1.2 1994/08/02 07:51:14 davidg Exp $
+ * $Header: /home/ncvs/src/sys/netiso/tp_iso.c,v 1.3 1995/05/30 08:11:18 rgrimes Exp $
* $Source: /home/ncvs/src/sys/netiso/tp_iso.c,v $
*
* Here is where you find the iso-dependent code. We've tried
diff --git a/sys/netiso/tp_meas.c b/sys/netiso/tp_meas.c
index f7bbecb7d017..eaf73ff04666 100644
--- a/sys/netiso/tp_meas.c
+++ b/sys/netiso/tp_meas.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tp_meas.c 8.1 (Berkeley) 6/10/93
- * $Id: tp_meas.c,v 1.2 1994/08/02 07:51:15 davidg Exp $
+ * $Id: tp_meas.c,v 1.3 1995/05/30 08:11:20 rgrimes Exp $
*/
/***********************************************************
@@ -61,7 +61,7 @@ SOFTWARE.
* ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
*/
/*
- * $Header: /home/ncvs/src/sys/netiso/tp_meas.c,v 1.2 1994/08/02 07:51:15 davidg Exp $
+ * $Header: /home/ncvs/src/sys/netiso/tp_meas.c,v 1.3 1995/05/30 08:11:20 rgrimes Exp $
* $Source: /home/ncvs/src/sys/netiso/tp_meas.c,v $
*
* tp_meas.c : create a performance measurement event
diff --git a/sys/netiso/tp_meas.h b/sys/netiso/tp_meas.h
index ec38744d04b7..653fed9d4ccf 100644
--- a/sys/netiso/tp_meas.h
+++ b/sys/netiso/tp_meas.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tp_meas.h 8.1 (Berkeley) 6/10/93
- * $Id: tp_meas.h,v 1.3 1994/08/21 06:14:25 paul Exp $
+ * $Id: tp_meas.h,v 1.4 1995/05/30 08:11:21 rgrimes Exp $
*/
#ifndef _NETISO_TP_MEAS_H_
diff --git a/sys/netiso/tp_output.c b/sys/netiso/tp_output.c
index bfa938b13012..184f6d12a417 100644
--- a/sys/netiso/tp_output.c
+++ b/sys/netiso/tp_output.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tp_output.c 8.1 (Berkeley) 6/10/93
- * $Id: tp_output.c,v 1.3 1995/04/26 21:32:37 pst Exp $
+ * $Id: tp_output.c,v 1.4 1995/05/30 08:11:23 rgrimes Exp $
*/
/***********************************************************
@@ -63,7 +63,7 @@ SOFTWARE.
/*
* ARGO TP
*
- * $Header: /home/ncvs/src/sys/netiso/tp_output.c,v 1.3 1995/04/26 21:32:37 pst Exp $
+ * $Header: /home/ncvs/src/sys/netiso/tp_output.c,v 1.4 1995/05/30 08:11:23 rgrimes Exp $
* $Source: /home/ncvs/src/sys/netiso/tp_output.c,v $
*
* In here is tp_ctloutput(), the guy called by [sg]etsockopt(),
diff --git a/sys/netiso/tp_param.h b/sys/netiso/tp_param.h
index 6b0195314b9c..9603543e5b9e 100644
--- a/sys/netiso/tp_param.h
+++ b/sys/netiso/tp_param.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tp_param.h 8.1 (Berkeley) 6/10/93
- * $Id: tp_param.h,v 1.3 1994/08/21 06:14:26 paul Exp $
+ * $Id: tp_param.h,v 1.4 1995/05/30 08:11:24 rgrimes Exp $
*/
#ifndef _NETISO_TP_PARAM_H_
@@ -66,7 +66,7 @@ SOFTWARE.
/*
* ARGO TP
*
- * $Header: /home/ncvs/src/sys/netiso/tp_param.h,v 1.3 1994/08/21 06:14:26 paul Exp $
+ * $Header: /home/ncvs/src/sys/netiso/tp_param.h,v 1.4 1995/05/30 08:11:24 rgrimes Exp $
* $Source: /home/ncvs/src/sys/netiso/tp_param.h,v $
*
*/
diff --git a/sys/netiso/tp_pcb.c b/sys/netiso/tp_pcb.c
index da34f3fa2402..c1a22122fef5 100644
--- a/sys/netiso/tp_pcb.c
+++ b/sys/netiso/tp_pcb.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tp_pcb.c 8.1 (Berkeley) 6/10/93
- * $Id: tp_pcb.c,v 1.4 1995/04/26 21:32:38 pst Exp $
+ * $Id: tp_pcb.c,v 1.5 1995/05/30 08:11:26 rgrimes Exp $
*/
/***********************************************************
@@ -63,7 +63,7 @@ SOFTWARE.
/*
* ARGO TP
*
- * $Header: /home/ncvs/src/sys/netiso/tp_pcb.c,v 1.4 1995/04/26 21:32:38 pst Exp $
+ * $Header: /home/ncvs/src/sys/netiso/tp_pcb.c,v 1.5 1995/05/30 08:11:26 rgrimes Exp $
* $Source: /home/ncvs/src/sys/netiso/tp_pcb.c,v $
*
*
diff --git a/sys/netiso/tp_pcb.h b/sys/netiso/tp_pcb.h
index 6322835dd379..afe012db6dd7 100644
--- a/sys/netiso/tp_pcb.h
+++ b/sys/netiso/tp_pcb.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tp_pcb.h 8.1 (Berkeley) 6/10/93
- * $Id: tp_pcb.h,v 1.4 1995/04/26 21:32:39 pst Exp $
+ * $Id: tp_pcb.h,v 1.5 1995/05/30 08:11:27 rgrimes Exp $
*/
#ifndef _NETISO_TP_PCB_H_
@@ -66,7 +66,7 @@ SOFTWARE.
/*
* ARGO TP
*
- * $Header: /home/ncvs/src/sys/netiso/tp_pcb.h,v 1.4 1995/04/26 21:32:39 pst Exp $
+ * $Header: /home/ncvs/src/sys/netiso/tp_pcb.h,v 1.5 1995/05/30 08:11:27 rgrimes Exp $
* $Source: /home/ncvs/src/sys/netiso/tp_pcb.h,v $
*
*
diff --git a/sys/netiso/tp_seq.h b/sys/netiso/tp_seq.h
index 7b8fcd3394ae..3c888d19c9b1 100644
--- a/sys/netiso/tp_seq.h
+++ b/sys/netiso/tp_seq.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tp_seq.h 8.1 (Berkeley) 6/10/93
- * $Id: tp_seq.h,v 1.3 1994/08/21 06:14:28 paul Exp $
+ * $Id: tp_seq.h,v 1.4 1995/05/30 08:11:29 rgrimes Exp $
*/
#ifndef _NETISO_TP_SEQ_H_
@@ -66,7 +66,7 @@ SOFTWARE.
/*
* ARGO TP
*
- * $Header: /home/ncvs/src/sys/netiso/tp_seq.h,v 1.3 1994/08/21 06:14:28 paul Exp $
+ * $Header: /home/ncvs/src/sys/netiso/tp_seq.h,v 1.4 1995/05/30 08:11:29 rgrimes Exp $
* $Source: /home/ncvs/src/sys/netiso/tp_seq.h,v $
*
* These macros perform sequence number arithmetic modulo (2**7 or 2**31).
diff --git a/sys/netiso/tp_stat.h b/sys/netiso/tp_stat.h
index e7c80fd22baa..87a24cb1ed48 100644
--- a/sys/netiso/tp_stat.h
+++ b/sys/netiso/tp_stat.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tp_stat.h 8.1 (Berkeley) 6/10/93
- * $Id: tp_stat.h,v 1.3 1994/08/21 06:14:28 paul Exp $
+ * $Id: tp_stat.h,v 1.4 1995/05/30 08:11:30 rgrimes Exp $
*/
#ifndef _NETISO_TP_STAT_H_
@@ -66,7 +66,7 @@ SOFTWARE.
/*
* ARGO TP
*
- * $Header: /home/ncvs/src/sys/netiso/tp_stat.h,v 1.3 1994/08/21 06:14:28 paul Exp $
+ * $Header: /home/ncvs/src/sys/netiso/tp_stat.h,v 1.4 1995/05/30 08:11:30 rgrimes Exp $
* $Source: /home/ncvs/src/sys/netiso/tp_stat.h,v $
*
* Here are the data structures in which the global
diff --git a/sys/netiso/tp_states.h b/sys/netiso/tp_states.h
index aff73fe78d27..a4e67b4cbf9e 100644
--- a/sys/netiso/tp_states.h
+++ b/sys/netiso/tp_states.h
@@ -1,5 +1,5 @@
/*
- * $Id: tp_states.h,v 1.3 1994/08/05 12:33:30 davidg Exp $
+ * $Id: tp_states.h,v 1.4 1994/08/21 06:14:29 paul Exp $
*/
#ifndef _NETISO_TP_STATES_H_
diff --git a/sys/netiso/tp_states.init b/sys/netiso/tp_states.init
index 89e53453866a..645397d967c4 100644
--- a/sys/netiso/tp_states.init
+++ b/sys/netiso/tp_states.init
@@ -1,5 +1,5 @@
-/* $Header$ */
-/* $Source$ */
+/* $Header: /home/ncvs/src/sys/netiso/tp_states.init,v 1.1.1.1 1994/05/24 10:07:29 rgrimes Exp $ */
+/* $Source: /home/ncvs/src/sys/netiso/tp_states.init,v $ */
{0x3,0x0},
{0x6,0x1},
{0x6,0x2},
diff --git a/sys/netiso/tp_subr.c b/sys/netiso/tp_subr.c
index 6125a0a60747..1d68ea0befc4 100644
--- a/sys/netiso/tp_subr.c
+++ b/sys/netiso/tp_subr.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tp_subr.c 8.1 (Berkeley) 6/10/93
- * $Id: tp_subr.c,v 1.3 1995/04/26 21:32:40 pst Exp $
+ * $Id: tp_subr.c,v 1.4 1995/05/30 08:11:32 rgrimes Exp $
*/
/***********************************************************
@@ -63,7 +63,7 @@ SOFTWARE.
/*
* ARGO TP
*
- * $Header: /home/ncvs/src/sys/netiso/tp_subr.c,v 1.3 1995/04/26 21:32:40 pst Exp $
+ * $Header: /home/ncvs/src/sys/netiso/tp_subr.c,v 1.4 1995/05/30 08:11:32 rgrimes Exp $
* $Source: /home/ncvs/src/sys/netiso/tp_subr.c,v $
*
* The main work of data transfer is done here.
diff --git a/sys/netiso/tp_subr2.c b/sys/netiso/tp_subr2.c
index 943d11bcff73..9333d2811786 100644
--- a/sys/netiso/tp_subr2.c
+++ b/sys/netiso/tp_subr2.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tp_subr2.c 8.1 (Berkeley) 6/10/93
- * $Id: tp_subr2.c,v 1.3 1995/04/26 21:32:41 pst Exp $
+ * $Id: tp_subr2.c,v 1.4 1995/05/30 08:11:34 rgrimes Exp $
*/
/***********************************************************
@@ -63,7 +63,7 @@ SOFTWARE.
/*
* ARGO TP
*
- * $Header: /home/ncvs/src/sys/netiso/tp_subr2.c,v 1.3 1995/04/26 21:32:41 pst Exp $
+ * $Header: /home/ncvs/src/sys/netiso/tp_subr2.c,v 1.4 1995/05/30 08:11:34 rgrimes Exp $
* $Source: /home/ncvs/src/sys/netiso/tp_subr2.c,v $
*
* Some auxiliary routines:
diff --git a/sys/netiso/tp_timer.c b/sys/netiso/tp_timer.c
index 6ccc615ff8a3..04702ae57fd4 100644
--- a/sys/netiso/tp_timer.c
+++ b/sys/netiso/tp_timer.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tp_timer.c 8.1 (Berkeley) 6/10/93
- * $Id: tp_timer.c,v 1.2 1994/08/02 07:51:27 davidg Exp $
+ * $Id: tp_timer.c,v 1.3 1995/05/30 08:11:35 rgrimes Exp $
*/
/***********************************************************
@@ -63,7 +63,7 @@ SOFTWARE.
/*
* ARGO TP
*
- * $Header: /home/ncvs/src/sys/netiso/tp_timer.c,v 1.2 1994/08/02 07:51:27 davidg Exp $
+ * $Header: /home/ncvs/src/sys/netiso/tp_timer.c,v 1.3 1995/05/30 08:11:35 rgrimes Exp $
* $Source: /home/ncvs/src/sys/netiso/tp_timer.c,v $
*
*/
diff --git a/sys/netiso/tp_timer.h b/sys/netiso/tp_timer.h
index 0894480546bb..a209857abdd3 100644
--- a/sys/netiso/tp_timer.h
+++ b/sys/netiso/tp_timer.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tp_timer.h 8.1 (Berkeley) 6/10/93
- * $Id: tp_timer.h,v 1.3 1994/08/21 06:14:30 paul Exp $
+ * $Id: tp_timer.h,v 1.4 1995/05/30 08:11:37 rgrimes Exp $
*/
#ifndef _NETISO_TP_TIMER_H_
@@ -66,7 +66,7 @@ SOFTWARE.
/*
* ARGO TP
*
- * $Header: /home/ncvs/src/sys/netiso/tp_timer.h,v 1.3 1994/08/21 06:14:30 paul Exp $
+ * $Header: /home/ncvs/src/sys/netiso/tp_timer.h,v 1.4 1995/05/30 08:11:37 rgrimes Exp $
* $Source: /home/ncvs/src/sys/netiso/tp_timer.h,v $
*
* ARGO TP
diff --git a/sys/netiso/tp_tpdu.h b/sys/netiso/tp_tpdu.h
index c9a36795323e..3599c228be69 100644
--- a/sys/netiso/tp_tpdu.h
+++ b/sys/netiso/tp_tpdu.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tp_tpdu.h 8.1 (Berkeley) 6/10/93
- * $Id: tp_tpdu.h,v 1.3 1994/08/21 06:14:31 paul Exp $
+ * $Id: tp_tpdu.h,v 1.4 1995/05/30 08:11:38 rgrimes Exp $
*/
#ifndef _NETISO_TP_TPDU_H_
@@ -66,7 +66,7 @@ SOFTWARE.
/*
* ARGO TP
*
- * $Header: /home/ncvs/src/sys/netiso/tp_tpdu.h,v 1.3 1994/08/21 06:14:31 paul Exp $
+ * $Header: /home/ncvs/src/sys/netiso/tp_tpdu.h,v 1.4 1995/05/30 08:11:38 rgrimes Exp $
* $Source: /home/ncvs/src/sys/netiso/tp_tpdu.h,v $
*
* This ghastly set of macros makes it possible to
diff --git a/sys/netiso/tp_trace.c b/sys/netiso/tp_trace.c
index a6f64ef06b34..64e3db046aa4 100644
--- a/sys/netiso/tp_trace.c
+++ b/sys/netiso/tp_trace.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tp_trace.c 8.1 (Berkeley) 6/10/93
- * $Id: tp_trace.c,v 1.3 1995/04/26 21:32:41 pst Exp $
+ * $Id: tp_trace.c,v 1.4 1995/05/30 08:11:40 rgrimes Exp $
*/
/***********************************************************
@@ -63,7 +63,7 @@ SOFTWARE.
/*
* ARGO TP
*
- * $Header: /home/ncvs/src/sys/netiso/tp_trace.c,v 1.3 1995/04/26 21:32:41 pst Exp $
+ * $Header: /home/ncvs/src/sys/netiso/tp_trace.c,v 1.4 1995/05/30 08:11:40 rgrimes Exp $
* $Source: /home/ncvs/src/sys/netiso/tp_trace.c,v $
*
* The whole protocol trace module.
diff --git a/sys/netiso/tp_trace.h b/sys/netiso/tp_trace.h
index b2dd01cb9740..d7fdc90e5f72 100644
--- a/sys/netiso/tp_trace.h
+++ b/sys/netiso/tp_trace.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tp_trace.h 8.1 (Berkeley) 6/10/93
- * $Id: tp_trace.h,v 1.3 1994/08/21 06:14:32 paul Exp $
+ * $Id: tp_trace.h,v 1.4 1995/05/30 08:11:41 rgrimes Exp $
*/
#ifndef _NETISO_TP_TRACE_H_
@@ -66,7 +66,7 @@ SOFTWARE.
/*
* ARGO TP
*
- * $Header: /home/ncvs/src/sys/netiso/tp_trace.h,v 1.3 1994/08/21 06:14:32 paul Exp $
+ * $Header: /home/ncvs/src/sys/netiso/tp_trace.h,v 1.4 1995/05/30 08:11:41 rgrimes Exp $
* $Source: /home/ncvs/src/sys/netiso/tp_trace.h,v $
*
*
diff --git a/sys/netiso/tp_user.h b/sys/netiso/tp_user.h
index bc86c2e2bd0d..a8628bdafb32 100644
--- a/sys/netiso/tp_user.h
+++ b/sys/netiso/tp_user.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tp_user.h 8.1 (Berkeley) 6/10/93
- * $Id: tp_user.h,v 1.3 1994/08/21 06:14:32 paul Exp $
+ * $Id: tp_user.h,v 1.4 1995/05/30 08:11:43 rgrimes Exp $
*/
#ifndef _NETISO_TP_USER_H_
@@ -66,7 +66,7 @@ SOFTWARE.
/*
* ARGO TP
*
- * $Header: /home/ncvs/src/sys/netiso/tp_user.h,v 1.3 1994/08/21 06:14:32 paul Exp $
+ * $Header: /home/ncvs/src/sys/netiso/tp_user.h,v 1.4 1995/05/30 08:11:43 rgrimes Exp $
* $Source: /home/ncvs/src/sys/netiso/tp_user.h,v $
*
* These are the values a real-live user ;-) needs.
diff --git a/sys/netiso/tp_usrreq.c b/sys/netiso/tp_usrreq.c
index 13948e8f9541..6e4f53bf7037 100644
--- a/sys/netiso/tp_usrreq.c
+++ b/sys/netiso/tp_usrreq.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tp_usrreq.c 8.1 (Berkeley) 6/10/93
- * $Id: tp_usrreq.c,v 1.3 1995/04/26 21:32:42 pst Exp $
+ * $Id: tp_usrreq.c,v 1.4 1995/05/30 08:11:44 rgrimes Exp $
*/
/***********************************************************
@@ -63,7 +63,7 @@ SOFTWARE.
/*
* ARGO TP
*
- * $Header: /home/ncvs/src/sys/netiso/tp_usrreq.c,v 1.3 1995/04/26 21:32:42 pst Exp $
+ * $Header: /home/ncvs/src/sys/netiso/tp_usrreq.c,v 1.4 1995/05/30 08:11:44 rgrimes Exp $
* $Source: /home/ncvs/src/sys/netiso/tp_usrreq.c,v $
*
* tp_usrreq(), the fellow that gets called from most of the socket code.
diff --git a/sys/netiso/tuba_subr.c b/sys/netiso/tuba_subr.c
index 80a1e674d445..576b4957c8df 100644
--- a/sys/netiso/tuba_subr.c
+++ b/sys/netiso/tuba_subr.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tuba_subr.c 8.1 (Berkeley) 6/10/93
- * $Id: tuba_subr.c,v 1.2 1994/08/02 07:51:34 davidg Exp $
+ * $Id: tuba_subr.c,v 1.3 1995/05/30 08:11:46 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/netiso/tuba_table.c b/sys/netiso/tuba_table.c
index 0b0a977bf5a0..6fd4632622bb 100644
--- a/sys/netiso/tuba_table.c
+++ b/sys/netiso/tuba_table.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tuba_table.c 8.2 (Berkeley) 11/15/93
- * $Id$
+ * $Id: tuba_table.c,v 1.2 1994/08/02 07:51:35 davidg Exp $
*/
#include <sys/param.h>
#include <sys/systm.h>
diff --git a/sys/netiso/tuba_table.h b/sys/netiso/tuba_table.h
index 5d2b2fd7701f..8fb9e914b01a 100644
--- a/sys/netiso/tuba_table.h
+++ b/sys/netiso/tuba_table.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tuba_table.h 8.1 (Berkeley) 6/10/93
- * $Id: tuba_table.h,v 1.2 1994/08/02 07:51:37 davidg Exp $
+ * $Id: tuba_table.h,v 1.3 1994/08/21 06:14:33 paul Exp $
*/
#ifndef _NETISO_TUBA_TABLE_H_
diff --git a/sys/netiso/tuba_usrreq.c b/sys/netiso/tuba_usrreq.c
index 2b4f716b14de..9e9712bebc04 100644
--- a/sys/netiso/tuba_usrreq.c
+++ b/sys/netiso/tuba_usrreq.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tuba_usrreq.c 8.1 (Berkeley) 6/10/93
- * $Id: tuba_usrreq.c,v 1.2 1994/08/02 07:51:38 davidg Exp $
+ * $Id: tuba_usrreq.c,v 1.3 1995/05/30 08:11:48 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/netiso/xebec/debug.h b/sys/netiso/xebec/debug.h
index c5b3622ce13c..69f3027ffa94 100644
--- a/sys/netiso/xebec/debug.h
+++ b/sys/netiso/xebec/debug.h
@@ -1,4 +1,4 @@
-/* $Header: /home/ncvs/src/sys/netiso/xebec/debug.h,v 1.1.1.1 1994/05/24 10:07:51 rgrimes Exp $ */
+/* $Header: /home/ncvs/src/sys/netiso/xebec/debug.h,v 1.2 1995/05/30 08:11:55 rgrimes Exp $ */
/* $Source: /home/ncvs/src/sys/netiso/xebec/debug.h,v $ */
#define OUT stdout
diff --git a/sys/netiso/xebec/llparse.c b/sys/netiso/xebec/llparse.c
index 68b511ea7861..52e8ac2ec250 100644
--- a/sys/netiso/xebec/llparse.c
+++ b/sys/netiso/xebec/llparse.c
@@ -1,4 +1,4 @@
-/* $Header: /home/ncvs/src/sys/netiso/xebec/llparse.c,v 1.1.1.1 1994/05/24 10:07:51 rgrimes Exp $ */
+/* $Header: /home/ncvs/src/sys/netiso/xebec/llparse.c,v 1.2 1995/05/30 08:11:57 rgrimes Exp $ */
/* $Source: /home/ncvs/src/sys/netiso/xebec/llparse.c,v $ */
/*
* ************************* NOTICE *******************************
diff --git a/sys/netiso/xebec/llparse.h b/sys/netiso/xebec/llparse.h
index 718c3608dbe0..25733ee8363b 100644
--- a/sys/netiso/xebec/llparse.h
+++ b/sys/netiso/xebec/llparse.h
@@ -1,4 +1,4 @@
-/* $Header: /home/ncvs/src/sys/netiso/xebec/llparse.h,v 1.1.1.1 1994/05/24 10:07:50 rgrimes Exp $ */
+/* $Header: /home/ncvs/src/sys/netiso/xebec/llparse.h,v 1.2 1995/05/30 08:11:59 rgrimes Exp $ */
/* $Source: /home/ncvs/src/sys/netiso/xebec/llparse.h,v $ */
/************************************************************
diff --git a/sys/netiso/xebec/llscan.c b/sys/netiso/xebec/llscan.c
index 8f1f1a033c59..19720bbde34f 100644
--- a/sys/netiso/xebec/llscan.c
+++ b/sys/netiso/xebec/llscan.c
@@ -1,4 +1,4 @@
-/* $Header: /home/ncvs/src/sys/netiso/xebec/llscan.c,v 1.1.1.1 1994/05/24 10:07:50 rgrimes Exp $ */
+/* $Header: /home/ncvs/src/sys/netiso/xebec/llscan.c,v 1.2 1995/05/30 08:12:01 rgrimes Exp $ */
/* $Source: /home/ncvs/src/sys/netiso/xebec/llscan.c,v $ */
/*
* ************************* NOTICE *******************************
diff --git a/sys/netiso/xebec/main.c b/sys/netiso/xebec/main.c
index b46a930f5cc3..b986fe600c7b 100644
--- a/sys/netiso/xebec/main.c
+++ b/sys/netiso/xebec/main.c
@@ -1,4 +1,4 @@
-/* $Header: /home/ncvs/src/sys/netiso/xebec/main.c,v 1.1.1.1 1994/05/24 10:07:49 rgrimes Exp $ */
+/* $Header: /home/ncvs/src/sys/netiso/xebec/main.c,v 1.2 1995/05/30 08:12:03 rgrimes Exp $ */
/* $Source: /home/ncvs/src/sys/netiso/xebec/main.c,v $ */
/*
* TODO:
diff --git a/sys/netiso/xebec/main.h b/sys/netiso/xebec/main.h
index 236058d68036..821d7a532820 100644
--- a/sys/netiso/xebec/main.h
+++ b/sys/netiso/xebec/main.h
@@ -1,4 +1,4 @@
-/* $Header: /home/ncvs/src/sys/netiso/xebec/main.h,v 1.1.1.1 1994/05/24 10:07:49 rgrimes Exp $ */
+/* $Header: /home/ncvs/src/sys/netiso/xebec/main.h,v 1.2 1995/05/30 08:12:05 rgrimes Exp $ */
/* $Source: /home/ncvs/src/sys/netiso/xebec/main.h,v $ */
#define TRUE 1
diff --git a/sys/netiso/xebec/malloc.c b/sys/netiso/xebec/malloc.c
index d09af2987cdb..2e31e0f869a1 100644
--- a/sys/netiso/xebec/malloc.c
+++ b/sys/netiso/xebec/malloc.c
@@ -1,4 +1,4 @@
-/* $Header: /home/ncvs/src/sys/netiso/xebec/malloc.c,v 1.1.1.1 1994/05/24 10:07:48 rgrimes Exp $ */
+/* $Header: /home/ncvs/src/sys/netiso/xebec/malloc.c,v 1.2 1995/05/30 08:12:07 rgrimes Exp $ */
/* $Source: /home/ncvs/src/sys/netiso/xebec/malloc.c,v $ */
/*
* This code is such a kludge that I don't want to put my name on it.
diff --git a/sys/netiso/xebec/malloc.h b/sys/netiso/xebec/malloc.h
index 53d865bf47b5..f840fb2be2c4 100644
--- a/sys/netiso/xebec/malloc.h
+++ b/sys/netiso/xebec/malloc.h
@@ -1,4 +1,4 @@
-/* $Header: malloc.h,v 2.1 88/09/19 12:56:27 nhall Exp $ */
-/* $Source: /var/home/tadl/src/argo/xebec/RCS/malloc.h,v $ */
+/* $Header: /home/ncvs/src/sys/netiso/xebec/malloc.h,v 1.1.1.1 1994/05/24 10:07:47 rgrimes Exp $ */
+/* $Source: /home/ncvs/src/sys/netiso/xebec/malloc.h,v $ */
char *Malloc();
diff --git a/sys/netiso/xebec/procs.c b/sys/netiso/xebec/procs.c
index 8134a82f65a8..2e177dffaccb 100644
--- a/sys/netiso/xebec/procs.c
+++ b/sys/netiso/xebec/procs.c
@@ -1,4 +1,4 @@
-/* $Header: /home/ncvs/src/sys/netiso/xebec/procs.c,v 1.1.1.1 1994/05/24 10:07:46 rgrimes Exp $ */
+/* $Header: /home/ncvs/src/sys/netiso/xebec/procs.c,v 1.2 1995/05/30 08:12:08 rgrimes Exp $ */
/* $Source: /home/ncvs/src/sys/netiso/xebec/procs.c,v $ */
/*
* This code is such a kludge that I don't want to put my name on it.
diff --git a/sys/netiso/xebec/procs.h b/sys/netiso/xebec/procs.h
index e41ae75995ce..2c16b0e76079 100644
--- a/sys/netiso/xebec/procs.h
+++ b/sys/netiso/xebec/procs.h
@@ -1,5 +1,5 @@
-/* $Header: procs.h,v 2.1 88/09/19 12:56:30 nhall Exp $ */
-/* $Source: /var/home/tadl/src/argo/xebec/RCS/procs.h,v $ */
+/* $Header: /home/ncvs/src/sys/netiso/xebec/procs.h,v 1.1.1.1 1994/05/24 10:07:46 rgrimes Exp $ */
+/* $Source: /home/ncvs/src/sys/netiso/xebec/procs.h,v $ */
extern char *stash();
extern struct Object *SameState;
diff --git a/sys/netiso/xebec/putdriver.c b/sys/netiso/xebec/putdriver.c
index 85fcd501fccf..9ad894130c72 100644
--- a/sys/netiso/xebec/putdriver.c
+++ b/sys/netiso/xebec/putdriver.c
@@ -1,4 +1,4 @@
-/* $Header: /home/ncvs/src/sys/netiso/xebec/putdriver.c,v 1.1.1.1 1994/05/24 10:07:46 rgrimes Exp $ */
+/* $Header: /home/ncvs/src/sys/netiso/xebec/putdriver.c,v 1.2 1995/05/30 08:12:10 rgrimes Exp $ */
/* $Source: /home/ncvs/src/sys/netiso/xebec/putdriver.c,v $ */
/*
diff --git a/sys/netiso/xebec/sets.c b/sys/netiso/xebec/sets.c
index 6022a894434d..132e7a3cc237 100644
--- a/sys/netiso/xebec/sets.c
+++ b/sys/netiso/xebec/sets.c
@@ -1,4 +1,4 @@
-/* $Header: /home/ncvs/src/sys/netiso/xebec/sets.c,v 1.1.1.1 1994/05/24 10:07:45 rgrimes Exp $ */
+/* $Header: /home/ncvs/src/sys/netiso/xebec/sets.c,v 1.2 1995/05/30 08:12:12 rgrimes Exp $ */
/* $Source: /home/ncvs/src/sys/netiso/xebec/sets.c,v $ */
/*
* This code is such a kludge that I don't want to put my name on it.
diff --git a/sys/netiso/xebec/sets.h b/sys/netiso/xebec/sets.h
index 15168ef26b0d..0b1dc5ef3070 100644
--- a/sys/netiso/xebec/sets.h
+++ b/sys/netiso/xebec/sets.h
@@ -1,4 +1,4 @@
-/* $Header: /home/ncvs/src/sys/netiso/xebec/sets.h,v 1.1.1.1 1994/05/24 10:07:44 rgrimes Exp $ */
+/* $Header: /home/ncvs/src/sys/netiso/xebec/sets.h,v 1.2 1995/05/30 08:12:14 rgrimes Exp $ */
/* $Source: /home/ncvs/src/sys/netiso/xebec/sets.h,v $ */
#define MAXEVENTS 200
diff --git a/sys/netiso/xebec/test.trans b/sys/netiso/xebec/test.trans
index 49db36109943..663bad25197c 100644
--- a/sys/netiso/xebec/test.trans
+++ b/sys/netiso/xebec/test.trans
@@ -1,4 +1,4 @@
-/* $Header: test.trans,v 0.2 88/09/19 12:58:29 nhall Exp $
+/* $Header: /home/ncvs/src/sys/netiso/xebec/test.trans,v 1.1.1.1 1994/05/24 10:07:51 rgrimes Exp $
*/
*PROTOCOL test
diff --git a/sys/netiso/xebec/xebec.c b/sys/netiso/xebec/xebec.c
index 40f862fe10a3..3f9f52943a5e 100644
--- a/sys/netiso/xebec/xebec.c
+++ b/sys/netiso/xebec/xebec.c
@@ -1,4 +1,4 @@
-/* $Header: /home/ncvs/src/sys/netiso/xebec/xebec.c,v 1.1.1.1 1994/05/24 10:07:43 rgrimes Exp $ */
+/* $Header: /home/ncvs/src/sys/netiso/xebec/xebec.c,v 1.2 1995/05/30 08:12:16 rgrimes Exp $ */
/* $Source: /home/ncvs/src/sys/netiso/xebec/xebec.c,v $ */
#include "xebec.h"
diff --git a/sys/netiso/xebec/xebec.h b/sys/netiso/xebec/xebec.h
index 168bb77b249d..78bc4e153a37 100644
--- a/sys/netiso/xebec/xebec.h
+++ b/sys/netiso/xebec/xebec.h
@@ -1,5 +1,5 @@
-/* $Header: xebec.h,v 2.1 88/09/19 12:56:35 nhall Exp $ */
-/* $Source: /var/home/tadl/src/argo/xebec/RCS/xebec.h,v $ */
+/* $Header: /home/ncvs/src/sys/netiso/xebec/xebec.h,v 1.1.1.1 1994/05/24 10:07:40 rgrimes Exp $ */
+/* $Source: /home/ncvs/src/sys/netiso/xebec/xebec.h,v $ */
union llattrib {
struct {
diff --git a/sys/netns/idp.h b/sys/netns/idp.h
index 96b8694d2fc7..8746ed80a583 100644
--- a/sys/netns/idp.h
+++ b/sys/netns/idp.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)idp.h 8.1 (Berkeley) 6/10/93
- * $Id: idp.h,v 1.2 1994/08/02 07:51:40 davidg Exp $
+ * $Id: idp.h,v 1.3 1994/08/21 06:22:05 paul Exp $
*/
#ifndef _NETNS_IDP_H_
diff --git a/sys/netns/idp_usrreq.c b/sys/netns/idp_usrreq.c
index d6ffaf41a605..592da22aa09a 100644
--- a/sys/netns/idp_usrreq.c
+++ b/sys/netns/idp_usrreq.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)idp_usrreq.c 8.1 (Berkeley) 6/10/93
- * $Id: idp_usrreq.c,v 1.3 1994/11/15 14:26:30 bde Exp $
+ * $Id: idp_usrreq.c,v 1.4 1995/05/30 08:12:20 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/netns/idp_var.h b/sys/netns/idp_var.h
index 7ff3823a70fe..e4b9e9f45934 100644
--- a/sys/netns/idp_var.h
+++ b/sys/netns/idp_var.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)idp_var.h 8.1 (Berkeley) 6/10/93
- * $Id: idp_var.h,v 1.2 1994/08/02 07:51:42 davidg Exp $
+ * $Id: idp_var.h,v 1.3 1994/08/21 06:22:06 paul Exp $
*/
#ifndef _NETNS_IDP_VAR_H_
diff --git a/sys/netns/ns.c b/sys/netns/ns.c
index 61536e1a0aaf..402f6b711bea 100644
--- a/sys/netns/ns.c
+++ b/sys/netns/ns.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ns.c 8.2 (Berkeley) 11/15/93
- * $Id: ns.c,v 1.3 1994/11/15 14:26:31 bde Exp $
+ * $Id: ns.c,v 1.4 1995/05/30 08:12:21 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/netns/ns.h b/sys/netns/ns.h
index 527c6950c9f9..27ba198fbfa6 100644
--- a/sys/netns/ns.h
+++ b/sys/netns/ns.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ns.h 8.1 (Berkeley) 6/10/93
- * $Id: ns.h,v 1.2 1994/08/02 07:51:44 davidg Exp $
+ * $Id: ns.h,v 1.3 1994/08/21 06:22:07 paul Exp $
*/
#ifndef _NETNS_NS_H_
diff --git a/sys/netns/ns_cksum.c b/sys/netns/ns_cksum.c
index 617fb2c0f2eb..6bd1bb44742e 100644
--- a/sys/netns/ns_cksum.c
+++ b/sys/netns/ns_cksum.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ns_cksum.c 8.1 (Berkeley) 6/10/93
- * $Id$
+ * $Id: ns_cksum.c,v 1.2 1994/08/02 07:51:45 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/netns/ns_error.c b/sys/netns/ns_error.c
index 0e7e24f0d5a5..7102c8925f4f 100644
--- a/sys/netns/ns_error.c
+++ b/sys/netns/ns_error.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ns_error.c 8.1 (Berkeley) 6/10/93
- * $Id: ns_error.c,v 1.2 1994/08/02 07:51:46 davidg Exp $
+ * $Id: ns_error.c,v 1.3 1995/05/30 08:12:22 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/netns/ns_error.h b/sys/netns/ns_error.h
index 5e88b2c8e8ee..b5ecdcf4d9ac 100644
--- a/sys/netns/ns_error.h
+++ b/sys/netns/ns_error.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ns_error.h 8.1 (Berkeley) 6/10/93
- * $Id: ns_error.h,v 1.2 1994/08/02 07:51:47 davidg Exp $
+ * $Id: ns_error.h,v 1.3 1994/08/21 06:22:07 paul Exp $
*/
#ifndef _NETNS_NS_ERROR_H_
diff --git a/sys/netns/ns_if.h b/sys/netns/ns_if.h
index a4a955ac82dd..a20012853ce8 100644
--- a/sys/netns/ns_if.h
+++ b/sys/netns/ns_if.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ns_if.h 8.1 (Berkeley) 6/10/93
- * $Id: ns_if.h,v 1.3 1994/08/21 06:22:08 paul Exp $
+ * $Id: ns_if.h,v 1.4 1995/03/16 18:15:27 bde Exp $
*/
#ifndef _NETNS_NS_IF_H_
diff --git a/sys/netns/ns_input.c b/sys/netns/ns_input.c
index 6fa2e9c0eed5..72245b208690 100644
--- a/sys/netns/ns_input.c
+++ b/sys/netns/ns_input.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ns_input.c 8.1 (Berkeley) 6/10/93
- * $Id: ns_input.c,v 1.4 1995/05/11 00:13:22 wollman Exp $
+ * $Id: ns_input.c,v 1.5 1995/05/30 08:12:27 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/netns/ns_ip.c b/sys/netns/ns_ip.c
index e87e1656bc22..44614a9f4d88 100644
--- a/sys/netns/ns_ip.c
+++ b/sys/netns/ns_ip.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ns_ip.c 8.1 (Berkeley) 6/10/93
- * $Id: ns_ip.c,v 1.2 1994/08/02 07:51:50 davidg Exp $
+ * $Id: ns_ip.c,v 1.3 1995/03/19 14:29:03 davidg Exp $
*/
/*
diff --git a/sys/netns/ns_output.c b/sys/netns/ns_output.c
index 8b044896d4ea..9d7715423831 100644
--- a/sys/netns/ns_output.c
+++ b/sys/netns/ns_output.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ns_output.c 8.1 (Berkeley) 6/10/93
- * $Id$
+ * $Id: ns_output.c,v 1.2 1994/08/02 07:51:51 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/netns/ns_pcb.c b/sys/netns/ns_pcb.c
index 754c9fb7f9dc..1b07c3211946 100644
--- a/sys/netns/ns_pcb.c
+++ b/sys/netns/ns_pcb.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ns_pcb.c 8.1 (Berkeley) 6/10/93
- * $Id: ns_pcb.c,v 1.2 1994/08/02 07:51:52 davidg Exp $
+ * $Id: ns_pcb.c,v 1.3 1995/05/30 08:12:28 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/netns/ns_pcb.h b/sys/netns/ns_pcb.h
index 69bd331f12a9..3260113f4b84 100644
--- a/sys/netns/ns_pcb.h
+++ b/sys/netns/ns_pcb.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ns_pcb.h 8.1 (Berkeley) 6/10/93
- * $Id: ns_pcb.h,v 1.2 1994/08/02 07:51:53 davidg Exp $
+ * $Id: ns_pcb.h,v 1.3 1994/08/21 06:22:09 paul Exp $
*/
#ifndef _NETNS_NS_PCB_H_
diff --git a/sys/netns/ns_proto.c b/sys/netns/ns_proto.c
index 3352aa0d7cb7..87b16522bfec 100644
--- a/sys/netns/ns_proto.c
+++ b/sys/netns/ns_proto.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* From: @(#)ns_proto.c 8.1 (Berkeley) 6/10/93
- * $Id: ns_proto.c,v 1.3 1995/05/11 00:13:23 wollman Exp $
+ * $Id: ns_proto.c,v 1.4 1995/05/30 08:12:30 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/netns/sp.h b/sys/netns/sp.h
index 78b913403542..1f50e6e1d13d 100644
--- a/sys/netns/sp.h
+++ b/sys/netns/sp.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)sp.h 8.1 (Berkeley) 6/10/93
- * $Id: sp.h,v 1.2 1994/08/02 07:51:55 davidg Exp $
+ * $Id: sp.h,v 1.3 1994/08/21 06:22:09 paul Exp $
*/
#ifndef _NETNS_SP_H_
diff --git a/sys/netns/spidp.h b/sys/netns/spidp.h
index 5642f4a6b137..52fdf786e330 100644
--- a/sys/netns/spidp.h
+++ b/sys/netns/spidp.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)spidp.h 8.1 (Berkeley) 6/10/93
- * $Id: spidp.h,v 1.2 1994/08/02 07:51:56 davidg Exp $
+ * $Id: spidp.h,v 1.3 1994/08/21 06:22:10 paul Exp $
*/
#ifndef _NETNS_SPIDP_H_
diff --git a/sys/netns/spp_debug.c b/sys/netns/spp_debug.c
index f979a1ec9b89..982c9aa14150 100644
--- a/sys/netns/spp_debug.c
+++ b/sys/netns/spp_debug.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)spp_debug.c 8.1 (Berkeley) 6/10/93
- * $Id$
+ * $Id: spp_debug.c,v 1.2 1994/08/02 07:51:57 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/netns/spp_debug.h b/sys/netns/spp_debug.h
index 51132e513ead..0f5b0930b6cd 100644
--- a/sys/netns/spp_debug.h
+++ b/sys/netns/spp_debug.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)spp_debug.h 8.1 (Berkeley) 6/10/93
- * $Id: spp_debug.h,v 1.2 1994/08/02 07:51:58 davidg Exp $
+ * $Id: spp_debug.h,v 1.3 1994/08/21 06:22:11 paul Exp $
*/
#ifndef _NETNS_SPP_DEBUG_H_
diff --git a/sys/netns/spp_timer.h b/sys/netns/spp_timer.h
index d480f20701e5..972fd6ab8d82 100644
--- a/sys/netns/spp_timer.h
+++ b/sys/netns/spp_timer.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)spp_timer.h 8.1 (Berkeley) 6/10/93
- * $Id: spp_timer.h,v 1.2 1994/08/02 07:51:59 davidg Exp $
+ * $Id: spp_timer.h,v 1.3 1994/08/21 06:22:11 paul Exp $
*/
#ifndef _NETNS_SPP_TIMER_H_
diff --git a/sys/netns/spp_usrreq.c b/sys/netns/spp_usrreq.c
index fbce16af404a..8a78580dfd03 100644
--- a/sys/netns/spp_usrreq.c
+++ b/sys/netns/spp_usrreq.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)spp_usrreq.c 8.1 (Berkeley) 6/10/93
- * $Id: spp_usrreq.c,v 1.3 1995/03/19 14:29:04 davidg Exp $
+ * $Id: spp_usrreq.c,v 1.4 1995/05/30 08:12:31 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/netns/spp_var.h b/sys/netns/spp_var.h
index 98141671e02d..8b630d1c8ab6 100644
--- a/sys/netns/spp_var.h
+++ b/sys/netns/spp_var.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)spp_var.h 8.1 (Berkeley) 6/10/93
- * $Id: spp_var.h,v 1.2 1994/08/02 07:52:01 davidg Exp $
+ * $Id: spp_var.h,v 1.3 1994/08/21 06:22:12 paul Exp $
*/
#ifndef _NETNS_SPP_VAR_H_
diff --git a/sys/nfs/nfs.h b/sys/nfs/nfs.h
index cbf80c6d7fd6..7c941c2420b4 100644
--- a/sys/nfs/nfs.h
+++ b/sys/nfs/nfs.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs.h 8.1 (Berkeley) 6/10/93
- * $Id: nfs.h,v 1.8 1994/11/02 00:11:00 wollman Exp $
+ * $Id: nfs.h,v 1.9 1995/02/14 06:22:18 phk Exp $
*/
#ifndef _NFS_NFS_H_
diff --git a/sys/nfs/nfs_bio.c b/sys/nfs/nfs_bio.c
index f92901262000..ff9024ffa89a 100644
--- a/sys/nfs/nfs_bio.c
+++ b/sys/nfs/nfs_bio.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs_bio.c 8.5 (Berkeley) 1/4/94
- * $Id: nfs_bio.c,v 1.13 1995/05/21 21:39:21 davidg Exp $
+ * $Id: nfs_bio.c,v 1.14 1995/05/30 08:12:35 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/nfs/nfs_node.c b/sys/nfs/nfs_node.c
index a6bf9000738f..f10e70b6d4e8 100644
--- a/sys/nfs/nfs_node.c
+++ b/sys/nfs/nfs_node.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs_node.c 8.2 (Berkeley) 12/30/93
- * $Id: nfs_node.c,v 1.8 1995/03/16 18:15:36 bde Exp $
+ * $Id: nfs_node.c,v 1.8.4.1 1995/07/22 03:40:56 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/nfs/nfs_nqlease.c b/sys/nfs/nfs_nqlease.c
index 81571de2764a..e853c9c570f1 100644
--- a/sys/nfs/nfs_nqlease.c
+++ b/sys/nfs/nfs_nqlease.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs_nqlease.c 8.3 (Berkeley) 1/4/94
- * $Id: nfs_nqlease.c,v 1.10 1995/02/15 03:39:58 davidg Exp $
+ * $Id: nfs_nqlease.c,v 1.11 1995/05/30 08:12:36 rgrimes Exp $
*/
/*
diff --git a/sys/nfs/nfs_serv.c b/sys/nfs/nfs_serv.c
index 2b1b623c6328..4cdf0cecc18a 100644
--- a/sys/nfs/nfs_serv.c
+++ b/sys/nfs/nfs_serv.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs_serv.c 8.3 (Berkeley) 1/12/94
- * $Id: nfs_serv.c,v 1.15 1995/06/11 19:31:45 rgrimes Exp $
+ * $Id: nfs_serv.c,v 1.15.2.1 1995/08/23 03:38:56 davidg Exp $
*/
/*
diff --git a/sys/nfs/nfs_socket.c b/sys/nfs/nfs_socket.c
index 20253efb018b..ad79d6873b6e 100644
--- a/sys/nfs/nfs_socket.c
+++ b/sys/nfs/nfs_socket.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs_socket.c 8.3 (Berkeley) 1/12/94
- * $Id: nfs_socket.c,v 1.6 1995/03/16 18:15:37 bde Exp $
+ * $Id: nfs_socket.c,v 1.7 1995/05/30 08:12:40 rgrimes Exp $
*/
/*
diff --git a/sys/nfs/nfs_srvcache.c b/sys/nfs/nfs_srvcache.c
index 0f31ae08a4ae..7759a50e14ee 100644
--- a/sys/nfs/nfs_srvcache.c
+++ b/sys/nfs/nfs_srvcache.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs_srvcache.c 8.1 (Berkeley) 6/10/93
- * $Id: nfs_srvcache.c,v 1.4 1994/10/02 17:27:00 phk Exp $
+ * $Id: nfs_srvcache.c,v 1.5 1994/10/17 17:47:36 phk Exp $
*/
/*
diff --git a/sys/nfs/nfs_subs.c b/sys/nfs/nfs_subs.c
index 08620b6e46b7..d1cd36e208f7 100644
--- a/sys/nfs/nfs_subs.c
+++ b/sys/nfs/nfs_subs.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs_subs.c 8.3 (Berkeley) 1/4/94
- * $Id: nfs_subs.c,v 1.15.4.2 1995/07/20 07:52:09 davidg Exp $
+ * $Id: nfs_subs.c,v 1.15.4.3 1995/07/20 10:34:12 davidg Exp $
*/
/*
diff --git a/sys/nfs/nfs_syscalls.c b/sys/nfs/nfs_syscalls.c
index f7e159fd6235..9e44b4cd0ca3 100644
--- a/sys/nfs/nfs_syscalls.c
+++ b/sys/nfs/nfs_syscalls.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs_syscalls.c 8.3 (Berkeley) 1/4/94
- * $Id: nfs_syscalls.c,v 1.5 1994/10/17 17:47:38 phk Exp $
+ * $Id: nfs_syscalls.c,v 1.6 1995/05/30 08:12:45 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/nfs/nfs_vfsops.c b/sys/nfs/nfs_vfsops.c
index 2daa89117aa1..a4e682c9ebe1 100644
--- a/sys/nfs/nfs_vfsops.c
+++ b/sys/nfs/nfs_vfsops.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs_vfsops.c 8.3 (Berkeley) 1/4/94
- * $Id: nfs_vfsops.c,v 1.14.2.1 1995/06/02 11:13:15 davidg Exp $
+ * $Id: nfs_vfsops.c,v 1.15 1995/06/11 19:31:46 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/nfs/nfs_vnops.c b/sys/nfs/nfs_vnops.c
index ecc768fc4107..4af2fa258e51 100644
--- a/sys/nfs/nfs_vnops.c
+++ b/sys/nfs/nfs_vnops.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs_vnops.c 8.5 (Berkeley) 2/13/94
- * $Id: nfs_vnops.c,v 1.15.4.1 1995/07/25 07:47:54 davidg Exp $
+ * $Id: nfs_vnops.c,v 1.15.4.2 1995/10/26 09:17:36 davidg Exp $
*/
/*
diff --git a/sys/nfs/nfsdiskless.h b/sys/nfs/nfsdiskless.h
index 5df85e0f6592..70c7decd97ce 100644
--- a/sys/nfs/nfsdiskless.h
+++ b/sys/nfs/nfsdiskless.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfsdiskless.h 8.1 (Berkeley) 6/10/93
- * $Id: nfsdiskless.h,v 1.3 1994/08/05 09:28:49 davidg Exp $
+ * $Id: nfsdiskless.h,v 1.4 1994/08/21 06:50:09 paul Exp $
*/
#ifndef _NFS_NFSDISKLESS_H_
diff --git a/sys/nfs/nfsm_subs.h b/sys/nfs/nfsm_subs.h
index 030a985b40d1..c1ccbbe5c0bc 100644
--- a/sys/nfs/nfsm_subs.h
+++ b/sys/nfs/nfsm_subs.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfsm_subs.h 8.1 (Berkeley) 6/16/93
- * $Id: nfsm_subs.h,v 1.5 1994/10/17 17:47:42 phk Exp $
+ * $Id: nfsm_subs.h,v 1.6 1995/05/30 08:12:51 rgrimes Exp $
*/
#ifndef _NFS_NFSM_SUBS_H_
diff --git a/sys/nfs/nfsmount.h b/sys/nfs/nfsmount.h
index 99a1b48795f4..725bf056e39d 100644
--- a/sys/nfs/nfsmount.h
+++ b/sys/nfs/nfsmount.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfsmount.h 8.1 (Berkeley) 6/10/93
- * $Id: nfsmount.h,v 1.3 1994/08/21 06:50:10 paul Exp $
+ * $Id: nfsmount.h,v 1.4 1994/10/17 17:47:43 phk Exp $
*/
#ifndef _NFS_NFSMOUNT_H_
diff --git a/sys/nfs/nfsnode.h b/sys/nfs/nfsnode.h
index dc9162b061cc..43150504fdcf 100644
--- a/sys/nfs/nfsnode.h
+++ b/sys/nfs/nfsnode.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfsnode.h 8.4 (Berkeley) 2/13/94
- * $Id: nfsnode.h,v 1.8 1994/10/17 17:47:44 phk Exp $
+ * $Id: nfsnode.h,v 1.9 1995/03/16 18:15:42 bde Exp $
*/
#ifndef _NFS_NFSNODE_H_
diff --git a/sys/nfs/nfsrtt.h b/sys/nfs/nfsrtt.h
index 4463f621645d..defeddd556ce 100644
--- a/sys/nfs/nfsrtt.h
+++ b/sys/nfs/nfsrtt.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfsrtt.h 8.1 (Berkeley) 6/10/93
- * $Id: nfsrtt.h,v 1.2 1994/08/02 07:52:24 davidg Exp $
+ * $Id: nfsrtt.h,v 1.3 1994/08/21 06:50:12 paul Exp $
*/
#ifndef _NFS_NFSRTT_H_
diff --git a/sys/nfs/nfsrvcache.h b/sys/nfs/nfsrvcache.h
index b367b9f4a2c9..5a8a6f176406 100644
--- a/sys/nfs/nfsrvcache.h
+++ b/sys/nfs/nfsrvcache.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfsrvcache.h 8.1 (Berkeley) 6/10/93
- * $Id: nfsrvcache.h,v 1.3 1994/08/21 06:50:13 paul Exp $
+ * $Id: nfsrvcache.h,v 1.4 1994/10/17 17:47:44 phk Exp $
*/
#ifndef _NFS_NFSRVCACHE_H_
diff --git a/sys/nfs/nfsv2.h b/sys/nfs/nfsv2.h
index 62ba33899be1..c4d0ddce14a6 100644
--- a/sys/nfs/nfsv2.h
+++ b/sys/nfs/nfsv2.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfsv2.h 8.1 (Berkeley) 6/10/93
- * $Id: nfsv2.h,v 1.3 1994/08/18 22:35:37 wollman Exp $
+ * $Id: nfsv2.h,v 1.4 1994/08/21 06:50:13 paul Exp $
*/
#ifndef _NFS_NFSV2_H_
diff --git a/sys/nfs/nqnfs.h b/sys/nfs/nqnfs.h
index 0f8f12b238dc..e246a30e07c9 100644
--- a/sys/nfs/nqnfs.h
+++ b/sys/nfs/nqnfs.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nqnfs.h 8.1 (Berkeley) 6/10/93
- * $Id: nqnfs.h,v 1.5 1994/10/02 17:27:07 phk Exp $
+ * $Id: nqnfs.h,v 1.6 1994/10/17 17:47:45 phk Exp $
*/
#ifndef _NFS_NQNFS_H_
diff --git a/sys/nfs/rpcv2.h b/sys/nfs/rpcv2.h
index 2360cdc3c40a..2e926459f9c2 100644
--- a/sys/nfs/rpcv2.h
+++ b/sys/nfs/rpcv2.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)rpcv2.h 8.1 (Berkeley) 6/10/93
- * $Id: rpcv2.h,v 1.2 1994/08/02 07:52:29 davidg Exp $
+ * $Id: rpcv2.h,v 1.3 1994/08/21 06:50:15 paul Exp $
*/
#ifndef _NFS_RPCV2_H_
diff --git a/sys/nfs/xdr_subs.h b/sys/nfs/xdr_subs.h
index ac00385e7da0..ccb3ca2d99c3 100644
--- a/sys/nfs/xdr_subs.h
+++ b/sys/nfs/xdr_subs.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)xdr_subs.h 8.1 (Berkeley) 6/10/93
- * $Id: xdr_subs.h,v 1.3 1994/08/21 06:50:16 paul Exp $
+ * $Id: xdr_subs.h,v 1.4 1995/01/10 13:11:42 davidg Exp $
*/
#ifndef _NFS_XDR_SUBS_H_
diff --git a/sys/pci/README.de b/sys/pci/README.de
index fb81945c4d73..b693e39d2b85 100644
--- a/sys/pci/README.de
+++ b/sys/pci/README.de
@@ -1,4 +1,4 @@
-$Id: README.de,v 1.3 1994/10/12 11:19:36 se Exp $
+$Id: README.de,v 1.4 1994/10/29 13:13:39 jkh Exp $
----------------
diff --git a/sys/pci/README.de-le b/sys/pci/README.de-le
index 60cd2e2750e0..3e7cd01bd313 100644
--- a/sys/pci/README.de-le
+++ b/sys/pci/README.de-le
@@ -1,4 +1,4 @@
-$Id: README.de-le,v 1.1 1994/10/01 20:16:44 wollman Exp $
+$Id: README.de-le,v 1.2 1994/10/29 13:13:40 jkh Exp $
----------------
diff --git a/sys/pci/aic7870.c b/sys/pci/aic7870.c
index 7d925f70cad0..092635306973 100644
--- a/sys/pci/aic7870.c
+++ b/sys/pci/aic7870.c
@@ -19,7 +19,7 @@
* 4. Modifications may be freely made to this file if the above conditions
* are met.
*
- * $Id: aic7870.c,v 1.11.2.4 1995/10/09 06:27:50 davidg Exp $
+ * $Id: aic7870.c,v 1.11.2.5 1995/10/29 09:46:11 davidg Exp $
*/
#include <pci.h>
diff --git a/sys/pci/dc21040.h b/sys/pci/dc21040.h
index e3ff9e868018..a727e82f9d2b 100644
--- a/sys/pci/dc21040.h
+++ b/sys/pci/dc21040.h
@@ -21,7 +21,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: dc21040.h,v 1.4 1995/05/05 20:09:48 davidg Exp $
+ * $Id: dc21040.h,v 1.4.4.1 1995/10/01 06:03:59 davidg Exp $
*
*/
diff --git a/sys/pci/if_de.c b/sys/pci/if_de.c
index 47191746bfc3..74861aea12f6 100644
--- a/sys/pci/if_de.c
+++ b/sys/pci/if_de.c
@@ -21,7 +21,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: if_de.c,v 1.29.2.4 1995/10/09 06:29:11 davidg Exp $
+ * $Id: if_de.c,v 1.29.2.5 1995/10/26 07:47:14 davidg Exp $
*
*/
diff --git a/sys/pci/if_pdq.c b/sys/pci/if_pdq.c
index 2c8885bde871..59282e697071 100644
--- a/sys/pci/if_pdq.c
+++ b/sys/pci/if_pdq.c
@@ -21,7 +21,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: if_pdq.c,v 1.5 1995/04/05 08:19:23 davidg Exp $
+ * $Id: if_pdq.c,v 1.6 1995/05/30 08:13:04 rgrimes Exp $
*
*/
diff --git a/sys/pci/ncr.c b/sys/pci/ncr.c
index ae84b16b8ab6..719f6eaae0d6 100644
--- a/sys/pci/ncr.c
+++ b/sys/pci/ncr.c
@@ -1,6 +1,6 @@
/**************************************************************************
**
-** $Id: ncr.c,v 1.49 1995/09/21 17:27:28 se Exp $
+** $Id: ncr.c,v 1.37.4.4 1995/10/10 00:28:31 davidg Exp $
**
** Device driver for the NCR 53C810 PCI-SCSI-Controller.
**
@@ -1251,7 +1251,7 @@ static void ncr_attach (pcici_t tag, int unit);
static char ident[] =
- "\n$Id: ncr.c,v 1.49 1995/09/21 17:27:28 se Exp $\n";
+ "\n$Id: ncr.c,v 1.37.4.4 1995/10/10 00:28:31 davidg Exp $\n";
u_long ncr_version = NCR_VERSION * 11
+ (u_long) sizeof (struct ncb) * 7
diff --git a/sys/pci/ncrreg.h b/sys/pci/ncrreg.h
index 1a8b9f1c1dcb..392bbdd6a774 100644
--- a/sys/pci/ncrreg.h
+++ b/sys/pci/ncrreg.h
@@ -1,6 +1,6 @@
/**************************************************************************
**
-** $Id: ncrreg.h,v 1.2 1995/02/02 13:12:16 davidg Exp $
+** $Id: ncrreg.h,v 1.3 1995/03/21 22:48:36 se Exp $
**
** Device driver for the NCR 53C810 PCI-SCSI-Controller.
**
diff --git a/sys/pci/pci.c b/sys/pci/pci.c
index f6717c025f72..ea12d73046da 100644
--- a/sys/pci/pci.c
+++ b/sys/pci/pci.c
@@ -1,6 +1,6 @@
/**************************************************************************
**
-** $Id: pci.c,v 1.32 1995/10/02 13:43:11 davidg Exp $
+** $Id: pci.c,v 1.23.4.4 1995/10/09 06:35:59 davidg Exp $
**
** General subroutines for the PCI bus.
** pci_configure ()
diff --git a/sys/pci/pcibus.h b/sys/pci/pcibus.h
index 842d97c6dfa0..a2ee88941364 100644
--- a/sys/pci/pcibus.h
+++ b/sys/pci/pcibus.h
@@ -1,6 +1,6 @@
/**************************************************************************
**
-** $Id: pcibus.h,v 1.1 1995/02/01 22:56:47 se Exp $
+** $Id: pcibus.h,v 1.2 1995/03/21 23:01:03 se Exp $
**
** Declarations for pci bus driver.
**
diff --git a/sys/pci/pcireg.h b/sys/pci/pcireg.h
index a1fbcdf0c18f..719a7a8d15b1 100644
--- a/sys/pci/pcireg.h
+++ b/sys/pci/pcireg.h
@@ -1,6 +1,6 @@
/**************************************************************************
**
-** $Id: pcireg.h,v 1.4 1995/02/02 22:01:40 se Exp $
+** $Id: pcireg.h,v 1.5 1995/03/21 23:01:04 se Exp $
**
** Names for PCI configuration space registers.
**
diff --git a/sys/pci/pcisupport.c b/sys/pci/pcisupport.c
index ba73b4830e9f..d2af05e9f6cb 100644
--- a/sys/pci/pcisupport.c
+++ b/sys/pci/pcisupport.c
@@ -1,6 +1,6 @@
/**************************************************************************
**
-** $Id: pcisupport.c,v 1.13.4.1 1995/07/20 19:29:46 davidg Exp $
+** $Id: pcisupport.c,v 1.13.4.2 1995/09/09 23:10:21 davidg Exp $
**
** Device driver for DEC/INTEL PCI chipsets.
**
diff --git a/sys/pci/pcivar.h b/sys/pci/pcivar.h
index 207a7437d46f..3b183c5050f3 100644
--- a/sys/pci/pcivar.h
+++ b/sys/pci/pcivar.h
@@ -1,6 +1,6 @@
/**************************************************************************
**
-** $Id: pcivar.h,v 1.5 1995/03/25 21:10:38 bde Exp $
+** $Id: pcivar.h,v 1.6 1995/05/30 08:13:12 rgrimes Exp $
**
** Declarations for pci device drivers.
**
diff --git a/sys/pci/pdq.c b/sys/pci/pdq.c
index 610458bd19ec..a0a32d58fb72 100644
--- a/sys/pci/pdq.c
+++ b/sys/pci/pdq.c
@@ -21,9 +21,12 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: pdq.c,v 1.4 1995/04/01 01:43:56 davidg Exp $
+ * $Id: pdq.c,v 1.5 1995/05/30 08:13:13 rgrimes Exp $
*
* $Log: pdq.c,v $
+ * Revision 1.5 1995/05/30 08:13:13 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.4 1995/04/01 01:43:56 davidg
* Patch from Matt Thomas to fix mbuf leak in FDDI driver.
*
diff --git a/sys/pci/pdq_os.h b/sys/pci/pdq_os.h
index f7226e0b6738..e1ddac0ac646 100644
--- a/sys/pci/pdq_os.h
+++ b/sys/pci/pdq_os.h
@@ -21,9 +21,12 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: pdq_os.h,v 1.3 1995/07/16 10:07:20 bde Exp $
+ * $Id: pdq_os.h,v 1.2.4.1 1995/09/12 09:19:23 davidg Exp $
*
* $Log: pdq_os.h,v $
+ * Revision 1.2.4.1 1995/09/12 09:19:23 davidg
+ * Brought in change from rev 1.3: include systm.h.
+ *
* Revision 1.3 1995/07/16 10:07:20 bde
* Fix compiler warnings (systm.h wasn't included).
*
diff --git a/sys/pci/pdqreg.h b/sys/pci/pdqreg.h
index 08038f4b7a9a..aec2de52e894 100644
--- a/sys/pci/pdqreg.h
+++ b/sys/pci/pdqreg.h
@@ -21,9 +21,12 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: pdqreg.h,v 1.1 1995/03/14 09:16:07 davidg Exp $
+ * $Id: pdqreg.h,v 1.2 1995/05/30 08:13:15 rgrimes Exp $
*
* $Log: pdqreg.h,v $
+ * Revision 1.2 1995/05/30 08:13:15 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1 1995/03/14 09:16:07 davidg
* Added support for generic FDDI and the DEC DEFEA and DEFPA FDDI adapters.
*
diff --git a/sys/scsi/cd.c b/sys/scsi/cd.c
index 550b5da88ab7..933aed2405e5 100644
--- a/sys/scsi/cd.c
+++ b/sys/scsi/cd.c
@@ -14,7 +14,7 @@
*
* Ported to run under 386BSD by Julian Elischer (julian@tfs.com) Sept 1992
*
- * $Id: cd.c,v 1.40 1995/05/03 18:09:06 dufault Exp $
+ * $Id: cd.c,v 1.41 1995/05/30 08:13:20 rgrimes Exp $
*/
#define SPLCD splbio
diff --git a/sys/scsi/ch.c b/sys/scsi/ch.c
index a7c36d9efa5a..ea0c0c963b46 100644
--- a/sys/scsi/ch.c
+++ b/sys/scsi/ch.c
@@ -2,7 +2,7 @@
* Written by grefen@?????
* Based on scsi drivers by Julian Elischer (julian@tfs.com)
*
- * $Id: ch.c,v 1.20 1995/05/11 19:26:46 rgrimes Exp $
+ * $Id: ch.c,v 1.21 1995/05/30 08:13:22 rgrimes Exp $
*/
#include <sys/types.h>
diff --git a/sys/scsi/pt.c b/sys/scsi/pt.c
index 2d1a10b62336..a61b0724192c 100644
--- a/sys/scsi/pt.c
+++ b/sys/scsi/pt.c
@@ -37,7 +37,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: pt.c,v 1.4 1995/05/03 18:09:09 dufault Exp $
+ * $Id: pt.c,v 1.5 1995/05/30 08:13:23 rgrimes Exp $
*/
/*
diff --git a/sys/scsi/scsi_all.h b/sys/scsi/scsi_all.h
index 8da591e74323..ad6f99fdf403 100644
--- a/sys/scsi/scsi_all.h
+++ b/sys/scsi/scsi_all.h
@@ -14,7 +14,7 @@
*
* Ported to run under 386BSD by Julian Elischer (julian@tfs.com) Sept 1992
*
- * $Id: scsi_all.h,v 1.12 1995/04/14 15:10:29 dufault Exp $
+ * $Id: scsi_all.h,v 1.13 1995/05/30 08:13:25 rgrimes Exp $
*/
/*
diff --git a/sys/scsi/scsi_base.c b/sys/scsi/scsi_base.c
index 0bb9a341194b..6dfeafba532a 100644
--- a/sys/scsi/scsi_base.c
+++ b/sys/scsi/scsi_base.c
@@ -8,7 +8,7 @@
* file.
*
* Written by Julian Elischer (julian@dialix.oz.au)
- * $Id: scsi_base.c,v 1.29 1995/05/30 08:13:27 rgrimes Exp $
+ * $Id: scsi_base.c,v 1.29.4.1 1995/10/10 00:42:00 davidg Exp $
*/
#define SPLSD splbio
diff --git a/sys/scsi/scsi_cd.h b/sys/scsi/scsi_cd.h
index 7b8f63ccec0f..859e78844802 100644
--- a/sys/scsi/scsi_cd.h
+++ b/sys/scsi/scsi_cd.h
@@ -14,7 +14,7 @@
*
* Ported to run under 386BSD by Julian Elischer (julian@tfs.com) Sept 1992
*
- * $Id: scsi_cd.h,v 1.6 1993/11/18 05:02:52 rgrimes Exp $
+ * $Id: scsi_cd.h,v 1.7 1995/05/30 08:13:29 rgrimes Exp $
*/
#ifndef _SCSI_SCSI_CD_H
#define _SCSI_SCSI_CD_H 1
diff --git a/sys/scsi/scsi_changer.h b/sys/scsi/scsi_changer.h
index d7d628af756e..c48491db92b7 100644
--- a/sys/scsi/scsi_changer.h
+++ b/sys/scsi/scsi_changer.h
@@ -19,7 +19,7 @@
*
* Ported to run under 386BSD by Julian Elischer (julian@tfs.com) Sept 1992
*
- * $Id: scsi_changer.h,v 1.6 1993/11/18 05:02:53 rgrimes Exp $
+ * $Id: scsi_changer.h,v 1.7 1995/05/30 08:13:30 rgrimes Exp $
*/
#ifndef _SCSI_SCSI_CHANGER_H
#define _SCSI_SCSI_CHANGER_H 1
diff --git a/sys/scsi/scsi_debug.h b/sys/scsi/scsi_debug.h
index 578cd43412d8..d1e0a1929f63 100644
--- a/sys/scsi/scsi_debug.h
+++ b/sys/scsi/scsi_debug.h
@@ -2,7 +2,7 @@
/*
* Written by Julian Elischer (julian@tfs.com)
*
- * $Id: scsi_debug.h,v 1.1 1993/11/18 05:02:54 rgrimes Exp $
+ * $Id: scsi_debug.h,v 1.2 1995/05/30 08:13:32 rgrimes Exp $
*/
#ifndef _SCSI_SCSI_DEBUG_H
#define _SCSI_SCSI_DEBUG_H 1
diff --git a/sys/scsi/scsi_disk.h b/sys/scsi/scsi_disk.h
index ecac2a47d926..584d26f2b02a 100644
--- a/sys/scsi/scsi_disk.h
+++ b/sys/scsi/scsi_disk.h
@@ -46,7 +46,7 @@
*
* Ported to run under 386BSD by Julian Elischer (julian@tfs.com) Sept 1992
*
- * $Id: scsi_disk.h,v 1.7 1995/01/08 15:13:40 ats Exp $
+ * $Id: scsi_disk.h,v 1.8 1995/05/30 08:13:35 rgrimes Exp $
*/
/*
diff --git a/sys/scsi/scsi_driver.c b/sys/scsi/scsi_driver.c
index 23370a95558d..86c4d7a09389 100644
--- a/sys/scsi/scsi_driver.c
+++ b/sys/scsi/scsi_driver.c
@@ -35,7 +35,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: scsi_driver.c,v 1.9 1995/05/03 18:09:11 dufault Exp $
+ * $Id: scsi_driver.c,v 1.10 1995/05/30 08:13:37 rgrimes Exp $
*
*/
#include <sys/types.h>
diff --git a/sys/scsi/scsi_driver.h b/sys/scsi/scsi_driver.h
index ec2e1c8243e5..c50d6156f1c1 100644
--- a/sys/scsi/scsi_driver.h
+++ b/sys/scsi/scsi_driver.h
@@ -35,7 +35,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: scsi_driver.h,v 1.3 1995/04/14 15:10:34 dufault Exp $
+ * $Id: scsi_driver.h,v 1.4 1995/05/30 08:13:39 rgrimes Exp $
*
*/
#ifndef _SCSI__DRIVER_H_
diff --git a/sys/scsi/scsi_generic.h b/sys/scsi/scsi_generic.h
index e1a3d883ff5d..8f7a9d37f84b 100644
--- a/sys/scsi/scsi_generic.h
+++ b/sys/scsi/scsi_generic.h
@@ -33,7 +33,7 @@
* SUCH DAMAGE.
*
* from: @(#)stdio.h 5.17 (Berkeley) 6/3/91
- * $Id: scsi_generic.h,v 1.3 1995/01/08 13:38:31 dufault Exp $
+ * $Id: scsi_generic.h,v 1.4 1995/05/30 08:13:40 rgrimes Exp $
*/
/* generic SCSI header file. We use the same minor number format
diff --git a/sys/scsi/scsi_ioctl.c b/sys/scsi/scsi_ioctl.c
index f97766210417..49d355e1bb20 100644
--- a/sys/scsi/scsi_ioctl.c
+++ b/sys/scsi/scsi_ioctl.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*End copyright
*
- * $Id: scsi_ioctl.c,v 1.16 1995/05/30 08:13:42 rgrimes Exp $
+ * $Id: scsi_ioctl.c,v 1.16.4.1 1995/11/10 15:08:05 davidg Exp $
*
*
*/
diff --git a/sys/scsi/scsi_tape.h b/sys/scsi/scsi_tape.h
index 0e184d18238f..d577dac64bbd 100644
--- a/sys/scsi/scsi_tape.h
+++ b/sys/scsi/scsi_tape.h
@@ -21,7 +21,7 @@
/*
* Ported to run under 386BSD by Julian Elischer (julian@tfs.com) Sept 1992
*
- * $Id: scsi_tape.h,v 1.12 1995/04/29 21:30:26 joerg Exp $
+ * $Id: scsi_tape.h,v 1.13 1995/05/30 08:13:43 rgrimes Exp $
*/
#ifndef SCSI_SCSI_TAPE_H
#define SCSI_SCSI_TAPE_H 1
diff --git a/sys/scsi/scsiconf.c b/sys/scsi/scsiconf.c
index 4297ecf05271..7574042182ac 100644
--- a/sys/scsi/scsiconf.c
+++ b/sys/scsi/scsiconf.c
@@ -16,7 +16,7 @@
*
* New configuration setup: dufault@hda.com
*
- * $Id: scsiconf.c,v 1.30.4.3 1995/08/31 06:36:25 davidg Exp $
+ * $Id: scsiconf.c,v 1.30.4.4 1995/10/10 00:42:02 davidg Exp $
*/
#include <sys/types.h>
diff --git a/sys/scsi/scsiconf.h b/sys/scsi/scsiconf.h
index 843b03bedd92..3d725dbb60e5 100644
--- a/sys/scsi/scsiconf.h
+++ b/sys/scsi/scsiconf.h
@@ -14,7 +14,7 @@
*
* Ported to run under 386BSD by Julian Elischer (julian@tfs.com) Sept 1992
*
- * $Id: scsiconf.h,v 1.26.4.1 1995/07/22 04:25:08 davidg Exp $
+ * $Id: scsiconf.h,v 1.26.4.2 1995/08/31 06:36:26 davidg Exp $
*/
#ifndef SCSI_SCSICONF_H
#define SCSI_SCSICONF_H 1
diff --git a/sys/scsi/sctarg.c b/sys/scsi/sctarg.c
index 597c263643d1..225c3dfb06ee 100644
--- a/sys/scsi/sctarg.c
+++ b/sys/scsi/sctarg.c
@@ -37,7 +37,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: sctarg.c,v 1.3 1995/05/30 08:13:49 rgrimes Exp $
+ * $Id: sctarg.c,v 1.3.4.1 1995/07/22 04:25:09 davidg Exp $
*/
/*
diff --git a/sys/scsi/sd.c b/sys/scsi/sd.c
index 1ae8533701bc..eb4fa634e170 100644
--- a/sys/scsi/sd.c
+++ b/sys/scsi/sd.c
@@ -14,7 +14,7 @@
*
* Ported to run under 386BSD by Julian Elischer (julian@dialix.oz.au) Sept 1992
*
- * $Id: sd.c,v 1.64 1995/05/08 16:53:33 bde Exp $
+ * $Id: sd.c,v 1.65 1995/05/30 08:13:51 rgrimes Exp $
*/
#define SPLSD splbio
diff --git a/sys/scsi/ssc.c b/sys/scsi/ssc.c
index df7fbb680047..d5cadef19c3a 100644
--- a/sys/scsi/ssc.c
+++ b/sys/scsi/ssc.c
@@ -49,7 +49,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*End copyright
- * $Id: ssc.c,v 1.2 1995/01/08 15:56:09 dufault Exp $
+ * $Id: ssc.c,v 1.3 1995/05/03 18:09:18 dufault Exp $
*/
#include <sys/types.h>
diff --git a/sys/scsi/st.c b/sys/scsi/st.c
index d4fa18cda5a1..b3ec3fef7f02 100644
--- a/sys/scsi/st.c
+++ b/sys/scsi/st.c
@@ -12,7 +12,7 @@
* on the understanding that TFS is not responsible for the correct
* functioning of this software in any circumstances.
*
- * $Id: st.c,v 1.36 1995/05/30 08:13:54 rgrimes Exp $
+ * $Id: st.c,v 1.36.4.1 1995/07/22 04:25:10 davidg Exp $
*/
/*
diff --git a/sys/scsi/su.c b/sys/scsi/su.c
index dd73c2b7f2fb..97f4809a6e36 100644
--- a/sys/scsi/su.c
+++ b/sys/scsi/su.c
@@ -44,7 +44,7 @@
* SUCH DAMAGE.
*End copyright
*
- * $Id: su.c,v 1.4 1995/03/04 20:51:07 dufault Exp $
+ * $Id: su.c,v 1.5 1995/05/03 18:09:20 dufault Exp $
*
* Tabstops 4
*/
diff --git a/sys/scsi/uk.c b/sys/scsi/uk.c
index 0518612feb08..67c76540482e 100644
--- a/sys/scsi/uk.c
+++ b/sys/scsi/uk.c
@@ -2,7 +2,7 @@
* Driver for a device we can't identify.
* by Julian Elischer (julian@tfs.com)
*
- * $Id: uk.c,v 1.8 1995/03/04 20:51:08 dufault Exp $
+ * $Id: uk.c,v 1.9 1995/05/30 08:13:56 rgrimes Exp $
*
* If you find that you are adding any code to this file look closely
* at putting it in "scsi_driver.c" instead.
diff --git a/sys/scsi/worm.c b/sys/scsi/worm.c
index 8c5a2eb87a77..9d6f4ee8201c 100644
--- a/sys/scsi/worm.c
+++ b/sys/scsi/worm.c
@@ -37,7 +37,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: worm.c,v 1.7 1995/05/30 08:13:58 rgrimes Exp $
+ * $Id: worm.c,v 1.7.4.1 1995/10/10 00:42:03 davidg Exp $
*/
/* XXX This is PRELIMINARY.
diff --git a/sys/sys/acct.h b/sys/sys/acct.h
index 0ea88d8ea112..edf66c87744f 100644
--- a/sys/sys/acct.h
+++ b/sys/sys/acct.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)acct.h 8.2 (Berkeley) 1/21/94
- * $Id: acct.h,v 1.3 1994/08/21 04:41:31 paul Exp $
+ * $Id: acct.h,v 1.4 1994/09/26 21:09:15 davidg Exp $
*/
#ifndef _SYS_ACCT_H_
diff --git a/sys/sys/buf.h b/sys/sys/buf.h
index 6948b10bf277..efd904eb5922 100644
--- a/sys/sys/buf.h
+++ b/sys/sys/buf.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)buf.h 8.7 (Berkeley) 1/21/94
- * $Id: buf.h,v 1.19 1995/05/30 08:14:07 rgrimes Exp $
+ * $Id: buf.h,v 1.19.4.1 1995/09/12 09:22:59 davidg Exp $
*/
#ifndef _SYS_BUF_H_
diff --git a/sys/sys/callout.h b/sys/sys/callout.h
index 81380b33f4ed..928e77760569 100644
--- a/sys/sys/callout.h
+++ b/sys/sys/callout.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)callout.h 8.2 (Berkeley) 1/21/94
- * $Id: callout.h,v 1.3 1994/08/18 22:35:41 wollman Exp $
+ * $Id: callout.h,v 1.4 1994/08/21 04:41:33 paul Exp $
*/
#ifndef _SYS_CALLOUT_H_
diff --git a/sys/sys/cdefs.h b/sys/sys/cdefs.h
index 03233d046ca2..19ac7363fd75 100644
--- a/sys/sys/cdefs.h
+++ b/sys/sys/cdefs.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)cdefs.h 8.7 (Berkeley) 1/21/94
- * $Id: cdefs.h,v 1.7 1994/12/08 15:42:17 bde Exp $
+ * $Id: cdefs.h,v 1.8 1994/12/23 22:38:54 nate Exp $
*/
#ifndef _SYS_CDEFS_H_
diff --git a/sys/sys/cdio.h b/sys/sys/cdio.h
index 8af5d6524a2e..977af0e942a8 100644
--- a/sys/sys/cdio.h
+++ b/sys/sys/cdio.h
@@ -1,7 +1,7 @@
/*
* 16 Feb 93 Julian Elischer (julian@dialix.oz.au)
*
- * $Id: cdio.h,v 1.7 1995/04/09 15:50:48 jkh Exp $
+ * $Id: cdio.h,v 1.8 1995/05/30 08:14:11 rgrimes Exp $
*/
/*
<1> Fixed a conflict with ioctl usage. There were two different
diff --git a/sys/sys/chio.h b/sys/sys/chio.h
index cc566ec9b194..634876bf84f4 100644
--- a/sys/sys/chio.h
+++ b/sys/sys/chio.h
@@ -1,7 +1,7 @@
/*
* 16 Feb 93 Julian Elischer ADDED for SCSI system
*
- * $Id: chio.h,v 1.4 1993/11/18 05:03:24 rgrimes Exp $
+ * $Id: chio.h,v 1.5 1995/05/30 08:14:13 rgrimes Exp $
*/
/* This is a "convertet" mtio.h from 386BSD
diff --git a/sys/sys/clist.h b/sys/sys/clist.h
index f1438a160d2a..3b644ecd3cc3 100644
--- a/sys/sys/clist.h
+++ b/sys/sys/clist.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)clist.h 8.1 (Berkeley) 6/4/93
- * $Id: clist.h,v 1.4 1994/08/21 04:41:35 paul Exp $
+ * $Id: clist.h,v 1.5 1995/01/07 06:08:15 davidg Exp $
*/
#ifndef _SYS_CLIST_H_
diff --git a/sys/sys/conf.h b/sys/sys/conf.h
index d42e1163a909..9bd51e5788e6 100644
--- a/sys/sys/conf.h
+++ b/sys/sys/conf.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)conf.h 8.3 (Berkeley) 1/21/94
- * $Id: conf.h,v 1.14 1995/05/14 03:00:03 davidg Exp $
+ * $Id: conf.h,v 1.15 1995/05/30 08:14:14 rgrimes Exp $
*/
#ifndef _SYS_CONF_H_
diff --git a/sys/sys/devconf.h b/sys/sys/devconf.h
index d468c33223a8..96b143be901d 100644
--- a/sys/sys/devconf.h
+++ b/sys/sys/devconf.h
@@ -22,7 +22,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: devconf.h,v 1.5 1995/04/12 20:47:13 wollman Exp $
+ * $Id: devconf.h,v 1.6 1995/04/13 20:37:51 wollman Exp $
*/
/*
diff --git a/sys/sys/device.h b/sys/sys/device.h
index 2fe1d6a70b3c..6c0b4ec1aed2 100644
--- a/sys/sys/device.h
+++ b/sys/sys/device.h
@@ -40,7 +40,7 @@
* SUCH DAMAGE.
*
* @(#)device.h 8.2 (Berkeley) 2/17/94
- * $Id$
+ * $Id: device.h,v 1.2 1994/08/02 07:52:45 davidg Exp $
*/
#ifndef _SYS_DEVICE_H_
diff --git a/sys/sys/dir.h b/sys/sys/dir.h
index c0347c1ec554..e80b1943778e 100644
--- a/sys/sys/dir.h
+++ b/sys/sys/dir.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)dir.h 8.2 (Berkeley) 1/4/94
- * $Id$
+ * $Id: dir.h,v 1.2 1994/08/02 07:52:46 davidg Exp $
*/
/*
diff --git a/sys/sys/dirent.h b/sys/sys/dirent.h
index 53b9e7a4848f..5df97e2464db 100644
--- a/sys/sys/dirent.h
+++ b/sys/sys/dirent.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)dirent.h 8.1 (Berkeley) 6/2/93
- * $Id: dirent.h,v 1.3 1994/08/21 04:41:38 paul Exp $
+ * $Id: dirent.h,v 1.4 1995/05/30 08:14:16 rgrimes Exp $
*/
#ifndef _SYS_DIRENT_H_
diff --git a/sys/sys/disk.h b/sys/sys/disk.h
index c90eca5b0d32..a375d0d2aa29 100644
--- a/sys/sys/disk.h
+++ b/sys/sys/disk.h
@@ -41,7 +41,7 @@
*
* @(#)disk.h 8.1 (Berkeley) 6/2/93
*
- * $Id: disk.h,v 1.2 1994/08/02 07:52:48 davidg Exp $
+ * $Id: disk.h,v 1.3 1994/08/21 04:41:39 paul Exp $
*/
#ifndef _SYS_DISK_H_
diff --git a/sys/sys/disklabel.h b/sys/sys/disklabel.h
index f9e77f9d345a..8ccf5fd32bf3 100644
--- a/sys/sys/disklabel.h
+++ b/sys/sys/disklabel.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)disklabel.h 8.1 (Berkeley) 6/2/93
- * $Id: disklabel.h,v 1.15 1995/05/16 07:52:17 davidg Exp $
+ * $Id: disklabel.h,v 1.16 1995/05/30 08:14:17 rgrimes Exp $
*/
#ifndef _SYS_DISKLABEL_H_
diff --git a/sys/sys/diskslice.h b/sys/sys/diskslice.h
index 6721e339d767..c3843ed15614 100644
--- a/sys/sys/diskslice.h
+++ b/sys/sys/diskslice.h
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: diskslice.h,v 1.9 1995/05/08 16:27:10 bde Exp $
+ * $Id: diskslice.h,v 1.10 1995/05/30 08:14:19 rgrimes Exp $
*/
#ifndef _SYS_DISKSLICE_H_
diff --git a/sys/sys/dkbad.h b/sys/sys/dkbad.h
index eb75c61b0b22..6b560772b2da 100644
--- a/sys/sys/dkbad.h
+++ b/sys/sys/dkbad.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)dkbad.h 8.1 (Berkeley) 6/2/93
- * $Id: dkbad.h,v 1.4 1994/12/11 23:20:50 bde Exp $
+ * $Id: dkbad.h,v 1.5 1995/04/15 23:21:28 bde Exp $
*/
#ifndef _SYS_DKBAD_H_
diff --git a/sys/sys/dkstat.h b/sys/sys/dkstat.h
index 82dbcbbf72f3..244ea80ef87d 100644
--- a/sys/sys/dkstat.h
+++ b/sys/sys/dkstat.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)dkstat.h 8.2 (Berkeley) 1/21/94
- * $Id: dkstat.h,v 1.5 1994/10/16 05:03:05 wollman Exp $
+ * $Id: dkstat.h,v 1.6 1994/12/24 10:11:18 bde Exp $
*/
#ifndef _SYS_DKSTAT_H_
diff --git a/sys/sys/dmap.h b/sys/sys/dmap.h
index b9ca5a1e55c6..5a82bd30f318 100644
--- a/sys/sys/dmap.h
+++ b/sys/sys/dmap.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)dmap.h 8.2 (Berkeley) 1/4/94
- * $Id$
+ * $Id: dmap.h,v 1.2 1994/08/02 07:52:52 davidg Exp $
*/
#ifndef _SYS_DMAP_H_
diff --git a/sys/sys/domain.h b/sys/sys/domain.h
index 87021f67bd76..e3790b950fde 100644
--- a/sys/sys/domain.h
+++ b/sys/sys/domain.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)domain.h 8.1 (Berkeley) 6/2/93
- * $Id: domain.h,v 1.4 1995/05/11 00:13:26 wollman Exp $
+ * $Id: domain.h,v 1.5 1995/05/15 22:55:18 davidg Exp $
*/
#ifndef _SYS_DOMAIN_H_
diff --git a/sys/sys/errno.h b/sys/sys/errno.h
index 3bac4ed751de..c9c00c100098 100644
--- a/sys/sys/errno.h
+++ b/sys/sys/errno.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)errno.h 8.5 (Berkeley) 1/21/94
- * $Id: errno.h,v 1.2 1994/08/02 07:52:54 davidg Exp $
+ * $Id: errno.h,v 1.3 1994/08/21 04:41:42 paul Exp $
*/
#ifndef _SYS_ERRNO_H_
diff --git a/sys/sys/exec.h b/sys/sys/exec.h
index b47b11db3ecd..e6a0501423ac 100644
--- a/sys/sys/exec.h
+++ b/sys/sys/exec.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)exec.h 8.3 (Berkeley) 1/21/94
- * $Id: exec.h,v 1.9 1994/10/09 21:50:57 sos Exp $
+ * $Id: exec.h,v 1.10 1995/03/16 18:16:15 bde Exp $
*/
#ifndef _SYS_EXEC_H_
diff --git a/sys/sys/fbio.h b/sys/sys/fbio.h
index b38522f57f3c..7e9972d2d651 100644
--- a/sys/sys/fbio.h
+++ b/sys/sys/fbio.h
@@ -36,7 +36,7 @@
*
* @(#)fbio.h 8.2 (Berkeley) 10/30/93
*
- * $Id: fbio.h,v 1.2 1994/08/02 07:52:56 davidg Exp $
+ * $Id: fbio.h,v 1.3 1994/08/21 04:41:44 paul Exp $
*/
#ifndef _SYS_FBIO_H_
diff --git a/sys/sys/fcntl.h b/sys/sys/fcntl.h
index 33afa9a454d5..69e799bfdad2 100644
--- a/sys/sys/fcntl.h
+++ b/sys/sys/fcntl.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)fcntl.h 8.3 (Berkeley) 1/21/94
- * $Id$
+ * $Id: fcntl.h,v 1.2 1994/08/02 07:52:57 davidg Exp $
*/
#ifndef _SYS_FCNTL_H_
diff --git a/sys/sys/file.h b/sys/sys/file.h
index 309a73258ef6..d34d31076e8e 100644
--- a/sys/sys/file.h
+++ b/sys/sys/file.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)file.h 8.1 (Berkeley) 6/2/93
- * $Id: file.h,v 1.4 1995/02/20 19:42:37 guido Exp $
+ * $Id: file.h,v 1.5 1995/03/16 18:16:16 bde Exp $
*/
#ifndef _SYS_FILE_H_
diff --git a/sys/sys/filedesc.h b/sys/sys/filedesc.h
index 4742a015394a..68c5cc8f2b80 100644
--- a/sys/sys/filedesc.h
+++ b/sys/sys/filedesc.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)filedesc.h 8.1 (Berkeley) 6/2/93
- * $Id: filedesc.h,v 1.5 1995/03/16 18:16:16 bde Exp $
+ * $Id: filedesc.h,v 1.6 1995/05/30 08:14:20 rgrimes Exp $
*/
#ifndef _SYS_FILEDESC_H_
diff --git a/sys/sys/filio.h b/sys/sys/filio.h
index b82a649c0feb..d53f4e2d6a2f 100644
--- a/sys/sys/filio.h
+++ b/sys/sys/filio.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)filio.h 8.1 (Berkeley) 3/28/94
- * $Id$
+ * $Id: filio.h,v 1.2 1994/08/02 07:53:01 davidg Exp $
*/
#ifndef _SYS_FILIO_H_
diff --git a/sys/sys/gmon.h b/sys/sys/gmon.h
index bc60cf4f9c2b..e53b6be6cc90 100644
--- a/sys/sys/gmon.h
+++ b/sys/sys/gmon.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)gmon.h 8.2 (Berkeley) 1/4/94
- * $Id: gmon.h,v 1.5 1995/05/14 03:00:04 davidg Exp $
+ * $Id: gmon.h,v 1.6 1995/05/30 08:14:22 rgrimes Exp $
*/
#ifndef _SYS_GMON_H_
diff --git a/sys/sys/imgact.h b/sys/sys/imgact.h
index 354efb2e130a..7ccdba51be36 100644
--- a/sys/sys/imgact.h
+++ b/sys/sys/imgact.h
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: imgact.h,v 1.8 1994/10/02 17:24:45 phk Exp $
+ * $Id: imgact.h,v 1.9 1995/05/30 08:14:24 rgrimes Exp $
*/
#ifndef _SYS_IMGACT_H_
diff --git a/sys/sys/imgact_aout.h b/sys/sys/imgact_aout.h
index 361d37a497af..b32a5e31a5cc 100644
--- a/sys/sys/imgact_aout.h
+++ b/sys/sys/imgact_aout.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: @(#)exec.h 8.1 (Berkeley) 6/11/93
- * $Id: imgact_aout.h,v 1.4 1995/07/26 17:25:48 davidg Exp $
+ * $Id: imgact_aout.h,v 1.3.4.1 1995/09/12 09:24:47 davidg Exp $
*/
#ifndef _IMGACT_AOUT_H_
diff --git a/sys/sys/inflate.h b/sys/sys/inflate.h
index a16ce4f1152d..e42f686c45e3 100644
--- a/sys/sys/inflate.h
+++ b/sys/sys/inflate.h
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id: inflate.h,v 1.5 1995/04/15 06:54:04 phk Exp $
+ * $Id: inflate.h,v 1.6 1995/05/30 08:14:27 rgrimes Exp $
*
*/
#ifndef _SYS_INFLATE_H_
diff --git a/sys/sys/ioccom.h b/sys/sys/ioccom.h
index 9958ac77d344..ead880974a12 100644
--- a/sys/sys/ioccom.h
+++ b/sys/sys/ioccom.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ioccom.h 8.2 (Berkeley) 3/28/94
- * $Id$
+ * $Id: ioccom.h,v 1.2 1994/08/02 07:53:03 davidg Exp $
*/
#ifndef _SYS_IOCCOM_H_
diff --git a/sys/sys/ioctl.h b/sys/sys/ioctl.h
index abe902f57825..24c281f99bbc 100644
--- a/sys/sys/ioctl.h
+++ b/sys/sys/ioctl.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)ioctl.h 8.6 (Berkeley) 3/28/94
- * $Id$
+ * $Id: ioctl.h,v 1.2 1994/08/02 07:53:04 davidg Exp $
*/
#ifndef _SYS_IOCTL_H_
diff --git a/sys/sys/ioctl_compat.h b/sys/sys/ioctl_compat.h
index ab067b97e42b..c60dfbb8c8b2 100644
--- a/sys/sys/ioctl_compat.h
+++ b/sys/sys/ioctl_compat.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)ioctl_compat.h 8.4 (Berkeley) 1/21/94
- * $Id$
+ * $Id: ioctl_compat.h,v 1.2 1994/08/02 07:53:05 davidg Exp $
*/
#ifndef _SYS_IOCTL_COMPAT_H_
diff --git a/sys/sys/ipc.h b/sys/sys/ipc.h
index 4e537845e566..314758ebe96a 100644
--- a/sys/sys/ipc.h
+++ b/sys/sys/ipc.h
@@ -41,7 +41,7 @@
* SUCH DAMAGE.
*
* @(#)ipc.h 8.3 (Berkeley) 1/21/94
- * $Id: ipc.h,v 1.4 1994/10/02 17:24:47 phk Exp $
+ * $Id: ipc.h,v 1.5 1994/12/30 05:38:14 davidg Exp $
*/
/*
diff --git a/sys/sys/kernel.h b/sys/sys/kernel.h
index 7c032b2a03f0..d6e9ebfb7b35 100644
--- a/sys/sys/kernel.h
+++ b/sys/sys/kernel.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)kernel.h 8.3 (Berkeley) 1/21/94
- * $Id: kernel.h,v 1.8 1995/03/17 22:02:05 wollman Exp $
+ * $Id: kernel.h,v 1.9 1995/03/20 19:20:26 wollman Exp $
*/
#ifndef _SYS_KERNEL_H_
diff --git a/sys/sys/ktrace.h b/sys/sys/ktrace.h
index 15f14b534985..597de066d0b4 100644
--- a/sys/sys/ktrace.h
+++ b/sys/sys/ktrace.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ktrace.h 8.1 (Berkeley) 6/2/93
- * $Id: ktrace.h,v 1.6 1994/10/02 17:24:48 phk Exp $
+ * $Id: ktrace.h,v 1.7 1995/03/16 18:16:19 bde Exp $
*/
#ifndef _SYS_KTRACE_H_
diff --git a/sys/sys/libkern.h b/sys/sys/libkern.h
index 6264baa440f8..6925a333cb93 100644
--- a/sys/sys/libkern.h
+++ b/sys/sys/libkern.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)libkern.h 8.1 (Berkeley) 6/10/93
- * $Id: libkern.h,v 1.6 1995/03/16 18:12:58 bde Exp $
+ * $Id: libkern.h,v 1.7 1995/04/23 08:05:25 bde Exp $
*/
#include <sys/types.h>
diff --git a/sys/sys/link_aout.h b/sys/sys/link_aout.h
deleted file mode 100644
index 15277a725a8e..000000000000
--- a/sys/sys/link_aout.h
+++ /dev/null
@@ -1,297 +0,0 @@
-/*
- * Copyright (c) 1993 Paul Kranenburg
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Paul Kranenburg.
- * 4. The name of the author may not be used to endorse or promote products
- * derived from this software withough specific prior written permission
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * $Id: link.h,v 1.4 1995/03/04 17:49:20 nate Exp $
- */
-
-/*
- * RRS section definitions.
- *
- * The layout of some data structures defined in this header file is
- * such that we can provide compatibility with the SunOS 4.x shared
- * library scheme.
- */
-
-#ifndef _LINK_H_
-#define _LINK_H_
-
-/*
- * A `Shared Object Descriptor' descibes a shared object that is needed
- * to complete the link edit process of the object containing it.
- * A list of such objects (chained through `sod_next') is pointed at
- * by `sdt_sods' in the section_dispatch_table structure.
- */
-
-struct sod { /* Shared Object Descriptor */
- long sod_name; /* name (relative to load address) */
- u_int sod_library : 1, /* Searched for by library rules */
- sod_reserved : 31;
- short sod_major; /* major version number */
- short sod_minor; /* minor version number */
- long sod_next; /* next sod */
-};
-
-/*
- * `Shared Object Map's are used by the run-time link editor (ld.so) to
- * keep track of all shared objects loaded into a process' address space.
- * These structures are only used at run-time and do not occur within
- * the text or data segment of an executable or shared library.
- */
-struct so_map { /* Shared Object Map */
- caddr_t som_addr; /* Address at which object mapped */
- char *som_path; /* Path to mmap'ed file */
- struct so_map *som_next; /* Next map in chain */
- struct sod *som_sod; /* Sod responsible for this map */
- caddr_t som_sodbase; /* Base address of this sod */
- u_int som_write : 1; /* Text is currently writable */
- struct _dynamic *som_dynamic; /* _dynamic structure */
- caddr_t som_spd; /* Private data */
-};
-
-/*
- * Symbol description with size. This is simply an `nlist' with
- * one field (nz_size) added.
- * Used to convey size information on items in the data segment
- * of shared objects. An array of these live in the shared object's
- * text segment and is addressed by the `sdt_nzlist' field.
- */
-struct nzlist {
- struct nlist nlist;
- u_long nz_size;
-#define nz_un nlist.n_un
-#define nz_strx nlist.n_un.n_strx
-#define nz_name nlist.n_un.n_name
-#define nz_type nlist.n_type
-#define nz_value nlist.n_value
-#define nz_desc nlist.n_desc
-#define nz_other nlist.n_other
-};
-
-#define N_AUX(p) ((p)->n_other & 0xf)
-#define N_BIND(p) (((unsigned int)(p)->n_other >> 4) & 0xf)
-#define N_OTHER(r, v) (((unsigned int)(r) << 4) | ((v) & 0xf))
-
-#define AUX_OBJECT 1
-#define AUX_FUNC 2
-/*#define BIND_LOCAL 0 not used */
-/*#define BIND_GLOBAL 1 not used */
-#define BIND_WEAK 2
-
-
-/*
- * The `section_dispatch_table' structure contains offsets to various data
- * structures needed to do run-time relocation.
- */
-struct section_dispatch_table {
- struct so_map *sdt_loaded; /* List of loaded objects */
- long sdt_sods; /* List of shared objects descriptors */
- long sdt_filler1; /* Unused (was: search rules) */
- long sdt_got; /* Global offset table */
- long sdt_plt; /* Procedure linkage table */
- long sdt_rel; /* Relocation table */
- long sdt_hash; /* Symbol hash table */
- long sdt_nzlist; /* Symbol table itself */
- long sdt_filler2; /* Unused (was: stab_hash) */
- long sdt_buckets; /* Number of hash buckets */
- long sdt_strings; /* Symbol strings */
- long sdt_str_sz; /* Size of symbol strings */
- long sdt_text_sz; /* Size of text area */
- long sdt_plt_sz; /* Size of procedure linkage table */
-};
-
-/*
- * RRS symbol hash table, addressed by `sdt_hash' in section_dispatch_table.
- * Used to quickly lookup symbols of the shared object by hashing
- * on the symbol's name. `rh_symbolnum' is the index of the symbol
- * in the shared object's symbol list (`sdt_nzlist'), `rh_next' is
- * the next symbol in the hash bucket (in case of collisions).
- */
-struct rrs_hash {
- int rh_symbolnum; /* Symbol number */
- int rh_next; /* Next hash entry */
-};
-
-/*
- * `rt_symbols' is used to keep track of run-time allocated commons
- * and data items copied from shared objects.
- */
-struct rt_symbol {
- struct nzlist *rt_sp; /* The symbol */
- struct rt_symbol *rt_next; /* Next in linear list */
- struct rt_symbol *rt_link; /* Next in bucket */
- caddr_t rt_srcaddr; /* Address of "master" copy */
- struct so_map *rt_smp; /* Originating map */
-};
-
-/*
- * Debugger interface structure.
- */
-struct so_debug {
- int dd_version; /* Version # of interface */
- int dd_in_debugger; /* Set when run by debugger */
- int dd_sym_loaded; /* Run-time linking brought more
- symbols into scope */
- char *dd_bpt_addr; /* Address of rtld-generated bpt */
- int dd_bpt_shadow; /* Original contents of bpt */
- struct rt_symbol *dd_cc; /* Allocated commons/copied data */
-};
-
-/*
- * Version returned to crt0 from ld.so
- */
-#define LDSO_VERSION_NONE 0 /* FreeBSD2.0, 2.0.5 */
-#define LDSO_VERSION_HAS_DLEXIT 1 /* includes dlexit in ld_entry */
-
-/*
- * Entry points into ld.so - user interface to the run-time linker.
- * Entries are valid for the given version numbers returned by ld.so
- * to crt0.
- */
-struct ld_entry {
- void *(*dlopen) __P((char *, int)); /* NONE */
- int (*dlclose) __P((void *)); /* NONE */
- void *(*dlsym) __P((void *, char *)); /* NONE */
- char *(*dlerror) __P((void)); /* NONE */
- void (*dlexit) __P((void)); /* HAS_DLEXIT */
-};
-
-/*
- * dl*() prototypes.
- */
-extern void *dlopen __P((char *, int));
-extern int dlclose __P((void *));
-extern void *dlsym __P((void *, char *));
-extern char *dlerror __P((void));
-
-
-/*
- * This is the structure pointed at by the __DYNAMIC symbol if an
- * executable requires the attention of the run-time link editor.
- * __DYNAMIC is given the value zero if no run-time linking needs to
- * be done (it is always present in shared objects).
- * The union `d_un' provides for different versions of the dynamic
- * linking mechanism (switched on by `d_version'). The last version
- * used by Sun is 3. We leave some room here and go to version number
- * 8 for NetBSD, the main difference lying in the support for the
- * `nz_list' type of symbols.
- */
-
-struct _dynamic {
- int d_version; /* version # of this interface */
- struct so_debug *d_debug;
- union {
- struct section_dispatch_table *d_sdt;
- } d_un;
- struct ld_entry *d_entry; /* XXX */
-};
-
-#define LD_VERSION_SUN (3)
-#define LD_VERSION_BSD (8)
-#define LD_VERSION_NZLIST_P(v) ((v) >= 8)
-
-#define LD_GOT(x) ((x)->d_un.d_sdt->sdt_got)
-#define LD_PLT(x) ((x)->d_un.d_sdt->sdt_plt)
-#define LD_REL(x) ((x)->d_un.d_sdt->sdt_rel)
-#define LD_SYMBOL(x) ((x)->d_un.d_sdt->sdt_nzlist)
-#define LD_HASH(x) ((x)->d_un.d_sdt->sdt_hash)
-#define LD_STRINGS(x) ((x)->d_un.d_sdt->sdt_strings)
-#define LD_NEED(x) ((x)->d_un.d_sdt->sdt_sods)
-#define LD_BUCKETS(x) ((x)->d_un.d_sdt->sdt_buckets)
-
-#define LD_GOTSZ(x) ((x)->d_un.d_sdt->sdt_plt - (x)->d_un.d_sdt->sdt_got)
-#define LD_RELSZ(x) ((x)->d_un.d_sdt->sdt_hash - (x)->d_un.d_sdt->sdt_rel)
-#define LD_HASHSZ(x) ((x)->d_un.d_sdt->sdt_nzlist - (x)->d_un.d_sdt->sdt_hash)
-#define LD_STABSZ(x) ((x)->d_un.d_sdt->sdt_strings - (x)->d_un.d_sdt->sdt_nzlist)
-#define LD_PLTSZ(x) ((x)->d_un.d_sdt->sdt_plt_sz)
-#define LD_STRSZ(x) ((x)->d_un.d_sdt->sdt_str_sz)
-#define LD_TEXTSZ(x) ((x)->d_un.d_sdt->sdt_text_sz)
-
-/*
- * Interface to ld.so
- */
-struct crt_ldso {
- int crt_ba; /* Base address of ld.so */
- int crt_dzfd; /* "/dev/zero" file decriptor (SunOS) */
- int crt_ldfd; /* ld.so file descriptor */
- struct _dynamic *crt_dp; /* Main's __DYNAMIC */
- char **crt_ep; /* environment strings */
- caddr_t crt_bp; /* Breakpoint if run from debugger */
- char *crt_prog; /* Program name (v3) */
- char *crt_ldso; /* Link editor name (v4) */
- struct ld_entry *crt_ldentry; /* dl*() access (v4) */
-};
-
-/*
- * Version passed from crt0 to ld.so (1st argument to _rtld()).
- */
-#define CRT_VERSION_SUN 1
-#define CRT_VERSION_BSD_2 2
-#define CRT_VERSION_BSD_3 3
-#define CRT_VERSION_BSD_4 4
-
-/*
- * Maximum number of recognized shared object version numbers.
- */
-#define MAXDEWEY 8
-
-/*
- * Header of the hints file.
- */
-struct hints_header {
- long hh_magic;
-#define HH_MAGIC 011421044151
- long hh_version; /* Interface version number */
-#define LD_HINTS_VERSION_1 1
- long hh_hashtab; /* Location of hash table */
- long hh_nbucket; /* Number of buckets in hashtab */
- long hh_strtab; /* Location of strings */
- long hh_strtab_sz; /* Size of strings */
- long hh_ehints; /* End of hints (max offset in file) */
-};
-
-#define HH_BADMAG(hdr) ((hdr).hh_magic != HH_MAGIC)
-
-/*
- * Hash table element in hints file.
- */
-struct hints_bucket {
- /* namex and pathx are indices into the string table */
- int hi_namex; /* Library name */
- int hi_pathx; /* Full path */
- int hi_dewey[MAXDEWEY]; /* The versions */
- int hi_ndewey; /* Number of version numbers */
-#define hi_major hi_dewey[0]
-#define hi_minor hi_dewey[1]
- int hi_next; /* Next in this bucket */
-};
-
-#define _PATH_LD_HINTS "/var/run/ld.so.hints"
-
-#endif /* _LINK_H_ */
-
diff --git a/sys/sys/link_elf.h b/sys/sys/link_elf.h
deleted file mode 100644
index 15277a725a8e..000000000000
--- a/sys/sys/link_elf.h
+++ /dev/null
@@ -1,297 +0,0 @@
-/*
- * Copyright (c) 1993 Paul Kranenburg
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Paul Kranenburg.
- * 4. The name of the author may not be used to endorse or promote products
- * derived from this software withough specific prior written permission
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * $Id: link.h,v 1.4 1995/03/04 17:49:20 nate Exp $
- */
-
-/*
- * RRS section definitions.
- *
- * The layout of some data structures defined in this header file is
- * such that we can provide compatibility with the SunOS 4.x shared
- * library scheme.
- */
-
-#ifndef _LINK_H_
-#define _LINK_H_
-
-/*
- * A `Shared Object Descriptor' descibes a shared object that is needed
- * to complete the link edit process of the object containing it.
- * A list of such objects (chained through `sod_next') is pointed at
- * by `sdt_sods' in the section_dispatch_table structure.
- */
-
-struct sod { /* Shared Object Descriptor */
- long sod_name; /* name (relative to load address) */
- u_int sod_library : 1, /* Searched for by library rules */
- sod_reserved : 31;
- short sod_major; /* major version number */
- short sod_minor; /* minor version number */
- long sod_next; /* next sod */
-};
-
-/*
- * `Shared Object Map's are used by the run-time link editor (ld.so) to
- * keep track of all shared objects loaded into a process' address space.
- * These structures are only used at run-time and do not occur within
- * the text or data segment of an executable or shared library.
- */
-struct so_map { /* Shared Object Map */
- caddr_t som_addr; /* Address at which object mapped */
- char *som_path; /* Path to mmap'ed file */
- struct so_map *som_next; /* Next map in chain */
- struct sod *som_sod; /* Sod responsible for this map */
- caddr_t som_sodbase; /* Base address of this sod */
- u_int som_write : 1; /* Text is currently writable */
- struct _dynamic *som_dynamic; /* _dynamic structure */
- caddr_t som_spd; /* Private data */
-};
-
-/*
- * Symbol description with size. This is simply an `nlist' with
- * one field (nz_size) added.
- * Used to convey size information on items in the data segment
- * of shared objects. An array of these live in the shared object's
- * text segment and is addressed by the `sdt_nzlist' field.
- */
-struct nzlist {
- struct nlist nlist;
- u_long nz_size;
-#define nz_un nlist.n_un
-#define nz_strx nlist.n_un.n_strx
-#define nz_name nlist.n_un.n_name
-#define nz_type nlist.n_type
-#define nz_value nlist.n_value
-#define nz_desc nlist.n_desc
-#define nz_other nlist.n_other
-};
-
-#define N_AUX(p) ((p)->n_other & 0xf)
-#define N_BIND(p) (((unsigned int)(p)->n_other >> 4) & 0xf)
-#define N_OTHER(r, v) (((unsigned int)(r) << 4) | ((v) & 0xf))
-
-#define AUX_OBJECT 1
-#define AUX_FUNC 2
-/*#define BIND_LOCAL 0 not used */
-/*#define BIND_GLOBAL 1 not used */
-#define BIND_WEAK 2
-
-
-/*
- * The `section_dispatch_table' structure contains offsets to various data
- * structures needed to do run-time relocation.
- */
-struct section_dispatch_table {
- struct so_map *sdt_loaded; /* List of loaded objects */
- long sdt_sods; /* List of shared objects descriptors */
- long sdt_filler1; /* Unused (was: search rules) */
- long sdt_got; /* Global offset table */
- long sdt_plt; /* Procedure linkage table */
- long sdt_rel; /* Relocation table */
- long sdt_hash; /* Symbol hash table */
- long sdt_nzlist; /* Symbol table itself */
- long sdt_filler2; /* Unused (was: stab_hash) */
- long sdt_buckets; /* Number of hash buckets */
- long sdt_strings; /* Symbol strings */
- long sdt_str_sz; /* Size of symbol strings */
- long sdt_text_sz; /* Size of text area */
- long sdt_plt_sz; /* Size of procedure linkage table */
-};
-
-/*
- * RRS symbol hash table, addressed by `sdt_hash' in section_dispatch_table.
- * Used to quickly lookup symbols of the shared object by hashing
- * on the symbol's name. `rh_symbolnum' is the index of the symbol
- * in the shared object's symbol list (`sdt_nzlist'), `rh_next' is
- * the next symbol in the hash bucket (in case of collisions).
- */
-struct rrs_hash {
- int rh_symbolnum; /* Symbol number */
- int rh_next; /* Next hash entry */
-};
-
-/*
- * `rt_symbols' is used to keep track of run-time allocated commons
- * and data items copied from shared objects.
- */
-struct rt_symbol {
- struct nzlist *rt_sp; /* The symbol */
- struct rt_symbol *rt_next; /* Next in linear list */
- struct rt_symbol *rt_link; /* Next in bucket */
- caddr_t rt_srcaddr; /* Address of "master" copy */
- struct so_map *rt_smp; /* Originating map */
-};
-
-/*
- * Debugger interface structure.
- */
-struct so_debug {
- int dd_version; /* Version # of interface */
- int dd_in_debugger; /* Set when run by debugger */
- int dd_sym_loaded; /* Run-time linking brought more
- symbols into scope */
- char *dd_bpt_addr; /* Address of rtld-generated bpt */
- int dd_bpt_shadow; /* Original contents of bpt */
- struct rt_symbol *dd_cc; /* Allocated commons/copied data */
-};
-
-/*
- * Version returned to crt0 from ld.so
- */
-#define LDSO_VERSION_NONE 0 /* FreeBSD2.0, 2.0.5 */
-#define LDSO_VERSION_HAS_DLEXIT 1 /* includes dlexit in ld_entry */
-
-/*
- * Entry points into ld.so - user interface to the run-time linker.
- * Entries are valid for the given version numbers returned by ld.so
- * to crt0.
- */
-struct ld_entry {
- void *(*dlopen) __P((char *, int)); /* NONE */
- int (*dlclose) __P((void *)); /* NONE */
- void *(*dlsym) __P((void *, char *)); /* NONE */
- char *(*dlerror) __P((void)); /* NONE */
- void (*dlexit) __P((void)); /* HAS_DLEXIT */
-};
-
-/*
- * dl*() prototypes.
- */
-extern void *dlopen __P((char *, int));
-extern int dlclose __P((void *));
-extern void *dlsym __P((void *, char *));
-extern char *dlerror __P((void));
-
-
-/*
- * This is the structure pointed at by the __DYNAMIC symbol if an
- * executable requires the attention of the run-time link editor.
- * __DYNAMIC is given the value zero if no run-time linking needs to
- * be done (it is always present in shared objects).
- * The union `d_un' provides for different versions of the dynamic
- * linking mechanism (switched on by `d_version'). The last version
- * used by Sun is 3. We leave some room here and go to version number
- * 8 for NetBSD, the main difference lying in the support for the
- * `nz_list' type of symbols.
- */
-
-struct _dynamic {
- int d_version; /* version # of this interface */
- struct so_debug *d_debug;
- union {
- struct section_dispatch_table *d_sdt;
- } d_un;
- struct ld_entry *d_entry; /* XXX */
-};
-
-#define LD_VERSION_SUN (3)
-#define LD_VERSION_BSD (8)
-#define LD_VERSION_NZLIST_P(v) ((v) >= 8)
-
-#define LD_GOT(x) ((x)->d_un.d_sdt->sdt_got)
-#define LD_PLT(x) ((x)->d_un.d_sdt->sdt_plt)
-#define LD_REL(x) ((x)->d_un.d_sdt->sdt_rel)
-#define LD_SYMBOL(x) ((x)->d_un.d_sdt->sdt_nzlist)
-#define LD_HASH(x) ((x)->d_un.d_sdt->sdt_hash)
-#define LD_STRINGS(x) ((x)->d_un.d_sdt->sdt_strings)
-#define LD_NEED(x) ((x)->d_un.d_sdt->sdt_sods)
-#define LD_BUCKETS(x) ((x)->d_un.d_sdt->sdt_buckets)
-
-#define LD_GOTSZ(x) ((x)->d_un.d_sdt->sdt_plt - (x)->d_un.d_sdt->sdt_got)
-#define LD_RELSZ(x) ((x)->d_un.d_sdt->sdt_hash - (x)->d_un.d_sdt->sdt_rel)
-#define LD_HASHSZ(x) ((x)->d_un.d_sdt->sdt_nzlist - (x)->d_un.d_sdt->sdt_hash)
-#define LD_STABSZ(x) ((x)->d_un.d_sdt->sdt_strings - (x)->d_un.d_sdt->sdt_nzlist)
-#define LD_PLTSZ(x) ((x)->d_un.d_sdt->sdt_plt_sz)
-#define LD_STRSZ(x) ((x)->d_un.d_sdt->sdt_str_sz)
-#define LD_TEXTSZ(x) ((x)->d_un.d_sdt->sdt_text_sz)
-
-/*
- * Interface to ld.so
- */
-struct crt_ldso {
- int crt_ba; /* Base address of ld.so */
- int crt_dzfd; /* "/dev/zero" file decriptor (SunOS) */
- int crt_ldfd; /* ld.so file descriptor */
- struct _dynamic *crt_dp; /* Main's __DYNAMIC */
- char **crt_ep; /* environment strings */
- caddr_t crt_bp; /* Breakpoint if run from debugger */
- char *crt_prog; /* Program name (v3) */
- char *crt_ldso; /* Link editor name (v4) */
- struct ld_entry *crt_ldentry; /* dl*() access (v4) */
-};
-
-/*
- * Version passed from crt0 to ld.so (1st argument to _rtld()).
- */
-#define CRT_VERSION_SUN 1
-#define CRT_VERSION_BSD_2 2
-#define CRT_VERSION_BSD_3 3
-#define CRT_VERSION_BSD_4 4
-
-/*
- * Maximum number of recognized shared object version numbers.
- */
-#define MAXDEWEY 8
-
-/*
- * Header of the hints file.
- */
-struct hints_header {
- long hh_magic;
-#define HH_MAGIC 011421044151
- long hh_version; /* Interface version number */
-#define LD_HINTS_VERSION_1 1
- long hh_hashtab; /* Location of hash table */
- long hh_nbucket; /* Number of buckets in hashtab */
- long hh_strtab; /* Location of strings */
- long hh_strtab_sz; /* Size of strings */
- long hh_ehints; /* End of hints (max offset in file) */
-};
-
-#define HH_BADMAG(hdr) ((hdr).hh_magic != HH_MAGIC)
-
-/*
- * Hash table element in hints file.
- */
-struct hints_bucket {
- /* namex and pathx are indices into the string table */
- int hi_namex; /* Library name */
- int hi_pathx; /* Full path */
- int hi_dewey[MAXDEWEY]; /* The versions */
- int hi_ndewey; /* Number of version numbers */
-#define hi_major hi_dewey[0]
-#define hi_minor hi_dewey[1]
- int hi_next; /* Next in this bucket */
-};
-
-#define _PATH_LD_HINTS "/var/run/ld.so.hints"
-
-#endif /* _LINK_H_ */
-
diff --git a/sys/sys/lkm.h b/sys/sys/lkm.h
index 486ddbe43de0..bd09af99ff08 100644
--- a/sys/sys/lkm.h
+++ b/sys/sys/lkm.h
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: lkm.h,v 1.5 1995/04/20 05:08:51 wpaul Exp $
+ * $Id: lkm.h,v 1.5.4.1 1995/08/05 07:42:51 davidg Exp $
*/
#ifndef _SYS_LKM_H_
diff --git a/sys/sys/lockf.h b/sys/sys/lockf.h
index 09b2b68af90d..bbbaf2a84968 100644
--- a/sys/sys/lockf.h
+++ b/sys/sys/lockf.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)lockf.h 8.1 (Berkeley) 6/11/93
- * $Id: lockf.h,v 1.1 1994/08/08 17:30:58 davidg Exp $
+ * $Id: lockf.h,v 1.2 1994/08/21 04:41:50 paul Exp $
*/
#ifndef _SYS_LOCKF_H_
diff --git a/sys/sys/malloc.h b/sys/sys/malloc.h
index e7c96f262e0b..de20bef594e8 100644
--- a/sys/sys/malloc.h
+++ b/sys/sys/malloc.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)malloc.h 8.3 (Berkeley) 1/12/94
- * $Id: malloc.h,v 1.7 1995/03/12 13:25:01 ugen Exp $
+ * $Id: malloc.h,v 1.8 1995/04/20 03:18:15 julian Exp $
*/
#ifndef _SYS_MALLOC_H_
diff --git a/sys/sys/mbuf.h b/sys/sys/mbuf.h
index 3f888a626135..7a6ffa50a206 100644
--- a/sys/sys/mbuf.h
+++ b/sys/sys/mbuf.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)mbuf.h 8.3 (Berkeley) 1/21/94
- * $Id: mbuf.h,v 1.8 1994/11/04 00:28:38 davidg Exp $
+ * $Id: mbuf.h,v 1.9 1994/11/14 13:54:20 bde Exp $
*/
#ifndef _SYS_MBUF_H_
diff --git a/sys/sys/mman.h b/sys/sys/mman.h
index a3d4c47a97a1..b02c28d0538d 100644
--- a/sys/sys/mman.h
+++ b/sys/sys/mman.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)mman.h 8.1 (Berkeley) 6/2/93
- * $Id: mman.h,v 1.6 1995/03/25 17:28:30 davidg Exp $
+ * $Id: mman.h,v 1.7 1995/05/14 19:19:07 nate Exp $
*/
#ifndef _SYS_MMAN_H_
diff --git a/sys/sys/mount.h b/sys/sys/mount.h
index 1e6b19a849f0..d39ff89dbb1f 100644
--- a/sys/sys/mount.h
+++ b/sys/sys/mount.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)mount.h 8.13 (Berkeley) 3/27/94
- * $Id: mount.h,v 1.18 1995/05/21 21:39:24 davidg Exp $
+ * $Id: mount.h,v 1.19 1995/05/30 08:14:28 rgrimes Exp $
*/
#ifndef _SYS_MOUNT_H_
diff --git a/sys/sys/msg.h b/sys/sys/msg.h
index 48e7c5bd21ee..035bb655f70b 100644
--- a/sys/sys/msg.h
+++ b/sys/sys/msg.h
@@ -1,4 +1,4 @@
-/* $Id: msg.h,v 1.2 1994/09/17 13:24:27 davidg Exp $ */
+/* $Id: msg.h,v 1.3 1995/03/28 07:57:34 bde Exp $ */
/* $NetBSD: msg.h,v 1.4 1994/06/29 06:44:43 cgd Exp $ */
/*
diff --git a/sys/sys/msgbuf.h b/sys/sys/msgbuf.h
index d4823ea6685d..43eb79a6ed0a 100644
--- a/sys/sys/msgbuf.h
+++ b/sys/sys/msgbuf.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)msgbuf.h 8.1 (Berkeley) 6/2/93
- * $Id: msgbuf.h,v 1.5 1995/03/16 18:16:21 bde Exp $
+ * $Id: msgbuf.h,v 1.5.4.1 1995/08/11 04:04:20 davidg Exp $
*/
#ifndef _SYS_MSGBUF_H_
diff --git a/sys/sys/mtio.h b/sys/sys/mtio.h
index 8dbdd8b1f4e1..c3ad7d1e7a74 100644
--- a/sys/sys/mtio.h
+++ b/sys/sys/mtio.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)mtio.h 8.1 (Berkeley) 6/2/93
- * $Id: mtio.h,v 1.4 1994/10/28 13:19:42 jkh Exp $
+ * $Id: mtio.h,v 1.5 1995/03/21 11:21:37 dufault Exp $
*/
#ifndef _SYS_MTIO_H_
diff --git a/sys/sys/namei.h b/sys/sys/namei.h
index 421e3f284599..d21476b9fb1b 100644
--- a/sys/sys/namei.h
+++ b/sys/sys/namei.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)namei.h 8.2 (Berkeley) 1/4/94
- * $Id: namei.h,v 1.5 1995/03/09 20:27:21 phk Exp $
+ * $Id: namei.h,v 1.5.4.1 1995/08/25 01:49:15 davidg Exp $
*/
#ifndef _SYS_NAMEI_H_
diff --git a/sys/sys/nlist_aout.h b/sys/sys/nlist_aout.h
deleted file mode 100644
index b80c0b21f717..000000000000
--- a/sys/sys/nlist_aout.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/*-
- * Copyright (c) 1991, 1993
- * The Regents of the University of California. All rights reserved.
- * (c) UNIX System Laboratories, Inc.
- * All or some portions of this file are derived from material licensed
- * to the University of California by American Telephone and Telegraph
- * Co. or Unix System Laboratories, Inc. and are reproduced herein with
- * the permission of UNIX System Laboratories, Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)nlist.h 8.2 (Berkeley) 1/21/94
- *
- * $Id$
- */
-
-#ifndef _NLIST_H_
-#define _NLIST_H_
-
-/*
- * Symbol table entry format. The #ifdef's are so that programs including
- * nlist.h can initialize nlist structures statically.
- */
-struct nlist {
-#ifdef _AOUT_INCLUDE_
- union {
- char *n_name; /* symbol name (in memory) */
- long n_strx; /* file string table offset (on disk) */
- } n_un;
-#else
- char *n_name; /* symbol name (in memory) */
-#endif
-
-#define N_UNDF 0x00 /* undefined */
-#define N_ABS 0x02 /* absolute address */
-#define N_TEXT 0x04 /* text segment */
-#define N_DATA 0x06 /* data segment */
-#define N_BSS 0x08 /* bss segment */
-#define N_INDR 0x0a /* alias definition */
-#define N_SIZE 0x0c /* pseudo type, defines a symbol's size */
-#define N_COMM 0x12 /* common reference */
-#define N_FN 0x1e /* file name (N_EXT on) */
-#define N_WARN 0x1e /* warning message (N_EXT off) */
-
-#define N_EXT 0x01 /* external (global) bit, OR'ed in */
-#define N_TYPE 0x1e /* mask for all the type bits */
- unsigned char n_type; /* type defines */
-
- char n_other; /* spare */
-#define n_hash n_desc /* used internally by ld(1); XXX */
- short n_desc; /* used by stab entries */
- unsigned long n_value; /* address/value of the symbol */
-};
-
-#define N_FORMAT "%08x" /* namelist value format; XXX */
-#define N_STAB 0x0e0 /* mask for debugger symbols -- stab(5) */
-
-#include <sys/cdefs.h>
-
-__BEGIN_DECLS
-int nlist __P((const char *, struct nlist *));
-__END_DECLS
-
-#endif /* !_NLIST_H_ */
diff --git a/sys/sys/param.h b/sys/sys/param.h
index 09cb1ce9ccd9..c2d9f59ea46e 100644
--- a/sys/sys/param.h
+++ b/sys/sys/param.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)param.h 8.2 (Berkeley) 1/21/94
- * $Id: param.h,v 1.7 1995/02/07 03:33:05 davidg Exp $
+ * $Id: param.h,v 1.8 1995/05/14 03:00:05 davidg Exp $
*/
#ifndef _SYS_PARAM_H_
diff --git a/sys/sys/proc.h b/sys/sys/proc.h
index 9097d0b3c003..c3394aa9d58a 100644
--- a/sys/sys/proc.h
+++ b/sys/sys/proc.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)proc.h 8.8 (Berkeley) 1/21/94
- * $Id: proc.h,v 1.16 1995/02/21 00:37:31 davidg Exp $
+ * $Id: proc.h,v 1.17 1995/03/16 18:16:22 bde Exp $
*/
#ifndef _SYS_PROC_H_
diff --git a/sys/sys/protosw.h b/sys/sys/protosw.h
index f01f91013c99..00bd154e473a 100644
--- a/sys/sys/protosw.h
+++ b/sys/sys/protosw.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)protosw.h 8.1 (Berkeley) 6/2/93
- * $Id: protosw.h,v 1.5 1994/10/08 22:22:57 phk Exp $
+ * $Id: protosw.h,v 1.6 1995/02/07 02:01:57 wollman Exp $
*/
#ifndef _SYS_PROTOSW_H_
diff --git a/sys/sys/ptrace.h b/sys/sys/ptrace.h
index 9c6c15945a9b..e308870ec4e0 100644
--- a/sys/sys/ptrace.h
+++ b/sys/sys/ptrace.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ptrace.h 8.2 (Berkeley) 1/4/94
- * $Id: ptrace.h,v 1.3 1994/08/08 13:00:27 davidg Exp $
+ * $Id: ptrace.h,v 1.4 1995/03/16 18:16:23 bde Exp $
*/
#ifndef _SYS_PTRACE_H_
diff --git a/sys/sys/queue.h b/sys/sys/queue.h
index 0c53c003fa22..ebf4a87030a8 100644
--- a/sys/sys/queue.h
+++ b/sys/sys/queue.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)queue.h 8.4 (Berkeley) 1/4/94
- * $Id: queue.h,v 1.2 1994/08/02 07:53:25 davidg Exp $
+ * $Id: queue.h,v 1.3 1995/05/30 08:14:30 rgrimes Exp $
*/
#ifndef _SYS_QUEUE_H_
diff --git a/sys/sys/reboot.h b/sys/sys/reboot.h
index 29f2ce0ef84d..8187bcf916a1 100644
--- a/sys/sys/reboot.h
+++ b/sys/sys/reboot.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)reboot.h 8.1 (Berkeley) 6/2/93
- * $Id: reboot.h,v 1.9 1995/01/25 20:05:03 bde Exp $
+ * $Id: reboot.h,v 1.10 1995/04/20 06:06:42 phk Exp $
*/
#ifndef _SYS_REBOOT_H_
diff --git a/sys/sys/resource.h b/sys/sys/resource.h
index 432667ac58c1..49de69045d6a 100644
--- a/sys/sys/resource.h
+++ b/sys/sys/resource.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)resource.h 8.2 (Berkeley) 1/4/94
- * $Id: resource.h,v 1.2 1994/08/02 07:53:28 davidg Exp $
+ * $Id: resource.h,v 1.3 1995/01/21 14:58:25 bde Exp $
*/
#ifndef _SYS_RESOURCE_H_
diff --git a/sys/sys/resourcevar.h b/sys/sys/resourcevar.h
index f03d3085dee5..c06d40d1aa27 100644
--- a/sys/sys/resourcevar.h
+++ b/sys/sys/resourcevar.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)resourcevar.h 8.3 (Berkeley) 2/22/94
- * $Id: resourcevar.h,v 1.5 1994/10/10 00:58:33 phk Exp $
+ * $Id: resourcevar.h,v 1.6 1994/11/14 14:09:38 bde Exp $
*/
#ifndef _SYS_RESOURCEVAR_H_
diff --git a/sys/sys/rlist.h b/sys/sys/rlist.h
index 4c85b717b592..86cb3c6b37cd 100644
--- a/sys/sys/rlist.h
+++ b/sys/sys/rlist.h
@@ -16,7 +16,7 @@
* rlist_alloc(&swapmap, 100, &loc); obtain 100 sectors from swap
*
* from: unknown?
- * $Id: rlist.h,v 1.6 1993/11/25 01:38:01 wollman Exp $
+ * $Id: rlist.h,v 1.7 1994/10/09 07:35:10 davidg Exp $
*/
#ifndef _SYS_RLIST_H_
diff --git a/sys/sys/rtprio.h b/sys/sys/rtprio.h
index 9a22a34806b7..217c62412432 100644
--- a/sys/sys/rtprio.h
+++ b/sys/sys/rtprio.h
@@ -28,7 +28,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: rtprio.h,v 1.1 1994/09/01 05:12:53 davidg Exp $
+ * $Id: rtprio.h,v 1.2 1994/10/02 04:45:59 davidg Exp $
*/
#ifndef _SYS_RTPRIO_H_
diff --git a/sys/sys/scsiio.h b/sys/sys/scsiio.h
index de461663a516..75c86a13e052 100644
--- a/sys/sys/scsiio.h
+++ b/sys/sys/scsiio.h
@@ -1,5 +1,5 @@
/*
- * $Id: scsiio.h,v 1.3 1995/01/08 13:39:46 dufault Exp $
+ * $Id: scsiio.h,v 1.4 1995/04/28 19:26:02 dufault Exp $
*/
#ifndef _SYS_SCSIIO_H_
#define _SYS_SCSIIO_H_
diff --git a/sys/sys/select.h b/sys/sys/select.h
index e69971e3b684..138eb17fa44c 100644
--- a/sys/sys/select.h
+++ b/sys/sys/select.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)select.h 8.2 (Berkeley) 1/4/94
- * $Id$
+ * $Id: select.h,v 1.2 1994/08/02 07:53:31 davidg Exp $
*/
#ifndef _SYS_SELECT_H_
diff --git a/sys/sys/sem.h b/sys/sys/sem.h
index ef08f4e25ed2..26dc95e71342 100644
--- a/sys/sys/sem.h
+++ b/sys/sys/sem.h
@@ -1,4 +1,4 @@
-/* $Id: sem.h,v 1.2 1994/09/17 13:24:28 davidg Exp $ */
+/* $Id: sem.h,v 1.3 1995/03/28 07:57:35 bde Exp $ */
/* $NetBSD: sem.h,v 1.5 1994/06/29 06:45:15 cgd Exp $ */
/*
diff --git a/sys/sys/shm.h b/sys/sys/shm.h
index 710ad4475dca..f0548ecc21d2 100644
--- a/sys/sys/shm.h
+++ b/sys/sys/shm.h
@@ -1,4 +1,4 @@
-/* $Id: shm.h,v 1.2 1994/09/17 13:24:29 davidg Exp $ */
+/* $Id: shm.h,v 1.3 1994/10/02 17:24:54 phk Exp $ */
/* $NetBSD: shm.h,v 1.15 1994/06/29 06:45:17 cgd Exp $ */
/*
diff --git a/sys/sys/signal.h b/sys/sys/signal.h
index c26054b094a9..fd18532ffea3 100644
--- a/sys/sys/signal.h
+++ b/sys/sys/signal.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)signal.h 8.2 (Berkeley) 1/21/94
- * $Id: signal.h,v 1.2 1994/08/02 07:53:32 davidg Exp $
+ * $Id: signal.h,v 1.3 1995/01/29 01:19:25 ats Exp $
*/
#ifndef _SYS_SIGNAL_H_
diff --git a/sys/sys/signalvar.h b/sys/sys/signalvar.h
index 9495c5f32100..fe002f995006 100644
--- a/sys/sys/signalvar.h
+++ b/sys/sys/signalvar.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)signalvar.h 8.3 (Berkeley) 1/4/94
- * $Id: signalvar.h,v 1.4 1994/10/02 17:24:55 phk Exp $
+ * $Id: signalvar.h,v 1.5 1995/03/16 18:16:24 bde Exp $
*/
#ifndef _SYS_SIGNALVAR_H_ /* tmp for user.h */
diff --git a/sys/sys/socket.h b/sys/sys/socket.h
index edc25d11fa09..1c2bcf303f5c 100644
--- a/sys/sys/socket.h
+++ b/sys/sys/socket.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)socket.h 8.4 (Berkeley) 2/21/94
- * $Id: socket.h,v 1.7 1995/09/13 05:35:49 davidg Exp $
+ * $Id: socket.h,v 1.6.4.1 1995/09/15 10:13:05 davidg Exp $
*/
#ifndef _SYS_SOCKET_H_
diff --git a/sys/sys/socketvar.h b/sys/sys/socketvar.h
index 9ac9dfaa03e8..852dfaceb06e 100644
--- a/sys/sys/socketvar.h
+++ b/sys/sys/socketvar.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)socketvar.h 8.1 (Berkeley) 6/2/93
- * $Id: socketvar.h,v 1.5 1994/10/02 17:24:57 phk Exp $
+ * $Id: socketvar.h,v 1.6 1995/05/30 08:14:33 rgrimes Exp $
*/
#ifndef _SYS_SOCKETVAR_H_
diff --git a/sys/sys/sockio.h b/sys/sys/sockio.h
index 41fc86b15aac..8f5478e240c7 100644
--- a/sys/sys/sockio.h
+++ b/sys/sys/sockio.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)sockio.h 8.1 (Berkeley) 3/28/94
- * $Id: sockio.h,v 1.4 1994/09/06 22:42:31 wollman Exp $
+ * $Id: sockio.h,v 1.5 1994/12/21 22:57:05 wollman Exp $
*/
#ifndef _SYS_SOCKIO_H_
diff --git a/sys/sys/stat.h b/sys/sys/stat.h
index 99ae6b9792dc..b9e0903db0ae 100644
--- a/sys/sys/stat.h
+++ b/sys/sys/stat.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)stat.h 8.6 (Berkeley) 3/8/94
- * $Id: stat.h,v 1.5 1994/10/02 17:24:57 phk Exp $
+ * $Id: stat.h,v 1.6 1995/05/30 08:14:35 rgrimes Exp $
*/
#ifndef _SYS_STAT_H_
diff --git a/sys/sys/syscall-hide.h b/sys/sys/syscall-hide.h
index 920bfd863561..2131804ed5de 100644
--- a/sys/sys/syscall-hide.h
+++ b/sys/sys/syscall-hide.h
@@ -2,7 +2,7 @@
* System call hiders.
*
* DO NOT EDIT-- this file is automatically generated.
- * created from $Id: syscalls.master,v 1.14 1995/03/25 16:52:11 davidg Exp $
+ * created from $Id: syscall-hide.h,v 1.13 1995/04/23 12:22:03 ache Exp $
*/
HIDE_POSIX(fork)
diff --git a/sys/sys/syscall.h b/sys/sys/syscall.h
index 16159793bf90..9efee7835de9 100644
--- a/sys/sys/syscall.h
+++ b/sys/sys/syscall.h
@@ -2,7 +2,7 @@
* System call numbers.
*
* DO NOT EDIT-- this file is automatically generated.
- * created from $Id: syscalls.master,v 1.14 1995/03/25 16:52:11 davidg Exp $
+ * created from $Id: syscall.h,v 1.19 1995/04/23 12:22:06 ache Exp $
*/
#define SYS_syscall 0
diff --git a/sys/sys/sysctl.h b/sys/sys/sysctl.h
index 2c61798a049d..9a6d2d1316ce 100644
--- a/sys/sys/sysctl.h
+++ b/sys/sys/sysctl.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)sysctl.h 8.1 (Berkeley) 6/2/93
- * $Id: sysctl.h,v 1.22 1995/05/12 19:17:25 wollman Exp $
+ * $Id: sysctl.h,v 1.23 1995/05/30 08:14:36 rgrimes Exp $
*/
#ifndef _SYS_SYSCTL_H_
diff --git a/sys/sys/sysent.h b/sys/sys/sysent.h
index f2953a6fc1f3..bf70f79d2830 100644
--- a/sys/sys/sysent.h
+++ b/sys/sys/sysent.h
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: sysent.h,v 1.3 1995/02/14 19:23:20 sos Exp $
+ * $Id: sysent.h,v 1.4 1995/03/16 18:16:29 bde Exp $
*/
#ifndef _SYS_SYSENT_H_
diff --git a/sys/sys/syslimits.h b/sys/sys/syslimits.h
index 2dc7a5bc3451..f5bfec3c1cbc 100644
--- a/sys/sys/syslimits.h
+++ b/sys/sys/syslimits.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)syslimits.h 8.1 (Berkeley) 6/2/93
- * $Id: syslimits.h,v 1.5 1994/08/21 04:41:59 paul Exp $
+ * $Id: syslimits.h,v 1.6 1994/12/03 17:36:37 smace Exp $
*/
#ifndef _SYS_SYSLIMITS_H_
diff --git a/sys/sys/syslog.h b/sys/sys/syslog.h
index 969717b6dd31..8d684ae2bbdf 100644
--- a/sys/sys/syslog.h
+++ b/sys/sys/syslog.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)syslog.h 8.1 (Berkeley) 6/2/93
- * $Id: syslog.h,v 1.3 1994/08/18 22:35:46 wollman Exp $
+ * $Id: syslog.h,v 1.4 1994/08/21 04:42:00 paul Exp $
*/
#ifndef _SYS_SYSLOG_H_
diff --git a/sys/sys/systm.h b/sys/sys/systm.h
index d54968a3840b..998378772e1f 100644
--- a/sys/sys/systm.h
+++ b/sys/sys/systm.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)systm.h 8.4 (Berkeley) 2/23/94
- * $Id: systm.h,v 1.23 1995/07/05 12:04:51 davidg Exp $
+ * $Id: systm.h,v 1.22.4.1 1995/09/15 10:18:05 davidg Exp $
*/
#ifndef _SYS_SYSTM_H_
diff --git a/sys/sys/tablet.h b/sys/sys/tablet.h
index f9aefc0cac97..7bfb0a8b27af 100644
--- a/sys/sys/tablet.h
+++ b/sys/sys/tablet.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tablet.h 8.3 (Berkeley) 1/4/94
- * $Id$
+ * $Id: tablet.h,v 1.2 1994/08/02 07:53:45 davidg Exp $
*/
#ifndef _SYS_TABLET_H_
diff --git a/sys/sys/termios.h b/sys/sys/termios.h
index 14b264850604..14280943ae81 100644
--- a/sys/sys/termios.h
+++ b/sys/sys/termios.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)termios.h 8.3 (Berkeley) 3/28/94
- * $Id: termios.h,v 1.5 1995/05/11 07:52:47 bde Exp $
+ * $Id: termios.h,v 1.6 1995/05/30 08:14:40 rgrimes Exp $
*/
#ifndef _SYS_TERMIOS_H_
diff --git a/sys/sys/time.h b/sys/sys/time.h
index fa7aecc935b8..59fa7c705c77 100644
--- a/sys/sys/time.h
+++ b/sys/sys/time.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)time.h 8.1 (Berkeley) 6/2/93
- * $Id: time.h,v 1.4 1994/10/02 17:25:01 phk Exp $
+ * $Id: time.h,v 1.5 1994/10/10 00:58:36 phk Exp $
*/
#ifndef _SYS_TIME_H_
diff --git a/sys/sys/timeb.h b/sys/sys/timeb.h
index 8759a7ca4f8d..223ae15e58fa 100644
--- a/sys/sys/timeb.h
+++ b/sys/sys/timeb.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)timeb.h 8.2 (Berkeley) 1/21/94
- * $Id: timeb.h,v 1.2 1994/08/02 07:53:49 davidg Exp $
+ * $Id: timeb.h,v 1.3 1994/08/21 04:42:02 paul Exp $
*/
#ifndef _SYS_TIMEB_H_
diff --git a/sys/sys/times.h b/sys/sys/times.h
index 961ebfd18264..63cf0108e8d0 100644
--- a/sys/sys/times.h
+++ b/sys/sys/times.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)times.h 8.4 (Berkeley) 1/21/94
- * $Id$
+ * $Id: times.h,v 1.2 1994/08/02 07:53:50 davidg Exp $
*/
#ifndef _SYS_TIMES_H_
diff --git a/sys/sys/tprintf.h b/sys/sys/tprintf.h
index 5ef2934ced7b..81bb41c435f3 100644
--- a/sys/sys/tprintf.h
+++ b/sys/sys/tprintf.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tprintf.h 8.1 (Berkeley) 6/2/93
- * $Id: tprintf.h,v 1.2 1994/08/02 07:53:51 davidg Exp $
+ * $Id: tprintf.h,v 1.3 1994/08/21 04:42:03 paul Exp $
*/
#ifndef _SYS_TPRINTF_H_
diff --git a/sys/sys/tty.h b/sys/sys/tty.h
index 069f90bb25b5..a683ec0e17b6 100644
--- a/sys/sys/tty.h
+++ b/sys/sys/tty.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)tty.h 8.6 (Berkeley) 1/21/94
- * $Id: tty.h,v 1.31 1995/07/31 22:50:08 bde Exp $
+ * $Id: tty.h,v 1.18.4.1 1995/09/14 07:10:24 davidg Exp $
*/
#ifndef _SYS_TTY_H_
diff --git a/sys/sys/ttychars.h b/sys/sys/ttychars.h
index 7146f600c714..2a347ab75867 100644
--- a/sys/sys/ttychars.h
+++ b/sys/sys/ttychars.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ttychars.h 8.2 (Berkeley) 1/4/94
- * $Id: ttychars.h,v 1.3 1994/08/21 04:42:06 paul Exp $
+ * $Id: ttychars.h,v 1.4 1994/08/22 19:34:03 csgr Exp $
*/
#ifndef _SYS_TTYCHARS_H_
diff --git a/sys/sys/ttycom.h b/sys/sys/ttycom.h
index 75c8619f3c08..0dfb7f713920 100644
--- a/sys/sys/ttycom.h
+++ b/sys/sys/ttycom.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)ttycom.h 8.1 (Berkeley) 3/28/94
- * $Id: ttycom.h,v 1.8 1995/03/30 05:17:50 ache Exp $
+ * $Id: ttycom.h,v 1.9 1995/05/30 08:14:42 rgrimes Exp $
*/
#ifndef _SYS_TTYCOM_H_
diff --git a/sys/sys/ttydefaults.h b/sys/sys/ttydefaults.h
index 43216c7f58ad..703190ba8373 100644
--- a/sys/sys/ttydefaults.h
+++ b/sys/sys/ttydefaults.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)ttydefaults.h 8.4 (Berkeley) 1/21/94
- * $Id: ttydefaults.h,v 1.8 1995/05/11 07:52:48 bde Exp $
+ * $Id: ttydefaults.h,v 1.9 1995/05/30 08:14:47 rgrimes Exp $
*/
/*
diff --git a/sys/sys/ttydev.h b/sys/sys/ttydev.h
index 5f41b471d6c2..8c07fe11fcc0 100644
--- a/sys/sys/ttydev.h
+++ b/sys/sys/ttydev.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ttydev.h 8.2 (Berkeley) 1/4/94
- * $Id: ttydev.h,v 1.2 1994/08/02 07:53:58 davidg Exp $
+ * $Id: ttydev.h,v 1.3 1994/08/26 12:07:31 jkh Exp $
*/
/* COMPATABILITY HEADER FILE */
diff --git a/sys/sys/types.h b/sys/sys/types.h
index 1a4e48b97db2..81e8f452b516 100644
--- a/sys/sys/types.h
+++ b/sys/sys/types.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)types.h 8.4 (Berkeley) 1/21/94
- * $Id: types.h,v 1.3 1994/09/16 11:44:45 paul Exp $
+ * $Id: types.h,v 1.4 1994/09/25 15:56:25 davidg Exp $
*/
#ifndef _SYS_TYPES_H_
diff --git a/sys/sys/ucred.h b/sys/sys/ucred.h
index 33d64c036d52..5c4f6636154d 100644
--- a/sys/sys/ucred.h
+++ b/sys/sys/ucred.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ucred.h 8.2 (Berkeley) 1/4/94
- * $Id: ucred.h,v 1.4 1994/10/08 22:23:00 phk Exp $
+ * $Id: ucred.h,v 1.5 1995/04/23 08:31:02 bde Exp $
*/
#ifndef _SYS_UCRED_H_
diff --git a/sys/sys/uio.h b/sys/sys/uio.h
index d48c0343a267..9d84e21b8930 100644
--- a/sys/sys/uio.h
+++ b/sys/sys/uio.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)uio.h 8.5 (Berkeley) 2/22/94
- * $Id: uio.h,v 1.3 1994/09/15 20:24:28 bde Exp $
+ * $Id: uio.h,v 1.4 1995/04/04 17:01:49 davidg Exp $
*/
#ifndef _SYS_UIO_H_
diff --git a/sys/sys/un.h b/sys/sys/un.h
index b85714b97346..6255911a966f 100644
--- a/sys/sys/un.h
+++ b/sys/sys/un.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)un.h 8.1 (Berkeley) 6/2/93
- * $Id: un.h,v 1.5 1994/10/02 17:25:03 phk Exp $
+ * $Id: un.h,v 1.6 1995/05/30 08:14:48 rgrimes Exp $
*/
#ifndef _SYS_UN_H_
diff --git a/sys/sys/unistd.h b/sys/sys/unistd.h
index 1f63f61e89ee..17c2b4c51185 100644
--- a/sys/sys/unistd.h
+++ b/sys/sys/unistd.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)unistd.h 8.2 (Berkeley) 1/7/94
- * $Id: unistd.h,v 1.2 1994/08/02 07:54:04 davidg Exp $
+ * $Id: unistd.h,v 1.4 1995/05/11 07:52:49 bde Exp $
*/
#ifndef _SYS_UNISTD_H_
diff --git a/sys/sys/unpcb.h b/sys/sys/unpcb.h
index 41d8cfc09b7c..c880c39a3170 100644
--- a/sys/sys/unpcb.h
+++ b/sys/sys/unpcb.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)unpcb.h 8.1 (Berkeley) 6/2/93
- * $Id: unpcb.h,v 1.2 1994/08/02 07:54:05 davidg Exp $
+ * $Id: unpcb.h,v 1.3 1994/08/21 04:42:09 paul Exp $
*/
#ifndef _SYS_UNPCB_H_
diff --git a/sys/sys/user.h b/sys/sys/user.h
index 08e74dc79ea1..c2876a1dca0a 100644
--- a/sys/sys/user.h
+++ b/sys/sys/user.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)user.h 8.2 (Berkeley) 9/23/93
- * $Id: user.h,v 1.3 1994/08/21 04:42:10 paul Exp $
+ * $Id: user.h,v 1.4 1995/05/30 08:14:50 rgrimes Exp $
*/
#ifndef _SYS_USER_H_
diff --git a/sys/sys/utsname.h b/sys/sys/utsname.h
index 0387cc1d206e..e65ffa58eb3e 100644
--- a/sys/sys/utsname.h
+++ b/sys/sys/utsname.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)utsname.h 8.1 (Berkeley) 1/4/94
- * $Id$
+ * $Id: utsname.h,v 1.3 1994/08/02 07:54:07 davidg Exp $
*/
#ifndef _SYS_UTSNAME_H
diff --git a/sys/sys/vadvise.h b/sys/sys/vadvise.h
index e8ed7235f520..9171c92d92c2 100644
--- a/sys/sys/vadvise.h
+++ b/sys/sys/vadvise.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)vadvise.h 8.1 (Berkeley) 6/2/93
- * $Id: vadvise.h,v 1.2 1994/08/02 07:54:08 davidg Exp $
+ * $Id: vadvise.h,v 1.3 1994/08/21 04:42:11 paul Exp $
*/
#ifndef _SYS_VADVISE_H_
diff --git a/sys/sys/vcmd.h b/sys/sys/vcmd.h
index 4d59e36dd241..cc0b9945d57f 100644
--- a/sys/sys/vcmd.h
+++ b/sys/sys/vcmd.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)vcmd.h 8.1 (Berkeley) 6/2/93
- * $Id: vcmd.h,v 1.2 1994/08/02 07:54:09 davidg Exp $
+ * $Id: vcmd.h,v 1.3 1994/08/21 04:42:12 paul Exp $
*/
#ifndef _SYS_VCMD_H_
diff --git a/sys/sys/vlimit.h b/sys/sys/vlimit.h
index b1a1fe330e2c..5d86c8e46e10 100644
--- a/sys/sys/vlimit.h
+++ b/sys/sys/vlimit.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)vlimit.h 8.1 (Berkeley) 6/2/93
- * $Id: vlimit.h,v 1.3 1994/08/21 04:42:13 paul Exp $
+ * $Id: vlimit.h,v 1.4 1995/05/30 08:14:51 rgrimes Exp $
*/
#ifndef _SYS_VLIMIT_H_
diff --git a/sys/sys/vmmeter.h b/sys/sys/vmmeter.h
index 99693fc3a0ce..45875ccb14d7 100644
--- a/sys/sys/vmmeter.h
+++ b/sys/sys/vmmeter.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)vmmeter.h 8.1 (Berkeley) 6/2/93
- * $Id: vmmeter.h,v 1.11 1995/07/29 10:47:05 bde Exp $
+ * $Id: vmmeter.h,v 1.10.4.1 1995/09/15 10:20:10 davidg Exp $
*/
#ifndef _SYS_VMMETER_H_
diff --git a/sys/sys/vnode.h b/sys/sys/vnode.h
index de1afd02598d..2e0867e522a2 100644
--- a/sys/sys/vnode.h
+++ b/sys/sys/vnode.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)vnode.h 8.7 (Berkeley) 2/4/94
- * $Id: vnode.h,v 1.20 1995/04/20 03:18:19 julian Exp $
+ * $Id: vnode.h,v 1.20.4.1 1995/07/07 06:21:57 davidg Exp $
*/
#ifndef _SYS_VNODE_H_
diff --git a/sys/sys/vsio.h b/sys/sys/vsio.h
index b867b8b42ced..14573a0dc65a 100644
--- a/sys/sys/vsio.h
+++ b/sys/sys/vsio.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)vsio.h 8.1 (Berkeley) 6/2/93
- * $Id: vsio.h,v 1.3 1994/08/21 04:42:16 paul Exp $
+ * $Id: vsio.h,v 1.4 1995/05/30 08:14:52 rgrimes Exp $
*/
#ifndef _SYS_VSIO_H_
diff --git a/sys/sys/wait.h b/sys/sys/wait.h
index 0b8ec48970b1..936dd95aad74 100644
--- a/sys/sys/wait.h
+++ b/sys/sys/wait.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)wait.h 8.1 (Berkeley) 6/2/93
- * $Id: wait.h,v 1.3 1994/08/21 04:42:17 paul Exp $
+ * $Id: wait.h,v 1.4 1995/05/30 08:14:54 rgrimes Exp $
*/
#ifndef _SYS_WAIT_H_
diff --git a/sys/ufs/ffs/ffs_alloc.c b/sys/ufs/ffs/ffs_alloc.c
index d91c557616f9..def4125302a8 100644
--- a/sys/ufs/ffs/ffs_alloc.c
+++ b/sys/ufs/ffs/ffs_alloc.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ffs_alloc.c 8.8 (Berkeley) 2/21/94
- * $Id: ffs_alloc.c,v 1.13 1995/05/11 19:26:48 rgrimes Exp $
+ * $Id: ffs_alloc.c,v 1.14 1995/05/30 08:14:57 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/ufs/ffs/ffs_balloc.c b/sys/ufs/ffs/ffs_balloc.c
index cbe9c6051c84..10310925f3f2 100644
--- a/sys/ufs/ffs/ffs_balloc.c
+++ b/sys/ufs/ffs/ffs_balloc.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ffs_balloc.c 8.4 (Berkeley) 9/23/93
- * $Id: ffs_balloc.c,v 1.8 1995/05/28 04:32:23 davidg Exp $
+ * $Id: ffs_balloc.c,v 1.9 1995/05/30 08:14:59 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/ufs/ffs/ffs_extern.h b/sys/ufs/ffs/ffs_extern.h
index 43e7bbefaf4f..6b463776c0b0 100644
--- a/sys/ufs/ffs/ffs_extern.h
+++ b/sys/ufs/ffs/ffs_extern.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ffs_extern.h 8.3 (Berkeley) 4/16/94
- * $Id: ffs_extern.h,v 1.5 1994/09/22 19:38:32 wollman Exp $
+ * $Id: ffs_extern.h,v 1.6 1995/03/28 07:57:46 bde Exp $
*/
struct buf;
diff --git a/sys/ufs/ffs/ffs_inode.c b/sys/ufs/ffs/ffs_inode.c
index f6c1662ad728..5908f781f011 100644
--- a/sys/ufs/ffs/ffs_inode.c
+++ b/sys/ufs/ffs/ffs_inode.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ffs_inode.c 8.5 (Berkeley) 12/30/93
- * $Id: ffs_inode.c,v 1.13 1995/03/26 23:29:10 davidg Exp $
+ * $Id: ffs_inode.c,v 1.13.4.1 1995/08/24 06:03:02 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/ufs/ffs/ffs_subr.c b/sys/ufs/ffs/ffs_subr.c
index cbf96521b7a1..83748d842dea 100644
--- a/sys/ufs/ffs/ffs_subr.c
+++ b/sys/ufs/ffs/ffs_subr.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ffs_subr.c 8.2 (Berkeley) 9/21/93
- * $Id: ffs_subr.c,v 1.3 1994/10/10 01:04:38 phk Exp $
+ * $Id: ffs_subr.c,v 1.4 1995/05/30 08:15:00 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/ufs/ffs/ffs_tables.c b/sys/ufs/ffs/ffs_tables.c
index 089334ff6e4b..163f9e76fca4 100644
--- a/sys/ufs/ffs/ffs_tables.c
+++ b/sys/ufs/ffs/ffs_tables.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ffs_tables.c 8.1 (Berkeley) 6/11/93
- * $Id: ffs_tables.c,v 1.2 1994/08/02 07:54:22 davidg Exp $
+ * $Id: ffs_tables.c,v 1.3 1995/05/30 08:15:02 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/ufs/ffs/ffs_vfsops.c b/sys/ufs/ffs/ffs_vfsops.c
index ec17c3c36305..e27b8896b4cc 100644
--- a/sys/ufs/ffs/ffs_vfsops.c
+++ b/sys/ufs/ffs/ffs_vfsops.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ffs_vfsops.c 8.8 (Berkeley) 4/18/94
- * $Id: ffs_vfsops.c,v 1.21 1995/05/30 08:15:03 rgrimes Exp $
+ * $Id: ffs_vfsops.c,v 1.21.4.1 1995/07/22 03:43:39 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/ufs/ffs/ffs_vnops.c b/sys/ufs/ffs/ffs_vnops.c
index c5209fc2609e..1f56be303b8d 100644
--- a/sys/ufs/ffs/ffs_vnops.c
+++ b/sys/ufs/ffs/ffs_vnops.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ffs_vnops.c 8.7 (Berkeley) 2/3/94
- * $Id: ffs_vnops.c,v 1.10 1995/05/21 21:39:26 davidg Exp $
+ * $Id: ffs_vnops.c,v 1.11 1995/05/30 08:15:05 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/ufs/ffs/fs.h b/sys/ufs/ffs/fs.h
index 41f204cb6f38..11280318019f 100644
--- a/sys/ufs/ffs/fs.h
+++ b/sys/ufs/ffs/fs.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)fs.h 8.7 (Berkeley) 4/19/94
- * $Id: fs.h,v 1.4 1995/03/10 22:18:16 davidg Exp $
+ * $Id: fs.h,v 1.5 1995/05/30 08:15:07 rgrimes Exp $
*/
#ifndef _UFS_FFS_FS_H_
diff --git a/sys/ufs/lfs/lfs.h b/sys/ufs/lfs/lfs.h
index 1ae1e23ef919..7e21c36040ff 100644
--- a/sys/ufs/lfs/lfs.h
+++ b/sys/ufs/lfs/lfs.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)lfs.h 8.3 (Berkeley) 9/23/93
- * $Id: lfs.h,v 1.5 1994/11/17 01:30:47 gibbs Exp $
+ * $Id: lfs.h,v 1.6 1995/05/30 08:15:11 rgrimes Exp $
*/
#ifndef _UFS_LFS_LFS_H_
diff --git a/sys/ufs/lfs/lfs_alloc.c b/sys/ufs/lfs/lfs_alloc.c
index fb60c3dfc954..ceccee4f2357 100644
--- a/sys/ufs/lfs/lfs_alloc.c
+++ b/sys/ufs/lfs/lfs_alloc.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)lfs_alloc.c 8.4 (Berkeley) 1/4/94
- * $Id: lfs_alloc.c,v 1.7 1995/03/28 07:58:02 bde Exp $
+ * $Id: lfs_alloc.c,v 1.8 1995/04/16 11:25:47 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/ufs/lfs/lfs_balloc.c b/sys/ufs/lfs/lfs_balloc.c
index 81fac0d5db7e..8a28fac72580 100644
--- a/sys/ufs/lfs/lfs_balloc.c
+++ b/sys/ufs/lfs/lfs_balloc.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)lfs_balloc.c 8.1 (Berkeley) 6/11/93
- * $Id: lfs_balloc.c,v 1.6 1995/04/09 06:03:41 davidg Exp $
+ * $Id: lfs_balloc.c,v 1.7 1995/05/30 08:15:12 rgrimes Exp $
*/
#include <sys/param.h>
#include <sys/systm.h>
diff --git a/sys/ufs/lfs/lfs_bio.c b/sys/ufs/lfs/lfs_bio.c
index 9344dbb590f5..5adc57c65c61 100644
--- a/sys/ufs/lfs/lfs_bio.c
+++ b/sys/ufs/lfs/lfs_bio.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)lfs_bio.c 8.4 (Berkeley) 12/30/93
- * $Id: lfs_bio.c,v 1.4 1994/08/20 03:49:01 davidg Exp $
+ * $Id: lfs_bio.c,v 1.5 1994/10/10 01:04:49 phk Exp $
*/
#include <sys/param.h>
diff --git a/sys/ufs/lfs/lfs_cksum.c b/sys/ufs/lfs/lfs_cksum.c
index b3f689c95dbd..9a92cb320339 100644
--- a/sys/ufs/lfs/lfs_cksum.c
+++ b/sys/ufs/lfs/lfs_cksum.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)lfs_cksum.c 8.1 (Berkeley) 6/11/93
- * $Id: lfs_cksum.c,v 1.2 1994/08/02 07:54:32 davidg Exp $
+ * $Id: lfs_cksum.c,v 1.3 1995/05/30 08:15:14 rgrimes Exp $
*/
#include <sys/types.h>
diff --git a/sys/ufs/lfs/lfs_debug.c b/sys/ufs/lfs/lfs_debug.c
index 1edffbf150f3..58bb2a6060d2 100644
--- a/sys/ufs/lfs/lfs_debug.c
+++ b/sys/ufs/lfs/lfs_debug.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)lfs_debug.c 8.1 (Berkeley) 6/11/93
- * $Id: lfs_debug.c,v 1.2 1994/08/02 07:54:33 davidg Exp $
+ * $Id: lfs_debug.c,v 1.3 1995/05/30 08:15:16 rgrimes Exp $
*/
#ifdef DEBUG
diff --git a/sys/ufs/lfs/lfs_extern.h b/sys/ufs/lfs/lfs_extern.h
index 9a1fb4ab0f04..969c1824e188 100644
--- a/sys/ufs/lfs/lfs_extern.h
+++ b/sys/ufs/lfs/lfs_extern.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)lfs_extern.h 8.2 (Berkeley) 4/16/94
- * $Id: lfs_extern.h,v 1.4 1994/09/22 19:38:34 wollman Exp $
+ * $Id: lfs_extern.h,v 1.5 1995/03/28 07:58:04 bde Exp $
*/
#ifndef _UFS_LFS_LFS_EXTERN_H_
diff --git a/sys/ufs/lfs/lfs_inode.c b/sys/ufs/lfs/lfs_inode.c
index 61437c51d526..e42e4a23b8ae 100644
--- a/sys/ufs/lfs/lfs_inode.c
+++ b/sys/ufs/lfs/lfs_inode.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)lfs_inode.c 8.5 (Berkeley) 12/30/93
- * $Id: lfs_inode.c,v 1.8 1995/03/26 23:29:13 davidg Exp $
+ * $Id: lfs_inode.c,v 1.9 1995/05/30 08:15:20 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/ufs/lfs/lfs_segment.c b/sys/ufs/lfs/lfs_segment.c
index 48a73ce6cbe1..5c9db125b995 100644
--- a/sys/ufs/lfs/lfs_segment.c
+++ b/sys/ufs/lfs/lfs_segment.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)lfs_segment.c 8.5 (Berkeley) 1/4/94
- * $Id: lfs_segment.c,v 1.10 1995/05/11 19:26:51 rgrimes Exp $
+ * $Id: lfs_segment.c,v 1.11 1995/05/30 08:15:22 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/ufs/lfs/lfs_subr.c b/sys/ufs/lfs/lfs_subr.c
index f911c3fc93a5..d2a640ffff48 100644
--- a/sys/ufs/lfs/lfs_subr.c
+++ b/sys/ufs/lfs/lfs_subr.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)lfs_subr.c 8.2 (Berkeley) 9/21/93
- * $Id: lfs_subr.c,v 1.6 1995/01/09 16:05:23 davidg Exp $
+ * $Id: lfs_subr.c,v 1.7 1995/05/30 08:15:24 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/ufs/lfs/lfs_syscalls.c b/sys/ufs/lfs/lfs_syscalls.c
index 1ec0cdc71279..966b6d388551 100644
--- a/sys/ufs/lfs/lfs_syscalls.c
+++ b/sys/ufs/lfs/lfs_syscalls.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)lfs_syscalls.c 8.5 (Berkeley) 4/20/94
- * $Id: lfs_syscalls.c,v 1.9 1995/05/11 19:26:52 rgrimes Exp $
+ * $Id: lfs_syscalls.c,v 1.10 1995/05/30 08:15:25 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/ufs/lfs/lfs_vfsops.c b/sys/ufs/lfs/lfs_vfsops.c
index e571dcd628af..da73b104c79b 100644
--- a/sys/ufs/lfs/lfs_vfsops.c
+++ b/sys/ufs/lfs/lfs_vfsops.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)lfs_vfsops.c 8.7 (Berkeley) 4/16/94
- * $Id: lfs_vfsops.c,v 1.10 1995/03/16 18:16:48 bde Exp $
+ * $Id: lfs_vfsops.c,v 1.11 1995/03/19 14:29:20 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/ufs/lfs/lfs_vnops.c b/sys/ufs/lfs/lfs_vnops.c
index 3d269532133e..f1fade7bfc0a 100644
--- a/sys/ufs/lfs/lfs_vnops.c
+++ b/sys/ufs/lfs/lfs_vnops.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)lfs_vnops.c 8.5 (Berkeley) 12/30/93
- * $Id: lfs_vnops.c,v 1.8 1995/04/09 06:03:42 davidg Exp $
+ * $Id: lfs_vnops.c,v 1.9 1995/05/30 08:15:27 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/ufs/mfs/mfs_extern.h b/sys/ufs/mfs/mfs_extern.h
index fa51177ac9fe..8d516464cfd6 100644
--- a/sys/ufs/mfs/mfs_extern.h
+++ b/sys/ufs/mfs/mfs_extern.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)mfs_extern.h 8.1 (Berkeley) 6/11/93
- * $Id: mfs_extern.h,v 1.2 1994/08/02 07:54:42 davidg Exp $
+ * $Id: mfs_extern.h,v 1.3 1994/08/21 07:16:10 paul Exp $
*/
#ifndef _UFS_MFS_MFS_EXTERN_H_
diff --git a/sys/ufs/mfs/mfs_vfsops.c b/sys/ufs/mfs/mfs_vfsops.c
index dee40871c0df..0da670c66708 100644
--- a/sys/ufs/mfs/mfs_vfsops.c
+++ b/sys/ufs/mfs/mfs_vfsops.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)mfs_vfsops.c 8.4 (Berkeley) 4/16/94
- * $Id: mfs_vfsops.c,v 1.9 1995/05/29 03:27:37 phk Exp $
+ * $Id: mfs_vfsops.c,v 1.9.4.1 1995/08/24 06:06:25 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/ufs/mfs/mfs_vnops.c b/sys/ufs/mfs/mfs_vnops.c
index d0f6a644f180..1d11ef56b9c7 100644
--- a/sys/ufs/mfs/mfs_vnops.c
+++ b/sys/ufs/mfs/mfs_vnops.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)mfs_vnops.c 8.3 (Berkeley) 9/21/93
- * $Id: mfs_vnops.c,v 1.9 1995/03/19 14:29:22 davidg Exp $
+ * $Id: mfs_vnops.c,v 1.10 1995/05/11 19:26:53 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/ufs/mfs/mfsiom.h b/sys/ufs/mfs/mfsiom.h
index a420aa3210c4..f91f2e41f668 100644
--- a/sys/ufs/mfs/mfsiom.h
+++ b/sys/ufs/mfs/mfsiom.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)mfsiom.h 8.1 (Berkeley) 6/11/93
- * $Id: mfsiom.h,v 1.2 1994/08/02 07:54:45 davidg Exp $
+ * $Id: mfsiom.h,v 1.3 1994/08/21 07:16:11 paul Exp $
*/
#ifndef _UFS_MFS_MFSIOM_H_
diff --git a/sys/ufs/mfs/mfsnode.h b/sys/ufs/mfs/mfsnode.h
index 28d9254265cf..f0d329cbb0e1 100644
--- a/sys/ufs/mfs/mfsnode.h
+++ b/sys/ufs/mfs/mfsnode.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)mfsnode.h 8.2 (Berkeley) 8/11/93
- * $Id: mfsnode.h,v 1.2 1994/08/02 07:54:46 davidg Exp $
+ * $Id: mfsnode.h,v 1.3 1994/08/21 07:16:12 paul Exp $
*/
#ifndef _UFS_MFS_MFSNODE_H_
diff --git a/sys/ufs/ufs/dinode.h b/sys/ufs/ufs/dinode.h
index b91843b7a79e..b72d18721f8b 100644
--- a/sys/ufs/ufs/dinode.h
+++ b/sys/ufs/ufs/dinode.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)dinode.h 8.3 (Berkeley) 1/21/94
- * $Id: dinode.h,v 1.2 1994/08/02 07:54:47 davidg Exp $
+ * $Id: dinode.h,v 1.3 1994/08/21 07:16:13 paul Exp $
*/
#ifndef _UFS_UFS_DINODE_H_
diff --git a/sys/ufs/ufs/dir.h b/sys/ufs/ufs/dir.h
index f18eca8dc8aa..bd6a7c02a07a 100644
--- a/sys/ufs/ufs/dir.h
+++ b/sys/ufs/ufs/dir.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)dir.h 8.2 (Berkeley) 1/21/94
- * $Id: dir.h,v 1.2 1994/08/02 07:54:48 davidg Exp $
+ * $Id: dir.h,v 1.3 1994/08/21 07:16:14 paul Exp $
*/
#ifndef _UFS_UFS_DIR_H_
diff --git a/sys/ufs/ufs/inode.h b/sys/ufs/ufs/inode.h
index 00105ea3635d..ff63f7c28f47 100644
--- a/sys/ufs/ufs/inode.h
+++ b/sys/ufs/ufs/inode.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)inode.h 8.4 (Berkeley) 1/21/94
- * $Id: inode.h,v 1.5 1995/04/24 05:13:11 dyson Exp $
+ * $Id: inode.h,v 1.6 1995/05/30 08:15:30 rgrimes Exp $
*/
#ifndef _UFS_UFS_INODE_H_
diff --git a/sys/ufs/ufs/quota.h b/sys/ufs/ufs/quota.h
index 35dafa934cf3..7ef0a91a7704 100644
--- a/sys/ufs/ufs/quota.h
+++ b/sys/ufs/ufs/quota.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)quota.h 8.1 (Berkeley) 6/11/93
- * $Id: quota.h,v 1.2 1994/08/02 07:54:51 davidg Exp $
+ * $Id: quota.h,v 1.3 1994/08/21 07:16:16 paul Exp $
*/
#ifndef _UFS_UFS_QUOTA_
diff --git a/sys/ufs/ufs/ufs_bmap.c b/sys/ufs/ufs/ufs_bmap.c
index 900d2c24a709..f7c570a4f0a7 100644
--- a/sys/ufs/ufs/ufs_bmap.c
+++ b/sys/ufs/ufs/ufs_bmap.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)ufs_bmap.c 8.6 (Berkeley) 1/21/94
- * $Id: ufs_bmap.c,v 1.7 1995/03/28 07:58:16 bde Exp $
+ * $Id: ufs_bmap.c,v 1.8 1995/05/30 08:15:31 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/ufs/ufs/ufs_disksubr.c b/sys/ufs/ufs/ufs_disksubr.c
index 83400a919c6f..29afdf6b00ad 100644
--- a/sys/ufs/ufs/ufs_disksubr.c
+++ b/sys/ufs/ufs/ufs_disksubr.c
@@ -42,7 +42,7 @@
* SUCH DAMAGE.
*
* @(#)ufs_disksubr.c 8.5 (Berkeley) 1/21/94
- * $Id: ufs_disksubr.c,v 1.15 1995/05/30 08:15:33 rgrimes Exp $
+ * $Id: ufs_disksubr.c,v 1.15.4.1 1995/09/18 06:15:15 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/ufs/ufs/ufs_extern.h b/sys/ufs/ufs/ufs_extern.h
index 8ff0d949d505..bdc878fd1541 100644
--- a/sys/ufs/ufs/ufs_extern.h
+++ b/sys/ufs/ufs/ufs_extern.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ufs_extern.h 8.3 (Berkeley) 4/16/94
- * $Id: ufs_extern.h,v 1.6 1994/11/14 13:50:15 bde Exp $
+ * $Id: ufs_extern.h,v 1.7 1995/03/28 07:58:17 bde Exp $
*/
#ifndef _UFS_UFS_EXTERN_H_
diff --git a/sys/ufs/ufs/ufs_ihash.c b/sys/ufs/ufs/ufs_ihash.c
index 18ac11c40622..dd61b6b3f726 100644
--- a/sys/ufs/ufs/ufs_ihash.c
+++ b/sys/ufs/ufs/ufs_ihash.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ufs_ihash.c 8.4 (Berkeley) 12/30/93
- * $Id: ufs_ihash.c,v 1.4 1994/10/08 06:57:23 phk Exp $
+ * $Id: ufs_ihash.c,v 1.5 1995/04/24 05:13:13 dyson Exp $
*/
#include <sys/param.h>
diff --git a/sys/ufs/ufs/ufs_inode.c b/sys/ufs/ufs/ufs_inode.c
index c3e4c51e4f29..acbefaf4beb7 100644
--- a/sys/ufs/ufs/ufs_inode.c
+++ b/sys/ufs/ufs/ufs_inode.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)ufs_inode.c 8.4 (Berkeley) 1/21/94
- * $Id: ufs_inode.c,v 1.5 1994/10/15 04:08:44 ache Exp $
+ * $Id: ufs_inode.c,v 1.6 1995/01/04 23:48:04 gibbs Exp $
*/
#include <sys/param.h>
diff --git a/sys/ufs/ufs/ufs_lookup.c b/sys/ufs/ufs/ufs_lookup.c
index 25a10aa24d2e..adf84ff4dccb 100644
--- a/sys/ufs/ufs/ufs_lookup.c
+++ b/sys/ufs/ufs/ufs_lookup.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)ufs_lookup.c 8.6 (Berkeley) 4/1/94
- * $Id: ufs_lookup.c,v 1.3 1994/10/08 06:57:26 phk Exp $
+ * $Id: ufs_lookup.c,v 1.3.8.1 1995/10/26 09:17:44 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/ufs/ufs/ufs_quota.c b/sys/ufs/ufs/ufs_quota.c
index 9b1f6218d337..e6e54469d219 100644
--- a/sys/ufs/ufs/ufs_quota.c
+++ b/sys/ufs/ufs/ufs_quota.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)ufs_quota.c 8.2 (Berkeley) 12/30/93
- * $Id: ufs_quota.c,v 1.4 1994/10/08 06:57:27 phk Exp $
+ * $Id: ufs_quota.c,v 1.5 1995/05/30 08:15:36 rgrimes Exp $
*/
#include <sys/param.h>
#include <sys/kernel.h>
diff --git a/sys/ufs/ufs/ufs_readwrite.c b/sys/ufs/ufs/ufs_readwrite.c
index 5b273bedeb40..51b189026b0d 100644
--- a/sys/ufs/ufs/ufs_readwrite.c
+++ b/sys/ufs/ufs/ufs_readwrite.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ufs_readwrite.c 8.7 (Berkeley) 1/21/94
- * $Id: ufs_readwrite.c,v 1.8 1995/04/09 06:03:44 davidg Exp $
+ * $Id: ufs_readwrite.c,v 1.9 1995/04/24 05:13:15 dyson Exp $
*/
#ifdef LFS_READWRITE
diff --git a/sys/ufs/ufs/ufs_vfsops.c b/sys/ufs/ufs/ufs_vfsops.c
index 950f386e1722..267eb538da2c 100644
--- a/sys/ufs/ufs/ufs_vfsops.c
+++ b/sys/ufs/ufs/ufs_vfsops.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)ufs_vfsops.c 8.4 (Berkeley) 4/16/94
- * $Id: ufs_vfsops.c,v 1.3 1994/10/08 06:57:28 phk Exp $
+ * $Id: ufs_vfsops.c,v 1.4 1995/03/10 22:06:39 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/ufs/ufs/ufs_vnops.c b/sys/ufs/ufs/ufs_vnops.c
index 48fd7460b19d..cbe46804624a 100644
--- a/sys/ufs/ufs/ufs_vnops.c
+++ b/sys/ufs/ufs/ufs_vnops.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)ufs_vnops.c 8.10 (Berkeley) 4/1/94
- * $Id: ufs_vnops.c,v 1.24.4.2 1995/10/09 07:42:46 davidg Exp $
+ * $Id: ufs_vnops.c,v 1.24.4.3 1995/10/26 09:17:50 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/ufs/ufs/ufsmount.h b/sys/ufs/ufs/ufsmount.h
index 02fdff2eb3fa..96d3b8a8a6c0 100644
--- a/sys/ufs/ufs/ufsmount.h
+++ b/sys/ufs/ufs/ufsmount.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ufsmount.h 8.2 (Berkeley) 1/12/94
- * $Id: ufsmount.h,v 1.2 1994/08/02 07:55:04 davidg Exp $
+ * $Id: ufsmount.h,v 1.3 1994/08/21 07:16:18 paul Exp $
*/
#ifndef _UFS_UFS_UFSMOUNT_H_
diff --git a/sys/vm/device_pager.c b/sys/vm/device_pager.c
index 8ce0bc164fc5..2bb0144df480 100644
--- a/sys/vm/device_pager.c
+++ b/sys/vm/device_pager.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)device_pager.c 8.1 (Berkeley) 6/11/93
- * $Id: device_pager.c,v 1.10 1995/05/18 02:59:18 davidg Exp $
+ * $Id: device_pager.c,v 1.11 1995/05/30 08:15:46 rgrimes Exp $
*/
/*
diff --git a/sys/vm/device_pager.h b/sys/vm/device_pager.h
index 6fa8bfe6ac51..950a67b63f64 100644
--- a/sys/vm/device_pager.h
+++ b/sys/vm/device_pager.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)device_pager.h 8.3 (Berkeley) 12/13/93
- * $Id: device_pager.h,v 1.2 1994/08/02 07:55:07 davidg Exp $
+ * $Id: device_pager.h,v 1.3 1995/01/09 16:05:30 davidg Exp $
*/
#ifndef _DEVICE_PAGER_
diff --git a/sys/vm/kern_lock.c b/sys/vm/kern_lock.c
index 30be6763c188..1234086694a2 100644
--- a/sys/vm/kern_lock.c
+++ b/sys/vm/kern_lock.c
@@ -61,7 +61,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: kern_lock.c,v 1.5 1995/04/16 12:56:12 davidg Exp $
+ * $Id: kern_lock.c,v 1.6 1995/05/30 08:15:49 rgrimes Exp $
*/
/*
diff --git a/sys/vm/lock.h b/sys/vm/lock.h
index 6cd71edc2947..b5d2f08b12d1 100644
--- a/sys/vm/lock.h
+++ b/sys/vm/lock.h
@@ -61,7 +61,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: lock.h,v 1.2 1994/08/02 07:55:11 davidg Exp $
+ * $Id: lock.h,v 1.3 1995/01/09 16:05:31 davidg Exp $
*/
/*
diff --git a/sys/vm/pmap.h b/sys/vm/pmap.h
index b55519f2f20d..8a25edb00819 100644
--- a/sys/vm/pmap.h
+++ b/sys/vm/pmap.h
@@ -61,7 +61,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: pmap.h,v 1.5 1994/11/14 08:19:07 bde Exp $
+ * $Id: pmap.h,v 1.6 1995/01/09 16:05:32 davidg Exp $
*/
/*
diff --git a/sys/vm/swap_pager.c b/sys/vm/swap_pager.c
index 8403fd88d0ff..f0f25079ef09 100644
--- a/sys/vm/swap_pager.c
+++ b/sys/vm/swap_pager.c
@@ -39,7 +39,7 @@
* from: Utah $Hdr: swap_pager.c 1.4 91/04/30$
*
* @(#)swap_pager.c 8.9 (Berkeley) 3/21/94
- * $Id: swap_pager.c,v 1.41.4.1 1995/07/20 05:52:57 davidg Exp $
+ * $Id: swap_pager.c,v 1.41.4.2 1995/07/22 04:41:47 davidg Exp $
*/
/*
diff --git a/sys/vm/swap_pager.h b/sys/vm/swap_pager.h
index 5a1393f5e0e1..9b03b5747479 100644
--- a/sys/vm/swap_pager.h
+++ b/sys/vm/swap_pager.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* from: @(#)swap_pager.h 7.1 (Berkeley) 12/5/90
- * $Id: swap_pager.h,v 1.5 1995/02/02 09:08:09 davidg Exp $
+ * $Id: swap_pager.h,v 1.6 1995/05/10 18:56:04 davidg Exp $
*/
/*
diff --git a/sys/vm/vm.h b/sys/vm/vm.h
index a24ba321a569..4999882e61eb 100644
--- a/sys/vm/vm.h
+++ b/sys/vm/vm.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)vm.h 8.2 (Berkeley) 12/13/93
- * $Id: vm.h,v 1.3 1994/08/02 07:55:16 davidg Exp $
+ * $Id: vm.h,v 1.4 1995/01/09 16:05:37 davidg Exp $
*/
#ifndef VM_H
diff --git a/sys/vm/vm_extern.h b/sys/vm/vm_extern.h
index 997f41a0e21d..80641b6eaa32 100644
--- a/sys/vm/vm_extern.h
+++ b/sys/vm/vm_extern.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)vm_extern.h 8.2 (Berkeley) 1/12/94
- * $Id: vm_extern.h,v 1.14 1995/05/10 18:56:04 davidg Exp $
+ * $Id: vm_extern.h,v 1.15 1995/05/14 03:00:09 davidg Exp $
*/
#ifndef _VM_EXTERN_H_
diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c
index c061c3eb6f12..6915886814cf 100644
--- a/sys/vm/vm_fault.c
+++ b/sys/vm/vm_fault.c
@@ -66,7 +66,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: vm_fault.c,v 1.24 1995/05/18 02:59:22 davidg Exp $
+ * $Id: vm_fault.c,v 1.25 1995/05/30 08:15:59 rgrimes Exp $
*/
/*
diff --git a/sys/vm/vm_glue.c b/sys/vm/vm_glue.c
index c49cd5c38f42..c72c24aea8e0 100644
--- a/sys/vm/vm_glue.c
+++ b/sys/vm/vm_glue.c
@@ -59,7 +59,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: vm_glue.c,v 1.20.4.1 1995/09/17 01:51:19 davidg Exp $
+ * $Id: vm_glue.c,v 1.20.4.2 1995/10/16 20:43:05 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/vm/vm_inherit.h b/sys/vm/vm_inherit.h
index ee212e19bdc5..65a54beb41fc 100644
--- a/sys/vm/vm_inherit.h
+++ b/sys/vm/vm_inherit.h
@@ -61,7 +61,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: vm_inherit.h,v 1.2 1994/08/02 07:55:20 davidg Exp $
+ * $Id: vm_inherit.h,v 1.3 1995/01/09 16:05:41 davidg Exp $
*/
/*
diff --git a/sys/vm/vm_init.c b/sys/vm/vm_init.c
index 64f3814d2184..ce1d4ea81fa3 100644
--- a/sys/vm/vm_init.c
+++ b/sys/vm/vm_init.c
@@ -61,7 +61,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: vm_init.c,v 1.5 1995/01/09 16:05:42 davidg Exp $
+ * $Id: vm_init.c,v 1.6 1995/03/16 18:17:11 bde Exp $
*/
/*
diff --git a/sys/vm/vm_kern.c b/sys/vm/vm_kern.c
index 07b4c49e7f76..a481bb6b94b9 100644
--- a/sys/vm/vm_kern.c
+++ b/sys/vm/vm_kern.c
@@ -61,7 +61,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: vm_kern.c,v 1.12 1995/03/15 07:52:06 davidg Exp $
+ * $Id: vm_kern.c,v 1.13 1995/05/30 08:16:04 rgrimes Exp $
*/
/*
diff --git a/sys/vm/vm_kern.h b/sys/vm/vm_kern.h
index 627c70d2a6f1..b93a44de1171 100644
--- a/sys/vm/vm_kern.h
+++ b/sys/vm/vm_kern.h
@@ -61,7 +61,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: vm_kern.h,v 1.4 1994/08/18 22:36:03 wollman Exp $
+ * $Id: vm_kern.h,v 1.5 1995/01/09 16:05:44 davidg Exp $
*/
#ifndef _VM_VM_KERN_H_
diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c
index bed9d3540fb0..c998984c5cb3 100644
--- a/sys/vm/vm_map.c
+++ b/sys/vm/vm_map.c
@@ -61,7 +61,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: vm_map.c,v 1.22 1995/05/30 08:16:07 rgrimes Exp $
+ * $Id: vm_map.c,v 1.22.4.1 1995/11/12 08:59:56 davidg Exp $
*/
/*
diff --git a/sys/vm/vm_map.h b/sys/vm/vm_map.h
index f250144047d9..89b0ffb56a7a 100644
--- a/sys/vm/vm_map.h
+++ b/sys/vm/vm_map.h
@@ -61,7 +61,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: vm_map.h,v 1.4 1995/01/09 16:05:46 davidg Exp $
+ * $Id: vm_map.h,v 1.5 1995/03/16 18:17:17 bde Exp $
*/
/*
diff --git a/sys/vm/vm_meter.c b/sys/vm/vm_meter.c
index bf65f8ca4ad8..88bab58fa9bb 100644
--- a/sys/vm/vm_meter.c
+++ b/sys/vm/vm_meter.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)vm_meter.c 8.4 (Berkeley) 1/4/94
- * $Id: vm_meter.c,v 1.5 1995/01/09 16:05:47 davidg Exp $
+ * $Id: vm_meter.c,v 1.6 1995/01/10 07:32:47 davidg Exp $
*/
#include <sys/param.h>
diff --git a/sys/vm/vm_mmap.c b/sys/vm/vm_mmap.c
index 106b62b6a529..aac04cd858f7 100644
--- a/sys/vm/vm_mmap.c
+++ b/sys/vm/vm_mmap.c
@@ -38,7 +38,7 @@
* from: Utah $Hdr: vm_mmap.c 1.6 91/10/21$
*
* @(#)vm_mmap.c 8.4 (Berkeley) 1/12/94
- * $Id: vm_mmap.c,v 1.24 1995/05/30 08:16:09 rgrimes Exp $
+ * $Id: vm_mmap.c,v 1.24.4.1 1995/07/20 10:34:15 davidg Exp $
*/
/*
diff --git a/sys/vm/vm_object.c b/sys/vm/vm_object.c
index e51b6c07c755..52d92a9cac9b 100644
--- a/sys/vm/vm_object.c
+++ b/sys/vm/vm_object.c
@@ -61,7 +61,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: vm_object.c,v 1.48 1995/06/11 19:31:53 rgrimes Exp $
+ * $Id: vm_object.c,v 1.48.2.1 1995/06/14 17:21:58 davidg Exp $
*/
/*
diff --git a/sys/vm/vm_object.h b/sys/vm/vm_object.h
index 18b4e9ac4bff..efe92914ea66 100644
--- a/sys/vm/vm_object.h
+++ b/sys/vm/vm_object.h
@@ -61,7 +61,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: vm_object.h,v 1.17 1995/04/09 06:03:51 davidg Exp $
+ * $Id: vm_object.h,v 1.18 1995/05/02 05:57:11 davidg Exp $
*/
/*
diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c
index 30983e14bbb7..b917e5b1330c 100644
--- a/sys/vm/vm_page.c
+++ b/sys/vm/vm_page.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)vm_page.c 7.4 (Berkeley) 5/7/91
- * $Id: vm_page.c,v 1.31 1995/04/16 12:56:21 davidg Exp $
+ * $Id: vm_page.c,v 1.32 1995/05/30 08:16:15 rgrimes Exp $
*/
/*
diff --git a/sys/vm/vm_page.h b/sys/vm/vm_page.h
index 4a4e54d87c9f..81bb3547aa45 100644
--- a/sys/vm/vm_page.h
+++ b/sys/vm/vm_page.h
@@ -61,7 +61,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: vm_page.h,v 1.17 1995/03/26 23:33:14 davidg Exp $
+ * $Id: vm_page.h,v 1.18 1995/04/23 08:05:49 bde Exp $
*/
/*
diff --git a/sys/vm/vm_pageout.c b/sys/vm/vm_pageout.c
index c4c351fd38cf..7de495e2323a 100644
--- a/sys/vm/vm_pageout.c
+++ b/sys/vm/vm_pageout.c
@@ -65,7 +65,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: vm_pageout.c,v 1.50 1995/05/21 21:39:31 davidg Exp $
+ * $Id: vm_pageout.c,v 1.51 1995/05/30 08:16:18 rgrimes Exp $
*/
/*
diff --git a/sys/vm/vm_pageout.h b/sys/vm/vm_pageout.h
index d1da63c280ed..fc22edbae128 100644
--- a/sys/vm/vm_pageout.h
+++ b/sys/vm/vm_pageout.h
@@ -61,7 +61,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: vm_pageout.h,v 1.11 1995/04/09 06:03:55 davidg Exp $
+ * $Id: vm_pageout.h,v 1.12 1995/05/30 08:16:20 rgrimes Exp $
*/
#ifndef _VM_VM_PAGEOUT_H_
diff --git a/sys/vm/vm_pager.c b/sys/vm/vm_pager.c
index f7f1976d7b6b..7d4cb7b13f19 100644
--- a/sys/vm/vm_pager.c
+++ b/sys/vm/vm_pager.c
@@ -61,7 +61,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: vm_pager.c,v 1.14 1995/04/25 06:22:47 davidg Exp $
+ * $Id: vm_pager.c,v 1.15 1995/05/10 18:56:07 davidg Exp $
*/
/*
diff --git a/sys/vm/vm_pager.h b/sys/vm/vm_pager.h
index 1cab34a5045b..aec798667489 100644
--- a/sys/vm/vm_pager.h
+++ b/sys/vm/vm_pager.h
@@ -37,7 +37,7 @@
* SUCH DAMAGE.
*
* @(#)vm_pager.h 8.4 (Berkeley) 1/12/94
- * $Id: vm_pager.h,v 1.6 1995/03/16 18:17:32 bde Exp $
+ * $Id: vm_pager.h,v 1.7 1995/05/10 18:56:08 davidg Exp $
*/
/*
diff --git a/sys/vm/vm_param.h b/sys/vm/vm_param.h
index 4b047f9e06ca..086a8bf2227b 100644
--- a/sys/vm/vm_param.h
+++ b/sys/vm/vm_param.h
@@ -61,7 +61,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: vm_param.h,v 1.3 1994/08/02 07:55:37 davidg Exp $
+ * $Id: vm_param.h,v 1.4 1995/01/09 16:05:57 davidg Exp $
*/
/*
diff --git a/sys/vm/vm_prot.h b/sys/vm/vm_prot.h
index 36079a0c1ed9..b50a90150ec4 100644
--- a/sys/vm/vm_prot.h
+++ b/sys/vm/vm_prot.h
@@ -61,7 +61,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: vm_prot.h,v 1.3 1994/08/02 07:55:38 davidg Exp $
+ * $Id: vm_prot.h,v 1.4 1995/01/09 16:05:57 davidg Exp $
*/
/*
diff --git a/sys/vm/vm_swap.c b/sys/vm/vm_swap.c
index 9b90074ddc8d..d2fbf2dd06b2 100644
--- a/sys/vm/vm_swap.c
+++ b/sys/vm/vm_swap.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)vm_swap.c 8.5 (Berkeley) 2/17/94
- * $Id: vm_swap.c,v 1.20 1995/05/25 03:38:11 davidg Exp $
+ * $Id: vm_swap.c,v 1.21 1995/05/30 08:16:21 rgrimes Exp $
*/
#include <sys/param.h>
diff --git a/sys/vm/vm_unix.c b/sys/vm/vm_unix.c
index 51f50616880d..ae888fd26f44 100644
--- a/sys/vm/vm_unix.c
+++ b/sys/vm/vm_unix.c
@@ -38,7 +38,7 @@
* from: Utah $Hdr: vm_unix.c 1.1 89/11/07$
*
* @(#)vm_unix.c 8.1 (Berkeley) 6/11/93
- * $Id: vm_unix.c,v 1.4 1995/01/09 16:05:59 davidg Exp $
+ * $Id: vm_unix.c,v 1.5 1995/02/20 17:36:36 davidg Exp $
*/
/*
diff --git a/sys/vm/vnode_pager.c b/sys/vm/vnode_pager.c
index 4abda8acc3e4..375830662faf 100644
--- a/sys/vm/vnode_pager.c
+++ b/sys/vm/vnode_pager.c
@@ -37,7 +37,7 @@
* SUCH DAMAGE.
*
* from: @(#)vnode_pager.c 7.5 (Berkeley) 4/20/91
- * $Id: vnode_pager.c,v 1.40.4.1 1995/07/07 06:22:00 davidg Exp $
+ * $Id: vnode_pager.c,v 1.40.4.2 1995/07/20 10:34:17 davidg Exp $
*/
/*
diff --git a/sys/vm/vnode_pager.h b/sys/vm/vnode_pager.h
index 381af99feb69..6e40dcbc2494 100644
--- a/sys/vm/vnode_pager.h
+++ b/sys/vm/vnode_pager.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)vnode_pager.h 8.1 (Berkeley) 6/11/93
- * $Id: vnode_pager.h,v 1.3 1994/08/02 07:55:43 davidg Exp $
+ * $Id: vnode_pager.h,v 1.4 1995/01/09 16:06:02 davidg Exp $
*/
#ifndef _VNODE_PAGER_
diff --git a/usr.bin/Makefile b/usr.bin/Makefile
index 16e513f53e94..01e6ba795e36 100644
--- a/usr.bin/Makefile
+++ b/usr.bin/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.3 (Berkeley) 1/7/94
-# $Id: Makefile,v 1.51 1995/05/10 00:38:30 jfieber Exp $
+# $Id: Makefile,v 1.52 1995/05/10 18:22:29 jkh Exp $
# XXX MISSING: deroff diction graph learn plot
# spell spline struct units xsend
diff --git a/usr.bin/at/Makefile b/usr.bin/at/Makefile
index e1e3096182e2..6eacdb0c7bb6 100644
--- a/usr.bin/at/Makefile
+++ b/usr.bin/at/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1 1994/01/05 01:08:51 nate Exp $
+# $Id: Makefile,v 1.2 1995/04/12 02:42:22 ache Exp $
.include "${.CURDIR}/Makefile.inc"
diff --git a/usr.bin/at/at.c b/usr.bin/at/at.c
index d2e6e30efe5a..3f5bd0ba5e33 100644
--- a/usr.bin/at/at.c
+++ b/usr.bin/at/at.c
@@ -80,7 +80,7 @@
/* File scope variables */
-static char rcsid[] = "$Id: at.c,v 1.4 1995/04/27 19:27:41 ache Exp $";
+static char rcsid[] = "$Id: at.c,v 1.5 1995/05/30 06:29:21 rgrimes Exp $";
char *no_export[] =
{
"TERM", "TERMCAP", "DISPLAY", "_"
diff --git a/usr.bin/at/at.man b/usr.bin/at/at.man
index 21e789c01041..016cbf8f5911 100644
--- a/usr.bin/at/at.man
+++ b/usr.bin/at/at.man
@@ -1,4 +1,4 @@
-.\" $Id: at.man,v 1.3 1994/06/16 16:49:46 kernel Exp $
+.\" $Id: at.man,v 1.1 1995/04/12 02:42:31 ache Exp $
.Dd April 12, 1995
.Dt "AT" 1
.Os "FreeBSD 2.1"
diff --git a/usr.bin/at/panic.c b/usr.bin/at/panic.c
index 9d21e096b85c..ddd3b8abd59d 100644
--- a/usr.bin/at/panic.c
+++ b/usr.bin/at/panic.c
@@ -37,7 +37,7 @@
/* File scope variables */
-static char rcsid[] = "$Id: panic.c,v 1.2 1995/04/12 02:42:32 ache Exp $";
+static char rcsid[] = "$Id: panic.c,v 1.3 1995/05/30 06:29:23 rgrimes Exp $";
/* External variables */
diff --git a/usr.bin/at/parsetime.c b/usr.bin/at/parsetime.c
index 867893cf1346..df436d280fc5 100644
--- a/usr.bin/at/parsetime.c
+++ b/usr.bin/at/parsetime.c
@@ -130,7 +130,7 @@ static size_t sc_len; /* scanner - lenght of token buffer */
static int sc_tokid; /* scanner - token id */
static int sc_tokplur; /* scanner - is token plural? */
-static char rcsid[] = "$Id: parsetime.c,v 1.3 1995/04/12 02:42:35 ache Exp $";
+static char rcsid[] = "$Id: parsetime.c,v 1.4 1995/05/30 06:29:25 rgrimes Exp $";
/* Local functions */
diff --git a/usr.bin/at/perm.c b/usr.bin/at/perm.c
index 078af59269a8..13fc0c15ec2a 100644
--- a/usr.bin/at/perm.c
+++ b/usr.bin/at/perm.c
@@ -48,7 +48,7 @@
/* File scope variables */
-static char rcsid[] = "$Id: perm.c,v 1.1 1995/04/12 02:42:37 ache Exp $";
+static char rcsid[] = "$Id: perm.c,v 1.2 1995/05/30 06:29:26 rgrimes Exp $";
/* Function declarations */
diff --git a/usr.bin/chat/Makefile b/usr.bin/chat/Makefile
index be272711406c..42df755055e7 100644
--- a/usr.bin/chat/Makefile
+++ b/usr.bin/chat/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile.bsd,v 1.2 1994/05/26 06:45:03 paulus Exp $
+# $Id: Makefile,v 1.1.1.1 1994/11/12 05:25:32 lars Exp $
PROG= chat
SRCS= chat.c
diff --git a/usr.bin/chat/chat.8 b/usr.bin/chat/chat.8
index e54f6b4ee7f8..7d8ff8b038bb 100644
--- a/usr.bin/chat/chat.8
+++ b/usr.bin/chat/chat.8
@@ -1,6 +1,6 @@
.\" -*- nroff -*-
.\" manual page [] for chat 1.8
-.\" $Id: chat.8,v 1.1.1.1 1994/11/12 05:25:32 lars Exp $
+.\" $Id: chat.8,v 1.2 1994/12/12 00:19:19 ats Exp $
.\" SH section heading
.\" SS subsection heading
.\" LP paragraph
diff --git a/usr.bin/chat/chat.c b/usr.bin/chat/chat.c
index 66387d63ae03..de350d7449a3 100644
--- a/usr.bin/chat/chat.c
+++ b/usr.bin/chat/chat.c
@@ -18,7 +18,7 @@
* (614)451-1883
*/
-static char rcsid[] = "$Id: chat.c,v 1.2 1994/12/19 01:02:11 ache Exp $";
+static char rcsid[] = "$Id: chat.c,v 1.3 1995/05/30 06:29:32 rgrimes Exp $";
#include <stdio.h>
#include <fcntl.h>
diff --git a/usr.bin/chpass/chpass.c b/usr.bin/chpass/chpass.c
index 38efe35467cb..95cc1c7b2e93 100644
--- a/usr.bin/chpass/chpass.c
+++ b/usr.bin/chpass/chpass.c
@@ -40,7 +40,7 @@ static char copyright[] =
#ifndef lint
static char sccsid[] = "From: @(#)chpass.c 8.4 (Berkeley) 4/2/94";
static char rcsid[] =
- "$Id: chpass.c,v 1.5 1995/09/02 03:56:17 wpaul Exp $";
+ "$Id: chpass.c,v 1.3.4.2 1995/10/06 00:58:49 davidg Exp $";
#endif /* not lint */
#include <sys/param.h>
diff --git a/usr.bin/chpass/pw_yp.c b/usr.bin/chpass/pw_yp.c
index c362cfed12a2..32cdc194226e 100644
--- a/usr.bin/chpass/pw_yp.c
+++ b/usr.bin/chpass/pw_yp.c
@@ -35,7 +35,7 @@
* Center for Telecommunications Research
* Columbia University, New York City
*
- * $Id: pw_yp.c,v 1.2 1995/09/02 03:56:19 wpaul Exp $
+ * $Id: pw_yp.c,v 1.1.2.1 1995/10/06 00:58:50 davidg Exp $
*/
#ifdef YP
diff --git a/usr.bin/chpass/pw_yp.h b/usr.bin/chpass/pw_yp.h
index 13f3eee2b011..7315399dd800 100644
--- a/usr.bin/chpass/pw_yp.h
+++ b/usr.bin/chpass/pw_yp.h
@@ -35,7 +35,7 @@
* Center for Telecommunications Research
* Columbia University, New York City
*
- * $Id: pw_yp.h,v 1.2 1995/09/02 03:56:21 wpaul Exp $
+ * $Id: pw_yp.h,v 1.1.2.1 1995/10/06 00:58:51 davidg Exp $
*/
#ifdef YP
diff --git a/usr.bin/colldef/Makefile b/usr.bin/colldef/Makefile
index a49e39b4459b..bcaeac6a89b1 100644
--- a/usr.bin/colldef/Makefile
+++ b/usr.bin/colldef/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.4 1995/09/28 18:23:34 bde Exp $
+# $Id: Makefile,v 1.2.4.2 1995/10/06 01:07:02 davidg Exp $
PROG = colldef
LFLAGS = -8 -i
diff --git a/usr.bin/colldef/parse.y b/usr.bin/colldef/parse.y
index 47f3cd5a1b41..35153184cbd6 100644
--- a/usr.bin/colldef/parse.y
+++ b/usr.bin/colldef/parse.y
@@ -25,7 +25,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: parse.y,v 1.2 1995/01/24 11:15:47 alex Exp alex $
+ * $Id: parse.y,v 1.1.1.1 1995/02/17 17:29:50 ache Exp $
*/
#include <err.h>
diff --git a/usr.bin/colldef/scan.l b/usr.bin/colldef/scan.l
index 3be046335080..3b9352c65cf4 100644
--- a/usr.bin/colldef/scan.l
+++ b/usr.bin/colldef/scan.l
@@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: scan.l,v 1.1 1995/01/22 20:37:31 alex Exp alex $
+ * $Id: scan.l,v 1.1.1.1 1995/02/17 17:29:50 ache Exp $
*/
#include <err.h>
diff --git a/usr.bin/compile_et/Makefile b/usr.bin/compile_et/Makefile
index b03ff7801b23..f48381b9a14b 100644
--- a/usr.bin/compile_et/Makefile
+++ b/usr.bin/compile_et/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.4 1995/01/14 22:30:32 wollman Exp $
+# $Id: Makefile,v 1.5 1995/02/09 00:24:00 jkh Exp $
PROG= compile_et
SRCS= compile_et.c error_table.y
diff --git a/usr.bin/compile_et/compile_et.1 b/usr.bin/compile_et/compile_et.1
index f17a278bdc71..55e37cdf9679 100644
--- a/usr.bin/compile_et/compile_et.1
+++ b/usr.bin/compile_et/compile_et.1
@@ -1,7 +1,7 @@
.\" Copyright (c) 1988 Massachusetts Institute of Technology,
.\" Student Information Processing Board. All rights reserved.
.\"
-.\" $Header$
+.\" $Header: /home/ncvs/src/usr.bin/compile_et/compile_et.1,v 1.1 1995/01/14 22:29:30 wollman Exp $
.\"
.TH COMPILE_ET 1 "22 Nov 1988" SIPB
.SH NAME
diff --git a/usr.bin/compile_et/compile_et.c b/usr.bin/compile_et/compile_et.c
index 8e3f492140ff..8db11bc30415 100644
--- a/usr.bin/compile_et/compile_et.c
+++ b/usr.bin/compile_et/compile_et.c
@@ -23,7 +23,7 @@ static const char copyright[] =
"Copyright 1987,1988 by MIT Student Information Processing Board";
static const char rcsid_compile_et_c[] =
- "$Header: /afs/rel-eng.athena.mit.edu/project/release/current/source/athena/athena.lib/et/RCS/compile_et.c,v 1.3 91/02/28 15:15:23 epeisach Exp $";
+ "$Header: /home/ncvs/src/usr.bin/compile_et/compile_et.c,v 1.2 1995/01/14 22:29:31 wollman Exp $";
#endif
extern char *gensym();
diff --git a/usr.bin/compile_et/error_table.y b/usr.bin/compile_et/error_table.y
index cb3c0dabc7cf..94b842cac546 100644
--- a/usr.bin/compile_et/error_table.y
+++ b/usr.bin/compile_et/error_table.y
@@ -74,7 +74,7 @@ description : QUOTED_STRING
#ifndef lint
static char const rcsid_error_table_y[] =
- "$Header: /home/ncvs/src/usr.bin/compile_et/error_table.y,v 1.2 1995/01/14 22:29:33 wollman Exp $";
+ "$Header: /home/ncvs/src/usr.bin/compile_et/error_table.y,v 1.3 1995/03/15 19:05:28 wpaul Exp $";
#endif
void *malloc(), *realloc();
diff --git a/usr.bin/compile_et/et_lex.lex.l b/usr.bin/compile_et/et_lex.lex.l
index 0c848de295c4..0ead5b1ff572 100644
--- a/usr.bin/compile_et/et_lex.lex.l
+++ b/usr.bin/compile_et/et_lex.lex.l
@@ -22,5 +22,5 @@ end return END;
. { return (*yytext); }
%%
#ifndef lint
-static char rcsid_et_lex_lex_l[] = "$Header: et_lex.lex.l,v 1.3 87/10/31 06:28:05 raeburn Exp $";
+static char rcsid_et_lex_lex_l[] = "$Header: /home/ncvs/src/usr.bin/compile_et/et_lex.lex.l,v 1.2 1995/01/14 22:29:33 wollman Exp $";
#endif
diff --git a/usr.bin/compress/doc/revision.log b/usr.bin/compress/doc/revision.log
index b1d8b24cc4f0..9b7ad192d44e 100644
--- a/usr.bin/compress/doc/revision.log
+++ b/usr.bin/compress/doc/revision.log
@@ -1,6 +1,9 @@
/*
- * $Header: compress.c,v 4.0 85/07/30 12:50:00 joe Release $
- * $Log: compress.c,v $
+ * $Header: /home/ncvs/src/usr.bin/compress/doc/revision.log,v 1.1.1.1 1994/05/27 12:30:59 rgrimes Exp $
+ * $Log: revision.log,v $
+# Revision 1.1.1.1 1994/05/27 12:30:59 rgrimes
+# BSD 4.4 Lite Usr.bin Sources
+#
* Revision 4.0 85/07/30 12:50:00 joe
* Removed ferror() calls in output routine on every output except first.
* Prepared for release to the world.
@@ -113,4 +116,4 @@
*/
static char rcs_ident[] =
- "$Header: compress.c,v 4.0 85/07/30 12:50:00 joe Release $";
+ "$Header: /home/ncvs/src/usr.bin/compress/doc/revision.log,v 1.1.1.1 1994/05/27 12:30:59 rgrimes Exp $";
diff --git a/usr.bin/cpp/cpp.sh b/usr.bin/cpp/cpp.sh
index 34aa29eb883a..e593d45c2fbd 100644
--- a/usr.bin/cpp/cpp.sh
+++ b/usr.bin/cpp/cpp.sh
@@ -36,7 +36,7 @@
# SUCH DAMAGE.
#
# From: @(#)cpp.sh 8.1 (Berkeley) 6/6/93
-# $Id: cpp.sh,v 1.3 1994/08/23 03:52:40 jkh Exp $
+# $Id: cpp.sh,v 1.4 1994/09/05 13:58:58 bde Exp $
#
# Transitional front end to CCCP to make it behave like (Reiser) CCP:
# specifies -traditional
diff --git a/usr.bin/devmenu/Makefile b/usr.bin/devmenu/Makefile
index 225756a41ca8..631f24f932a8 100644
--- a/usr.bin/devmenu/Makefile
+++ b/usr.bin/devmenu/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1 1995/04/13 21:10:56 wollman Exp $
+# $Id: Makefile,v 1.2 1995/04/14 16:13:28 ache Exp $
PROG= devmenu
SRCS= devmenu.c devfilter.c ifmenu.c
diff --git a/usr.bin/devmenu/devmenu.1 b/usr.bin/devmenu/devmenu.1
index f277baafb345..0f89d8a4646a 100644
--- a/usr.bin/devmenu/devmenu.1
+++ b/usr.bin/devmenu/devmenu.1
@@ -26,7 +26,7 @@
.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $Id: devmenu.1,v 1.1 1995/04/13 21:10:58 wollman Exp $
+.\" $Id: devmenu.1,v 1.2 1995/04/14 18:33:42 wollman Exp $
.Dd April 14, 1995
.Dt DEVMENU 1
.Os FreeBSD 2.1
diff --git a/usr.bin/devmenu/devmenu.c b/usr.bin/devmenu/devmenu.c
index 2e5c69beea45..802a1ebfefe9 100644
--- a/usr.bin/devmenu/devmenu.c
+++ b/usr.bin/devmenu/devmenu.c
@@ -36,7 +36,7 @@
#ifndef lint
static const char rcsid[] =
- "$Id: devmenu.c,v 1.2 1995/04/14 18:33:43 wollman Exp $";
+ "$Id: devmenu.c,v 1.3 1995/05/30 06:29:43 rgrimes Exp $";
#endif
#include <stdlib.h>
diff --git a/usr.bin/devmenu/devmenu.h b/usr.bin/devmenu/devmenu.h
index e3cf1a85b40b..ba7611de09d7 100644
--- a/usr.bin/devmenu/devmenu.h
+++ b/usr.bin/devmenu/devmenu.h
@@ -26,7 +26,7 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: devmenu.h,v 1.2 1995/04/14 18:33:44 wollman Exp $
+ * $Id: devmenu.h,v 1.3 1995/05/30 06:29:44 rgrimes Exp $
*/
/* NB: must include sys/devconf.h before this file */
diff --git a/usr.bin/dig/dig.1 b/usr.bin/dig/dig.1
index 71e43749a695..10d57e0600d9 100644
--- a/usr.bin/dig/dig.1
+++ b/usr.bin/dig/dig.1
@@ -1,4 +1,4 @@
-.\" $Id: dig.1,v 1.1.1.1 1994/09/22 21:33:31 pst Exp $
+.\" $Id: dig.1,v 1.2 1994/11/19 13:12:37 ats Exp $
.\"
.\" ++Copyright++ 1993
.\" -
diff --git a/usr.bin/dig/dig.c b/usr.bin/dig/dig.c
index 0557412088d9..4b5eb0fc16bc 100644
--- a/usr.bin/dig/dig.c
+++ b/usr.bin/dig/dig.c
@@ -1,5 +1,5 @@
#ifndef lint
-static char rcsid[] = "$Id: dig.c,v 1.4 1995/05/30 06:29:46 rgrimes Exp $";
+static char rcsid[] = "$Id: dig.c,v 1.4.4.1 1995/08/30 04:06:06 davidg Exp $";
#endif
/*
diff --git a/usr.bin/ee/doc/new_curse.c b/usr.bin/ee/doc/new_curse.c
index 0e6cd54831cf..91c1078948a2 100644
--- a/usr.bin/ee/doc/new_curse.c
+++ b/usr.bin/ee/doc/new_curse.c
@@ -37,14 +37,14 @@
| Copyright (c) 1986, 1987, 1988, 1991, 1992, 1993, 1994, 1995 Hugh Mahon
| All are rights reserved.
|
- | $Header: /home/hugh/sources/old_ae/RCS/new_curse.c,v 1.37 1995/08/28 23:49:26 hugh Exp $
+ | $Header: /home/ncvs/src/usr.bin/ee/doc/new_curse.c,v 1.1.1.1 1995/08/30 07:28:06 jkh Exp $
|
*/
char *copyright_message[] = { "Copyright (c) 1986, 1987, 1988, 1991, 1992, 1993, 1994, 1995 Hugh Mahon",
"All rights are reserved."};
-char * new_curse_name= "@(#) new_curse.c $Revision: 1.37 $";
+char * new_curse_name= "@(#) new_curse.c $Revision: 1.1.1.1 $";
#include "new_curse.h"
#include <signal.h>
diff --git a/usr.bin/ee/ee.c b/usr.bin/ee/ee.c
index b8291b26af05..560d4473fca7 100644
--- a/usr.bin/ee/ee.c
+++ b/usr.bin/ee/ee.c
@@ -49,7 +49,7 @@
| proprietary information which is protected by
| copyright. All rights are reserved.
|
- | $Header: /home/ncvs/src/usr.bin/ee/ee.c,v 1.4 1995/10/22 14:10:08 jkh Exp $
+ | $Header: /home/ncvs/src/usr.bin/ee/ee.c,v 1.3.2.1 1995/10/22 14:14:25 jkh Exp $
|
*/
@@ -62,7 +62,7 @@ char *ee_long_notice[] = {
"copyright. All rights are reserved."
};
-char *version = "@(#) ee, version 1.2.4 $Revision: 1.4 $";
+char *version = "@(#) ee, version 1.2.4 $Revision: 1.3.2.1 $";
#ifdef NCURSE
#include "new_curse.h"
diff --git a/usr.bin/ee/ee.o b/usr.bin/ee/ee.o
new file mode 100644
index 000000000000..13658dc523d5
--- /dev/null
+++ b/usr.bin/ee/ee.o
Binary files differ
diff --git a/usr.bin/ee/nls/de_DE.ISO_8859-1/ee.msg b/usr.bin/ee/nls/de_DE.ISO_8859-1/ee.msg
index f1aa1014bd75..4fbdafd5b7d6 100644
--- a/usr.bin/ee/nls/de_DE.ISO_8859-1/ee.msg
+++ b/usr.bin/ee/nls/de_DE.ISO_8859-1/ee.msg
@@ -3,7 +3,7 @@ $ ee.i18n.guide for more information
$
$ For ee patchlevel 3
$
-$ $Header$
+$ $Header: /home/ncvs/src/usr.bin/ee/nls/de_DE.ISO_8859-1/ee.msg,v 1.1 1995/10/21 23:47:40 joerg Exp $
$
$set 1
$quote "
diff --git a/usr.bin/ee/nls/en_US.ISO_8859-1/ee.msg b/usr.bin/ee/nls/en_US.ISO_8859-1/ee.msg
index 1ed22aa1bed4..65d5a35353fc 100644
--- a/usr.bin/ee/nls/en_US.ISO_8859-1/ee.msg
+++ b/usr.bin/ee/nls/en_US.ISO_8859-1/ee.msg
@@ -3,7 +3,7 @@ $ ee.i18n.guide for more information
$
$ For ee patchlevel 3
$
-$ $Header: /home/ncvs/src/usr.bin/ee/ee.msg,v 1.1.1.1 1995/08/30 07:28:06 jkh Exp $
+$ $Header: /home/ncvs/src/usr.bin/ee/nls/en_US.ISO_8859-1/ee.msg,v 1.1 1995/08/30 13:25:55 jkh Exp $
$
$set 1
$quote "
diff --git a/usr.bin/ee/nls/fr_FR.ISO_8859-1/ee.msg b/usr.bin/ee/nls/fr_FR.ISO_8859-1/ee.msg
index 1901d8e8835d..466f535564c1 100644
--- a/usr.bin/ee/nls/fr_FR.ISO_8859-1/ee.msg
+++ b/usr.bin/ee/nls/fr_FR.ISO_8859-1/ee.msg
@@ -3,7 +3,7 @@ $ ee.i18n.guide for more information
$
$ For ee patchlevel 3
$
-$ $Id$
+$ $Id: ee.msg,v 1.1 1995/09/09 15:06:08 jmz Exp $
$
$set 1
$quote "
diff --git a/usr.bin/file/LEGAL.NOTICE b/usr.bin/file/LEGAL.NOTICE
index a8255b903a12..b07d89685dc1 100644
--- a/usr.bin/file/LEGAL.NOTICE
+++ b/usr.bin/file/LEGAL.NOTICE
@@ -1,6 +1,6 @@
Copyright (c) Ian F. Darwin 1986, 1987, 1989, 1990, 1991, 1992.
Written by Ian F. Darwin and others.
-$Id: LEGAL.NOTICE,v 1.8 1993/03/17 11:35:30 ian Exp $
+$Id: LEGAL.NOTICE,v 1.1.1.1 1994/09/03 19:16:22 csgr Exp $
This software is not subject to and may not be made subject to any
license of the American Telephone and Telegraph Company (AT&T Inc.),
diff --git a/usr.bin/file/MAINT b/usr.bin/file/MAINT
index 7fc5e3637f3b..63d41b783b62 100644
--- a/usr.bin/file/MAINT
+++ b/usr.bin/file/MAINT
@@ -1,4 +1,4 @@
-$Id: MAINT,v 1.2 1993/09/23 21:47:01 christos Exp $
+$Id: MAINT,v 1.1.1.1 1994/09/03 19:16:22 csgr Exp $
Maintenance notes:
diff --git a/usr.bin/file/Magdir/Localstuff b/usr.bin/file/Magdir/Localstuff
index 224940b946e1..d4b8377faa88 100644
--- a/usr.bin/file/Magdir/Localstuff
+++ b/usr.bin/file/Magdir/Localstuff
@@ -1,3 +1,3 @@
-# $Id: Localstuff,v 1.2 1993/01/05 13:22:25 ian Exp $
+# $Id: Localstuff,v 1.1.1.1 1994/09/03 19:16:24 csgr Exp $
# Add any locally-observed files here. Remember:
# text if readable, executable if runnable binary, data if unreadable.
diff --git a/usr.bin/file/Magdir/sgml b/usr.bin/file/Magdir/sgml
index bb8b5dd43d19..db8434e33c0a 100644
--- a/usr.bin/file/Magdir/sgml
+++ b/usr.bin/file/Magdir/sgml
@@ -1,4 +1,4 @@
-# $Id: sgml,v 1.3 1993/01/05 12:52:44 ian Exp $
+# $Id: sgml,v 1.1.1.1 1994/09/03 19:16:28 csgr Exp $
# SGML goop, mostly from rph@sq.
0 string \<!DOCTYPE Exported SGML document
0 string \<!doctype Exported SGML document
diff --git a/usr.bin/file/Magdir/softquad b/usr.bin/file/Magdir/softquad
index e49d052ee7cb..deb4a14f7d6b 100644
--- a/usr.bin/file/Magdir/softquad
+++ b/usr.bin/file/Magdir/softquad
@@ -1,5 +1,5 @@
# SoftQuad Publishing Software magic numbers
-# $Id: softquad,v 1.8 1993/02/19 14:36:43 ian Exp $
+# $Id: softquad,v 1.1.1.1 1994/09/03 19:16:28 csgr Exp $
# Author/Editor and RulesBuilder
#
# XXX - byte order?
diff --git a/usr.bin/file/Makefile b/usr.bin/file/Makefile
index a0b27d20dfc7..e0f06c84c4a4 100644
--- a/usr.bin/file/Makefile
+++ b/usr.bin/file/Makefile
@@ -1,6 +1,6 @@
# Makefile for file(1) cmd.
# Copyright (c) Ian F. Darwin 86/09/01 - see LEGAL.NOTICE.
-# @(#)$Id: Makefile,v 1.2 1994/09/03 19:31:14 csgr Exp $
+# @(#)$Id: Makefile,v 1.3 1995/05/30 06:29:57 rgrimes Exp $
#
# This software is not subject to any license of the American Telephone
# and Telegraph Company or of the Regents of the University of California.
diff --git a/usr.bin/file/PORTING b/usr.bin/file/PORTING
index 06790e6ace03..6f62a3ef35be 100644
--- a/usr.bin/file/PORTING
+++ b/usr.bin/file/PORTING
@@ -1,5 +1,5 @@
Portability of the new file(1) command.
-@(#) $Id: PORTING,v 1.11 1993/09/23 21:47:23 christos Exp $
+@(#) $Id: PORTING,v 1.1.1.1 1994/09/03 19:16:22 csgr Exp $
Read this file only if the program doesn't compile on your system.
diff --git a/usr.bin/file/README b/usr.bin/file/README
index 2ee8e6777a40..ff11bdd2d35e 100644
--- a/usr.bin/file/README
+++ b/usr.bin/file/README
@@ -1,5 +1,5 @@
** README for file(1) Command **
-@(#) $Id: README,v 1.20 1993/09/23 21:47:01 christos Exp $
+@(#) $Id: README,v 1.1.1.1 1994/09/03 19:16:22 csgr Exp $
This is Release 3.x of Ian Darwin's (copyright but distributable)
file(1) command. Release 3.x is scheduled for inclusion in the
diff --git a/usr.bin/file/apprentice.c b/usr.bin/file/apprentice.c
index 6cdacaaa6c35..9b01354ab405 100644
--- a/usr.bin/file/apprentice.c
+++ b/usr.bin/file/apprentice.c
@@ -33,7 +33,7 @@
#ifndef lint
static char *moduleid =
- "@(#)$Id: apprentice.c,v 1.1.1.1 1994/09/03 19:16:22 csgr Exp $";
+ "@(#)$Id: apprentice.c,v 1.2 1995/05/30 06:29:58 rgrimes Exp $";
#endif /* lint */
#define EATAB {while (isascii((unsigned char) *l) && \
diff --git a/usr.bin/file/ascmagic.c b/usr.bin/file/ascmagic.c
index 0edb0caa7390..345e0125ee3e 100644
--- a/usr.bin/file/ascmagic.c
+++ b/usr.bin/file/ascmagic.c
@@ -36,7 +36,7 @@
#ifndef lint
static char *moduleid =
- "@(#)$Id: ascmagic.c,v 1.1.1.1 1994/09/03 19:16:22 csgr Exp $";
+ "@(#)$Id: ascmagic.c,v 1.2 1995/05/30 06:29:59 rgrimes Exp $";
#endif /* lint */
/* an optimisation over plain strcmp() */
diff --git a/usr.bin/file/compress.c b/usr.bin/file/compress.c
index 1c0d824e3dfc..adf9226d10e5 100644
--- a/usr.bin/file/compress.c
+++ b/usr.bin/file/compress.c
@@ -4,7 +4,7 @@
* information if recognized
* uncompress(method, old, n, newch) - uncompress old into new,
* using method, return sizeof new
- * $Id: compress.c,v 1.1.1.1 1994/09/03 19:16:22 csgr Exp $
+ * $Id: compress.c,v 1.2 1995/05/30 06:30:00 rgrimes Exp $
*/
#include <stdio.h>
#include <stdlib.h>
diff --git a/usr.bin/file/cvsimport.sh b/usr.bin/file/cvsimport.sh
index 6112e9655fcf..b801525935aa 100644
--- a/usr.bin/file/cvsimport.sh
+++ b/usr.bin/file/cvsimport.sh
@@ -3,7 +3,7 @@
# This shell script can be used in order to handle future imports
# of newer versions of file(1)
#
-# $Id$
+# $Id: cvsimport.sh,v 1.1 1994/09/03 23:08:40 csgr Exp $
if [ $# -ne 2 ] ; then
echo "usage: $0 <major> <minor>" 1>&2
exit 1
diff --git a/usr.bin/file/file.1 b/usr.bin/file/file.1
index 555261f54ed9..d7519d3e319f 100644
--- a/usr.bin/file/file.1
+++ b/usr.bin/file/file.1
@@ -1,5 +1,5 @@
.TH FILE 1 "Copyright but distributable"
-.\# $Id: file.man,v 1.23 1993/09/24 18:50:48 christos Exp $
+.\# $Id: file.1,v 1.2 1994/09/03 19:31:15 csgr Exp $
.SH NAME
.I file
\- determine file type
diff --git a/usr.bin/file/file.c b/usr.bin/file/file.c
index 4b12a9aea4a4..9e22b8dd97c4 100644
--- a/usr.bin/file/file.c
+++ b/usr.bin/file/file.c
@@ -26,7 +26,7 @@
*/
#ifndef lint
static char *moduleid =
- "@(#)$Id: file.c,v 1.1.1.1 1994/09/03 19:16:22 csgr Exp $";
+ "@(#)$Id: file.c,v 1.2 1995/05/30 06:30:01 rgrimes Exp $";
#endif /* lint */
#include <stdio.h>
diff --git a/usr.bin/file/file.h b/usr.bin/file/file.h
index a92c9ffed80c..f96dc40a4aaa 100644
--- a/usr.bin/file/file.h
+++ b/usr.bin/file/file.h
@@ -1,6 +1,6 @@
/*
* file.h - definitions for file(1) program
- * @(#)$Id: file.h,v 1.1.1.1 1994/09/03 19:16:23 csgr Exp $
+ * @(#)$Id: file.h,v 1.2 1995/05/30 06:30:02 rgrimes Exp $
*
* Copyright (c) Ian F. Darwin, 1987.
* Written by Ian F. Darwin.
diff --git a/usr.bin/file/fsmagic.c b/usr.bin/file/fsmagic.c
index 5a66d31fbd73..005999c6b61d 100644
--- a/usr.bin/file/fsmagic.c
+++ b/usr.bin/file/fsmagic.c
@@ -46,7 +46,7 @@
#ifndef lint
static char *moduleid =
- "@(#)$Id: fsmagic.c,v 1.1.1.1 1994/09/03 19:16:22 csgr Exp $";
+ "@(#)$Id: fsmagic.c,v 1.2 1995/05/30 06:30:03 rgrimes Exp $";
#endif /* lint */
int
diff --git a/usr.bin/file/is_tar.c b/usr.bin/file/is_tar.c
index fc9cce2782b6..fff57b68c0c3 100644
--- a/usr.bin/file/is_tar.c
+++ b/usr.bin/file/is_tar.c
@@ -5,7 +5,7 @@
* Pubic Domain version written 26 Aug 1985 John Gilmore (ihnp4!hoptoad!gnu).
*
* @(#)list.c 1.18 9/23/86 Public Domain - gnu
- * $Id: is_tar.c,v 1.1.1.1 1994/09/03 19:16:22 csgr Exp $
+ * $Id: is_tar.c,v 1.2 1995/05/30 06:30:04 rgrimes Exp $
*
* Comments changed and some code/comments reformatted
* for file command by Ian Darwin.
diff --git a/usr.bin/file/magic.5 b/usr.bin/file/magic.5
index 6c6f3ef26767..34b8d4738265 100644
--- a/usr.bin/file/magic.5
+++ b/usr.bin/file/magic.5
@@ -191,4 +191,4 @@ indirect offsets.
.\" the changes I posted to the S5R2 version.
.\"
.\" Modified for Ian Darwin's version of the file command.
-.\" @(#)$Id: magic.man,v 1.11 1994/05/03 17:58:23 christos Exp $
+.\" @(#)$Id: magic.5,v 1.2 1994/09/03 19:31:16 csgr Exp $
diff --git a/usr.bin/file/names.h b/usr.bin/file/names.h
index 5d989ee564ae..2dd46b4cc304 100644
--- a/usr.bin/file/names.h
+++ b/usr.bin/file/names.h
@@ -10,7 +10,7 @@
*
* See LEGAL.NOTICE
*
- * $Id: names.h,v 1.11 1993/09/16 21:14:20 christos Exp $
+ * $Id: names.h,v 1.1.1.1 1994/09/03 19:16:23 csgr Exp $
*/
/* these types are used to index the table 'types': keep em in sync! */
diff --git a/usr.bin/file/patchlevel.h b/usr.bin/file/patchlevel.h
index b33a113e6264..bc98e7f27405 100644
--- a/usr.bin/file/patchlevel.h
+++ b/usr.bin/file/patchlevel.h
@@ -3,9 +3,12 @@
/*
* Patchlevel file for Ian Darwin's MAGIC command.
- * $Id: patchlevel.h,v 1.1.1.1 1994/09/03 19:16:23 csgr Exp $
+ * $Id: patchlevel.h,v 1.2 1995/05/30 06:30:06 rgrimes Exp $
*
* $Log: patchlevel.h,v $
+ * Revision 1.2 1995/05/30 06:30:06 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/03 19:16:23 csgr
* Bring in file 3.14 by Ian Darwin (and Christos Zoulas)
*
diff --git a/usr.bin/file/print.c b/usr.bin/file/print.c
index 44a079eadf60..40b2cea34d47 100644
--- a/usr.bin/file/print.c
+++ b/usr.bin/file/print.c
@@ -40,7 +40,7 @@
#ifndef lint
static char *moduleid =
- "@(#)$Id: print.c,v 1.1.1.1 1994/09/03 19:16:22 csgr Exp $";
+ "@(#)$Id: print.c,v 1.2 1995/05/30 06:30:08 rgrimes Exp $";
#endif /* lint */
#define SZOF(a) (sizeof(a) / sizeof(a[0]))
diff --git a/usr.bin/file/softmagic.c b/usr.bin/file/softmagic.c
index 737e6d644800..7e7706ebad82 100644
--- a/usr.bin/file/softmagic.c
+++ b/usr.bin/file/softmagic.c
@@ -34,7 +34,7 @@
#ifndef lint
static char *moduleid =
- "@(#)$Id: softmagic.c,v 1.2 1995/05/24 02:54:30 ache Exp $";
+ "@(#)$Id: softmagic.c,v 1.3 1995/05/30 06:30:09 rgrimes Exp $";
#endif /* lint */
static int match __P((unsigned char *, int));
diff --git a/usr.bin/file/tar.h b/usr.bin/file/tar.h
index fd6f0c94f744..cca00fe3117e 100644
--- a/usr.bin/file/tar.h
+++ b/usr.bin/file/tar.h
@@ -5,7 +5,7 @@
*
* Created 25 August 1985 by John Gilmore, ihnp4!hoptoad!gnu.
*
- * $Id: tar.h,v 1.3 1992/09/08 15:32:41 ian Exp $ # checkin only
+ * $Id: tar.h,v 1.1.1.1 1994/09/03 19:16:23 csgr Exp $ # checkin only
*/
/*
diff --git a/usr.bin/file2c/Makefile b/usr.bin/file2c/Makefile
index f19c125af3d4..f75374164135 100644
--- a/usr.bin/file2c/Makefile
+++ b/usr.bin/file2c/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.3 1994/09/24 02:55:45 davidg Exp $
+# $Id: Makefile,v 1.1 1995/01/29 00:49:42 phk Exp $
PROG= file2c
MAN1= file2c.1
diff --git a/usr.bin/file2c/file2c.1 b/usr.bin/file2c/file2c.1
index c2dda08198ec..3143cd2adff6 100644
--- a/usr.bin/file2c/file2c.1
+++ b/usr.bin/file2c/file2c.1
@@ -5,7 +5,7 @@
.\" this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
.\" ---------------------------------------------------------------------------
.\"
-.\" $Id$
+.\" $Id: file2c.1,v 1.1 1995/01/29 00:49:49 phk Exp $
.\"
.Dd Jan 28, 1995
.Dt FILE2C 1
diff --git a/usr.bin/file2c/file2c.c b/usr.bin/file2c/file2c.c
index 0bad9045fcb3..904fdc0a95ae 100644
--- a/usr.bin/file2c/file2c.c
+++ b/usr.bin/file2c/file2c.c
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id$
+ * $Id: file2c.c,v 1.1 1995/01/29 00:49:57 phk Exp $
*
*/
diff --git a/usr.bin/gencat/Makefile b/usr.bin/gencat/Makefile
index b738deb5e4a7..97f6f87f83ce 100644
--- a/usr.bin/gencat/Makefile
+++ b/usr.bin/gencat/Makefile
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile,v 1.1 1995/03/30 12:49:06 jkh Exp $
PROG= gencat
SRCS= gencat.c genlib.c
diff --git a/usr.bin/getopt/Makefile b/usr.bin/getopt/Makefile
index 21dde959afa2..d1f9008b784b 100644
--- a/usr.bin/getopt/Makefile
+++ b/usr.bin/getopt/Makefile
@@ -1,4 +1,4 @@
-# $Header: /b/source/CVS/src/usr.bin/getopt/Makefile,v 1.1 1993/06/21 12:43:58 brezak Exp $
+# $Header: /home/ncvs/src/usr.bin/getopt/Makefile,v 1.1 1993/07/26 22:22:35 nate Exp $
#
PROG = getopt
diff --git a/usr.bin/host/host.1 b/usr.bin/host/host.1
index 29f941108361..aec8484b8305 100644
--- a/usr.bin/host/host.1
+++ b/usr.bin/host/host.1
@@ -50,7 +50,7 @@
.\" SOFTWARE.
.\" -
.\" --Copyright--
-.\" $Id: host.1,v 1.2 1994/09/22 21:52:02 pst Exp $
+.\" $Id: host.1,v 1.3 1994/12/12 00:23:00 ats Exp $
.TH HOST 1
.SH NAME
host \- look up host names using domain server
diff --git a/usr.bin/host/host.c b/usr.bin/host/host.c
index 22839c3b76d4..d8405ca2eb85 100644
--- a/usr.bin/host/host.c
+++ b/usr.bin/host/host.c
@@ -67,7 +67,7 @@ char copyright[] =
*/
#ifndef lint
-static char rcsid[] = "$Id: host.c,v 1.3 1995/05/30 06:30:50 rgrimes Exp $";
+static char rcsid[] = "$Id: host.c,v 1.3.4.1 1995/08/30 04:06:18 davidg Exp $";
#endif /* not lint */
#include <sys/types.h>
diff --git a/usr.bin/ipcrm/Makefile b/usr.bin/ipcrm/Makefile
index 98fd8f84f047..29ecd7b539d0 100644
--- a/usr.bin/ipcrm/Makefile
+++ b/usr.bin/ipcrm/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.3.2.1 1994/08/09 13:47:15 mycroft Exp $
+# $Id: Makefile,v 1.1 1994/09/13 16:52:09 dfr Exp $
PROG= ipcrm
diff --git a/usr.bin/ipcrm/ipcrm.1 b/usr.bin/ipcrm/ipcrm.1
index 19bb6e622e37..32217adf3d04 100644
--- a/usr.bin/ipcrm/ipcrm.1
+++ b/usr.bin/ipcrm/ipcrm.1
@@ -21,7 +21,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $Id: ipcrm.1,v 1.1 1994/08/09 02:26:30 glass Exp $
+.\" $Id: ipcrm.1,v 1.1 1994/09/13 16:52:10 dfr Exp $
.\""
.Dd August 8th, 1994
.Dt ipcrm 1
diff --git a/usr.bin/ipcrm/ipcrm.c b/usr.bin/ipcrm/ipcrm.c
index ff8a99ecc6c8..14eb9333db6a 100644
--- a/usr.bin/ipcrm/ipcrm.c
+++ b/usr.bin/ipcrm/ipcrm.c
@@ -28,7 +28,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: ipcrm.c,v 1.1 1994/09/13 16:52:12 dfr Exp $
+ * $Id: ipcrm.c,v 1.2 1995/05/30 06:30:56 rgrimes Exp $
*/
#include <stdio.h>
diff --git a/usr.bin/ipcs/Makefile b/usr.bin/ipcs/Makefile
index eab410030ad4..0359e020742a 100644
--- a/usr.bin/ipcs/Makefile
+++ b/usr.bin/ipcs/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.6 1994/06/18 21:09:40 cgd Exp $
+# $Id: Makefile,v 1.2 1994/09/13 16:59:27 dfr Exp $
PROG= ipcs
BINGRP= kmem
diff --git a/usr.bin/ipcs/ipcs.1 b/usr.bin/ipcs/ipcs.1
index a6d0344f7da9..dac9cec5cdc8 100644
--- a/usr.bin/ipcs/ipcs.1
+++ b/usr.bin/ipcs/ipcs.1
@@ -27,7 +27,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.\" $Id: ipcs.1,v 1.1 1994/09/13 16:59:28 dfr Exp $
+.\" $Id: ipcs.1,v 1.2 1994/11/19 18:19:27 nate Exp $
.\"
.Dd June 18, 1994
.Dt "IPCS" 1
diff --git a/usr.bin/ipcs/ipcs.c b/usr.bin/ipcs/ipcs.c
index a8c4d48394fc..27888cae97b7 100644
--- a/usr.bin/ipcs/ipcs.c
+++ b/usr.bin/ipcs/ipcs.c
@@ -24,7 +24,7 @@
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: ipcs.c,v 1.2 1994/09/13 16:59:29 dfr Exp $
+ * $Id: ipcs.c,v 1.3 1994/09/19 10:24:38 davidg Exp $
*/
#include <stdio.h>
diff --git a/usr.bin/kzip/Makefile b/usr.bin/kzip/Makefile
index 235c9b6e12bd..39901fa6f3b9 100644
--- a/usr.bin/kzip/Makefile
+++ b/usr.bin/kzip/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.2 1995/10/06 02:42:11 peter Exp $
+# $Id: Makefile,v 1.1.4.1 1995/10/06 02:53:46 jkh Exp $
PROG= kzip
NOMAN= toobad
diff --git a/usr.bin/kzip/kzip.c b/usr.bin/kzip/kzip.c
index b5ec7f1e2148..dd589577f179 100644
--- a/usr.bin/kzip/kzip.c
+++ b/usr.bin/kzip/kzip.c
@@ -9,7 +9,7 @@
* Copyright (C) 1993 Hannu Savolainen
* Ported to 386bsd by Serge Vakulenko
* based on tools/build.c by Linus Torvalds
- * $Id: kzip.c,v 1.4 1995/10/06 02:42:15 peter Exp $
+ * $Id: kzip.c,v 1.3.4.1 1995/10/06 02:53:48 jkh Exp $
*
*/
diff --git a/usr.bin/lex/FlexLexer.h b/usr.bin/lex/FlexLexer.h
index feb40b66265d..715cbc5938d7 100644
--- a/usr.bin/lex/FlexLexer.h
+++ b/usr.bin/lex/FlexLexer.h
@@ -1,4 +1,4 @@
-// $Header: FlexLexer.h,v 1.2 94/01/04 14:57:26 vern Exp $
+// $Header: /home/ncvs/src/usr.bin/lex/FlexLexer.h,v 1.1.1.1 1994/08/24 13:10:33 csgr Exp $
// FlexLexer.h -- define classes for lexical analyzers generated by flex
diff --git a/usr.bin/lex/Makefile b/usr.bin/lex/Makefile
index 41d4afddceb7..db6787c35262 100644
--- a/usr.bin/lex/Makefile
+++ b/usr.bin/lex/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1.1.1 1994/08/24 13:10:33 csgr Exp $
+# $Id: Makefile,v 1.2 1994/08/27 09:52:30 csgr Exp $
#
# By default, flex will be configured to generate 8-bit scanners only if the
# -8 flag is given. If you want it to always generate 8-bit scanners, add
diff --git a/usr.bin/lex/ccl.c b/usr.bin/lex/ccl.c
index 5f613b4eddee..a75a28a5db36 100644
--- a/usr.bin/lex/ccl.c
+++ b/usr.bin/lex/ccl.c
@@ -26,7 +26,7 @@
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/
-/* $Header: /home/ncvs/src/usr.bin/lex/ccl.c,v 1.1.1.1 1994/08/24 13:10:33 csgr Exp $ */
+/* $Header: /home/ncvs/src/usr.bin/lex/ccl.c,v 1.2 1995/05/30 06:31:06 rgrimes Exp $ */
#include "flexdef.h"
diff --git a/usr.bin/lex/dfa.c b/usr.bin/lex/dfa.c
index 83eb4547227d..c8a4a0d3c33e 100644
--- a/usr.bin/lex/dfa.c
+++ b/usr.bin/lex/dfa.c
@@ -26,7 +26,7 @@
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/
-/* $Header: /home/ncvs/src/usr.bin/lex/dfa.c,v 1.1.1.1 1994/08/24 13:10:33 csgr Exp $ */
+/* $Header: /home/ncvs/src/usr.bin/lex/dfa.c,v 1.2 1995/05/30 06:31:08 rgrimes Exp $ */
#include "flexdef.h"
diff --git a/usr.bin/lex/ecs.c b/usr.bin/lex/ecs.c
index 7aed68f193c2..bf522efe17d3 100644
--- a/usr.bin/lex/ecs.c
+++ b/usr.bin/lex/ecs.c
@@ -26,7 +26,7 @@
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/
-/* $Header: /home/ncvs/src/usr.bin/lex/ecs.c,v 1.1.1.1 1994/08/24 13:10:33 csgr Exp $ */
+/* $Header: /home/ncvs/src/usr.bin/lex/ecs.c,v 1.2 1995/05/30 06:31:09 rgrimes Exp $ */
#include "flexdef.h"
diff --git a/usr.bin/lex/flex.skl b/usr.bin/lex/flex.skl
index 01ff7a1262b4..f0b6bcdcb4fe 100644
--- a/usr.bin/lex/flex.skl
+++ b/usr.bin/lex/flex.skl
@@ -1,7 +1,7 @@
/* A lexical scanner generated by flex */
/* Scanner skeleton version:
- * $Header: /home/daffy/u0/vern/flex/flex-2.4.7/RCS/flex.skl,v 1.2 94/08/03 11:13:24 vern Exp $
+ * $Header: /home/ncvs/src/usr.bin/lex/flex.skl,v 1.1.1.1 1994/08/24 13:10:33 csgr Exp $
*/
#define FLEX_SCANNER
diff --git a/usr.bin/lex/flexdef.h b/usr.bin/lex/flexdef.h
index bf5c10d25a15..a0a02facab2b 100644
--- a/usr.bin/lex/flexdef.h
+++ b/usr.bin/lex/flexdef.h
@@ -26,7 +26,7 @@
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/
-/* @(#) $Header: /home/ncvs/src/usr.bin/lex/flexdef.h,v 1.1.1.1 1994/08/24 13:10:32 csgr Exp $ (LBL) */
+/* @(#) $Header: /home/ncvs/src/usr.bin/lex/flexdef.h,v 1.2 1995/05/30 06:31:12 rgrimes Exp $ (LBL) */
#include <stdio.h>
#include <ctype.h>
diff --git a/usr.bin/lex/gen.c b/usr.bin/lex/gen.c
index 9115a7c58bad..86ccff8a716c 100644
--- a/usr.bin/lex/gen.c
+++ b/usr.bin/lex/gen.c
@@ -26,7 +26,7 @@
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/
-/* $Header: /home/ncvs/src/usr.bin/lex/gen.c,v 1.1.1.1 1994/08/24 13:10:32 csgr Exp $ */
+/* $Header: /home/ncvs/src/usr.bin/lex/gen.c,v 1.2 1995/05/30 06:31:13 rgrimes Exp $ */
#include "flexdef.h"
diff --git a/usr.bin/lex/initscan.c b/usr.bin/lex/initscan.c
index f608d4c7720b..6604e93b46bb 100644
--- a/usr.bin/lex/initscan.c
+++ b/usr.bin/lex/initscan.c
@@ -1,7 +1,7 @@
/* A lexical scanner generated by flex */
/* Scanner skeleton version:
- * $Header: /home/ncvs/src/usr.bin/lex/initscan.c,v 1.1.1.1 1994/08/24 13:10:32 csgr Exp $
+ * $Header: /home/ncvs/src/usr.bin/lex/initscan.c,v 1.2 1995/05/30 06:31:14 rgrimes Exp $
*/
#define FLEX_SCANNER
@@ -894,7 +894,7 @@ char *yytext;
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/
-/* $Header: /home/ncvs/src/usr.bin/lex/initscan.c,v 1.1.1.1 1994/08/24 13:10:32 csgr Exp $ */
+/* $Header: /home/ncvs/src/usr.bin/lex/initscan.c,v 1.2 1995/05/30 06:31:14 rgrimes Exp $ */
#include "flexdef.h"
#include "parse.h"
diff --git a/usr.bin/lex/lib/Makefile b/usr.bin/lex/lib/Makefile
index 689b46018e79..bbc7c7c704d3 100644
--- a/usr.bin/lex/lib/Makefile
+++ b/usr.bin/lex/lib/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1.1.1 1994/08/24 13:10:34 csgr Exp $
+# $Id: Makefile,v 1.2 1994/08/25 23:11:07 wollman Exp $
LIB= ln
SRCS= libmain.c libyywrap.c
diff --git a/usr.bin/lex/lib/libmain.c b/usr.bin/lex/lib/libmain.c
index a893c7abd3d2..49a230d168e2 100644
--- a/usr.bin/lex/lib/libmain.c
+++ b/usr.bin/lex/lib/libmain.c
@@ -1,6 +1,6 @@
/* libmain - flex run-time support library "main" function */
-/* $Header: /home/daffy/u0/vern/flex/RCS/libmain.c,v 1.3 93/04/14 22:41:55 vern Exp $ */
+/* $Header: /home/ncvs/src/usr.bin/lex/lib/libmain.c,v 1.1.1.1 1994/08/24 13:10:34 csgr Exp $ */
extern int yylex();
diff --git a/usr.bin/lex/lib/libyywrap.c b/usr.bin/lex/lib/libyywrap.c
index b18f54e6e8f9..3dc4971e9727 100644
--- a/usr.bin/lex/lib/libyywrap.c
+++ b/usr.bin/lex/lib/libyywrap.c
@@ -1,6 +1,6 @@
/* libyywrap - flex run-time support library "yywrap" function */
-/* $Header: /home/daffy/u0/vern/flex/RCS/libyywrap.c,v 1.1 93/10/02 15:23:09 vern Exp $ */
+/* $Header: /home/ncvs/src/usr.bin/lex/lib/libyywrap.c,v 1.1.1.1 1994/08/24 13:10:34 csgr Exp $ */
int yywrap()
{
diff --git a/usr.bin/lex/main.c b/usr.bin/lex/main.c
index 2139daace22a..5edd429c195c 100644
--- a/usr.bin/lex/main.c
+++ b/usr.bin/lex/main.c
@@ -32,7 +32,7 @@ char copyright[] =
All rights reserved.\n";
#endif /* not lint */
-/* $Header: /home/ncvs/src/usr.bin/lex/main.c,v 1.1.1.1 1994/08/24 13:10:32 csgr Exp $ */
+/* $Header: /home/ncvs/src/usr.bin/lex/main.c,v 1.2 1995/05/30 06:31:15 rgrimes Exp $ */
#include "flexdef.h"
diff --git a/usr.bin/lex/misc.c b/usr.bin/lex/misc.c
index 1cbdbd6fb8cb..5053210b7f64 100644
--- a/usr.bin/lex/misc.c
+++ b/usr.bin/lex/misc.c
@@ -26,7 +26,7 @@
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/
-/* $Header: /home/ncvs/src/usr.bin/lex/misc.c,v 1.1.1.1 1994/08/24 13:10:32 csgr Exp $ */
+/* $Header: /home/ncvs/src/usr.bin/lex/misc.c,v 1.2 1995/05/30 06:31:16 rgrimes Exp $ */
#include "flexdef.h"
diff --git a/usr.bin/lex/nfa.c b/usr.bin/lex/nfa.c
index 7820ce9a6f81..24d2f68e5f70 100644
--- a/usr.bin/lex/nfa.c
+++ b/usr.bin/lex/nfa.c
@@ -26,7 +26,7 @@
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/
-/* $Header: /home/ncvs/src/usr.bin/lex/nfa.c,v 1.1.1.1 1994/08/24 13:10:32 csgr Exp $ */
+/* $Header: /home/ncvs/src/usr.bin/lex/nfa.c,v 1.2 1995/05/30 06:31:17 rgrimes Exp $ */
#include "flexdef.h"
diff --git a/usr.bin/lex/parse.y b/usr.bin/lex/parse.y
index c14f2452ca4a..a6ff9ea763e2 100644
--- a/usr.bin/lex/parse.y
+++ b/usr.bin/lex/parse.y
@@ -29,7 +29,7 @@
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/
-/* $Header: /home/daffy/u0/vern/flex/RCS/parse.y,v 2.15 93/12/09 13:57:23 vern Exp $ */
+/* $Header: /home/ncvs/src/usr.bin/lex/parse.y,v 1.1.1.1 1994/08/24 13:10:32 csgr Exp $ */
/* Some versions of bison are broken in that they use alloca() but don't
diff --git a/usr.bin/lex/scan.l b/usr.bin/lex/scan.l
index 74b589c771ce..df2f0cab5aeb 100644
--- a/usr.bin/lex/scan.l
+++ b/usr.bin/lex/scan.l
@@ -27,7 +27,7 @@
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/
-/* $Header: scan.l,v 1.2 94/01/04 14:33:09 vern Exp $ */
+/* $Header: /home/ncvs/src/usr.bin/lex/scan.l,v 1.1.1.1 1994/08/24 13:10:31 csgr Exp $ */
#include "flexdef.h"
#include "parse.h"
diff --git a/usr.bin/lex/skel.c b/usr.bin/lex/skel.c
index 4ab49d1085cd..d58b21870d1f 100644
--- a/usr.bin/lex/skel.c
+++ b/usr.bin/lex/skel.c
@@ -6,7 +6,7 @@ char *skel[] = {
"/* A lexical scanner generated by flex */",
"",
"/* Scanner skeleton version:",
- " * $Header: /home/daffy/u0/vern/flex/flex-2.4.7/RCS/flex.skl,v 1.2 94/08/03 11:13:24 vern Exp $",
+ " * $Header: /home/ncvs/src/usr.bin/lex/skel.c,v 1.1.1.1 1994/08/24 13:10:31 csgr Exp $",
" */",
"",
"#define FLEX_SCANNER",
diff --git a/usr.bin/lex/sym.c b/usr.bin/lex/sym.c
index 3a55b6836e37..5c484b2a50cb 100644
--- a/usr.bin/lex/sym.c
+++ b/usr.bin/lex/sym.c
@@ -26,7 +26,7 @@
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/
-/* $Header: /home/ncvs/src/usr.bin/lex/sym.c,v 1.1.1.1 1994/08/24 13:10:31 csgr Exp $ */
+/* $Header: /home/ncvs/src/usr.bin/lex/sym.c,v 1.2 1995/05/30 06:31:18 rgrimes Exp $ */
#include "flexdef.h"
diff --git a/usr.bin/lex/tblcmp.c b/usr.bin/lex/tblcmp.c
index 655717ba2662..b241662b37d7 100644
--- a/usr.bin/lex/tblcmp.c
+++ b/usr.bin/lex/tblcmp.c
@@ -26,7 +26,7 @@
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/
-/* $Header: /home/ncvs/src/usr.bin/lex/tblcmp.c,v 1.1.1.1 1994/08/24 13:10:31 csgr Exp $ */
+/* $Header: /home/ncvs/src/usr.bin/lex/tblcmp.c,v 1.2 1995/05/30 06:31:19 rgrimes Exp $ */
#include "flexdef.h"
diff --git a/usr.bin/lex/yylex.c b/usr.bin/lex/yylex.c
index 6edb13049f56..11497adfe290 100644
--- a/usr.bin/lex/yylex.c
+++ b/usr.bin/lex/yylex.c
@@ -26,7 +26,7 @@
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/
-/* $Header: /home/ncvs/src/usr.bin/lex/yylex.c,v 1.1.1.1 1994/08/24 13:10:34 csgr Exp $ */
+/* $Header: /home/ncvs/src/usr.bin/lex/yylex.c,v 1.2 1995/05/30 06:31:20 rgrimes Exp $ */
#include <ctype.h>
#include "flexdef.h"
diff --git a/usr.bin/login/Makefile b/usr.bin/login/Makefile
index 9b9a7edae610..a456258a1f02 100644
--- a/usr.bin/login/Makefile
+++ b/usr.bin/login/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 7/19/93
-# $Id: Makefile,v 1.12 1995/03/18 17:18:15 nate Exp $
+# $Id: Makefile,v 1.13 1995/05/30 06:31:25 rgrimes Exp $
PROG= login
MAN1= login.1
diff --git a/usr.bin/lsvfs/Makefile b/usr.bin/lsvfs/Makefile
index 3b25443ca3a2..b41f380b4c45 100644
--- a/usr.bin/lsvfs/Makefile
+++ b/usr.bin/lsvfs/Makefile
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile,v 1.1 1994/09/22 01:25:55 wollman Exp $
PROG= lsvfs
.include <bsd.prog.mk>
diff --git a/usr.bin/lsvfs/lsvfs.1 b/usr.bin/lsvfs/lsvfs.1
index 35ac03b8db7a..59abf26c6920 100644
--- a/usr.bin/lsvfs/lsvfs.1
+++ b/usr.bin/lsvfs/lsvfs.1
@@ -1,4 +1,4 @@
-.\" $Id: lsvfs.1,v 1.1 1994/09/22 01:25:56 wollman Exp $
+.\" $Id: lsvfs.1,v 1.2 1995/03/16 18:37:46 wollman Exp $
.\" Garrett A. Wollman, September 1994
.\" This file is in the public domain.
.\"
diff --git a/usr.bin/lsvfs/lsvfs.c b/usr.bin/lsvfs/lsvfs.c
index ccfc03877b7a..afa7ce77bc73 100644
--- a/usr.bin/lsvfs/lsvfs.c
+++ b/usr.bin/lsvfs/lsvfs.c
@@ -3,7 +3,7 @@
* Garrett A. Wollman, September 1994
* This file is in the public domain.
*
- * $Id: lsvfs.c,v 1.4 1995/03/16 20:29:11 wollman Exp $
+ * $Id: lsvfs.c,v 1.5 1995/03/16 21:43:03 wollman Exp $
*/
#include <sys/types.h>
diff --git a/usr.bin/m4/m4.1 b/usr.bin/m4/m4.1
index 53180191e8f5..9f7f2055db82 100644
--- a/usr.bin/m4/m4.1
+++ b/usr.bin/m4/m4.1
@@ -1,5 +1,5 @@
.\"
-.\" @(#) $Id: m4.1,v 1.4 1994/01/16 00:30:31 swallace Exp $
+.\" @(#) $Id: m4.1,v 1.1 1994/08/11 01:06:29 jkh Exp $
.\"
.Dd January 26, 1993
.Dt m4 1
diff --git a/usr.bin/make/Makefile b/usr.bin/make/Makefile
index c28b6f840dce..d9986d2a1a07 100644
--- a/usr.bin/make/Makefile
+++ b/usr.bin/make/Makefile
@@ -1,5 +1,5 @@
# from: @(#)Makefile 5.2 (Berkeley) 12/28/90
-# $Id: Makefile,v 1.4 1995/06/16 22:46:38 ache Exp $
+# $Id: Makefile,v 1.3.4.1 1995/08/08 04:00:16 ache Exp $
PROG= make
CFLAGS+= -I${.CURDIR} -DPOSIX -DSYSVINCLUDE
diff --git a/usr.bin/make/PSD.doc/tutorial.ms b/usr.bin/make/PSD.doc/tutorial.ms
index eca49d947383..05da5603b4f2 100644
--- a/usr.bin/make/PSD.doc/tutorial.ms
+++ b/usr.bin/make/PSD.doc/tutorial.ms
@@ -43,7 +43,7 @@
.\" is numeric, it is taken as the depth for numbering (as for .NH), else
.\" the default (1) is assumed.
.\"
-.\" $Id: tutorial.ms,v 1.4 89/01/08 20:20:22 adam Exp Locker: adam $
+.\" $Id: tutorial.ms,v 1.1.1.1 1994/05/27 12:32:16 rgrimes Exp $
.\"
.\" @P The initial paragraph distance.
.\" @Q The piece of section number to increment (or 0 if none given)
diff --git a/usr.bin/make/pathnames.h b/usr.bin/make/pathnames.h
index 2c25ead53ed5..b6ec1100dcdd 100644
--- a/usr.bin/make/pathnames.h
+++ b/usr.bin/make/pathnames.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: @(#)pathnames.h 5.2 (Berkeley) 6/1/90
- * $Id: pathnames.h,v 1.2 1993/08/01 18:11:58 mycroft Exp $
+ * $Id: pathnames.h,v 1.2 1995/01/23 21:01:52 jkh Exp $
*/
#define _PATH_OBJDIR "obj"
diff --git a/usr.bin/make/str.c b/usr.bin/make/str.c
index 41dd195d8946..14adcbb27ffa 100644
--- a/usr.bin/make/str.c
+++ b/usr.bin/make/str.c
@@ -38,7 +38,7 @@
#ifndef lint
/* from: static char sccsid[] = "@(#)str.c 5.8 (Berkeley) 6/1/90"; */
-static char *rcsid = "$Id: str.c,v 1.5 1995/06/18 12:34:12 ache Exp $";
+static char *rcsid = "$Id: str.c,v 1.4.4.1 1995/08/08 04:00:29 ache Exp $";
#endif /* not lint */
#include "make.h"
diff --git a/usr.bin/mk_cmds/Makefile b/usr.bin/mk_cmds/Makefile
index a240c05b1fa5..ef9a00e688a8 100644
--- a/usr.bin/mk_cmds/Makefile
+++ b/usr.bin/mk_cmds/Makefile
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile,v 1.1 1995/01/19 22:27:57 wollman Exp $
PROG= mk_cmds
#
diff --git a/usr.bin/modstat/Makefile b/usr.bin/modstat/Makefile
index a602bb9debcb..22ba7a6b7198 100644
--- a/usr.bin/modstat/Makefile
+++ b/usr.bin/modstat/Makefile
@@ -33,7 +33,7 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $Id: Makefile,v 1.4 1994/02/09 15:02:19 deraadt Exp $
+# $Id: Makefile,v 1.1 1994/08/19 12:14:02 davidg Exp $
#
PROG= modstat
diff --git a/usr.bin/modstat/modstat.8 b/usr.bin/modstat/modstat.8
index 99667e261489..68f9b77e0ab4 100644
--- a/usr.bin/modstat/modstat.8
+++ b/usr.bin/modstat/modstat.8
@@ -23,7 +23,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.\" $Id: modstat.8,v 1.1 1994/08/19 12:14:04 davidg Exp $
+.\" $Id: modstat.8,v 1.2 1994/08/19 13:38:29 davidg Exp $
.\"
.Dd June 7, 1993
.Dt MODSTAT 8
diff --git a/usr.bin/modstat/modstat.c b/usr.bin/modstat/modstat.c
index 956acf424bfc..932c517a5570 100644
--- a/usr.bin/modstat/modstat.c
+++ b/usr.bin/modstat/modstat.c
@@ -29,7 +29,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: modstat.c,v 1.2 1995/04/18 02:19:17 wpaul Exp $
+ * $Id: modstat.c,v 1.3 1995/04/20 05:08:53 wpaul Exp $
*/
#include <stdio.h>
diff --git a/usr.bin/more/Makefile b/usr.bin/more/Makefile
index 534d1608fc76..573ea127e53b 100644
--- a/usr.bin/more/Makefile
+++ b/usr.bin/more/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 6/6/93
-# $Id$
+# $Id: Makefile,v 1.3 1995/02/21 03:46:45 wollman Exp $
PROG= more
CFLAGS+=-I${.CURDIR} -DTERMIOS
diff --git a/usr.bin/msgs/Makefile b/usr.bin/msgs/Makefile
index 8613f79cb5ea..922893f5d2e5 100644
--- a/usr.bin/msgs/Makefile
+++ b/usr.bin/msgs/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 6/6/93
-# $Id$
+# $Id: Makefile,v 1.3 1995/02/21 04:15:13 wollman Exp $
PROG= msgs
DPADD= ${LIBTERMCAP}
diff --git a/usr.bin/netstat/iso.c b/usr.bin/netstat/iso.c
index ade41449ce7c..937bf1ababfc 100644
--- a/usr.bin/netstat/iso.c
+++ b/usr.bin/netstat/iso.c
@@ -36,7 +36,7 @@ static char sccsid[] = "@(#)iso.c 8.1 (Berkeley) 6/6/93";
#endif /* not lint */
/*
- * $Header: /home/ncvs/src/usr.bin/netstat/iso.c,v 1.1.1.1 1994/05/27 12:32:25 rgrimes Exp $
+ * $Header: /home/ncvs/src/usr.bin/netstat/iso.c,v 1.2 1995/04/09 05:33:17 davidg Exp $
* $Source: /home/ncvs/src/usr.bin/netstat/iso.c,v $
*/
/*******************************************************************************
diff --git a/usr.bin/netstat/route.c b/usr.bin/netstat/route.c
index ebb442a194e1..9a6a473bffe4 100644
--- a/usr.bin/netstat/route.c
+++ b/usr.bin/netstat/route.c
@@ -36,7 +36,7 @@
static char sccsid[] = "From: @(#)route.c 8.3 (Berkeley) 3/9/94";
#endif
static const char rcsid[] =
- "$Id: route.c,v 1.4 1995/04/06 06:09:44 jkh Exp $";
+ "$Id: route.c,v 1.5 1995/05/30 06:32:53 rgrimes Exp $";
#endif /* not lint */
#include <sys/param.h>
diff --git a/usr.bin/nfsstat/nfsstat.1 b/usr.bin/nfsstat/nfsstat.1
index 9e778c7aec87..6ce86578b97c 100644
--- a/usr.bin/nfsstat/nfsstat.1
+++ b/usr.bin/nfsstat/nfsstat.1
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" From: @(#)nfsstat.1 8.1 (Berkeley) 6/6/93
-.\" $Id$
+.\" $Id: nfsstat.1,v 1.3 1994/10/23 23:25:42 wollman Exp $
.\"
.Dd June 6, 1993
.Dt NFSSTAT 1
diff --git a/usr.bin/nfsstat/nfsstat.c b/usr.bin/nfsstat/nfsstat.c
index 169e8d10d463..f386f1f0ed3b 100644
--- a/usr.bin/nfsstat/nfsstat.c
+++ b/usr.bin/nfsstat/nfsstat.c
@@ -43,7 +43,7 @@ static char copyright[] =
#ifndef lint
/*static char sccsid[] = "From: @(#)nfsstat.c 8.1 (Berkeley) 6/6/93";*/
static const char rcsid[] =
- "$Id$";
+ "$Id: nfsstat.c,v 1.2 1994/10/23 23:25:43 wollman Exp $";
#endif /* not lint */
#include <sys/param.h>
diff --git a/usr.bin/passwd/Makefile b/usr.bin/passwd/Makefile
index 511b2c432f55..2d9734fc1bba 100644
--- a/usr.bin/passwd/Makefile
+++ b/usr.bin/passwd/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.3 (Berkeley) 4/2/94
-# $Id: Makefile,v 1.18 1995/09/14 21:02:16 gibbs Exp $
+# $Id: Makefile,v 1.14.2.3 1995/10/06 01:58:43 davidg Exp $
PROG= passwd
SRCS= local_passwd.c yp_passwd.c passwd.c pw_copy.c pw_util.c pw_yp.c
diff --git a/usr.bin/passwd/extern.h b/usr.bin/passwd/extern.h
index 7a4bd127c98d..43c2d8e6ab26 100644
--- a/usr.bin/passwd/extern.h
+++ b/usr.bin/passwd/extern.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* From: @(#)extern.h 8.1 (Berkeley) 4/2/94
- * $Id$
+ * $Id: extern.h,v 1.2 1995/01/20 22:03:36 wollman Exp $
*/
int krb_passwd __P((char *, char *, char *, char *));
diff --git a/usr.bin/passwd/passwd.c b/usr.bin/passwd/passwd.c
index ff1e1861a459..5c2dea57746f 100644
--- a/usr.bin/passwd/passwd.c
+++ b/usr.bin/passwd/passwd.c
@@ -40,7 +40,7 @@ static char copyright[] =
#ifndef lint
static char sccsid[] = "From: @(#)passwd.c 8.3 (Berkeley) 4/2/94";
static const char rcsid[] =
- "$Id: passwd.c,v 1.6 1995/09/02 04:02:27 wpaul Exp $";
+ "$Id: passwd.c,v 1.3.4.2 1995/10/06 01:58:45 davidg Exp $";
#endif /* not lint */
#include <err.h>
diff --git a/usr.bin/rdist/docmd.c b/usr.bin/rdist/docmd.c
index 8c4a1a2e38ba..2b39544e1fa1 100644
--- a/usr.bin/rdist/docmd.c
+++ b/usr.bin/rdist/docmd.c
@@ -34,7 +34,7 @@
#ifndef lint
/*static char sccsid[] = "From: @(#)docmd.c 8.1 (Berkeley) 6/9/93";*/
static const char rcsid[] =
- "$Id: docmd.c,v 1.2 1995/02/21 04:32:54 wollman Exp $";
+ "$Id: docmd.c,v 1.3 1995/05/30 06:33:02 rgrimes Exp $";
#endif /* not lint */
#include "defs.h"
diff --git a/usr.bin/rpcgen/Makefile b/usr.bin/rpcgen/Makefile
index 3379b2751b15..5769095e68a1 100644
--- a/usr.bin/rpcgen/Makefile
+++ b/usr.bin/rpcgen/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1 1994/08/07 18:01:27 wollman Exp $
+# $Id: Makefile,v 1.2 1995/05/30 06:33:08 rgrimes Exp $
PROG= rpcgen
SRCS= rpc_clntout.c rpc_cout.c rpc_hout.c rpc_main.c rpc_parse.c rpc_scan.c \
diff --git a/usr.bin/rpcgen/rpc_clntout.c b/usr.bin/rpcgen/rpc_clntout.c
index b410fa311832..d8606db9054a 100644
--- a/usr.bin/rpcgen/rpc_clntout.c
+++ b/usr.bin/rpcgen/rpc_clntout.c
@@ -29,7 +29,7 @@
*/
#ifndef lint
/*static char sccsid[] = "from: @(#)rpc_clntout.c 1.2 87/06/24 (C) 1987 SMI";*/
-static char rcsid[] = "$Id: rpc_clntout.c,v 1.1 1994/08/07 18:01:28 wollman Exp $";
+static char rcsid[] = "$Id: rpc_clntout.c,v 1.2 1995/05/30 06:33:09 rgrimes Exp $";
#endif
/*
diff --git a/usr.bin/rpcgen/rpc_cout.c b/usr.bin/rpcgen/rpc_cout.c
index 734b2d2cca54..ef08944e44e4 100644
--- a/usr.bin/rpcgen/rpc_cout.c
+++ b/usr.bin/rpcgen/rpc_cout.c
@@ -29,7 +29,7 @@
*/
#ifndef lint
/*static char sccsid[] = "from: @(#)rpc_cout.c 1.8 87/06/24 (C) 1987 SMI";*/
-static char rcsid[] = "$Id: rpc_cout.c,v 1.1 1994/08/07 18:01:29 wollman Exp $";
+static char rcsid[] = "$Id: rpc_cout.c,v 1.2 1995/05/30 06:33:10 rgrimes Exp $";
#endif
/*
diff --git a/usr.bin/rpcgen/rpc_hout.c b/usr.bin/rpcgen/rpc_hout.c
index 9c2cd4edca74..3a51bae50790 100644
--- a/usr.bin/rpcgen/rpc_hout.c
+++ b/usr.bin/rpcgen/rpc_hout.c
@@ -29,7 +29,7 @@
*/
#ifndef lint
/*static char sccsid[] = "from: @(#)rpc_hout.c 1.6 87/07/28 (C) 1987 SMI";*/
-static char rcsid[] = "$Id: rpc_hout.c,v 1.1 1994/08/07 18:01:30 wollman Exp $";
+static char rcsid[] = "$Id: rpc_hout.c,v 1.2 1995/05/30 06:33:11 rgrimes Exp $";
#endif
static int pconstdef(), pstructdef(), puniondef(), pdefine(), pprogramdef(),
diff --git a/usr.bin/rpcgen/rpc_main.c b/usr.bin/rpcgen/rpc_main.c
index 1344eb4277a7..40a9e2d31898 100644
--- a/usr.bin/rpcgen/rpc_main.c
+++ b/usr.bin/rpcgen/rpc_main.c
@@ -29,7 +29,7 @@
*/
#ifndef lint
/*static char sccsid[] = "from: @(#)rpc_main.c 1.7 87/06/24 (C) 1987 SMI";*/
-static char rcsid[] = "$Id: rpc_main.c,v 1.2 1995/03/04 17:47:49 nate Exp $";
+static char rcsid[] = "$Id: rpc_main.c,v 1.3 1995/05/30 06:33:12 rgrimes Exp $";
#endif
/*
diff --git a/usr.bin/rpcgen/rpc_parse.c b/usr.bin/rpcgen/rpc_parse.c
index d042b586ba8c..8022105cbfb8 100644
--- a/usr.bin/rpcgen/rpc_parse.c
+++ b/usr.bin/rpcgen/rpc_parse.c
@@ -29,7 +29,7 @@
*/
#ifndef lint
/*static char sccsid[] = "from: @(#)rpc_parse.c 1.4 87/04/28 (C) 1987 SMI";*/
-static char rcsid[] = "$Id: rpc_parse.c,v 1.2 1995/05/15 00:03:32 ache Exp $";
+static char rcsid[] = "$Id: rpc_parse.c,v 1.3 1995/05/30 06:33:14 rgrimes Exp $";
#endif
/*
diff --git a/usr.bin/rpcgen/rpc_parse.h b/usr.bin/rpcgen/rpc_parse.h
index 38b8644b8406..25e203daba9e 100644
--- a/usr.bin/rpcgen/rpc_parse.h
+++ b/usr.bin/rpcgen/rpc_parse.h
@@ -27,7 +27,7 @@
* Mountain View, California 94043
*
* from: @(#)rpc_parse.h 1.3 87/03/09 (C) 1987 SMI
- * $Id: rpc_parse.h,v 1.1 1994/08/07 18:01:33 wollman Exp $
+ * $Id: rpc_parse.h,v 1.2 1995/05/30 06:33:14 rgrimes Exp $
*/
/*
diff --git a/usr.bin/rpcgen/rpc_scan.c b/usr.bin/rpcgen/rpc_scan.c
index 6450ab25a6d2..ecddaad88f22 100644
--- a/usr.bin/rpcgen/rpc_scan.c
+++ b/usr.bin/rpcgen/rpc_scan.c
@@ -29,7 +29,7 @@
*/
#ifndef lint
/*static char sccsid[] = "from: @(#)rpc_scan.c 1.6 87/06/24 (C) 1987 SMI";*/
-static char rcsid[] = "$Id: rpc_scan.c,v 1.1 1994/08/07 18:01:34 wollman Exp $";
+static char rcsid[] = "$Id: rpc_scan.c,v 1.2 1995/05/30 06:33:15 rgrimes Exp $";
#endif
/*
diff --git a/usr.bin/rpcgen/rpc_scan.h b/usr.bin/rpcgen/rpc_scan.h
index 579df0f705f3..a6e67bd97d0b 100644
--- a/usr.bin/rpcgen/rpc_scan.h
+++ b/usr.bin/rpcgen/rpc_scan.h
@@ -28,7 +28,7 @@
*
* from: @(#)rpc_scan.h 1.3 87/03/09 (C) 1987 SMI
* from: @(#)rpc_scan.h 2.1 88/08/01 4.0 RPCSRC
- * $Id: rpc_scan.h,v 1.1 1994/08/07 18:01:35 wollman Exp $
+ * $Id: rpc_scan.h,v 1.2 1995/05/30 06:33:18 rgrimes Exp $
*/
/*
diff --git a/usr.bin/rpcgen/rpc_svcout.c b/usr.bin/rpcgen/rpc_svcout.c
index c27fff06b665..06558ad40a7b 100644
--- a/usr.bin/rpcgen/rpc_svcout.c
+++ b/usr.bin/rpcgen/rpc_svcout.c
@@ -29,7 +29,7 @@
*/
#ifndef lint
/*static char sccsid[] = "from: @(#)rpc_svcout.c 1.6 87/06/24 (C) 1987 SMI";*/
-static char rcsid[] = "$Id: rpc_svcout.c,v 1.2 1995/03/04 17:47:50 nate Exp $";
+static char rcsid[] = "$Id: rpc_svcout.c,v 1.3 1995/05/30 06:33:20 rgrimes Exp $";
#endif
/*
diff --git a/usr.bin/rpcgen/rpc_util.c b/usr.bin/rpcgen/rpc_util.c
index fb3307d158c1..c2e4db138a35 100644
--- a/usr.bin/rpcgen/rpc_util.c
+++ b/usr.bin/rpcgen/rpc_util.c
@@ -29,7 +29,7 @@
*/
#ifndef lint
/*static char sccsid[] = "from: @(#)rpc_util.c 1.5 87/06/24 (C) 1987 SMI";*/
-static char rcsid[] = "$Id: rpc_util.c,v 1.1 1994/08/07 18:01:37 wollman Exp $";
+static char rcsid[] = "$Id: rpc_util.c,v 1.2 1995/05/30 06:33:21 rgrimes Exp $";
#endif
/*
diff --git a/usr.bin/rpcgen/rpc_util.h b/usr.bin/rpcgen/rpc_util.h
index 8aeea3516ccb..3d655af22b1a 100644
--- a/usr.bin/rpcgen/rpc_util.h
+++ b/usr.bin/rpcgen/rpc_util.h
@@ -28,7 +28,7 @@
*
* from: @(#)rpc_util.h 1.6 87/06/24 (C) 1987 SMI
* from: @(#)rpc_util.h 2.1 88/08/01 4.0 RPCSRC
- * $Id: rpc_util.h,v 1.1 1994/08/07 18:01:38 wollman Exp $
+ * $Id: rpc_util.h,v 1.2 1995/05/30 06:33:22 rgrimes Exp $
*/
/*
diff --git a/usr.bin/rpcgen/rpcgen.1 b/usr.bin/rpcgen/rpcgen.1
index 5fd9274c740f..dd40fc8003c9 100644
--- a/usr.bin/rpcgen/rpcgen.1
+++ b/usr.bin/rpcgen/rpcgen.1
@@ -1,5 +1,5 @@
.\" from: @(#)rpcgen.1 2.2 88/08/02 4.0 RPCSRC
-.\" $Id: rpcgen.1,v 1.1 1993/09/13 23:20:21 jtc Exp $
+.\" $Id: rpcgen.1,v 1.1 1994/08/07 18:01:39 wollman Exp $
.\"
.Dd January 18, 1988
.Dt RPCGEN 1
diff --git a/usr.bin/rpcinfo/Makefile b/usr.bin/rpcinfo/Makefile
index 1605846fbea1..4b2f3ee88fa7 100644
--- a/usr.bin/rpcinfo/Makefile
+++ b/usr.bin/rpcinfo/Makefile
@@ -1,5 +1,5 @@
# from: @(#)Makefile 5.2 (Berkeley) 5/11/90
-# $Id: Makefile,v 1.2 1993/11/10 03:46:45 smace Exp $
+# $Id: Makefile,v 1.1 1994/08/07 18:23:23 wollman Exp $
PROG= rpcinfo
MAN8 = rpcinfo.8
diff --git a/usr.bin/rpcinfo/rpcinfo.8 b/usr.bin/rpcinfo/rpcinfo.8
index c2c556decc81..e52253b99b70 100644
--- a/usr.bin/rpcinfo/rpcinfo.8
+++ b/usr.bin/rpcinfo/rpcinfo.8
@@ -1,5 +1,5 @@
.\" from: @(#)rpcinfo.8c 2.2 88/08/03 4.0 RPCSRC; from 1.24 88/02/25 SMI
-.\" $Id: rpcinfo.8,v 1.1 1993/09/13 23:22:41 jtc Exp $
+.\" $Id: rpcinfo.8,v 1.1 1994/08/07 18:23:24 wollman Exp $
.\"
.Dd December 17, 1987
.Dt RPCINFO 8
diff --git a/usr.bin/rpcinfo/rpcinfo.c b/usr.bin/rpcinfo/rpcinfo.c
index 0258461202be..aa203368f085 100644
--- a/usr.bin/rpcinfo/rpcinfo.c
+++ b/usr.bin/rpcinfo/rpcinfo.c
@@ -1,7 +1,7 @@
#ifndef lint
/*static char sccsid[] = "from: @(#)rpcinfo.c 1.22 87/08/12 SMI";*/
/*static char sccsid[] = "from: @(#)rpcinfo.c 2.2 88/08/11 4.0 RPCSRC";*/
-static char rcsid[] = "$Id: rpcinfo.c,v 1.1 1994/08/07 18:23:25 wollman Exp $";
+static char rcsid[] = "$Id: rpcinfo.c,v 1.2 1995/05/30 06:33:23 rgrimes Exp $";
#endif
/*
diff --git a/usr.bin/rsh/rsh.c b/usr.bin/rsh/rsh.c
index e2297d568a83..1f5f0aac849f 100644
--- a/usr.bin/rsh/rsh.c
+++ b/usr.bin/rsh/rsh.c
@@ -40,7 +40,7 @@ static char copyright[] =
#ifndef lint
static char sccsid[] = "From: @(#)rsh.c 8.3 (Berkeley) 4/6/94";
static char rcsid[] =
- "$Id: rsh.c,v 1.3 1995/01/14 20:36:22 wollman Exp $";
+ "$Id: rsh.c,v 1.4 1995/05/30 06:33:24 rgrimes Exp $";
#endif /* not lint */
#include <sys/types.h>
diff --git a/usr.bin/rup/Makefile b/usr.bin/rup/Makefile
index 1d53109f824f..4882354332bc 100644
--- a/usr.bin/rup/Makefile
+++ b/usr.bin/rup/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.2 1993/11/10 03:47:06 smace Exp $
+# $Id: Makefile,v 1.1.1.1 1994/08/28 15:01:31 csgr Exp $
PROG= rup
MAN1= rup.1
diff --git a/usr.bin/rup/rup.1 b/usr.bin/rup/rup.1
index e9bc3d348581..899f5547bc2d 100644
--- a/usr.bin/rup/rup.1
+++ b/usr.bin/rup/rup.1
@@ -31,7 +31,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $Id: rup.1,v 1.1.1.1 1994/08/28 15:01:31 csgr Exp $
+.\" $Id: rup.1,v 1.2 1994/11/18 21:37:40 ats Exp $
.\"
.Dd June 7, 1993
.Dt RUP 1
diff --git a/usr.bin/rup/rup.c b/usr.bin/rup/rup.c
index e248be1e3fa0..8fcd5bb637a8 100644
--- a/usr.bin/rup/rup.c
+++ b/usr.bin/rup/rup.c
@@ -32,7 +32,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: rup.c,v 1.1.1.1 1994/08/28 15:01:31 csgr Exp $";
+static char rcsid[] = "$Id: rup.c,v 1.2 1995/05/30 06:33:26 rgrimes Exp $";
#endif /* not lint */
#include <stdio.h>
diff --git a/usr.bin/ruptime/ruptime.c b/usr.bin/ruptime/ruptime.c
index 27ca0938be31..0672f43bd7f4 100644
--- a/usr.bin/ruptime/ruptime.c
+++ b/usr.bin/ruptime/ruptime.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*/
-/* $Id: ruptime.c,v 1.6 1995/09/08 20:33:21 jkh Exp $ */
+/* $Id: ruptime.c,v 1.2.4.2 1995/10/06 02:00:09 davidg Exp $ */
#ifndef lint
static char copyright[] =
diff --git a/usr.bin/rusers/Makefile b/usr.bin/rusers/Makefile
index 6e2fd6ab2fc6..eeb303266378 100644
--- a/usr.bin/rusers/Makefile
+++ b/usr.bin/rusers/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.2 1993/11/10 03:47:23 smace Exp $
+# $Id: Makefile,v 1.1.1.1 1994/08/28 15:06:02 csgr Exp $
PROG = rusers
MAN1 = rusers.1
diff --git a/usr.bin/rusers/rusers.1 b/usr.bin/rusers/rusers.1
index ef7d1238c86d..b6b4e3cc9e14 100644
--- a/usr.bin/rusers/rusers.1
+++ b/usr.bin/rusers/rusers.1
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" from: @(#)rusers.1 6.7 (Berkeley) 4/23/91
-.\" $Id: rusers.1,v 1.1 1993/09/16 01:15:47 jtc Exp $
+.\" $Id: rusers.1,v 1.1.1.1 1994/08/28 15:06:02 csgr Exp $
.\"
.Dd April 23, 1991
.Dt RUSERS 1
diff --git a/usr.bin/rusers/rusers.c b/usr.bin/rusers/rusers.c
index 9c7234239698..6f6b36551772 100644
--- a/usr.bin/rusers/rusers.c
+++ b/usr.bin/rusers/rusers.c
@@ -32,7 +32,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: rusers.c,v 1.1.1.1 1994/08/28 15:06:02 csgr Exp $";
+static char rcsid[] = "$Id: rusers.c,v 1.2 1995/05/30 06:33:28 rgrimes Exp $";
#endif /* not lint */
#include <sys/types.h>
diff --git a/usr.bin/rwall/Makefile b/usr.bin/rwall/Makefile
index 07bb67880ebd..e78348bc308f 100644
--- a/usr.bin/rwall/Makefile
+++ b/usr.bin/rwall/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.2 1993/11/10 03:47:37 smace Exp $
+# $Id: Makefile,v 1.1.1.1 1994/08/28 15:11:02 csgr Exp $
PROG = rwall
MAN1 = rwall.1
diff --git a/usr.bin/rwall/rwall.1 b/usr.bin/rwall/rwall.1
index 0bab417eb248..fe280274aa3a 100644
--- a/usr.bin/rwall/rwall.1
+++ b/usr.bin/rwall/rwall.1
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" from: @(#)rwall.1 6.7 (Berkeley) 4/23/91
-.\" $Id: rwall.1,v 1.1 1993/09/16 01:11:03 jtc Exp $
+.\" $Id: rwall.1,v 1.1.1.1 1994/08/28 15:11:02 csgr Exp $
.\"
.Dd April 23, 1991
.Dt RWALL 1
diff --git a/usr.bin/rwall/rwall.c b/usr.bin/rwall/rwall.c
index 8a2e2b3fa2a5..a1d85e200750 100644
--- a/usr.bin/rwall/rwall.c
+++ b/usr.bin/rwall/rwall.c
@@ -40,7 +40,7 @@ char copyright[] =
#ifndef lint
/*static char sccsid[] = "from: @(#)wall.c 5.14 (Berkeley) 3/2/91";*/
-static char rcsid[] = "$Id: rwall.c,v 1.1.1.1 1994/08/28 15:11:02 csgr Exp $";
+static char rcsid[] = "$Id: rwall.c,v 1.2 1995/05/30 06:33:30 rgrimes Exp $";
#endif /* not lint */
/*
diff --git a/usr.bin/sgmlfmt/Makefile b/usr.bin/sgmlfmt/Makefile
index a97bf58d4719..574e7b8283af 100644
--- a/usr.bin/sgmlfmt/Makefile
+++ b/usr.bin/sgmlfmt/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.2 1995/07/25 00:36:45 bde Exp $
+# $Id: Makefile,v 1.1.1.1.4.1 1995/09/17 23:40:07 davidg Exp $
MAN1= sgmlfmt.1
diff --git a/usr.bin/sgmlfmt/sgmlfmt.pl b/usr.bin/sgmlfmt/sgmlfmt.pl
index cd1bbf8c77cc..7945a57598bb 100755
--- a/usr.bin/sgmlfmt/sgmlfmt.pl
+++ b/usr.bin/sgmlfmt/sgmlfmt.pl
@@ -1,5 +1,5 @@
#!/usr/bin/perl
-# $Id: sgmlfmt.pl,v 1.8 1995/10/07 22:28:34 jfieber Exp $
+# $Id: sgmlfmt.pl,v 1.2.4.2 1995/10/11 23:19:16 jfieber Exp $
# Format an sgml document tagged according to the linuxdoc DTD.
# by John Fieber <jfieber@freebsd.org> for the FreeBSD documentation
diff --git a/usr.bin/sgmls/Makefile b/usr.bin/sgmls/Makefile
index 62c6ceaed214..5965067655eb 100644
--- a/usr.bin/sgmls/Makefile
+++ b/usr.bin/sgmls/Makefile
@@ -1,6 +1,6 @@
#
# Bmake file for sgmls
-# $Id:$
+# $Id: Makefile,v 1.1.1.1 1995/04/27 16:03:39 jfieber Exp $
#
SUBDIR= libsgmls sgmls sgmlsasp rast
diff --git a/usr.bin/sgmls/README b/usr.bin/sgmls/README
index dd6e2578f8c2..10916316bd28 100644
--- a/usr.bin/sgmls/README
+++ b/usr.bin/sgmls/README
@@ -1,4 +1,4 @@
-$Id:$
+$Id: README,v 1.1.1.1 1995/04/27 16:03:39 jfieber Exp $
This the sgmls release 1.1 SGML parser written by James Clark
jjc@jclark.com, repackaged for FreeBSD. The original source may be
diff --git a/usr.bin/strip/strip.c b/usr.bin/strip/strip.c
index 42cc96e1809d..c5a073cc5935 100644
--- a/usr.bin/strip/strip.c
+++ b/usr.bin/strip/strip.c
@@ -39,7 +39,7 @@ static char copyright[] =
#ifndef lint
/*static char sccsid[] = "@(#)strip.c 8.1 (Berkeley) 6/6/93";*/
-static char RCSid[] = "$Id: strip.c,v 1.4 1994/12/18 01:18:17 ache Exp $";
+static char RCSid[] = "$Id: strip.c,v 1.5 1995/05/30 06:34:16 rgrimes Exp $";
#endif /* not lint */
#include <sys/types.h>
diff --git a/usr.bin/talk/Makefile b/usr.bin/talk/Makefile
index 9643a371d2e9..1965828d1b69 100644
--- a/usr.bin/talk/Makefile
+++ b/usr.bin/talk/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 6/6/93
-# $Id$
+# $Id: Makefile,v 1.3 1995/02/21 04:35:43 wollman Exp $
PROG= talk
DPADD= ${LIBCURSES} ${LIBTERMCAP}
diff --git a/usr.bin/tconv/Makefile b/usr.bin/tconv/Makefile
index 11b45dba3a66..b86086acc118 100644
--- a/usr.bin/tconv/Makefile
+++ b/usr.bin/tconv/Makefile
@@ -1,5 +1,5 @@
# Makefile for tconv
-# $Id: Makefile,v 1.1.1.1 1994/10/09 17:40:30 ache Exp $
+# $Id: Makefile,v 1.2 1995/01/15 06:19:01 jkh Exp $
PROG= tconv
SRCS= tconv.c quit.c
diff --git a/usr.bin/vi/USD.doc/vi.ref/index b/usr.bin/vi/USD.doc/vi.ref/index
new file mode 100644
index 000000000000..b52dd59f2cb8
--- /dev/null
+++ b/usr.bin/vi/USD.doc/vi.ref/index
@@ -0,0 +1,270 @@
+<interrupt> 12
+<literal next> 12
+current pathname 12
+alternate pathname 12
+buffer 12
+unnamed buffer 13
+previous context 15
+motion 15
+count 16
+bigword 17
+word 17
+paragraph 17
+section 17
+sentence 18
+<control-A> 18
+<control-B> 18
+<control-D> 19
+<control-E> 19
+<control-F> 19
+<control-G> 20
+<control-H> 20
+<control-J> 20
+<control-N> 20
+j 20
+<control-L> 20
+<control-R> 20
+<control-M> 21
++ 21
+<control-P> 21
+k 21
+<control-T> 21
+<control-U> 21
+<control-W> 22
+<control-Y> 22
+<control-Z> 22
+<escape> 22
+<control-]> 23
+<control-^> 23
+<space> 23
+l 23
+! 24
+# 24
+$ 25
+% 25
+& 26
+SQUOTE<character> 26
+`<character> 26
+( 27
+) 27
+, 27
+MINUSSIGN 27
+. 28
+/RE/ 28
+?RE? 28
+N 28
+n 28
+0 29
+: 29
+; 30
+< 30
+> 30
+@ 30
+A 31
+B 31
+C 31
+D 32
+E 32
+F 32
+G 33
+H 33
+I 33
+J 33
+L 34
+M 34
+O 34
+P 35
+Q 35
+R 35
+S 35
+T 35
+U 36
+W 36
+X 36
+Y 37
+ZZ 37
+[[ 37
+]] 37
+^ 38
+_ 38
+a 38
+b 38
+c 39
+d 39
+e 39
+f 40
+i 40
+m 40
+o 40
+p 41
+r 41
+s 41
+t 41
+u 42
+w 42
+x 42
+y 43
+z 43
+{ 44
+| 44
+} 44
+~ 45
+~ 45
+<interrupt> 45
+<nul> 46
+<control-D> 46
+^<control-D> 46
+0<control-D> 47
+<control-T> 47
+<erase> 47
+<control-H> 47
+<literal next> 47
+<escape> 47
+<line erase> 47
+<control-W> 47
+<word erase> 47
+<control-X> 47
+<interrupt> 47
+<eof> 50
+line 50
+range 50
+count 50
+flags 50
+file 51
+DOUBLEQUOTE 52
+<end-of-file> 52
+! 52
+number 53
+# 53
+@ 53
+* 53
+< 53
+= 54
+> 54
+abbrev 54
+append 54
+args 55
+bg 55
+change 55
+cd 55
+chdir 55
+copy 56
+t 56
+delete 56
+display 56
+edit 56
+exusage 57
+file 57
+fg 57
+global 57
+v 58
+help 58
+insert 58
+join 59
+list 59
+map 59
+mark 60
+k 60
+move 60
+mkexrc 60
+next 60
+open 61
+preserve 61
+previous 61
+print 61
+put 61
+quit 62
+read 62
+recover 62
+resize 63
+rewind 63
+set 63
+shell 64
+source 64
+split 64
+substitute 64
+& 64
+~ 64
+suspend 65
+stop 65
+<control-Z> 65
+tag 65
+tagpop 66
+tagtop 66
+unabbrev 66
+undo 66
+unmap 67
+version 67
+visual 67
+visual 67
+viusage 67
+write 67
+wn 67
+wq 67
+xit 68
+yank 69
+z 69
+altwerase 70
+autoindent 70
+autoprint 71
+autowrite 71
+beautify 71
+cdpath 72
+columns 72
+comment 72
+directory 72
+edcompatible 72
+errorbells 72
+exrc 73
+extended 73
+flash 73
+hardtabs 73
+ignorecase 73
+keytime 73
+leftright 73
+lines 73
+lisp 74
+list 74
+magic 74
+matchtime 74
+mesg 74
+modelines 74
+number 75
+octal 75
+open 75
+optimize 75
+paragraphs 75
+prompt 75
+readonly 76
+recdir 76
+redraw 76
+remap 76
+report 76
+ruler 77
+scroll 77
+sections 77
+shell 77
+shiftwidth 77
+showdirty 77
+showmatch 77
+showmode 77
+sidescroll 78
+slowopen 78
+sourceany 78
+tabstop 78
+taglength 78
+tags 78
+term 78
+terse 78
+tildeop 79
+timeout 79
+ttywerase 79
+verbose 79
+w300 79
+w1200 79
+w9600 79
+warn 79
+window 79
+wrapmargin 80
+wrapscan 80
+writeany 80
diff --git a/usr.bin/which/which.1 b/usr.bin/which/which.1
index b94418869bc1..8c6f4621afe8 100644
--- a/usr.bin/which/which.1
+++ b/usr.bin/which/which.1
@@ -27,7 +27,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
.\" OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.\" $Id: which.1,v 1.2 1995/01/28 17:35:54 asami Exp $
+.\" $Id: which.1,v 1.3 1995/01/30 22:21:28 jkh Exp $
.Dd January 26, 1995
.Dt WHICH 1
.Os FreeBSD
diff --git a/usr.bin/which/which.pl b/usr.bin/which/which.pl
index 08aabda79e0f..5ee31abbec79 100755
--- a/usr.bin/which/which.pl
+++ b/usr.bin/which/which.pl
@@ -31,7 +31,7 @@
#
# [whew!]
#
-# $Id: which.pl,v 1.4 1995/01/30 22:21:29 jkh Exp $
+# $Id: which.pl,v 1.4.4.1 1995/08/26 10:33:20 davidg Exp $
$all = 0;
$silent = 0;
diff --git a/usr.bin/ypcat/Makefile b/usr.bin/ypcat/Makefile
index c133eb52a80e..132817542ac6 100644
--- a/usr.bin/ypcat/Makefile
+++ b/usr.bin/ypcat/Makefile
@@ -1,5 +1,5 @@
# from: @(#)Makefile 5.8 (Berkeley) 7/28/90
-# $Id: Makefile,v 1.3 1994/02/17 07:06:10 rgrimes Exp $
+# $Id: Makefile,v 1.1 1994/08/08 01:13:28 wollman Exp $
PROG= ypcat
diff --git a/usr.bin/ypcat/ypcat.1 b/usr.bin/ypcat/ypcat.1
index 99321b496c3c..32da677a02d8 100644
--- a/usr.bin/ypcat/ypcat.1
+++ b/usr.bin/ypcat/ypcat.1
@@ -26,7 +26,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.\" $Id: ypcat.1,v 1.1 1994/01/11 19:01:27 nate Exp $
+.\" $Id: ypcat.1,v 1.1 1994/08/08 01:13:29 wollman Exp $
.\"
.Dd December 3, 1993
.Dt YPCAT 1
diff --git a/usr.bin/ypmatch/Makefile b/usr.bin/ypmatch/Makefile
index cf79ca74de20..94491c43bf3c 100644
--- a/usr.bin/ypmatch/Makefile
+++ b/usr.bin/ypmatch/Makefile
@@ -1,5 +1,5 @@
# from: @(#)Makefile 5.8 (Berkeley) 7/28/90
-# $Id: Makefile,v 1.3 1994/02/17 07:06:13 rgrimes Exp $
+# $Id: Makefile,v 1.1 1994/08/08 01:13:31 wollman Exp $
PROG= ypmatch
diff --git a/usr.bin/ypmatch/ypmatch.1 b/usr.bin/ypmatch/ypmatch.1
index 0b7ac89cd86b..7374f06e41db 100644
--- a/usr.bin/ypmatch/ypmatch.1
+++ b/usr.bin/ypmatch/ypmatch.1
@@ -26,7 +26,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.\" $Id: ypmatch.1,v 1.1 1994/01/11 19:01:30 nate Exp $
+.\" $Id: ypmatch.1,v 1.1 1994/08/08 01:13:32 wollman Exp $
.\"
.Dd December 3, 1993
.Dt YPMATCH 1
diff --git a/usr.bin/ypwhich/Makefile b/usr.bin/ypwhich/Makefile
index 1c964b2e8df5..45b81e525ba6 100644
--- a/usr.bin/ypwhich/Makefile
+++ b/usr.bin/ypwhich/Makefile
@@ -1,5 +1,5 @@
# from: @(#)Makefile 5.8 (Berkeley) 7/28/90
-# $Id: Makefile,v 1.2 1994/02/17 07:06:22 rgrimes Exp $
+# $Id: Makefile,v 1.1 1994/08/08 01:13:34 wollman Exp $
PROG= ypwhich
NOMAN=
diff --git a/usr.sbin/Makefile b/usr.sbin/Makefile
index b9380e4cbd45..2265f207ccc4 100644
--- a/usr.sbin/Makefile
+++ b/usr.sbin/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 5.20 (Berkeley) 6/12/93
-# $Id: Makefile,v 1.62.4.1 1995/09/18 06:23:49 davidg Exp $
+# $Id: Makefile,v 1.62.4.2 1995/09/30 13:35:08 davidg Exp $
# XXX MISSING: mkproto
# XXX MISSING SOURCES: quot
diff --git a/usr.sbin/ac/Makefile b/usr.sbin/ac/Makefile
index 349e9ce83e78..d746bd2401bc 100644
--- a/usr.sbin/ac/Makefile
+++ b/usr.sbin/ac/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1.1.1 1994/05/18 08:00:44 csgr Exp $
+# $Id: Makefile,v 1.1 1994/09/26 22:12:24 davidg Exp $
PROG= ac
MAN8= ac.8
diff --git a/usr.sbin/ac/ac.8 b/usr.sbin/ac/ac.8
index 3c3471692a81..292aa90d7419 100644
--- a/usr.sbin/ac/ac.8
+++ b/usr.sbin/ac/ac.8
@@ -28,7 +28,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.\" $Id: ac.8,v 1.1.1.1 1994/05/18 08:00:45 csgr Exp $
+.\" $Id: ac.8,v 1.2 1994/09/26 22:12:25 davidg Exp $
.\"
.Dd March 15, 1994
.Dt AC 8
diff --git a/usr.sbin/ac/ac.c b/usr.sbin/ac/ac.c
index 030590940abf..75b0f24116c7 100644
--- a/usr.sbin/ac/ac.c
+++ b/usr.sbin/ac/ac.c
@@ -14,7 +14,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: ac.c,v 1.2 1994/11/14 20:26:52 ache Exp $";
+static char rcsid[] = "$Id: ac.c,v 1.3 1995/05/30 03:45:34 rgrimes Exp $";
#endif
#include <sys/types.h>
diff --git a/usr.sbin/adduser/adduser.8 b/usr.sbin/adduser/adduser.8
index a393f6f9e18d..3e7f12a1420a 100644
--- a/usr.sbin/adduser/adduser.8
+++ b/usr.sbin/adduser/adduser.8
@@ -31,7 +31,7 @@
.\" Bugs: sure (my english!)
.\" Email: Wolfram Schneider <wosch@cs.tu-berlin.de>
.\"
-.\" $Id: adduser.8,v 1.5 1995/03/07 16:42:33 w Exp w $
+.\" $Id: adduser.8,v 1.7 1995/03/08 22:44:35 ache Exp $
.\"
.Dd Jan, 9, 1995
diff --git a/usr.sbin/adduser/adduser.perl b/usr.sbin/adduser/adduser.perl
index 7dab377909a1..a8470928ddc9 100644..100755
--- a/usr.sbin/adduser/adduser.perl
+++ b/usr.sbin/adduser/adduser.perl
@@ -32,7 +32,7 @@
#
# Email: Wolfram Schneider <wosch@cs.tu-berlin.de>
#
-# $Id: adduser.perl,v 1.7.4.1 1995/10/19 06:29:30 jkh Exp $
+# $Id: adduser.perl,v 1.7.4.2 1995/10/22 11:45:34 jkh Exp $
#
# read variables
diff --git a/usr.sbin/amd/amd/afs_ops.c b/usr.sbin/amd/amd/afs_ops.c
index 73f39a828e0c..45088b0a4a1e 100644
--- a/usr.sbin/amd/amd/afs_ops.c
+++ b/usr.sbin/amd/amd/afs_ops.c
@@ -37,7 +37,7 @@
*
* @(#)afs_ops.c 8.1 (Berkeley) 6/6/93
*
- * $Id: afs_ops.c,v 1.1.1.1 1994/05/26 05:22:03 rgrimes Exp $
+ * $Id: afs_ops.c,v 1.2 1995/05/30 03:45:43 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/amd/am_ops.c b/usr.sbin/amd/amd/am_ops.c
index 436011010fef..881eea934f0c 100644
--- a/usr.sbin/amd/amd/am_ops.c
+++ b/usr.sbin/amd/amd/am_ops.c
@@ -37,7 +37,7 @@
*
* @(#)am_ops.c 8.1 (Berkeley) 6/6/93
*
- * $Id: am_ops.c,v 5.2.2.1 1992/02/09 15:08:17 jsp beta $
+ * $Id: am_ops.c,v 1.1.1.1 1994/05/26 05:22:03 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/amd/amd.8 b/usr.sbin/amd/amd/amd.8
index 9fa01a2b469d..b51bcc95b9f9 100644
--- a/usr.sbin/amd/amd/amd.8
+++ b/usr.sbin/amd/amd/amd.8
@@ -37,7 +37,7 @@
.\"
.\" @(#)amd.8 5.10 (Berkeley) 4/19/94
.\"
-.\" $Id: amd.8,v 5.2.2.1 1992/02/09 15:11:39 jsp beta $
+.\" $Id: amd.8,v 1.1.1.1 1994/05/26 05:22:02 rgrimes Exp $
.\"
.Dd "April 19, 1994"
.Dt AMD 8
diff --git a/usr.sbin/amd/amd/amd.c b/usr.sbin/amd/amd/amd.c
index c3b2b61f3ed2..f32df37aacf0 100644
--- a/usr.sbin/amd/amd/amd.c
+++ b/usr.sbin/amd/amd/amd.c
@@ -37,7 +37,7 @@
*
* @(#)amd.c 8.1 (Berkeley) 6/6/93
*
- * $Id: amd.c,v 5.2.2.1 1992/02/09 15:08:15 jsp beta $
+ * $Id: amd.c,v 1.1.1.1 1994/05/26 05:22:00 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/amd/amq_subr.c b/usr.sbin/amd/amd/amq_subr.c
index cf04d9d4160b..76ac6cdd748c 100644
--- a/usr.sbin/amd/amd/amq_subr.c
+++ b/usr.sbin/amd/amd/amq_subr.c
@@ -37,7 +37,7 @@
*
* @(#)amq_subr.c 8.1 (Berkeley) 6/6/93
*
- * $Id: amq_subr.c,v 5.2.2.1 1992/02/09 15:08:18 jsp beta $
+ * $Id: amq_subr.c,v 1.1.1.1 1994/05/26 05:22:00 rgrimes Exp $
*
*/
/*
diff --git a/usr.sbin/amd/amd/clock.c b/usr.sbin/amd/amd/clock.c
index 91e11eec4962..d1d519b9cc7e 100644
--- a/usr.sbin/amd/amd/clock.c
+++ b/usr.sbin/amd/amd/clock.c
@@ -37,7 +37,7 @@
*
* @(#)clock.c 8.1 (Berkeley) 6/6/93
*
- * $Id: clock.c,v 5.2.2.1 1992/02/09 15:08:20 jsp beta $
+ * $Id: clock.c,v 1.1.1.1 1994/05/26 05:22:00 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/amd/efs_ops.c b/usr.sbin/amd/amd/efs_ops.c
index 6630277eab4c..d06790351c86 100644
--- a/usr.sbin/amd/amd/efs_ops.c
+++ b/usr.sbin/amd/amd/efs_ops.c
@@ -37,7 +37,7 @@
*
* @(#)efs_ops.c 8.1 (Berkeley) 6/6/93
*
- * $Id: efs_ops.c,v 5.2.2.1 1992/02/09 15:08:21 jsp beta $
+ * $Id: efs_ops.c,v 1.1.1.1 1994/05/26 05:22:00 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/amd/get_args.c b/usr.sbin/amd/amd/get_args.c
index 0567d5dd5ea3..540d869e3c4b 100644
--- a/usr.sbin/amd/amd/get_args.c
+++ b/usr.sbin/amd/amd/get_args.c
@@ -37,7 +37,7 @@
*
* @(#)get_args.c 8.1 (Berkeley) 6/6/93
*
- * $Id: get_args.c,v 5.2.2.1 1992/02/09 15:08:23 jsp beta $
+ * $Id: get_args.c,v 1.1.1.1 1994/05/26 05:22:01 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/amd/host_ops.c b/usr.sbin/amd/amd/host_ops.c
index d290fb62377b..97616bfa3ccf 100644
--- a/usr.sbin/amd/amd/host_ops.c
+++ b/usr.sbin/amd/amd/host_ops.c
@@ -37,7 +37,7 @@
*
* @(#)host_ops.c 8.1 (Berkeley) 6/6/93
*
- * $Id: host_ops.c,v 1.1.1.1 1994/05/26 05:22:00 rgrimes Exp $
+ * $Id: host_ops.c,v 1.2 1995/05/30 03:45:45 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/amd/ifs_ops.c b/usr.sbin/amd/amd/ifs_ops.c
index 14df832b24c6..a7108ed786fe 100644
--- a/usr.sbin/amd/amd/ifs_ops.c
+++ b/usr.sbin/amd/amd/ifs_ops.c
@@ -37,7 +37,7 @@
*
* @(#)ifs_ops.c 8.1 (Berkeley) 6/6/93
*
- * $Id: ifs_ops.c,v 5.2.2.1 1992/02/09 15:08:26 jsp beta $
+ * $Id: ifs_ops.c,v 1.1.1.1 1994/05/26 05:22:00 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/amd/info_file.c b/usr.sbin/amd/amd/info_file.c
index c43b2a7b07c2..d5fdfdeb9a6f 100644
--- a/usr.sbin/amd/amd/info_file.c
+++ b/usr.sbin/amd/amd/info_file.c
@@ -37,7 +37,7 @@
*
* @(#)info_file.c 8.1 (Berkeley) 6/6/93
*
- * $Id: info_file.c,v 5.2.2.1 1992/02/09 15:08:28 jsp beta $
+ * $Id: info_file.c,v 1.1.1.1 1994/05/26 05:22:01 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/amd/info_hes.c b/usr.sbin/amd/amd/info_hes.c
index 513eda7a4622..893ea3e4f73c 100644
--- a/usr.sbin/amd/amd/info_hes.c
+++ b/usr.sbin/amd/amd/info_hes.c
@@ -37,7 +37,7 @@
*
* @(#)info_hes.c 8.1 (Berkeley) 6/6/93
*
- * $Id: info_hes.c,v 1.1.1.1 1994/05/26 05:22:01 rgrimes Exp $
+ * $Id: info_hes.c,v 1.2 1995/05/30 03:45:47 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/amd/info_ndbm.c b/usr.sbin/amd/amd/info_ndbm.c
index d3deaa187f9f..435cafa9e8ff 100644
--- a/usr.sbin/amd/amd/info_ndbm.c
+++ b/usr.sbin/amd/amd/info_ndbm.c
@@ -37,7 +37,7 @@
*
* @(#)info_ndbm.c 8.1 (Berkeley) 6/6/93
*
- * $Id: info_ndbm.c,v 5.2.2.1 1992/02/09 15:08:31 jsp beta $
+ * $Id: info_ndbm.c,v 1.1.1.1 1994/05/26 05:22:01 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/amd/info_nis.c b/usr.sbin/amd/amd/info_nis.c
index ac80f5f975dd..f478dec83bfb 100644
--- a/usr.sbin/amd/amd/info_nis.c
+++ b/usr.sbin/amd/amd/info_nis.c
@@ -37,7 +37,7 @@
*
* @(#)info_nis.c 8.1 (Berkeley) 6/6/93
*
- * $Id: info_nis.c,v 5.2.2.1 1992/02/09 15:08:32 jsp beta $
+ * $Id: info_nis.c,v 1.1.1.1 1994/05/26 05:22:01 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/amd/info_passwd.c b/usr.sbin/amd/amd/info_passwd.c
index 694dd53294b1..ac509381e237 100644
--- a/usr.sbin/amd/amd/info_passwd.c
+++ b/usr.sbin/amd/amd/info_passwd.c
@@ -37,7 +37,7 @@
*
* @(#)info_passwd.c 8.1 (Berkeley) 6/6/93
*
- * $Id: info_passwd.c,v 1.1.1.1 1994/05/26 05:22:01 rgrimes Exp $
+ * $Id: info_passwd.c,v 1.2 1995/05/30 03:45:48 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/amd/info_union.c b/usr.sbin/amd/amd/info_union.c
index e3062adaa5a3..ea6a1c0f1122 100644
--- a/usr.sbin/amd/amd/info_union.c
+++ b/usr.sbin/amd/amd/info_union.c
@@ -37,7 +37,7 @@
*
* @(#)info_union.c 8.1 (Berkeley) 6/6/93
*
- * $Id: info_union.c,v 5.2.2.1 1992/02/09 15:08:34 jsp beta $
+ * $Id: info_union.c,v 1.1.1.1 1994/05/26 05:22:03 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/amd/map.c b/usr.sbin/amd/amd/map.c
index 21c8d3187eff..d819e83cf913 100644
--- a/usr.sbin/amd/amd/map.c
+++ b/usr.sbin/amd/amd/map.c
@@ -35,7 +35,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: map.c,v 1.1.1.1 1994/05/26 05:22:00 rgrimes Exp $
+ * $Id: map.c,v 1.2 1995/05/30 03:45:49 rgrimes Exp $
*/
#ifndef lint
diff --git a/usr.sbin/amd/amd/mapc.c b/usr.sbin/amd/amd/mapc.c
index 1004644eff0c..0f37ba9d540f 100644
--- a/usr.sbin/amd/amd/mapc.c
+++ b/usr.sbin/amd/amd/mapc.c
@@ -35,7 +35,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: mapc.c,v 1.1.1.1 1994/05/26 05:22:01 rgrimes Exp $
+ * $Id: mapc.c,v 1.2 1995/05/30 03:45:50 rgrimes Exp $
*/
#ifndef lint
diff --git a/usr.sbin/amd/amd/misc_rpc.c b/usr.sbin/amd/amd/misc_rpc.c
index e982f786f092..a8bd1de39c84 100644
--- a/usr.sbin/amd/amd/misc_rpc.c
+++ b/usr.sbin/amd/amd/misc_rpc.c
@@ -37,7 +37,7 @@
*
* @(#)misc_rpc.c 8.1 (Berkeley) 6/6/93
*
- * $Id: misc_rpc.c,v 1.1.1.1 1994/05/26 05:22:01 rgrimes Exp $
+ * $Id: misc_rpc.c,v 1.2 1995/05/30 03:45:51 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/amd/mntfs.c b/usr.sbin/amd/amd/mntfs.c
index ef8f17f2cbf1..108f676904f3 100644
--- a/usr.sbin/amd/amd/mntfs.c
+++ b/usr.sbin/amd/amd/mntfs.c
@@ -35,7 +35,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: mntfs.c,v 5.2.2.1 1992/02/09 15:08:42 jsp beta $
+ * $Id: mntfs.c,v 1.1.1.1 1994/05/26 05:22:01 rgrimes Exp $
*/
#ifndef lint
diff --git a/usr.sbin/amd/amd/mount_fs.c b/usr.sbin/amd/amd/mount_fs.c
index 43a06251ddc4..4b74aae3daeb 100644
--- a/usr.sbin/amd/amd/mount_fs.c
+++ b/usr.sbin/amd/amd/mount_fs.c
@@ -37,7 +37,7 @@
*
* @(#)mount_fs.c 8.1 (Berkeley) 6/6/93
*
- * $Id: mount_fs.c,v 5.2.2.2 1992/05/31 16:35:45 jsp Exp $
+ * $Id: mount_fs.c,v 1.1.1.1 1994/05/26 05:22:02 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/amd/mtab.c b/usr.sbin/amd/amd/mtab.c
index 43b3a26e9a7f..359687620845 100644
--- a/usr.sbin/amd/amd/mtab.c
+++ b/usr.sbin/amd/amd/mtab.c
@@ -37,7 +37,7 @@
*
* @(#)mtab.c 8.1 (Berkeley) 6/6/93
*
- * $Id: mtab.c,v 5.2.2.1 1992/02/09 15:08:45 jsp beta $
+ * $Id: mtab.c,v 1.1.1.1 1994/05/26 05:22:01 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/amd/nfs_ops.c b/usr.sbin/amd/amd/nfs_ops.c
index 1d92974bf2ff..f9da3450270b 100644
--- a/usr.sbin/amd/amd/nfs_ops.c
+++ b/usr.sbin/amd/amd/nfs_ops.c
@@ -35,7 +35,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: nfs_ops.c,v 1.2 1995/02/13 01:56:22 wpaul Exp $
+ * $Id: nfs_ops.c,v 1.3 1995/05/30 03:45:52 rgrimes Exp $
*/
#ifndef lint
diff --git a/usr.sbin/amd/amd/nfs_start.c b/usr.sbin/amd/amd/nfs_start.c
index aad227d1ce63..6f250492d63a 100644
--- a/usr.sbin/amd/amd/nfs_start.c
+++ b/usr.sbin/amd/amd/nfs_start.c
@@ -37,7 +37,7 @@
*
* @(#)nfs_start.c 8.1 (Berkeley) 6/6/93
*
- * $Id: nfs_start.c,v 1.1.1.1 1994/05/26 05:22:00 rgrimes Exp $
+ * $Id: nfs_start.c,v 1.2 1995/05/30 03:45:53 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/amd/nfs_subr.c b/usr.sbin/amd/amd/nfs_subr.c
index def2db145265..6b84cb571e62 100644
--- a/usr.sbin/amd/amd/nfs_subr.c
+++ b/usr.sbin/amd/amd/nfs_subr.c
@@ -37,7 +37,7 @@
*
* @(#)nfs_subr.c 8.1 (Berkeley) 6/6/93
*
- * $Id: nfs_subr.c,v 1.1.1.1 1994/05/26 05:22:00 rgrimes Exp $
+ * $Id: nfs_subr.c,v 1.2 1995/05/30 03:45:54 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/amd/nfsx_ops.c b/usr.sbin/amd/amd/nfsx_ops.c
index ba18cdcfebe8..75975d136f04 100644
--- a/usr.sbin/amd/amd/nfsx_ops.c
+++ b/usr.sbin/amd/amd/nfsx_ops.c
@@ -37,7 +37,7 @@
*
* @(#)nfsx_ops.c 8.1 (Berkeley) 6/6/93
*
- * $Id: nfsx_ops.c,v 5.2.2.3 1992/05/31 16:13:07 jsp Exp $
+ * $Id: nfsx_ops.c,v 1.1.1.1 1994/05/26 05:22:03 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/amd/opts.c b/usr.sbin/amd/amd/opts.c
index 54c967528c44..d3cc5760dca4 100644
--- a/usr.sbin/amd/amd/opts.c
+++ b/usr.sbin/amd/amd/opts.c
@@ -35,7 +35,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: opts.c,v 5.2.2.3 1992/05/31 16:34:13 jsp Exp $
+ * $Id: opts.c,v 1.1.1.1 1994/05/26 05:22:02 rgrimes Exp $
*/
#ifndef lint
diff --git a/usr.sbin/amd/amd/pfs_ops.c b/usr.sbin/amd/amd/pfs_ops.c
index 314f62bdf66f..78606b301789 100644
--- a/usr.sbin/amd/amd/pfs_ops.c
+++ b/usr.sbin/amd/amd/pfs_ops.c
@@ -37,7 +37,7 @@
*
* @(#)pfs_ops.c 8.1 (Berkeley) 6/6/93
*
- * $Id: pfs_ops.c,v 5.2.2.1 1992/02/09 15:08:56 jsp beta $
+ * $Id: pfs_ops.c,v 1.1.1.1 1994/05/26 05:22:02 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/amd/restart.c b/usr.sbin/amd/amd/restart.c
index 421c2a1fe3ec..dc8d0c4888c2 100644
--- a/usr.sbin/amd/amd/restart.c
+++ b/usr.sbin/amd/amd/restart.c
@@ -35,7 +35,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: restart.c,v 1.1.1.1 1994/05/26 05:22:02 rgrimes Exp $
+ * $Id: restart.c,v 1.2 1995/05/30 03:45:55 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/amd/rpc_fwd.c b/usr.sbin/amd/amd/rpc_fwd.c
index a2e49ef99406..d093bc7c2250 100644
--- a/usr.sbin/amd/amd/rpc_fwd.c
+++ b/usr.sbin/amd/amd/rpc_fwd.c
@@ -37,7 +37,7 @@
*
* @(#)rpc_fwd.c 8.1 (Berkeley) 6/6/93
*
- * $Id: rpc_fwd.c,v 1.1.1.1 1994/05/26 05:22:02 rgrimes Exp $
+ * $Id: rpc_fwd.c,v 1.2 1995/05/30 03:45:56 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/amd/sched.c b/usr.sbin/amd/amd/sched.c
index cd12e3bf4b70..905ca5b092ff 100644
--- a/usr.sbin/amd/amd/sched.c
+++ b/usr.sbin/amd/amd/sched.c
@@ -37,7 +37,7 @@
*
* @(#)sched.c 8.1 (Berkeley) 6/6/93
*
- * $Id: sched.c,v 5.2.2.1 1992/02/09 15:09:02 jsp beta $
+ * $Id: sched.c,v 1.1.1.1 1994/05/26 05:22:02 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/amd/sfs_ops.c b/usr.sbin/amd/amd/sfs_ops.c
index c1b1ebae840c..190c9cf0fb67 100644
--- a/usr.sbin/amd/amd/sfs_ops.c
+++ b/usr.sbin/amd/amd/sfs_ops.c
@@ -37,7 +37,7 @@
*
* @(#)sfs_ops.c 8.1 (Berkeley) 6/6/93
*
- * $Id: sfs_ops.c,v 5.2.2.1 1992/02/09 15:09:04 jsp beta $
+ * $Id: sfs_ops.c,v 1.1.1.1 1994/05/26 05:22:02 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/amd/srvr_afs.c b/usr.sbin/amd/amd/srvr_afs.c
index 044077758a85..67bae8a44190 100644
--- a/usr.sbin/amd/amd/srvr_afs.c
+++ b/usr.sbin/amd/amd/srvr_afs.c
@@ -37,7 +37,7 @@
*
* @(#)srvr_afs.c 8.1 (Berkeley) 6/6/93
*
- * $Id: srvr_afs.c,v 5.2.2.1 1992/02/09 15:09:05 jsp beta $
+ * $Id: srvr_afs.c,v 1.1.1.1 1994/05/26 05:22:02 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/amd/srvr_nfs.c b/usr.sbin/amd/amd/srvr_nfs.c
index a025640827d4..4efb5fb70a79 100644
--- a/usr.sbin/amd/amd/srvr_nfs.c
+++ b/usr.sbin/amd/amd/srvr_nfs.c
@@ -37,7 +37,7 @@
*
* @(#)srvr_nfs.c 8.1 (Berkeley) 6/6/93
*
- * $Id: srvr_nfs.c,v 1.1.1.1 1994/05/26 05:22:02 rgrimes Exp $
+ * $Id: srvr_nfs.c,v 1.2 1995/05/30 03:45:58 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/amd/ufs_ops.c b/usr.sbin/amd/amd/ufs_ops.c
index fd81c37155f0..5242958fa6de 100644
--- a/usr.sbin/amd/amd/ufs_ops.c
+++ b/usr.sbin/amd/amd/ufs_ops.c
@@ -37,7 +37,7 @@
*
* @(#)ufs_ops.c 8.1 (Berkeley) 6/6/93
*
- * $Id: ufs_ops.c,v 5.2.2.1 1992/02/09 15:09:08 jsp beta $
+ * $Id: ufs_ops.c,v 1.1.1.1 1994/05/26 05:22:02 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/amd/umount_fs.c b/usr.sbin/amd/amd/umount_fs.c
index 66b413bddc4a..1027f12134c0 100644
--- a/usr.sbin/amd/amd/umount_fs.c
+++ b/usr.sbin/amd/amd/umount_fs.c
@@ -37,7 +37,7 @@
*
* @(#)umount_fs.c 8.1 (Berkeley) 6/6/93
*
- * $Id: umount_fs.c,v 1.1.1.1 1994/05/26 05:22:03 rgrimes Exp $
+ * $Id: umount_fs.c,v 1.2 1995/05/30 03:45:59 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/amd/util.c b/usr.sbin/amd/amd/util.c
index 8503cc828bfb..b682daba84d4 100644
--- a/usr.sbin/amd/amd/util.c
+++ b/usr.sbin/amd/amd/util.c
@@ -37,7 +37,7 @@
*
* @(#)util.c 8.1 (Berkeley) 6/6/93
*
- * $Id: util.c,v 5.2.2.2 1992/03/07 17:52:06 jsp Exp $
+ * $Id: util.c,v 1.1.1.1 1994/05/26 05:22:03 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/amd/wire.c b/usr.sbin/amd/amd/wire.c
index f1103e8f360c..cd5d86498b57 100644
--- a/usr.sbin/amd/amd/wire.c
+++ b/usr.sbin/amd/amd/wire.c
@@ -37,7 +37,7 @@
*
* @(#)wire.c 8.1 (Berkeley) 6/6/93
*
- * $Id: wire.c,v 1.1.1.1 1994/05/26 05:22:03 rgrimes Exp $
+ * $Id: wire.c,v 1.2 1995/05/30 03:46:01 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/amd/xutil.c b/usr.sbin/amd/amd/xutil.c
index 8af6951d0b90..d916bcecd358 100644
--- a/usr.sbin/amd/amd/xutil.c
+++ b/usr.sbin/amd/amd/xutil.c
@@ -37,7 +37,7 @@
*
* @(#)xutil.c 8.1 (Berkeley) 6/6/93
*
- * $Id: xutil.c,v 5.2.2.3 1992/03/07 10:36:09 jsp Exp $
+ * $Id: xutil.c,v 1.1.1.1 1994/05/26 05:22:03 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/amq/amq.8 b/usr.sbin/amd/amq/amq.8
index 5485925b809f..79ccca269089 100644
--- a/usr.sbin/amd/amq/amq.8
+++ b/usr.sbin/amd/amq/amq.8
@@ -37,7 +37,7 @@
.\"
.\" @(#)amq.8 8.3 (Berkeley) 4/18/94
.\"
-.\" $Id: amq.8,v 5.2.2.1 1992/02/09 15:11:41 jsp beta $
+.\" $Id: amq.8,v 1.1.1.1 1994/05/26 05:22:04 rgrimes Exp $
.\"
.Dd March 16, 1991
.Dt AMQ 8
diff --git a/usr.sbin/amd/amq/amq.c b/usr.sbin/amd/amq/amq.c
index 68363ed50761..19092b6fb179 100644
--- a/usr.sbin/amd/amq/amq.c
+++ b/usr.sbin/amd/amq/amq.c
@@ -37,7 +37,7 @@
*
* @(#)amq.c 8.1 (Berkeley) 6/7/93
*
- * $Id: amq.c,v 1.1.1.1 1994/05/26 05:22:04 rgrimes Exp $
+ * $Id: amq.c,v 1.2 1995/05/30 03:46:02 rgrimes Exp $
*
*/
@@ -54,7 +54,7 @@ char copyright[] = "\
#endif /* not lint */
#ifndef lint
-static char rcsid[] = "$Id: amq.c,v 1.1.1.1 1994/05/26 05:22:04 rgrimes Exp $";
+static char rcsid[] = "$Id: amq.c,v 1.2 1995/05/30 03:46:02 rgrimes Exp $";
static char sccsid[] = "@(#)amq.c 8.1 (Berkeley) 6/7/93";
#endif /* not lint */
diff --git a/usr.sbin/amd/config/Configure b/usr.sbin/amd/config/Configure
index 2851786f5032..602b9a725bae 100644
--- a/usr.sbin/amd/config/Configure
+++ b/usr.sbin/amd/config/Configure
@@ -38,7 +38,7 @@
#
# @(#)Configure 8.1 (Berkeley) 6/6/93
#
-# $Id: Configure,v 5.2.1.2 91/05/07 22:20:26 jsp Alpha $
+# $Id: Configure,v 1.1.1.1 1994/05/26 05:22:08 rgrimes Exp $
#
echo "Making ./arch and ./os-type executable ..."
until chmod +x ./arch ./os-type; do echo "Error: chmod command failed" >&2; exit 1; done
diff --git a/usr.sbin/amd/config/Makefile.aix3 b/usr.sbin/amd/config/Makefile.aix3
index c4bdd3afc85c..b11728f3305d 100644
--- a/usr.sbin/amd/config/Makefile.aix3
+++ b/usr.sbin/amd/config/Makefile.aix3
@@ -1,5 +1,5 @@
# @(#)Makefile.aix3 8.1 (Berkeley) 6/6/93
#
-# $Id: Makefile.aix3,v 5.2.2.1 1992/02/09 15:10:06 jsp beta $
+# $Id: Makefile.aix3,v 1.1.1.1 1994/05/26 05:22:08 rgrimes Exp $
#
SYSLIB = -lbsd
diff --git a/usr.sbin/amd/config/Makefile.bsd44 b/usr.sbin/amd/config/Makefile.bsd44
index a41ff2dba0d4..bca7b94b24e2 100644
--- a/usr.sbin/amd/config/Makefile.bsd44
+++ b/usr.sbin/amd/config/Makefile.bsd44
@@ -1,6 +1,6 @@
# @(#)Makefile.bsd44 8.1 (Berkeley) 6/6/93
#
-# $Id: Makefile.bsd44,v 5.2.2.1 1992/02/09 15:10:12 jsp beta $
+# $Id: Makefile.bsd44,v 1.1.1.1 1994/05/26 05:22:06 rgrimes Exp $
#
# Extra Makefile definitions for 4.4 BSD
#
diff --git a/usr.sbin/amd/config/Makefile.config b/usr.sbin/amd/config/Makefile.config
index 0c4d7befb562..6071dd77299e 100644
--- a/usr.sbin/amd/config/Makefile.config
+++ b/usr.sbin/amd/config/Makefile.config
@@ -1,6 +1,6 @@
# @(#)Makefile.config 8.1 (Berkeley) 6/6/93
#
-# $Id: Makefile.config,v 5.2.2.1 1992/02/09 15:11:17 jsp beta $
+# $Id: Makefile.config,v 1.1.1.1 1994/05/26 05:22:06 rgrimes Exp $
#
#
diff --git a/usr.sbin/amd/config/Makefile.hpux b/usr.sbin/amd/config/Makefile.hpux
index dd92f9eb4b96..67e0f42e232a 100644
--- a/usr.sbin/amd/config/Makefile.hpux
+++ b/usr.sbin/amd/config/Makefile.hpux
@@ -1,6 +1,6 @@
# @(#)Makefile.hpux 8.1 (Berkeley) 6/6/93
#
-# $Id: Makefile.hpux,v 5.2.2.1 1992/02/09 15:10:26 jsp beta $
+# $Id: Makefile.hpux,v 1.1.1.1 1994/05/26 05:22:06 rgrimes Exp $
#
# Extra Makefile definitions for HP-UX
#
diff --git a/usr.sbin/amd/config/Makefile.irix b/usr.sbin/amd/config/Makefile.irix
index e936b4540bdb..d077b5b472ef 100644
--- a/usr.sbin/amd/config/Makefile.irix
+++ b/usr.sbin/amd/config/Makefile.irix
@@ -1,6 +1,6 @@
# @(#)Makefile.irix 8.1 (Berkeley) 6/6/93
#
-# $Id: Makefile.irix,v 5.2.2.1 1992/02/09 15:10:31 jsp beta $
+# $Id: Makefile.irix,v 1.1.1.1 1994/05/26 05:22:06 rgrimes Exp $
#
# Extra Makefile definitions for IRIX
#
diff --git a/usr.sbin/amd/config/Makefile.irix3 b/usr.sbin/amd/config/Makefile.irix3
index 9f208bb205df..74879d49290b 100644
--- a/usr.sbin/amd/config/Makefile.irix3
+++ b/usr.sbin/amd/config/Makefile.irix3
@@ -1,6 +1,6 @@
# @(#)Makefile.irix3 8.1 (Berkeley) 6/6/93
#
-# $Id: Makefile.irix3,v 1.1.1.1 1994/05/26 05:22:09 rgrimes Exp $
+# $Id: Makefile.irix3,v 1.2 1995/05/30 03:46:04 rgrimes Exp $
#
# Extra Makefile definitions for IRIX
#
diff --git a/usr.sbin/amd/config/Makefile.irix4 b/usr.sbin/amd/config/Makefile.irix4
index 4480e932a5a9..fd73ca8bde6d 100644
--- a/usr.sbin/amd/config/Makefile.irix4
+++ b/usr.sbin/amd/config/Makefile.irix4
@@ -1,6 +1,6 @@
# @(#)Makefile.irix4 8.1 (Berkeley) 6/6/93
#
-# $Id: Makefile.irix4,v 5.2 1992/05/31 16:40:22 jsp Exp $
+# $Id: Makefile.irix4,v 1.1.1.1 1994/05/26 05:22:09 rgrimes Exp $
#
# Extra Makefile definitions for IRIX
#
diff --git a/usr.sbin/amd/config/Makefile.stellix b/usr.sbin/amd/config/Makefile.stellix
index 0bcfff6895c2..27957ef0805f 100644
--- a/usr.sbin/amd/config/Makefile.stellix
+++ b/usr.sbin/amd/config/Makefile.stellix
@@ -1,6 +1,6 @@
# @(#)Makefile.stellix 8.1 (Berkeley) 6/6/93
#
-# $Id: Makefile.stellix,v 5.2.2.1 1992/02/09 15:10:45 jsp beta $
+# $Id: Makefile.stellix,v 1.1.1.1 1994/05/26 05:22:09 rgrimes Exp $
#
# Extra Makefile definitions for STELLIX
#
diff --git a/usr.sbin/amd/config/RELEASE b/usr.sbin/amd/config/RELEASE
index 36f8f1f978b8..43be6c3c0f4a 100644
--- a/usr.sbin/amd/config/RELEASE
+++ b/usr.sbin/amd/config/RELEASE
@@ -1 +1 @@
-$Revision: 5.2.3.1 $ of $Date: 1993/06/01 11:43:31 $ bsd44
+$Revision: 1.1.1.1 $ of $Date: 1994/05/26 05:22:08 $ bsd44
diff --git a/usr.sbin/amd/config/arch b/usr.sbin/amd/config/arch
index 191c0c1ca79f..d5803037864a 100644
--- a/usr.sbin/amd/config/arch
+++ b/usr.sbin/amd/config/arch
@@ -38,7 +38,7 @@
#
# @(#)arch 8.1 (Berkeley) 6/6/93
#
-# $Id: arch,v 1.1.1.1 1994/05/26 05:22:08 rgrimes Exp $
+# $Id: arch,v 1.2 1995/02/02 03:36:51 jkh Exp $
#
# Figure out machine architecture
#
diff --git a/usr.sbin/amd/config/misc-aix3.h b/usr.sbin/amd/config/misc-aix3.h
index 2c97d816cd10..35feea432d8b 100644
--- a/usr.sbin/amd/config/misc-aix3.h
+++ b/usr.sbin/amd/config/misc-aix3.h
@@ -37,7 +37,7 @@
*
* @(#)misc-aix3.h 8.1 (Berkeley) 6/6/93
*
- * $Id: misc-aix3.h,v 5.2.2.1 1992/02/09 15:10:05 jsp beta $
+ * $Id: misc-aix3.h,v 1.1.1.1 1994/05/26 05:22:09 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/config/misc-hpux.h b/usr.sbin/amd/config/misc-hpux.h
index d808627dac25..386b5b9949f6 100644
--- a/usr.sbin/amd/config/misc-hpux.h
+++ b/usr.sbin/amd/config/misc-hpux.h
@@ -37,7 +37,7 @@
*
* @(#)misc-hpux.h 8.1 (Berkeley) 6/6/93
*
- * $Id: misc-hpux.h,v 5.2.2.1 1992/02/09 15:10:24 jsp beta $
+ * $Id: misc-hpux.h,v 1.1.1.1 1994/05/26 05:22:09 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/config/misc-irix.h b/usr.sbin/amd/config/misc-irix.h
index f7d668206307..997911947993 100644
--- a/usr.sbin/amd/config/misc-irix.h
+++ b/usr.sbin/amd/config/misc-irix.h
@@ -37,7 +37,7 @@
*
* @(#)misc-irix.h 8.1 (Berkeley) 6/6/93
*
- * $Id: misc-irix.h,v 5.2.2.1 1992/02/09 15:10:30 jsp beta $
+ * $Id: misc-irix.h,v 1.1.1.1 1994/05/26 05:22:09 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/config/misc-next.h b/usr.sbin/amd/config/misc-next.h
index 46a498e51215..542d69c24bea 100644
--- a/usr.sbin/amd/config/misc-next.h
+++ b/usr.sbin/amd/config/misc-next.h
@@ -37,7 +37,7 @@
*
* @(#)misc-next.h 8.1 (Berkeley) 6/6/93
*
- * $Id: misc-next.h,v 5.2.2.1 1992/02/09 15:10:34 jsp beta $
+ * $Id: misc-next.h,v 1.1.1.1 1994/05/26 05:22:08 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/config/misc-ultrix.h b/usr.sbin/amd/config/misc-ultrix.h
index 640c5a784a72..d43caa8ec5a2 100644
--- a/usr.sbin/amd/config/misc-ultrix.h
+++ b/usr.sbin/amd/config/misc-ultrix.h
@@ -37,7 +37,7 @@
*
* @(#)misc-ultrix.h 8.1 (Berkeley) 6/6/93
*
- * $Id: misc-ultrix.h,v 5.2.2.1 1992/02/09 15:10:49 jsp beta $
+ * $Id: misc-ultrix.h,v 1.1.1.1 1994/05/26 05:22:09 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/config/mount_aix.c b/usr.sbin/amd/config/mount_aix.c
index 07d9e803a673..34d7735b850d 100644
--- a/usr.sbin/amd/config/mount_aix.c
+++ b/usr.sbin/amd/config/mount_aix.c
@@ -37,7 +37,7 @@
*
* @(#)mount_aix.c 8.1 (Berkeley) 6/6/93
*
- * $Id: mount_aix.c,v 5.2.2.1 1992/02/09 15:10:08 jsp beta $
+ * $Id: mount_aix.c,v 1.1.1.1 1994/05/26 05:22:07 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/config/mount_irix.c b/usr.sbin/amd/config/mount_irix.c
index 992696009d81..6b5fa2ccb15c 100644
--- a/usr.sbin/amd/config/mount_irix.c
+++ b/usr.sbin/amd/config/mount_irix.c
@@ -37,7 +37,7 @@
*
* @(#)mount_irix.c 8.1 (Berkeley) 6/6/93
*
- * $Id: mount_irix.c,v 5.2.2.1 1992/02/09 15:10:32 jsp beta $
+ * $Id: mount_irix.c,v 1.1.1.1 1994/05/26 05:22:09 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/config/mtab_aix.c b/usr.sbin/amd/config/mtab_aix.c
index 78bf941fc6a9..9008936e4223 100644
--- a/usr.sbin/amd/config/mtab_aix.c
+++ b/usr.sbin/amd/config/mtab_aix.c
@@ -37,7 +37,7 @@
*
* @(#)mtab_aix.c 8.1 (Berkeley) 6/6/93
*
- * $Id: mtab_aix.c,v 5.2.2.1 1992/02/09 15:10:07 jsp beta $
+ * $Id: mtab_aix.c,v 1.1.1.1 1994/05/26 05:22:09 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/config/mtab_bsd.c b/usr.sbin/amd/config/mtab_bsd.c
index 1d81127a29a7..21a8676ad886 100644
--- a/usr.sbin/amd/config/mtab_bsd.c
+++ b/usr.sbin/amd/config/mtab_bsd.c
@@ -37,7 +37,7 @@
*
* @(#)mtab_bsd.c 8.1 (Berkeley) 6/6/93
*
- * $Id: mtab_bsd.c,v 5.2.2.1 1992/02/09 15:10:13 jsp beta $
+ * $Id: mtab_bsd.c,v 1.1.1.1 1994/05/26 05:22:07 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/config/mtab_file.c b/usr.sbin/amd/config/mtab_file.c
index 5a82cd7eb627..a97ae765dfc0 100644
--- a/usr.sbin/amd/config/mtab_file.c
+++ b/usr.sbin/amd/config/mtab_file.c
@@ -37,7 +37,7 @@
*
* @(#)mtab_file.c 8.1 (Berkeley) 6/6/93
*
- * $Id: mtab_file.c,v 1.1.1.1 1994/05/26 05:22:07 rgrimes Exp $
+ * $Id: mtab_file.c,v 1.2 1995/05/30 03:46:05 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/config/mtab_ultrix.c b/usr.sbin/amd/config/mtab_ultrix.c
index 241ea883f6cf..0e43fc6d93da 100644
--- a/usr.sbin/amd/config/mtab_ultrix.c
+++ b/usr.sbin/amd/config/mtab_ultrix.c
@@ -37,7 +37,7 @@
*
* @(#)mtab_ultrix.c 8.1 (Berkeley) 6/6/93
*
- * $Id: mtab_ultrix.c,v 5.2.2.1 1992/02/09 15:10:50 jsp beta $
+ * $Id: mtab_ultrix.c,v 1.1.1.1 1994/05/26 05:22:07 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/config/newvers.sh b/usr.sbin/amd/config/newvers.sh
index a5109662d3b8..b6bfe2ea4a0e 100644
--- a/usr.sbin/amd/config/newvers.sh
+++ b/usr.sbin/amd/config/newvers.sh
@@ -38,7 +38,7 @@
#
# @(#)newvers.sh 8.1 (Berkeley) 6/6/93
#
-# $Id: newvers.sh,v 5.2.2.1 1992/02/09 15:11:19 jsp beta $
+# $Id: newvers.sh,v 1.1.1.1 1994/05/26 05:22:06 rgrimes Exp $
#
PATH=/usr/ucb:/bin:/usr/bin:$PATH
if [ $# -ne 3 ]; then echo "Usage: newvers program arch os" >&2; exit 1; fi
diff --git a/usr.sbin/amd/config/os-acis43.h b/usr.sbin/amd/config/os-acis43.h
index bcc44d54a600..01bd85f02273 100644
--- a/usr.sbin/amd/config/os-acis43.h
+++ b/usr.sbin/amd/config/os-acis43.h
@@ -37,7 +37,7 @@
*
* @(#)os-acis43.h 8.1 (Berkeley) 6/6/93
*
- * $Id: os-acis43.h,v 5.2.2.1 1992/02/09 15:10:02 jsp beta $
+ * $Id: os-acis43.h,v 1.1.1.1 1994/05/26 05:22:07 rgrimes Exp $
*
* IBM RT ACIS4.3 definitions for Amd (automounter)
*/
diff --git a/usr.sbin/amd/config/os-aix3.h b/usr.sbin/amd/config/os-aix3.h
index c70b15919fb5..5669ef39ebd0 100644
--- a/usr.sbin/amd/config/os-aix3.h
+++ b/usr.sbin/amd/config/os-aix3.h
@@ -37,7 +37,7 @@
*
* @(#)os-aix3.h 8.1 (Berkeley) 6/6/93
*
- * $Id: os-aix3.h,v 5.2.2.2 1992/05/31 16:38:49 jsp Exp $
+ * $Id: os-aix3.h,v 1.1.1.1 1994/05/26 05:22:07 rgrimes Exp $
*
* AIX 3.1 definitions for Amd (automounter)
*/
diff --git a/usr.sbin/amd/config/os-aux.h b/usr.sbin/amd/config/os-aux.h
index edd85a47e764..fe88223dc452 100644
--- a/usr.sbin/amd/config/os-aux.h
+++ b/usr.sbin/amd/config/os-aux.h
@@ -37,7 +37,7 @@
*
* @(#)os-aux.h 8.1 (Berkeley) 6/6/93
*
- * $Id: os-aux.h,v 5.2.2.1 1992/02/09 15:10:10 jsp beta $
+ * $Id: os-aux.h,v 1.1.1.1 1994/05/26 05:22:07 rgrimes Exp $
*
* A/UX macII definitions for Amd (automounter)
* Contributed by Julian Onions <jpo@cs.nott.ac.uk>
diff --git a/usr.sbin/amd/config/os-bsd44.h b/usr.sbin/amd/config/os-bsd44.h
index fa41cfecb68d..dc70a09593fc 100644
--- a/usr.sbin/amd/config/os-bsd44.h
+++ b/usr.sbin/amd/config/os-bsd44.h
@@ -37,7 +37,7 @@
*
* @(#)os-bsd44.h 8.1 (Berkeley) 6/6/93
*
- * $Id: os-bsd44.h,v 1.1.1.1 1994/05/26 05:22:07 rgrimes Exp $
+ * $Id: os-bsd44.h,v 1.2 1995/01/20 20:58:54 wollman Exp $
*
* 4.4 BSD definitions for Amd (automounter)
*/
diff --git a/usr.sbin/amd/config/os-concentrix.h b/usr.sbin/amd/config/os-concentrix.h
index 4a130e00a10d..8bed52a3607e 100644
--- a/usr.sbin/amd/config/os-concentrix.h
+++ b/usr.sbin/amd/config/os-concentrix.h
@@ -37,7 +37,7 @@
*
* @(#)os-concentrix.h 8.1 (Berkeley) 6/6/93
*
- * $Id: os-concentrix.h,v 5.2.2.1 1992/02/09 15:10:14 jsp beta $
+ * $Id: os-concentrix.h,v 1.1.1.1 1994/05/26 05:22:07 rgrimes Exp $
*
* Alliant Concentrix 5.0.0 definitions for Amd (automounter)
*/
diff --git a/usr.sbin/amd/config/os-convex.h b/usr.sbin/amd/config/os-convex.h
index 224655530171..b32ae88ca737 100644
--- a/usr.sbin/amd/config/os-convex.h
+++ b/usr.sbin/amd/config/os-convex.h
@@ -37,7 +37,7 @@
*
* @(#)os-convex.h 8.1 (Berkeley) 6/6/93
*
- * $Id: os-convex.h,v 1.1.1.1 1994/05/26 05:22:07 rgrimes Exp $
+ * $Id: os-convex.h,v 1.2 1995/05/30 03:46:06 rgrimes Exp $
*
* Convex C220, version 7.1 definitions for Amd (automounter)
* from Eitan Mizrotsky <eitan@shum.huji.ac.il>
diff --git a/usr.sbin/amd/config/os-defaults.h b/usr.sbin/amd/config/os-defaults.h
index ce10ae202f58..6190aef536fd 100644
--- a/usr.sbin/amd/config/os-defaults.h
+++ b/usr.sbin/amd/config/os-defaults.h
@@ -37,7 +37,7 @@
*
* @(#)os-defaults.h 8.1 (Berkeley) 6/6/93
*
- * $Id: os-defaults.h,v 5.2.2.1 1992/02/09 15:10:17 jsp beta $
+ * $Id: os-defaults.h,v 1.1.1.1 1994/05/26 05:22:07 rgrimes Exp $
*
* Common OS definitions. These may be overridden in
* the OS specific files ("os-foo.h").
diff --git a/usr.sbin/amd/config/os-dgux.h b/usr.sbin/amd/config/os-dgux.h
index 98c81bfb1d8d..eb704604fe0a 100644
--- a/usr.sbin/amd/config/os-dgux.h
+++ b/usr.sbin/amd/config/os-dgux.h
@@ -37,7 +37,7 @@
*
* @(#)os-dgux.h 8.1 (Berkeley) 6/6/93
*
- * $Id: os-dgux.h,v 5.2.2.1 1992/02/09 15:10:18 jsp beta $
+ * $Id: os-dgux.h,v 1.1.1.1 1994/05/26 05:22:07 rgrimes Exp $
*
* dg/ux definitions for Amd (automounter)
*/
diff --git a/usr.sbin/amd/config/os-fpx4.h b/usr.sbin/amd/config/os-fpx4.h
index 8c6942118c98..b98d0fa6eb16 100644
--- a/usr.sbin/amd/config/os-fpx4.h
+++ b/usr.sbin/amd/config/os-fpx4.h
@@ -37,7 +37,7 @@
*
* @(#)os-fpx4.h 8.1 (Berkeley) 6/6/93
*
- * $Id: os-fpx4.h,v 5.2.2.2 1992/05/31 16:39:34 jsp Exp $
+ * $Id: os-fpx4.h,v 1.1.1.1 1994/05/26 05:22:08 rgrimes Exp $
*
* Celerity FPX 4.1/2 definitions for Amd (automounter)
* from Stephen Pope <scp@grizzly.acl.lanl.gov>
diff --git a/usr.sbin/amd/config/os-hcx.h b/usr.sbin/amd/config/os-hcx.h
index 5b3fb3033e24..78cb27afde2b 100644
--- a/usr.sbin/amd/config/os-hcx.h
+++ b/usr.sbin/amd/config/os-hcx.h
@@ -37,7 +37,7 @@
*
* @(#)os-hcx.h 8.1 (Berkeley) 6/6/93
*
- * $Id: os-hcx.h,v 5.2.2.1 1992/02/09 15:10:20 jsp beta $
+ * $Id: os-hcx.h,v 1.1.1.1 1994/05/26 05:22:07 rgrimes Exp $
*
* Harris HCX/UX Release 3.0 definitions for Amd (automounter)
*/
diff --git a/usr.sbin/amd/config/os-hlh42.h b/usr.sbin/amd/config/os-hlh42.h
index 43d2d0b315c4..dda22918a150 100644
--- a/usr.sbin/amd/config/os-hlh42.h
+++ b/usr.sbin/amd/config/os-hlh42.h
@@ -37,7 +37,7 @@
*
* @(#)os-hlh42.h 8.1 (Berkeley) 6/6/93
*
- * $Id: os-hlh42.h,v 5.2.2.1 1992/02/09 15:10:22 jsp beta $
+ * $Id: os-hlh42.h,v 1.1.1.1 1994/05/26 05:22:08 rgrimes Exp $
*
* HLH OTS definitions for Amd (automounter)
*/
diff --git a/usr.sbin/amd/config/os-hpux.h b/usr.sbin/amd/config/os-hpux.h
index 42b6b8b5b03c..9d160485087a 100644
--- a/usr.sbin/amd/config/os-hpux.h
+++ b/usr.sbin/amd/config/os-hpux.h
@@ -37,7 +37,7 @@
*
* @(#)os-hpux.h 8.1 (Berkeley) 6/6/93
*
- * $Id: os-hpux.h,v 5.2.2.1 1992/02/09 15:10:23 jsp beta $
+ * $Id: os-hpux.h,v 1.1.1.1 1994/05/26 05:22:07 rgrimes Exp $
*
* HP/9000 HP-UX definitions for Amd (automounter)
*/
diff --git a/usr.sbin/amd/config/os-irix.h b/usr.sbin/amd/config/os-irix.h
index 1d854f7d7f21..0e45d573ab19 100644
--- a/usr.sbin/amd/config/os-irix.h
+++ b/usr.sbin/amd/config/os-irix.h
@@ -37,7 +37,7 @@
*
* @(#)os-irix.h 8.1 (Berkeley) 6/6/93
*
- * $Id: os-irix.h,v 5.2.2.1 1992/02/09 15:10:28 jsp beta $
+ * $Id: os-irix.h,v 1.1.1.1 1994/05/26 05:22:07 rgrimes Exp $
*
* IRIX 3.3 definitions for Amd (automounter)
* Contributed by Scott R. Presnell <srp@cgl.ucsf.edu>
diff --git a/usr.sbin/amd/config/os-irix3.h b/usr.sbin/amd/config/os-irix3.h
index 867097dbe7f9..7e9f956b0f64 100644
--- a/usr.sbin/amd/config/os-irix3.h
+++ b/usr.sbin/amd/config/os-irix3.h
@@ -37,7 +37,7 @@
*
* @(#)os-irix3.h 8.1 (Berkeley) 6/6/93
*
- * $Id: os-irix3.h,v 5.2 1992/05/31 16:40:22 jsp Exp $
+ * $Id: os-irix3.h,v 1.1.1.1 1994/05/26 05:22:10 rgrimes Exp $
*
* IRIX 3.3 definitions for Amd (automounter)
* Contributed by Scott R. Presnell <srp@cgl.ucsf.edu>
diff --git a/usr.sbin/amd/config/os-irix4.h b/usr.sbin/amd/config/os-irix4.h
index 31cb6b175327..d9c1785d0aad 100644
--- a/usr.sbin/amd/config/os-irix4.h
+++ b/usr.sbin/amd/config/os-irix4.h
@@ -37,7 +37,7 @@
*
* @(#)os-irix4.h 8.1 (Berkeley) 6/6/93
*
- * $Id: os-irix4.h,v 1.1.1.1 1994/05/26 05:22:10 rgrimes Exp $
+ * $Id: os-irix4.h,v 1.2 1995/05/30 03:46:07 rgrimes Exp $
*
* IRIX 4.0.X definitions for Amd (automounter)
* Contributed by Scott R. Presnell <srp@cgl.ucsf.edu>
diff --git a/usr.sbin/amd/config/os-next.h b/usr.sbin/amd/config/os-next.h
index c9b1cc2e7255..a3af45ac8df1 100644
--- a/usr.sbin/amd/config/os-next.h
+++ b/usr.sbin/amd/config/os-next.h
@@ -37,7 +37,7 @@
*
* @(#)os-next.h 8.1 (Berkeley) 6/6/93
*
- * $Id: os-next.h,v 5.2.2.1 1992/02/09 15:10:33 jsp beta $
+ * $Id: os-next.h,v 1.1.1.1 1994/05/26 05:22:08 rgrimes Exp $
*
* NeXT OS definitions for Amd (automounter)
* By Bill Trost, Reed College
diff --git a/usr.sbin/amd/config/os-pyrOSx.h b/usr.sbin/amd/config/os-pyrOSx.h
index 21b5fdd91d45..52c13e8fe184 100644
--- a/usr.sbin/amd/config/os-pyrOSx.h
+++ b/usr.sbin/amd/config/os-pyrOSx.h
@@ -37,7 +37,7 @@
*
* @(#)os-pyrOSx.h 8.1 (Berkeley) 6/6/93
*
- * $Id: os-pyrOSx.h,v 5.2.2.1 1992/02/09 15:10:37 jsp beta $
+ * $Id: os-pyrOSx.h,v 1.1.1.1 1994/05/26 05:22:09 rgrimes Exp $
*
* Pyramid OSx definitions for Amd (automounter)
* from Stefan Petri <petri@tubsibr.UUCP>
diff --git a/usr.sbin/amd/config/os-riscix.h b/usr.sbin/amd/config/os-riscix.h
index cff795160a78..fea086094dfb 100644
--- a/usr.sbin/amd/config/os-riscix.h
+++ b/usr.sbin/amd/config/os-riscix.h
@@ -37,7 +37,7 @@
*
* @(#)os-riscix.h 8.1 (Berkeley) 6/6/93
*
- * $Id: os-riscix.h,v 5.2.2.1 1992/02/09 15:10:38 jsp beta $
+ * $Id: os-riscix.h,v 1.1.1.1 1994/05/26 05:22:08 rgrimes Exp $
*
* Acorn Archimedes RISC iX definitions for Amd (automounter)
* Contributed by Piete Brooks.
diff --git a/usr.sbin/amd/config/os-sos3.h b/usr.sbin/amd/config/os-sos3.h
index 15c632cf31dd..311bbaab3acd 100644
--- a/usr.sbin/amd/config/os-sos3.h
+++ b/usr.sbin/amd/config/os-sos3.h
@@ -37,7 +37,7 @@
*
* @(#)os-sos3.h 8.1 (Berkeley) 6/6/93
*
- * $Id: os-sos3.h,v 5.2.2.1 1992/02/09 15:10:39 jsp beta $
+ * $Id: os-sos3.h,v 1.1.1.1 1994/05/26 05:22:08 rgrimes Exp $
*
* SunOS 3.2 definitions for Amd (automounter)
*/
diff --git a/usr.sbin/amd/config/os-sos4.h b/usr.sbin/amd/config/os-sos4.h
index 3853a6c1b76f..c73f96183c2f 100644
--- a/usr.sbin/amd/config/os-sos4.h
+++ b/usr.sbin/amd/config/os-sos4.h
@@ -37,7 +37,7 @@
*
* @(#)os-sos4.h 8.1 (Berkeley) 6/6/93
*
- * $Id: os-sos4.h,v 5.2.2.1 1992/02/09 15:10:41 jsp beta $
+ * $Id: os-sos4.h,v 1.1.1.1 1994/05/26 05:22:08 rgrimes Exp $
*
* SunOS 4.0 definitions for Amd (automounter)
*/
diff --git a/usr.sbin/amd/config/os-stellix.h b/usr.sbin/amd/config/os-stellix.h
index 8c6290a5be2c..377e22549fbe 100644
--- a/usr.sbin/amd/config/os-stellix.h
+++ b/usr.sbin/amd/config/os-stellix.h
@@ -40,7 +40,7 @@
* Amd (automounter) definitions for Stellix.
* From Stephen C. Pope <scp@acl.lanl.gov>
*
- * $Id: os-stellix.h,v 5.2.2.1 1992/02/09 15:10:43 jsp beta $
+ * $Id: os-stellix.h,v 1.1.1.1 1994/05/26 05:22:09 rgrimes Exp $
*/
#define RPC_3
diff --git a/usr.sbin/amd/config/os-type b/usr.sbin/amd/config/os-type
index 4871d79d0aa5..b741e98132ae 100644
--- a/usr.sbin/amd/config/os-type
+++ b/usr.sbin/amd/config/os-type
@@ -38,7 +38,7 @@
#
# @(#)os-type 8.1 (Berkeley) 6/6/93
#
-# $Id: os-type,v 5.2.2.2 1992/05/31 16:45:46 jsp Exp $
+# $Id: os-type,v 1.1.1.1 1994/05/26 05:22:06 rgrimes Exp $
#
#
diff --git a/usr.sbin/amd/config/os-u2_2.h b/usr.sbin/amd/config/os-u2_2.h
index aece17110cf3..34e343bfdd3e 100644
--- a/usr.sbin/amd/config/os-u2_2.h
+++ b/usr.sbin/amd/config/os-u2_2.h
@@ -37,7 +37,7 @@
*
* @(#)os-u2_2.h 8.1 (Berkeley) 6/6/93
*
- * $Id: os-u2_2.h,v 5.2.2.1 1992/02/09 15:10:48 jsp beta $
+ * $Id: os-u2_2.h,v 1.1.1.1 1994/05/26 05:22:08 rgrimes Exp $
*
* Ultrix 2.2 definitions for Amd (automounter)
*/
diff --git a/usr.sbin/amd/config/os-u3_0.h b/usr.sbin/amd/config/os-u3_0.h
index 08a4f36b20f1..b02f3343d065 100644
--- a/usr.sbin/amd/config/os-u3_0.h
+++ b/usr.sbin/amd/config/os-u3_0.h
@@ -37,7 +37,7 @@
*
* @(#)os-u3_0.h 8.1 (Berkeley) 6/6/93
*
- * $Id: os-u3_0.h,v 5.2.2.1 1992/02/09 15:10:52 jsp beta $
+ * $Id: os-u3_0.h,v 1.1.1.1 1994/05/26 05:22:08 rgrimes Exp $
*
* Ultrix 3.0 definitions for Amd (automounter)
*/
diff --git a/usr.sbin/amd/config/os-u4_0.h b/usr.sbin/amd/config/os-u4_0.h
index 07c983305505..7d37c97e2101 100644
--- a/usr.sbin/amd/config/os-u4_0.h
+++ b/usr.sbin/amd/config/os-u4_0.h
@@ -37,7 +37,7 @@
*
* @(#)os-u4_0.h 8.1 (Berkeley) 6/6/93
*
- * $Id: os-u4_0.h,v 5.2.2.1 1992/02/09 15:10:53 jsp beta $
+ * $Id: os-u4_0.h,v 1.1.1.1 1994/05/26 05:22:08 rgrimes Exp $
*
* Ultrix 4.0 definitions for Amd (automounter)
* from Chris Lindblad <cjl@ai.mit.edu>
diff --git a/usr.sbin/amd/config/os-u4_2.h b/usr.sbin/amd/config/os-u4_2.h
index f8f039c67998..295a32d9e39d 100644
--- a/usr.sbin/amd/config/os-u4_2.h
+++ b/usr.sbin/amd/config/os-u4_2.h
@@ -37,7 +37,7 @@
*
* @(#)os-u4_2.h 8.1 (Berkeley) 6/6/93
*
- * $Id: os-u4_2.h,v 5.2.2.1 1992/02/09 15:10:54 jsp beta $
+ * $Id: os-u4_2.h,v 1.1.1.1 1994/05/26 05:22:10 rgrimes Exp $
*
* Ultrix 4.2 definitions for Amd (automounter)
* from Chris Lindblad <cjl@ai.mit.edu>
diff --git a/usr.sbin/amd/config/os-umax43.h b/usr.sbin/amd/config/os-umax43.h
index 3e80872f7edc..5312775a34f4 100644
--- a/usr.sbin/amd/config/os-umax43.h
+++ b/usr.sbin/amd/config/os-umax43.h
@@ -37,7 +37,7 @@
*
* @(#)os-umax43.h 8.1 (Berkeley) 6/6/93
*
- * $Id: os-umax43.h,v 5.2.2.1 1992/02/09 15:10:55 jsp beta $
+ * $Id: os-umax43.h,v 1.1.1.1 1994/05/26 05:22:09 rgrimes Exp $
*
* UMAX 4.3 definitions for Amd (automounter)
*/
diff --git a/usr.sbin/amd/config/os-utek.h b/usr.sbin/amd/config/os-utek.h
index eb1be04d1f3d..99e057e286c0 100644
--- a/usr.sbin/amd/config/os-utek.h
+++ b/usr.sbin/amd/config/os-utek.h
@@ -37,7 +37,7 @@
*
* @(#)os-utek.h 8.1 (Berkeley) 6/6/93
*
- * $Id: os-utek.h,v 5.2.2.1 1992/02/09 15:10:56 jsp beta $
+ * $Id: os-utek.h,v 1.1.1.1 1994/05/26 05:22:08 rgrimes Exp $
*
* Utek 4.0 definitions for Amd (automounter)
* from Bill Trost <trost%reed@cse.ogi.edu>
diff --git a/usr.sbin/amd/config/os-utx32.h b/usr.sbin/amd/config/os-utx32.h
index 29612c4bb2b8..29f28e0980de 100644
--- a/usr.sbin/amd/config/os-utx32.h
+++ b/usr.sbin/amd/config/os-utx32.h
@@ -1,4 +1,4 @@
-/* $Id: os-utx32.h,v 5.2.1.1 90/10/21 22:31:11 jsp Exp $ */
+/* $Id: os-utx32.h,v 1.1.1.1 1994/05/26 05:22:09 rgrimes Exp $ */
/*
* Gould UTX/32 definitions for Amd (automounter)
diff --git a/usr.sbin/amd/config/os-xinu43.h b/usr.sbin/amd/config/os-xinu43.h
index e85cea249eb7..a44d67d23a8d 100644
--- a/usr.sbin/amd/config/os-xinu43.h
+++ b/usr.sbin/amd/config/os-xinu43.h
@@ -37,7 +37,7 @@
*
* @(#)os-xinu43.h 8.1 (Berkeley) 6/6/93
*
- * $Id: os-xinu43.h,v 5.2.2.1 1992/02/09 15:10:58 jsp beta $
+ * $Id: os-xinu43.h,v 1.1.1.1 1994/05/26 05:22:08 rgrimes Exp $
*
* mt Xinu 4.3 (MORE/bsd) definitions for Amd (automounter)
* Should work on both Vax and HP ...
diff --git a/usr.sbin/amd/doc/Makefile b/usr.sbin/amd/doc/Makefile
index eba12704fb3f..3fe6e2ec875e 100644
--- a/usr.sbin/amd/doc/Makefile
+++ b/usr.sbin/amd/doc/Makefile
@@ -1,5 +1,5 @@
#
-# $Id: Makefile,v 1.1.1.1 1994/05/26 05:22:14 rgrimes Exp $
+# $Id: Makefile,v 1.2 1995/02/19 09:10:53 jkh Exp $
#
# Copyright (c) 1990 Jan-Simon Pendry
# Copyright (c) 1990 Imperial College of Science, Technology & Medicine
diff --git a/usr.sbin/amd/doc/amdref.texinfo b/usr.sbin/amd/doc/amdref.texinfo
index 89cd5e12c46a..310cf800a92e 100644
--- a/usr.sbin/amd/doc/amdref.texinfo
+++ b/usr.sbin/amd/doc/amdref.texinfo
@@ -37,7 +37,7 @@
@c
@c @(#)amdref.texinfo 8.1 (Berkeley) 6/6/93
@c
-@c $Id: amdref.texinfo,v 1.1.1.1 1994/05/26 05:22:11 rgrimes Exp $
+@c $Id: amdref.texinfo,v 1.2 1995/02/19 09:11:07 jkh Exp $
@c
@setfilename amdref.info
@c @setfilename /usr/local/emacs/info/amd
diff --git a/usr.sbin/amd/fsinfo/conf/csg_sun3 b/usr.sbin/amd/fsinfo/conf/csg_sun3
index 7d75db2e4e2a..68f8dfa9044f 100644
--- a/usr.sbin/amd/fsinfo/conf/csg_sun3
+++ b/usr.sbin/amd/fsinfo/conf/csg_sun3
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: csg_sun3,v 1.1.1.1 1994/05/26 05:22:19 rgrimes Exp $
// standard setups for DoC tsuns.
// note that no /var/spool/rwho is mounted as we now expect amd to do this as /vol/rwho
diff --git a/usr.sbin/amd/fsinfo/conf/csg_vax b/usr.sbin/amd/fsinfo/conf/csg_vax
index 356ff7b1c3e9..d3ec6ae0ff6c 100644
--- a/usr.sbin/amd/fsinfo/conf/csg_vax
+++ b/usr.sbin/amd/fsinfo/conf/csg_vax
@@ -1,4 +1,4 @@
-// $Id: csg_vax,v 1.1.1.1 1994/05/26 05:22:19 rgrimes Exp $
+// $Id: csg_vax,v 1.2 1995/02/04 20:01:53 phk Exp $
// csg vax config - really just for {s,r}vax
#define FSTYPE_UFS 4.2
diff --git a/usr.sbin/amd/fsinfo/conf/hosts/flamingo.doc.ic.ac.uk b/usr.sbin/amd/fsinfo/conf/hosts/flamingo.doc.ic.ac.uk
index 31f1be024a2f..94a96002ed14 100644
--- a/usr.sbin/amd/fsinfo/conf/hosts/flamingo.doc.ic.ac.uk
+++ b/usr.sbin/amd/fsinfo/conf/hosts/flamingo.doc.ic.ac.uk
@@ -1,5 +1,5 @@
// mkfsinfo for flamingo
-// $Id$
+// $Id: flamingo.doc.ic.ac.uk,v 1.1.1.1 1994/05/26 05:22:19 rgrimes Exp $
host flamingo.doc.ic.ac.uk
diff --git a/usr.sbin/amd/fsinfo/conf/hosts/gould.doc.ic.ac.uk b/usr.sbin/amd/fsinfo/conf/hosts/gould.doc.ic.ac.uk
index 8804c8e24eda..7d8325332877 100644
--- a/usr.sbin/amd/fsinfo/conf/hosts/gould.doc.ic.ac.uk
+++ b/usr.sbin/amd/fsinfo/conf/hosts/gould.doc.ic.ac.uk
@@ -1,5 +1,5 @@
// mkfsinfo for gould
-// $Id$
+// $Id: gould.doc.ic.ac.uk,v 1.1.1.1 1994/05/26 05:22:19 rgrimes Exp $
host gould.doc.ic.ac.uk
diff --git a/usr.sbin/amd/fsinfo/conf/hosts/ivax.doc.ic.ac.uk b/usr.sbin/amd/fsinfo/conf/hosts/ivax.doc.ic.ac.uk
index c8fcb5df88e3..d97a25bc59cc 100644
--- a/usr.sbin/amd/fsinfo/conf/hosts/ivax.doc.ic.ac.uk
+++ b/usr.sbin/amd/fsinfo/conf/hosts/ivax.doc.ic.ac.uk
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ivax.doc.ic.ac.uk,v 1.1.1.1 1994/05/26 05:22:20 rgrimes Exp $
// ivax
#define FSTYPE_UFS 4.2
diff --git a/usr.sbin/amd/fsinfo/conf/hosts/obsidian.doc.ic.ac.uk b/usr.sbin/amd/fsinfo/conf/hosts/obsidian.doc.ic.ac.uk
index dd9f0f7c67e9..1335827d9d10 100644
--- a/usr.sbin/amd/fsinfo/conf/hosts/obsidian.doc.ic.ac.uk
+++ b/usr.sbin/amd/fsinfo/conf/hosts/obsidian.doc.ic.ac.uk
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: obsidian.doc.ic.ac.uk,v 1.1.1.1 1994/05/26 05:22:20 rgrimes Exp $
// conf for obsidian
#define FSTYPE_UFS hfs
diff --git a/usr.sbin/amd/fsinfo/conf/hosts/pelican.doc.ic.ac.uk b/usr.sbin/amd/fsinfo/conf/hosts/pelican.doc.ic.ac.uk
index 1ffd8d7c78c2..d1f212750e0c 100644
--- a/usr.sbin/amd/fsinfo/conf/hosts/pelican.doc.ic.ac.uk
+++ b/usr.sbin/amd/fsinfo/conf/hosts/pelican.doc.ic.ac.uk
@@ -1,5 +1,5 @@
// mkfsinfo for pelican
-// $Id$
+// $Id: pelican.doc.ic.ac.uk,v 1.1.1.1 1994/05/26 05:22:20 rgrimes Exp $
host pelican.doc.ic.ac.uk
diff --git a/usr.sbin/amd/fsinfo/conf/hosts/rvax.doc.ic.ac.uk b/usr.sbin/amd/fsinfo/conf/hosts/rvax.doc.ic.ac.uk
index 05038ba532e0..2d33e06d06c2 100644
--- a/usr.sbin/amd/fsinfo/conf/hosts/rvax.doc.ic.ac.uk
+++ b/usr.sbin/amd/fsinfo/conf/hosts/rvax.doc.ic.ac.uk
@@ -1,4 +1,4 @@
-// $Id: rvax.doc.ic.ac.uk,v 1.1.1.1 1994/05/26 05:22:20 rgrimes Exp $
+// $Id: rvax.doc.ic.ac.uk,v 1.2 1995/02/04 20:01:59 phk Exp $
// rvax
#define FSTYPE_UFS 4.2
diff --git a/usr.sbin/amd/fsinfo/conf/hosts/sky.doc.ic.ac.uk b/usr.sbin/amd/fsinfo/conf/hosts/sky.doc.ic.ac.uk
index c0ed79aae586..c1d65bf20390 100644
--- a/usr.sbin/amd/fsinfo/conf/hosts/sky.doc.ic.ac.uk
+++ b/usr.sbin/amd/fsinfo/conf/hosts/sky.doc.ic.ac.uk
@@ -1,4 +1,4 @@
-// $Id: sky.doc.ic.ac.uk,v 1.1.1.1 1994/05/26 05:22:20 rgrimes Exp $
+// $Id: sky.doc.ic.ac.uk,v 1.2 1995/02/04 20:02:00 phk Exp $
// sky
#define FSTYPE_UFS 4.2
diff --git a/usr.sbin/amd/fsinfo/conf/hosts/svax.doc.ic.ac.uk b/usr.sbin/amd/fsinfo/conf/hosts/svax.doc.ic.ac.uk
index 795ef54cf315..4cf8cf3ba53e 100644
--- a/usr.sbin/amd/fsinfo/conf/hosts/svax.doc.ic.ac.uk
+++ b/usr.sbin/amd/fsinfo/conf/hosts/svax.doc.ic.ac.uk
@@ -1,4 +1,4 @@
-// $Id: svax.doc.ic.ac.uk,v 1.1.1.1 1994/05/26 05:22:20 rgrimes Exp $
+// $Id: svax.doc.ic.ac.uk,v 1.2 1995/02/04 20:02:01 phk Exp $
// svax
#define FSTYPE_UFS 4.2
diff --git a/usr.sbin/amd/fsinfo/conf/hosts/tsunfs.doc.ic.ac.uk b/usr.sbin/amd/fsinfo/conf/hosts/tsunfs.doc.ic.ac.uk
index b09db9dc898c..56200df59989 100644
--- a/usr.sbin/amd/fsinfo/conf/hosts/tsunfs.doc.ic.ac.uk
+++ b/usr.sbin/amd/fsinfo/conf/hosts/tsunfs.doc.ic.ac.uk
@@ -1,5 +1,5 @@
// mkfsinfo for tsunfs
-// $Id$
+// $Id: tsunfs.doc.ic.ac.uk,v 1.1.1.1 1994/05/26 05:22:22 rgrimes Exp $
host tsunfs.doc.ic.ac.uk
diff --git a/usr.sbin/amd/fsinfo/conf/hosts/whoops.doc.ic.ac.uk b/usr.sbin/amd/fsinfo/conf/hosts/whoops.doc.ic.ac.uk
index 831053bd4854..b073044b5583 100644
--- a/usr.sbin/amd/fsinfo/conf/hosts/whoops.doc.ic.ac.uk
+++ b/usr.sbin/amd/fsinfo/conf/hosts/whoops.doc.ic.ac.uk
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: whoops.doc.ic.ac.uk,v 1.1.1.1 1994/05/26 05:22:22 rgrimes Exp $
// sm's bastardised csg_sun3
// note that no /var/spool/rwho is mounted as we now expect amd to do this as /vol/rwho
diff --git a/usr.sbin/amd/fsinfo/fsi_analyze.c b/usr.sbin/amd/fsinfo/fsi_analyze.c
index d436a49ca4b6..4d495baeeb9f 100644
--- a/usr.sbin/amd/fsinfo/fsi_analyze.c
+++ b/usr.sbin/amd/fsinfo/fsi_analyze.c
@@ -37,7 +37,7 @@
*
* @(#)fsi_analyze.c 8.1 (Berkeley) 6/6/93
*
- * $Id: fsi_analyze.c,v 5.2.2.1 1992/02/09 15:09:41 jsp beta $
+ * $Id: fsi_analyze.c,v 1.1.1.1 1994/05/26 05:22:18 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/fsinfo/fsi_data.h b/usr.sbin/amd/fsinfo/fsi_data.h
index 5ee39c20d38b..c56136275f33 100644
--- a/usr.sbin/amd/fsinfo/fsi_data.h
+++ b/usr.sbin/amd/fsinfo/fsi_data.h
@@ -37,7 +37,7 @@
*
* @(#)fsi_data.h 8.1 (Berkeley) 6/6/93
*
- * $Id: fsi_data.h,v 1.1.1.1 1994/05/26 05:22:18 rgrimes Exp $
+ * $Id: fsi_data.h,v 1.2 1995/05/30 03:46:09 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/fsinfo/fsi_dict.c b/usr.sbin/amd/fsinfo/fsi_dict.c
index 3aced3da7677..83663dd55b8f 100644
--- a/usr.sbin/amd/fsinfo/fsi_dict.c
+++ b/usr.sbin/amd/fsinfo/fsi_dict.c
@@ -37,7 +37,7 @@
*
* @(#)fsi_dict.c 8.1 (Berkeley) 6/6/93
*
- * $Id: fsi_dict.c,v 1.1.1.1 1994/05/26 05:22:17 rgrimes Exp $
+ * $Id: fsi_dict.c,v 1.2 1995/05/30 03:46:10 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/fsinfo/fsi_gram.y b/usr.sbin/amd/fsinfo/fsi_gram.y
index b4aa2459e69d..285fbc0dd3e2 100644
--- a/usr.sbin/amd/fsinfo/fsi_gram.y
+++ b/usr.sbin/amd/fsinfo/fsi_gram.y
@@ -37,7 +37,7 @@
*
* @(#)fsi_gram.y 8.1 (Berkeley) 6/6/93
*
- * $Id: fsi_gram.y,v 5.2.2.1 1992/02/09 15:09:35 jsp beta $
+ * $Id: fsi_gram.y,v 1.1.1.1 1994/05/26 05:22:17 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/fsinfo/fsi_lex.l b/usr.sbin/amd/fsinfo/fsi_lex.l
index f7dcbbc81853..573555fae5c2 100644
--- a/usr.sbin/amd/fsinfo/fsi_lex.l
+++ b/usr.sbin/amd/fsinfo/fsi_lex.l
@@ -38,7 +38,7 @@
*
* @(#)fsi_lex.l 8.2 (Berkeley) 2/17/94
*
- * $Id: fsi_lex.l,v 1.1.1.1 1994/05/26 05:22:17 rgrimes Exp $
+ * $Id: fsi_lex.l,v 1.2 1995/05/08 16:50:19 gpalmer Exp $
*
*/
diff --git a/usr.sbin/amd/fsinfo/fsi_util.c b/usr.sbin/amd/fsinfo/fsi_util.c
index f6371ca0b09d..41c1870c888e 100644
--- a/usr.sbin/amd/fsinfo/fsi_util.c
+++ b/usr.sbin/amd/fsinfo/fsi_util.c
@@ -34,7 +34,7 @@
*
* @(#)fsi_util.c 8.1 (Berkeley) 6/6/93
*
- * $Id: fsi_util.c,v 1.1.1.1 1994/05/26 05:22:18 rgrimes Exp $
+ * $Id: fsi_util.c,v 1.2 1995/05/30 03:46:11 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/fsinfo/fsinfo.c b/usr.sbin/amd/fsinfo/fsinfo.c
index a4b867b92634..46b531c3da48 100644
--- a/usr.sbin/amd/fsinfo/fsinfo.c
+++ b/usr.sbin/amd/fsinfo/fsinfo.c
@@ -37,7 +37,7 @@
*
* @(#)fsinfo.c 8.1 (Berkeley) 6/6/93
*
- * $Id: fsinfo.c,v 5.2.2.1 1992/02/09 15:09:33 jsp beta $
+ * $Id: fsinfo.c,v 1.1.1.1 1994/05/26 05:22:18 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/fsinfo/fsinfo.h b/usr.sbin/amd/fsinfo/fsinfo.h
index 0d07e21b0f87..d45baafc348a 100644
--- a/usr.sbin/amd/fsinfo/fsinfo.h
+++ b/usr.sbin/amd/fsinfo/fsinfo.h
@@ -37,7 +37,7 @@
*
* @(#)fsinfo.h 8.1 (Berkeley) 6/6/93
*
- * $Id: fsinfo.h,v 5.2.2.1 1992/02/09 15:09:51 jsp beta $
+ * $Id: fsinfo.h,v 1.1.1.1 1994/05/26 05:22:18 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/fsinfo/wr_atab.c b/usr.sbin/amd/fsinfo/wr_atab.c
index 95e942644bb7..987cf9ea0123 100644
--- a/usr.sbin/amd/fsinfo/wr_atab.c
+++ b/usr.sbin/amd/fsinfo/wr_atab.c
@@ -37,7 +37,7 @@
*
* @(#)wr_atab.c 8.1 (Berkeley) 6/6/93
*
- * $Id: wr_atab.c,v 1.1.1.1 1994/05/26 05:22:18 rgrimes Exp $
+ * $Id: wr_atab.c,v 1.2 1995/05/30 03:46:12 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/fsinfo/wr_bparam.c b/usr.sbin/amd/fsinfo/wr_bparam.c
index 9ef0fcd8f088..8d3dff1b0cb1 100644
--- a/usr.sbin/amd/fsinfo/wr_bparam.c
+++ b/usr.sbin/amd/fsinfo/wr_bparam.c
@@ -37,7 +37,7 @@
*
* @(#)wr_bparam.c 8.1 (Berkeley) 6/6/93
*
- * $Id: wr_bparam.c,v 5.2.2.1 1992/02/09 15:09:46 jsp beta $
+ * $Id: wr_bparam.c,v 1.1.1.1 1994/05/26 05:22:18 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/fsinfo/wr_dumpset.c b/usr.sbin/amd/fsinfo/wr_dumpset.c
index d118feb83d39..8b6711c15897 100644
--- a/usr.sbin/amd/fsinfo/wr_dumpset.c
+++ b/usr.sbin/amd/fsinfo/wr_dumpset.c
@@ -37,7 +37,7 @@
*
* @(#)wr_dumpset.c 8.1 (Berkeley) 6/6/93
*
- * $Id: wr_dumpset.c,v 5.2.2.1 1992/02/09 15:09:47 jsp beta $
+ * $Id: wr_dumpset.c,v 1.1.1.1 1994/05/26 05:22:18 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/fsinfo/wr_exportfs.c b/usr.sbin/amd/fsinfo/wr_exportfs.c
index 982b538fd850..38bfdc597a77 100644
--- a/usr.sbin/amd/fsinfo/wr_exportfs.c
+++ b/usr.sbin/amd/fsinfo/wr_exportfs.c
@@ -37,7 +37,7 @@
*
* @(#)wr_exportfs.c 8.1 (Berkeley) 6/6/93
*
- * $Id: wr_exportfs.c,v 5.2.2.1 1992/02/09 15:09:48 jsp beta $
+ * $Id: wr_exportfs.c,v 1.1.1.1 1994/05/26 05:22:18 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/fsinfo/wr_fstab.c b/usr.sbin/amd/fsinfo/wr_fstab.c
index 85d36876c9e8..1505ece626b2 100644
--- a/usr.sbin/amd/fsinfo/wr_fstab.c
+++ b/usr.sbin/amd/fsinfo/wr_fstab.c
@@ -37,7 +37,7 @@
*
* @(#)wr_fstab.c 8.1 (Berkeley) 6/6/93
*
- * $Id: wr_fstab.c,v 5.2.2.1 1992/02/09 15:09:49 jsp beta $
+ * $Id: wr_fstab.c,v 1.1.1.1 1994/05/26 05:22:18 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/include/am.h b/usr.sbin/amd/include/am.h
index 14a728dbb7e9..fc2bfac71dca 100644
--- a/usr.sbin/amd/include/am.h
+++ b/usr.sbin/amd/include/am.h
@@ -37,7 +37,7 @@
*
* @(#)am.h 5.6 (Berkeley) 6/6/93
*
- * $Id: am.h,v 5.2.2.1 1992/02/09 15:09:54 jsp beta $
+ * $Id: am.h,v 1.1.1.1 1994/05/26 05:22:06 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/include/config.h b/usr.sbin/amd/include/config.h
index 09b77bf95f8e..14af42295c5b 100644
--- a/usr.sbin/amd/include/config.h
+++ b/usr.sbin/amd/include/config.h
@@ -37,7 +37,7 @@
*
* @(#)config.h 8.1 (Berkeley) 6/6/93
*
- * $Id: config.h,v 5.2.2.1 1992/02/09 15:09:56 jsp beta $
+ * $Id: config.h,v 1.1.1.1 1994/05/26 05:22:06 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/include/fstype.h b/usr.sbin/amd/include/fstype.h
index 03493d25110f..e939ce7afadb 100644
--- a/usr.sbin/amd/include/fstype.h
+++ b/usr.sbin/amd/include/fstype.h
@@ -37,7 +37,7 @@
*
* @(#)fstype.h 8.1 (Berkeley) 6/6/93
*
- * $Id: fstype.h,v 5.2.2.1 1992/02/09 15:09:57 jsp beta $
+ * $Id: fstype.h,v 1.1.1.1 1994/05/26 05:22:06 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/include/uwait.h b/usr.sbin/amd/include/uwait.h
index c3f8cbefb149..e34f16b349c7 100644
--- a/usr.sbin/amd/include/uwait.h
+++ b/usr.sbin/amd/include/uwait.h
@@ -37,7 +37,7 @@
*
* @(#)uwait.h 8.1 (Berkeley) 6/6/93
*
- * $Id: uwait.h,v 5.2.2.1 1992/02/09 15:10:01 jsp beta $
+ * $Id: uwait.h,v 1.1.1.1 1994/05/26 05:22:06 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/mk-amd-map/mk-amd-map.c b/usr.sbin/amd/mk-amd-map/mk-amd-map.c
index c2dfb71b12c6..79fe749fa6f9 100644
--- a/usr.sbin/amd/mk-amd-map/mk-amd-map.c
+++ b/usr.sbin/amd/mk-amd-map/mk-amd-map.c
@@ -37,7 +37,7 @@
*
* @(#)mk-amd-map.c 8.1 (Berkeley) 6/28/93
*
- * $Id: mk-amd-map.c,v 5.2.2.1 1992/02/09 15:09:18 jsp beta $
+ * $Id: mk-amd-map.c,v 1.1.1.1 1994/05/26 05:22:04 rgrimes Exp $
*/
/*
@@ -53,7 +53,7 @@ char copyright[] = "\
#endif /* not lint */
#ifndef lint
-static char rcsid[] = "$Id: mk-amd-map.c,v 5.2.2.1 1992/02/09 15:09:18 jsp beta $";
+static char rcsid[] = "$Id: mk-amd-map.c,v 1.1.1.1 1994/05/26 05:22:04 rgrimes Exp $";
static char sccsid[] = "@(#)mk-amd-map.c 8.1 (Berkeley) 6/28/93";
#endif /* not lint */
diff --git a/usr.sbin/amd/rpcx/amq.h b/usr.sbin/amd/rpcx/amq.h
index 7ec4d5512026..0865a94601d8 100644
--- a/usr.sbin/amd/rpcx/amq.h
+++ b/usr.sbin/amd/rpcx/amq.h
@@ -37,7 +37,7 @@
*
* @(#)amq.h 8.1 (Berkeley) 6/6/93
*
- * $Id: amq.h,v 5.2.2.1 1992/02/09 15:09:22 jsp beta $
+ * $Id: amq.h,v 1.1.1.1 1994/05/26 05:22:05 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/rpcx/amq.x b/usr.sbin/amd/rpcx/amq.x
index d75805dc21d5..59e5322f1eca 100644
--- a/usr.sbin/amd/rpcx/amq.x
+++ b/usr.sbin/amd/rpcx/amq.x
@@ -37,7 +37,7 @@
*
* @(#)amq.x 8.1 (Berkeley) 6/6/93
*
- * $Id: amq.x,v 5.2.2.1 1992/02/09 15:09:20 jsp beta $
+ * $Id: amq.x,v 1.1.1.1 1994/05/26 05:22:05 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/rpcx/amq_clnt.c b/usr.sbin/amd/rpcx/amq_clnt.c
index 5b70d1171cff..8ce237281392 100644
--- a/usr.sbin/amd/rpcx/amq_clnt.c
+++ b/usr.sbin/amd/rpcx/amq_clnt.c
@@ -37,7 +37,7 @@
*
* @(#)amq_clnt.c 8.1 (Berkeley) 6/6/93
*
- * $Id: amq_clnt.c,v 5.2.2.1 1992/02/09 15:09:24 jsp beta $
+ * $Id: amq_clnt.c,v 1.1.1.1 1994/05/26 05:22:05 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/rpcx/amq_svc.c b/usr.sbin/amd/rpcx/amq_svc.c
index 0d3599f07ce2..3dd243340459 100644
--- a/usr.sbin/amd/rpcx/amq_svc.c
+++ b/usr.sbin/amd/rpcx/amq_svc.c
@@ -37,7 +37,7 @@
*
* @(#)amq_svc.c 8.1 (Berkeley) 6/6/93
*
- * $Id: amq_svc.c,v 5.2.2.1 1992/02/09 15:09:26 jsp beta $
+ * $Id: amq_svc.c,v 1.1.1.1 1994/05/26 05:22:05 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/rpcx/amq_xdr.c b/usr.sbin/amd/rpcx/amq_xdr.c
index 8a123a711a6a..832de80be183 100644
--- a/usr.sbin/amd/rpcx/amq_xdr.c
+++ b/usr.sbin/amd/rpcx/amq_xdr.c
@@ -37,7 +37,7 @@
*
* @(#)amq_xdr.c 8.1 (Berkeley) 6/6/93
*
- * $Id: amq_xdr.c,v 5.2.2.1 1992/02/09 15:09:23 jsp beta $
+ * $Id: amq_xdr.c,v 1.1.1.1 1994/05/26 05:22:05 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/rpcx/mount.h b/usr.sbin/amd/rpcx/mount.h
index d30b0c3809dd..0281fb730e43 100644
--- a/usr.sbin/amd/rpcx/mount.h
+++ b/usr.sbin/amd/rpcx/mount.h
@@ -37,7 +37,7 @@
*
* @(#)mount.h 8.1 (Berkeley) 6/6/93
*
- * $Id: mount.h,v 5.2.2.1 1992/02/09 15:09:27 jsp beta $
+ * $Id: mount.h,v 1.1.1.1 1994/05/26 05:22:05 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/rpcx/mount_xdr.c b/usr.sbin/amd/rpcx/mount_xdr.c
index f8d8f57f0fca..25ea5fef8f31 100644
--- a/usr.sbin/amd/rpcx/mount_xdr.c
+++ b/usr.sbin/amd/rpcx/mount_xdr.c
@@ -37,7 +37,7 @@
*
* @(#)mount_xdr.c 8.1 (Berkeley) 6/6/93
*
- * $Id: mount_xdr.c,v 5.2.2.1 1992/02/09 15:09:28 jsp beta $
+ * $Id: mount_xdr.c,v 1.1.1.1 1994/05/26 05:22:05 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/rpcx/nfs_prot.h b/usr.sbin/amd/rpcx/nfs_prot.h
index 62a75f7993fa..da660d0a5261 100644
--- a/usr.sbin/amd/rpcx/nfs_prot.h
+++ b/usr.sbin/amd/rpcx/nfs_prot.h
@@ -37,7 +37,7 @@
*
* @(#)nfs_prot.h 8.1 (Berkeley) 6/6/93
*
- * $Id: nfs_prot.h,v 5.2.2.1 1992/02/09 15:09:29 jsp beta $
+ * $Id: nfs_prot.h,v 1.1.1.1 1994/05/26 05:22:05 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/rpcx/nfs_prot_svc.c b/usr.sbin/amd/rpcx/nfs_prot_svc.c
index 21e47e339962..ab68f7b13809 100644
--- a/usr.sbin/amd/rpcx/nfs_prot_svc.c
+++ b/usr.sbin/amd/rpcx/nfs_prot_svc.c
@@ -37,7 +37,7 @@
*
* @(#)nfs_prot_svc.c 8.1 (Berkeley) 6/6/93
*
- * $Id: nfs_prot_svc.c,v 5.2.2.1 1992/02/09 15:09:30 jsp beta $
+ * $Id: nfs_prot_svc.c,v 1.1.1.1 1994/05/26 05:22:05 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/rpcx/nfs_prot_xdr.c b/usr.sbin/amd/rpcx/nfs_prot_xdr.c
index 1786d01bd642..91458be0428f 100644
--- a/usr.sbin/amd/rpcx/nfs_prot_xdr.c
+++ b/usr.sbin/amd/rpcx/nfs_prot_xdr.c
@@ -37,7 +37,7 @@
*
* @(#)nfs_prot_xdr.c 8.1 (Berkeley) 6/6/93
*
- * $Id: nfs_prot_xdr.c,v 5.2.2.1 1992/02/09 15:09:32 jsp beta $
+ * $Id: nfs_prot_xdr.c,v 1.1.1.1 1994/05/26 05:22:05 rgrimes Exp $
*
*/
diff --git a/usr.sbin/amd/text/INSTALL b/usr.sbin/amd/text/INSTALL
index d35aaaabaae1..df9b2bb547af 100644
--- a/usr.sbin/amd/text/INSTALL
+++ b/usr.sbin/amd/text/INSTALL
@@ -191,4 +191,4 @@ mapping root to nobody.
If anything interesting happened, eg it didn't work, please report it to me
-- Jan-Simon Pendry <jsp@doc.ic.ac.uk> -- as detailed in the README file.
-$Id: INSTALL,v 5.2.2.2 1992/05/31 16:49:22 jsp Exp $
+$Id: INSTALL,v 1.1.1.1 1994/05/26 05:22:16 rgrimes Exp $
diff --git a/usr.sbin/amd/text/README b/usr.sbin/amd/text/README
index 01d3a8b11ff7..298f80fa3331 100644
--- a/usr.sbin/amd/text/README
+++ b/usr.sbin/amd/text/README
@@ -34,4 +34,4 @@ being used. Thanks.
The manual page (amd/amd.8) only lists the command line options. See the
texinfo document doc/amdref.texinfo for a more detailed discussion.
-$Id: README,v 5.2.2.1 1992/02/09 15:11:35 jsp beta $
+$Id: README,v 1.1.1.1 1994/05/26 05:22:16 rgrimes Exp $
diff --git a/usr.sbin/amd/text/amd.start.ex b/usr.sbin/amd/text/amd.start.ex
index d7cdc1f7ddae..28bf7ee965b8 100644
--- a/usr.sbin/amd/text/amd.start.ex
+++ b/usr.sbin/amd/text/amd.start.ex
@@ -40,7 +40,7 @@
#
# Start amd
#
-# $Id: amd.start.ex,v 5.2.2.1 1992/02/09 15:11:32 jsp beta $
+# $Id: amd.start.ex,v 1.1.1.1 1994/05/26 05:22:16 rgrimes Exp $
#
PATH=/usr/sbin:/bin:/usr/bin:$PATH export PATH
diff --git a/usr.sbin/bootparamd/bootparamd/Makefile b/usr.sbin/bootparamd/bootparamd/Makefile
index ff31e7e053e0..0b7b4b1fb9a5 100644
--- a/usr.sbin/bootparamd/bootparamd/Makefile
+++ b/usr.sbin/bootparamd/bootparamd/Makefile
@@ -1,5 +1,5 @@
# from: @(#)Makefile 5.8 (Berkeley) 7/28/90
-# $Id: Makefile,v 1.6 1995/07/04 08:38:54 bde Exp $
+# $Id: Makefile,v 1.5.4.1 1995/10/06 10:11:44 davidg Exp $
PROG= bootparamd
SRCS= bootparam_prot_xdr.c bootparam_prot_svc.c bootparamd.c main.c
diff --git a/usr.sbin/bootparamd/bootparamd/bootparamd.8 b/usr.sbin/bootparamd/bootparamd/bootparamd.8
index 9a1986805b29..9a1986805b29 100644..100755
--- a/usr.sbin/bootparamd/bootparamd/bootparamd.8
+++ b/usr.sbin/bootparamd/bootparamd/bootparamd.8
diff --git a/usr.sbin/bootparamd/bootparamd/bootparamd.c b/usr.sbin/bootparamd/bootparamd/bootparamd.c
index 02c2f67ae4a9..32614e1c7d36 100644
--- a/usr.sbin/bootparamd/bootparamd/bootparamd.c
+++ b/usr.sbin/bootparamd/bootparamd/bootparamd.c
@@ -5,7 +5,7 @@ use and modify. Please send modifications and/or suggestions + bug fixes to
Klas Heggemann <klas@nada.kth.se>
- $Id: bootparamd.c,v 1.2 1995/05/30 03:46:27 rgrimes Exp $
+ $Id: bootparamd.c,v 1.2.4.1 1995/08/26 11:32:30 davidg Exp $
*/
diff --git a/usr.sbin/bootparamd/bootparamd/main.c b/usr.sbin/bootparamd/bootparamd/main.c
index 0a3618a064dd..3c74db5d2a9f 100644
--- a/usr.sbin/bootparamd/bootparamd/main.c
+++ b/usr.sbin/bootparamd/bootparamd/main.c
@@ -6,7 +6,7 @@ use and modify. Please send modifications and/or suggestions + bug fixes to
Klas Heggemann <klas@nada.kth.se>
- $Id: main.c,v 1.3 1995/07/25 22:44:14 wpaul Exp $
+ $Id: main.c,v 1.2.4.1 1995/08/26 11:32:31 davidg Exp $
*/
diff --git a/usr.sbin/bootparamd/callbootd/Makefile b/usr.sbin/bootparamd/callbootd/Makefile
index f9123e6b1c18..07912f55a7b3 100644
--- a/usr.sbin/bootparamd/callbootd/Makefile
+++ b/usr.sbin/bootparamd/callbootd/Makefile
@@ -1,5 +1,5 @@
# from: @(#)Makefile 5.8 (Berkeley) 7/28/90
-# $Id: Makefile,v 1.6 1995/07/04 08:39:07 bde Exp $
+# $Id: Makefile,v 1.5.4.1 1995/10/06 10:12:17 davidg Exp $
PROG= callbootd
SRCS= bootparam_prot_xdr.c bootparam_prot_clnt.c callbootd.c
diff --git a/usr.sbin/bootparamd/callbootd/callbootd.c b/usr.sbin/bootparamd/callbootd/callbootd.c
index 18cfac355e1f..bcb1eb3bdabf 100644
--- a/usr.sbin/bootparamd/callbootd/callbootd.c
+++ b/usr.sbin/bootparamd/callbootd/callbootd.c
@@ -5,7 +5,7 @@ use and modify. Please send modifications and/or suggestions + bug fixes to
Klas Heggemann <klas@nada.kth.se>
- $Id: callbootd.c,v 1.2 1995/03/26 03:15:39 wpaul Exp $
+ $Id: callbootd.c,v 1.3 1995/05/30 03:46:30 rgrimes Exp $
*/
diff --git a/usr.sbin/cron/cron/compat.h b/usr.sbin/cron/cron/compat.h
index ca851d17e64b..549b2e9fcac9 100644
--- a/usr.sbin/cron/cron/compat.h
+++ b/usr.sbin/cron/cron/compat.h
@@ -16,7 +16,7 @@
*/
/*
- * $Id: compat.h,v 1.1.1.1 1994/08/27 13:43:04 jkh Exp $
+ * $Id: compat.h,v 1.2 1995/04/29 15:16:41 ache Exp $
*/
#ifndef __P
diff --git a/usr.sbin/cron/cron/config.h b/usr.sbin/cron/cron/config.h
index 640e001832f8..9d28b76203de 100644
--- a/usr.sbin/cron/cron/config.h
+++ b/usr.sbin/cron/cron/config.h
@@ -17,7 +17,7 @@
/* config.h - configurables for Vixie Cron
*
- * $Id: config.h,v 1.3 1995/04/14 21:54:16 ache Exp $
+ * $Id: config.h,v 1.4 1995/05/09 12:48:05 rgrimes Exp $
*/
#if !defined(_PATH_SENDMAIL)
diff --git a/usr.sbin/cron/cron/cron.8 b/usr.sbin/cron/cron/cron.8
index 1d6dcdad70f3..2e3c67e9f354 100644
--- a/usr.sbin/cron/cron/cron.8
+++ b/usr.sbin/cron/cron/cron.8
@@ -15,7 +15,7 @@
.\" * Paul Vixie <paul@vix.com> uunet!decwrl!vixie!paul
.\" */
.\"
-.\" $Id: cron.8,v 2.2 1993/12/28 08:34:43 vixie Exp $
+.\" $Id: cron.8,v 1.1.1.1 1994/08/27 13:43:03 jkh Exp $
.\"
.TH CRON 8 "20 December 1993"
.UC 4
diff --git a/usr.sbin/cron/cron/cron.c b/usr.sbin/cron/cron/cron.c
index 624c37ac342d..7bbdcd95ca1e 100644
--- a/usr.sbin/cron/cron/cron.c
+++ b/usr.sbin/cron/cron/cron.c
@@ -16,7 +16,7 @@
*/
#if !defined(lint) && !defined(LINT)
-static char rcsid[] = "$Id: cron.c,v 2.11 1994/01/15 20:43:43 vixie Exp $";
+static char rcsid[] = "$Id: cron.c,v 1.1.1.1 1994/08/27 13:43:03 jkh Exp $";
#endif
diff --git a/usr.sbin/cron/cron/cron.h b/usr.sbin/cron/cron/cron.h
index 66de64bcbe56..517b2b163784 100644
--- a/usr.sbin/cron/cron/cron.h
+++ b/usr.sbin/cron/cron/cron.h
@@ -17,7 +17,7 @@
/* cron.h - header for vixie's cron
*
- * $Id: cron.h,v 1.1.1.1 1994/08/27 13:43:04 jkh Exp $
+ * $Id: cron.h,v 1.2 1995/05/30 03:46:59 rgrimes Exp $
*
* vix 14nov88 [rest of log is in RCS]
* vix 14jan87 [0 or 7 can be sunday; thanks, mwm@berkeley]
diff --git a/usr.sbin/cron/cron/database.c b/usr.sbin/cron/cron/database.c
index 843401e3f76f..702bdbb85ec2 100644
--- a/usr.sbin/cron/cron/database.c
+++ b/usr.sbin/cron/cron/database.c
@@ -16,7 +16,7 @@
*/
#if !defined(lint) && !defined(LINT)
-static char rcsid[] = "$Id: database.c,v 2.8 1994/01/15 20:43:43 vixie Exp $";
+static char rcsid[] = "$Id: database.c,v 1.1.1.1 1994/08/27 13:43:03 jkh Exp $";
#endif
/* vix 26jan87 [RCS has the log]
diff --git a/usr.sbin/cron/cron/do_command.c b/usr.sbin/cron/cron/do_command.c
index b646d1278910..29db696fd03d 100644
--- a/usr.sbin/cron/cron/do_command.c
+++ b/usr.sbin/cron/cron/do_command.c
@@ -16,7 +16,7 @@
*/
#if !defined(lint) && !defined(LINT)
-static char rcsid[] = "$Id: do_command.c,v 1.6 1995/09/10 13:02:56 joerg Exp $";
+static char rcsid[] = "$Id: do_command.c,v 1.5.4.1 1995/10/06 10:28:43 davidg Exp $";
#endif
diff --git a/usr.sbin/cron/cron/job.c b/usr.sbin/cron/cron/job.c
index adaa072fd48a..f63db4770084 100644
--- a/usr.sbin/cron/cron/job.c
+++ b/usr.sbin/cron/cron/job.c
@@ -16,7 +16,7 @@
*/
#if !defined(lint) && !defined(LINT)
-static char rcsid[] = "$Id: job.c,v 1.6 1994/01/15 20:43:43 vixie Exp $";
+static char rcsid[] = "$Id: job.c,v 1.1.1.1 1994/08/27 13:43:03 jkh Exp $";
#endif
diff --git a/usr.sbin/cron/cron/pathnames.h b/usr.sbin/cron/cron/pathnames.h
index 5ed9a9feba13..bb08fd9d1606 100644
--- a/usr.sbin/cron/cron/pathnames.h
+++ b/usr.sbin/cron/cron/pathnames.h
@@ -16,7 +16,7 @@
*/
/*
- * $Id: pathnames.h,v 1.1.1.1 1994/08/27 13:43:04 jkh Exp $
+ * $Id: pathnames.h,v 1.1.1.1.6.1 1995/08/26 11:35:17 davidg Exp $
*/
#if (defined(BSD)) && (BSD >= 199103) || defined(__linux) || defined(AIX)
diff --git a/usr.sbin/cron/cron/popen.c b/usr.sbin/cron/cron/popen.c
index 55708bb2400e..179f470a5a19 100644
--- a/usr.sbin/cron/cron/popen.c
+++ b/usr.sbin/cron/cron/popen.c
@@ -24,7 +24,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: popen.c,v 1.5 1994/01/15 20:43:43 vixie Exp $";
+static char rcsid[] = "$Id: popen.c,v 1.1.1.1 1994/08/27 13:43:03 jkh Exp $";
static char sccsid[] = "@(#)popen.c 5.7 (Berkeley) 2/14/89";
#endif /* not lint */
diff --git a/usr.sbin/cron/cron/user.c b/usr.sbin/cron/cron/user.c
index 5f7ab137761d..b6ac48ae0bb1 100644
--- a/usr.sbin/cron/cron/user.c
+++ b/usr.sbin/cron/cron/user.c
@@ -16,7 +16,7 @@
*/
#if !defined(lint) && !defined(LINT)
-static char rcsid[] = "$Id: user.c,v 1.1.1.1 1994/08/27 13:43:03 jkh Exp $";
+static char rcsid[] = "$Id: user.c,v 1.2 1995/05/30 03:47:01 rgrimes Exp $";
#endif
/* vix 26jan87 [log is in RCS file]
diff --git a/usr.sbin/cron/crontab/crontab.1 b/usr.sbin/cron/crontab/crontab.1
index c3c39431f7ae..b87a68ff1107 100644
--- a/usr.sbin/cron/crontab/crontab.1
+++ b/usr.sbin/cron/crontab/crontab.1
@@ -15,7 +15,7 @@
.\" * Paul Vixie <paul@vix.com> uunet!decwrl!vixie!paul
.\" */
.\"
-.\" $Id: crontab.1,v 2.4 1993/12/31 10:47:33 vixie Exp $
+.\" $Id: crontab.1,v 1.1.1.1 1994/08/27 13:43:04 jkh Exp $
.\"
.TH CRONTAB 1 "29 December 1993"
.UC 4
diff --git a/usr.sbin/cron/crontab/crontab.5 b/usr.sbin/cron/crontab/crontab.5
index 01b52f03fb31..6806b6a9917e 100644
--- a/usr.sbin/cron/crontab/crontab.5
+++ b/usr.sbin/cron/crontab/crontab.5
@@ -15,7 +15,7 @@
.\" * Paul Vixie <paul@vix.com> uunet!decwrl!vixie!paul
.\" */
.\"
-.\" $Id: crontab.5,v 2.4 1994/01/15 20:43:43 vixie Exp $
+.\" $Id: crontab.5,v 1.1.1.1 1994/08/27 13:43:04 jkh Exp $
.\"
.TH CRONTAB 5 "24 January 1994"
.UC 4
diff --git a/usr.sbin/cron/crontab/crontab.c b/usr.sbin/cron/crontab/crontab.c
index 0af18c32c1ea..e4cbc8a8f795 100644
--- a/usr.sbin/cron/crontab/crontab.c
+++ b/usr.sbin/cron/crontab/crontab.c
@@ -17,7 +17,7 @@
*/
#if !defined(lint) && !defined(LINT)
-static char rcsid[] = "$Id: crontab.c,v 1.2 1994/12/21 11:06:08 ache Exp $";
+static char rcsid[] = "$Id: crontab.c,v 1.3 1995/05/30 03:47:04 rgrimes Exp $";
#endif
/* crontab - install and manage per-user crontab files
diff --git a/usr.sbin/cron/doc/CONVERSION b/usr.sbin/cron/doc/CONVERSION
index b86427d72cc8..e8c2846b2fff 100644
--- a/usr.sbin/cron/doc/CONVERSION
+++ b/usr.sbin/cron/doc/CONVERSION
@@ -1,4 +1,4 @@
-$Id: CONVERSION,v 2.2 1993/12/28 08:34:43 vixie Exp $
+$Id: CONVERSION,v 1.1.1.1 1994/08/27 13:43:03 jkh Exp $
Conversion of BSD 4.[23] crontab files:
diff --git a/usr.sbin/cron/doc/FEATURES b/usr.sbin/cron/doc/FEATURES
index 209b1e99a96c..88255eeda807 100644
--- a/usr.sbin/cron/doc/FEATURES
+++ b/usr.sbin/cron/doc/FEATURES
@@ -1,4 +1,4 @@
-$Id: FEATURES,v 2.1 1993/12/28 08:34:43 vixie Exp $
+$Id: FEATURES,v 1.1.1.1 1994/08/27 13:43:03 jkh Exp $
Features of Vixie's cron relative to BSD 4.[23] and SysV crons:
diff --git a/usr.sbin/cron/doc/INSTALL b/usr.sbin/cron/doc/INSTALL
index cc660ffdaa69..9b128611a908 100644
--- a/usr.sbin/cron/doc/INSTALL
+++ b/usr.sbin/cron/doc/INSTALL
@@ -15,7 +15,7 @@
* Paul Vixie <paul@vix.com> uunet!decwrl!vixie!paul
*/
-$Id: INSTALL,v 2.5 1994/01/15 20:43:43 vixie Exp $
+$Id: INSTALL,v 1.1.1.1 1994/08/27 13:43:03 jkh Exp $
Read the comments at the top of the Makefile, then edit the area marked
'configurable stuff'.
diff --git a/usr.sbin/cron/doc/MAIL b/usr.sbin/cron/doc/MAIL
index b066e7e8e39d..76d200ee9d61 100644
--- a/usr.sbin/cron/doc/MAIL
+++ b/usr.sbin/cron/doc/MAIL
@@ -3,7 +3,7 @@
version of cron. it is presented here for its entertainment value.
--vix ]
-$Id: MAIL,v 1.1 1993/12/28 08:30:36 vixie Exp $
+$Id: MAIL,v 1.1.1.1 1994/08/27 13:43:03 jkh Exp $
From ptsfa!lll-crg!ames!acornrc!bob Wed Dec 31 10:07:08 1986
Date: Wed, 31 Dec 86 08:59:31 pst
diff --git a/usr.sbin/cron/doc/Makefile.vixie b/usr.sbin/cron/doc/Makefile.vixie
index 2ce05b94c47c..825eac9c9249 100644
--- a/usr.sbin/cron/doc/Makefile.vixie
+++ b/usr.sbin/cron/doc/Makefile.vixie
@@ -17,7 +17,7 @@
# Makefile for vixie's cron
#
-# $Id: Makefile.vixie,v 1.1.1.1 1994/08/27 13:43:03 jkh Exp $
+# $Id: Makefile.vixie,v 1.2 1995/05/30 03:47:08 rgrimes Exp $
#
# vix 03mar88 [moved to RCS, rest of log is in there]
# vix 30mar87 [goodbye, time.c; hello, getopt]
diff --git a/usr.sbin/cron/doc/README b/usr.sbin/cron/doc/README
index 751f04f646fc..c42622b83d0a 100644
--- a/usr.sbin/cron/doc/README
+++ b/usr.sbin/cron/doc/README
@@ -69,4 +69,4 @@ have to go edit a couple of files... So, here's the checklist:
if you like it, change your /etc/{rc,rc.local} to use it instead of
the old one.
-$Id: README,v 2.3 1993/12/28 08:34:43 vixie Exp $
+$Id: README,v 1.1.1.1 1994/08/27 13:43:03 jkh Exp $
diff --git a/usr.sbin/cron/lib/compat.c b/usr.sbin/cron/lib/compat.c
index 87eeacce1936..ef9a38f4172a 100644
--- a/usr.sbin/cron/lib/compat.c
+++ b/usr.sbin/cron/lib/compat.c
@@ -16,7 +16,7 @@
*/
#if !defined(lint) && !defined(LINT)
-static char rcsid[] = "$Id: compat.c,v 1.1.1.1 1994/08/27 13:43:02 jkh Exp $";
+static char rcsid[] = "$Id: compat.c,v 1.2 1995/05/30 03:47:09 rgrimes Exp $";
#endif
/* vix 30dec93 [broke this out of misc.c - see RCS log for history]
diff --git a/usr.sbin/cron/lib/entry.c b/usr.sbin/cron/lib/entry.c
index 58ecf4ee7fbc..a9e4638713db 100644
--- a/usr.sbin/cron/lib/entry.c
+++ b/usr.sbin/cron/lib/entry.c
@@ -16,7 +16,7 @@
*/
#if !defined(lint) && !defined(LINT)
-static char rcsid[] = "$Id: entry.c,v 1.4 1995/08/28 21:30:46 mpp Exp $";
+static char rcsid[] = "$Id: entry.c,v 1.3.4.1 1995/09/02 14:39:59 davidg Exp $";
#endif
/* vix 26jan87 [RCS'd; rest of log is in RCS file]
diff --git a/usr.sbin/cron/lib/env.c b/usr.sbin/cron/lib/env.c
index 535cb3729b66..5acc43e3fedd 100644
--- a/usr.sbin/cron/lib/env.c
+++ b/usr.sbin/cron/lib/env.c
@@ -16,7 +16,7 @@
*/
#if !defined(lint) && !defined(LINT)
-static char rcsid[] = "$Id: env.c,v 2.6 1994/01/15 20:43:43 vixie Exp $";
+static char rcsid[] = "$Id: env.c,v 1.1.1.1 1994/08/27 13:43:02 jkh Exp $";
#endif
diff --git a/usr.sbin/cron/lib/misc.c b/usr.sbin/cron/lib/misc.c
index b6313b8b52b4..561f498031d2 100644
--- a/usr.sbin/cron/lib/misc.c
+++ b/usr.sbin/cron/lib/misc.c
@@ -16,7 +16,7 @@
*/
#if !defined(lint) && !defined(LINT)
-static char rcsid[] = "$Id: misc.c,v 1.2 1995/04/29 13:25:13 ache Exp $";
+static char rcsid[] = "$Id: misc.c,v 1.3 1995/05/30 03:47:11 rgrimes Exp $";
#endif
/* vix 26jan87 [RCS has the rest of the log]
diff --git a/usr.sbin/crunch/crunchgen/mkskel.sh b/usr.sbin/crunch/crunchgen/mkskel.sh
index fd53d78bbbac..fd53d78bbbac 100644..100755
--- a/usr.sbin/crunch/crunchgen/mkskel.sh
+++ b/usr.sbin/crunch/crunchgen/mkskel.sh
diff --git a/usr.sbin/crunch/examples/filesystem.conf b/usr.sbin/crunch/examples/filesystem.conf
index 96feb5376263..fdca85d7c234 100644
--- a/usr.sbin/crunch/examples/filesystem.conf
+++ b/usr.sbin/crunch/examples/filesystem.conf
@@ -1,4 +1,4 @@
-# $Id: filesystem.conf,v 1.4 1994/10/04 14:06:13 ache Exp $
+# $Id: filesystem.conf,v 1.5 1995/03/10 08:36:19 rgrimes Exp $
srcdirs /usr/src/bin /usr/src/sbin /usr/src/gnu/usr.bin /usr/src/usr.sbin
srcdirs /usr/src/sbin/i386
diff --git a/usr.sbin/crunch/examples/kcopy.conf b/usr.sbin/crunch/examples/kcopy.conf
index 5a3476d23522..67ababf3c9b2 100644
--- a/usr.sbin/crunch/examples/kcopy.conf
+++ b/usr.sbin/crunch/examples/kcopy.conf
@@ -1,4 +1,4 @@
-# $Id: kcopy.conf,v 1.3 1994/06/24 16:39:30 jkh Exp $
+# $Id: kcopy.conf,v 1.4 1994/09/09 16:02:04 rgrimes Exp $
srcdirs /usr/src/bin /usr/src/sbin
diff --git a/usr.sbin/ctm/Makefile.inc b/usr.sbin/ctm/Makefile.inc
index 2ecf88423934..1ec0270afb37 100644
--- a/usr.sbin/ctm/Makefile.inc
+++ b/usr.sbin/ctm/Makefile.inc
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile.inc,v 1.1 1995/01/31 19:09:38 phk Exp $
.if exists(${.CURDIR}/../../Makefile.inc)
.include "${.CURDIR}/../../Makefile.inc"
diff --git a/usr.sbin/ctm/README b/usr.sbin/ctm/README
index d887912492be..d2d18608399a 100644
--- a/usr.sbin/ctm/README
+++ b/usr.sbin/ctm/README
@@ -5,7 +5,7 @@
# this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
# ----------------------------------------------------------------------------
#
-# $Id$
+# $Id: README,v 1.4 1994/09/22 02:49:07 phk Exp $
#
What will I not find in this file ?
diff --git a/usr.sbin/ctm/ctm/Makefile b/usr.sbin/ctm/ctm/Makefile
index eb76ff11a463..797c13d90d7b 100644
--- a/usr.sbin/ctm/ctm/Makefile
+++ b/usr.sbin/ctm/ctm/Makefile
@@ -6,7 +6,7 @@
# this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
# ----------------------------------------------------------------------------
#
-# $Id: Makefile,v 1.9 1995/07/12 18:35:22 bde Exp $
+# $Id: Makefile,v 1.8.4.1 1995/09/06 14:20:18 davidg Exp $
#
PROG= ctm
diff --git a/usr.sbin/ctm/ctm/ctm.1 b/usr.sbin/ctm/ctm/ctm.1
index 0eeaf2e32275..1dd9c01b923d 100644
--- a/usr.sbin/ctm/ctm/ctm.1
+++ b/usr.sbin/ctm/ctm/ctm.1
@@ -10,7 +10,7 @@
.\"
.\" CTM and ctm(1) by <phk@login.dknet.dk>
.\"
-.\" $Id: ctm.1,v 1.1 1995/03/25 18:14:24 joerg Exp $
+.\" $Id: ctm.1,v 1.2 1995/03/26 20:09:46 phk Exp $
.\"
.Dd Mar 25, 1995
.Os
diff --git a/usr.sbin/ctm/ctm/ctm.5 b/usr.sbin/ctm/ctm/ctm.5
index bf6ee50b09ab..5a3f2c9a9f1b 100644
--- a/usr.sbin/ctm/ctm/ctm.5
+++ b/usr.sbin/ctm/ctm/ctm.5
@@ -10,7 +10,7 @@
.\"
.\" CTM and ctm(1) by <phk@login.dknet.dk>
.\"
-.\" $Id: ctm.5,v 1.1 1995/03/25 18:14:26 joerg Exp $
+.\" $Id: ctm.5,v 1.2 1995/03/26 20:09:48 phk Exp $
.\"
.Dd March 25, 1995
.Os
diff --git a/usr.sbin/ctm/ctm/ctm.c b/usr.sbin/ctm/ctm/ctm.c
index 05ab0ccefa9f..c43626e71f23 100644
--- a/usr.sbin/ctm/ctm/ctm.c
+++ b/usr.sbin/ctm/ctm/ctm.c
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id: ctm.c,v 1.10 1995/03/26 20:09:50 phk Exp $
+ * $Id: ctm.c,v 1.11 1995/05/30 03:47:19 rgrimes Exp $
*
* This is the client program of 'CTM'. It will apply a CTM-patch to a
* collection of files.
diff --git a/usr.sbin/ctm/ctm/ctm.h b/usr.sbin/ctm/ctm/ctm.h
index a444f983ec31..e7125da446f6 100644
--- a/usr.sbin/ctm/ctm/ctm.h
+++ b/usr.sbin/ctm/ctm/ctm.h
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id: ctm.h,v 1.6 1995/03/04 20:36:45 phk Exp $
+ * $Id: ctm.h,v 1.7 1995/05/30 03:47:21 rgrimes Exp $
*
*/
diff --git a/usr.sbin/ctm/ctm/ctm_ed.c b/usr.sbin/ctm/ctm/ctm_ed.c
index a78be73cd0a5..29dd25a19d07 100644
--- a/usr.sbin/ctm/ctm/ctm_ed.c
+++ b/usr.sbin/ctm/ctm/ctm_ed.c
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id: ctm_ed.c,v 1.5 1995/04/16 22:40:49 bde Exp $
+ * $Id: ctm_ed.c,v 1.6 1995/05/30 03:47:22 rgrimes Exp $
*
*/
diff --git a/usr.sbin/ctm/ctm/ctm_input.c b/usr.sbin/ctm/ctm/ctm_input.c
index 582bdf7bb5e0..d6903b6035aa 100644
--- a/usr.sbin/ctm/ctm/ctm_input.c
+++ b/usr.sbin/ctm/ctm/ctm_input.c
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id$
+ * $Id: ctm_input.c,v 1.4 1994/09/22 02:49:18 phk Exp $
*
*/
diff --git a/usr.sbin/ctm/ctm/ctm_pass1.c b/usr.sbin/ctm/ctm/ctm_pass1.c
index 700002a1a91f..dfd98ce4a564 100644
--- a/usr.sbin/ctm/ctm/ctm_pass1.c
+++ b/usr.sbin/ctm/ctm/ctm_pass1.c
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id: ctm_pass1.c,v 1.11 1995/07/12 09:16:08 phk Exp $
+ * $Id: ctm_pass1.c,v 1.10.4.1 1995/09/06 14:20:20 davidg Exp $
*
*/
diff --git a/usr.sbin/ctm/ctm/ctm_pass2.c b/usr.sbin/ctm/ctm/ctm_pass2.c
index d71149f238d4..9a1e7a92757e 100644
--- a/usr.sbin/ctm/ctm/ctm_pass2.c
+++ b/usr.sbin/ctm/ctm/ctm_pass2.c
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id: ctm_pass2.c,v 1.9 1995/07/12 09:16:10 phk Exp $
+ * $Id: ctm_pass2.c,v 1.8.4.1 1995/09/06 14:20:21 davidg Exp $
*
*/
diff --git a/usr.sbin/ctm/ctm/ctm_pass3.c b/usr.sbin/ctm/ctm/ctm_pass3.c
index 8e35b51573d0..5d0d7cd24aba 100644
--- a/usr.sbin/ctm/ctm/ctm_pass3.c
+++ b/usr.sbin/ctm/ctm/ctm_pass3.c
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id: ctm_pass3.c,v 1.11 1995/07/12 09:16:13 phk Exp $
+ * $Id: ctm_pass3.c,v 1.10.4.1 1995/09/06 14:20:22 davidg Exp $
*
*/
diff --git a/usr.sbin/ctm/ctm/ctm_syntax.c b/usr.sbin/ctm/ctm/ctm_syntax.c
index 89ea54ff6115..e82a29e608ef 100644
--- a/usr.sbin/ctm/ctm/ctm_syntax.c
+++ b/usr.sbin/ctm/ctm/ctm_syntax.c
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id: ctm_syntax.c,v 1.4 1994/09/22 02:49:21 phk Exp $
+ * $Id: ctm_syntax.c,v 1.5 1995/05/30 03:47:28 rgrimes Exp $
*
*/
diff --git a/usr.sbin/ctm/ctm_scan/Makefile b/usr.sbin/ctm/ctm_scan/Makefile
index f009338aa985..312b59b66434 100644
--- a/usr.sbin/ctm/ctm_scan/Makefile
+++ b/usr.sbin/ctm/ctm_scan/Makefile
@@ -6,7 +6,7 @@
# this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
# ----------------------------------------------------------------------------
#
-# $Id: Makefile,v 1.5 1994/09/22 02:49:22 phk Exp $
+# $Id: Makefile,v 1.6 1994/10/24 20:09:27 phk Exp $
#
PROG= ctm_scan
LDADD+= -lmd
diff --git a/usr.sbin/ctm/ctm_scan/ctm_scan.c b/usr.sbin/ctm/ctm_scan/ctm_scan.c
index 6637edec6417..fd88b60e7d74 100644
--- a/usr.sbin/ctm/ctm_scan/ctm_scan.c
+++ b/usr.sbin/ctm/ctm_scan/ctm_scan.c
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id: ctm_scan.c,v 1.12 1995/07/13 15:33:42 phk Exp $
+ * $Id: ctm_scan.c,v 1.11.4.1 1995/09/06 14:20:37 davidg Exp $
*
*/
#include <stdio.h>
diff --git a/usr.sbin/fdwrite/Makefile b/usr.sbin/fdwrite/Makefile
index a860090a9e80..21061b8317fb 100644
--- a/usr.sbin/fdwrite/Makefile
+++ b/usr.sbin/fdwrite/Makefile
@@ -6,7 +6,7 @@
# this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
# ----------------------------------------------------------------------------
#
-# $Id: Makefile,v 1.1.1.1 1994/09/18 07:39:19 phk Exp $
+# $Id: Makefile,v 1.2 1994/10/14 16:03:32 joerg Exp $
#
#
diff --git a/usr.sbin/fdwrite/fdwrite.1 b/usr.sbin/fdwrite/fdwrite.1
index a8f527f72143..25a4fb2bd81e 100644
--- a/usr.sbin/fdwrite/fdwrite.1
+++ b/usr.sbin/fdwrite/fdwrite.1
@@ -6,7 +6,7 @@
.\" this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
.\" ----------------------------------------------------------------------------
.\"
-.\" $Id$
+.\" $Id: fdwrite.1,v 1.1.1.1 1994/09/18 07:39:19 phk Exp $
.\"
.\"
.Dd September 16, 1993
diff --git a/usr.sbin/fdwrite/fdwrite.c b/usr.sbin/fdwrite/fdwrite.c
index d77040bc754e..660d0c8451cf 100644
--- a/usr.sbin/fdwrite/fdwrite.c
+++ b/usr.sbin/fdwrite/fdwrite.c
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id: fdwrite.c,v 1.2 1994/10/14 16:03:33 joerg Exp $
+ * $Id: fdwrite.c,v 1.3 1995/05/30 03:47:40 rgrimes Exp $
*
*/
diff --git a/usr.sbin/inetd/inetd.8 b/usr.sbin/inetd/inetd.8
index 6edd3bb1f9a7..d3945fa76c9b 100644
--- a/usr.sbin/inetd/inetd.8
+++ b/usr.sbin/inetd/inetd.8
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" from: @(#)inetd.8 8.3 (Berkeley) 4/13/94
-.\" $Id: inetd.8,v 1.3 1994/09/11 11:16:30 csgr Exp $
+.\" $Id: inetd.8,v 1.4 1994/12/21 19:08:41 wollman Exp $
.\"
.Dd April 13, 1994
.Dt INETD 8
diff --git a/usr.sbin/inetd/inetd.c b/usr.sbin/inetd/inetd.c
index 3d921f25bccb..1a97ebbfe75f 100644
--- a/usr.sbin/inetd/inetd.c
+++ b/usr.sbin/inetd/inetd.c
@@ -40,7 +40,7 @@ static char copyright[] =
#ifndef lint
/* from: @(#)inetd.c 8.4 (Berkeley) 4/13/94"; */
static char inetd_c_rcsid[] =
- "$Id: inetd.c,v 1.5.2.1 1995/06/05 01:01:19 davidg Exp $";
+ "$Id: inetd.c,v 1.6 1995/06/11 19:32:39 rgrimes Exp $";
#endif /* not lint */
/*
diff --git a/usr.sbin/kbdcontrol/kbdcontrol.c b/usr.sbin/kbdcontrol/kbdcontrol.c
index ecaf6c20f664..d41e888639c6 100644
--- a/usr.sbin/kbdcontrol/kbdcontrol.c
+++ b/usr.sbin/kbdcontrol/kbdcontrol.c
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: kbdcontrol.c,v 1.6.2.1 1995/06/05 09:23:13 davidg Exp $
+ * $Id: kbdcontrol.c,v 1.7 1995/06/11 19:32:41 rgrimes Exp $
*/
#include <ctype.h>
diff --git a/usr.sbin/kbdcontrol/lex.h b/usr.sbin/kbdcontrol/lex.h
index 9d9033de953f..c3c91aac8df6 100644
--- a/usr.sbin/kbdcontrol/lex.h
+++ b/usr.sbin/kbdcontrol/lex.h
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: lex.h,v 1.1 1994/08/17 08:59:35 sos Exp $
+ * $Id: lex.h,v 1.2 1995/01/28 22:17:21 sos Exp $
*/
#define TNOP 256
diff --git a/usr.sbin/kbdcontrol/lex.l b/usr.sbin/kbdcontrol/lex.l
index d738a712a419..47b3d5fce039 100644
--- a/usr.sbin/kbdcontrol/lex.l
+++ b/usr.sbin/kbdcontrol/lex.l
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: lex.l,v 1.2 1995/01/28 22:17:22 sos Exp $
+ * $Id: lex.l,v 1.3 1995/01/30 21:41:14 sos Exp $
*/
%{
diff --git a/usr.sbin/kbdmap/Makefile b/usr.sbin/kbdmap/Makefile
index 58a1e6954c05..b4d0622f56eb 100644
--- a/usr.sbin/kbdmap/Makefile
+++ b/usr.sbin/kbdmap/Makefile
@@ -1,5 +1,5 @@
# Makefile for kbdmap / vidfont
-# $Id: Makefile,v 1.5 1995/07/25 00:37:15 bde Exp $
+# $Id: Makefile,v 1.3.4.1 1995/09/20 07:30:33 davidg Exp $
SCRIPT= ${.CURDIR}/kbdmap.pl
LINKS= ${BINDIR}/kbdmap ${BINDIR}/vidfont
diff --git a/usr.sbin/kbdmap/kbdmap.1 b/usr.sbin/kbdmap/kbdmap.1
index 9ef452d84262..cbe141aabf85 100644
--- a/usr.sbin/kbdmap/kbdmap.1
+++ b/usr.sbin/kbdmap/kbdmap.1
@@ -34,7 +34,7 @@
.\"
.\" E-Mail: Wolfram Schneider <wosch@cs.tu-berlin.de>
.\"
-.\" $Id: kbdmap.1,v 1.5 1995/04/01 17:07:26 w Exp $
+.\" $Id: kbdmap.1,v 1.1 1995/04/05 08:09:22 jkh Exp $
.\"
.Dd Mar 25, 1995
diff --git a/usr.sbin/kbdmap/kbdmap.pl b/usr.sbin/kbdmap/kbdmap.pl
index 8736d610d27c..080b254d684f 100644..100755
--- a/usr.sbin/kbdmap/kbdmap.pl
+++ b/usr.sbin/kbdmap/kbdmap.pl
@@ -35,7 +35,7 @@
#
# E-Mail: Wolfram Schneider <wosch@cs.tu-berlin.de>
#
-# $Id: kbdmap.pl,v 1.10 1995/04/03 21:13:52 w Exp $
+# $Id: kbdmap.pl,v 1.2 1995/04/05 08:09:24 jkh Exp $
#
# simple test if syscons works
diff --git a/usr.sbin/kbdmap/strip_pl.pl b/usr.sbin/kbdmap/strip_pl.pl
index 6e8e6d920f61..6e8e6d920f61 100644..100755
--- a/usr.sbin/kbdmap/strip_pl.pl
+++ b/usr.sbin/kbdmap/strip_pl.pl
diff --git a/usr.sbin/kernbb/Makefile b/usr.sbin/kernbb/Makefile
index ad5f6aae4cd3..6a424c9426b2 100644
--- a/usr.sbin/kernbb/Makefile
+++ b/usr.sbin/kernbb/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1 1995/03/10 08:53:54 phk Exp $
+# $Id: Makefile,v 1.2 1995/04/28 04:52:33 phk Exp $
PROG= kernbb
MAN8= kernbb.8
diff --git a/usr.sbin/kernbb/kernbb.c b/usr.sbin/kernbb/kernbb.c
index 72b5bc158812..a31ddb2b928c 100644
--- a/usr.sbin/kernbb/kernbb.c
+++ b/usr.sbin/kernbb/kernbb.c
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id: kernbb.c,v 1.1 1995/03/10 08:53:55 phk Exp $
+ * $Id: kernbb.c,v 1.2 1995/04/28 04:58:19 phk Exp $
*
*/
diff --git a/usr.sbin/lpr/lp/lp.1 b/usr.sbin/lpr/lp/lp.1
index fa1a1259a7c8..264f1452eac2 100644
--- a/usr.sbin/lpr/lp/lp.1
+++ b/usr.sbin/lpr/lp/lp.1
@@ -31,7 +31,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.\" $Id: lp.1,v 1.1 1995/01/22 17:47:24 j Exp $
+.\" $Id: lp.1,v 1.1 1995/01/23 19:22:37 joerg Exp $
.\"
.Dd January 22, 1995
.Dt LP 1
diff --git a/usr.sbin/lpr/lp/lp.sh b/usr.sbin/lpr/lp/lp.sh
index 45d4979dbd5e..2d38821c4e17 100644..100755
--- a/usr.sbin/lpr/lp/lp.sh
+++ b/usr.sbin/lpr/lp/lp.sh
@@ -36,7 +36,7 @@
#
# Posix 1003.2 compliant print spooler interface.
#
-# $Id: lp.sh,v 1.1 1995/01/23 19:22:43 joerg Exp $
+# $Id: lp.sh,v 1.1.4.1 1995/08/26 11:38:27 davidg Exp $
#
#
# XXX Bugs:
diff --git a/usr.sbin/lptcontrol/lptcontrol.8 b/usr.sbin/lptcontrol/lptcontrol.8
index 4a02390a73a5..d4bba51552e7 100644
--- a/usr.sbin/lptcontrol/lptcontrol.8
+++ b/usr.sbin/lptcontrol/lptcontrol.8
@@ -11,7 +11,7 @@
.\" documentation and/or other materials provided with the distribution.
.\"
.\"
-.\" $Id: lptcontrol.1,v 1.3 1994/05/22 12:31:54 csgr Exp $
+.\" $Id: lptcontrol.8,v 1.2 1994/09/03 22:46:49 csgr Exp $
.Dd September 3, 1994
.Dt LPTCONTROL 8
.Os FreeBSD 2
diff --git a/usr.sbin/lptcontrol/lptcontrol.c b/usr.sbin/lptcontrol/lptcontrol.c
index f297b330d5ec..4f7fc1006a44 100644
--- a/usr.sbin/lptcontrol/lptcontrol.c
+++ b/usr.sbin/lptcontrol/lptcontrol.c
@@ -27,7 +27,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: lptcontrol.c,v 1.2 1994/09/03 22:46:50 csgr Exp $
+ * $Id: lptcontrol.c,v 1.3 1995/05/30 03:48:07 rgrimes Exp $
*/
#include <ctype.h>
diff --git a/usr.sbin/lsdev/Makefile b/usr.sbin/lsdev/Makefile
index 061a86fd2bda..cedebb25c0f0 100644
--- a/usr.sbin/lsdev/Makefile
+++ b/usr.sbin/lsdev/Makefile
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile,v 1.1.1.1 1994/10/17 23:26:10 wollman Exp $
PROG= lsdev
MAN8= lsdev.8
diff --git a/usr.sbin/lsdev/lsdev.8 b/usr.sbin/lsdev/lsdev.8
index 43e78d61fb27..9fcb0218d158 100644
--- a/usr.sbin/lsdev/lsdev.8
+++ b/usr.sbin/lsdev/lsdev.8
@@ -1,4 +1,4 @@
-.\" $Id: lsdev.8,v 1.2 1994/10/23 21:33:55 wollman Exp $
+.\" $Id: lsdev.8,v 1.3 1994/12/12 00:35:01 ats Exp $
.\" Garrett A. Wollman, October 1994
.\" This file is in the public domain.
.\"
diff --git a/usr.sbin/manctl/Makefile b/usr.sbin/manctl/Makefile
index f56c66d2304d..7a2ae922f572 100644
--- a/usr.sbin/manctl/Makefile
+++ b/usr.sbin/manctl/Makefile
@@ -1,5 +1,5 @@
# Makefile
-# $Id: Makefile,v 1.3 1994/05/26 07:52:23 csgr Exp $
+# $Id: Makefile,v 1.4 1994/05/26 20:16:49 csgr Exp $
all:
@echo -n
diff --git a/usr.sbin/manctl/manctl.sh b/usr.sbin/manctl/manctl.sh
index 83ee61995c60..fec5aee114e8 100644
--- a/usr.sbin/manctl/manctl.sh
+++ b/usr.sbin/manctl/manctl.sh
@@ -30,7 +30,7 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $Id: manctl.sh,v 1.4 1994/04/18 18:46:50 csgr Exp $
+# $Id: manctl.sh,v 1.5 1995/02/15 00:07:59 jkh Exp $
#
# manctl:
# a utility for manipulating manual pages
diff --git a/usr.sbin/mixer/Makefile b/usr.sbin/mixer/Makefile
index 8a4f886b87eb..c92a88bbca0f 100644
--- a/usr.sbin/mixer/Makefile
+++ b/usr.sbin/mixer/Makefile
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile,v 1.1.1.1 1995/02/15 17:33:04 ache Exp $
PROG = mixer
NOMAN = noman
diff --git a/usr.sbin/mrouted/Makefile b/usr.sbin/mrouted/Makefile
index 64d370442c40..5f2fc5f17f1d 100644
--- a/usr.sbin/mrouted/Makefile
+++ b/usr.sbin/mrouted/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.2 1995/06/15 19:23:02 wollman Exp $
+# $Id: Makefile,v 1.1.6.1 1995/09/06 10:33:40 davidg Exp $
SUBDIR= common mrouted mrinfo map-mbone mtrace testrsrr
diff --git a/usr.sbin/mrouted/callout.c b/usr.sbin/mrouted/callout.c
index ad36d1640602..923588162bff 100644
--- a/usr.sbin/mrouted/callout.c
+++ b/usr.sbin/mrouted/callout.c
@@ -7,7 +7,7 @@
* Leland Stanford Junior University.
*
*
- * $Id: callout.c,v 1.6 1995/06/28 17:58:25 wollman Exp $
+ * $Id: callout.c,v 1.4.4.1 1995/09/06 10:33:42 davidg Exp $
*/
#include "defs.h"
diff --git a/usr.sbin/mrouted/cfparse.y b/usr.sbin/mrouted/cfparse.y
index c08938d4a47a..4e49a333ecef 100644
--- a/usr.sbin/mrouted/cfparse.y
+++ b/usr.sbin/mrouted/cfparse.y
@@ -4,7 +4,7 @@
*
* Written by Bill Fenner, NRL, 1994
*
- * $Id: cfparse.y,v 3.6 1995/06/25 18:49:46 fenner Exp $
+ * $Id: cfparse.y,v 1.2 1995/06/28 17:58:26 wollman Exp $
*/
#include <stdio.h>
#ifdef __STDC__
diff --git a/usr.sbin/mrouted/common/Makefile b/usr.sbin/mrouted/common/Makefile
index 9bcfb27462bc..fcc9b32e85bb 100644
--- a/usr.sbin/mrouted/common/Makefile
+++ b/usr.sbin/mrouted/common/Makefile
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile,v 1.1 1994/09/08 02:51:32 wollman Exp $
LIB= mrouted
NOPROFILE=
diff --git a/usr.sbin/mrouted/config.c b/usr.sbin/mrouted/config.c
index bf5371f72158..1e26867aaa23 100644
--- a/usr.sbin/mrouted/config.c
+++ b/usr.sbin/mrouted/config.c
@@ -7,7 +7,7 @@
* Leland Stanford Junior University.
*
*
- * $Id: config.c,v 1.6 1995/06/28 17:58:27 wollman Exp $
+ * $Id: config.c,v 1.4.4.1 1995/09/06 10:33:43 davidg Exp $
*/
diff --git a/usr.sbin/mrouted/defs.h b/usr.sbin/mrouted/defs.h
index 7830ee5b655e..288eae489f95 100644
--- a/usr.sbin/mrouted/defs.h
+++ b/usr.sbin/mrouted/defs.h
@@ -7,7 +7,7 @@
* Leland Stanford Junior University.
*
*
- * $Id: defs.h,v 1.5 1995/06/28 17:58:29 wollman Exp $
+ * $Id: defs.h,v 1.3.4.1 1995/09/06 10:33:44 davidg Exp $
*/
diff --git a/usr.sbin/mrouted/dvmrp.h b/usr.sbin/mrouted/dvmrp.h
index 3e478dd5dff4..5af9c463a632 100644
--- a/usr.sbin/mrouted/dvmrp.h
+++ b/usr.sbin/mrouted/dvmrp.h
@@ -7,7 +7,7 @@
* Leland Stanford Junior University.
*
*
- * $Id: dvmrp.h,v 1.4 1995/06/28 17:58:31 wollman Exp $
+ * $Id: dvmrp.h,v 1.2.6.1 1995/09/06 10:33:45 davidg Exp $
*/
/*
diff --git a/usr.sbin/mrouted/igmp.c b/usr.sbin/mrouted/igmp.c
index c3d8ac9590fd..81c020125cfb 100644
--- a/usr.sbin/mrouted/igmp.c
+++ b/usr.sbin/mrouted/igmp.c
@@ -7,7 +7,7 @@
* Leland Stanford Junior University.
*
*
- * $Id: igmp.c,v 1.8 1995/10/07 03:48:44 davidg Exp $
+ * $Id: igmp.c,v 1.5.4.2 1995/10/09 08:41:50 davidg Exp $
*/
diff --git a/usr.sbin/mrouted/inet.c b/usr.sbin/mrouted/inet.c
index 3f8defd458ef..4d6f5ed86971 100644
--- a/usr.sbin/mrouted/inet.c
+++ b/usr.sbin/mrouted/inet.c
@@ -7,7 +7,7 @@
* Leland Stanford Junior University.
*
*
- * $Id: inet.c,v 1.4 1995/06/28 17:58:33 wollman Exp $
+ * $Id: inet.c,v 1.2.6.1 1995/09/06 10:33:48 davidg Exp $
*/
diff --git a/usr.sbin/mrouted/kern.c b/usr.sbin/mrouted/kern.c
index a3d91d404e07..7da9a1d2b5d6 100644
--- a/usr.sbin/mrouted/kern.c
+++ b/usr.sbin/mrouted/kern.c
@@ -7,7 +7,7 @@
* Leland Stanford Junior University.
*
*
- * $Id: kern.c,v 1.5 1995/06/28 17:58:34 wollman Exp $
+ * $Id: kern.c,v 1.3.4.1 1995/09/06 10:33:49 davidg Exp $
*/
diff --git a/usr.sbin/mrouted/main.c b/usr.sbin/mrouted/main.c
index 5b0bab7a6413..383cabfa23d0 100644
--- a/usr.sbin/mrouted/main.c
+++ b/usr.sbin/mrouted/main.c
@@ -7,7 +7,7 @@
* Leland Stanford Junior University.
*
*
- * $Id: main.c,v 1.6 1995/06/28 17:58:35 wollman Exp $
+ * $Id: main.c,v 1.4.4.1 1995/09/06 10:33:50 davidg Exp $
*/
/*
diff --git a/usr.sbin/mrouted/map-mbone/Makefile b/usr.sbin/mrouted/map-mbone/Makefile
index b7073444a28f..4087d86e1067 100644
--- a/usr.sbin/mrouted/map-mbone/Makefile
+++ b/usr.sbin/mrouted/map-mbone/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1 1994/09/08 02:51:33 wollman Exp $
+# $Id: Makefile,v 1.2 1995/03/31 21:16:56 wollman Exp $
PROG= map-mbone
diff --git a/usr.sbin/mrouted/mapper.c b/usr.sbin/mrouted/mapper.c
index d3a58c7eaef9..287044ea4ff7 100644
--- a/usr.sbin/mrouted/mapper.c
+++ b/usr.sbin/mrouted/mapper.c
@@ -1,7 +1,7 @@
/* Mapper for connections between MRouteD multicast routers.
* Written by Pavel Curtis <Pavel@PARC.Xerox.Com>
*
- * $Id: mapper.c,v 1.5 1995/06/28 17:58:35 wollman Exp $
+ * $Id: mapper.c,v 1.3.4.1 1995/09/06 10:33:52 davidg Exp $
*/
/*
diff --git a/usr.sbin/mrouted/mrinfo.c b/usr.sbin/mrouted/mrinfo.c
index c7b9bed9107c..6246b5270b67 100644
--- a/usr.sbin/mrouted/mrinfo.c
+++ b/usr.sbin/mrouted/mrinfo.c
@@ -61,7 +61,7 @@
#ifndef lint
static char rcsid[] =
- "@(#) $Id: mrinfo.c,v 1.7 1995/07/10 16:13:03 wollman Exp $";
+ "@(#) $Id: mrinfo.c,v 1.4.4.1 1995/09/06 10:33:55 davidg Exp $";
/* original rcsid:
"@(#) Header: mrinfo.c,v 1.6 93/04/08 15:14:16 van Exp (LBL)";
*/
diff --git a/usr.sbin/mrouted/mrinfo/Makefile b/usr.sbin/mrouted/mrinfo/Makefile
index 91c1a7522c30..17c6b91dda31 100644
--- a/usr.sbin/mrouted/mrinfo/Makefile
+++ b/usr.sbin/mrouted/mrinfo/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.3 1995/06/21 18:30:10 wollman Exp $
+# $Id: Makefile,v 1.2.4.1 1995/09/06 10:34:15 davidg Exp $
PROG= mrinfo
diff --git a/usr.sbin/mrouted/mrouted.8 b/usr.sbin/mrouted/mrouted.8
index 68726a68ae14..a446d84f99e6 100644
--- a/usr.sbin/mrouted/mrouted.8
+++ b/usr.sbin/mrouted/mrouted.8
@@ -1,5 +1,5 @@
'\"COPYRIGHT 1989 by The Board of Trustees of Leland Stanford Junior University.
-'\"$Id: mrouted.8,v 1.4 1995/06/28 17:58:37 wollman Exp $
+'\"$Id: mrouted.8,v 1.2.4.1 1995/09/06 10:33:56 davidg Exp $
.TH MROUTED 8
.UC 5
.SH NAME
diff --git a/usr.sbin/mrouted/mrouted.conf b/usr.sbin/mrouted/mrouted.conf
index 740e48e3f9af..e5f4a562bed3 100644
--- a/usr.sbin/mrouted/mrouted.conf
+++ b/usr.sbin/mrouted/mrouted.conf
@@ -1,4 +1,4 @@
-# $Id: mrouted.conf,v 1.4 1995/06/28 17:58:38 wollman Exp $
+# $Id: mrouted.conf,v 1.2.6.1 1995/09/06 10:33:57 davidg Exp $
#
# This is the configuration file for "mrouted", an IP multicast router.
# mrouted looks for it in "/etc/mrouted.conf".
diff --git a/usr.sbin/mrouted/mrouted/Makefile b/usr.sbin/mrouted/mrouted/Makefile
index 5221c9d80809..dbdb1ec26d07 100644
--- a/usr.sbin/mrouted/mrouted/Makefile
+++ b/usr.sbin/mrouted/mrouted/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.3 1995/07/08 22:36:06 ats Exp $
+# $Id: Makefile,v 1.1.6.1 1995/09/06 10:34:18 davidg Exp $
PROG= mrouted
diff --git a/usr.sbin/mrouted/mtrace.8 b/usr.sbin/mrouted/mtrace.8
index c4ac21866af7..d76565994c99 100644
--- a/usr.sbin/mrouted/mtrace.8
+++ b/usr.sbin/mrouted/mtrace.8
@@ -29,7 +29,7 @@
.\" Copyright (c) 1988 The Regents of the University of California.
.\" All rights reserved.
.\"
-.\" $Id: mtrace.8,v 3.6 1995/06/25 19:14:07 fenner Exp $
+.\" $Id: mtrace.8,v 1.2 1995/06/28 17:58:39 wollman Exp $
.\"
.TH MTRACE 8 "May 8, 1995"
.UC 6
diff --git a/usr.sbin/mrouted/mtrace.c b/usr.sbin/mrouted/mtrace.c
index d40f39b92a93..e6a9809ae675 100644
--- a/usr.sbin/mrouted/mtrace.c
+++ b/usr.sbin/mrouted/mtrace.c
@@ -47,7 +47,7 @@
* have been derived from mrouted programs sources covered by the
* license in the accompanying file named "LICENSE".
*
- * $Id: mtrace.c,v 1.6 1995/06/28 17:58:40 wollman Exp $
+ * $Id: mtrace.c,v 1.4.4.1 1995/09/06 10:33:58 davidg Exp $
*/
#include <netdb.h>
diff --git a/usr.sbin/mrouted/mtrace/Makefile b/usr.sbin/mrouted/mtrace/Makefile
index c3e29650125e..389a17bb9c94 100644
--- a/usr.sbin/mrouted/mtrace/Makefile
+++ b/usr.sbin/mrouted/mtrace/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.2 1995/06/21 18:30:16 wollman Exp $
+# $Id: Makefile,v 1.1.6.1 1995/09/06 10:34:19 davidg Exp $
PROG= mtrace
diff --git a/usr.sbin/mrouted/pathnames.h b/usr.sbin/mrouted/pathnames.h
index 22b0019f089d..a56305946350 100644
--- a/usr.sbin/mrouted/pathnames.h
+++ b/usr.sbin/mrouted/pathnames.h
@@ -7,7 +7,7 @@
* Leland Stanford Junior University.
*
*
- * $Id: pathnames.h,v 3.6 1995/06/25 19:17:45 fenner Exp $
+ * $Id: pathnames.h,v 1.2 1995/06/28 17:58:41 wollman Exp $
*/
#define _PATH_MROUTED_CONF "/etc/mrouted.conf"
diff --git a/usr.sbin/mrouted/prune.c b/usr.sbin/mrouted/prune.c
index fe67d71da349..ff34fcde388a 100644
--- a/usr.sbin/mrouted/prune.c
+++ b/usr.sbin/mrouted/prune.c
@@ -7,7 +7,7 @@
* Leland Stanford Junior University.
*
*
- * $Id: prune.c,v 1.9 1995/07/10 16:13:05 wollman Exp $
+ * $Id: prune.c,v 1.5.4.1 1995/09/06 10:33:59 davidg Exp $
*/
diff --git a/usr.sbin/mrouted/prune.h b/usr.sbin/mrouted/prune.h
index c575b6e38052..3c8d9524969b 100644
--- a/usr.sbin/mrouted/prune.h
+++ b/usr.sbin/mrouted/prune.h
@@ -7,7 +7,7 @@
* Leland Stanford Junior University.
*
*
- * $Id: prune.h,v 1.5 1995/06/28 17:58:43 wollman Exp $
+ * $Id: prune.h,v 1.3.4.1 1995/09/06 10:34:01 davidg Exp $
*/
/*
diff --git a/usr.sbin/mrouted/route.c b/usr.sbin/mrouted/route.c
index 266847f4c5d9..9d24b13c44cc 100644
--- a/usr.sbin/mrouted/route.c
+++ b/usr.sbin/mrouted/route.c
@@ -7,7 +7,7 @@
* Leland Stanford Junior University.
*
*
- * $Id: route.c,v 1.5 1995/06/28 17:58:44 wollman Exp $
+ * $Id: route.c,v 1.3.4.1 1995/09/06 10:34:02 davidg Exp $
*/
diff --git a/usr.sbin/mrouted/route.h b/usr.sbin/mrouted/route.h
index 810411a8ed59..f19689511721 100644
--- a/usr.sbin/mrouted/route.h
+++ b/usr.sbin/mrouted/route.h
@@ -7,7 +7,7 @@
* Leland Stanford Junior University.
*
*
- * $Id: route.h,v 1.4 1995/06/28 17:58:45 wollman Exp $
+ * $Id: route.h,v 1.2.6.1 1995/09/06 10:34:03 davidg Exp $
*/
/*
diff --git a/usr.sbin/mrouted/testrsrr/Makefile b/usr.sbin/mrouted/testrsrr/Makefile
index 9e710ff3a55e..2a08981e63c5 100644
--- a/usr.sbin/mrouted/testrsrr/Makefile
+++ b/usr.sbin/mrouted/testrsrr/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1 1994/09/08 02:51:37 wollman Exp $
+# $Id: Makefile,v 1.1 1995/06/15 19:23:08 wollman Exp $
PROG= testrsrr
diff --git a/usr.sbin/mrouted/testrsrr/testrsrr.c b/usr.sbin/mrouted/testrsrr/testrsrr.c
index b99b593284f2..54287631574d 100644
--- a/usr.sbin/mrouted/testrsrr/testrsrr.c
+++ b/usr.sbin/mrouted/testrsrr/testrsrr.c
@@ -26,7 +26,7 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: testrsrr.c,v 1.1 1995/06/15 19:23:08 wollman Exp $
*/
#include <stddef.h>
#include <stdlib.h>
diff --git a/usr.sbin/mrouted/vif.c b/usr.sbin/mrouted/vif.c
index 095727ae23c5..4abbfc017af7 100644
--- a/usr.sbin/mrouted/vif.c
+++ b/usr.sbin/mrouted/vif.c
@@ -7,7 +7,7 @@
* Leland Stanford Junior University.
*
*
- * $Id: vif.c,v 1.7 1995/10/07 03:47:44 davidg Exp $
+ * $Id: vif.c,v 1.4.4.2 1995/10/09 08:43:09 davidg Exp $
*/
diff --git a/usr.sbin/mrouted/vif.h b/usr.sbin/mrouted/vif.h
index 44a03de23a71..12a97c551539 100644
--- a/usr.sbin/mrouted/vif.h
+++ b/usr.sbin/mrouted/vif.h
@@ -7,7 +7,7 @@
* Leland Stanford Junior University.
*
*
- * $Id: vif.h,v 1.4 1995/06/28 17:58:49 wollman Exp $
+ * $Id: vif.h,v 1.2.6.1 1995/09/06 10:34:06 davidg Exp $
*/
/*
diff --git a/usr.sbin/mtree/Makefile b/usr.sbin/mtree/Makefile
index 9f78f8f71c29..e1769f4f956c 100644
--- a/usr.sbin/mtree/Makefile
+++ b/usr.sbin/mtree/Makefile
@@ -1,5 +1,5 @@
# From: @(#)Makefile 8.1 (Berkeley) 6/6/93
-# $Id$
+# $Id: Makefile,v 1.4 1995/02/10 03:12:03 wollman Exp $
PROG= mtree
SRCS= compare.c crc.c create.c misc.c mtree.c spec.c verify.c
diff --git a/usr.sbin/mtree/mtree.8 b/usr.sbin/mtree/mtree.8
index 2fd7d21cc1e8..8ad6232c8946 100644
--- a/usr.sbin/mtree/mtree.8
+++ b/usr.sbin/mtree/mtree.8
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" From: @(#)mtree.8 8.2 (Berkeley) 12/11/93
-.\" $Id$
+.\" $Id: mtree.8,v 1.5 1995/02/10 03:12:30 wollman Exp $
.\"
.Dd February 9, 1995
.Dt MTREE 8
diff --git a/usr.sbin/named/Version.c b/usr.sbin/named/Version.c
index 7cbce2820e86..a883c489e0d5 100644
--- a/usr.sbin/named/Version.c
+++ b/usr.sbin/named/Version.c
@@ -1,11 +1,11 @@
/*
* @(#)Version.c 4.9 (Berkeley) 7/21/90
- * $Id: Version.c,v 4.9.1.3 1994/06/01 21:09:39 vixie Exp $
+ * $Id: Version.c,v 1.1.1.1 1994/09/22 19:46:13 pst Exp $
*/
#ifndef lint
char sccsid[] = "@(#)named %VERSION% %WHEN% %WHOANDWHERE%";
-char rcsid[] = "$Id: Version.c,v 4.9.1.3 1994/06/01 21:09:39 vixie Exp $";
+char rcsid[] = "$Id: Version.c,v 1.1.1.1 1994/09/22 19:46:13 pst Exp $";
#endif /* not lint */
char Version[] = "named %VERSION% %WHEN%\n\t%WHOANDWHERE%";
diff --git a/usr.sbin/named/db_defs.h b/usr.sbin/named/db_defs.h
index 115615f71669..906aabc3b308 100644
--- a/usr.sbin/named/db_defs.h
+++ b/usr.sbin/named/db_defs.h
@@ -1,6 +1,6 @@
/*
* from db.h 4.16 (Berkeley) 6/1/90
- * $Id: db_defs.h,v 1.2 1995/05/30 03:48:34 rgrimes Exp $
+ * $Id: db_defs.h,v 1.2.4.1 1995/08/30 04:07:05 davidg Exp $
*/
/*
diff --git a/usr.sbin/named/db_dump.c b/usr.sbin/named/db_dump.c
index d1256ffbd415..f07ca7340ce2 100644
--- a/usr.sbin/named/db_dump.c
+++ b/usr.sbin/named/db_dump.c
@@ -1,6 +1,6 @@
#if !defined(lint) && !defined(SABER)
static char sccsid[] = "@(#)db_dump.c 4.33 (Berkeley) 3/3/91";
-static char rcsid[] = "$Id: db_dump.c,v 1.3 1995/05/30 03:48:35 rgrimes Exp $";
+static char rcsid[] = "$Id: db_dump.c,v 1.3.4.1 1995/08/30 04:07:07 davidg Exp $";
#endif /* not lint */
/*
diff --git a/usr.sbin/named/db_func.h b/usr.sbin/named/db_func.h
index 57a69fe63813..c2122dab1d01 100644
--- a/usr.sbin/named/db_func.h
+++ b/usr.sbin/named/db_func.h
@@ -1,6 +1,6 @@
/* db_proc.h - prototypes for functions in db_*.c
*
- * $Id: db_func.h,v 1.2 1995/05/30 03:48:36 rgrimes Exp $
+ * $Id: db_func.h,v 1.2.4.1 1995/08/30 04:07:11 davidg Exp $
*/
/* ++from db_update.c++ */
diff --git a/usr.sbin/named/db_glob.h b/usr.sbin/named/db_glob.h
index 157e51344a6b..59b0e4fcd789 100644
--- a/usr.sbin/named/db_glob.h
+++ b/usr.sbin/named/db_glob.h
@@ -1,6 +1,6 @@
/*
* from db.h 4.16 (Berkeley) 6/1/90
- * $Id: db_glob.h,v 1.1.1.1 1994/09/22 19:46:14 pst Exp $
+ * $Id: db_glob.h,v 1.2 1995/05/30 03:48:37 rgrimes Exp $
*/
/*
diff --git a/usr.sbin/named/db_glue.c b/usr.sbin/named/db_glue.c
index 17d6085f5f12..f0952f707d16 100644
--- a/usr.sbin/named/db_glue.c
+++ b/usr.sbin/named/db_glue.c
@@ -1,6 +1,6 @@
#if !defined(lint) && !defined(SABER)
static char sccsid[] = "@(#)db_glue.c 4.4 (Berkeley) 6/1/90";
-static char rcsid[] = "$Id: db_glue.c,v 1.2 1995/05/30 03:48:39 rgrimes Exp $";
+static char rcsid[] = "$Id: db_glue.c,v 1.2.4.1 1995/08/30 04:07:17 davidg Exp $";
#endif /* not lint */
/*
diff --git a/usr.sbin/named/db_load.c b/usr.sbin/named/db_load.c
index cbb6ad265266..31ece54cb86d 100644
--- a/usr.sbin/named/db_load.c
+++ b/usr.sbin/named/db_load.c
@@ -1,6 +1,6 @@
#if !defined(lint) && !defined(SABER)
static char sccsid[] = "@(#)db_load.c 4.38 (Berkeley) 3/2/91";
-static char rcsid[] = "$Id: db_load.c,v 1.3 1995/05/30 03:48:39 rgrimes Exp $";
+static char rcsid[] = "$Id: db_load.c,v 1.3.4.1 1995/08/30 04:07:20 davidg Exp $";
#endif /* not lint */
/*
diff --git a/usr.sbin/named/db_lookup.c b/usr.sbin/named/db_lookup.c
index c1d047d06324..f03b5ece1ea8 100644
--- a/usr.sbin/named/db_lookup.c
+++ b/usr.sbin/named/db_lookup.c
@@ -1,6 +1,6 @@
#if !defined(lint) && !defined(SABER)
static char sccsid[] = "@(#)db_lookup.c 4.18 (Berkeley) 3/21/91";
-static char rcsid[] = "$Id: db_lookup.c,v 1.2 1995/05/30 03:48:40 rgrimes Exp $";
+static char rcsid[] = "$Id: db_lookup.c,v 1.2.4.1 1995/08/30 04:07:23 davidg Exp $";
#endif /* not lint */
/*
diff --git a/usr.sbin/named/db_reload.c b/usr.sbin/named/db_reload.c
index 1145e4aa4921..917917ad7f46 100644
--- a/usr.sbin/named/db_reload.c
+++ b/usr.sbin/named/db_reload.c
@@ -1,6 +1,6 @@
#if !defined(lint) && !defined(SABER)
static char sccsid[] = "@(#)db_reload.c 4.22 (Berkeley) 3/21/91";
-static char rcsid[] = "$Id: db_reload.c,v 1.1.1.1 1994/09/22 19:46:14 pst Exp $";
+static char rcsid[] = "$Id: db_reload.c,v 1.2 1995/05/30 03:48:41 rgrimes Exp $";
#endif /* not lint */
/*
diff --git a/usr.sbin/named/db_save.c b/usr.sbin/named/db_save.c
index 61471cef6f5c..7aa25e088681 100644
--- a/usr.sbin/named/db_save.c
+++ b/usr.sbin/named/db_save.c
@@ -1,6 +1,6 @@
#if !defined(lint) && !defined(SABER)
static char sccsid[] = "@(#)db_save.c 4.16 (Berkeley) 3/21/91";
-static char rcsid[] = "$Id: db_save.c,v 1.2 1995/05/30 03:48:42 rgrimes Exp $";
+static char rcsid[] = "$Id: db_save.c,v 1.2.4.1 1995/08/30 04:07:27 davidg Exp $";
#endif /* not lint */
/*
diff --git a/usr.sbin/named/db_secure.c b/usr.sbin/named/db_secure.c
index 62f2f9a85b99..6ec172d436f8 100644
--- a/usr.sbin/named/db_secure.c
+++ b/usr.sbin/named/db_secure.c
@@ -1,5 +1,5 @@
#ifndef LINT
-static char rcsid[] = "$Id: db_secure.c,v 1.2 1995/05/30 03:48:43 rgrimes Exp $";
+static char rcsid[] = "$Id: db_secure.c,v 1.2.4.1 1995/08/30 04:07:30 davidg Exp $";
#endif
/* this file was contributed by Gregory Neil Shapiro of WPI in August 1993 */
diff --git a/usr.sbin/named/db_update.c b/usr.sbin/named/db_update.c
index 40e88cd8e7db..06f805bea3ec 100644
--- a/usr.sbin/named/db_update.c
+++ b/usr.sbin/named/db_update.c
@@ -1,6 +1,6 @@
#if !defined(lint) && !defined(SABER)
static char sccsid[] = "@(#)db_update.c 4.28 (Berkeley) 3/21/91";
-static char rcsid[] = "$Id: db_update.c,v 1.2 1995/05/30 03:48:44 rgrimes Exp $";
+static char rcsid[] = "$Id: db_update.c,v 1.2.4.1 1995/08/30 04:07:32 davidg Exp $";
#endif /* not lint */
/*
diff --git a/usr.sbin/named/dmalloc.c b/usr.sbin/named/dmalloc.c
index 6f27adfffc73..594e541fa8ac 100644
--- a/usr.sbin/named/dmalloc.c
+++ b/usr.sbin/named/dmalloc.c
@@ -3,7 +3,7 @@
* vix 24mar92 [added size calcs, improved printout]
* vix 22mar92 [original work]
*
- * $Id: dmalloc.c,v 1.2 1994/09/22 20:45:04 pst Exp $
+ * $Id: dmalloc.c,v 1.3 1995/05/30 03:48:45 rgrimes Exp $
*/
/*
diff --git a/usr.sbin/named/dmalloc.h b/usr.sbin/named/dmalloc.h
index 6d89ab825cbd..a6a971fa4c17 100644
--- a/usr.sbin/named/dmalloc.h
+++ b/usr.sbin/named/dmalloc.h
@@ -1,7 +1,7 @@
/* dmalloc - debugging layer on top of malloc
* vix 22mar92 [written]
*
- * $Id: dmalloc.h,v 1.1.1.1 1994/09/22 19:46:14 pst Exp $
+ * $Id: dmalloc.h,v 1.2 1995/05/30 03:48:46 rgrimes Exp $
*/
/*
diff --git a/usr.sbin/named/named.h b/usr.sbin/named/named.h
index e3e795d429d8..93f427b2044f 100644
--- a/usr.sbin/named/named.h
+++ b/usr.sbin/named/named.h
@@ -1,7 +1,7 @@
/* named.h - include the local definitions in the right order
* vix 28aug93 [original]
*
- * $Id: named.h,v 1.1 1993/09/08 04:57:40 vixie Exp $
+ * $Id: named.h,v 1.2 1994/09/22 20:45:06 pst Exp $
*/
#include "options.h"
diff --git a/usr.sbin/named/ns_defs.h b/usr.sbin/named/ns_defs.h
index e462e4454b81..a4434e904751 100644
--- a/usr.sbin/named/ns_defs.h
+++ b/usr.sbin/named/ns_defs.h
@@ -1,6 +1,6 @@
/*
* from ns.h 4.33 (Berkeley) 8/23/90
- * $Id: ns_defs.h,v 1.2 1995/05/30 03:48:47 rgrimes Exp $
+ * $Id: ns_defs.h,v 1.2.4.1 1995/08/30 04:07:35 davidg Exp $
*/
/*
diff --git a/usr.sbin/named/ns_forw.c b/usr.sbin/named/ns_forw.c
index 1d4ffbb860d2..bd7d6c14af47 100644
--- a/usr.sbin/named/ns_forw.c
+++ b/usr.sbin/named/ns_forw.c
@@ -1,6 +1,6 @@
#if !defined(lint) && !defined(SABER)
static char sccsid[] = "@(#)ns_forw.c 4.32 (Berkeley) 3/3/91";
-static char rcsid[] = "$Id: ns_forw.c,v 1.2 1995/05/30 03:48:49 rgrimes Exp $";
+static char rcsid[] = "$Id: ns_forw.c,v 1.2.4.1 1995/08/30 04:07:39 davidg Exp $";
#endif /* not lint */
/*
diff --git a/usr.sbin/named/ns_func.h b/usr.sbin/named/ns_func.h
index ba1847c3c153..b8070f40fd12 100644
--- a/usr.sbin/named/ns_func.h
+++ b/usr.sbin/named/ns_func.h
@@ -1,6 +1,6 @@
/* ns_func.h - declarations for ns_*.c's externally visible functions
*
- * $Id: ns_func.h,v 1.1.1.1 1994/09/22 19:46:13 pst Exp $
+ * $Id: ns_func.h,v 1.1.1.1.6.1 1995/08/30 04:07:41 davidg Exp $
*/
/* ++from ns_resp.c++ */
diff --git a/usr.sbin/named/ns_glob.h b/usr.sbin/named/ns_glob.h
index d229c955c114..03a813bf2ea8 100644
--- a/usr.sbin/named/ns_glob.h
+++ b/usr.sbin/named/ns_glob.h
@@ -1,6 +1,6 @@
/*
* from ns.h 4.33 (Berkeley) 8/23/90
- * $Id: ns_glob.h,v 1.2 1995/05/30 03:48:50 rgrimes Exp $
+ * $Id: ns_glob.h,v 1.2.4.1 1995/08/30 04:07:47 davidg Exp $
*/
/*
diff --git a/usr.sbin/named/ns_main.c b/usr.sbin/named/ns_main.c
index f1b974f6985a..d9ba8a72df89 100644
--- a/usr.sbin/named/ns_main.c
+++ b/usr.sbin/named/ns_main.c
@@ -1,6 +1,6 @@
#if !defined(lint) && !defined(SABER)
static char sccsid[] = "@(#)ns_main.c 4.55 (Berkeley) 7/1/91";
-static char rcsid[] = "$Id: ns_main.c,v 1.2 1995/05/30 03:48:52 rgrimes Exp $";
+static char rcsid[] = "$Id: ns_main.c,v 1.2.4.1 1995/08/30 04:07:57 davidg Exp $";
#endif /* not lint */
/*
diff --git a/usr.sbin/named/ns_maint.c b/usr.sbin/named/ns_maint.c
index 03cbf99aaa01..ce59035487c1 100644
--- a/usr.sbin/named/ns_maint.c
+++ b/usr.sbin/named/ns_maint.c
@@ -1,6 +1,6 @@
#if !defined(lint) && !defined(SABER)
static char sccsid[] = "@(#)ns_maint.c 4.39 (Berkeley) 3/2/91";
-static char rcsid[] = "$Id: ns_maint.c,v 1.2 1995/05/30 03:48:53 rgrimes Exp $";
+static char rcsid[] = "$Id: ns_maint.c,v 1.2.4.1 1995/08/30 04:08:01 davidg Exp $";
#endif /* not lint */
/*
diff --git a/usr.sbin/named/ns_req.c b/usr.sbin/named/ns_req.c
index 94d765ba83c2..b973b0234558 100644
--- a/usr.sbin/named/ns_req.c
+++ b/usr.sbin/named/ns_req.c
@@ -1,6 +1,6 @@
#if !defined(lint) && !defined(SABER)
static char sccsid[] = "@(#)ns_req.c 4.47 (Berkeley) 7/1/91";
-static char rcsid[] = "$Id: ns_req.c,v 1.2 1995/05/30 03:48:55 rgrimes Exp $";
+static char rcsid[] = "$Id: ns_req.c,v 1.2.4.1 1995/08/30 04:08:09 davidg Exp $";
#endif /* not lint */
/*
diff --git a/usr.sbin/named/ns_resp.c b/usr.sbin/named/ns_resp.c
index fde341cf23eb..045f967a3b6d 100644
--- a/usr.sbin/named/ns_resp.c
+++ b/usr.sbin/named/ns_resp.c
@@ -1,6 +1,6 @@
#if !defined(lint) && !defined(SABER)
static char sccsid[] = "@(#)ns_resp.c 4.65 (Berkeley) 3/3/91";
-static char rcsid[] = "$Id: ns_resp.c,v 1.2 1995/05/30 03:48:56 rgrimes Exp $";
+static char rcsid[] = "$Id: ns_resp.c,v 1.2.4.1 1995/08/30 04:08:14 davidg Exp $";
#endif /* not lint */
/*
diff --git a/usr.sbin/named/ns_sort.c b/usr.sbin/named/ns_sort.c
index 70da7fee30e2..ded698dd2aa0 100644
--- a/usr.sbin/named/ns_sort.c
+++ b/usr.sbin/named/ns_sort.c
@@ -1,6 +1,6 @@
#if !defined(lint) && !defined(SABER)
static char sccsid[] = "@(#)ns_sort.c 4.10 (Berkeley) 3/3/91";
-static char rcsid[] = "$Id: ns_sort.c,v 1.2 1995/05/30 03:48:59 rgrimes Exp $";
+static char rcsid[] = "$Id: ns_sort.c,v 1.2.4.1 1995/08/30 04:08:19 davidg Exp $";
#endif /* not lint */
/*
diff --git a/usr.sbin/named/ns_stats.c b/usr.sbin/named/ns_stats.c
index b4c8958d501c..83b57348e2c1 100644
--- a/usr.sbin/named/ns_stats.c
+++ b/usr.sbin/named/ns_stats.c
@@ -1,6 +1,6 @@
#if !defined(lint) && !defined(SABER)
static char sccsid[] = "@(#)ns_stats.c 4.10 (Berkeley) 6/27/90";
-static char rcsid[] = "$Id: ns_stats.c,v 1.2 1995/05/30 03:49:00 rgrimes Exp $";
+static char rcsid[] = "$Id: ns_stats.c,v 1.2.4.1 1995/08/30 04:08:25 davidg Exp $";
#endif /* not lint */
/*
diff --git a/usr.sbin/named/options.h b/usr.sbin/named/options.h
index b6be5048dbf5..d00ae8ec7bbc 100644
--- a/usr.sbin/named/options.h
+++ b/usr.sbin/named/options.h
@@ -1,7 +1,7 @@
/* options.h - specify the conditionally-compiled features
* vix 28mar92 [moved out of the Makefile because they were getting too big]
*
- * $Id: options.h,v 1.3 1995/05/30 03:49:02 rgrimes Exp $
+ * $Id: options.h,v 1.3.4.1 1995/08/30 04:08:36 davidg Exp $
*/
/*
diff --git a/usr.sbin/named/pathnames.h b/usr.sbin/named/pathnames.h
index 5adf1a2ac4f5..d26571b80bf9 100644
--- a/usr.sbin/named/pathnames.h
+++ b/usr.sbin/named/pathnames.h
@@ -1,6 +1,6 @@
/*
* @(#)pathnames.h 5.4 (Berkeley) 6/1/90
- * $Id: pathnames.h,v 1.1.1.1 1994/09/22 19:46:13 pst Exp $
+ * $Id: pathnames.h,v 1.2 1995/05/30 03:49:03 rgrimes Exp $
*/
/*
diff --git a/usr.sbin/named/portability.h b/usr.sbin/named/portability.h
index a673279abdba..ce1d21e5f26f 100644
--- a/usr.sbin/named/portability.h
+++ b/usr.sbin/named/portability.h
@@ -1,7 +1,7 @@
/* defs.h - include or define things that aren't present on all systems
* vixie@decwrl 26dec92 [new]
*
- * $Id: portability.h,v 1.2 1995/05/30 03:49:04 rgrimes Exp $
+ * $Id: portability.h,v 1.2.4.1 1995/08/30 04:08:39 davidg Exp $
*/
/*
diff --git a/usr.sbin/named/storage.c b/usr.sbin/named/storage.c
index 15623f4580b7..d241cda27720 100644
--- a/usr.sbin/named/storage.c
+++ b/usr.sbin/named/storage.c
@@ -85,7 +85,7 @@ extern void panic __P((int, const char *));
* All rights reserved.
*/
#ifndef lint
-static char RCSid[] = "$Id: storage.c,v 1.3 1995/05/30 03:49:05 rgrimes Exp $";
+static char RCSid[] = "$Id: storage.c,v 1.3.4.1 1995/08/30 04:08:42 davidg Exp $";
#endif
#undef malloc
diff --git a/usr.sbin/named/tools/named.reload/named.reload.sh b/usr.sbin/named/tools/named.reload/named.reload.sh
index c800023ec63f..f26cca1d5077 100644
--- a/usr.sbin/named/tools/named.reload/named.reload.sh
+++ b/usr.sbin/named/tools/named.reload/named.reload.sh
@@ -1,7 +1,7 @@
#!/bin/sh -
#
# from named.reload 5.2 (Berkeley) 6/27/89
-# $Id: named.reload.sh,v 1.2 1994/09/22 20:45:23 pst Exp $
+# $Id: named.reload.sh,v 1.2.6.1 1995/08/30 04:08:56 davidg Exp $
#
exec %DESTSBIN%/%INDOT%ndc reload
diff --git a/usr.sbin/named/tools/named.restart/Makefile b/usr.sbin/named/tools/named.restart/Makefile
index bbeec2ab1192..2bd09aaff9c2 100644
--- a/usr.sbin/named/tools/named.restart/Makefile
+++ b/usr.sbin/named/tools/named.restart/Makefile
@@ -1,5 +1,5 @@
# @(#)Makefile 5.1 (Berkeley) 5/28/90
-# $Id: Makefile,v 1.3 1995/05/03 03:26:53 rgrimes Exp $
+# $Id: Makefile,v 1.3.4.1 1995/08/30 04:09:02 davidg Exp $
MAN8= named.restart.8
CLEANFILES+=named.restart
diff --git a/usr.sbin/named/tools/named.restart/named.restart.8 b/usr.sbin/named/tools/named.restart/named.restart.8
index 2e66615c7c01..dcfe87ee4625 100644
--- a/usr.sbin/named/tools/named.restart/named.restart.8
+++ b/usr.sbin/named/tools/named.restart/named.restart.8
@@ -52,7 +52,7 @@
.\" --Copyright--
.\"
.\" from hostname.7 6.4 (Berkeley) 1/16/90
-.\" $Id$
+.\" $Id: named.restart.8,v 1.3 1995/05/03 03:26:56 rgrimes Exp $
.\"
.TH NAMED.RESTART 8 "May 2, 1995"
.UC 5
diff --git a/usr.sbin/named/tools/named.restart/named.restart.sh b/usr.sbin/named/tools/named.restart/named.restart.sh
index eb4c7ecb6ba0..92906ced1af4 100644
--- a/usr.sbin/named/tools/named.restart/named.restart.sh
+++ b/usr.sbin/named/tools/named.restart/named.restart.sh
@@ -1,7 +1,7 @@
#!/bin/sh -
#
# from named.restart 5.4 (Berkeley) 6/27/89
-# $Id: named.restart.sh,v 1.3 1995/05/03 03:26:59 rgrimes Exp $
+# $Id: named.restart.sh,v 1.3.4.1 1995/08/30 04:09:05 davidg Exp $
#
exec %DESTSBIN%/%INDOT%ndc restart
diff --git a/usr.sbin/named/tools/nsquery/nsquery.c b/usr.sbin/named/tools/nsquery/nsquery.c
index c1ac28ea88f6..81124b071997 100644
--- a/usr.sbin/named/tools/nsquery/nsquery.c
+++ b/usr.sbin/named/tools/nsquery/nsquery.c
@@ -62,7 +62,7 @@ char copyright[] =
#ifndef lint
static char sccsid[] = "@(#)nsquery.c 4.8 (Berkeley) 6/1/90";
-static char rcsid[] = "$Id: nsquery.c,v 1.2 1994/09/22 20:45:28 pst Exp $";
+static char rcsid[] = "$Id: nsquery.c,v 1.3 1995/05/30 03:49:08 rgrimes Exp $";
#endif /* not lint */
#include <sys/param.h>
diff --git a/usr.sbin/named/tools/nstest/nstest.c b/usr.sbin/named/tools/nstest/nstest.c
index d40e748fa1e3..efb622119dd4 100644
--- a/usr.sbin/named/tools/nstest/nstest.c
+++ b/usr.sbin/named/tools/nstest/nstest.c
@@ -62,7 +62,7 @@ char copyright[] =
#ifndef lint
static char sccsid[] = "@(#)nstest.c 4.15 (Berkeley) 3/21/91";
-static char rcsid[] = "$Id: nstest.c,v 1.2 1994/09/22 20:45:31 pst Exp $";
+static char rcsid[] = "$Id: nstest.c,v 1.3 1995/05/30 03:49:09 rgrimes Exp $";
#endif /* not lint */
#include <sys/param.h>
diff --git a/usr.sbin/named/tree.h b/usr.sbin/named/tree.h
index 2cad7c1233ae..f04bf4706605 100644
--- a/usr.sbin/named/tree.h
+++ b/usr.sbin/named/tree.h
@@ -3,7 +3,7 @@
* vix 22jan93 [revisited; uses RCS, ANSI, POSIX; has bug fixes]
* vix 27jun86 [broken out of tree.c]
*
- * $Id: tree.h,v 1.1 1994/04/09 04:05:46 vixie Exp $
+ * $Id: tree.h,v 1.1.1.1 1994/09/22 19:46:14 pst Exp $
*/
diff --git a/usr.sbin/named/xfer/named-xfer.c b/usr.sbin/named/xfer/named-xfer.c
index f9533a751b78..ca77ceec6da0 100644
--- a/usr.sbin/named/xfer/named-xfer.c
+++ b/usr.sbin/named/xfer/named-xfer.c
@@ -70,7 +70,7 @@ char copyright[] =
#if !defined(lint) && !defined(SABER)
static char sccsid[] = "@(#)named-xfer.c 4.18 (Berkeley) 3/7/91";
-static char rcsid[] = "$Id: named-xfer.c,v 1.3 1995/05/30 03:49:10 rgrimes Exp $";
+static char rcsid[] = "$Id: named-xfer.c,v 1.3.4.1 1995/08/30 04:09:14 davidg Exp $";
#endif /* not lint */
#include <sys/param.h>
diff --git a/usr.sbin/ncrcontrol/ncrcontrol.8 b/usr.sbin/ncrcontrol/ncrcontrol.8
index 9b9a01a7b9b3..a3039807a5d3 100644
--- a/usr.sbin/ncrcontrol/ncrcontrol.8
+++ b/usr.sbin/ncrcontrol/ncrcontrol.8
@@ -22,7 +22,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.\" $Id: ncrcontrol.8,v 1.1 1994/10/13 17:43:51 se Exp $
+.\" $Id: ncrcontrol.8,v 1.2 1994/12/02 06:19:37 nate Exp $
.\"
.Dd September 16, 1994
.Dt NCRCONTROL 8
diff --git a/usr.sbin/ncrcontrol/ncrcontrol.c b/usr.sbin/ncrcontrol/ncrcontrol.c
index b9467e86046a..f1ffbe1783ad 100644
--- a/usr.sbin/ncrcontrol/ncrcontrol.c
+++ b/usr.sbin/ncrcontrol/ncrcontrol.c
@@ -1,6 +1,6 @@
/**************************************************************************
**
-** $Id: ncrcontrol.c,v 1.9 1995/09/14 18:14:28 se Exp $
+** $Id: ncrcontrol.c,v 1.8.4.1 1995/10/06 10:50:53 davidg Exp $
**
** Utility for NCR 53C810 device driver.
**
diff --git a/usr.sbin/nslookup/debug.c b/usr.sbin/nslookup/debug.c
index 24a5ca7e60fc..c1021f3af470 100644
--- a/usr.sbin/nslookup/debug.c
+++ b/usr.sbin/nslookup/debug.c
@@ -55,7 +55,7 @@
#ifndef lint
static char sccsid[] = "@(#)debug.c 5.26 (Berkeley) 3/21/91";
-static char rcsid[] = "$Id: debug.c,v 1.3 1995/05/30 03:49:13 rgrimes Exp $";
+static char rcsid[] = "$Id: debug.c,v 1.3.4.1 1995/08/30 04:09:18 davidg Exp $";
#endif /* not lint */
/*
diff --git a/usr.sbin/nslookup/getinfo.c b/usr.sbin/nslookup/getinfo.c
index 83efe4fcc72a..8fdeb225bf62 100644
--- a/usr.sbin/nslookup/getinfo.c
+++ b/usr.sbin/nslookup/getinfo.c
@@ -55,7 +55,7 @@
#ifndef lint
static char sccsid[] = "@(#)getinfo.c 5.26 (Berkeley) 3/21/91";
-static char rcsid[] = "$Id: getinfo.c,v 1.2 1994/09/22 21:50:33 pst Exp $";
+static char rcsid[] = "$Id: getinfo.c,v 1.3 1995/05/30 03:49:14 rgrimes Exp $";
#endif /* not lint */
/*
diff --git a/usr.sbin/nslookup/list.c b/usr.sbin/nslookup/list.c
index da9c7e07fb8b..7d86dbd8428d 100644
--- a/usr.sbin/nslookup/list.c
+++ b/usr.sbin/nslookup/list.c
@@ -55,7 +55,7 @@
#ifndef lint
static char sccsid[] = "@(#)list.c 5.23 (Berkeley) 3/21/91";
-static char rcsid[] = "$Id: list.c,v 1.3 1995/05/30 03:49:15 rgrimes Exp $";
+static char rcsid[] = "$Id: list.c,v 1.3.4.1 1995/08/30 04:09:22 davidg Exp $";
#endif /* not lint */
/*
diff --git a/usr.sbin/nslookup/main.c b/usr.sbin/nslookup/main.c
index 083acecb39cc..3e55aa4f76cb 100644
--- a/usr.sbin/nslookup/main.c
+++ b/usr.sbin/nslookup/main.c
@@ -61,7 +61,7 @@ char copyright[] =
#ifndef lint
static char sccsid[] = "@(#)main.c 5.42 (Berkeley) 3/3/91";
-static char rcsid[] = "$Id: main.c,v 1.2 1994/09/22 21:50:36 pst Exp $";
+static char rcsid[] = "$Id: main.c,v 1.3 1995/05/30 03:49:16 rgrimes Exp $";
#endif /* not lint */
/*
diff --git a/usr.sbin/nslookup/nslookup.help b/usr.sbin/nslookup/nslookup.help
index 1e8b97c9d814..0641491e878e 100644
--- a/usr.sbin/nslookup/nslookup.help
+++ b/usr.sbin/nslookup/nslookup.help
@@ -1,4 +1,4 @@
-$Id: nslookup.help,v 1.1.1.1 1994/09/22 21:36:02 pst Exp $
+$Id: nslookup.help,v 1.1.1.1.6.1 1995/08/30 04:09:24 davidg Exp $
Commands: (identifiers are shown in uppercase, [] means optional)
NAME - print info about the host/domain NAME using default server
diff --git a/usr.sbin/nslookup/pathnames.h b/usr.sbin/nslookup/pathnames.h
index 84a2e33cbca0..013a012d2d55 100644
--- a/usr.sbin/nslookup/pathnames.h
+++ b/usr.sbin/nslookup/pathnames.h
@@ -55,7 +55,7 @@
/*
* @(#)pathnames.h 5.1 (Berkeley) 5/28/90
- * $Id: pathnames.h,v 1.2 1994/09/22 21:50:37 pst Exp $
+ * $Id: pathnames.h,v 1.3 1995/05/30 03:49:17 rgrimes Exp $
*/
#define _PATH_NSLOOKUPRC "/.nslookuprc"
diff --git a/usr.sbin/nslookup/res.h b/usr.sbin/nslookup/res.h
index fcad610ad980..057790f4ab3b 100644
--- a/usr.sbin/nslookup/res.h
+++ b/usr.sbin/nslookup/res.h
@@ -55,7 +55,7 @@
/*
* @(#)res.h 5.10 (Berkeley) 6/1/90
- * $Id: res.h,v 1.1.1.1 1994/09/22 21:36:02 pst Exp $
+ * $Id: res.h,v 1.2 1995/05/30 03:49:17 rgrimes Exp $
*/
/*
diff --git a/usr.sbin/nslookup/send.c b/usr.sbin/nslookup/send.c
index 8f34de38ba74..b7605dbc13e4 100644
--- a/usr.sbin/nslookup/send.c
+++ b/usr.sbin/nslookup/send.c
@@ -55,7 +55,7 @@
#ifndef lint
static char sccsid[] = "@(#)send.c 5.18 (Berkeley) 3/2/91";
-static char rcsid[] = "$Id: send.c,v 1.2 1994/09/22 21:50:38 pst Exp $";
+static char rcsid[] = "$Id: send.c,v 1.3 1995/05/30 03:49:18 rgrimes Exp $";
#endif /* not lint */
/*
diff --git a/usr.sbin/nslookup/skip.c b/usr.sbin/nslookup/skip.c
index 068f8179dbb0..2f5a7a61a3f1 100644
--- a/usr.sbin/nslookup/skip.c
+++ b/usr.sbin/nslookup/skip.c
@@ -55,7 +55,7 @@
#ifndef lint
static char sccsid[] = "@(#)skip.c 5.12 (Berkeley) 3/21/91";
-static char rcsid[] = "$Id: skip.c,v 1.2 1994/09/22 21:50:39 pst Exp $";
+static char rcsid[] = "$Id: skip.c,v 1.3 1995/05/30 03:49:19 rgrimes Exp $";
#endif /* not lint */
/*
diff --git a/usr.sbin/nslookup/subr.c b/usr.sbin/nslookup/subr.c
index d7cca0e2a66a..2227d09783dc 100644
--- a/usr.sbin/nslookup/subr.c
+++ b/usr.sbin/nslookup/subr.c
@@ -55,7 +55,7 @@
#ifndef lint
static char sccsid[] = "@(#)subr.c 5.24 (Berkeley) 3/2/91";
-static char rcsid[] = "$Id: subr.c,v 1.3 1995/05/30 03:49:20 rgrimes Exp $";
+static char rcsid[] = "$Id: subr.c,v 1.3.4.1 1995/08/30 04:09:27 davidg Exp $";
#endif /* not lint */
/*
diff --git a/usr.sbin/pcvt/kbdio/kbdio.y b/usr.sbin/pcvt/kbdio/kbdio.y
index 5a8115768694..fda0d1115869 100644
--- a/usr.sbin/pcvt/kbdio/kbdio.y
+++ b/usr.sbin/pcvt/kbdio/kbdio.y
@@ -34,10 +34,15 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ident "$Header: /home/ncvs/src/usr.sbin/pcvt/kbdio/kbdio.y,v 1.1.1.1 1995/02/05 13:49:24 jkh Exp $"
+#ident "$Header: /home/ncvs/src/usr.sbin/pcvt/kbdio/kbdio.y,v 1.2 1995/04/01 17:16:26 joerg Exp $"
/*
* $Log: kbdio.y,v $
+ * Revision 1.2 1995/04/01 17:16:26 joerg
+ * Update pcvt to 3.20b23
+ *
+ * Submitted by: Hellmuth Michaelis <hm@altona.hamburg.com>
+ *
* Revision 1.1.1.1 1995/02/05 13:49:24 jkh
* PCVT userland utilities.
* Submitted by: hm
diff --git a/usr.sbin/pcvt/kbdio/lex.l b/usr.sbin/pcvt/kbdio/lex.l
index a829dd2dd96b..e3aa6f5fdafe 100644
--- a/usr.sbin/pcvt/kbdio/lex.l
+++ b/usr.sbin/pcvt/kbdio/lex.l
@@ -33,10 +33,15 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ident "$Header: /home/ncvs/src/usr.sbin/pcvt/kbdio/lex.l,v 1.1.1.1 1995/02/05 13:49:24 jkh Exp $"
+#ident "$Header: /home/ncvs/src/usr.sbin/pcvt/kbdio/lex.l,v 1.2 1995/04/01 17:16:27 joerg Exp $"
/*
* $Log: lex.l,v $
+ * Revision 1.2 1995/04/01 17:16:27 joerg
+ * Update pcvt to 3.20b23
+ *
+ * Submitted by: Hellmuth Michaelis <hm@altona.hamburg.com>
+ *
* Revision 1.1.1.1 1995/02/05 13:49:24 jkh
* PCVT userland utilities.
* Submitted by: hm
diff --git a/usr.sbin/pcvt/set2061/compiler.h b/usr.sbin/pcvt/set2061/compiler.h
index 9fbdb56c9159..d17ef01b7cc0 100644
--- a/usr.sbin/pcvt/set2061/compiler.h
+++ b/usr.sbin/pcvt/set2061/compiler.h
@@ -20,7 +20,7 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*
- * $Header: /home/ncvs/src/usr.sbin/pcvt/set2061/compiler.h,v 1.1.1.1 1995/02/05 13:49:25 jkh Exp $
+ * $Header: /home/ncvs/src/usr.sbin/pcvt/set2061/compiler.h,v 1.2 1995/05/30 03:49:45 rgrimes Exp $
*/
diff --git a/usr.sbin/pcvt/vgaio/lex.l b/usr.sbin/pcvt/vgaio/lex.l
index 5ff8622df236..4938e0441728 100644
--- a/usr.sbin/pcvt/vgaio/lex.l
+++ b/usr.sbin/pcvt/vgaio/lex.l
@@ -33,10 +33,14 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ident "$Header: /b/source/CVS/src/sys/arch/i386/isa/pcvt/Util/vgaio/lex.l,v 1.1 1994/03/29 02:47:20 mycroft Exp $"
+#ident "$Header: /home/ncvs/src/usr.sbin/pcvt/vgaio/lex.l,v 1.1.1.1 1995/02/05 13:49:23 jkh Exp $"
/*
* $Log: lex.l,v $
+ * Revision 1.1.1.1 1995/02/05 13:49:23 jkh
+ * PCVT userland utilities.
+ * Submitted by: hm
+ *
* Revision 1.1 1994/03/29 02:47:20 mycroft
* pcvt 3.0, with some performance enhancements by Joerg Wunsch and me.
*
diff --git a/usr.sbin/pcvt/vgaio/vgaio.8 b/usr.sbin/pcvt/vgaio/vgaio.8
index aa0c93c2b192..0488160179da 100644
--- a/usr.sbin/pcvt/vgaio/vgaio.8
+++ b/usr.sbin/pcvt/vgaio/vgaio.8
@@ -31,7 +31,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.\" $Header: /b/source/CVS/src/sys/arch/i386/isa/pcvt/Util/vgaio/vgaio.8,v 1.1 1994/03/29 02:47:23 mycroft Exp $
+.\" $Header: /home/ncvs/src/usr.sbin/pcvt/vgaio/vgaio.8,v 1.1.1.1 1995/02/05 13:49:23 jkh Exp $
.\" -hm updated 31.12.94
.\"
.Dd December 31, 1994
diff --git a/usr.sbin/pcvt/vgaio/vgaio.h b/usr.sbin/pcvt/vgaio/vgaio.h
index e313f861aa1a..a4bf925580d2 100644
--- a/usr.sbin/pcvt/vgaio/vgaio.h
+++ b/usr.sbin/pcvt/vgaio/vgaio.h
@@ -37,6 +37,9 @@
* The author may be reached unter <joerg_wunsch@uriah.sax.de>
*
* $Log: vgaio.h,v $
+ * Revision 1.2 1995/03/05 22:46:27 joerg
+ * Upgrade to beta 3.20/b22
+ *
* Revision 1.1 1994/03/29 02:47:25 mycroft
* pcvt 3.0, with some performance enhancements by Joerg Wunsch and me.
*
diff --git a/usr.sbin/pcvt/vgaio/vgaio.y b/usr.sbin/pcvt/vgaio/vgaio.y
index 0e7dd7924b4a..4e9883c34e67 100644
--- a/usr.sbin/pcvt/vgaio/vgaio.y
+++ b/usr.sbin/pcvt/vgaio/vgaio.y
@@ -33,10 +33,14 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ident "$Header: /b/source/CVS/src/sys/arch/i386/isa/pcvt/Util/vgaio/vgaio.y,v 1.1 1994/03/29 02:47:27 mycroft Exp $"
+#ident "$Header: /home/ncvs/src/usr.sbin/pcvt/vgaio/vgaio.y,v 1.1.1.1 1995/02/05 13:49:24 jkh Exp $"
/*
* $Log: vgaio.y,v $
+ * Revision 1.1.1.1 1995/02/05 13:49:24 jkh
+ * PCVT userland utilities.
+ * Submitted by: hm
+ *
* Revision 1.1 1994/03/29 02:47:27 mycroft
* pcvt 3.0, with some performance enhancements by Joerg Wunsch and me.
*
diff --git a/usr.sbin/pkg_install/add/add.h b/usr.sbin/pkg_install/add/add.h
index 87fc70a60b08..d2d89702d4cd 100644
--- a/usr.sbin/pkg_install/add/add.h
+++ b/usr.sbin/pkg_install/add/add.h
@@ -1,4 +1,4 @@
-/* $Id: add.h,v 1.5.4.1 1995/10/09 11:16:17 jkh Exp $ */
+/* $Id: add.h,v 1.5.4.2 1995/10/14 19:10:59 jkh Exp $ */
/*
* FreeBSD install - a package for the installation and maintainance
diff --git a/usr.sbin/pkg_install/add/extract.c b/usr.sbin/pkg_install/add/extract.c
index 4fb176725402..c8980ddb5c8b 100644
--- a/usr.sbin/pkg_install/add/extract.c
+++ b/usr.sbin/pkg_install/add/extract.c
@@ -1,5 +1,5 @@
#ifndef lint
-static const char *rcsid = "$Id: extract.c,v 1.6 1994/12/06 00:51:32 jkh Exp $";
+static const char *rcsid = "$Id: extract.c,v 1.7 1995/05/19 22:40:54 jkh Exp $";
#endif
/*
diff --git a/usr.sbin/pkg_install/add/futil.c b/usr.sbin/pkg_install/add/futil.c
index 7cf18e66ca1f..f27e49678eb9 100644
--- a/usr.sbin/pkg_install/add/futil.c
+++ b/usr.sbin/pkg_install/add/futil.c
@@ -1,5 +1,5 @@
#ifndef lint
-static const char *rcsid = "$Id: futil.c,v 1.3 1994/12/06 00:51:32 jkh Exp $";
+static const char *rcsid = "$Id: futil.c,v 1.4 1995/05/30 03:49:52 rgrimes Exp $";
#endif
/*
diff --git a/usr.sbin/pkg_install/add/main.c b/usr.sbin/pkg_install/add/main.c
index 87252cbb81bc..318fdb05cfa2 100644
--- a/usr.sbin/pkg_install/add/main.c
+++ b/usr.sbin/pkg_install/add/main.c
@@ -1,5 +1,5 @@
#ifndef lint
-static char *rcsid = "$Id: main.c,v 1.7.4.3 1995/11/03 02:54:56 jkh Exp $";
+static char *rcsid = "$Id: main.c,v 1.7.4.4 1995/11/10 06:44:41 jkh Exp $";
#endif
/*
diff --git a/usr.sbin/pkg_install/add/perform.c b/usr.sbin/pkg_install/add/perform.c
index 658f245ee39d..531d933d7a3e 100644
--- a/usr.sbin/pkg_install/add/perform.c
+++ b/usr.sbin/pkg_install/add/perform.c
@@ -1,5 +1,5 @@
#ifndef lint
-static const char *rcsid = "$Id: perform.c,v 1.26.2.7 1995/11/03 02:54:57 jkh Exp $";
+static const char *rcsid = "$Id: perform.c,v 1.26.2.8 1995/11/10 06:44:42 jkh Exp $";
#endif
/*
diff --git a/usr.sbin/pkg_install/create/create.h b/usr.sbin/pkg_install/create/create.h
index ef49f146b0e8..60dd490b3835 100644
--- a/usr.sbin/pkg_install/create/create.h
+++ b/usr.sbin/pkg_install/create/create.h
@@ -1,4 +1,4 @@
-/* $Id: create.h,v 1.8 1995/04/22 00:03:06 jkh Exp $ */
+/* $Id: create.h,v 1.8.4.1 1995/10/09 11:16:23 jkh Exp $ */
/*
* FreeBSD install - a package for the installation and maintainance
diff --git a/usr.sbin/pkg_install/create/main.c b/usr.sbin/pkg_install/create/main.c
index 8970ea795529..757a0e23acd1 100644
--- a/usr.sbin/pkg_install/create/main.c
+++ b/usr.sbin/pkg_install/create/main.c
@@ -1,5 +1,5 @@
#ifndef lint
-static const char *rcsid = "$Id: main.c,v 1.11 1995/05/30 03:49:55 rgrimes Exp $";
+static const char *rcsid = "$Id: main.c,v 1.11.4.1 1995/10/09 11:16:24 jkh Exp $";
#endif
/*
diff --git a/usr.sbin/pkg_install/create/perform.c b/usr.sbin/pkg_install/create/perform.c
index 275626b8f58f..b1a67ec82162 100644
--- a/usr.sbin/pkg_install/create/perform.c
+++ b/usr.sbin/pkg_install/create/perform.c
@@ -1,5 +1,5 @@
#ifndef lint
-static const char *rcsid = "$Id: perform.c,v 1.27 1995/05/10 22:33:55 jkh Exp $";
+static const char *rcsid = "$Id: perform.c,v 1.27.4.1 1995/10/14 19:11:22 jkh Exp $";
#endif
/*
diff --git a/usr.sbin/pkg_install/create/pkg_create.1 b/usr.sbin/pkg_install/create/pkg_create.1
index cd98bf0101b9..c262d7920401 100644
--- a/usr.sbin/pkg_install/create/pkg_create.1
+++ b/usr.sbin/pkg_install/create/pkg_create.1
@@ -15,7 +15,7 @@
.\"
.\"
.\" @(#)pkg_create.8
-.\" $Id: pkg_create.1,v 1.13 1995/04/09 15:05:01 jkh Exp $
+.\" $Id: pkg_create.1,v 1.14 1995/04/22 00:03:12 jkh Exp $
.\"
.\" hacked up by John Kohl for NetBSD--fixed a few bugs, extended keywords,
.\" added dependency tracking, etc.
diff --git a/usr.sbin/pkg_install/create/pl.c b/usr.sbin/pkg_install/create/pl.c
index 9eb98a38458e..2c4551bb8f8a 100644
--- a/usr.sbin/pkg_install/create/pl.c
+++ b/usr.sbin/pkg_install/create/pl.c
@@ -1,5 +1,5 @@
#ifndef lint
-static const char *rcsid = "$Id: pl.c,v 1.6 1994/12/06 00:51:38 jkh Exp $";
+static const char *rcsid = "$Id: pl.c,v 1.7 1995/05/30 03:49:56 rgrimes Exp $";
#endif
/*
diff --git a/usr.sbin/pkg_install/delete/delete.h b/usr.sbin/pkg_install/delete/delete.h
index e618d182611c..44ae0201159e 100644
--- a/usr.sbin/pkg_install/delete/delete.h
+++ b/usr.sbin/pkg_install/delete/delete.h
@@ -1,4 +1,4 @@
-/* $Id: delete.h,v 1.1.1.1 1993/08/26 01:19:54 jkh Exp $ */
+/* $Id: delete.h,v 1.2 1994/12/06 00:51:39 jkh Exp $ */
/*
* FreeBSD install - a package for the installation and maintainance
diff --git a/usr.sbin/pkg_install/delete/main.c b/usr.sbin/pkg_install/delete/main.c
index 66a4f8eb94eb..5a907c76765c 100644
--- a/usr.sbin/pkg_install/delete/main.c
+++ b/usr.sbin/pkg_install/delete/main.c
@@ -1,5 +1,5 @@
#ifndef lint
-static char *rcsid = "$Id: main.c,v 1.3 1994/12/06 00:51:40 jkh Exp $";
+static char *rcsid = "$Id: main.c,v 1.4 1995/05/30 03:49:57 rgrimes Exp $";
#endif
/*
diff --git a/usr.sbin/pkg_install/delete/perform.c b/usr.sbin/pkg_install/delete/perform.c
index 19b9f2e5031c..fefe6e8fbe12 100644
--- a/usr.sbin/pkg_install/delete/perform.c
+++ b/usr.sbin/pkg_install/delete/perform.c
@@ -1,5 +1,5 @@
#ifndef lint
-static const char *rcsid = "$Id: perform.c,v 1.7 1995/04/19 14:01:58 jkh Exp $";
+static const char *rcsid = "$Id: perform.c,v 1.7.4.1 1995/11/10 06:44:47 jkh Exp $";
#endif
/*
diff --git a/usr.sbin/pkg_install/info/info.h b/usr.sbin/pkg_install/info/info.h
index db803cc53544..56ad7dbfaab0 100644
--- a/usr.sbin/pkg_install/info/info.h
+++ b/usr.sbin/pkg_install/info/info.h
@@ -1,4 +1,4 @@
-/* $Id: info.h,v 1.7 1995/01/05 01:10:10 swallace Exp $ */
+/* $Id: info.h,v 1.7.4.1 1995/10/09 11:16:25 jkh Exp $ */
/*
* FreeBSD install - a package for the installation and maintainance
diff --git a/usr.sbin/pkg_install/info/main.c b/usr.sbin/pkg_install/info/main.c
index cfef7822cc61..bcd78d945537 100644
--- a/usr.sbin/pkg_install/info/main.c
+++ b/usr.sbin/pkg_install/info/main.c
@@ -1,5 +1,5 @@
#ifndef lint
-static char *rcsid = "$Id: main.c,v 1.9 1995/05/30 03:49:59 rgrimes Exp $";
+static char *rcsid = "$Id: main.c,v 1.9.4.1 1995/10/09 11:16:26 jkh Exp $";
#endif
/*
diff --git a/usr.sbin/pkg_install/info/perform.c b/usr.sbin/pkg_install/info/perform.c
index fb23e13c984d..b44bce30cb20 100644
--- a/usr.sbin/pkg_install/info/perform.c
+++ b/usr.sbin/pkg_install/info/perform.c
@@ -1,5 +1,5 @@
#ifndef lint
-static const char *rcsid = "$Id: perform.c,v 1.16.4.2 1995/10/09 11:16:27 jkh Exp $";
+static const char *rcsid = "$Id: perform.c,v 1.16.4.3 1995/10/14 19:11:27 jkh Exp $";
#endif
/*
diff --git a/usr.sbin/pkg_install/info/show.c b/usr.sbin/pkg_install/info/show.c
index a4999790d13d..f88c05949a49 100644
--- a/usr.sbin/pkg_install/info/show.c
+++ b/usr.sbin/pkg_install/info/show.c
@@ -1,5 +1,5 @@
#ifndef lint
-static const char *rcsid = "$Id: show.c,v 1.7 1995/07/30 01:08:34 ache Exp $";
+static const char *rcsid = "$Id: show.c,v 1.6.4.1 1995/08/30 07:49:56 jkh Exp $";
#endif
/*
diff --git a/usr.sbin/pkg_install/lib/exec.c b/usr.sbin/pkg_install/lib/exec.c
index dd6b184fffd8..1b6a7191eda3 100644
--- a/usr.sbin/pkg_install/lib/exec.c
+++ b/usr.sbin/pkg_install/lib/exec.c
@@ -1,5 +1,5 @@
#ifndef lint
-static const char *rcsid = "$Id: exec.c,v 1.2 1993/09/03 23:01:12 jkh Exp $";
+static const char *rcsid = "$Id: exec.c,v 1.3 1994/12/06 00:51:47 jkh Exp $";
#endif
/*
diff --git a/usr.sbin/pkg_install/lib/file.c b/usr.sbin/pkg_install/lib/file.c
index 25447069b227..db4358d227c4 100644
--- a/usr.sbin/pkg_install/lib/file.c
+++ b/usr.sbin/pkg_install/lib/file.c
@@ -1,5 +1,5 @@
#ifndef lint
-static const char *rcsid = "$Id: file.c,v 1.10.4.7 1995/10/31 20:35:20 jkh Exp $";
+static const char *rcsid = "$Id: file.c,v 1.10.4.8 1995/11/10 06:44:51 jkh Exp $";
#endif
/*
diff --git a/usr.sbin/pkg_install/lib/ftp.c b/usr.sbin/pkg_install/lib/ftp.c
index 7b78ee4c9754..cce5fb2d333e 100644
--- a/usr.sbin/pkg_install/lib/ftp.c
+++ b/usr.sbin/pkg_install/lib/ftp.c
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id: ftp.c,v 1.2 1995/07/31 02:27:58 jkh Exp $
+ * $Id: ftp.c,v 1.3 1995/08/01 07:16:51 jkh Exp $
*
* Return values have been sanitized:
* -1 error, but you (still) have a session.
diff --git a/usr.sbin/pkg_install/lib/global.c b/usr.sbin/pkg_install/lib/global.c
index d411f5e28550..bc8c1a04b066 100644
--- a/usr.sbin/pkg_install/lib/global.c
+++ b/usr.sbin/pkg_install/lib/global.c
@@ -1,5 +1,5 @@
#ifndef lint
-static const char *rcsid = "$Id: global.c,v 1.1.1.1 1993/08/26 01:19:55 jkh Exp $";
+static const char *rcsid = "$Id: global.c,v 1.2 1994/04/05 14:08:45 jkh Exp $";
#endif
/*
diff --git a/usr.sbin/pkg_install/lib/lib.h b/usr.sbin/pkg_install/lib/lib.h
index d3cffeaad743..4d3150faf807 100644
--- a/usr.sbin/pkg_install/lib/lib.h
+++ b/usr.sbin/pkg_install/lib/lib.h
@@ -1,4 +1,4 @@
-/* $Id: lib.h,v 1.16.4.2 1995/10/09 11:16:29 jkh Exp $ */
+/* $Id: lib.h,v 1.16.4.3 1995/10/14 19:11:45 jkh Exp $ */
/*
* FreeBSD install - a package for the installation and maintainance
diff --git a/usr.sbin/pkg_install/lib/msg.c b/usr.sbin/pkg_install/lib/msg.c
index edbce5f86ab9..3c1a13a53a1d 100644
--- a/usr.sbin/pkg_install/lib/msg.c
+++ b/usr.sbin/pkg_install/lib/msg.c
@@ -1,5 +1,5 @@
#ifndef lint
-static const char *rcsid = "$Id: msg.c,v 1.6 1995/08/26 10:15:15 jkh Exp $";
+static const char *rcsid = "$Id: msg.c,v 1.5.4.1 1995/08/30 07:50:00 jkh Exp $";
#endif
/*
diff --git a/usr.sbin/pkg_install/lib/pen.c b/usr.sbin/pkg_install/lib/pen.c
index 305d5bc53ba3..5d07e6eade05 100644
--- a/usr.sbin/pkg_install/lib/pen.c
+++ b/usr.sbin/pkg_install/lib/pen.c
@@ -1,5 +1,5 @@
#ifndef lint
-static const char *rcsid = "$Id: pen.c,v 1.13.4.5 1995/10/15 14:08:42 jkh Exp $";
+static const char *rcsid = "$Id: pen.c,v 1.13.4.6 1995/10/23 12:33:43 jkh Exp $";
#endif
/*
diff --git a/usr.sbin/pkg_install/lib/plist.c b/usr.sbin/pkg_install/lib/plist.c
index 9a0124b01f4f..444f8a58876c 100644
--- a/usr.sbin/pkg_install/lib/plist.c
+++ b/usr.sbin/pkg_install/lib/plist.c
@@ -1,5 +1,5 @@
#ifndef lint
-static const char *rcsid = "$Id: plist.c,v 1.13.4.1 1995/08/30 07:50:02 jkh Exp $";
+static const char *rcsid = "$Id: plist.c,v 1.13.4.2 1995/11/10 06:44:53 jkh Exp $";
#endif
/*
diff --git a/usr.sbin/pkg_install/tkpkg b/usr.sbin/pkg_install/tkpkg
index 5a3e500ae776..b7dc70f60b70 100755
--- a/usr.sbin/pkg_install/tkpkg
+++ b/usr.sbin/pkg_install/tkpkg
@@ -1,7 +1,11 @@
#!/usr/local/bin/wish -f
-#$Id: tkpkg,v 1.1 1994/01/06 08:16:20 jkh Exp $
+#$Id: tkpkg,v 1.2 1994/12/06 00:51:21 jkh Exp $
#
#$Log: tkpkg,v $
+# Revision 1.2 1994/12/06 00:51:21 jkh
+# Many of John T. Kohl's patches from NetBSD. Thanks, John!
+# Submitted by: jkohl
+#
# Revision 1.1 1994/01/06 08:16:20 jkh
# Cleaning house.
#
diff --git a/usr.sbin/pkg_manage/Makefile b/usr.sbin/pkg_manage/Makefile
index 6367244de924..bf0bd495d907 100644
--- a/usr.sbin/pkg_manage/Makefile
+++ b/usr.sbin/pkg_manage/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.5 1995/05/27 20:05:35 jkh Exp $
+# $Id: Makefile,v 1.6 1995/05/30 03:50:08 rgrimes Exp $
PROG= pkg_manage
SRCS= pkg_main.c pkg_manage.c pkg_ui.c version.c
diff --git a/usr.sbin/ppp/Makefile b/usr.sbin/ppp/Makefile
index 295121f0d465..712ee5eecf01 100644
--- a/usr.sbin/ppp/Makefile
+++ b/usr.sbin/ppp/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.3 1995/09/02 17:20:48 amurai Exp $
+# $Id: Makefile,v 1.2.4.1 1995/10/06 11:24:29 davidg Exp $
PROG= ppp
SRCS= async.c auth.c ccp.c chap.c chat.c command.c filter.c fsm.c hdlc.c \
diff --git a/usr.sbin/ppp/arp.c b/usr.sbin/ppp/arp.c
index 4969f2d6fa81..4d10e3efe647 100644
--- a/usr.sbin/ppp/arp.c
+++ b/usr.sbin/ppp/arp.c
@@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: arp.c,v 1.1 1995/02/26 12:17:09 amurai Exp $
+ * $Id: arp.c,v 1.2 1995/05/30 03:50:23 rgrimes Exp $
*
*/
diff --git a/usr.sbin/ppp/async.c b/usr.sbin/ppp/async.c
index 70c1a483df28..4c650b41ff1b 100644
--- a/usr.sbin/ppp/async.c
+++ b/usr.sbin/ppp/async.c
@@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: async.c,v 1.3 1995/04/16 12:06:39 amurai Exp $
+ * $Id: async.c,v 1.4 1995/05/30 03:50:24 rgrimes Exp $
*
*/
#include "fsm.h"
diff --git a/usr.sbin/ppp/auth.c b/usr.sbin/ppp/auth.c
index 76c981f519a8..b5af10fcb2d6 100644
--- a/usr.sbin/ppp/auth.c
+++ b/usr.sbin/ppp/auth.c
@@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: auth.c,v 1.5 1995/09/02 17:20:49 amurai Exp $
+ * $Id: auth.c,v 1.4.4.1 1995/10/06 11:24:30 davidg Exp $
*
* TODO:
* o Implement check against with registered IP addresses.
diff --git a/usr.sbin/ppp/auth.h b/usr.sbin/ppp/auth.h
index 952ff2e98b27..9c8e346edc6a 100644
--- a/usr.sbin/ppp/auth.h
+++ b/usr.sbin/ppp/auth.h
@@ -15,7 +15,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: auth.h,v 1.1 1995/02/27 03:17:51 amurai Exp $
+ * $Id: auth.h,v 1.2 1995/05/30 03:50:26 rgrimes Exp $
*
* TODO:
*/
diff --git a/usr.sbin/ppp/ccp.c b/usr.sbin/ppp/ccp.c
index eb7287bb212b..09ccbdf775fc 100644
--- a/usr.sbin/ppp/ccp.c
+++ b/usr.sbin/ppp/ccp.c
@@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: ccp.c,v 1.2 1995/02/26 12:17:14 amurai Exp $
+ * $Id: ccp.c,v 1.3 1995/05/30 03:50:27 rgrimes Exp $
*
* TODO:
* o Support other compression protocols
diff --git a/usr.sbin/ppp/ccp.h b/usr.sbin/ppp/ccp.h
index a544430acc16..0590a9f0cd8f 100644
--- a/usr.sbin/ppp/ccp.h
+++ b/usr.sbin/ppp/ccp.h
@@ -15,7 +15,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id:$
+ * $Id: ccp.h,v 1.2 1995/02/26 12:17:15 amurai Exp $
*
* TODO:
*/
diff --git a/usr.sbin/ppp/cdefs.h b/usr.sbin/ppp/cdefs.h
index 85ba8a5b3cfc..41205a43b9ff 100644
--- a/usr.sbin/ppp/cdefs.h
+++ b/usr.sbin/ppp/cdefs.h
@@ -15,7 +15,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id:$
+ * $Id: cdefs.h,v 1.1 1995/02/27 03:17:54 amurai Exp $
*
* TODO:
*/
diff --git a/usr.sbin/ppp/chap.c b/usr.sbin/ppp/chap.c
index adc43afb0b4c..c56cd9641cc2 100644
--- a/usr.sbin/ppp/chap.c
+++ b/usr.sbin/ppp/chap.c
@@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: chap.c,v 1.2 1995/02/26 12:17:17 amurai Exp $
+ * $Id: chap.c,v 1.3 1995/05/30 03:50:28 rgrimes Exp $
*
* TODO:
*/
diff --git a/usr.sbin/ppp/chap.h b/usr.sbin/ppp/chap.h
index edb09b31c47a..3c5262cdbb20 100644
--- a/usr.sbin/ppp/chap.h
+++ b/usr.sbin/ppp/chap.h
@@ -15,7 +15,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id:$
+ * $Id: chap.h,v 1.2 1995/02/26 12:17:19 amurai Exp $
*
* TODO:
*/
diff --git a/usr.sbin/ppp/chat.c b/usr.sbin/ppp/chat.c
index 3c6523a91e6c..3432f34067b5 100644
--- a/usr.sbin/ppp/chat.c
+++ b/usr.sbin/ppp/chat.c
@@ -18,7 +18,7 @@
* Columbus, OH 43221
* (614)451-1883
*
- * $Id: chat.c,v 1.5 1995/09/02 17:20:50 amurai Exp $
+ * $Id: chat.c,v 1.4.4.1 1995/10/06 11:24:31 davidg Exp $
*
* TODO:
* o Support more UUCP compatible control sequences.
diff --git a/usr.sbin/ppp/command.c b/usr.sbin/ppp/command.c
index 9f045fd9f35d..a6298aed6e6a 100644
--- a/usr.sbin/ppp/command.c
+++ b/usr.sbin/ppp/command.c
@@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: command.c,v 1.9 1995/09/02 17:20:50 amurai Exp $
+ * $Id: command.c,v 1.5.4.2 1995/10/06 11:24:32 davidg Exp $
*
*/
#include <ctype.h>
diff --git a/usr.sbin/ppp/command.h b/usr.sbin/ppp/command.h
index e8beaed2e6b2..eaaef4d60190 100644
--- a/usr.sbin/ppp/command.h
+++ b/usr.sbin/ppp/command.h
@@ -15,7 +15,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id:$
+ * $Id: command.h,v 1.2 1995/02/26 12:17:24 amurai Exp $
*
* TODO:
*/
diff --git a/usr.sbin/ppp/defs.h b/usr.sbin/ppp/defs.h
index 0bf97b15478e..e7e2fec3c74d 100644
--- a/usr.sbin/ppp/defs.h
+++ b/usr.sbin/ppp/defs.h
@@ -15,7 +15,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: defs.h,v 1.3 1995/09/02 17:20:51 amurai Exp $
+ * $Id: defs.h,v 1.2.4.1 1995/10/06 11:24:33 davidg Exp $
*
* TODO:
*/
diff --git a/usr.sbin/ppp/filter.c b/usr.sbin/ppp/filter.c
index 17113be1c7d0..17adc14541f2 100644
--- a/usr.sbin/ppp/filter.c
+++ b/usr.sbin/ppp/filter.c
@@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: filter.c,v 1.5 1995/09/17 16:14:45 amurai Exp $
+ * $Id: filter.c,v 1.4.4.1 1995/10/06 11:24:34 davidg Exp $
*
* TODO: Shoud send ICMP error message when we discard packets.
*/
diff --git a/usr.sbin/ppp/filter.h b/usr.sbin/ppp/filter.h
index 9a5132bf2255..4283f319fa4d 100644
--- a/usr.sbin/ppp/filter.h
+++ b/usr.sbin/ppp/filter.h
@@ -15,7 +15,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: filter.h,v 1.2 1995/02/26 12:17:26 amurai Exp $
+ * $Id: filter.h,v 1.3 1995/03/11 15:18:41 amurai Exp $
*
* TODO:
*/
diff --git a/usr.sbin/ppp/fsm.c b/usr.sbin/ppp/fsm.c
index 18e6d361c725..d1bfe680435a 100644
--- a/usr.sbin/ppp/fsm.c
+++ b/usr.sbin/ppp/fsm.c
@@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: fsm.c,v 1.4 1995/09/09 13:23:53 joerg Exp $
+ * $Id: fsm.c,v 1.3.4.1 1995/10/06 11:24:35 davidg Exp $
*
* TODO:
* o Refer loglevel for log output
diff --git a/usr.sbin/ppp/fsm.h b/usr.sbin/ppp/fsm.h
index e659ed6464a3..19388db6bc54 100644
--- a/usr.sbin/ppp/fsm.h
+++ b/usr.sbin/ppp/fsm.h
@@ -15,7 +15,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: fsm.h,v 1.2 1995/02/26 12:17:28 amurai Exp $
+ * $Id: fsm.h,v 1.4 1995/02/27 03:17:58 amurai Exp $
*
* TODO:
*/
diff --git a/usr.sbin/ppp/global.h b/usr.sbin/ppp/global.h
index 6630a29149a9..91560cf7847c 100644
--- a/usr.sbin/ppp/global.h
+++ b/usr.sbin/ppp/global.h
@@ -15,7 +15,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id:$
+ * $Id: global.h,v 1.2 1995/02/26 12:17:29 amurai Exp $
*
* TODO:
*/
diff --git a/usr.sbin/ppp/hdlc.c b/usr.sbin/ppp/hdlc.c
index b793a80b015d..10a4db2e31e6 100644
--- a/usr.sbin/ppp/hdlc.c
+++ b/usr.sbin/ppp/hdlc.c
@@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: hdlc.c,v 1.3.4.1 1995/07/30 18:22:43 davidg Exp $
+ * $Id: hdlc.c,v 1.3.4.2 1995/08/26 12:11:39 davidg Exp $
*
* TODO:
*/
diff --git a/usr.sbin/ppp/hdlc.h b/usr.sbin/ppp/hdlc.h
index e21fcdc6fe82..16a7acf4aafe 100644
--- a/usr.sbin/ppp/hdlc.h
+++ b/usr.sbin/ppp/hdlc.h
@@ -15,7 +15,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id:$
+ * $Id: hdlc.h,v 1.2 1995/02/26 12:17:31 amurai Exp $
*
* TODO:
*/
diff --git a/usr.sbin/ppp/ip.c b/usr.sbin/ppp/ip.c
index 8fb2ecd79322..a0e86c6d0772 100644
--- a/usr.sbin/ppp/ip.c
+++ b/usr.sbin/ppp/ip.c
@@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: ip.c,v 1.5 1995/09/17 16:14:46 amurai Exp $
+ * $Id: ip.c,v 1.4.4.1 1995/10/06 11:24:37 davidg Exp $
*
* TODO:
* o Return ICMP message for filterd packet
diff --git a/usr.sbin/ppp/ipcp.c b/usr.sbin/ppp/ipcp.c
index be32bd2e5d72..3eb5e8c778ec 100644
--- a/usr.sbin/ppp/ipcp.c
+++ b/usr.sbin/ppp/ipcp.c
@@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: ipcp.c,v 1.4 1995/05/30 03:50:38 rgrimes Exp $
+ * $Id: ipcp.c,v 1.4.4.1 1995/08/26 12:11:41 davidg Exp $
*
* TODO:
* o More RFC1772 backwoard compatibility
diff --git a/usr.sbin/ppp/ipcp.h b/usr.sbin/ppp/ipcp.h
index 220381fa2e8d..6addf2e4d762 100644
--- a/usr.sbin/ppp/ipcp.h
+++ b/usr.sbin/ppp/ipcp.h
@@ -15,7 +15,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: ipcp.h,v 1.2 1995/02/26 12:17:34 amurai Exp $
+ * $Id: ipcp.h,v 1.2.4.1 1995/08/26 12:11:43 davidg Exp $
*
* TODO:
*/
diff --git a/usr.sbin/ppp/lcp.c b/usr.sbin/ppp/lcp.c
index 8603072efcd0..4fa1a54c1e4d 100644
--- a/usr.sbin/ppp/lcp.c
+++ b/usr.sbin/ppp/lcp.c
@@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: lcp.c,v 1.6 1995/09/17 16:14:47 amurai Exp $
+ * $Id: lcp.c,v 1.4.4.2 1995/10/06 11:24:40 davidg Exp $
*
* TODO:
* o Validate magic number received from peer.
diff --git a/usr.sbin/ppp/lcp.h b/usr.sbin/ppp/lcp.h
index 33f0df10bd0b..d61c444ab3ff 100644
--- a/usr.sbin/ppp/lcp.h
+++ b/usr.sbin/ppp/lcp.h
@@ -15,7 +15,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: lcp.h,v 1.2 1995/02/26 12:17:36 amurai Exp $
+ * $Id: lcp.h,v 1.4 1995/02/27 03:18:03 amurai Exp $
*
* TODO:
*/
diff --git a/usr.sbin/ppp/lcpproto.h b/usr.sbin/ppp/lcpproto.h
index 306aee6d2b93..982d64330dfd 100644
--- a/usr.sbin/ppp/lcpproto.h
+++ b/usr.sbin/ppp/lcpproto.h
@@ -15,7 +15,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: lcpproto.h,v 1.2 1995/02/26 12:17:37 amurai Exp $
+ * $Id: lcpproto.h,v 1.4 1995/02/27 03:18:11 amurai Exp $
*
* TODO:
*/
diff --git a/usr.sbin/ppp/log.c b/usr.sbin/ppp/log.c
index 74430220cf8b..6ddf5e2ccfc0 100644
--- a/usr.sbin/ppp/log.c
+++ b/usr.sbin/ppp/log.c
@@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: log.c,v 1.2 1995/02/26 12:17:38 amurai Exp $
+ * $Id: log.c,v 1.3 1995/05/30 03:50:43 rgrimes Exp $
*
*/
#include "defs.h"
diff --git a/usr.sbin/ppp/log.h b/usr.sbin/ppp/log.h
index 2c33c7ef7342..cfc12530096b 100644
--- a/usr.sbin/ppp/log.h
+++ b/usr.sbin/ppp/log.h
@@ -15,7 +15,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: log.h,v 1.2 1995/02/26 12:17:38 amurai Exp $
+ * $Id: log.h,v 1.4 1995/02/27 03:18:16 amurai Exp $
*
* TODO:
*/
diff --git a/usr.sbin/ppp/lqr.c b/usr.sbin/ppp/lqr.c
index eaa677cf9fc7..b1f8985fcd5c 100644
--- a/usr.sbin/ppp/lqr.c
+++ b/usr.sbin/ppp/lqr.c
@@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: lqr.c,v 1.3 1995/04/17 04:21:35 amurai Exp $
+ * $Id: lqr.c,v 1.4 1995/05/30 03:50:44 rgrimes Exp $
*
* o LQR based on RFC1333
*
diff --git a/usr.sbin/ppp/lqr.h b/usr.sbin/ppp/lqr.h
index f8ca55533b9c..e8f99716dca3 100644
--- a/usr.sbin/ppp/lqr.h
+++ b/usr.sbin/ppp/lqr.h
@@ -15,7 +15,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id:$
+ * $Id: lqr.h,v 1.2 1995/02/26 12:17:40 amurai Exp $
*
* TODO:
*/
diff --git a/usr.sbin/ppp/main.c b/usr.sbin/ppp/main.c
index 2efd5fe930b6..fd9a6a8412c8 100644
--- a/usr.sbin/ppp/main.c
+++ b/usr.sbin/ppp/main.c
@@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: main.c,v 1.10 1995/09/18 12:41:52 bde Exp $
+ * $Id: main.c,v 1.5.4.2 1995/10/06 11:24:42 davidg Exp $
*
* TODO:
* o Add commands for traffic summary, version display, etc.
diff --git a/usr.sbin/ppp/mbuf.c b/usr.sbin/ppp/mbuf.c
index c371a6478dcf..24aed0ee9dcd 100644
--- a/usr.sbin/ppp/mbuf.c
+++ b/usr.sbin/ppp/mbuf.c
@@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: mbuf.c,v 1.2 1995/02/26 12:17:42 amurai Exp $
+ * $Id: mbuf.c,v 1.3 1995/05/30 03:50:48 rgrimes Exp $
*
*/
#include "defs.h"
diff --git a/usr.sbin/ppp/mbuf.h b/usr.sbin/ppp/mbuf.h
index c4121f0fc6dc..cf8f313e3f53 100644
--- a/usr.sbin/ppp/mbuf.h
+++ b/usr.sbin/ppp/mbuf.h
@@ -15,7 +15,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id:$
+ * $Id: mbuf.h,v 1.2 1995/02/26 12:17:43 amurai Exp $
*
* TODO:
*/
diff --git a/usr.sbin/ppp/md5.h b/usr.sbin/ppp/md5.h
index f6f5b9b1a83f..0d76d08bd10c 100644
--- a/usr.sbin/ppp/md5.h
+++ b/usr.sbin/ppp/md5.h
@@ -21,7 +21,7 @@
* These notices must be retained in any copies of any part of this
* documentation and/or software.
*
- * $Id: md5.h,v 1.1.1.1 1995/01/31 06:29:56 amurai Exp $
+ * $Id: md5.h,v 1.2 1995/05/30 03:50:49 rgrimes Exp $
*
*/
diff --git a/usr.sbin/ppp/md5c.c b/usr.sbin/ppp/md5c.c
index e2695f2e05b2..ee169c9071ac 100644
--- a/usr.sbin/ppp/md5c.c
+++ b/usr.sbin/ppp/md5c.c
@@ -1,6 +1,6 @@
/* MD5C.C - RSA Data Security, Inc., MD5 message-digest algorithm
*
- * $Id: md5c.c,v 1.2 1995/02/26 12:17:44 amurai Exp $
+ * $Id: md5c.c,v 1.3 1995/05/30 03:50:50 rgrimes Exp $
*
*/
diff --git a/usr.sbin/ppp/modem.c b/usr.sbin/ppp/modem.c
index 13beccc37e57..e8976bf19e87 100644
--- a/usr.sbin/ppp/modem.c
+++ b/usr.sbin/ppp/modem.c
@@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: modem.c,v 1.9 1995/09/02 17:20:53 amurai Exp $
+ * $Id: modem.c,v 1.6.4.2 1995/10/06 11:24:44 davidg Exp $
*
* TODO:
*/
diff --git a/usr.sbin/ppp/modem.h b/usr.sbin/ppp/modem.h
index 53e3573f5f61..b0785bff6e06 100644
--- a/usr.sbin/ppp/modem.h
+++ b/usr.sbin/ppp/modem.h
@@ -15,7 +15,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: modem.h,v 1.2 1995/02/26 12:17:46 amurai Exp $
+ * $Id: modem.h,v 1.4 1995/02/27 03:18:22 amurai Exp $
*
* TODO:
*/
diff --git a/usr.sbin/ppp/os.c b/usr.sbin/ppp/os.c
index 92acff6eb303..d0d7ba8f558b 100644
--- a/usr.sbin/ppp/os.c
+++ b/usr.sbin/ppp/os.c
@@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: os.c,v 1.2 1995/02/26 12:17:48 amurai Exp $
+ * $Id: os.c,v 1.3 1995/05/30 03:50:52 rgrimes Exp $
*
*/
#include "fsm.h"
diff --git a/usr.sbin/ppp/os.h b/usr.sbin/ppp/os.h
index 507f8a3df140..bcfb6f16fda6 100644
--- a/usr.sbin/ppp/os.h
+++ b/usr.sbin/ppp/os.h
@@ -15,7 +15,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: os.h,v 1.1.1.1 1995/01/31 06:29:56 amurai Exp $
+ * $Id: os.h,v 1.2 1995/02/26 12:17:49 amurai Exp $
*
* TODO:
*/
diff --git a/usr.sbin/ppp/pap.c b/usr.sbin/ppp/pap.c
index 0c06307a8dc5..bf62aff3c66a 100644
--- a/usr.sbin/ppp/pap.c
+++ b/usr.sbin/ppp/pap.c
@@ -18,7 +18,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: pap.c,v 1.2 1995/02/26 12:17:51 amurai Exp $
+ * $Id: pap.c,v 1.3 1995/05/30 03:50:53 rgrimes Exp $
*
* TODO:
*/
diff --git a/usr.sbin/ppp/pap.h b/usr.sbin/ppp/pap.h
index 14ca50c29cad..9290e29db1c9 100644
--- a/usr.sbin/ppp/pap.h
+++ b/usr.sbin/ppp/pap.h
@@ -15,7 +15,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id:$
+ * $Id: pap.h,v 1.1.1.1 1995/01/31 06:29:56 amurai Exp $
*
* TODO:
*/
diff --git a/usr.sbin/ppp/pathnames.h b/usr.sbin/ppp/pathnames.h
index fbabf37743bf..f8f80904e69a 100644
--- a/usr.sbin/ppp/pathnames.h
+++ b/usr.sbin/ppp/pathnames.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
*
- * $Id: pathnames.h,v 1.3 1995/02/26 12:17:52 amurai Exp $
+ * $Id: pathnames.h,v 1.4 1995/05/30 03:50:54 rgrimes Exp $
*
* @(#)pathnames.h 5.2 (Berkeley) 6/1/90
*/
diff --git a/usr.sbin/ppp/phase.h b/usr.sbin/ppp/phase.h
index 688ae333e93c..2f012c61242a 100644
--- a/usr.sbin/ppp/phase.h
+++ b/usr.sbin/ppp/phase.h
@@ -15,7 +15,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: phase.h,v 1.1.1.1 1995/01/31 06:29:55 amurai Exp $
+ * $Id: phase.h,v 1.2 1995/02/26 12:17:53 amurai Exp $
*
* TODO:
*/
diff --git a/usr.sbin/ppp/ppp.8 b/usr.sbin/ppp/ppp.8
index b729e02cd18d..1dd5a8f266de 100644
--- a/usr.sbin/ppp/ppp.8
+++ b/usr.sbin/ppp/ppp.8
@@ -1,5 +1,5 @@
.\" manual page [] for ppp 0.94 beta2 + alpha
-.\" $Id: ppp.8,v 1.11 1995/09/24 18:15:14 nate Exp $
+.\" $Id: ppp.8,v 1.8.4.2 1995/10/06 11:24:45 davidg Exp $
.Dd 20 September 1995
.Os FreeBSD
.Dt PPP 8
diff --git a/usr.sbin/ppp/pred.c b/usr.sbin/ppp/pred.c
index d0bffb5d6a86..062bb67161a7 100644
--- a/usr.sbin/ppp/pred.c
+++ b/usr.sbin/ppp/pred.c
@@ -5,7 +5,7 @@
/*
*
- * $Id: pred.c,v 1.2 1995/02/26 12:17:55 amurai Exp $
+ * $Id: pred.c,v 1.3 1995/05/30 03:50:55 rgrimes Exp $
*
* pred.c -- Test program for Dave Rand's rendition of the
* predictor algorithm
diff --git a/usr.sbin/ppp/route.c b/usr.sbin/ppp/route.c
index 84f3d627f41e..331ba97c6748 100644
--- a/usr.sbin/ppp/route.c
+++ b/usr.sbin/ppp/route.c
@@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: route.c,v 1.3 1995/05/30 03:50:56 rgrimes Exp $
+ * $Id: route.c,v 1.3.4.1 1995/08/26 12:11:49 davidg Exp $
*
*/
#include <sys/types.h>
diff --git a/usr.sbin/ppp/slcompress.c b/usr.sbin/ppp/slcompress.c
index 5bf842a4dbc6..0cb614fd2668 100644
--- a/usr.sbin/ppp/slcompress.c
+++ b/usr.sbin/ppp/slcompress.c
@@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: slcompress.c,v 1.2 1995/02/26 12:17:57 amurai Exp $
+ * $Id: slcompress.c,v 1.3 1995/05/30 03:50:57 rgrimes Exp $
*
* Van Jacobson (van@helios.ee.lbl.gov), Dec 31, 1989:
* - Initial distribution.
diff --git a/usr.sbin/ppp/slcompress.h b/usr.sbin/ppp/slcompress.h
index 4e0b8badc1d6..37ee71f37232 100644
--- a/usr.sbin/ppp/slcompress.h
+++ b/usr.sbin/ppp/slcompress.h
@@ -1,7 +1,7 @@
/*
* Definitions for tcp compression routines.
*
- * $Header: /home/ncvs/src/usr.sbin/ppp/slcompress.h,v 1.2 1995/02/26 12:17:58 amurai Exp $
+ * $Header: /home/ncvs/src/usr.sbin/ppp/slcompress.h,v 1.3 1995/05/30 03:50:58 rgrimes Exp $
*
* Copyright (c) 1989 Regents of the University of California.
* All rights reserved.
@@ -18,7 +18,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: slcompress.h,v 1.2 1995/02/26 12:17:58 amurai Exp $
+ * $Id: slcompress.h,v 1.3 1995/05/30 03:50:58 rgrimes Exp $
*
* Van Jacobson (van@helios.ee.lbl.gov), Dec 31, 1989:
* - Initial distribution.
diff --git a/usr.sbin/ppp/systems.c b/usr.sbin/ppp/systems.c
index bc4a7509dcf6..5d5ccd33cc10 100644
--- a/usr.sbin/ppp/systems.c
+++ b/usr.sbin/ppp/systems.c
@@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: systems.c,v 1.4 1995/04/29 13:38:14 ache Exp $
+ * $Id: systems.c,v 1.5 1995/05/30 03:50:58 rgrimes Exp $
*
* TODO:
*/
diff --git a/usr.sbin/ppp/timeout.h b/usr.sbin/ppp/timeout.h
index cc7285d0b671..ec6d9e6dd724 100644
--- a/usr.sbin/ppp/timeout.h
+++ b/usr.sbin/ppp/timeout.h
@@ -15,7 +15,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: timeout.h,v 1.4 1995/02/27 03:18:28 amurai Exp $
+ * $Id: timeout.h,v 1.5 1995/03/11 15:18:50 amurai Exp $
*
* TODO:
*/
diff --git a/usr.sbin/ppp/timer.c b/usr.sbin/ppp/timer.c
index d76ab14f093e..e46f0ee4c600 100644
--- a/usr.sbin/ppp/timer.c
+++ b/usr.sbin/ppp/timer.c
@@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: timer.c,v 1.3 1995/03/11 15:18:51 amurai Exp $
+ * $Id: timer.c,v 1.4 1995/05/30 03:50:59 rgrimes Exp $
*
* TODO:
*/
diff --git a/usr.sbin/ppp/uucplock.c b/usr.sbin/ppp/uucplock.c
index 2a9e3840a2db..0c8423569b59 100644
--- a/usr.sbin/ppp/uucplock.c
+++ b/usr.sbin/ppp/uucplock.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: uucplock.c,v 1.4 1995/03/11 15:18:53 amurai Exp $
+ * $Id: uucplock.c,v 1.5 1995/05/30 03:51:00 rgrimes Exp $
*
*/
diff --git a/usr.sbin/ppp/vars.c b/usr.sbin/ppp/vars.c
index 69e91aabf30f..0445b902e378 100644
--- a/usr.sbin/ppp/vars.c
+++ b/usr.sbin/ppp/vars.c
@@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: vars.c,v 1.5 1995/09/02 17:20:54 amurai Exp $
+ * $Id: vars.c,v 1.3.4.2 1995/10/06 11:24:47 davidg Exp $
*
*/
#include "fsm.h"
@@ -29,7 +29,7 @@
#include "defs.h"
char VarVersion[] = "Version 0.94";
-char VarLocalVersion[] = "$Date: 1995/09/02 17:20:54 $";
+char VarLocalVersion[] = "$Date: 1995/10/06 11:24:47 $";
/*
* Order of conf option is important. See vars.h.
diff --git a/usr.sbin/ppp/vars.h b/usr.sbin/ppp/vars.h
index 9794d8a68140..d91d8db21933 100644
--- a/usr.sbin/ppp/vars.h
+++ b/usr.sbin/ppp/vars.h
@@ -15,7 +15,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: vars.h,v 1.2 1995/02/26 12:18:06 amurai Exp $
+ * $Id: vars.h,v 1.3 1995/03/11 15:18:55 amurai Exp $
*
* TODO:
*/
diff --git a/usr.sbin/ppp/vjcomp.c b/usr.sbin/ppp/vjcomp.c
index 0c9c8568fcad..c009447dd166 100644
--- a/usr.sbin/ppp/vjcomp.c
+++ b/usr.sbin/ppp/vjcomp.c
@@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: vjcomp.c,v 1.2 1995/02/26 12:18:08 amurai Exp $
+ * $Id: vjcomp.c,v 1.3 1995/05/30 03:51:02 rgrimes Exp $
*
* TODO:
*/
diff --git a/usr.sbin/pppd/Makefile b/usr.sbin/pppd/Makefile
index a0ca52e93e81..a75ac775983f 100644
--- a/usr.sbin/pppd/Makefile
+++ b/usr.sbin/pppd/Makefile
@@ -1,5 +1,5 @@
# From: Id: Makefile.bsd,v 1.4 1994/04/20 00:07:50 paulus Exp
-# $Id$
+# $Id: Makefile,v 1.1 1994/09/25 02:31:49 wollman Exp $
PROG= pppd
SRCS= main.c magic.c fsm.c lcp.c ipcp.c upap.c chap.c md5.c \
diff --git a/usr.sbin/pppd/args.h b/usr.sbin/pppd/args.h
index e8798382786b..d3c9402036c1 100644
--- a/usr.sbin/pppd/args.h
+++ b/usr.sbin/pppd/args.h
@@ -1,6 +1,6 @@
/*
* neat macro from ka9q to "do the right thing" with ansi prototypes
- * $Id: args.h,v 1.1 1993/11/11 03:54:25 paulus Exp $
+ * $Id: args.h,v 1.2 1994/09/25 02:31:51 wollman Exp $
*/
#ifndef __ARGS
diff --git a/usr.sbin/pppd/auth.c b/usr.sbin/pppd/auth.c
index 97fd9c37398f..6a9c1f999f27 100644
--- a/usr.sbin/pppd/auth.c
+++ b/usr.sbin/pppd/auth.c
@@ -33,7 +33,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: auth.c,v 1.4 1995/08/28 21:30:51 mpp Exp $";
+static char rcsid[] = "$Id: auth.c,v 1.3.4.1 1995/09/02 14:40:06 davidg Exp $";
#endif
#include <stdio.h>
diff --git a/usr.sbin/pppd/callout.h b/usr.sbin/pppd/callout.h
index 115d01c66653..f9261d9e7076 100644
--- a/usr.sbin/pppd/callout.h
+++ b/usr.sbin/pppd/callout.h
@@ -3,7 +3,7 @@
/* to a pointer to a function of type void (generic pointer) as per */
/* ANSI C */
-/* $Id: callout.h,v 1.1 1993/11/11 03:54:25 paulus Exp $ */
+/* $Id: callout.h,v 1.2 1994/09/25 02:31:53 wollman Exp $ */
#ifndef _ppp_callout_h
#define _ppp_callout_h
diff --git a/usr.sbin/pppd/chap.c b/usr.sbin/pppd/chap.c
index 14b28b16b3d4..b33197780675 100644
--- a/usr.sbin/pppd/chap.c
+++ b/usr.sbin/pppd/chap.c
@@ -19,7 +19,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: chap.c,v 1.2 1994/09/25 02:31:54 wollman Exp $";
+static char rcsid[] = "$Id: chap.c,v 1.3 1995/05/30 03:51:05 rgrimes Exp $";
#endif
/*
diff --git a/usr.sbin/pppd/chap.h b/usr.sbin/pppd/chap.h
index 682ecb864d17..4915182d658e 100644
--- a/usr.sbin/pppd/chap.h
+++ b/usr.sbin/pppd/chap.h
@@ -15,7 +15,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: chap.h,v 1.2 1994/04/11 07:13:44 paulus Exp $
+ * $Id: chap.h,v 1.2 1994/09/25 02:31:55 wollman Exp $
*/
#ifndef __CHAP_INCLUDE__
diff --git a/usr.sbin/pppd/fsm.c b/usr.sbin/pppd/fsm.c
index 4e05873a24d5..68f011708cba 100644
--- a/usr.sbin/pppd/fsm.c
+++ b/usr.sbin/pppd/fsm.c
@@ -18,7 +18,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: fsm.c,v 1.2 1994/09/25 02:31:57 wollman Exp $";
+static char rcsid[] = "$Id: fsm.c,v 1.3 1995/05/30 03:51:07 rgrimes Exp $";
#endif
/*
diff --git a/usr.sbin/pppd/fsm.h b/usr.sbin/pppd/fsm.h
index a12966bef488..c440deaae368 100644
--- a/usr.sbin/pppd/fsm.h
+++ b/usr.sbin/pppd/fsm.h
@@ -16,7 +16,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: fsm.h,v 1.2 1994/04/11 07:18:35 paulus Exp $
+ * $Id: fsm.h,v 1.2 1994/09/25 02:31:58 wollman Exp $
*/
/*
diff --git a/usr.sbin/pppd/ipcp.c b/usr.sbin/pppd/ipcp.c
index 2508cdc73517..8fdf5367543a 100644
--- a/usr.sbin/pppd/ipcp.c
+++ b/usr.sbin/pppd/ipcp.c
@@ -18,7 +18,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: ipcp.c,v 1.2 1994/09/25 02:31:59 wollman Exp $";
+static char rcsid[] = "$Id: ipcp.c,v 1.3 1995/05/30 03:51:08 rgrimes Exp $";
#endif
/*
diff --git a/usr.sbin/pppd/ipcp.h b/usr.sbin/pppd/ipcp.h
index 393c9af90258..3f9607d94437 100644
--- a/usr.sbin/pppd/ipcp.h
+++ b/usr.sbin/pppd/ipcp.h
@@ -16,7 +16,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: ipcp.h,v 1.2 1994/09/25 02:32:00 wollman Exp $
+ * $Id: ipcp.h,v 1.3 1995/05/30 03:51:11 rgrimes Exp $
*/
/*
diff --git a/usr.sbin/pppd/lcp.c b/usr.sbin/pppd/lcp.c
index c64296120d22..1524d5e5616e 100644
--- a/usr.sbin/pppd/lcp.c
+++ b/usr.sbin/pppd/lcp.c
@@ -18,7 +18,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: lcp.c,v 1.2 1994/09/25 02:32:01 wollman Exp $";
+static char rcsid[] = "$Id: lcp.c,v 1.3 1995/05/30 03:51:12 rgrimes Exp $";
#endif
/*
diff --git a/usr.sbin/pppd/lcp.h b/usr.sbin/pppd/lcp.h
index 0499a7cbd0d2..43fe8c354a62 100644
--- a/usr.sbin/pppd/lcp.h
+++ b/usr.sbin/pppd/lcp.h
@@ -16,7 +16,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: lcp.h,v 1.4 1994/05/24 11:22:28 paulus Exp $
+ * $Id: lcp.h,v 1.2 1994/09/25 02:32:03 wollman Exp $
*/
/*
diff --git a/usr.sbin/pppd/lock.c b/usr.sbin/pppd/lock.c
index 8cb7da732845..5af8eb5d50d3 100644
--- a/usr.sbin/pppd/lock.c
+++ b/usr.sbin/pppd/lock.c
@@ -4,7 +4,7 @@
* This code is derived from chat.c.
*/
-static char rcsid[] = "$Id: lock.c,v 1.2 1994/09/25 02:32:04 wollman Exp $";
+static char rcsid[] = "$Id: lock.c,v 1.3 1994/10/22 14:40:48 dfr Exp $";
#include <stdio.h>
#include <string.h>
diff --git a/usr.sbin/pppd/magic.c b/usr.sbin/pppd/magic.c
index 20dfd6fe3a48..8469cdb64bfa 100644
--- a/usr.sbin/pppd/magic.c
+++ b/usr.sbin/pppd/magic.c
@@ -18,7 +18,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: magic.c,v 1.1 1993/11/11 03:54:25 paulus Exp $";
+static char rcsid[] = "$Id: magic.c,v 1.2 1994/09/25 02:32:05 wollman Exp $";
#endif
#include <stdio.h>
diff --git a/usr.sbin/pppd/magic.h b/usr.sbin/pppd/magic.h
index d41aa39df7db..8789abf594c7 100644
--- a/usr.sbin/pppd/magic.h
+++ b/usr.sbin/pppd/magic.h
@@ -16,7 +16,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: magic.h,v 1.1 1993/11/11 03:54:25 paulus Exp $
+ * $Id: magic.h,v 1.2 1994/09/25 02:32:06 wollman Exp $
*/
#include "args.h"
diff --git a/usr.sbin/pppd/main.c b/usr.sbin/pppd/main.c
index 946e4d1d26b2..fcab44c0727d 100644
--- a/usr.sbin/pppd/main.c
+++ b/usr.sbin/pppd/main.c
@@ -18,7 +18,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: main.c,v 1.3 1995/04/29 13:55:34 ache Exp $";
+static char rcsid[] = "$Id: main.c,v 1.4 1995/05/30 03:51:13 rgrimes Exp $";
#endif
#define SETSID
diff --git a/usr.sbin/pppd/options.c b/usr.sbin/pppd/options.c
index f31521fafc23..f21606b24ed9 100644
--- a/usr.sbin/pppd/options.c
+++ b/usr.sbin/pppd/options.c
@@ -18,7 +18,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: options.c,v 1.5 1995/09/06 16:33:40 pst Exp $";
+static char rcsid[] = "$Id: options.c,v 1.4.4.1 1995/10/06 11:28:58 davidg Exp $";
#endif
#include <stdio.h>
diff --git a/usr.sbin/pppd/patchlevel.h b/usr.sbin/pppd/patchlevel.h
index ad290b08f5fe..b839cd282aa1 100644
--- a/usr.sbin/pppd/patchlevel.h
+++ b/usr.sbin/pppd/patchlevel.h
@@ -1,4 +1,4 @@
-/* $Id: patchlevel.h,v 1.10 1994/06/09 01:51:10 paulus Exp $ */
+/* $Id: patchlevel.h,v 1.2 1994/09/25 02:32:09 wollman Exp $ */
#define PATCHLEVEL 2
#define VERSION "2.1"
diff --git a/usr.sbin/pppd/pathnames.h b/usr.sbin/pppd/pathnames.h
index d8e91dcad676..eda0b86eafc9 100644
--- a/usr.sbin/pppd/pathnames.h
+++ b/usr.sbin/pppd/pathnames.h
@@ -1,7 +1,7 @@
/*
* define path names
*
- * $Id: pathnames.h,v 1.4 1994/05/18 06:34:46 paulus Exp $
+ * $Id: pathnames.h,v 1.2 1994/09/25 02:32:10 wollman Exp $
*/
#if defined(STREAMS) || defined(ultrix)
diff --git a/usr.sbin/pppd/ppp.h b/usr.sbin/pppd/ppp.h
index 3d8f870bf2f3..c0d373e3c761 100644
--- a/usr.sbin/pppd/ppp.h
+++ b/usr.sbin/pppd/ppp.h
@@ -16,7 +16,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: ppp.h,v 1.1 1993/11/11 03:54:25 paulus Exp $
+ * $Id: ppp.h,v 1.2 1994/09/25 02:32:11 wollman Exp $
*/
#ifndef __PPP_H__
diff --git a/usr.sbin/pppd/pppd.8 b/usr.sbin/pppd/pppd.8
index 3395631d8f64..e18899eaea62 100644
--- a/usr.sbin/pppd/pppd.8
+++ b/usr.sbin/pppd/pppd.8
@@ -1,5 +1,5 @@
.\" manual page [] for pppd 2.0
-.\" $Id: pppd.8,v 1.7 1994/06/09 01:50:48 paulus Exp $
+.\" $Id: pppd.8,v 1.2 1994/09/25 02:32:12 wollman Exp $
.\" SH section heading
.\" SS subsection heading
.\" LP paragraph
diff --git a/usr.sbin/pppd/pppd.h b/usr.sbin/pppd/pppd.h
index ddacee541347..20565131d78e 100644
--- a/usr.sbin/pppd/pppd.h
+++ b/usr.sbin/pppd/pppd.h
@@ -16,7 +16,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: pppd.h,v 1.2 1994/09/25 02:32:13 wollman Exp $
+ * $Id: pppd.h,v 1.3 1995/05/30 03:51:15 rgrimes Exp $
*/
/*
diff --git a/usr.sbin/pppd/sys-bsd.c b/usr.sbin/pppd/sys-bsd.c
index 647b821626a1..5c71007ef4cb 100644
--- a/usr.sbin/pppd/sys-bsd.c
+++ b/usr.sbin/pppd/sys-bsd.c
@@ -19,7 +19,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: sys-bsd.c,v 1.4 1995/10/03 10:50:42 joerg Exp $";
+static char rcsid[] = "$Id: sys-bsd.c,v 1.3.4.1 1995/10/06 11:28:59 davidg Exp $";
#endif
/*
diff --git a/usr.sbin/pppd/upap.c b/usr.sbin/pppd/upap.c
index 14b2e767b10e..97e4dda56497 100644
--- a/usr.sbin/pppd/upap.c
+++ b/usr.sbin/pppd/upap.c
@@ -18,7 +18,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: upap.c,v 1.2 1994/09/25 02:32:16 wollman Exp $";
+static char rcsid[] = "$Id: upap.c,v 1.3 1995/05/30 03:51:17 rgrimes Exp $";
#endif
/*
diff --git a/usr.sbin/pppd/upap.h b/usr.sbin/pppd/upap.h
index 10c3414a0afa..940524aea9f8 100644
--- a/usr.sbin/pppd/upap.h
+++ b/usr.sbin/pppd/upap.h
@@ -16,7 +16,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: upap.h,v 1.2 1994/04/11 07:13:44 paulus Exp $
+ * $Id: upap.h,v 1.2 1994/09/25 02:32:18 wollman Exp $
*/
/*
diff --git a/usr.sbin/pppstats/Makefile b/usr.sbin/pppstats/Makefile
index f766f340ab06..e8109e5cba30 100644
--- a/usr.sbin/pppstats/Makefile
+++ b/usr.sbin/pppstats/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1.1.1 1994/11/12 06:07:15 lars Exp $
+# $Id: Makefile,v 1.2 1994/11/14 08:02:40 bde Exp $
PROG= pppstats
MAN8= pppstats.8
diff --git a/usr.sbin/pppstats/pppstats.c b/usr.sbin/pppstats/pppstats.c
index cfde7b8ecd88..e1e12a0898ff 100644
--- a/usr.sbin/pppstats/pppstats.c
+++ b/usr.sbin/pppstats/pppstats.c
@@ -26,7 +26,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: pppstats.c,v 1.4 1995/05/30 03:51:18 rgrimes Exp $";
+static char rcsid[] = "$Id: pppstats.c,v 1.4.4.1 1995/08/26 12:14:12 davidg Exp $";
#endif
#include <ctype.h>
diff --git a/usr.sbin/pstat/pstat.8 b/usr.sbin/pstat/pstat.8
index 504487dd2e8b..e9e814c30393 100644
--- a/usr.sbin/pstat/pstat.8
+++ b/usr.sbin/pstat/pstat.8
@@ -31,7 +31,7 @@
.\" SUCH DAMAGE.
.\"
.\" From: @(#)pstat.8 8.4 (Berkeley) 4/19/94
-.\" $Id: pstat.8,v 1.5 1995/10/06 20:58:24 bde Exp $
+.\" $Id: pstat.8,v 1.3.4.2 1995/10/09 08:51:32 davidg Exp $
.\"
.Dd October 7, 1995
.Dt PSTAT 8
diff --git a/usr.sbin/rarpd/Makefile b/usr.sbin/rarpd/Makefile
index c8fd9ceca801..01f10ff2fca2 100644
--- a/usr.sbin/rarpd/Makefile
+++ b/usr.sbin/rarpd/Makefile
@@ -1,5 +1,5 @@
# from: @(#)Makefile 5.8 (Berkeley) 7/28/90
-# $Id: Makefile,v 1.2 1995/03/03 22:20:12 wpaul Exp $
+# $Id: Makefile,v 1.3 1995/04/02 01:35:53 wpaul Exp $
PROG= rarpd
MAN8= rarpd.8
diff --git a/usr.sbin/rarpd/rarpd.8 b/usr.sbin/rarpd/rarpd.8
index 73cd0100d736..0eb55dcfdab8 100644
--- a/usr.sbin/rarpd/rarpd.8
+++ b/usr.sbin/rarpd/rarpd.8
@@ -1,4 +1,4 @@
-.\" @(#) $Header: /a/ncvs/src/usr.sbin/rarpd/rarpd.8,v 1.1.1.1 1995/03/02 06:41:40 wpaul Exp $ (LBL)
+.\" @(#) $Header: /home/ncvs/src/usr.sbin/rarpd/rarpd.8,v 1.2 1995/03/05 22:04:05 wpaul Exp $ (LBL)
.\"
.\" Copyright (c) 1988-1990 The Regents of the University of California.
.\" All rights reserved.
diff --git a/usr.sbin/rarpd/rarpd.c b/usr.sbin/rarpd/rarpd.c
index ea649dbe839f..4515d785f691 100644
--- a/usr.sbin/rarpd/rarpd.c
+++ b/usr.sbin/rarpd/rarpd.c
@@ -26,7 +26,7 @@ char copyright[] =
#ifndef lint
static char rcsid[] =
- "@(#) $Header: /home/ncvs/src/usr.sbin/rarpd/rarpd.c,v 1.4 1995/05/30 03:51:25 rgrimes Exp $ (LBL)";
+ "@(#) $Header: /home/ncvs/src/usr.sbin/rarpd/rarpd.c,v 1.4.4.1 1995/08/05 08:04:30 davidg Exp $ (LBL)";
#endif
diff --git a/usr.sbin/rtprio/Makefile b/usr.sbin/rtprio/Makefile
index a79db7cc47d9..9b780d9b9c20 100644
--- a/usr.sbin/rtprio/Makefile
+++ b/usr.sbin/rtprio/Makefile
@@ -1,5 +1,5 @@
# from: @(#)Makefile 5.5 (Berkeley) 5/11/90
-# $Id: Makefile,v 1.3 1995/08/06 00:58:52 bde Exp $
+# $Id: Makefile,v 1.2.6.1 1995/09/18 03:21:17 davidg Exp $
BINDIR=/usr/sbin
PROG= rtprio
diff --git a/usr.sbin/rtprio/rtprio.1 b/usr.sbin/rtprio/rtprio.1
index 5542f12e3c7b..922576d5f6d3 100644
--- a/usr.sbin/rtprio/rtprio.1
+++ b/usr.sbin/rtprio/rtprio.1
@@ -28,7 +28,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $Id: rtprio.1,v 1.1 1994/09/01 12:05:13 davidg Exp $
+.\" $Id: rtprio.1,v 1.3 1994/10/02 04:48:19 davidg Exp $
.\"
.Dd July 23, 1994
.Dt RTPRIO 1
diff --git a/usr.sbin/rtprio/rtprio.c b/usr.sbin/rtprio/rtprio.c
index ab4d08513fb8..28e86259cb8d 100644
--- a/usr.sbin/rtprio/rtprio.c
+++ b/usr.sbin/rtprio/rtprio.c
@@ -31,7 +31,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: rtprio.c,v 1.2 1994/10/02 04:48:21 davidg Exp $
*/
#include <sys/param.h>
diff --git a/usr.sbin/sa/Makefile b/usr.sbin/sa/Makefile
index 76670e5ad93a..cb9a16395b92 100644
--- a/usr.sbin/sa/Makefile
+++ b/usr.sbin/sa/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1.1.1 1994/09/26 21:22:55 davidg Exp $
+# $Id: Makefile,v 1.2 1994/09/26 21:41:05 davidg Exp $
PROG= sa
MAN8= sa.8
diff --git a/usr.sbin/sa/extern.h b/usr.sbin/sa/extern.h
index 6d5291458d9d..d27c6ab64b9f 100644
--- a/usr.sbin/sa/extern.h
+++ b/usr.sbin/sa/extern.h
@@ -27,7 +27,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: extern.h,v 1.1 1994/03/24 18:41:50 cgd Exp $
+ * $Id: extern.h,v 1.1.1.1 1994/09/26 21:22:56 davidg Exp $
*/
#include <sys/types.h>
diff --git a/usr.sbin/sa/main.c b/usr.sbin/sa/main.c
index 2f1e95a20765..70883a125f25 100644
--- a/usr.sbin/sa/main.c
+++ b/usr.sbin/sa/main.c
@@ -33,7 +33,7 @@ static char copright[] =
"@(#) Copyright (c) 1994 Christopher G. Demetriou\n\
All rights reserved.\n";
-static char rcsid[] = "$Id: main.c,v 1.1.1.1 1994/09/26 21:22:56 davidg Exp $";
+static char rcsid[] = "$Id: main.c,v 1.2 1995/05/30 03:51:39 rgrimes Exp $";
#endif
/*
diff --git a/usr.sbin/sa/pathnames.h b/usr.sbin/sa/pathnames.h
index 31721c25fcd2..9124399ce56e 100644
--- a/usr.sbin/sa/pathnames.h
+++ b/usr.sbin/sa/pathnames.h
@@ -27,7 +27,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: pathnames.h,v 1.1 1994/03/24 18:41:53 cgd Exp $
+ * $Id: pathnames.h,v 1.1.1.1 1994/09/26 21:22:56 davidg Exp $
*/
#define _PATH_ACCT "/var/account/acct"
diff --git a/usr.sbin/sa/pdb.c b/usr.sbin/sa/pdb.c
index 1ccbe90ef43a..466a1fd0e78a 100644
--- a/usr.sbin/sa/pdb.c
+++ b/usr.sbin/sa/pdb.c
@@ -29,7 +29,7 @@
*/
#ifndef LINT
-static char rcsid[] = "$Id: pdb.c,v 1.1.1.1 1994/09/26 21:22:56 davidg Exp $";
+static char rcsid[] = "$Id: pdb.c,v 1.2 1995/05/30 03:51:41 rgrimes Exp $";
#endif
#include <sys/types.h>
diff --git a/usr.sbin/sa/sa.8 b/usr.sbin/sa/sa.8
index 09a15fd97df7..7883955e4e73 100644
--- a/usr.sbin/sa/sa.8
+++ b/usr.sbin/sa/sa.8
@@ -27,7 +27,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.\" $Id: sa.8,v 1.1.1.1 1994/09/26 21:22:56 davidg Exp $
+.\" $Id: sa.8,v 1.2 1994/09/26 21:41:06 davidg Exp $
.\"
.Dd February 25, 1994
.Dt SA 8
diff --git a/usr.sbin/sa/usrdb.c b/usr.sbin/sa/usrdb.c
index 4d383b76e193..978ae1ebfdbf 100644
--- a/usr.sbin/sa/usrdb.c
+++ b/usr.sbin/sa/usrdb.c
@@ -29,7 +29,7 @@
*/
#ifndef LINT
-static char rcsid[] = "$Id: usrdb.c,v 1.1.1.1 1994/09/26 21:22:57 davidg Exp $";
+static char rcsid[] = "$Id: usrdb.c,v 1.2 1995/05/30 03:51:42 rgrimes Exp $";
#endif
#include <sys/types.h>
diff --git a/usr.sbin/sendmail/cf/README b/usr.sbin/sendmail/cf/README
index 6ab3b010ae45..1801b1992a10 100644
--- a/usr.sbin/sendmail/cf/README
+++ b/usr.sbin/sendmail/cf/README
@@ -817,7 +817,7 @@ Sam Leffler's FlexFAX software is still in beta test -- but he expects a
public version out "later this week" [as of 3/1/93]. The following
blurb is direct from Sam:
- $Header: /usr/people/sam/fax/RCS/HOWTO,v 1.14 93/05/24 11:42:16 sam Exp $
+ $Header: /home/ncvs/src/usr.sbin/sendmail/cf/README,v 1.1.1.1 1994/05/26 05:22:42 rgrimes Exp $
How To Obtain This Software (in case all you get is this file)
--------------------------------------------------------------
diff --git a/usr.sbin/sendmail/contrib/expn.pl b/usr.sbin/sendmail/contrib/expn.pl
index 495db73473c4..c812a825e91f 100755
--- a/usr.sbin/sendmail/contrib/expn.pl
+++ b/usr.sbin/sendmail/contrib/expn.pl
@@ -14,7 +14,7 @@ $sockaddr = 'S n a4 x8';
# system requirements:
# must have 'nslookup' and 'hostname' programs.
-# $Header: /home/muir/bin/RCS/expn,v 3.6 1994/02/23 22:26:19 muir Exp muir $
+# $Header: /home/ncvs/src/usr.sbin/sendmail/contrib/expn.pl,v 1.1.1.1 1994/05/26 05:23:06 rgrimes Exp $
# TODO:
# less magic should apply to command-line addresses
diff --git a/usr.sbin/sendmail/src/conf.c b/usr.sbin/sendmail/src/conf.c
index de7185129827..6cc11563679d 100644
--- a/usr.sbin/sendmail/src/conf.c
+++ b/usr.sbin/sendmail/src/conf.c
@@ -915,7 +915,7 @@ getla()
/* Non Apollo stuff removed by Don Lewis 11/15/93 */
#ifndef lint
-static char rcsid[] = "@(#)$Id: conf.c,v 1.6 1995/03/10 05:08:13 pst Exp $";
+static char rcsid[] = "@(#)$Id: conf.c,v 1.7 1995/05/30 03:52:08 rgrimes Exp $";
#endif /* !lint */
#ifdef apollo
diff --git a/usr.sbin/sgsc/Makefile b/usr.sbin/sgsc/Makefile
index a25675dfb88a..5152824d4229 100644
--- a/usr.sbin/sgsc/Makefile
+++ b/usr.sbin/sgsc/Makefile
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile,v 1.1.1.1 1995/01/07 14:17:22 jkh Exp $
PROG= sgsc
diff --git a/usr.sbin/sicontrol/sicontrol.8 b/usr.sbin/sicontrol/sicontrol.8
index ce25794a004b..1bfc28fdfb64 100644
--- a/usr.sbin/sicontrol/sicontrol.8
+++ b/usr.sbin/sicontrol/sicontrol.8
@@ -1,4 +1,4 @@
-.\" $Id$
+.\" $Id: sicontrol.8,v 1.2 1995/09/26 18:18:49 peter Exp $
.\" The following requests are required for all man pages.
.Dd September 26,1995
.Dt SICONTROL 8
diff --git a/usr.sbin/sicontrol/sicontrol.c b/usr.sbin/sicontrol/sicontrol.c
index 1db88459d756..bcb979abf3f1 100644
--- a/usr.sbin/sicontrol/sicontrol.c
+++ b/usr.sbin/sicontrol/sicontrol.c
@@ -30,7 +30,7 @@
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
* NO EVENT SHALL THE AUTHORS BE LIABLE.
*
- * $Id: sicontrol.c,v 1.4 1995/10/01 03:13:33 peter Exp $
+ * $Id: sicontrol.c,v 1.3.2.1 1995/10/06 11:37:45 davidg Exp $
*/
#include <stdio.h>
diff --git a/usr.sbin/slstat/Makefile b/usr.sbin/slstat/Makefile
index 406d370617e7..0e693a8d6f7e 100644
--- a/usr.sbin/slstat/Makefile
+++ b/usr.sbin/slstat/Makefile
@@ -1,5 +1,5 @@
# from: @(#)Makefile 5.6 (Berkeley) 4/23/91
-# $Id: Makefile,v 1.1.1.1 1994/06/17 06:42:36 rich Exp $
+# $Id: Makefile,v 1.2 1994/10/17 06:05:31 davidg Exp $
PROG= slstat
MAN8= slstat.8
diff --git a/usr.sbin/slstat/slstat.c b/usr.sbin/slstat/slstat.c
index 402c24840d17..409c123eec52 100644
--- a/usr.sbin/slstat/slstat.c
+++ b/usr.sbin/slstat/slstat.c
@@ -22,7 +22,7 @@
*/
#ifndef lint
-static char rcsid[] = "$Id: slstat.c,v 1.3 1994/11/19 13:57:21 jkh Exp $";
+static char rcsid[] = "$Id: slstat.c,v 1.4 1995/05/30 03:52:30 rgrimes Exp $";
#endif
#include <stdio.h>
diff --git a/usr.sbin/sysctl/sysctl.8 b/usr.sbin/sysctl/sysctl.8
index 931ac35fd614..b38adb4bbb7a 100644
--- a/usr.sbin/sysctl/sysctl.8
+++ b/usr.sbin/sysctl/sysctl.8
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" From: @(#)sysctl.8 8.1 (Berkeley) 6/6/93
-.\" $Id: sysctl.8,v 1.5 1995/02/16 00:28:40 wollman Exp $
+.\" $Id: sysctl.8,v 1.6 1995/02/20 19:42:42 guido Exp $
.\"
.Dd September 23, 1994
.Dt SYSCTL 8
diff --git a/usr.sbin/sysctl/sysctl.c b/usr.sbin/sysctl/sysctl.c
index 25f404aafc12..a21641ff6e39 100644
--- a/usr.sbin/sysctl/sysctl.c
+++ b/usr.sbin/sysctl/sysctl.c
@@ -40,7 +40,7 @@ static char copyright[] =
#ifndef lint
/*static char sccsid[] = "From: @(#)sysctl.c 8.1 (Berkeley) 6/6/93"; */
static const char rcsid[] =
- "$Id: sysctl.c,v 1.6.2.1 1995/06/02 10:50:54 davidg Exp $";
+ "$Id: sysctl.c,v 1.7 1995/06/11 19:32:58 rgrimes Exp $";
#endif /* not lint */
#include <sys/param.h>
diff --git a/usr.sbin/tcpdump/tcpdump/Makefile b/usr.sbin/tcpdump/tcpdump/Makefile
index 0072f8994390..fe0f6124c86b 100644
--- a/usr.sbin/tcpdump/tcpdump/Makefile
+++ b/usr.sbin/tcpdump/tcpdump/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.10 1995/08/29 19:48:10 wollman Exp $
+# $Id: Makefile,v 1.9.4.1 1995/10/06 11:53:41 davidg Exp $
PROG= tcpdump
CFLAGS+=-DCSLIP -DPPP -DFDDI
diff --git a/usr.sbin/tcpdump/tcpdump/addrtoname.c b/usr.sbin/tcpdump/tcpdump/addrtoname.c
index 11a1098a3d84..f60d5a76191b 100644
--- a/usr.sbin/tcpdump/tcpdump/addrtoname.c
+++ b/usr.sbin/tcpdump/tcpdump/addrtoname.c
@@ -23,7 +23,7 @@
*/
#ifndef lint
static char rcsid[] =
- "@(#) $Header: addrtoname.c,v 1.37 94/06/16 00:42:28 mccanne Exp $ (LBL)";
+ "@(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/addrtoname.c,v 1.2 1995/03/08 12:52:07 olah Exp $ (LBL)";
#endif
#include <sys/types.h>
diff --git a/usr.sbin/tcpdump/tcpdump/addrtoname.h b/usr.sbin/tcpdump/tcpdump/addrtoname.h
index f52825b3eace..dc980f8f5171 100644
--- a/usr.sbin/tcpdump/tcpdump/addrtoname.h
+++ b/usr.sbin/tcpdump/tcpdump/addrtoname.h
@@ -18,7 +18,7 @@
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * @(#) $Header: addrtoname.h,v 1.11 94/06/14 20:11:41 leres Exp $ (LBL)
+ * @(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/addrtoname.h,v 1.2 1995/03/08 12:52:08 olah Exp $ (LBL)
*/
/* Name to address translation routines. */
diff --git a/usr.sbin/tcpdump/tcpdump/appletalk.h b/usr.sbin/tcpdump/tcpdump/appletalk.h
index 6a21f1dfe2d1..015750705ccb 100644
--- a/usr.sbin/tcpdump/tcpdump/appletalk.h
+++ b/usr.sbin/tcpdump/tcpdump/appletalk.h
@@ -20,7 +20,7 @@
*
* AppleTalk protocol formats (courtesy Bill Croft of Stanford/SUMEX).
*
- * @(#) $Header: appletalk.h,v 1.10 94/06/14 20:11:44 leres Exp $ (LBL)
+ * @(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/appletalk.h,v 1.2 1995/03/08 12:52:09 olah Exp $ (LBL)
*/
struct LAP {
diff --git a/usr.sbin/tcpdump/tcpdump/bootp.h b/usr.sbin/tcpdump/tcpdump/bootp.h
index 19844cafefff..934a18fa7046 100644
--- a/usr.sbin/tcpdump/tcpdump/bootp.h
+++ b/usr.sbin/tcpdump/tcpdump/bootp.h
@@ -1,4 +1,4 @@
-/* @(#) $Header: bootp.h,v 1.6 94/01/13 19:06:29 leres Exp $ (LBL) */
+/* @(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/bootp.h,v 1.2 1995/03/08 12:52:09 olah Exp $ (LBL) */
/*
* Bootstrap Protocol (BOOTP). RFC951 and RFC1048.
*
diff --git a/usr.sbin/tcpdump/tcpdump/bpf_dump.c b/usr.sbin/tcpdump/tcpdump/bpf_dump.c
index 547041a045a3..c787ca7307fa 100644
--- a/usr.sbin/tcpdump/tcpdump/bpf_dump.c
+++ b/usr.sbin/tcpdump/tcpdump/bpf_dump.c
@@ -20,7 +20,7 @@
*/
#ifndef lint
static char rcsid[] =
- "@(#) $Header: bpf_dump.c,v 1.6 94/06/06 14:31:21 leres Exp $ (LBL)";
+ "@(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/bpf_dump.c,v 1.2 1995/03/08 12:52:10 olah Exp $ (LBL)";
#endif
#include <sys/types.h>
diff --git a/usr.sbin/tcpdump/tcpdump/decnet.h b/usr.sbin/tcpdump/tcpdump/decnet.h
index 83e7e0e57510..62b10ba263ef 100644
--- a/usr.sbin/tcpdump/tcpdump/decnet.h
+++ b/usr.sbin/tcpdump/tcpdump/decnet.h
@@ -18,7 +18,7 @@
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * @(#) $Header: decnet.h,v 1.3 94/06/14 20:11:44 leres Exp $ (LBL)
+ * @(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/decnet.h,v 1.1 1995/03/08 12:52:11 olah Exp $ (LBL)
*/
typedef unsigned char byte[1]; /* single byte field */
diff --git a/usr.sbin/tcpdump/tcpdump/ethertype.h b/usr.sbin/tcpdump/tcpdump/ethertype.h
index 6fa6e40ad1ed..4f24d55217ad 100644
--- a/usr.sbin/tcpdump/tcpdump/ethertype.h
+++ b/usr.sbin/tcpdump/tcpdump/ethertype.h
@@ -18,7 +18,7 @@
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * @(#) $Header: ethertype.h,v 1.4 94/06/14 20:11:45 leres Exp $ (LBL)
+ * @(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/ethertype.h,v 1.1 1995/03/08 12:52:12 olah Exp $ (LBL)
*/
/* Map between Ethernet protocol types and names */
diff --git a/usr.sbin/tcpdump/tcpdump/extract.h b/usr.sbin/tcpdump/tcpdump/extract.h
index 4e10275471ab..230c6fba0ddd 100644
--- a/usr.sbin/tcpdump/tcpdump/extract.h
+++ b/usr.sbin/tcpdump/tcpdump/extract.h
@@ -18,7 +18,7 @@
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * @(#) $Header: extract.h,v 1.7 94/06/14 20:11:45 leres Exp $ (LBL)
+ * @(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/extract.h,v 1.2 1995/03/08 12:52:13 olah Exp $ (LBL)
*/
#ifdef TCPDUMP_ALIGN
diff --git a/usr.sbin/tcpdump/tcpdump/fddi.h b/usr.sbin/tcpdump/tcpdump/fddi.h
index a6c271195640..5f460603969f 100644
--- a/usr.sbin/tcpdump/tcpdump/fddi.h
+++ b/usr.sbin/tcpdump/tcpdump/fddi.h
@@ -18,7 +18,7 @@
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * @(#) $Header: fddi.h,v 1.6 94/06/14 20:12:35 leres Exp $ (LBL)
+ * @(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/fddi.h,v 1.1 1995/03/08 12:52:14 olah Exp $ (LBL)
*/
/*
diff --git a/usr.sbin/tcpdump/tcpdump/interface.h b/usr.sbin/tcpdump/tcpdump/interface.h
index 146ca6a122b8..5e5d58a1945d 100644
--- a/usr.sbin/tcpdump/tcpdump/interface.h
+++ b/usr.sbin/tcpdump/tcpdump/interface.h
@@ -18,7 +18,7 @@
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * @(#) $Header: interface.h,v 1.66 94/06/14 20:21:37 leres Exp $ (LBL)
+ * @(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/interface.h,v 1.3 1995/03/08 12:52:14 olah Exp $ (LBL)
*/
#ifdef __GNUC__
diff --git a/usr.sbin/tcpdump/tcpdump/ipx.h b/usr.sbin/tcpdump/tcpdump/ipx.h
index 075d727322b0..ba459beeca35 100644
--- a/usr.sbin/tcpdump/tcpdump/ipx.h
+++ b/usr.sbin/tcpdump/tcpdump/ipx.h
@@ -1,7 +1,7 @@
/*
* IPX protocol formats
*
- * @(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/ipx.h,v 1.1 1995/03/08 12:52:15 olah Exp $
+ * @(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/ipx.h,v 1.2 1995/05/30 03:52:37 rgrimes Exp $
*/
/* well-known sockets */
diff --git a/usr.sbin/tcpdump/tcpdump/llc.h b/usr.sbin/tcpdump/tcpdump/llc.h
index 89c10d52bdaa..1dbf0d6b1e73 100644
--- a/usr.sbin/tcpdump/tcpdump/llc.h
+++ b/usr.sbin/tcpdump/tcpdump/llc.h
@@ -18,7 +18,7 @@
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * @(#) $Header: llc.h,v 1.4 94/06/14 20:11:46 leres Exp $ (LBL)
+ * @(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/llc.h,v 1.1 1995/03/08 12:52:16 olah Exp $ (LBL)
*/
/*
diff --git a/usr.sbin/tcpdump/tcpdump/md.h b/usr.sbin/tcpdump/tcpdump/md.h
index 9df5e9bece28..40bbf5e84ac0 100644
--- a/usr.sbin/tcpdump/tcpdump/md.h
+++ b/usr.sbin/tcpdump/tcpdump/md.h
@@ -18,7 +18,7 @@
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * @(#) $Header: md-i386.h,v 1.5 94/06/14 20:14:40 leres Exp $ (LBL)
+ * @(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/md.h,v 1.2 1995/03/08 12:52:17 olah Exp $ (LBL)
*/
#define TCPDUMP_ALIGN
diff --git a/usr.sbin/tcpdump/tcpdump/nfsfh.h b/usr.sbin/tcpdump/tcpdump/nfsfh.h
index 36296c33c914..742be501c51e 100644
--- a/usr.sbin/tcpdump/tcpdump/nfsfh.h
+++ b/usr.sbin/tcpdump/tcpdump/nfsfh.h
@@ -1,5 +1,5 @@
/*
- * $Header: nfsfh.h,v 1.3 94/06/12 14:32:58 leres Exp $
+ * $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/nfsfh.h,v 1.1 1995/03/08 12:52:19 olah Exp $
*
* nfsfh.h - NFS file handle definitions (for portable use)
*
diff --git a/usr.sbin/tcpdump/tcpdump/ntp.h b/usr.sbin/tcpdump/tcpdump/ntp.h
index 2a626fd0f98a..aeafecc8df67 100644
--- a/usr.sbin/tcpdump/tcpdump/ntp.h
+++ b/usr.sbin/tcpdump/tcpdump/ntp.h
@@ -1,4 +1,4 @@
-/* $Header: ntp.h,v 1.2 93/11/12 21:43:36 mccanne Exp $ */
+/* $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/ntp.h,v 1.2 1995/03/08 12:52:20 olah Exp $ */
/*
* Based on ntp.h from the U of MD implementation
diff --git a/usr.sbin/tcpdump/tcpdump/os.h b/usr.sbin/tcpdump/tcpdump/os.h
index 1bd9d5cc2360..41d27f93014b 100644
--- a/usr.sbin/tcpdump/tcpdump/os.h
+++ b/usr.sbin/tcpdump/tcpdump/os.h
@@ -18,7 +18,7 @@
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * @(#) $Header: os-bsd.h,v 1.18 94/06/14 20:15:17 leres Exp $ (LBL)
+ * @(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/os.h,v 1.2 1995/03/08 12:52:21 olah Exp $ (LBL)
*/
#include <sys/param.h>
diff --git a/usr.sbin/tcpdump/tcpdump/parsenfsfh.c b/usr.sbin/tcpdump/tcpdump/parsenfsfh.c
index 4acb82be9790..06017d4ac89e 100644
--- a/usr.sbin/tcpdump/tcpdump/parsenfsfh.c
+++ b/usr.sbin/tcpdump/tcpdump/parsenfsfh.c
@@ -1,5 +1,5 @@
#ifndef lint
-static char *RCSid = "$Header: parsenfsfh.c,v 1.5 94/01/13 19:06:41 leres Exp $";
+static char *RCSid = "$Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/parsenfsfh.c,v 1.1 1995/03/08 12:52:23 olah Exp $";
#endif
/*
diff --git a/usr.sbin/tcpdump/tcpdump/print-arp.c b/usr.sbin/tcpdump/tcpdump/print-arp.c
index 92fce668d08c..6664dc342a21 100644
--- a/usr.sbin/tcpdump/tcpdump/print-arp.c
+++ b/usr.sbin/tcpdump/tcpdump/print-arp.c
@@ -21,7 +21,7 @@
#ifndef lint
static char rcsid[] =
- "@(#) $Header: print-arp.c,v 1.28 94/06/14 20:17:36 leres Exp $ (LBL)";
+ "@(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/print-arp.c,v 1.2 1995/03/08 12:52:23 olah Exp $ (LBL)";
#endif
#include <sys/param.h>
diff --git a/usr.sbin/tcpdump/tcpdump/print-atalk.c b/usr.sbin/tcpdump/tcpdump/print-atalk.c
index 65514375e33f..27ba5c09e3dd 100644
--- a/usr.sbin/tcpdump/tcpdump/print-atalk.c
+++ b/usr.sbin/tcpdump/tcpdump/print-atalk.c
@@ -22,7 +22,7 @@
*/
#ifndef lint
static char rcsid[] =
- "@(#)$Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/print-atalk.c,v 1.3 1995/09/22 17:24:50 wollman Exp $ (LBL)";
+ "@(#)$Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/print-atalk.c,v 1.2.4.1 1995/10/06 11:53:42 davidg Exp $ (LBL)";
#endif
#include <sys/param.h>
diff --git a/usr.sbin/tcpdump/tcpdump/print-bootp.c b/usr.sbin/tcpdump/tcpdump/print-bootp.c
index 9e3f8ca58760..a8597334bd21 100644
--- a/usr.sbin/tcpdump/tcpdump/print-bootp.c
+++ b/usr.sbin/tcpdump/tcpdump/print-bootp.c
@@ -22,7 +22,7 @@
*/
#ifndef lint
static char rcsid[] =
- "@(#) $Header: print-bootp.c,v 1.30 94/06/14 20:17:37 leres Exp $ (LBL)";
+ "@(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/print-bootp.c,v 1.2 1995/03/08 12:52:27 olah Exp $ (LBL)";
#endif
#include <sys/param.h>
diff --git a/usr.sbin/tcpdump/tcpdump/print-decnet.c b/usr.sbin/tcpdump/tcpdump/print-decnet.c
index 91794d8254cd..19ef47fa7d0e 100644
--- a/usr.sbin/tcpdump/tcpdump/print-decnet.c
+++ b/usr.sbin/tcpdump/tcpdump/print-decnet.c
@@ -21,7 +21,7 @@
#ifndef lint
static char rcsid[] =
- "@(#) $Header: print-decnet.c,v 1.15 94/06/20 19:44:38 leres Exp $ (LBL)";
+ "@(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/print-decnet.c,v 1.1 1995/03/08 12:52:28 olah Exp $ (LBL)";
#endif
#include <sys/types.h>
diff --git a/usr.sbin/tcpdump/tcpdump/print-domain.c b/usr.sbin/tcpdump/tcpdump/print-domain.c
index 2ed1edf6fd91..cbe1df08fd09 100644
--- a/usr.sbin/tcpdump/tcpdump/print-domain.c
+++ b/usr.sbin/tcpdump/tcpdump/print-domain.c
@@ -21,7 +21,7 @@
#ifndef lint
static char rcsid[] =
- "@(#) $Header: print-domain.c,v 1.23 94/06/14 20:17:38 leres Exp $ (LBL)";
+ "@(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/print-domain.c,v 1.2 1995/03/08 12:52:29 olah Exp $ (LBL)";
#endif
#include <sys/param.h>
diff --git a/usr.sbin/tcpdump/tcpdump/print-egp.c b/usr.sbin/tcpdump/tcpdump/print-egp.c
index 876118d2ea21..d848566c852a 100644
--- a/usr.sbin/tcpdump/tcpdump/print-egp.c
+++ b/usr.sbin/tcpdump/tcpdump/print-egp.c
@@ -20,7 +20,7 @@
#ifndef lint
static char rcsid[] =
- "@(#) $Header: print-egp.c,v 1.14 94/06/20 19:44:38 leres Exp $ (LBL)";
+ "@(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/print-egp.c,v 1.2 1995/03/08 12:52:30 olah Exp $ (LBL)";
#endif
#include <sys/param.h>
diff --git a/usr.sbin/tcpdump/tcpdump/print-ether.c b/usr.sbin/tcpdump/tcpdump/print-ether.c
index 713fc0973248..10c8c82e9e71 100644
--- a/usr.sbin/tcpdump/tcpdump/print-ether.c
+++ b/usr.sbin/tcpdump/tcpdump/print-ether.c
@@ -20,7 +20,7 @@
*/
#ifndef lint
static char rcsid[] =
- "@(#) $Header: print-ether.c,v 1.37 94/06/10 17:01:29 mccanne Exp $ (LBL)";
+ "@(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/print-ether.c,v 1.3 1995/03/08 12:52:30 olah Exp $ (LBL)";
#endif
#include <sys/param.h>
diff --git a/usr.sbin/tcpdump/tcpdump/print-fddi.c b/usr.sbin/tcpdump/tcpdump/print-fddi.c
index 80528256a111..b1bf33b5dc73 100644
--- a/usr.sbin/tcpdump/tcpdump/print-fddi.c
+++ b/usr.sbin/tcpdump/tcpdump/print-fddi.c
@@ -21,7 +21,7 @@
#ifndef lint
static char rcsid[] =
- "@(#)$Header: print-fddi.c,v 1.21 94/06/10 17:01:29 mccanne Exp $ (LBL)";
+ "@(#)$Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/print-fddi.c,v 1.2 1995/03/08 12:52:32 olah Exp $ (LBL)";
#endif
#ifdef FDDI
diff --git a/usr.sbin/tcpdump/tcpdump/print-icmp.c b/usr.sbin/tcpdump/tcpdump/print-icmp.c
index ccd3156099d6..6c4d6e0219c9 100644
--- a/usr.sbin/tcpdump/tcpdump/print-icmp.c
+++ b/usr.sbin/tcpdump/tcpdump/print-icmp.c
@@ -21,7 +21,7 @@
#ifndef lint
static char rcsid[] =
- "@(#) $Header: print-icmp.c,v 1.20 94/06/14 20:17:39 leres Exp $ (LBL)";
+ "@(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/print-icmp.c,v 1.2 1995/03/08 12:52:32 olah Exp $ (LBL)";
#endif
#include <sys/param.h>
diff --git a/usr.sbin/tcpdump/tcpdump/print-ip.c b/usr.sbin/tcpdump/tcpdump/print-ip.c
index f4d318e5aff7..1be28abeab98 100644
--- a/usr.sbin/tcpdump/tcpdump/print-ip.c
+++ b/usr.sbin/tcpdump/tcpdump/print-ip.c
@@ -22,7 +22,7 @@
#ifndef lint
/* From: Header: print-ip.c,v 1.28 92/05/25 14:29:02 mccanne Exp $ (LBL) */
static char rcsid[] =
- "$Id: print-ip.c,v 1.5 1995/06/13 17:39:23 wollman Exp $";
+ "$Id: print-ip.c,v 1.4.4.1 1995/10/06 11:53:44 davidg Exp $";
#endif
#include <sys/param.h>
diff --git a/usr.sbin/tcpdump/tcpdump/print-ipx.c b/usr.sbin/tcpdump/tcpdump/print-ipx.c
index 5040068d27d0..4f1c22fa8c65 100644
--- a/usr.sbin/tcpdump/tcpdump/print-ipx.c
+++ b/usr.sbin/tcpdump/tcpdump/print-ipx.c
@@ -25,7 +25,7 @@
*/
#ifndef lint
static char rcsid[] =
- "@(#)$Header: print-ipx.c,v 1.6 94/06/20 19:44:38 leres Exp $";
+ "@(#)$Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/print-ipx.c,v 1.1 1995/03/08 12:52:34 olah Exp $";
#endif
#include <sys/param.h>
diff --git a/usr.sbin/tcpdump/tcpdump/print-isoclns.c b/usr.sbin/tcpdump/tcpdump/print-isoclns.c
index 5f86d5630ebb..a8441410dee9 100644
--- a/usr.sbin/tcpdump/tcpdump/print-isoclns.c
+++ b/usr.sbin/tcpdump/tcpdump/print-isoclns.c
@@ -25,7 +25,7 @@
#ifndef lint
static char rcsid[] =
- "@(#) $Header: print-isoclns.c,v 1.9 94/06/14 20:18:44 leres Exp $ (LBL)";
+ "@(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/print-isoclns.c,v 1.1 1995/03/08 12:52:35 olah Exp $ (LBL)";
#endif
#include <sys/types.h>
diff --git a/usr.sbin/tcpdump/tcpdump/print-krb.c b/usr.sbin/tcpdump/tcpdump/print-krb.c
index e5470726f84a..35e61db7c46a 100644
--- a/usr.sbin/tcpdump/tcpdump/print-krb.c
+++ b/usr.sbin/tcpdump/tcpdump/print-krb.c
@@ -23,7 +23,7 @@
#ifndef lint
static char rcsid[] =
- "$Id$";
+ "$Id: print-krb.c,v 1.1 1995/08/29 19:50:18 wollman Exp $";
/*
"@(#) Header: /afs/sipb/project/tcpdump/src/tcpdump-3.0.2/RCS/print-krb.c,v 1.3 1995/08/16 05:33:27 jhawk Exp ";
*/
diff --git a/usr.sbin/tcpdump/tcpdump/print-llc.c b/usr.sbin/tcpdump/tcpdump/print-llc.c
index cff51b7c8664..e8a91720c27e 100644
--- a/usr.sbin/tcpdump/tcpdump/print-llc.c
+++ b/usr.sbin/tcpdump/tcpdump/print-llc.c
@@ -26,7 +26,7 @@
#ifndef lint
static char rcsid[] =
- "@(#)$Header: print-llc.c,v 1.13 94/06/14 20:18:45 leres Exp $";
+ "@(#)$Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/print-llc.c,v 1.1 1995/03/08 12:52:36 olah Exp $";
#endif
#include <sys/param.h>
diff --git a/usr.sbin/tcpdump/tcpdump/print-nfs.c b/usr.sbin/tcpdump/tcpdump/print-nfs.c
index 63148b21c083..570b765c3685 100644
--- a/usr.sbin/tcpdump/tcpdump/print-nfs.c
+++ b/usr.sbin/tcpdump/tcpdump/print-nfs.c
@@ -21,7 +21,7 @@
#ifndef lint
static char rcsid[] =
- "@(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/print-nfs.c,v 1.4 1995/08/23 05:18:54 pst Exp $ (LBL)";
+ "@(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/print-nfs.c,v 1.3.4.1 1995/10/06 11:53:46 davidg Exp $ (LBL)";
#endif
#include <sys/param.h>
diff --git a/usr.sbin/tcpdump/tcpdump/print-ntp.c b/usr.sbin/tcpdump/tcpdump/print-ntp.c
index c4fadf1006f2..8e9ef927da3f 100644
--- a/usr.sbin/tcpdump/tcpdump/print-ntp.c
+++ b/usr.sbin/tcpdump/tcpdump/print-ntp.c
@@ -25,7 +25,7 @@
#ifndef lint
static char rcsid[] =
- "@(#) $Header: print-ntp.c,v 1.14 94/06/14 20:18:46 leres Exp $ (LBL)";
+ "@(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/print-ntp.c,v 1.2 1995/03/08 12:52:37 olah Exp $ (LBL)";
#endif
#include <sys/param.h>
diff --git a/usr.sbin/tcpdump/tcpdump/print-null.c b/usr.sbin/tcpdump/tcpdump/print-null.c
index 8e7f3b7faa54..0e9b04f6a69e 100644
--- a/usr.sbin/tcpdump/tcpdump/print-null.c
+++ b/usr.sbin/tcpdump/tcpdump/print-null.c
@@ -21,7 +21,7 @@
#ifndef lint
static char rcsid[] =
- "@(#)$Header: print-null.c,v 1.14 94/06/10 17:01:35 mccanne Exp $ (LBL)";
+ "@(#)$Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/print-null.c,v 1.2 1995/03/08 12:52:38 olah Exp $ (LBL)";
#endif
#include <sys/param.h>
diff --git a/usr.sbin/tcpdump/tcpdump/print-ospf.c b/usr.sbin/tcpdump/tcpdump/print-ospf.c
index 4cae135f38cc..1a17b8b40284 100644
--- a/usr.sbin/tcpdump/tcpdump/print-ospf.c
+++ b/usr.sbin/tcpdump/tcpdump/print-ospf.c
@@ -23,7 +23,7 @@
#ifndef lint
static char rcsid[] =
- "@(#) $Header: print-ospf.c,v 1.12 94/06/14 20:18:46 leres Exp $ (LBL)";
+ "@(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/print-ospf.c,v 1.2 1995/03/08 12:52:39 olah Exp $ (LBL)";
#endif
#include <sys/param.h>
diff --git a/usr.sbin/tcpdump/tcpdump/print-ppp.c b/usr.sbin/tcpdump/tcpdump/print-ppp.c
index 806f05fc5f98..1bf10d969c57 100644
--- a/usr.sbin/tcpdump/tcpdump/print-ppp.c
+++ b/usr.sbin/tcpdump/tcpdump/print-ppp.c
@@ -21,7 +21,7 @@
#ifndef lint
static char rcsid[] =
- "@(#)$Header: print-ppp.c,v 1.18 94/06/10 17:01:37 mccanne Exp $ (LBL)";
+ "@(#)$Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/print-ppp.c,v 1.2 1995/03/08 12:52:40 olah Exp $ (LBL)";
#endif
#ifdef PPP
diff --git a/usr.sbin/tcpdump/tcpdump/print-rip.c b/usr.sbin/tcpdump/tcpdump/print-rip.c
index d98b5a4a0fae..0c103ffb58bd 100644
--- a/usr.sbin/tcpdump/tcpdump/print-rip.c
+++ b/usr.sbin/tcpdump/tcpdump/print-rip.c
@@ -21,7 +21,7 @@
#ifndef lint
static char rcsid[] =
- "@(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/print-rip.c,v 1.5 1995/08/26 12:40:05 davidg Exp $ (LBL)";
+ "@(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/print-rip.c,v 1.4.4.1 1995/10/06 11:53:48 davidg Exp $ (LBL)";
#endif
#include <sys/param.h>
diff --git a/usr.sbin/tcpdump/tcpdump/print-sl.c b/usr.sbin/tcpdump/tcpdump/print-sl.c
index 3c2b8ea87cdf..f32c17e1f686 100644
--- a/usr.sbin/tcpdump/tcpdump/print-sl.c
+++ b/usr.sbin/tcpdump/tcpdump/print-sl.c
@@ -21,7 +21,7 @@
#ifndef lint
static char rcsid[] =
- "@(#)$Header: print-sl.c,v 1.28 94/06/10 17:01:38 mccanne Exp $ (LBL)";
+ "@(#)$Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/print-sl.c,v 1.2 1995/03/08 12:52:41 olah Exp $ (LBL)";
#endif
#ifdef CSLIP
diff --git a/usr.sbin/tcpdump/tcpdump/print-snmp.c b/usr.sbin/tcpdump/tcpdump/print-snmp.c
index 0a6cb58b801d..330b15e9a59a 100644
--- a/usr.sbin/tcpdump/tcpdump/print-snmp.c
+++ b/usr.sbin/tcpdump/tcpdump/print-snmp.c
@@ -41,7 +41,7 @@
*/
#ifndef lint
static char rcsid[] =
- "@(#) $Id: print-snmp.c,v 3.10 91/01/17 01:18:13 loverso Exp Locker: loverso $ (jlv)";
+ "@(#) $Id: print-snmp.c,v 1.2 1995/03/08 12:52:42 olah Exp $ (jlv)";
#endif
#include <sys/param.h>
diff --git a/usr.sbin/tcpdump/tcpdump/print-sunrpc.c b/usr.sbin/tcpdump/tcpdump/print-sunrpc.c
index 938d4b04a639..04c9a4294ae3 100644
--- a/usr.sbin/tcpdump/tcpdump/print-sunrpc.c
+++ b/usr.sbin/tcpdump/tcpdump/print-sunrpc.c
@@ -21,7 +21,7 @@
#ifndef lint
static char rcsid[] =
- "@(#) $Header: print-sunrpc.c,v 1.12 94/06/14 20:18:48 leres Exp $ (LBL)";
+ "@(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/print-sunrpc.c,v 1.3 1995/03/08 12:52:43 olah Exp $ (LBL)";
#endif
#include <sys/param.h>
diff --git a/usr.sbin/tcpdump/tcpdump/print-tcp.c b/usr.sbin/tcpdump/tcpdump/print-tcp.c
index 7d5d65cdd1e6..b4745eb03da1 100644
--- a/usr.sbin/tcpdump/tcpdump/print-tcp.c
+++ b/usr.sbin/tcpdump/tcpdump/print-tcp.c
@@ -21,7 +21,7 @@
#ifndef lint
static char rcsid[] =
- "@(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/print-tcp.c,v 1.3 1995/03/08 13:13:01 olah Exp $ (LBL)";
+ "@(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/print-tcp.c,v 1.4 1995/05/30 03:52:38 rgrimes Exp $ (LBL)";
#endif
#include <sys/param.h>
diff --git a/usr.sbin/tcpdump/tcpdump/print-tftp.c b/usr.sbin/tcpdump/tcpdump/print-tftp.c
index 8771cbf834c8..73d4717e43f9 100644
--- a/usr.sbin/tcpdump/tcpdump/print-tftp.c
+++ b/usr.sbin/tcpdump/tcpdump/print-tftp.c
@@ -23,7 +23,7 @@
#ifndef lint
static char rcsid[] =
- "@(#) $Header: print-tftp.c,v 1.20 94/06/14 20:18:49 leres Exp $ (LBL)";
+ "@(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/print-tftp.c,v 1.2 1995/03/08 12:52:45 olah Exp $ (LBL)";
#endif
#include <sys/param.h>
diff --git a/usr.sbin/tcpdump/tcpdump/print-udp.c b/usr.sbin/tcpdump/tcpdump/print-udp.c
index 2dc442c80f95..bec0ca1deef9 100644
--- a/usr.sbin/tcpdump/tcpdump/print-udp.c
+++ b/usr.sbin/tcpdump/tcpdump/print-udp.c
@@ -21,7 +21,7 @@
#ifndef lint
static char rcsid[] =
- "$Id: print-udp.c,v 1.4 1995/08/29 19:48:11 wollman Exp $";
+ "$Id: print-udp.c,v 1.3.4.1 1995/10/06 11:53:49 davidg Exp $";
#endif
#include <sys/param.h>
diff --git a/usr.sbin/tcpdump/tcpdump/print-wb.c b/usr.sbin/tcpdump/tcpdump/print-wb.c
index a9322dda1920..68d5382371d6 100644
--- a/usr.sbin/tcpdump/tcpdump/print-wb.c
+++ b/usr.sbin/tcpdump/tcpdump/print-wb.c
@@ -21,7 +21,7 @@
#ifndef lint
static char rcsid[] =
- "@(#) $Header: print-wb.c,v 1.14 94/06/14 20:18:50 leres Exp $ (LBL)";
+ "@(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/print-wb.c,v 1.1 1995/03/08 12:52:46 olah Exp $ (LBL)";
#endif
#include <sys/types.h>
diff --git a/usr.sbin/tcpdump/tcpdump/tcpdump.1 b/usr.sbin/tcpdump/tcpdump/tcpdump.1
index 56af4fd95fe6..4bda7b437c21 100644
--- a/usr.sbin/tcpdump/tcpdump/tcpdump.1
+++ b/usr.sbin/tcpdump/tcpdump/tcpdump.1
@@ -1,4 +1,4 @@
-.\" @(#) $Id: tcpdump.1,v 1.4 1995/09/22 17:24:51 wollman Exp $ (LBL)
+.\" @(#) $Id: tcpdump.1,v 1.3.4.1 1995/10/06 11:53:50 davidg Exp $ (LBL)
.\"
.\" Copyright (c) 1987, 1988, 1989, 1990, 1991, 1992, 1994
.\" The Regents of the University of California. All rights reserved.
diff --git a/usr.sbin/tcpdump/tcpdump/tcpdump.c b/usr.sbin/tcpdump/tcpdump/tcpdump.c
index 48f6f636b097..1c3dc5eecb12 100644
--- a/usr.sbin/tcpdump/tcpdump/tcpdump.c
+++ b/usr.sbin/tcpdump/tcpdump/tcpdump.c
@@ -22,7 +22,7 @@
char copyright[] =
"@(#) Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994\nThe Regents of the University of California. All rights reserved.\n";
static char rcsid[] =
- "@(#)$Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/tcpdump.c,v 1.2 1995/03/08 12:52:48 olah Exp $ (LBL)";
+ "@(#)$Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/tcpdump.c,v 1.3 1995/05/30 03:52:39 rgrimes Exp $ (LBL)";
#endif
/*
diff --git a/usr.sbin/tcpdump/tcpdump/util.c b/usr.sbin/tcpdump/tcpdump/util.c
index 193e18d0492c..3f037f96d059 100644
--- a/usr.sbin/tcpdump/tcpdump/util.c
+++ b/usr.sbin/tcpdump/tcpdump/util.c
@@ -21,7 +21,7 @@
#ifndef lint
static char rcsid[] =
- "@(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/util.c,v 1.3 1995/09/28 15:28:40 wollman Exp $ (LBL)";
+ "@(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/util.c,v 1.2.4.1 1995/10/06 11:53:51 davidg Exp $ (LBL)";
#endif
#include <stdlib.h>
diff --git a/usr.sbin/tcpdump/tcpslice/gwtm2secs.c b/usr.sbin/tcpdump/tcpslice/gwtm2secs.c
index d2fcec772efc..947767a6113d 100644
--- a/usr.sbin/tcpdump/tcpslice/gwtm2secs.c
+++ b/usr.sbin/tcpdump/tcpslice/gwtm2secs.c
@@ -20,7 +20,7 @@
*/
#if !defined(lint) && !defined(__GNUC__)
static char rcsid[] =
- "@(#)$Header: /home/ncvs/src/usr.sbin/tcpdump/tcpslice/gwtm2secs.c,v 1.3 1995/08/23 05:18:56 pst Exp $ (LBL)";
+ "@(#)$Header: /home/ncvs/src/usr.sbin/tcpdump/tcpslice/gwtm2secs.c,v 1.2.4.1 1995/10/06 11:54:13 davidg Exp $ (LBL)";
#endif
/*
diff --git a/usr.sbin/tcpdump/tcpslice/search.c b/usr.sbin/tcpdump/tcpslice/search.c
index db74797c1156..232fc7804a63 100644
--- a/usr.sbin/tcpdump/tcpslice/search.c
+++ b/usr.sbin/tcpdump/tcpslice/search.c
@@ -20,7 +20,7 @@
*/
#if !defined(lint) && !defined(__GNUC__)
static char rcsid[] =
- "@(#)$Header: /home/ncvs/src/usr.sbin/tcpdump/tcpslice/search.c,v 1.3 1995/08/23 05:18:57 pst Exp $ (LBL)";
+ "@(#)$Header: /home/ncvs/src/usr.sbin/tcpdump/tcpslice/search.c,v 1.2.4.1 1995/10/06 11:54:17 davidg Exp $ (LBL)";
#endif
/*
diff --git a/usr.sbin/tcpdump/tcpslice/tcpslice.1 b/usr.sbin/tcpdump/tcpslice/tcpslice.1
index 184e8e5b3b00..c9370fbe6b31 100644
--- a/usr.sbin/tcpdump/tcpslice/tcpslice.1
+++ b/usr.sbin/tcpdump/tcpslice/tcpslice.1
@@ -1,4 +1,4 @@
-.\" @(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpslice/tcpslice.1,v 1.3 1995/03/08 12:53:39 olah Exp $ (LBL)
+.\" @(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpslice/tcpslice.1,v 1.4 1995/05/14 15:21:36 gpalmer Exp $ (LBL)
.\"
.\" Copyright (c) 1988-1990 The Regents of the University of California.
.\" All rights reserved.
diff --git a/usr.sbin/tcpdump/tcpslice/tcpslice.c b/usr.sbin/tcpdump/tcpslice/tcpslice.c
index 2c75bea46a52..2166875c2b74 100644
--- a/usr.sbin/tcpdump/tcpslice/tcpslice.c
+++ b/usr.sbin/tcpdump/tcpslice/tcpslice.c
@@ -22,7 +22,7 @@
char copyright[] =
"@(#) Copyright (c) 1987-1990 The Regents of the University of California.\nAll rights reserved.\n";
static char rcsid[] =
- "@(#)$Header: /home/ncvs/src/usr.sbin/tcpdump/tcpslice/tcpslice.c,v 1.3 1995/08/23 05:18:59 pst Exp $ (LBL)";
+ "@(#)$Header: /home/ncvs/src/usr.sbin/tcpdump/tcpslice/tcpslice.c,v 1.2.4.1 1995/10/06 11:54:20 davidg Exp $ (LBL)";
#endif
/*
diff --git a/usr.sbin/tcpdump/tcpslice/util.c b/usr.sbin/tcpdump/tcpslice/util.c
index f53c97953ed3..ea434e90c6f0 100644
--- a/usr.sbin/tcpdump/tcpslice/util.c
+++ b/usr.sbin/tcpdump/tcpslice/util.c
@@ -21,7 +21,7 @@
#if !defined(lint) && !defined(__GNUC__)
static char rcsid[] =
- "@(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpslice/util.c,v 1.2 1995/08/23 05:19:00 pst Exp $ (LBL)";
+ "@(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpslice/util.c,v 1.1.4.1 1995/10/06 11:54:22 davidg Exp $ (LBL)";
#endif
#include "tcpslice.h"
diff --git a/usr.sbin/timed/timed/acksend.c b/usr.sbin/timed/timed/acksend.c
index c84f52de46d0..fda2ed78ce11 100644
--- a/usr.sbin/timed/timed/acksend.c
+++ b/usr.sbin/timed/timed/acksend.c
@@ -36,7 +36,7 @@ static char sccsid[] = "@(#)acksend.c 8.1 (Berkeley) 6/6/93";
#endif /* not lint */
#ifdef sgi
-#ident "$Revision: 1.6 $"
+#ident "$Revision: 1.1.1.1 $"
#endif
#include "globals.h"
diff --git a/usr.sbin/timed/timed/byteorder.c b/usr.sbin/timed/timed/byteorder.c
index deb4d0eb035c..68cec290405a 100644
--- a/usr.sbin/timed/timed/byteorder.c
+++ b/usr.sbin/timed/timed/byteorder.c
@@ -36,7 +36,7 @@ static char sccsid[] = "@(#)byteorder.c 8.1 (Berkeley) 6/6/93";
#endif /* not lint */
#ifdef sgi
-#ident "$Revision: 1.1.1.1 $"
+#ident "$Revision: 1.2 $"
#endif
#include "globals.h"
diff --git a/usr.sbin/timed/timed/candidate.c b/usr.sbin/timed/timed/candidate.c
index 38700bc45d87..c4ccd0ffa347 100644
--- a/usr.sbin/timed/timed/candidate.c
+++ b/usr.sbin/timed/timed/candidate.c
@@ -36,7 +36,7 @@ static char sccsid[] = "@(#)candidate.c 8.1 (Berkeley) 6/6/93";
#endif /* not lint */
#ifdef sgi
-#ident "$Revision: 1.1.1.1 $"
+#ident "$Revision: 1.2 $"
#endif
#include "globals.h"
diff --git a/usr.sbin/timed/timed/cksum.c b/usr.sbin/timed/timed/cksum.c
index 3d15af3cf1a0..6abd45dee114 100644
--- a/usr.sbin/timed/timed/cksum.c
+++ b/usr.sbin/timed/timed/cksum.c
@@ -36,7 +36,7 @@ static char sccsid[] = "@(#)cksum.c 8.1 (Berkeley) 6/6/93";
#endif /* not lint */
#ifdef sgi
-#ident "$Revision: 1.3 $"
+#ident "$Revision: 1.1.1.1 $"
#endif
#include <sys/types.h>
diff --git a/usr.sbin/timed/timed/correct.c b/usr.sbin/timed/timed/correct.c
index 569d2e1ddac3..a280ed3c5aa4 100644
--- a/usr.sbin/timed/timed/correct.c
+++ b/usr.sbin/timed/timed/correct.c
@@ -36,7 +36,7 @@ static char sccsid[] = "@(#)correct.c 8.1 (Berkeley) 6/6/93";
#endif /* not lint */
#ifdef sgi
-#ident "$Revision: 1.16 $"
+#ident "$Revision: 1.1.1.1 $"
#endif
#include "globals.h"
diff --git a/usr.sbin/timed/timed/globals.h b/usr.sbin/timed/timed/globals.h
index 92aed3ee7c78..4c6df6255475 100644
--- a/usr.sbin/timed/timed/globals.h
+++ b/usr.sbin/timed/timed/globals.h
@@ -34,7 +34,7 @@
*/
#ifdef sgi
-#ident "$Revision: 1.15 $"
+#ident "$Revision: 1.1.1.1 $"
#endif
#include <sys/param.h>
diff --git a/usr.sbin/timed/timed/master.c b/usr.sbin/timed/timed/master.c
index 3397173eadab..afd2cd819980 100644
--- a/usr.sbin/timed/timed/master.c
+++ b/usr.sbin/timed/timed/master.c
@@ -36,7 +36,7 @@ static char sccsid[] = "@(#)master.c 8.1 (Berkeley) 6/6/93";
#endif /* not lint */
#ifdef sgi
-#ident "$Revision: 1.21 $"
+#ident "$Revision: 1.1.1.1 $"
#endif
#include "globals.h"
diff --git a/usr.sbin/timed/timed/measure.c b/usr.sbin/timed/timed/measure.c
index 2b49eaa4ed8d..3fe2bfec736f 100644
--- a/usr.sbin/timed/timed/measure.c
+++ b/usr.sbin/timed/timed/measure.c
@@ -36,7 +36,7 @@ static char sccsid[] = "@(#)measure.c 8.1 (Berkeley) 6/6/93";
#endif /* not lint */
#ifdef sgi
-#ident "$Revision: 1.2 $"
+#ident "$Revision: 1.3 $"
#endif
#include "globals.h"
diff --git a/usr.sbin/timed/timed/networkdelta.c b/usr.sbin/timed/timed/networkdelta.c
index d64640ae02e2..fc18d4a39497 100644
--- a/usr.sbin/timed/timed/networkdelta.c
+++ b/usr.sbin/timed/timed/networkdelta.c
@@ -36,7 +36,7 @@ static char sccsid[] = "@(#)networkdelta.c 8.1 (Berkeley) 6/6/93";
#endif /* not lint */
#ifdef sgi
-#ident "$Revision: 1.4 $"
+#ident "$Revision: 1.1.1.1 $"
#endif
#include "globals.h"
diff --git a/usr.sbin/timed/timed/readmsg.c b/usr.sbin/timed/timed/readmsg.c
index 3e8f4d255a61..e0a1315c2b8b 100644
--- a/usr.sbin/timed/timed/readmsg.c
+++ b/usr.sbin/timed/timed/readmsg.c
@@ -36,7 +36,7 @@ static char sccsid[] = "@(#)readmsg.c 8.1 (Berkeley) 6/6/93";
#endif /* not lint */
#ifdef sgi
-#ident "$Revision: 1.17 $"
+#ident "$Revision: 1.1.1.1 $"
#endif
#include "globals.h"
diff --git a/usr.sbin/timed/timed/slave.c b/usr.sbin/timed/timed/slave.c
index 3bb6d85aff72..0cd31dff7df3 100644
--- a/usr.sbin/timed/timed/slave.c
+++ b/usr.sbin/timed/timed/slave.c
@@ -36,7 +36,7 @@ static char sccsid[] = "@(#)slave.c 8.1 (Berkeley) 6/6/93";
#endif /* not lint */
#ifdef sgi
-#ident "$Revision: 1.20 $"
+#ident "$Revision: 1.1.1.1 $"
#endif
#include "globals.h"
diff --git a/usr.sbin/timed/timed/timed.c b/usr.sbin/timed/timed/timed.c
index e134a27b472e..ce66b5db77af 100644
--- a/usr.sbin/timed/timed/timed.c
+++ b/usr.sbin/timed/timed/timed.c
@@ -42,7 +42,7 @@ static char sccsid[] = "@(#)timed.c 8.1 (Berkeley) 6/6/93";
#endif /* not lint */
#ifdef sgi
-#ident "$Revision: 1.1.1.1 $"
+#ident "$Revision: 1.2 $"
#endif /* sgi */
#define TSPTYPES
diff --git a/usr.sbin/timed/timedc/cmds.c b/usr.sbin/timed/timedc/cmds.c
index 9e0aa21288e1..acaf8d24428e 100644
--- a/usr.sbin/timed/timedc/cmds.c
+++ b/usr.sbin/timed/timedc/cmds.c
@@ -36,7 +36,7 @@ static char sccsid[] = "@(#)cmds.c 8.1 (Berkeley) 6/6/93";
#endif /* not lint */
#ifdef sgi
-#ident "$Revision: 1.10 $"
+#ident "$Revision: 1.2 $"
#endif
#include "timedc.h"
diff --git a/usr.sbin/timed/timedc/timedc.c b/usr.sbin/timed/timedc/timedc.c
index 02d086a8ad8b..14c5a5024fed 100644
--- a/usr.sbin/timed/timedc/timedc.c
+++ b/usr.sbin/timed/timedc/timedc.c
@@ -42,7 +42,7 @@ static char sccsid[] = "@(#)timedc.c 8.1 (Berkeley) 6/6/93";
#endif /* not lint */
#ifdef sgi
-#ident "$Revision: 1.6 $"
+#ident "$Revision: 1.1.1.1 $"
#endif
#include "timedc.h"
diff --git a/usr.sbin/tzsetup/Makefile b/usr.sbin/tzsetup/Makefile
index 0e316ef04b22..aabdb72e561e 100644
--- a/usr.sbin/tzsetup/Makefile
+++ b/usr.sbin/tzsetup/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1 1994/09/13 23:01:57 wollman Exp $
+# $Id: Makefile,v 1.2 1995/04/24 21:04:30 wollman Exp $
PROG= tzsetup
NOMAN=
diff --git a/usr.sbin/tzsetup/main.c b/usr.sbin/tzsetup/main.c
index 50b4b2613795..61be44faf0b7 100644
--- a/usr.sbin/tzsetup/main.c
+++ b/usr.sbin/tzsetup/main.c
@@ -28,7 +28,7 @@
*/
static const char rcsid[] =
- "$Id: main.c,v 1.4 1995/10/06 02:46:23 jkh Exp $";
+ "$Id: main.c,v 1.3.2.1 1995/10/06 02:48:59 jkh Exp $";
#include <stdio.h>
#include <ncurses.h>
diff --git a/usr.sbin/tzsetup/tzmenu.c b/usr.sbin/tzsetup/tzmenu.c
index bec4cfd33794..32e39e43224e 100644
--- a/usr.sbin/tzsetup/tzmenu.c
+++ b/usr.sbin/tzsetup/tzmenu.c
@@ -28,7 +28,7 @@
*/
static const char rcsid[] =
- "$Id: tzmenu.c,v 1.1 1995/04/24 21:04:34 wollman Exp $";
+ "$Id: tzmenu.c,v 1.2 1995/05/30 03:52:50 rgrimes Exp $";
#include <stdio.h>
#include <ncurses.h>
diff --git a/usr.sbin/tzsetup/tzsetup.h b/usr.sbin/tzsetup/tzsetup.h
index bceff7ebe005..726d0efd0ed3 100644
--- a/usr.sbin/tzsetup/tzsetup.h
+++ b/usr.sbin/tzsetup/tzsetup.h
@@ -26,7 +26,7 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: tzsetup.h,v 1.1 1995/04/24 21:04:35 wollman Exp $
+ * $Id: tzsetup.h,v 1.2 1995/05/30 03:52:51 rgrimes Exp $
*/
struct country {
diff --git a/usr.sbin/vidcontrol/decode.c b/usr.sbin/vidcontrol/decode.c
index d1046c5956c9..c6f0c34a2484 100644
--- a/usr.sbin/vidcontrol/decode.c
+++ b/usr.sbin/vidcontrol/decode.c
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: decode.c,v 1.2 1995/01/28 22:18:02 sos Exp $
+ * $Id: decode.c,v 1.3 1995/05/30 03:52:52 rgrimes Exp $
*/
#include <stdio.h>
diff --git a/usr.sbin/vidcontrol/vidcontrol.c b/usr.sbin/vidcontrol/vidcontrol.c
index bd568439c68a..8154c037b0d5 100644
--- a/usr.sbin/vidcontrol/vidcontrol.c
+++ b/usr.sbin/vidcontrol/vidcontrol.c
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: vidcontrol.c,v 1.10 1995/03/03 21:21:24 dima Exp $
+ * $Id: vidcontrol.c,v 1.11 1995/05/30 03:52:53 rgrimes Exp $
*/
#include <ctype.h>
diff --git a/usr.sbin/vnconfig/Makefile b/usr.sbin/vnconfig/Makefile
index ba8a89327e9b..857a93f4cf90 100644
--- a/usr.sbin/vnconfig/Makefile
+++ b/usr.sbin/vnconfig/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.2 1993/12/23 07:04:31 cgd Exp $
+# $Id: Makefile,v 1.1 1994/12/04 20:12:24 phk Exp $
PROG= vnconfig
MAN8= vnconfig.8
diff --git a/usr.sbin/xntpd/Makefile b/usr.sbin/xntpd/Makefile
index 962e64a41bf0..33c2234d6e06 100644
--- a/usr.sbin/xntpd/Makefile
+++ b/usr.sbin/xntpd/Makefile
@@ -1,6 +1,6 @@
#
# Makefile for xntpd.
-# $Id: Makefile,v 1.3 1994/02/03 22:30:30 wollman Exp $
+# $Id: Makefile,v 1.4 1994/09/29 23:43:54 wollman Exp $
#
SUBDIR= lib parse xntpd xntpdc ntpq ntpdate ntptrace authstuff util
diff --git a/usr.sbin/xntpd/README.FreeBSD b/usr.sbin/xntpd/README.FreeBSD
index 798a685f7740..773a1f334d60 100644
--- a/usr.sbin/xntpd/README.FreeBSD
+++ b/usr.sbin/xntpd/README.FreeBSD
@@ -1,4 +1,4 @@
- $Id: README.FreeBSD,v 1.7 1994/04/21 21:10:20 wollman Exp $
+ $Id: README.FreeBSD,v 1.8 1994/09/29 23:43:55 wollman Exp $
This version of NTP was converted to the BSD-style Makefile system by
Garrett Wollman (wollman@FreeBSD.org); it is based on version
diff --git a/usr.sbin/xntpd/authstuff/Makefile b/usr.sbin/xntpd/authstuff/Makefile
index 79b2d9d675e3..d2e79971f872 100644
--- a/usr.sbin/xntpd/authstuff/Makefile
+++ b/usr.sbin/xntpd/authstuff/Makefile
@@ -1,5 +1,5 @@
#
-# $Id: Makefile,v 1.1 1993/12/21 21:06:20 wollman Exp $
+# $Id: Makefile,v 1.2 1993/12/22 11:32:10 rgrimes Exp $
#
# Most of the programs in this directory are completely useless for the
# NTP configuration that we provide by default.
diff --git a/usr.sbin/xntpd/clockstuff/Makefile b/usr.sbin/xntpd/clockstuff/Makefile
index 425d79d1ddaa..91084f1ade42 100644
--- a/usr.sbin/xntpd/clockstuff/Makefile
+++ b/usr.sbin/xntpd/clockstuff/Makefile
@@ -1,5 +1,5 @@
#
-# $Id: Makefile,v 1.1 1993/12/21 21:06:24 wollman Exp $
+# $Id: Makefile,v 1.2 1994/09/15 20:55:44 bde Exp $
#
PROG= propdelay
diff --git a/usr.sbin/xntpd/kernel/chuinit.c b/usr.sbin/xntpd/kernel/chuinit.c
index 80b36a9a6e10..e1b7cb051356 100644
--- a/usr.sbin/xntpd/kernel/chuinit.c
+++ b/usr.sbin/xntpd/kernel/chuinit.c
@@ -1,7 +1,7 @@
/*
** dynamically loadable chu driver
**
-** $Header: /home/ncvs/src/usr.sbin/xntpd/kernel/chuinit.c,v 1.1.1.1 1994/09/29 23:02:42 wollman Exp $
+** $Header: /home/ncvs/src/usr.sbin/xntpd/kernel/chuinit.c,v 1.2 1995/05/30 03:53:30 rgrimes Exp $
**
** william robertson <rob@agate.berkeley.edu>
*/
diff --git a/usr.sbin/xntpd/kernel/clkinit.c b/usr.sbin/xntpd/kernel/clkinit.c
index b8fe4563bf0f..3e3df50c38fa 100644
--- a/usr.sbin/xntpd/kernel/clkinit.c
+++ b/usr.sbin/xntpd/kernel/clkinit.c
@@ -1,7 +1,7 @@
/*
** dynamically loadable clk driver
**
-** $Header: /home/ncvs/src/usr.sbin/xntpd/kernel/clkinit.c,v 1.1.1.1 1994/09/29 23:02:47 wollman Exp $
+** $Header: /home/ncvs/src/usr.sbin/xntpd/kernel/clkinit.c,v 1.2 1995/05/30 03:53:31 rgrimes Exp $
**
** william robertson <rob@agate.berkeley.edu>
*/
diff --git a/usr.sbin/xntpd/lib/Makefile b/usr.sbin/xntpd/lib/Makefile
index 32c6a4a964cc..0d90c6b2d762 100644
--- a/usr.sbin/xntpd/lib/Makefile
+++ b/usr.sbin/xntpd/lib/Makefile
@@ -1,5 +1,5 @@
#
-# $Id: Makefile,v 1.5 1994/04/03 20:37:05 wollman Exp $
+# $Id: Makefile,v 1.6 1995/03/23 19:13:04 wollman Exp $
#
CFLAGS+= -I${.CURDIR}/../include
diff --git a/usr.sbin/xntpd/lib/machines.c b/usr.sbin/xntpd/lib/machines.c
index 1d1cbc92faa4..4996081020b5 100644
--- a/usr.sbin/xntpd/lib/machines.c
+++ b/usr.sbin/xntpd/lib/machines.c
@@ -2,7 +2,7 @@
*
* Real bummers unite !
*
- * $Id:$
+ * $Id: machines.c,v 1.1.1.3 1994/09/29 23:03:36 wollman Exp $
*/
#include "ntp_stdlib.h"
diff --git a/usr.sbin/xntpd/ntpdate/Makefile b/usr.sbin/xntpd/ntpdate/Makefile
index f0af84001c3d..060a186dde18 100644
--- a/usr.sbin/xntpd/ntpdate/Makefile
+++ b/usr.sbin/xntpd/ntpdate/Makefile
@@ -1,5 +1,5 @@
#
-# $Id: Makefile,v 1.3 1993/12/22 11:32:56 rgrimes Exp $
+# $Id: Makefile,v 1.4 1994/10/03 23:51:17 phk Exp $
#
CFLAGS+= -I${.CURDIR}/../include
diff --git a/usr.sbin/xntpd/ntpq/Makefile b/usr.sbin/xntpd/ntpq/Makefile
index 875592a889c6..827114effddc 100644
--- a/usr.sbin/xntpd/ntpq/Makefile
+++ b/usr.sbin/xntpd/ntpq/Makefile
@@ -1,5 +1,5 @@
#
-# $Id: Makefile,v 1.3 1993/12/22 11:33:07 rgrimes Exp $
+# $Id: Makefile,v 1.4 1994/10/03 23:51:22 phk Exp $
#
CFLAGS+= -I${.CURDIR}/../include
diff --git a/usr.sbin/xntpd/ntptrace/Makefile b/usr.sbin/xntpd/ntptrace/Makefile
index 5d5f32766de0..e723d0a05c00 100644
--- a/usr.sbin/xntpd/ntptrace/Makefile
+++ b/usr.sbin/xntpd/ntptrace/Makefile
@@ -1,5 +1,5 @@
#
-# $Id: Makefile,v 1.2 1993/12/22 11:33:14 rgrimes Exp $
+# $Id: Makefile,v 1.3 1994/10/03 23:51:26 phk Exp $
#
CFLAGS+= -I${.CURDIR}/../include
diff --git a/usr.sbin/xntpd/parse/Makefile b/usr.sbin/xntpd/parse/Makefile
index 1a46fbe2bdb4..69983c7cfff0 100644
--- a/usr.sbin/xntpd/parse/Makefile
+++ b/usr.sbin/xntpd/parse/Makefile
@@ -1,5 +1,5 @@
#
-# $Id: Makefile,v 1.1 1993/12/21 19:42:18 wollman Exp $
+# $Id: Makefile,v 1.1 1993/12/21 20:04:14 wollman Exp $
#
PARSEFLAGS= -DCLOCK_SCHMID -DCLOCK_DCF7000 -DCLOCK_MEINBERG \
diff --git a/usr.sbin/xntpd/parse/clk_trimtaip.c b/usr.sbin/xntpd/parse/clk_trimtaip.c
index 87538f1eb8a1..4a88b61a0ad0 100644
--- a/usr.sbin/xntpd/parse/clk_trimtaip.c
+++ b/usr.sbin/xntpd/parse/clk_trimtaip.c
@@ -1,6 +1,6 @@
#if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) && defined(CLOCK_TRIMTAIP)
/*
- * $Header: /src/NTP/REPOSITORY/v3/parse/clk_trimble.c,v 3.9 1994/02/02 17:45:27 kardel Exp $
+ * $Header: /home/ncvs/src/usr.sbin/xntpd/parse/clk_trimtaip.c,v 1.1.1.1 1994/09/29 23:01:31 wollman Exp $
*
* Trimble SV6 clock support
*/
@@ -108,7 +108,10 @@ cvt_trimtaip(buffer, size, format, clock)
/*
* History:
*
- * $Log: clk_trimble.c,v $
+ * $Log: clk_trimtaip.c,v $
+ * Revision 1.1.1.1 1994/09/29 23:01:31 wollman
+ * xntp 3.4e from Dave Mills @ UDel
+ *
* Revision 3.9 1994/02/02 17:45:27 kardel
* rcs ids fixed
*
diff --git a/usr.sbin/xntpd/parse/clk_trimtsip.c b/usr.sbin/xntpd/parse/clk_trimtsip.c
index 422fac1412ec..bf64eadef3b4 100644
--- a/usr.sbin/xntpd/parse/clk_trimtsip.c
+++ b/usr.sbin/xntpd/parse/clk_trimtsip.c
@@ -1,6 +1,6 @@
#if defined(REFCLOCK) && (defined(PARSE) || defined(PARSEPPS)) && defined(CLOCK_TRIMTSIP)
/*
- * $Header: /home/ncvs/src/usr.sbin/xntpd/parse/clk_trimtsip.c,v 1.1.1.1 1994/09/29 23:01:31 wollman Exp $
+ * $Header: /home/ncvs/src/usr.sbin/xntpd/parse/clk_trimtsip.c,v 1.2 1995/05/30 03:54:13 rgrimes Exp $
*
* Trimble TSIP support - CURRENTLY VERY MUCH UNDER CONSTRUCTION
*/
@@ -468,6 +468,9 @@ getint(bp)
* History:
*
* $Log: clk_trimtsip.c,v $
+ * Revision 1.2 1995/05/30 03:54:13 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.1 1994/09/29 23:01:31 wollman
* xntp 3.4e from Dave Mills @ UDel
*
diff --git a/usr.sbin/xntpd/parse/util/Makefile b/usr.sbin/xntpd/parse/util/Makefile
index ad9c0eb45470..3c9f0dd2d438 100644
--- a/usr.sbin/xntpd/parse/util/Makefile
+++ b/usr.sbin/xntpd/parse/util/Makefile
@@ -1,5 +1,5 @@
#
-# $Id$
+# $Id: Makefile,v 1.2 1995/04/04 17:48:02 rgrimes Exp $
#
CFLAGS+= -I${.CURDIR}/../../include
diff --git a/usr.sbin/xntpd/parse/util/parsetest.c b/usr.sbin/xntpd/parse/util/parsetest.c
index 33f3d9ce1a6b..7624ca77bf70 100644
--- a/usr.sbin/xntpd/parse/util/parsetest.c
+++ b/usr.sbin/xntpd/parse/util/parsetest.c
@@ -11,6 +11,9 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
* $Log: parsetest.c,v $
+ * Revision 1.2 1995/05/30 03:54:22 rgrimes
+ * Remove trailing whitespace.
+ *
* Revision 1.1.1.4 1994/09/29 23:01:34 wollman
* xntp 3.4e from Dave Mills @ UDel
*
diff --git a/usr.sbin/xntpd/util/Makefile b/usr.sbin/xntpd/util/Makefile
index 02cb294eaee1..b528c7f72759 100644
--- a/usr.sbin/xntpd/util/Makefile
+++ b/usr.sbin/xntpd/util/Makefile
@@ -1,5 +1,5 @@
#
-# $Id: Makefile,v 1.2 1993/12/22 11:33:28 rgrimes Exp $
+# $Id: Makefile,v 1.3 1994/10/03 23:51:29 phk Exp $
#
CFLAGS+= -I${.CURDIR}/../include
diff --git a/usr.sbin/xntpd/xntpd/Makefile b/usr.sbin/xntpd/xntpd/Makefile
index 6ab7cd0774ba..83aef28e1d7e 100644
--- a/usr.sbin/xntpd/xntpd/Makefile
+++ b/usr.sbin/xntpd/xntpd/Makefile
@@ -1,5 +1,5 @@
#
-# $Id: Makefile,v 1.6 1994/09/30 00:34:17 wollman Exp $
+# $Id: Makefile,v 1.7 1994/10/03 23:51:32 phk Exp $
#
CFLAGS+= -I${.CURDIR}/../include
diff --git a/usr.sbin/xntpd/xntpdc/Makefile b/usr.sbin/xntpd/xntpdc/Makefile
index a06cf1a0f83e..8492c7711c53 100644
--- a/usr.sbin/xntpd/xntpdc/Makefile
+++ b/usr.sbin/xntpd/xntpdc/Makefile
@@ -1,5 +1,5 @@
#
-# $Id: Makefile,v 1.2 1993/12/22 11:34:00 rgrimes Exp $
+# $Id: Makefile,v 1.3 1994/10/03 23:51:34 phk Exp $
#
CFLAGS+= -I${.CURDIR}/../include
diff --git a/usr.sbin/ypbind/Makefile b/usr.sbin/ypbind/Makefile
index 2c9c1725d1c9..1eca9432aea3 100644
--- a/usr.sbin/ypbind/Makefile
+++ b/usr.sbin/ypbind/Makefile
@@ -1,5 +1,5 @@
# from: @(#)Makefile 5.8 (Berkeley) 7/28/90
-# $Id: Makefile,v 1.1 1994/08/08 01:03:57 wollman Exp $
+# $Id: Makefile,v 1.2 1995/04/09 21:58:59 wpaul Exp $
PROG= ypbind
MAN8= ypbind.8
diff --git a/usr.sbin/ypbind/ypbind.8 b/usr.sbin/ypbind/ypbind.8
index 4748a2131736..551fbfa5bdeb 100644
--- a/usr.sbin/ypbind/ypbind.8
+++ b/usr.sbin/ypbind/ypbind.8
@@ -29,7 +29,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $Id: ypbind.8,v 1.2 1995/04/26 19:03:15 wpaul Exp $
+.\" $Id: ypbind.8,v 1.2.4.1 1995/08/26 12:56:06 davidg Exp $
.\"
.Dd April 9, 1995
.Dt YPBIND 8
diff --git a/usr.sbin/ypbind/ypbind.c b/usr.sbin/ypbind/ypbind.c
index 04aa892ef5e1..a2d261737b3e 100644
--- a/usr.sbin/ypbind/ypbind.c
+++ b/usr.sbin/ypbind/ypbind.c
@@ -28,7 +28,7 @@
*/
#ifndef LINT
-static char rcsid[] = "$Id: ypbind.c,v 1.15 1995/05/30 03:55:13 rgrimes Exp $";
+static char rcsid[] = "$Id: ypbind.c,v 1.15.4.1 1995/08/26 12:56:07 davidg Exp $";
#endif
#include <sys/param.h>
diff --git a/usr.sbin/yppoll/Makefile b/usr.sbin/yppoll/Makefile
index 3108b83dde0a..e119d9fe4f85 100644
--- a/usr.sbin/yppoll/Makefile
+++ b/usr.sbin/yppoll/Makefile
@@ -1,5 +1,5 @@
# from: @(#)Makefile 5.8 (Berkeley) 7/28/90
-# $Id: Makefile,v 1.2 1994/02/17 07:06:17 rgrimes Exp $
+# $Id: Makefile,v 1.1 1994/08/08 01:10:25 wollman Exp $
PROG= yppoll
NOMAN=
diff --git a/usr.sbin/ypset/Makefile b/usr.sbin/ypset/Makefile
index 58bafea89495..ba77edef1c7e 100644
--- a/usr.sbin/ypset/Makefile
+++ b/usr.sbin/ypset/Makefile
@@ -1,5 +1,5 @@
# from: @(#)Makefile 5.8 (Berkeley) 7/28/90
-# $Id: Makefile,v 1.2 1994/02/17 07:06:19 rgrimes Exp $
+# $Id: Makefile,v 1.1 1994/08/08 01:10:27 wollman Exp $
PROG= ypset
NOMAN=
diff --git a/usr.sbin/zic/Makefile b/usr.sbin/zic/Makefile
index 963a0ee8b43e..116e9bc4dde4 100644
--- a/usr.sbin/zic/Makefile
+++ b/usr.sbin/zic/Makefile
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile,v 1.1 1994/09/13 03:36:08 wollman Exp $
SUBDIR= zic zdump
.include <bsd.subdir.mk>
diff --git a/usr.sbin/zic/Makefile.inc b/usr.sbin/zic/Makefile.inc
index c961f8568307..cde63901435a 100644
--- a/usr.sbin/zic/Makefile.inc
+++ b/usr.sbin/zic/Makefile.inc
@@ -1,3 +1,3 @@
-# $Id$
+# $Id: Makefile.inc,v 1.1 1994/09/13 03:36:09 wollman Exp $
.include "${.CURDIR}/../../Makefile.inc"
diff --git a/usr.sbin/zic/zdump/Makefile b/usr.sbin/zic/zdump/Makefile
index 46af3cacca21..8f83ca9f5fb5 100644
--- a/usr.sbin/zic/zdump/Makefile
+++ b/usr.sbin/zic/zdump/Makefile
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile,v 1.1 1994/09/13 03:36:15 wollman Exp $
.PATH: ${.CURDIR}/..
diff --git a/usr.sbin/zic/zic/Makefile b/usr.sbin/zic/zic/Makefile
index 5331112243e3..691b7b0374b6 100644
--- a/usr.sbin/zic/zic/Makefile
+++ b/usr.sbin/zic/zic/Makefile
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile,v 1.1 1994/09/13 03:36:16 wollman Exp $
.PATH: ${.CURDIR}/..