In metaconfig.git, the branch master has been updated <http://perl5.git.perl.org/metaconfig.git/commitdiff/c402af1253059015c7f79e8625b3367cddcda5cd?hp=7a27bf006cb24055261e07588aea6f8eb377640a>
- Log ----------------------------------------------------------------- commit c402af1253059015c7f79e8625b3367cddcda5cd Author: H.Merijn Brand - Tux <h.m.br...@xs4all.nl> Date: Wed Oct 1 08:08:08 2014 +0200 Also add all utilities for building from units to repo PLEASE do NOT modify these in the repo, as that will break MY builds. I only moved them here to have all readily available Note that some still need manual change if used locally ⢠mconfig ⢠metaconfig ⢠metagrep ⢠metalint ⢠metaxref ⢠mlint ⢠packinit ⢠patcil ⢠patpost ⢠patsend A bin/find_config_h_deps.pl A bin/jmake A bin/jmkmf A bin/kitpost A bin/kitsend A bin/makeSH A bin/makedist A bin/manicheck A bin/manifake A bin/manilist A bin/mconfig A bin/metaconfig M bin/metagrep A bin/metalint A bin/metaxref A bin/mlint A bin/packinit A bin/pat A bin/patbase A bin/patcil A bin/patclean A bin/patcol A bin/patdiff A bin/patftp A bin/patindex A bin/patlog A bin/patmake A bin/patname A bin/patnotify A bin/patpost A bin/patsend A bin/patsnap commit b794565aa24a9ff18e19cb1352d6f0715cd5d637 Author: H.Merijn Brand - Tux <h.m.br...@xs4all.nl> Date: Wed Oct 1 08:00:30 2014 +0200 Add the files from dist/meta to perl's repo In order to make the "shared" files from meta/dist readily available in the perl distribution sources, include them in git M .gitignore A dist/Glossary A dist/Index A dist/U/AAAAA.U A dist/U/Assert.U A dist/U/Begin.U A dist/U/Checkcc.U A dist/U/Chk_MANI.U A dist/U/Chk_whoami.U A dist/U/Compile.U A dist/U/Config_h.U A dist/U/Config_sh.U A dist/U/Configdir.U A dist/U/Cppsym.U A dist/U/Cross.U A dist/U/Csym.U A dist/U/End.U A dist/U/Extract.U A dist/U/Extractall.U A dist/U/Filexp.U A dist/U/Findhdr.U A dist/U/Finish.U A dist/U/Getfile.U A dist/U/Guess.U A dist/U/Head.U A dist/U/Inhdr.U A dist/U/Init.U A dist/U/Inlibc.U A dist/U/Instruct.U A dist/U/Loc.U A dist/U/Loc_sed.U A dist/U/Magic_h.U A dist/U/MailAuthor.U A dist/U/MailList.U A dist/U/Mkdirp.U A dist/U/Mksymlinks.U A dist/U/Myinit.U A dist/U/Myread.U A dist/U/Nothing.U A dist/U/Null.U A dist/U/Obsol_h.U A dist/U/Obsol_sh.U A dist/U/Oldconfig.U A dist/U/Oldsym.U A dist/U/Options.U A dist/U/Prefixit.U A dist/U/Prefixup.U A dist/U/Rcs.U A dist/U/Setvar.U A dist/U/Signal.U A dist/U/Tr.U A dist/U/Typedef.U A dist/U/Unix.U A dist/U/Warn.U A dist/U/Warn_v7EXT.U A dist/U/Warn_v7ND.U A dist/U/Whoa.U A dist/U/abortsig.U A dist/U/active.U A dist/U/afs.U A dist/U/alignbytes.U A dist/U/archlib.U A dist/U/archname.U A dist/U/baserev.U A dist/U/basicshell.U A dist/U/bin.U A dist/U/bitpbyte.U A dist/U/byteorder.U A dist/U/cc.U A dist/U/ccflags.U A dist/U/cf_email.U A dist/U/cf_name.U A dist/U/cf_who.U A dist/U/charorder.U A dist/U/charsize.U A dist/U/contains.U A dist/U/cpp_stuff.U A dist/U/cpp_trad.U A dist/U/cppfilecom.U A dist/U/cppstdin.U A dist/U/d_NOFILE.U A dist/U/d_NeWS.U A dist/U/d_PORTAR.U A dist/U/d_SHM_MAC.U A dist/U/d_access.U A dist/U/d_alarm.U A dist/U/d_attribut.U A dist/U/d_bcmp.U A dist/U/d_bcopy.U A dist/U/d_brokstat.U A dist/U/d_bsdjmp.U A dist/U/d_byacc.U A dist/U/d_bzero.U A dist/U/d_casti32.U A dist/U/d_castneg.U A dist/U/d_cbrt.U A dist/U/d_charsprf.U A dist/U/d_chown.U A dist/U/d_chroot.U A dist/U/d_chsize.U A dist/U/d_ckeypad.U A dist/U/d_closedir.U A dist/U/d_const.U A dist/U/d_crypt.U A dist/U/d_csh.U A dist/U/d_ctermid.U A dist/U/d_cuserid.U A dist/U/d_dbl_dig.U A dist/U/d_difftime.U A dist/U/d_dlerror.U A dist/U/d_dlopen.U A dist/U/d_dosuid.U A dist/U/d_drem.U A dist/U/d_dup2.U A dist/U/d_eofpipe.U A dist/U/d_euc2jis.U A dist/U/d_fchmod.U A dist/U/d_fchown.U A dist/U/d_fcntl.U A dist/U/d_fd_set.U A dist/U/d_ffs.U A dist/U/d_fgetpos.U A dist/U/d_flexfnam.U A dist/U/d_flock.U A dist/U/d_fmod.U A dist/U/d_fork.U A dist/U/d_fsetpos.U A dist/U/d_ftime.U A dist/U/d_ftrncate.U A dist/U/d_gconvert.U A dist/U/d_getgrps.U A dist/U/d_gethbynm.U A dist/U/d_gethent.U A dist/U/d_gethid.U A dist/U/d_gethname.U A dist/U/d_getlogin.U A dist/U/d_getopt.U A dist/U/d_getpagsz.U A dist/U/d_getpgid.U A dist/U/d_getpgrp.U A dist/U/d_getpgrp2.U A dist/U/d_getppid.U A dist/U/d_getprior.U A dist/U/d_getpwent.U A dist/U/d_getwd.U A dist/U/d_gnulibc.U A dist/U/d_group.U A dist/U/d_havetlib.U A dist/U/d_hidnet.U A dist/U/d_htonl.U A dist/U/d_inetaton.U A dist/U/d_inetd.U A dist/U/d_internet.U A dist/U/d_isascii.U A dist/U/d_itimer.U A dist/U/d_keepsig.U A dist/U/d_killpg.U A dist/U/d_link.U A dist/U/d_linuxstd.U A dist/U/d_locconv.U A dist/U/d_lockf.U A dist/U/d_lstat.U A dist/U/d_mblen.U A dist/U/d_mbstowcs.U A dist/U/d_mbtowc.U A dist/U/d_memalign.U A dist/U/d_memccpy.U A dist/U/d_memchr.U A dist/U/d_memcmp.U A dist/U/d_memcpy.U A dist/U/d_memmove.U A dist/U/d_memset.U A dist/U/d_mkdir.U A dist/U/d_mkfifo.U A dist/U/d_mktime.U A dist/U/d_mmap.U A dist/U/d_msem_lck.U A dist/U/d_msg.U A dist/U/d_msgctl.U A dist/U/d_msgget.U A dist/U/d_msgrcv.U A dist/U/d_msgsnd.U A dist/U/d_msync.U A dist/U/d_munmap.U A dist/U/d_newsadm.U A dist/U/d_nice.U A dist/U/d_nolnbuf.U A dist/U/d_normsig.U A dist/U/d_open3.U A dist/U/d_passwd.U A dist/U/d_pathconf.U A dist/U/d_pause.U A dist/U/d_perror.U A dist/U/d_pidcheck.U A dist/U/d_pipe.U A dist/U/d_poll.U A dist/U/d_popen.U A dist/U/d_portable.U A dist/U/d_pread.U A dist/U/d_preadv.U A dist/U/d_psignal.U A dist/U/d_pwrite.U A dist/U/d_pwritev.U A dist/U/d_raster.U A dist/U/d_rdchk.U A dist/U/d_readdir.U A dist/U/d_readlink.U A dist/U/d_regcmp.U A dist/U/d_rename.U A dist/U/d_rmdir.U A dist/U/d_rusage.U A dist/U/d_safebcpy.U A dist/U/d_safemcpy.U A dist/U/d_sanemcmp.U A dist/U/d_sbrk.U A dist/U/d_scandir.U A dist/U/d_scannl.U A dist/U/d_scorfl.U A dist/U/d_select.U A dist/U/d_sem.U A dist/U/d_semctl.U A dist/U/d_semget.U A dist/U/d_semop.U A dist/U/d_setegid.U A dist/U/d_seteuid.U A dist/U/d_setgrps.U A dist/U/d_setlnbuf.U A dist/U/d_setlocale.U A dist/U/d_setpgid.U A dist/U/d_setpgrp.U A dist/U/d_setpgrp2.U A dist/U/d_setprior.U A dist/U/d_setregid.U A dist/U/d_setreuid.U A dist/U/d_setrgid.U A dist/U/d_setruid.U A dist/U/d_setsid.U A dist/U/d_sgndchr.U A dist/U/d_shm.U A dist/U/d_shmat.U A dist/U/d_shmctl.U A dist/U/d_shmdt.U A dist/U/d_shmget.U A dist/U/d_sigaction.U A dist/U/d_sigblock.U A dist/U/d_sighold.U A dist/U/d_siglist.U A dist/U/d_sigsetjmp.U A dist/U/d_sigsetmk.U A dist/U/d_sigvec.U A dist/U/d_sjis2jis.U A dist/U/d_socket.U A dist/U/d_speedopt.U A dist/U/d_stat.U A dist/U/d_statblks.U A dist/U/d_stdstdio.U A dist/U/d_strccmp.U A dist/U/d_strchr.U A dist/U/d_strcoll.U A dist/U/d_strcspn.U A dist/U/d_strctcpy.U A dist/U/d_strdup.U A dist/U/d_strerror.U A dist/U/d_strftime.U A dist/U/d_strstr.U A dist/U/d_strtod.U A dist/U/d_strtok.U A dist/U/d_strtol.U A dist/U/d_strtoul.U A dist/U/d_strxfrm.U A dist/U/d_su_chown.U A dist/U/d_symlink.U A dist/U/d_syscall.U A dist/U/d_sysconf.U A dist/U/d_syslog.U A dist/U/d_system.U A dist/U/d_table.U A dist/U/d_tcgtpgrp.U A dist/U/d_tcstpgrp.U A dist/U/d_time.U A dist/U/d_times.U A dist/U/d_tminsys.U A dist/U/d_truncate.U A dist/U/d_tzmin.U A dist/U/d_tzname.U A dist/U/d_ulimit.U A dist/U/d_umask.U A dist/U/d_usendir.U A dist/U/d_usleep.U A dist/U/d_uwait.U A dist/U/d_vfork.U A dist/U/d_voidsig.U A dist/U/d_volatile.U A dist/U/d_vprintf.U A dist/U/d_wait3.U A dist/U/d_wait4.U A dist/U/d_waitpid.U A dist/U/d_wcstombs.U A dist/U/d_wctomb.U A dist/U/d_wifstat.U A dist/U/d_xdrs.U A dist/U/defeditor.U A dist/U/doublesize.U A dist/U/ebcdic.U A dist/U/errnolist.U A dist/U/etc.U A dist/U/filexp.U A dist/U/floatsize.U A dist/U/fpostype.U A dist/U/fpu.U A dist/U/gccvers.U A dist/U/gidtype.U A dist/U/groupstype.U A dist/U/h_fcntl.U A dist/U/h_sysfile.U A dist/U/i_arpainet.U A dist/U/i_db.U A dist/U/i_dbm.U A dist/U/i_dirent.U A dist/U/i_dld.U A dist/U/i_dlfcn.U A dist/U/i_fcntl.U A dist/U/i_float.U A dist/U/i_gdbm.U A dist/U/i_grp.U A dist/U/i_inttypes.U A dist/U/i_limits.U A dist/U/i_locale.U A dist/U/i_malloc.U A dist/U/i_math.U A dist/U/i_memory.U A dist/U/i_ndbm.U A dist/U/i_neterrno.U A dist/U/i_niin.U A dist/U/i_poll.U A dist/U/i_pwd.U A dist/U/i_regex.U A dist/U/i_sfio.U A dist/U/i_stddef.U A dist/U/i_stdlib.U A dist/U/i_string.U A dist/U/i_sysdir.U A dist/U/i_sysfile.U A dist/U/i_sysioctl.U A dist/U/i_sysmman.U A dist/U/i_sysndir.U A dist/U/i_sysparam.U A dist/U/i_syspoll.U A dist/U/i_sysresrc.U A dist/U/i_sysselct.U A dist/U/i_syssock.U A dist/U/i_sysstat.U A dist/U/i_systable.U A dist/U/i_systimeb.U A dist/U/i_systimes.U A dist/U/i_systwgcf.U A dist/U/i_systypes.U A dist/U/i_sysun.U A dist/U/i_syswait.U A dist/U/i_termio.U A dist/U/i_time.U A dist/U/i_unistd.U A dist/U/i_utime.U A dist/U/i_values.U A dist/U/i_varhdr.U A dist/U/i_vfork.U A dist/U/i_whoami.U A dist/U/ilp.U A dist/U/inc.U A dist/U/install.U A dist/U/intsize.U A dist/U/ipc.U A dist/U/issymlink.U A dist/U/kernel.U A dist/U/lex.U A dist/U/lib.U A dist/U/libc.U A dist/U/libdbm.U A dist/U/libflex.U A dist/U/libnlist.U A dist/U/libnm.U A dist/U/libpth.U A dist/U/libs.U A dist/U/libyacc.U A dist/U/lintlib.U A dist/U/lns.U A dist/U/locdist.U A dist/U/longsize.U A dist/U/lseektype.U A dist/U/maildir.U A dist/U/mailer.U A dist/U/mailfile.U A dist/U/make.U A dist/U/mallocsrc.U A dist/U/man1dir.U A dist/U/man3dir.U A dist/U/manfmt.U A dist/U/mansrc.U A dist/U/mboxchar.U A dist/U/mkdep.U A dist/U/models.U A dist/U/modetype.U A dist/U/myhostname.U A dist/U/n.U A dist/U/nametype.U A dist/U/nblock_io.U A dist/U/newslevel.U A dist/U/newslib.U A dist/U/newsspool.U A dist/U/nis.U A dist/U/nlist_pfx.U A dist/U/orderlib.U A dist/U/orgname.U A dist/U/packadmin.U A dist/U/package.U A dist/U/pager.U A dist/U/patchlevel.U A dist/U/perlpath.U A dist/U/pidtype.U A dist/U/pkgsrc.U A dist/U/prefix.U A dist/U/prefshell.U A dist/U/privlib.U A dist/U/prototype.U A dist/U/ptrsize.U A dist/U/randbits.U A dist/U/randfunc.U A dist/U/rcs_branch.U A dist/U/registers.U A dist/U/rootid.U A dist/U/sbrksmart.U A dist/U/sbrktype.U A dist/U/scriptdir.U A dist/U/selecttype.U A dist/U/sh.U A dist/U/shm_for.U A dist/U/sig_name.U A dist/U/sitearch.U A dist/U/sitelib.U A dist/U/sizetype.U A dist/U/so.U A dist/U/sockopt.U A dist/U/spitshell.U A dist/U/src.U A dist/U/ssizetype.U A dist/U/startperl.U A dist/U/startsh.U A dist/U/stdchar.U A dist/U/sunscanf.U A dist/U/sysman.U A dist/U/trnl.U A dist/U/uidtype.U A dist/U/usenm.U A dist/U/usesocks.U A dist/U/usrinc.U A dist/U/vaproto.U A dist/U/voidflags.U A dist/U/warnflags.U A dist/U/yacc.U A dist/bindex A dist/configure A dist/files/Jmake.rules A dist/files/Jmake.tmpl A dist/files/fixcpp A dist/lib/C/fake/dup2.C A dist/lib/C/fake/getopt.C A dist/lib/C/fake/rename.C A dist/lib/C/fake/scandir.C A dist/lib/C/fake/setsid.C A dist/lib/errnolist.SH A dist/lib/errnolist.a A dist/lib/errnolist.mk A dist/lib/makedepend.SH A dist/lib/makedir.SH A dist/makegloss ----------------------------------------------------------------------- Summary of changes: .gitignore | 1 - bin/find_config_h_deps.pl | 77 + bin/jmake | 510 +++ bin/jmkmf | 83 + bin/kitpost | 284 ++ bin/kitsend | 240 ++ bin/makeSH | 76 + bin/makedist | 601 +++ bin/manicheck | 59 + bin/manifake | 54 + bin/manilist | 507 +++ bin/mconfig | 1931 +++++++++ bin/metaconfig | 2359 +++++++++++ bin/metagrep | 22 +- bin/metalint | 2328 ++++++++++ bin/metaxref | 1231 ++++++ bin/mlint | 1964 +++++++++ bin/packinit | 498 +++ bin/pat | 269 ++ bin/patbase | 244 ++ bin/patcil | 727 ++++ bin/patclean | 333 ++ bin/patcol | 460 ++ bin/patdiff | 379 ++ bin/patftp | 198 + bin/patindex | 43 + bin/patlog | 436 ++ bin/patmake | 477 +++ bin/patname | 323 ++ bin/patnotify | 333 ++ bin/patpost | 269 ++ bin/patsend | 351 ++ bin/patsnap | 246 ++ dist/Glossary | 10091 ++++++++++++++++++++++++++++++++++++++++++++ dist/Index | 1583 +++++++ dist/U/AAAAA.U | 46 + dist/U/Assert.U | 26 + dist/U/Begin.U | 39 + dist/U/Checkcc.U | 135 + dist/U/Chk_MANI.U | 88 + dist/U/Chk_whoami.U | 25 + dist/U/Compile.U | 63 + dist/U/Config_h.U | 114 + dist/U/Config_sh.U | 110 + dist/U/Configdir.U | 28 + dist/U/Cppsym.U | 286 ++ dist/U/Cross.U | 349 ++ dist/U/Csym.U | 97 + dist/U/End.U | 27 + dist/U/Extract.U | 105 + dist/U/Extractall.U | 51 + dist/U/Filexp.U | 69 + dist/U/Findhdr.U | 126 + dist/U/Finish.U | 141 + dist/U/Getfile.U | 339 ++ dist/U/Guess.U | 228 + dist/U/Head.U | 282 ++ dist/U/Inhdr.U | 77 + dist/U/Init.U | 81 + dist/U/Inlibc.U | 64 + dist/U/Instruct.U | 116 + dist/U/Loc.U | 381 ++ dist/U/Loc_sed.U | 33 + dist/U/Magic_h.U | 43 + dist/U/MailAuthor.U | 192 + dist/U/MailList.U | 82 + dist/U/Mkdirp.U | 51 + dist/U/Mksymlinks.U | 90 + dist/U/Myinit.U | 26 + dist/U/Myread.U | 199 + dist/U/Nothing.U | 19 + dist/U/Null.U | 20 + dist/U/Obsol_h.U | 28 + dist/U/Obsol_sh.U | 27 + dist/U/Oldconfig.U | 687 +++ dist/U/Oldsym.U | 66 + dist/U/Options.U | 363 ++ dist/U/Prefixit.U | 68 + dist/U/Prefixup.U | 38 + dist/U/Rcs.U | 34 + dist/U/Setvar.U | 50 + dist/U/Signal.U | 271 ++ dist/U/Tr.U | 103 + dist/U/Typedef.U | 63 + dist/U/Unix.U | 64 + dist/U/Warn.U | 57 + dist/U/Warn_v7EXT.U | 34 + dist/U/Warn_v7ND.U | 33 + dist/U/Whoa.U | 51 + dist/U/abortsig.U | 79 + dist/U/active.U | 50 + dist/U/afs.U | 55 + dist/U/alignbytes.U | 141 + dist/U/archlib.U | 125 + dist/U/archname.U | 76 + dist/U/baserev.U | 22 + dist/U/basicshell.U | 47 + dist/U/bin.U | 88 + dist/U/bitpbyte.U | 74 + dist/U/byteorder.U | 99 + dist/U/cc.U | 58 + dist/U/ccflags.U | 420 ++ dist/U/cf_email.U | 69 + dist/U/cf_name.U | 72 + dist/U/cf_who.U | 62 + dist/U/charorder.U | 143 + dist/U/charsize.U | 64 + dist/U/contains.U | 43 + dist/U/cpp_stuff.U | 157 + dist/U/cpp_trad.U | 41 + dist/U/cppfilecom.U | 204 + dist/U/cppstdin.U | 249 ++ dist/U/d_NOFILE.U | 189 + dist/U/d_NeWS.U | 101 + dist/U/d_PORTAR.U | 79 + dist/U/d_SHM_MAC.U | 141 + dist/U/d_access.U | 74 + dist/U/d_alarm.U | 33 + dist/U/d_attribut.U | 64 + dist/U/d_bcmp.U | 44 + dist/U/d_bcopy.U | 44 + dist/U/d_brokstat.U | 75 + dist/U/d_bsdjmp.U | 86 + dist/U/d_byacc.U | 33 + dist/U/d_bzero.U | 44 + dist/U/d_casti32.U | 87 + dist/U/d_castneg.U | 143 + dist/U/d_cbrt.U | 32 + dist/U/d_charsprf.U | 52 + dist/U/d_chown.U | 33 + dist/U/d_chroot.U | 33 + dist/U/d_chsize.U | 32 + dist/U/d_ckeypad.U | 54 + dist/U/d_closedir.U | 107 + dist/U/d_const.U | 66 + dist/U/d_crypt.U | 76 + dist/U/d_csh.U | 62 + dist/U/d_ctermid.U | 31 + dist/U/d_cuserid.U | 34 + dist/U/d_dbl_dig.U | 61 + dist/U/d_difftime.U | 33 + dist/U/d_dlerror.U | 46 + dist/U/d_dlopen.U | 45 + dist/U/d_dosuid.U | 169 + dist/U/d_drem.U | 35 + dist/U/d_dup2.U | 31 + dist/U/d_eofpipe.U | 93 + dist/U/d_euc2jis.U | 32 + dist/U/d_fchmod.U | 32 + dist/U/d_fchown.U | 32 + dist/U/d_fcntl.U | 31 + dist/U/d_fd_set.U | 138 + dist/U/d_ffs.U | 33 + dist/U/d_fgetpos.U | 31 + dist/U/d_flexfnam.U | 77 + dist/U/d_flock.U | 31 + dist/U/d_fmod.U | 34 + dist/U/d_fork.U | 33 + dist/U/d_fsetpos.U | 31 + dist/U/d_ftime.U | 78 + dist/U/d_ftrncate.U | 31 + dist/U/d_gconvert.U | 147 + dist/U/d_getgrps.U | 33 + dist/U/d_gethbynm.U | 32 + dist/U/d_gethent.U | 31 + dist/U/d_gethid.U | 31 + dist/U/d_gethname.U | 287 ++ dist/U/d_getlogin.U | 34 + dist/U/d_getopt.U | 31 + dist/U/d_getpagsz.U | 104 + dist/U/d_getpgid.U | 34 + dist/U/d_getpgrp.U | 108 + dist/U/d_getpgrp2.U | 32 + dist/U/d_getppid.U | 34 + dist/U/d_getprior.U | 31 + dist/U/d_getpwent.U | 40 + dist/U/d_getwd.U | 41 + dist/U/d_gnulibc.U | 98 + dist/U/d_group.U | 23 + dist/U/d_havetlib.U | 125 + dist/U/d_hidnet.U | 68 + dist/U/d_htonl.U | 88 + dist/U/d_inetaton.U | 34 + dist/U/d_inetd.U | 70 + dist/U/d_internet.U | 52 + dist/U/d_isascii.U | 57 + dist/U/d_itimer.U | 32 + dist/U/d_keepsig.U | 81 + dist/U/d_killpg.U | 33 + dist/U/d_link.U | 31 + dist/U/d_linuxstd.U | 55 + dist/U/d_locconv.U | 33 + dist/U/d_lockf.U | 33 + dist/U/d_lstat.U | 31 + dist/U/d_mblen.U | 34 + dist/U/d_mbstowcs.U | 32 + dist/U/d_mbtowc.U | 32 + dist/U/d_memalign.U | 29 + dist/U/d_memccpy.U | 33 + dist/U/d_memchr.U | 32 + dist/U/d_memcmp.U | 35 + dist/U/d_memcpy.U | 35 + dist/U/d_memmove.U | 34 + dist/U/d_memset.U | 35 + dist/U/d_mkdir.U | 33 + dist/U/d_mkfifo.U | 36 + dist/U/d_mktime.U | 33 + dist/U/d_mmap.U | 31 + dist/U/d_msem_lck.U | 28 + dist/U/d_msg.U | 45 + dist/U/d_msgctl.U | 31 + dist/U/d_msgget.U | 31 + dist/U/d_msgrcv.U | 31 + dist/U/d_msgsnd.U | 31 + dist/U/d_msync.U | 31 + dist/U/d_munmap.U | 31 + dist/U/d_newsadm.U | 72 + dist/U/d_nice.U | 33 + dist/U/d_nolnbuf.U | 99 + dist/U/d_normsig.U | 57 + dist/U/d_open3.U | 90 + dist/U/d_passwd.U | 23 + dist/U/d_pathconf.U | 55 + dist/U/d_pause.U | 34 + dist/U/d_perror.U | 44 + dist/U/d_pidcheck.U | 75 + dist/U/d_pipe.U | 34 + dist/U/d_poll.U | 36 + dist/U/d_popen.U | 31 + dist/U/d_portable.U | 71 + dist/U/d_pread.U | 29 + dist/U/d_preadv.U | 30 + dist/U/d_psignal.U | 31 + dist/U/d_pwrite.U | 29 + dist/U/d_pwritev.U | 30 + dist/U/d_raster.U | 57 + dist/U/d_rdchk.U | 33 + dist/U/d_readdir.U | 79 + dist/U/d_readlink.U | 34 + dist/U/d_regcmp.U | 80 + dist/U/d_rename.U | 33 + dist/U/d_rmdir.U | 32 + dist/U/d_rusage.U | 36 + dist/U/d_safebcpy.U | 124 + dist/U/d_safemcpy.U | 127 + dist/U/d_sanemcmp.U | 88 + dist/U/d_sbrk.U | 31 + dist/U/d_scandir.U | 31 + dist/U/d_scannl.U | 74 + dist/U/d_scorfl.U | 58 + dist/U/d_select.U | 33 + dist/U/d_sem.U | 45 + dist/U/d_semctl.U | 31 + dist/U/d_semget.U | 31 + dist/U/d_semop.U | 31 + dist/U/d_setegid.U | 32 + dist/U/d_seteuid.U | 32 + dist/U/d_setgrps.U | 33 + dist/U/d_setlnbuf.U | 36 + dist/U/d_setlocale.U | 33 + dist/U/d_setpgid.U | 37 + dist/U/d_setpgrp.U | 116 + dist/U/d_setpgrp2.U | 32 + dist/U/d_setprior.U | 31 + dist/U/d_setregid.U | 46 + dist/U/d_setreuid.U | 46 + dist/U/d_setrgid.U | 32 + dist/U/d_setruid.U | 32 + dist/U/d_setsid.U | 34 + dist/U/d_sgndchr.U | 59 + dist/U/d_shm.U | 45 + dist/U/d_shmat.U | 93 + dist/U/d_shmctl.U | 31 + dist/U/d_shmdt.U | 31 + dist/U/d_shmget.U | 31 + dist/U/d_sigaction.U | 61 + dist/U/d_sigblock.U | 31 + dist/U/d_sighold.U | 31 + dist/U/d_siglist.U | 39 + dist/U/d_sigsetjmp.U | 105 + dist/U/d_sigsetmk.U | 41 + dist/U/d_sigvec.U | 79 + dist/U/d_sjis2jis.U | 32 + dist/U/d_socket.U | 123 + dist/U/d_speedopt.U | 62 + dist/U/d_stat.U | 31 + dist/U/d_statblks.U | 46 + dist/U/d_stdstdio.U | 325 ++ dist/U/d_strccmp.U | 38 + dist/U/d_strchr.U | 95 + dist/U/d_strcoll.U | 33 + dist/U/d_strcspn.U | 32 + dist/U/d_strctcpy.U | 53 + dist/U/d_strdup.U | 32 + dist/U/d_strerror.U | 117 + dist/U/d_strftime.U | 31 + dist/U/d_strstr.U | 31 + dist/U/d_strtod.U | 34 + dist/U/d_strtok.U | 35 + dist/U/d_strtol.U | 32 + dist/U/d_strtoul.U | 34 + dist/U/d_strxfrm.U | 33 + dist/U/d_su_chown.U | 41 + dist/U/d_symlink.U | 32 + dist/U/d_syscall.U | 31 + dist/U/d_sysconf.U | 34 + dist/U/d_syslog.U | 44 + dist/U/d_system.U | 31 + dist/U/d_table.U | 34 + dist/U/d_tcgtpgrp.U | 34 + dist/U/d_tcstpgrp.U | 34 + dist/U/d_time.U | 66 + dist/U/d_times.U | 74 + dist/U/d_tminsys.U | 41 + dist/U/d_truncate.U | 31 + dist/U/d_tzmin.U | 53 + dist/U/d_tzname.U | 42 + dist/U/d_ulimit.U | 31 + dist/U/d_umask.U | 34 + dist/U/d_usendir.U | 79 + dist/U/d_usleep.U | 31 + dist/U/d_uwait.U | 123 + dist/U/d_vfork.U | 91 + dist/U/d_voidsig.U | 89 + dist/U/d_volatile.U | 74 + dist/U/d_vprintf.U | 81 + dist/U/d_wait3.U | 31 + dist/U/d_wait4.U | 30 + dist/U/d_waitpid.U | 31 + dist/U/d_wcstombs.U | 32 + dist/U/d_wctomb.U | 34 + dist/U/d_wifstat.U | 87 + dist/U/d_xdrs.U | 42 + dist/U/defeditor.U | 45 + dist/U/doublesize.U | 58 + dist/U/ebcdic.U | 58 + dist/U/errnolist.U | 106 + dist/U/etc.U | 42 + dist/U/filexp.U | 30 + dist/U/floatsize.U | 58 + dist/U/fpostype.U | 39 + dist/U/fpu.U | 73 + dist/U/gccvers.U | 117 + dist/U/gidtype.U | 61 + dist/U/groupstype.U | 63 + dist/U/h_fcntl.U | 23 + dist/U/h_sysfile.U | 23 + dist/U/i_arpainet.U | 31 + dist/U/i_db.U | 146 + dist/U/i_dbm.U | 79 + dist/U/i_dirent.U | 146 + dist/U/i_dld.U | 34 + dist/U/i_dlfcn.U | 34 + dist/U/i_fcntl.U | 61 + dist/U/i_float.U | 35 + dist/U/i_gdbm.U | 53 + dist/U/i_grp.U | 31 + dist/U/i_inttypes.U | 35 + dist/U/i_limits.U | 33 + dist/U/i_locale.U | 32 + dist/U/i_malloc.U | 31 + dist/U/i_math.U | 34 + dist/U/i_memory.U | 65 + dist/U/i_ndbm.U | 53 + dist/U/i_neterrno.U | 65 + dist/U/i_niin.U | 45 + dist/U/i_poll.U | 28 + dist/U/i_pwd.U | 162 + dist/U/i_regex.U | 35 + dist/U/i_sfio.U | 32 + dist/U/i_stddef.U | 32 + dist/U/i_stdlib.U | 32 + dist/U/i_string.U | 62 + dist/U/i_sysdir.U | 34 + dist/U/i_sysfile.U | 60 + dist/U/i_sysioctl.U | 202 + dist/U/i_sysmman.U | 34 + dist/U/i_sysndir.U | 31 + dist/U/i_sysparam.U | 31 + dist/U/i_syspoll.U | 28 + dist/U/i_sysresrc.U | 34 + dist/U/i_sysselct.U | 39 + dist/U/i_syssock.U | 32 + dist/U/i_sysstat.U | 32 + dist/U/i_systable.U | 32 + dist/U/i_systimeb.U | 55 + dist/U/i_systimes.U | 31 + dist/U/i_systwgcf.U | 31 + dist/U/i_systypes.U | 34 + dist/U/i_sysun.U | 35 + dist/U/i_syswait.U | 34 + dist/U/i_termio.U | 123 + dist/U/i_time.U | 171 + dist/U/i_unistd.U | 31 + dist/U/i_utime.U | 31 + dist/U/i_values.U | 35 + dist/U/i_varhdr.U | 164 + dist/U/i_vfork.U | 40 + dist/U/i_whoami.U | 35 + dist/U/ilp.U | 116 + dist/U/inc.U | 39 + dist/U/install.U | 194 + dist/U/intsize.U | 89 + dist/U/ipc.U | 171 + dist/U/issymlink.U | 85 + dist/U/kernel.U | 63 + dist/U/lex.U | 67 + dist/U/lib.U | 54 + dist/U/libc.U | 405 ++ dist/U/libdbm.U | 47 + dist/U/libflex.U | 65 + dist/U/libnlist.U | 49 + dist/U/libnm.U | 45 + dist/U/libpth.U | 132 + dist/U/libs.U | 242 ++ dist/U/libyacc.U | 64 + dist/U/lintlib.U | 38 + dist/U/lns.U | 41 + dist/U/locdist.U | 174 + dist/U/longsize.U | 24 + dist/U/lseektype.U | 40 + dist/U/maildir.U | 41 + dist/U/mailer.U | 61 + dist/U/mailfile.U | 56 + dist/U/make.U | 60 + dist/U/mallocsrc.U | 171 + dist/U/man1dir.U | 147 + dist/U/man3dir.U | 158 + dist/U/manfmt.U | 118 + dist/U/mansrc.U | 150 + dist/U/mboxchar.U | 70 + dist/U/mkdep.U | 268 ++ dist/U/models.U | 214 + dist/U/modetype.U | 40 + dist/U/myhostname.U | 284 ++ dist/U/n.U | 45 + dist/U/nametype.U | 134 + dist/U/nblock_io.U | 254 ++ dist/U/newslevel.U | 53 + dist/U/newslib.U | 61 + dist/U/newsspool.U | 52 + dist/U/nis.U | 168 + dist/U/nlist_pfx.U | 135 + dist/U/orderlib.U | 95 + dist/U/orgname.U | 65 + dist/U/packadmin.U | 33 + dist/U/package.U | 56 + dist/U/pager.U | 59 + dist/U/patchlevel.U | 36 + dist/U/perlpath.U | 56 + dist/U/pidtype.U | 39 + dist/U/pkgsrc.U | 26 + dist/U/prefix.U | 80 + dist/U/prefshell.U | 60 + dist/U/privlib.U | 96 + dist/U/prototype.U | 118 + dist/U/ptrsize.U | 58 + dist/U/randbits.U | 83 + dist/U/randfunc.U | 164 + dist/U/rcs_branch.U | 43 + dist/U/registers.U | 103 + dist/U/rootid.U | 35 + dist/U/sbrksmart.U | 85 + dist/U/sbrktype.U | 44 + dist/U/scriptdir.U | 110 + dist/U/selecttype.U | 109 + dist/U/sh.U | 92 + dist/U/shm_for.U | 118 + dist/U/sig_name.U | 157 + dist/U/sitearch.U | 94 + dist/U/sitelib.U | 97 + dist/U/sizetype.U | 40 + dist/U/so.U | 50 + dist/U/sockopt.U | 88 + dist/U/spitshell.U | 107 + dist/U/src.U | 92 + dist/U/ssizetype.U | 91 + dist/U/startperl.U | 95 + dist/U/startsh.U | 50 + dist/U/stdchar.U | 40 + dist/U/sunscanf.U | 55 + dist/U/sysman.U | 50 + dist/U/trnl.U | 59 + dist/U/uidtype.U | 57 + dist/U/usenm.U | 144 + dist/U/usesocks.U | 46 + dist/U/usrinc.U | 93 + dist/U/vaproto.U | 65 + dist/U/voidflags.U | 168 + dist/U/warnflags.U | 55 + dist/U/yacc.U | 90 + dist/bindex | 162 + dist/configure | 144 + dist/files/Jmake.rules | 1825 ++++++++ dist/files/Jmake.tmpl | 253 ++ dist/files/fixcpp | 160 + dist/lib/C/fake/dup2.C | 78 + dist/lib/C/fake/getopt.C | 133 + dist/lib/C/fake/rename.C | 45 + dist/lib/C/fake/scandir.C | 131 + dist/lib/C/fake/setsid.C | 64 + dist/lib/errnolist.SH | 44 + dist/lib/errnolist.a | 52 + dist/lib/errnolist.mk | 42 + dist/lib/makedepend.SH | 169 + dist/lib/makedir.SH | 86 + dist/makegloss | 194 + 507 files changed, 66031 insertions(+), 6 deletions(-) create mode 100755 bin/find_config_h_deps.pl create mode 100755 bin/jmake create mode 100755 bin/jmkmf create mode 100755 bin/kitpost create mode 100755 bin/kitsend create mode 100755 bin/makeSH create mode 100755 bin/makedist create mode 100755 bin/manicheck create mode 100755 bin/manifake create mode 100755 bin/manilist create mode 100755 bin/mconfig create mode 100755 bin/metaconfig create mode 100755 bin/metalint create mode 100755 bin/metaxref create mode 100755 bin/mlint create mode 100755 bin/packinit create mode 100755 bin/pat create mode 100755 bin/patbase create mode 100755 bin/patcil create mode 100755 bin/patclean create mode 100755 bin/patcol create mode 100755 bin/patdiff create mode 100755 bin/patftp create mode 100755 bin/patindex create mode 100755 bin/patlog create mode 100755 bin/patmake create mode 100755 bin/patname create mode 100755 bin/patnotify create mode 100755 bin/patpost create mode 100755 bin/patsend create mode 100755 bin/patsnap create mode 100644 dist/Glossary create mode 100644 dist/Index create mode 100644 dist/U/AAAAA.U create mode 100644 dist/U/Assert.U create mode 100644 dist/U/Begin.U create mode 100644 dist/U/Checkcc.U create mode 100644 dist/U/Chk_MANI.U create mode 100644 dist/U/Chk_whoami.U create mode 100644 dist/U/Compile.U create mode 100644 dist/U/Config_h.U create mode 100644 dist/U/Config_sh.U create mode 100644 dist/U/Configdir.U create mode 100644 dist/U/Cppsym.U create mode 100644 dist/U/Cross.U create mode 100644 dist/U/Csym.U create mode 100644 dist/U/End.U create mode 100644 dist/U/Extract.U create mode 100644 dist/U/Extractall.U create mode 100644 dist/U/Filexp.U create mode 100644 dist/U/Findhdr.U create mode 100644 dist/U/Finish.U create mode 100644 dist/U/Getfile.U create mode 100644 dist/U/Guess.U create mode 100644 dist/U/Head.U create mode 100644 dist/U/Inhdr.U create mode 100644 dist/U/Init.U create mode 100644 dist/U/Inlibc.U create mode 100644 dist/U/Instruct.U create mode 100644 dist/U/Loc.U create mode 100644 dist/U/Loc_sed.U create mode 100644 dist/U/Magic_h.U create mode 100644 dist/U/MailAuthor.U create mode 100644 dist/U/MailList.U create mode 100644 dist/U/Mkdirp.U create mode 100644 dist/U/Mksymlinks.U create mode 100644 dist/U/Myinit.U create mode 100644 dist/U/Myread.U create mode 100644 dist/U/Nothing.U create mode 100644 dist/U/Null.U create mode 100644 dist/U/Obsol_h.U create mode 100644 dist/U/Obsol_sh.U create mode 100644 dist/U/Oldconfig.U create mode 100644 dist/U/Oldsym.U create mode 100644 dist/U/Options.U create mode 100644 dist/U/Prefixit.U create mode 100644 dist/U/Prefixup.U create mode 100644 dist/U/Rcs.U create mode 100644 dist/U/Setvar.U create mode 100644 dist/U/Signal.U create mode 100644 dist/U/Tr.U create mode 100644 dist/U/Typedef.U create mode 100644 dist/U/Unix.U create mode 100644 dist/U/Warn.U create mode 100644 dist/U/Warn_v7EXT.U create mode 100644 dist/U/Warn_v7ND.U create mode 100644 dist/U/Whoa.U create mode 100644 dist/U/abortsig.U create mode 100644 dist/U/active.U create mode 100644 dist/U/afs.U create mode 100644 dist/U/alignbytes.U create mode 100644 dist/U/archlib.U create mode 100644 dist/U/archname.U create mode 100644 dist/U/baserev.U create mode 100644 dist/U/basicshell.U create mode 100644 dist/U/bin.U create mode 100644 dist/U/bitpbyte.U create mode 100644 dist/U/byteorder.U create mode 100644 dist/U/cc.U create mode 100644 dist/U/ccflags.U create mode 100644 dist/U/cf_email.U create mode 100644 dist/U/cf_name.U create mode 100644 dist/U/cf_who.U create mode 100644 dist/U/charorder.U create mode 100644 dist/U/charsize.U create mode 100644 dist/U/contains.U create mode 100644 dist/U/cpp_stuff.U create mode 100644 dist/U/cpp_trad.U create mode 100644 dist/U/cppfilecom.U create mode 100644 dist/U/cppstdin.U create mode 100644 dist/U/d_NOFILE.U create mode 100644 dist/U/d_NeWS.U create mode 100644 dist/U/d_PORTAR.U create mode 100644 dist/U/d_SHM_MAC.U create mode 100644 dist/U/d_access.U create mode 100644 dist/U/d_alarm.U create mode 100644 dist/U/d_attribut.U create mode 100644 dist/U/d_bcmp.U create mode 100644 dist/U/d_bcopy.U create mode 100644 dist/U/d_brokstat.U create mode 100644 dist/U/d_bsdjmp.U create mode 100644 dist/U/d_byacc.U create mode 100644 dist/U/d_bzero.U create mode 100644 dist/U/d_casti32.U create mode 100644 dist/U/d_castneg.U create mode 100644 dist/U/d_cbrt.U create mode 100644 dist/U/d_charsprf.U create mode 100644 dist/U/d_chown.U create mode 100644 dist/U/d_chroot.U create mode 100644 dist/U/d_chsize.U create mode 100644 dist/U/d_ckeypad.U create mode 100644 dist/U/d_closedir.U create mode 100644 dist/U/d_const.U create mode 100644 dist/U/d_crypt.U create mode 100644 dist/U/d_csh.U create mode 100644 dist/U/d_ctermid.U create mode 100644 dist/U/d_cuserid.U create mode 100644 dist/U/d_dbl_dig.U create mode 100644 dist/U/d_difftime.U create mode 100644 dist/U/d_dlerror.U create mode 100644 dist/U/d_dlopen.U create mode 100644 dist/U/d_dosuid.U create mode 100644 dist/U/d_drem.U create mode 100644 dist/U/d_dup2.U create mode 100644 dist/U/d_eofpipe.U create mode 100644 dist/U/d_euc2jis.U create mode 100644 dist/U/d_fchmod.U create mode 100644 dist/U/d_fchown.U create mode 100644 dist/U/d_fcntl.U create mode 100644 dist/U/d_fd_set.U create mode 100644 dist/U/d_ffs.U create mode 100644 dist/U/d_fgetpos.U create mode 100644 dist/U/d_flexfnam.U create mode 100644 dist/U/d_flock.U create mode 100644 dist/U/d_fmod.U create mode 100644 dist/U/d_fork.U create mode 100644 dist/U/d_fsetpos.U create mode 100644 dist/U/d_ftime.U create mode 100644 dist/U/d_ftrncate.U create mode 100644 dist/U/d_gconvert.U create mode 100644 dist/U/d_getgrps.U create mode 100644 dist/U/d_gethbynm.U create mode 100644 dist/U/d_gethent.U create mode 100644 dist/U/d_gethid.U create mode 100644 dist/U/d_gethname.U create mode 100644 dist/U/d_getlogin.U create mode 100644 dist/U/d_getopt.U create mode 100644 dist/U/d_getpagsz.U create mode 100644 dist/U/d_getpgid.U create mode 100644 dist/U/d_getpgrp.U create mode 100644 dist/U/d_getpgrp2.U create mode 100644 dist/U/d_getppid.U create mode 100644 dist/U/d_getprior.U create mode 100644 dist/U/d_getpwent.U create mode 100644 dist/U/d_getwd.U create mode 100644 dist/U/d_gnulibc.U create mode 100644 dist/U/d_group.U create mode 100644 dist/U/d_havetlib.U create mode 100644 dist/U/d_hidnet.U create mode 100644 dist/U/d_htonl.U create mode 100644 dist/U/d_inetaton.U create mode 100644 dist/U/d_inetd.U create mode 100644 dist/U/d_internet.U create mode 100644 dist/U/d_isascii.U create mode 100644 dist/U/d_itimer.U create mode 100644 dist/U/d_keepsig.U create mode 100644 dist/U/d_killpg.U create mode 100644 dist/U/d_link.U create mode 100644 dist/U/d_linuxstd.U create mode 100644 dist/U/d_locconv.U create mode 100644 dist/U/d_lockf.U create mode 100644 dist/U/d_lstat.U create mode 100644 dist/U/d_mblen.U create mode 100644 dist/U/d_mbstowcs.U create mode 100644 dist/U/d_mbtowc.U create mode 100644 dist/U/d_memalign.U create mode 100644 dist/U/d_memccpy.U create mode 100644 dist/U/d_memchr.U create mode 100644 dist/U/d_memcmp.U create mode 100644 dist/U/d_memcpy.U create mode 100644 dist/U/d_memmove.U create mode 100644 dist/U/d_memset.U create mode 100644 dist/U/d_mkdir.U create mode 100644 dist/U/d_mkfifo.U create mode 100644 dist/U/d_mktime.U create mode 100644 dist/U/d_mmap.U create mode 100644 dist/U/d_msem_lck.U create mode 100644 dist/U/d_msg.U create mode 100644 dist/U/d_msgctl.U create mode 100644 dist/U/d_msgget.U create mode 100644 dist/U/d_msgrcv.U create mode 100644 dist/U/d_msgsnd.U create mode 100644 dist/U/d_msync.U create mode 100644 dist/U/d_munmap.U create mode 100644 dist/U/d_newsadm.U create mode 100644 dist/U/d_nice.U create mode 100644 dist/U/d_nolnbuf.U create mode 100644 dist/U/d_normsig.U create mode 100644 dist/U/d_open3.U create mode 100644 dist/U/d_passwd.U create mode 100644 dist/U/d_pathconf.U create mode 100644 dist/U/d_pause.U create mode 100644 dist/U/d_perror.U create mode 100644 dist/U/d_pidcheck.U create mode 100644 dist/U/d_pipe.U create mode 100644 dist/U/d_poll.U create mode 100644 dist/U/d_popen.U create mode 100644 dist/U/d_portable.U create mode 100644 dist/U/d_pread.U create mode 100644 dist/U/d_preadv.U create mode 100644 dist/U/d_psignal.U create mode 100644 dist/U/d_pwrite.U create mode 100644 dist/U/d_pwritev.U create mode 100644 dist/U/d_raster.U create mode 100644 dist/U/d_rdchk.U create mode 100644 dist/U/d_readdir.U create mode 100644 dist/U/d_readlink.U create mode 100644 dist/U/d_regcmp.U create mode 100644 dist/U/d_rename.U create mode 100644 dist/U/d_rmdir.U create mode 100644 dist/U/d_rusage.U create mode 100644 dist/U/d_safebcpy.U create mode 100644 dist/U/d_safemcpy.U create mode 100644 dist/U/d_sanemcmp.U create mode 100644 dist/U/d_sbrk.U create mode 100644 dist/U/d_scandir.U create mode 100644 dist/U/d_scannl.U create mode 100644 dist/U/d_scorfl.U create mode 100644 dist/U/d_select.U create mode 100644 dist/U/d_sem.U create mode 100644 dist/U/d_semctl.U create mode 100644 dist/U/d_semget.U create mode 100644 dist/U/d_semop.U create mode 100644 dist/U/d_setegid.U create mode 100644 dist/U/d_seteuid.U create mode 100644 dist/U/d_setgrps.U create mode 100644 dist/U/d_setlnbuf.U create mode 100644 dist/U/d_setlocale.U create mode 100644 dist/U/d_setpgid.U create mode 100644 dist/U/d_setpgrp.U create mode 100644 dist/U/d_setpgrp2.U create mode 100644 dist/U/d_setprior.U create mode 100644 dist/U/d_setregid.U create mode 100644 dist/U/d_setreuid.U create mode 100644 dist/U/d_setrgid.U create mode 100644 dist/U/d_setruid.U create mode 100644 dist/U/d_setsid.U create mode 100644 dist/U/d_sgndchr.U create mode 100644 dist/U/d_shm.U create mode 100644 dist/U/d_shmat.U create mode 100644 dist/U/d_shmctl.U create mode 100644 dist/U/d_shmdt.U create mode 100644 dist/U/d_shmget.U create mode 100644 dist/U/d_sigaction.U create mode 100644 dist/U/d_sigblock.U create mode 100644 dist/U/d_sighold.U create mode 100644 dist/U/d_siglist.U create mode 100644 dist/U/d_sigsetjmp.U create mode 100644 dist/U/d_sigsetmk.U create mode 100644 dist/U/d_sigvec.U create mode 100644 dist/U/d_sjis2jis.U create mode 100644 dist/U/d_socket.U create mode 100644 dist/U/d_speedopt.U create mode 100644 dist/U/d_stat.U create mode 100644 dist/U/d_statblks.U create mode 100644 dist/U/d_stdstdio.U create mode 100644 dist/U/d_strccmp.U create mode 100644 dist/U/d_strchr.U create mode 100644 dist/U/d_strcoll.U create mode 100644 dist/U/d_strcspn.U create mode 100644 dist/U/d_strctcpy.U create mode 100644 dist/U/d_strdup.U create mode 100644 dist/U/d_strerror.U create mode 100644 dist/U/d_strftime.U create mode 100644 dist/U/d_strstr.U create mode 100644 dist/U/d_strtod.U create mode 100644 dist/U/d_strtok.U create mode 100644 dist/U/d_strtol.U create mode 100644 dist/U/d_strtoul.U create mode 100644 dist/U/d_strxfrm.U create mode 100644 dist/U/d_su_chown.U create mode 100644 dist/U/d_symlink.U create mode 100644 dist/U/d_syscall.U create mode 100644 dist/U/d_sysconf.U create mode 100644 dist/U/d_syslog.U create mode 100644 dist/U/d_system.U create mode 100644 dist/U/d_table.U create mode 100644 dist/U/d_tcgtpgrp.U create mode 100644 dist/U/d_tcstpgrp.U create mode 100644 dist/U/d_time.U create mode 100644 dist/U/d_times.U create mode 100644 dist/U/d_tminsys.U create mode 100644 dist/U/d_truncate.U create mode 100644 dist/U/d_tzmin.U create mode 100644 dist/U/d_tzname.U create mode 100644 dist/U/d_ulimit.U create mode 100644 dist/U/d_umask.U create mode 100644 dist/U/d_usendir.U create mode 100644 dist/U/d_usleep.U create mode 100644 dist/U/d_uwait.U create mode 100644 dist/U/d_vfork.U create mode 100644 dist/U/d_voidsig.U create mode 100644 dist/U/d_volatile.U create mode 100644 dist/U/d_vprintf.U create mode 100644 dist/U/d_wait3.U create mode 100644 dist/U/d_wait4.U create mode 100644 dist/U/d_waitpid.U create mode 100644 dist/U/d_wcstombs.U create mode 100644 dist/U/d_wctomb.U create mode 100644 dist/U/d_wifstat.U create mode 100644 dist/U/d_xdrs.U create mode 100644 dist/U/defeditor.U create mode 100644 dist/U/doublesize.U create mode 100644 dist/U/ebcdic.U create mode 100644 dist/U/errnolist.U create mode 100644 dist/U/etc.U create mode 100644 dist/U/filexp.U create mode 100644 dist/U/floatsize.U create mode 100644 dist/U/fpostype.U create mode 100644 dist/U/fpu.U create mode 100644 dist/U/gccvers.U create mode 100644 dist/U/gidtype.U create mode 100644 dist/U/groupstype.U create mode 100644 dist/U/h_fcntl.U create mode 100644 dist/U/h_sysfile.U create mode 100644 dist/U/i_arpainet.U create mode 100644 dist/U/i_db.U create mode 100644 dist/U/i_dbm.U create mode 100644 dist/U/i_dirent.U create mode 100644 dist/U/i_dld.U create mode 100644 dist/U/i_dlfcn.U create mode 100644 dist/U/i_fcntl.U create mode 100644 dist/U/i_float.U create mode 100644 dist/U/i_gdbm.U create mode 100644 dist/U/i_grp.U create mode 100644 dist/U/i_inttypes.U create mode 100644 dist/U/i_limits.U create mode 100644 dist/U/i_locale.U create mode 100644 dist/U/i_malloc.U create mode 100644 dist/U/i_math.U create mode 100644 dist/U/i_memory.U create mode 100644 dist/U/i_ndbm.U create mode 100644 dist/U/i_neterrno.U create mode 100644 dist/U/i_niin.U create mode 100644 dist/U/i_poll.U create mode 100644 dist/U/i_pwd.U create mode 100644 dist/U/i_regex.U create mode 100644 dist/U/i_sfio.U create mode 100644 dist/U/i_stddef.U create mode 100644 dist/U/i_stdlib.U create mode 100644 dist/U/i_string.U create mode 100644 dist/U/i_sysdir.U create mode 100644 dist/U/i_sysfile.U create mode 100644 dist/U/i_sysioctl.U create mode 100644 dist/U/i_sysmman.U create mode 100644 dist/U/i_sysndir.U create mode 100644 dist/U/i_sysparam.U create mode 100644 dist/U/i_syspoll.U create mode 100644 dist/U/i_sysresrc.U create mode 100644 dist/U/i_sysselct.U create mode 100644 dist/U/i_syssock.U create mode 100644 dist/U/i_sysstat.U create mode 100644 dist/U/i_systable.U create mode 100644 dist/U/i_systimeb.U create mode 100644 dist/U/i_systimes.U create mode 100644 dist/U/i_systwgcf.U create mode 100644 dist/U/i_systypes.U create mode 100644 dist/U/i_sysun.U create mode 100644 dist/U/i_syswait.U create mode 100644 dist/U/i_termio.U create mode 100644 dist/U/i_time.U create mode 100644 dist/U/i_unistd.U create mode 100644 dist/U/i_utime.U create mode 100644 dist/U/i_values.U create mode 100644 dist/U/i_varhdr.U create mode 100644 dist/U/i_vfork.U create mode 100644 dist/U/i_whoami.U create mode 100644 dist/U/ilp.U create mode 100644 dist/U/inc.U create mode 100644 dist/U/install.U create mode 100644 dist/U/intsize.U create mode 100644 dist/U/ipc.U create mode 100644 dist/U/issymlink.U create mode 100644 dist/U/kernel.U create mode 100644 dist/U/lex.U create mode 100644 dist/U/lib.U create mode 100644 dist/U/libc.U create mode 100644 dist/U/libdbm.U create mode 100644 dist/U/libflex.U create mode 100644 dist/U/libnlist.U create mode 100644 dist/U/libnm.U create mode 100644 dist/U/libpth.U create mode 100644 dist/U/libs.U create mode 100644 dist/U/libyacc.U create mode 100644 dist/U/lintlib.U create mode 100644 dist/U/lns.U create mode 100644 dist/U/locdist.U create mode 100644 dist/U/longsize.U create mode 100644 dist/U/lseektype.U create mode 100644 dist/U/maildir.U create mode 100644 dist/U/mailer.U create mode 100644 dist/U/mailfile.U create mode 100644 dist/U/make.U create mode 100644 dist/U/mallocsrc.U create mode 100644 dist/U/man1dir.U create mode 100644 dist/U/man3dir.U create mode 100644 dist/U/manfmt.U create mode 100644 dist/U/mansrc.U create mode 100644 dist/U/mboxchar.U create mode 100644 dist/U/mkdep.U create mode 100644 dist/U/models.U create mode 100644 dist/U/modetype.U create mode 100644 dist/U/myhostname.U create mode 100644 dist/U/n.U create mode 100644 dist/U/nametype.U create mode 100644 dist/U/nblock_io.U create mode 100644 dist/U/newslevel.U create mode 100644 dist/U/newslib.U create mode 100644 dist/U/newsspool.U create mode 100644 dist/U/nis.U create mode 100644 dist/U/nlist_pfx.U create mode 100644 dist/U/orderlib.U create mode 100644 dist/U/orgname.U create mode 100644 dist/U/packadmin.U create mode 100644 dist/U/package.U create mode 100644 dist/U/pager.U create mode 100644 dist/U/patchlevel.U create mode 100644 dist/U/perlpath.U create mode 100644 dist/U/pidtype.U create mode 100644 dist/U/pkgsrc.U create mode 100644 dist/U/prefix.U create mode 100644 dist/U/prefshell.U create mode 100644 dist/U/privlib.U create mode 100644 dist/U/prototype.U create mode 100644 dist/U/ptrsize.U create mode 100644 dist/U/randbits.U create mode 100644 dist/U/randfunc.U create mode 100644 dist/U/rcs_branch.U create mode 100644 dist/U/registers.U create mode 100644 dist/U/rootid.U create mode 100644 dist/U/sbrksmart.U create mode 100644 dist/U/sbrktype.U create mode 100644 dist/U/scriptdir.U create mode 100644 dist/U/selecttype.U create mode 100644 dist/U/sh.U create mode 100644 dist/U/shm_for.U create mode 100644 dist/U/sig_name.U create mode 100644 dist/U/sitearch.U create mode 100644 dist/U/sitelib.U create mode 100644 dist/U/sizetype.U create mode 100644 dist/U/so.U create mode 100644 dist/U/sockopt.U create mode 100644 dist/U/spitshell.U create mode 100644 dist/U/src.U create mode 100644 dist/U/ssizetype.U create mode 100644 dist/U/startperl.U create mode 100644 dist/U/startsh.U create mode 100644 dist/U/stdchar.U create mode 100644 dist/U/sunscanf.U create mode 100644 dist/U/sysman.U create mode 100644 dist/U/trnl.U create mode 100644 dist/U/uidtype.U create mode 100644 dist/U/usenm.U create mode 100644 dist/U/usesocks.U create mode 100644 dist/U/usrinc.U create mode 100644 dist/U/vaproto.U create mode 100644 dist/U/voidflags.U create mode 100644 dist/U/warnflags.U create mode 100644 dist/U/yacc.U create mode 100755 dist/bindex create mode 100755 dist/configure create mode 100644 dist/files/Jmake.rules create mode 100644 dist/files/Jmake.tmpl create mode 100755 dist/files/fixcpp create mode 100644 dist/lib/C/fake/dup2.C create mode 100644 dist/lib/C/fake/getopt.C create mode 100644 dist/lib/C/fake/rename.C create mode 100644 dist/lib/C/fake/scandir.C create mode 100644 dist/lib/C/fake/setsid.C create mode 100644 dist/lib/errnolist.SH create mode 100644 dist/lib/errnolist.a create mode 100644 dist/lib/errnolist.mk create mode 100644 dist/lib/makedepend.SH create mode 100644 dist/lib/makedir.SH create mode 100755 dist/makegloss diff --git a/.gitignore b/.gitignore index 79d154f..bfefddb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ U/all dist-svn dist-3.5-20 -dist diff --git a/bin/find_config_h_deps.pl b/bin/find_config_h_deps.pl new file mode 100755 index 0000000..13f7ddf --- /dev/null +++ b/bin/find_config_h_deps.pl @@ -0,0 +1,77 @@ +#!/pro/bin/perl + +# This script reorders config_h.SH after metaconfig +# Changing metaconfig is too complicated +# +# Copyright (C) 2005-2005 by H.Merijn Brand (m)'05 [25-05-2005] +# +# You may distribute under the terms of either the GNU General Public +# License or the Artistic License, as specified in the README file. + +use strict; +use warnings; + +my ($cSH, $ch, @ch, %ch) = ("config_h.SH"); +open $ch, "<$cSH" or die "Cannot open $cSH: $!\n"; +{ local $/ = "\n\n"; + @ch = <$ch>; + close $ch; + } + +my @ref; +sub ch_index () +{ + %ch = (); + foreach my $ch (0 .. $#ch) { + while ($ch[$ch] =~ m{^/\* ([A-Z]\w+)}gm) { + $ch{$1} = $ch; + push @{$ref[$ch]}, $1; + } + } + } # ch_index + +ch_index; +my @CH = @ch; +my %RF; +foreach my $ch (0 .. $#CH) { + $CH[$ch] =~ s{/\*.*?\*/\s*}{}gis; + while ($CH[$ch] =~ m{\b([A-Z]\w+)}g) { + exists $ch{$1} or next; + $ch{$1} == $ch and next; + #print STDERR "$ref[$ch][0] ($ch) ref to $1 ($ch{$1})\n"; + $RF{$1}{$ref[$ch][0]}++; + } + } +foreach my $r (sort keys %RF) { + my $R = sprintf "%-20s", $r; + print " $r => [ qw ( @{[sort keys %{$RF{$r}}]}\t) ],\n"; + } + +my %dep = ( + # This symbol must be defined BEFORE ... + BYTEORDER => [ qw( UVSIZE ) ], + LONGSIZE => [ qw( BYTEORDER ) ], + MULTIARCH => [ qw( BYTEORDER MEM_ALIGNBYTES ) ], + USE_CROSS_COMPILE => [ qw( BYTEORDER MEM_ALIGNBYTES ) ], + HAS_QUAD => [ qw( I64TYPE ) ], + HAS_GETGROUPS => [ qw( Groups_t ) ], + HAS_SETGROUPS => [ qw( Groups_t ) ], + ); + +my $CHANGED = 0; +my $changed; +do { + $changed = 0; + foreach my $sym (keys %dep) { + ch_index; + foreach my $dep (@{$dep{$sym}}) { + print STDERR "Check if $sym\t($ch{$sym}) precedes $dep\t($ch{$dep})\n"; + $ch{$sym} < $ch{$dep} and next; + my $ch = splice @ch, $ch{$sym}, 1; + splice @ch, $ch{$dep}, 0, $ch; + $changed++; + $CHANGED++; + ch_index; + } + } + } while ($changed); diff --git a/bin/jmake b/bin/jmake new file mode 100755 index 0000000..77281ef --- /dev/null +++ b/bin/jmake @@ -0,0 +1,510 @@ +#!/usr/bin/perl + eval 'exec perl -S $0 "$@"' + if $runnning_under_some_shell; + +# $Id: jmake.SH 20 2008-01-04 23:14:00Z rmanfredi $ +# +# Copyright (c) 1991-1997, 2004-2006, Raphael Manfredi +# +# You may redistribute only under the terms of the Artistic Licence, +# as specified in the README file that comes with the distribution. +# You may reuse parts of this distribution only within the terms of +# that same Artistic Licence; a copy of which may be found at the root +# of the source tree for dist 4.0. +# +# $Log: jmake.SH,v $ +# Revision 3.0.1.9 2004/08/22 09:01:42 ram +# patch71: renamed |test as |case as the construct has its syntax +# patch71: added |subst section to allow variable substitutions +# +# Revision 3.0.1.8 2004/08/21 23:19:46 ram +# patch71: added '|shell' section to emit verbatim code in Makefile.SH +# patch71: new '|test' to conditionally generate Makefile sections +# +# Revision 3.0.1.7 2004/08/21 20:59:57 ram +# patch71: replaced old "do foo()" with modern "&foo()" syntax +# patch71: take care of junk emitted by GNU make when running commands +# patch71: new ^^^ escape sequence, removing extra spaces afterwards +# +# Revision 3.0.1.6 1995/09/25 09:08:01 ram +# patch59: will now force macro definitions to the left +# +# Revision 3.0.1.5 1995/07/25 13:34:47 ram +# patch56: all error messages are now prefixed with the program name +# +# Revision 3.0.1.4 1995/03/21 08:45:27 ram +# patch52: now invokes cpp through new fixcpp script +# patch52: first pass now skips cpp comments alltogether +# +# Revision 3.0.1.3 1994/10/29 15:47:01 ram +# patch36: added various escapes in strings for perl5 support +# +# Revision 3.0.1.2 1993/08/24 12:12:50 ram +# patch3: privlib dir was ~name expanded in the wrong place +# +# Revision 3.0.1.1 1993/08/19 06:42:13 ram +# patch1: leading config.sh searching was not aborting properly +# +# Revision 3.0 1993/08/18 12:04:17 ram +# Baseline for dist 3.0 netwide release. +# + +$dir = '/pro/3gl/CPAN/lib/dist/files'; +$cpp = '/usr/bin/cpp'; +$version = '3.5'; +$patchlevel = '0'; + +($me = $0) =~ s|.*/(.*)|$1|; +$dir = &tilda_expand($dir); # ~name expansion +$file = $dir . '/Jmake.tmpl'; + +$cpp_opt = "-I. "; # For Jmakefile, which is local +while ($ARGV[0] =~ /^-/) { + $_ = shift; + last if /--/; + $cpp_opt .= "$_ "; +} +$cpp_opt .= "-I$dir"; + +# Pass 0 is looking at the template for "?CP:CP =" lines that are to be +# emitted if the CP variable is needed. Later on, when we see $(CP) being +# used, we'll be able to set the $symbol{CP} entry to 1 to have the CP +# variable initialized by the template. + +open(TMPL, $file) || die "$me: can't open $file: $!\n"; +while (<TMPL>) { + next unless /^\?([\w_]+):\1\s+=/; + $wanted{$1}++; +} +close TMPL; + +# Thank you HP-UX for having a cpp that blindly strips trailing backslashes +# in the text. Run through cpp by using the fixcpp script... + +open(CPP, "$dir/fixcpp $cpp_opt $file |"); +while (<CPP>) { + # Record defined symbols in Jmakefile. We won't catch symbols + # in conditional commands, but that's ok, I hope. + if ($in_symbol) { + $val = $_; + $in_symbol = 0 if !($val =~ s/\\\s*$//); # Last line + if ($val = /^\|expand/) { # Found an expand command + $in_symbol = 0; # Stop gathering value + $val .= "void::x"; # Stop any incomplete escape sequence + } + chop($val); + $Makesym{$current_symbol} .= $val; + } elsif (/^\s*(\w+)\s*=(.*)/ && !$in_symbol) { + # Found a makefile's macro declaration + $val = $2; + $current_symbol = $1; + if ($val =~ s/\\\s*$//) { # Remove final '\' + $in_symbol = 1; # This is a continuation line + } + $Makesym{$current_symbol} = $val; + push(@Order, $current_symbol); # Keep track of order + } + # Protect RCS keyword Id or Header from normal substitution + s/\$(Id|Header|Log)/\$X-$1/; + # Restore possibly escaped C comments + s|/#\*|/*|g; + s|\*#/|*/|g; + # Remove all ^^^ (null space character) up to next non-space character + s|\^\^\^\s*||g; + # Remove all ^^ (null space character) + s|\^\^||g; + # Restore escaped ^^ and ^^^ sequences + s|\^\\\^\\\^|^^^|g; + s|\^\\\^|^^|g; + next if /^#\s+\d+/; # Skip cpp commments + + s/^;#/#/; + s/@#\s?/\n/g; # Kept for backward compatibility + s/@!\s?/\n/g; + s/@@\s?/\n\t/g; + + # A '\r' is added to all lines, in order to let 'split' keep them + # As lines ending with '\' won't fit in the next regular + # expression (why ?), we have to treat that special case separately + s/\n$/\r\n/gm; + s/\\\s*$/\\\r/gm; # Remove spaces after final '\' and add '\r' + @macro = split(/\n/); + for ($i = 0; $i <= $#macro; $i++) { + chop($_ = $macro[$i]); # Remove final '\r' + s/\s+$//g; # Remove possible useless spaces + if (/^TOP\s*=\s*(\S+)/) { # Get the top from generated file + $top = $1; + } + find_wanted($_); # Look for known $(VAR) usage + if (s/^\s*>//) { # '>' means "symbol wanted" + warn "$me: the '>$_' construct is deprecated for known symbols\n" + if $wanted{$_} && !$warned_wanted_symbol_deprecated++; + $symbol{$_} = 1; + } elsif (s/^\s*\+//) { # '+' means "initialization section" + if (s/^\+(\w+)//) { # '++' means add to variable list + $added{$1} .= $_; + } else { # A single '+' means "add as is". + push(@init, $_); + } + } elsif (s/^\|//) { # Command for us + if (/suffix\s+(\S+)/) { # Add suffix + push(@suffix, $1) unless $seen{$1}; + $seen{$1} = 1; + } elsif (s/^rule://) { # Add building rule + s/^\s(\s*\S+)/\t$1/; # Make sure leading tab is there + push(@rule, $_); + } elsif (/^skip/) { # Unconditional skip... funny! + push(@makefile, "|$_"); # Skip handled in pass 2 + } elsif (/^expand/) { + push(@makefile, "|$_"); # Expand handled in pass 2 + } elsif (/^once\s+(.*)/) { # Once handled in pass 1 + if ($Once{$1}++) { # Symbol already seen -- skip + for (; $i <= $#macro; $i++) { + last if $macro[$i] =~/^-once/; + } + warn("$me: -once not found for $1") + unless $macro[$i] =~/^-once/; + } + } elsif (/^shell/) { # Escaping to shell + push(@makefile, "|$_"); # will be handled in pass 2 + } elsif (/^case/) { # Conditional generation + push(@makefile, "|$_"); # will be handled in pass 2 + } elsif (/^subst/) { # Section with var substitution + push(@makefile, "|$_"); # will be handled in pass 2 + } else { + print "$me: Warning: unknown command $_\n"; + } + } else { + next if /^-once/; # Control statement removed + push(@makefile, $_); + } + } +} +close CPP; + +@key = keys(%added); +$last_was_blank = 1; # To avoid blank line at the top of the file +$symbol{'INIT'} = 1 if ($#init >= 0 || $#key >=0); # Initializations +$symbol{'SUFFIX'} = 1 if ($#suffix >= 0 || $#rule >=0); # Rules or suffixes +$symbol{'TOP'} = 1 if $top eq '.'; # If imake invoked for the top + +$shellmode = 0; # Set to true within "shell" section +$casemode = 0; # Counts nesting levels within "case" section +$substmode = 0; # True when within section with variable substitution + +$SPIT_START = "\$spitshell >>Makefile <<'!NO!SUBS!'\n"; +$SPIT_END = "!NO!SUBS!\n"; +$GROK_START = "\$spitshell >>Makefile <<!GROK!THIS!\n"; +$GROK_END = "!GROK!THIS!\n"; + +open(MAKEFILE, ">Makefile.SH"); +# We have to use for instead of foreach to handle 'skip' easily +line: for ($i = 0; $i <= $#makefile; $i++) { + $_ = $makefile[$i]; + next if /^-skip|-expand/; # They might have made a mistake + + # Strip consecutive blank lines in generated file + + if (/^\s*$/) { + next if ($last_was_blank); + $last_was_blank = 1; + } else { + $last_was_blank = 0; + } + + # In shell mode, we're transparent, untill we reach a "-shell" + # We don't call print_makefile() as we don't want to record + # those non-makefile lines in the @Generated array. + + if ($shellmode) { + if (/^-shell/) { # Ending shell mode, back to Makefile + print MAKEFILE $substmode ? $GROK_START : $SPIT_START; + $shellmode = 0; + } elsif (/^\|shell/) { + die "$me: can't nest 'shell' sections.\n"; + } else { + print MAKEFILE "$_\n"; + } + next; + } elsif (/^\|shell/) { + print MAKEFILE $substmode ? $GROK_END : $SPIT_END; + $shellmode = 1; # Next lines emitted verbatim as shell + next; + } + + # In subst mode, the section until "-subst" is emitted regularily, + # excepted that it will be in a grok section, so its $var will be + # substituted by the shell. + + if ($substmode) { + if (/^-subst/) { # Ending subst mode, back to regular + print MAKEFILE $GROK_END; + print MAKEFILE $SPIT_START; + $substmode = 0; + next; + } elsif (/^\|subst/) { + die "$me: can't nest 'subst' sections.\n"; + } + # Continue with line + } elsif (/^\|subst/) { + print MAKEFILE $SPIT_END; # End spit section in Makefile.SH + print MAKEFILE $GROK_START; + $substmode = 1; # Next lines subject to $ interpretation + next; + } + + # In a "case" section, the Makefile will be conditionally generated + # based on the value of the supplied variable, as evaluated by the shell. + # We can nest "case" sections without problems. + + if (/^-case/) { # Ending current case section + if ($casemode == 0) { + warn "$me: ignoring spurious '-case'\n"; + next; + } + print MAKEFILE $substmode ? $GROK_END : $SPIT_END; + my $indent = "\t" x ($casemode - 1); + print MAKEFILE "${indent}\t;;\n"; + print MAKEFILE "${indent}esac\n"; + print MAKEFILE "${indent}", $substmode ? $GROK_START : $SPIT_START; + $casemode--; + next; + } + + if (/^\|case/) { + my ($var, $value) = /^\|case\s+(\w+)\s+in\s+(.*)/; + die "$me: unparseable directive '$_'\n" if $var eq ''; + $casemode++; + print MAKEFILE $substmode ? $GROK_END : $SPIT_END; + my $indent = "\t" x ($casemode - 1); + print MAKEFILE "${indent}case \"\$$var\" in\n"; + print MAKEFILE "${indent}$value)\n"; + print MAKEFILE "${indent}\t", $substmode ? $GROK_START : $SPIT_START; + next; + } + + # Process regular line to be generated in Makefile.SH + + s/<TAG>/[jmake $version PL$patchlevel]/; + + # Lines starting with ?SYMBOL: (resp. %SYMBOL:) are to be processed + # only if SYMBOL is defined (resp. undefined). + + # Apply in sequence + while (/^\s*\?|\s*%/) { + if (s/^\s*\?(\w+)://) { # Wanted symbol ? + next line unless $symbol{$1}; + } elsif (s/^\s*%(\w+)://) { # Unwanted symbol ? + next line if $symbol{$1}; + } else { + print "$me: Warning: missing ':' in $_\n"; + last; + } + } + + # We wish to make sure there is a leading tab if the line starts with + # a space to prevent problems later on. However, variable definitions + # might want to be aligned on the '=' (imake style). Not all make + # may be able to cope with those though, so they are left justified + # again. + + s/^\s/\t/ unless /^\s+\w+\s+=/; # Make sure leading tab is there + s/^\s+(\w+\s+=)/$1/; # Left justify variable definition + s/^;#/#/; # Comments in Jmakefile + + if (s/^\|//) { # Command for us + if (/^skip/) { # Skip until -skip + for (; $i <= $#makefile; $i++) { + last if $makefile[$i] =~ /^-skip/; + } + } elsif (s/^expand//) { + &init_expand($_); # Initializes data structures + $i++; # Skip expand line + undef @Expand; # Storage for expanded lines + $pattern = ''; # Assume no pattern + for (; $i <= $#makefile; $i++) { + $_ = $makefile[$i]; + if (s/^-expand//) { # Reached end of expansion + if (s/^\s*(.*)/$1/) { # Expand followed by a pattern + $pattern = $_; # Get pattern to be removed + } + last; + } + s/^\s/\t/; # Make sure leading tab is there + push(@Expand, $_); # Line to be expanded + } + &expand($pattern); # Expand all lines in buffer + } else { + die "$me: unknown command $_\n"; + } + } elsif (/^INIT/) { # Initialization section + # All the initializations are put in the variable substitution + # section of the Makefile.SH. Therefore, we have to protect all + # the '$' signs that are not followed by an alphanumeric character. + foreach (@init) { + # Dumps core sometimes with perl 4.0 PL10 + # &protect_dollars(*_); + $_ = &protect_dollars($_); + &print_makefile($_); + } + foreach (@key) { # @key set earlier to keys(%added) + $_ .= " = " . $added{$_}; + # Dumps core sometimes with perl 4.0 PL10 + # &protect_dollars(*_); + $_ = &protect_dollars($_); + &print_makefile($_); + } + } elsif (/^SUFFIX/) { # Suffixes/Rules section + # Rules and suffixes are put in the variable substitution + # section of the Makefile.SH. Therefore, we have to protect all + # the '$' signs that are not followed by an alphanumeric character. + if ($#suffix >= 0) { + print MAKEFILE ".SUFFIXES:"; + foreach (@suffix) { + # Dumps core sometimes with perl 4.0 PL10 + # &protect_dollars(*_); + $_ = &protect_dollars($_); + print MAKEFILE " $_"; + } + print MAKEFILE "\n\n"; + } + foreach (@rule) { + # Dumps core sometimes with perl 4.0 PL10 + # &protect_dollars(*_); + $_ = &protect_dollars($_); + print MAKEFILE "$_\n"; + } + } else { + &print_makefile($_); + } +} +close MAKEFILE; + +sub protect_dollars { + # Dumps core sometimes with perl 4.0 PL10 + # local(*_) = shift(@_); + s/\\\$/\\=/g; # Protect already escaped '$' + s/(\$\W)/\\$1/g; # Escape unprotected '$' + s/\\=/\\\$/g; # Restore escaped '$' + $_; # Because perl dumps core... :-( +} + +# Initializes data structures for expansion. If we detect Makefile +# macro in the 'expand' line (the argument), then we write a small +# makefile that will do the substitution for us -- I'm lazy today :-) +sub init_expand { + local($_) = shift(@_); + undef %Vars; # Reset array of variables + $Vars_len = 0; # Number of "symbols" in first expanded + if (/\$\(\w+\)/) { # If at least one macro + local($make) = "/tmp/mkjm$$"; + open(MAKE, ">$make") || die "$me: can't create $make: $!\n"; + &gen_variables(); # Generates already computed variables + foreach $var (@Order) { # Print each in order we found them + print MAKE "$var = $Makesym{$var}\n" if !$Gvars{$var}; + } + # We prepend OUTPUT: in front of the line that interests us, because + # some makes can print extra information, especially GNU make with + # its entering/leaving blurb when invoked from another makefile. + print MAKE "all:\n\t\@echo 'OUTPUT: $_'\n"; + close MAKE; + chop($_ = `make -f $make all | grep ^OUTPUT:`); + unlink($make); + } + s/^OUTPUT: //; + while (s/^\s*(\w+)!([^!]*)!//) { + $Vars{$1} = $2; + # Record only length for _first_ expanded symbol + $Vars_len = split(/\s\s*/, $2) unless $Vars_len; + } +} + +# Expand lines in the @Expand array. The argument is a pattern which is to +# be removed from the last chunk of expanded lines. +# For each symbol s, !s is replaced by the next item, and !s:p=q does the +# same after having replaced the pattern 'p' by pattern 'q' in the item. +# Spaces are NOT allowed in 'p' or 'q'. Substitution is done once (no /g). +sub expand { + local($pattern) = shift; # To-be-removed pattern for last chunk + local($_); + local($sub); + local($i); + local(@expands); + for ($i = 0; $i < $Vars_len; $i++) { + foreach $line (@Expand) { + $_ = $line; # Don't modify elements in array + foreach $sym (keys %Vars) { + @expands = split(/\s\s*/, $Vars{$sym}); + $sub = $expands[$i]; + $sub =~ s/\/\///g; # // is a void value + while (s/!${sym}:([^\s]*)=([^\s]*)/,x##x,/) { + # Replacing item is altered by some pattern + local($p) = $1; + local($q) = $2; + local($subq) = $sub; + eval "\$subq =~ s=${p}=${q}="; + s/,x##x,/${subq}/; + } + s/!${sym}/${sub}/g; + } + # Protect substitution in an 'eval' in case of error + eval "s/${pattern}\$//" if $pattern && $i == ($Vars_len - 1); + &print_makefile($_); + } + } +} + +# Prints its argument in MAKEFILE and records it also in Generated +sub print_makefile { + local($_) = shift(@_); # Line to be printed + print MAKEFILE "$_\n"; + push(@Generated, "$_\n"); +} + +# Generates in MAKE file all the generated variable we have so far for +# final Makefile. This is mainly intended to allow expansion of variables +# which are already defined with an expand. +sub gen_variables { + undef %Gvars; # Reset already generated variables + local ($in_symbol) = 0; # True when in variable (Makefile's macro) + foreach (@Generated) { + if ($in_symbol) { + if (/^\s*(\w+)\s*=(.*)/) { # Missed the end of previous macro + $in_symbol = 0; + $Gvars{$1} = 1; # Definition of variable seen + $in_symbol = 1 if (/\\\s*$/); # There is a final '\' + print MAKE "void::\n"; # Cut incomplete esc sequence + } else { + $in_symbol = 0 if !(/\\\s*$/); # Last line + } + print MAKE; + } elsif (/^\s*(\w+)\s*=(.*)/ && !$in_symbol) { + # Found a makefile's macro declaration + $Gvars{$1} = 1; # Definition of variable seen + $in_symbol = 1 if (/\\\s*$/); # There is a final '\' + print MAKE; + } + } + print MAKE "void::\n"; # Cut incomplete escape sequence +} + +# Parse line to extract all $(VAR) usage and trigger the symbol if VAR +# is among the wanted set, as if they had manually said ">VAR" like in +# the old days. +sub find_wanted { + my ($l) = @_; + while ($l =~ s/\$\(([\w_]+)\)//) { + $symbol{$1}++ if $wanted{$1}; + } +} + +# Perform ~name expansion ala ksh... +# (banish csh from your vocabulary ;-) +sub tilda_expand { + local($path) = @_; + return $path unless $path =~ /^~/; + $path =~ s:^~([^/]+):(getpwnam($1))[$[+7]:e; # ~name + $path =~ s:^~:$ENV{'HOME'} || (getpwuid($<))[$[+7]:e; # ~ + $path; +} + diff --git a/bin/jmkmf b/bin/jmkmf new file mode 100755 index 0000000..bc56c48 --- /dev/null +++ b/bin/jmkmf @@ -0,0 +1,83 @@ +#!/bin/sh +# @(#) Generates a Makefile from a Jmakefile + +# $Id: jmkmf.SH 1 2006-08-24 12:32:52Z rmanfredi $ +# +# Copyright (c) 1991-1997, 2004-2006, Raphael Manfredi +# +# You may redistribute only under the terms of the Artistic Licence, +# as specified in the README file that comes with the distribution. +# You may reuse parts of this distribution only within the terms of +# that same Artistic Licence; a copy of which may be found at the root +# of the source tree for dist 4.0. +# +# $Log: jmkmf.SH,v $ +# Revision 3.0.1.2 2004/08/21 23:18:13 ram +# patch71: automatically figures the top dir and the current dir +# patch71: don't run Makefile.SH if the jmake call failed +# +# Revision 3.0.1.1 1993/08/19 06:42:14 ram +# patch1: leading config.sh searching was not aborting properly +# +# Revision 3.0 1993/08/18 12:04:19 ram +# Baseline for dist 3.0 netwide release. +# + +usage="usage: $0 [top_of_sources_pathname [current_directory]]" + +curdir= + +case $# in + 0) + if test -f .package; then topdir=.; + elif test -f ../.package; then topdir=..; + elif test -f ../../.package; then topdir=../..; + elif test -f ../../../.package; then topdir=../../..; + elif test -f ../../../../.package; then topdir=../../../..; + else + echo "$0: WARNING: can't determine top package directory" >&2 + fi + ;; + 1) topdir=$1 ;; + 2) topdir=$1 curdir=$2 ;; + *) echo "$usage" 1>&2; exit 1 ;; +esac + +case "$topdir" in + -*) echo "$usage" 1>&2; exit 1 ;; +esac + +case "$curdir" in +'') + here=`pwd` + top=`cd $topdir; pwd` + curdir=`perl -e \ + 'print substr($ARGV[0], length($ARGV[1])+1), "\n";' $here $top` + case "$curdir" in + '') curdir=.;; + esac + ;; +esac + +if test -f Jmakefile; then + : ok +else + echo "$0: no Jmakefile found in current directory" >&2 + exit 1 +fi + +if test -f Makefile.SH; then + echo mv Makefile.SH Makefile.SH~ + mv Makefile.SH Makefile.SH~ +fi + +args="-DTOPDIR=$topdir -DCURDIR=$curdir" + +echo jmake $args +if jmake $args; then + echo sh Makefile.SH + sh Makefile.SH +else + echo "jmake failed, aborting" >&2 + exit 1 +fi diff --git a/bin/kitpost b/bin/kitpost new file mode 100755 index 0000000..bdde1cc --- /dev/null +++ b/bin/kitpost @@ -0,0 +1,284 @@ +#!/usr/bin/perl + eval "exec perl -S $0 $*" + if $running_under_some_shell; + +# $Id: kitpost.SH 1 2006-08-24 12:32:52Z rmanfredi $ +# +# Copyright (c) 1991-1997, 2004-2006, Raphael Manfredi +# +# You may redistribute only under the terms of the Artistic Licence, +# as specified in the README file that comes with the distribution. +# You may reuse parts of this distribution only within the terms of +# that same Artistic Licence; a copy of which may be found at the root +# of the source tree for dist 4.0. +# +# $Log: kitpost.SH,v $ +# Revision 3.0.1.2 1994/10/29 15:48:26 ram +# patch36: don't use rootid as a variable, it is known by metaconfig +# +# Revision 3.0.1.1 1994/05/06 13:54:53 ram +# patch23: created +# + +$inews='inews'; +$mailer='/usr/sbin/sendmail'; +$orgname='PROCURA B.V.'; +$version = '3.5'; +$patchlevel = '0'; + +$progname = &profile; # Read ~/.dist_profile +require 'getopts.pl'; +&usage unless $#ARGV >= 0; +&usage unless &Getopts("hrVm:D:H:"); + +if ($opt_V) { + print STDERR "$progname $version PL$patchlevel\n"; + exit 0; +} elsif ($opt_h) { + &usage; +} + +$RCSEXT = ',v' unless $RCSEXT; +if ($inews eq 'inews') { + $inews = '/usr/lib/news/inews' if -f '/usr/lib/news/inews'; +} + +chdir '..' if -d '../bugs'; + +&readpackage; + +$orgname = &tilda_expand($orgname); +chop($orgname = `cat $orgname`) if $orgname =~ m|^/|; + +if ($opt_r) { + $repost = ' (REPOST)'; +} + +while ($_ = shift) { + if (/^(kit)?[1-9][\d\-]*$/) { + s/^kit//; + push(@argv,$_); + } else { + push(@ngroups,$_); + } +} +$ngroups = join(',',@ngroups) unless $#ngroups < 0; +$dest = $opt_m; +&usage unless $ngroups || $dest; + +@ARGV = @argv; + +if (-f "$package.kit10") { + @filelist = <$package.kit[0-9][0-9]>; +} +else { + @filelist = <$package.kit[0-9]>; +} +pop(@filelist) =~ /(\d+)$/ && ($maxnum = $1 + 0); + +if ($#ARGV < 0) { + $argv = "1-$maxnum"; + @ARGV = $argv; +} + +$argv = &rangeargs(@ARGV); +@ARGV = split(' ', $argv); + +$argv =~ s/ $//; + +if ($#ARGV < 0) { + print STDERR "$progname: no kits specified.\n"; + &usage; +} else { + local($s) = $#ARGV ? 's' : ''; + print "$progname: posting $package $baserev kit$s $argv to $ngroups...\n" + if $ngroups; + print "$progname: mailing $package $baserev kit$s $argv to $dest...\n" + if $dest; +} + +$desc = "$opt_D, " if $opt_D; + +fork && exit; + +# Compute a suitable root message ID that all parts will reference, so that +# threaded news readers will correctly process them. +# Unfortunately, this works only when all kits are sent. +($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = + localtime(time); +$mon++; +$rootmid = "$year$mon$mday$hour$min$sec.AA$$"; +$first = $maxnum >= 10 ? "01" : "1"; +$rootmsgid = "<$rootmid.P$first.$maintloc>"; + +until ($#ARGV < 0) { + $kitnum = shift; + $kitnum = "0$kitnum" if $kitnum < 10 && $maxnum >= 10; + open(FILE, "$package.kit$kitnum") || + die "$progname: can't open $package.kit$kitnum: $!\n"; + if ($ngroups) { + open(INEWS,"|$inews -h") || die "$progname: can't fork $inews: $!\n"; + } + if ($dest) { + $opt = '-odq' if $mailer =~ /sendmail/; + $dest =~ s/,/ /g; + ($to = $dest) =~ s/\s+/, /g; + open(MAILER,"|$mailer $opt $dest") || + die "$progname: can't fork $mailer: $!\n"; + } + + $msg_id = "<$rootmid.P$kitnum.$maintloc>"; + $msg_id = $rootmsgid if $kitnum == 1; + $msg_id .= "\nReferences: $rootmsgid" if $kitnum != 1; + + print INEWS "Newsgroups: $ngroups\n"; + print MAILER "To: $to\n"; +$head = <<EOH; +Subject: $package $baserev - ${desc}part$kitnum/$maxnum$repost +Message-ID: $msg_id +Organization: $orgname + +Submitted-by: $maintname <$maintloc> +Archive-name: $package-$baserev/part$kitnum +Environment: UNIX + +EOH + print INEWS $head; + print MAILER $head; + + if ($kitnum == 1 && $opt_H) { + open(HEAD, $opt_H) || warn "$progname: can't open $opt_H: $!\n"; + while (<HEAD>) { + print INEWS; + print MAILER; + } + close HEAD; + } + + while (<FILE>) { + print INEWS; + print MAILER; + } + close FILE; + close INEWS; + die "$progname: could not post part$kitnum.\n" if $ngroups && $?; + close MAILER; + die "$progname: could not send part$kitnum.\n" if $dest && $?; +} + +sub usage { + print STDERR <<EOM; +Usage: $progname [-hrV] [-H file] [-D desc] [-m dest1,dest2] [kits] [newsgroups] + -h : print this message and exit + -m : set-up recipients for (additional) mailing + -r : signals a repost + -D : specify description string for subject line + -H : specify file to be used as header for first part + -V : print version number and exit +EOM + exit 1; +} + +sub rangeargs { + local($result) = ''; + local($min,$max,$_); + while ($#_ >= 0) { + $_ = shift(@_); + while (/^\s*\d/) { + s/^\s*(\d+)//; + $min = $1; + if (s/^,//) { + $max = $min; + } + elsif (s/^-(\d*)//) { + $max = $1; + if ($max == 0 && $maxnum) { + $max = $maxnum; + } + s/^[^,],?//; + } + else { + $max = $min; + } + for ($i = $min; $i <= $max; ++$i) { + $result .= $i . ' '; + } + } + } + $result; +} + +sub readpackage { + if (! -f '.package') { + if ( + -f '../.package' || + -f '../../.package' || + -f '../../../.package' || + -f '../../../../.package' + ) { + die "Run in top level directory only.\n"; + } else { + die "No .package file! Run packinit.\n"; + } + } + open(PACKAGE,'.package'); + while (<PACKAGE>) { + next if /^:/; + next if /^#/; + if (($var,$val) = /^\s*(\w+)=(.*)/) { + $val = "\"$val\"" unless $val =~ /^['"]/; + eval "\$$var = $val;"; + } + } + close PACKAGE; +} + +# Perform ~name expansion ala ksh... +# (banish csh from your vocabulary ;-) +sub tilda_expand { + local($path) = @_; + return $path unless $path =~ /^~/; + $path =~ s:^~([^/]+):(getpwnam($1))[$[+7]:e; # ~name + $path =~ s:^~:$ENV{'HOME'} || (getpwuid($<))[$[+7]:e; # ~ + $path; +} + +# Set up profile components into %Profile, add any profile-supplied options +# into @ARGV and return the command invocation name. +sub profile { + local($profile) = &tilda_expand($ENV{'DIST'} || '~/.dist_profile'); + local($me) = $0; # Command name + $me =~ s|.*/(.*)|$1|; # Keep only base name + return $me unless -s $profile; + local(*PROFILE); # Local file descriptor + local($options) = ''; # Options we get back from profile + unless (open(PROFILE, $profile)) { + warn "$me: cannot open $profile: $!\n"; + return; + } + local($_); + local($component); + while (<PROFILE>) { + next if /^\s*#/; # Skip comments + next unless /^$me/o; + if (s/^$me://o) { # progname: options + chop; + $options .= $_; # Merge options if more than one line + } + elsif (s/^$me-([^:]+)://o) { # progname-component: value + $component = $1; + chop; + s/^\s+//; # Trim leading and trailing spaces + s/\s+$//; + $Profile{$component} = $_; + } + } + close PROFILE; + return unless $options; + require 'shellwords.pl'; + local(@opts); + eval '@opts = &shellwords($options)'; # Protect against mismatched quotes + unshift(@ARGV, @opts); + return $me; # Return our invocation name +} + diff --git a/bin/kitsend b/bin/kitsend new file mode 100755 index 0000000..94ba77f --- /dev/null +++ b/bin/kitsend @@ -0,0 +1,240 @@ +#!/usr/bin/perl + eval 'exec perl -S $0 "$@"' + if $running_under_some_shell; + +# $Id: kitsend.SH 1 2006-08-24 12:32:52Z rmanfredi $ +# +# Copyright (c) 1991-1997, 2004-2006, Raphael Manfredi +# +# You may redistribute only under the terms of the Artistic Licence, +# as specified in the README file that comes with the distribution. +# You may reuse parts of this distribution only within the terms of +# that same Artistic Licence; a copy of which may be found at the root +# of the source tree for dist 4.0. +# +# Original Author: Harlan Stenn <har...@mumps.pfcs.com> +# +# $Log: kitsend.SH,v $ +# Revision 3.0.1.2 1994/05/06 13:59:57 ram +# patch23: random code cleanup to follow pat tools style +# patch23: made configurable from dist profile +# patch23: now understands -V and -h options +# patch23: mails now flagged with a bulk precedence +# patch23: added X-Mailer header and now calls mailer via open() +# +# Revision 3.0.1.1 1993/08/19 06:42:15 ram +# patch1: leading config.sh searching was not aborting properly +# +# Revision 3.0 1993/08/18 12:04:25 ram +# Baseline for dist 3.0 netwide release. +# + +$orgname='PROCURA B.V.'; +$mailer='/usr/sbin/sendmail'; +$version = '3.5'; +$patchlevel = '0'; + +$progname = &profile; # Read ~/.dist_profile +require 'getopts.pl'; +&usage unless &Getopts('hV'); + +if ($opt_V) { + print STDERR "$progname $version PL$patchlevel\n"; + exit 0; +} elsif ($opt_h) { + &usage; +} + +$orgname = &tilda_expand($orgname); +chop($orgname = `cat $orgname`) if $orgname =~ m|^/|; + +&readpackage; + +while ($_ = shift) { + if (/^(kit)?[1-9][\d,-]*$/) { + s/^kit//; + push(@argv, $_); + } + else { + push(@dest, $_); + } +} +$dest = join(' ',@dest); +&usage unless $dest; + +@ARGV = @argv; + +if (-f "$package.kit10") { + @filelist = <$package.kit[0-9][0-9]>; +} +else { + @filelist = <$package.kit[0-9]>; +} +pop(@filelist) =~ /(\d+)$/ && ($maxnum = $1 + 0); + +if ($#ARGV < 0) { + $argv = "1-$maxnum"; + @ARGV = $argv; +} +$argv = &rangeargs(@ARGV); +@ARGV = split(' ', $argv); + +$argv =~ s/ $//; + +if ($#ARGV < 0) { + die "$progname: no kits specified.\n"; +} elsif ($#ARGV) { + print "$progname: sending $package $baserev kits $argv to $dest...\n"; +} else { + print "$progname: sending $package $baserev kit $argv to $dest...\n"; +} + +fork && exit; + +$opt = '-odq' if $mailer =~ /sendmail/; + +until ($#ARGV < 0) { + $kitnum = shift; + + # Provision for broken mailers... + @dest = split(' ', $dest); + while (@smalldest = splice(@dest, 0, 50)) { + $to = join(', ', @smalldest); # Sensible To: for sendmail + $smalldest = join(' ', @smalldest); + + open(MAILER, "|$mailer $opt $smalldest") || + die "$progname: can't fork $mailer: $!\n"; + print MAILER +"To: $to +Subject: $package $baserev kit #$kitnum +Precedence: bulk +X-Mailer: dist [version $version PL$patchlevel] +Organization: $orgname + +[There are $maxnum kits for $package version $baserev.] + +"; + $kitnum = "0$kitnum" if $kitnum < 10 && $maxnum >= 10; + open(FILE,"$package.kit$kitnum") || + die "$progname: can't open $package.kit$kitnum: $!\n"; + while (<FILE>) { + print MAILER; + } + close FILE; + close MAILER; + warn "$progname: ERROR mailing of $package.kit$kitnum to $dest\n" if $?; + } +} + +sub usage { + print STDERR <<EOM; +Usage: $progname [-hV] [kits] dest + -h : print this message and exit + -V : print version number and exit +EOM + exit 1; +} + +sub rangeargs { + local($result) = ''; + local($min,$max,$_); + while ($#_ >= 0) { + $_ = shift(@_); + while (/^\s*\d/) { + s/^\s*(\d+)//; + $min = $1; + if (s/^,//) { + $max = $min; + } + elsif (s/^-(\d*)//) { + $max = $1; + if ($max == 0 && $maxnum) { + $max = $maxnum; + } + s/^[^,],?//; + } + else { + $max = $min; + } + for ($i = $min; $i <= $max; ++$i) { + $result .= $i . ' '; + } + } + } + $result; +} + +sub readpackage { + if (! -f '.package') { + if ( + -f '../.package' || + -f '../../.package' || + -f '../../../.package' || + -f '../../../../.package' + ) { + die "Run in top level directory only.\n"; + } else { + die "No .package file! Run packinit.\n"; + } + } + open(PACKAGE,'.package'); + while (<PACKAGE>) { + next if /^:/; + next if /^#/; + if (($var,$val) = /^\s*(\w+)=(.*)/) { + $val = "\"$val\"" unless $val =~ /^['"]/; + eval "\$$var = $val;"; + } + } + close PACKAGE; +} + +# Perform ~name expansion ala ksh... +# (banish csh from your vocabulary ;-) +sub tilda_expand { + local($path) = @_; + return $path unless $path =~ /^~/; + $path =~ s:^~([^/]+):(getpwnam($1))[$[+7]:e; # ~name + $path =~ s:^~:$ENV{'HOME'} || (getpwuid($<))[$[+7]:e; # ~ + $path; +} + +# Set up profile components into %Profile, add any profile-supplied options +# into @ARGV and return the command invocation name. +sub profile { + local($profile) = &tilda_expand($ENV{'DIST'} || '~/.dist_profile'); + local($me) = $0; # Command name + $me =~ s|.*/(.*)|$1|; # Keep only base name + return $me unless -s $profile; + local(*PROFILE); # Local file descriptor + local($options) = ''; # Options we get back from profile + unless (open(PROFILE, $profile)) { + warn "$me: cannot open $profile: $!\n"; + return; + } + local($_); + local($component); + while (<PROFILE>) { + next if /^\s*#/; # Skip comments + next unless /^$me/o; + if (s/^$me://o) { # progname: options + chop; + $options .= $_; # Merge options if more than one line + } + elsif (s/^$me-([^:]+)://o) { # progname-component: value + $component = $1; + chop; + s/^\s+//; # Trim leading and trailing spaces + s/\s+$//; + $Profile{$component} = $_; + } + } + close PROFILE; + return unless $options; + require 'shellwords.pl'; + local(@opts); + eval '@opts = &shellwords($options)'; # Protect against mismatched quotes + unshift(@ARGV, @opts); + return $me; # Return our invocation name +} + diff --git a/bin/makeSH b/bin/makeSH new file mode 100755 index 0000000..54e7b3e --- /dev/null +++ b/bin/makeSH @@ -0,0 +1,76 @@ +#!/bin/sh + +# $Id: makeSH,v 3.0.1.1 1993/08/19 06:42:16 ram Exp ram $ +# +# Copyright (c) 1991-1997, 2004-2006, Raphael Manfredi +# +# You may redistribute only under the terms of the Artistic Licence, +# as specified in the README file that comes with the distribution. +# You may reuse parts of this distribution only within the terms of +# that same Artistic Licence; a copy of which may be found at the root +# of the source tree for dist 4.0. +# +# Original Author: Larry Wall <lw...@netlabs.com> +# +# $Log: makeSH,v $ +# Revision 3.0.1.1 1993/08/19 06:42:16 ram +# patch1: leading config.sh searching was not aborting properly +# +# Revision 3.0 1993/08/18 12:04:26 ram +# Baseline for dist 3.0 netwide release. +# + +for file do + if test -f $file.SH; then + mv $file.SH $file.SH.old + echo "makeSH: renaming $file.SH as $file.SH.old." + fi + base=`basename $file` + + cat >$file.SH <<BLURFL +case \$CONFIG in +'') + if test -f config.sh; then TOP=.; + elif test -f ../config.sh; then TOP=..; + elif test -f ../../config.sh; then TOP=../..; + elif test -f ../../../config.sh; then TOP=../../..; + elif test -f ../../../../config.sh; then TOP=../../../..; + else + echo "Can't find config.sh."; exit 1 + fi + . \$TOP/config.sh + ;; +esac +: This forces SH files to create target in same directory as SH file. +: This is so that make depend always knows where to find SH derivatives. +case "\$0" in +*/*) cd \`expr X\$0 : 'X\(.*\)/'\` ;; +esac +echo "Extracting $file (with variable substitutions)" +: This section of the file will have variable substitutions done on it. +: Move anything that needs config subs from !NO!SUBS! section to !GROK!THIS!. +: Protect any dollar signs and backticks that you do not want interpreted +: by putting a backslash in front. You may delete these comments. +\$spitshell >$base <<!GROK!THIS! +BLURFL + + case `sed q $file` in + */bin/sh) echo '$startsh' >>$file.SH ;; + esac + + cat >>$file.SH <<BLURFL +!GROK!THIS! + +: In the following dollars and backticks do not need the extra backslash. +\$spitshell >>$base <<'!NO!SUBS!' +BLURFL + + sed -e '1{' -e '/#!.*\/bin\/sh$/d' -e '}' $file >>$file.SH + + cat >>$file.SH <<BLURFL +!NO!SUBS! +chmod 755 $base +\$eunicefix $base +BLURFL + chmod 755 $file.SH +done diff --git a/bin/makedist b/bin/makedist new file mode 100755 index 0000000..c60aaec --- /dev/null +++ b/bin/makedist @@ -0,0 +1,601 @@ +#!/usr/bin/perl + eval "exec perl -S $0 $*" + if $running_under_some_shell; + +# $Id: makedist.SH 1 2006-08-24 12:32:52Z rmanfredi $ +# +# Copyright (c) 1991-1997, 2004-2006, Raphael Manfredi +# +# You may redistribute only under the terms of the Artistic Licence, +# as specified in the README file that comes with the distribution. +# You may reuse parts of this distribution only within the terms of +# that same Artistic Licence; a copy of which may be found at the root +# of the source tree for dist 4.0. +# +# $Log: makedist.SH,v $ +# Revision 3.0.1.2 1994/01/24 13:58:20 ram +# patch16: modified call to manifake to trap exceptions manually +# patch16: removed final sed post-processing to allow 'make depend' target +# patch16: added ~/.dist_profile awareness +# +# Revision 3.0.1.1 1993/08/19 06:42:17 ram +# patch1: leading config.sh searching was not aborting properly +# +# Revision 3.0 1993/08/18 12:04:28 ram +# Baseline for dist 3.0 netwide release. +# + +$version = '3.5'; +$patchlevel = '0'; + +&profile; # Read ~/.dist_profile +require 'getopts.pl'; +&usage unless &Getopts('c:f:dhvqs:V'); + +$ENV{'DIST'} = '/dev/null'; # Disable ~/.dist_profile + +if ($opt_V) { + print STDERR "makedist $version PL$patchlevel\n"; + exit 0; +} elsif ($opt_h) { + &usage; +} + +$MAXKITSIZE = 50000 unless $MAXKITSIZE = $opt_s; +$KITOVERHEAD = 1800; +$FILEOVERHEAD = 90; +$CHOPSIZE = $MAXKITSIZE - $KITOVERHEAD - $FILEOVERHEAD; + +$NEWMANI = 'MANIFEST.new' unless $NEWMANI = $opt_f; +$MANI = 'MANIFEST' unless $opt_f; +$PACKLIST = 'PACKLIST'; +$PACKNOTES = 'PACKNOTES'; + +$tmpdir = "/tmp/MKst$$"; # Where to copy distribution +$tmpdir = '.' if $opt_q; # Quick mode: no need to copy distribution + +&set_sig('aborted'); # Make sure we clean up in case of emergency + +&readpackage; +&get_patchlevel; + +eval '&manifake'; # Want to trap possible die and redirect to fatal +if ($@ ne '') { + chop($@); + &fatal($@); +} + +if ($opt_c) { # Copy distribution only, no shell archive + &distcopy; + exit 0; +} + +&distfake; +©right'init($copyright) if -f $copyright; + +unlink <$package.kit? $package.kit??>; +chop($curdir = `pwd`); +chdir $tmpdir || die "Can't chdir to $tmpdir.\n"; + +&maniread; +&kitlists; +&manimake; +&kitbuild; +&cleanup; +exit 0; + +# Physically build the kits +sub kitbuild { + $numkits = $#list; + if ($numkits > 9) { + $sp = '%02d'; + } else { + $sp = '%d'; + } + + for ($kitnum = 1; $kitnum <= $numkits; $kitnum++) { + $list = $list[$kitnum]; + $kit = sprintf("$package.kit" . $sp,$kitnum); + print "*** Making $kit ***\n"; + open(KIT,">$curdir/$kit") || do fatal("Can't create $curdir/$kit: $!"); + + &kitleader; + + @files = split(' ',$list); + reset 'X'; + for $file (@files) { + $_ = $file; + while (s|^(.*)/.*$|$1|) { + push(@Xdirs,$_) unless $Xseen{$_}++; + } + } + print KIT "mkdir ",join(' ', sort @Xdirs)," 2>/dev/null\n"; + + foreach $file (@files) { + print "\t",$file,"\n" if $opt_v; + print KIT "echo Extracting $file\n"; + print KIT "sed >$file <<'!STUFFY!FUNK!' -e 's/X//'\n"; + open(FILE, $file); + ©right'reset; # Reset copyright for new file + while (<FILE>) { + # Use Lock[e]r as a pattern in case it is applied on ourselves + s|Lock[e]r:.*\$|\$|; # Remove locker mark + print KIT ©right'filter($_, 'X'); + } + close FILE; + print KIT "!STUFFY!FUNK!\n"; + -x "$file" && (print KIT "chmod +x $file\n"); + } + &kittrailer; + chmod 0755, $kit; + } +} + +sub kitlists { + for $filename (keys %comment) { + next if $filename =~ m|/$|; # Skip directories + next if -d $filename; # Better safe than sorry + ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, + $blksize,$blocks) = stat($filename); + + # Make sure file is not larger than the CHOPSIZE limit. If it is, + # a split is attempted. + if ($size > $CHOPSIZE) { + print "Splitting $filename...\n" if $opt_v; + $file_comment = $comment{$filename}; + open(FILE, $filename) || die "Can't open $filename: $!\n"; + $piece = 'AA'; + ($dir, $name) = ('.', $filename) + unless ($dir, $name) = ($filename =~ m|(.*)/(.*)|); + $chopped = $dir . '/' . substr($name, 0, 11); + $chopped =~ s|^\./||; + &fatal("There is already a split file named $chopped") + if defined $Chopped{$chopped}; + $Chopped{$chopped} = $filename; # Association split <-> real file + $size = 0; + open(CURPIECE, ">$chopped:$piece") || + &fatal("Can't create $chopped:$piece: $!"); + while (<FILE>) { + if ($size + length($_) > $CHOPSIZE) { + close CURPIECE; + $size{"$chopped:$piece"} = $size; + $comment{"$chopped:$piece"} = "$file_comment (part $piece)"; + push(@files, "$chopped:$piece"); + print "\t$chopped:$piece ($size bytes)\n" if $opt_v; + $size = 0; + $piece++; # AA -> AB, etc... + open(CURPIECE, ">$chopped:$piece") || + &fatal("Can't create $chopped:$piece: $!"); + } + print CURPIECE $_; + $size += length($_); + } + close FILE; + close CURPIECE; + $size{"$chopped:$piece"} = $size; + $comment{"$chopped:$piece"} = "$file_comment (part $piece)"; + push(@files, "$chopped:$piece"); + print "\t$chopped:$piece ($size bytes)\n" if $opt_v; + delete $comment{$filename}; # File split, not in PACKLIST + } else { + $size += 1000000 if $filename =~ /README/; + $size{$filename} = $size; + push(@files, "$filename"); + } + } + + # Build a file PACKNOTES to reconstruct split files + if (defined %Chopped) { + open(PACKNOTES, ">$PACKNOTES") || &fatal("Can't create PACKNOTES: $!"); + foreach (keys %Chopped) { + print PACKNOTES <<EOC; +echo 'Building $Chopped{$_}...' +cat $_:[A-Z][A-Z] > $Chopped{$_} +rm -f $_:[A-Z][A-Z] +EOC + } + close PACKNOTES; + push(@files, $PACKNOTES); + $comment{$PACKNOTES} = 'Script to reconstruct split files'; + ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, + $blksize,$blocks) = stat($PACKNOTES); + $size{$PACKNOTES} = $size; + } + + # Currently, file PACKLIST does not exist, so its size is unknown and + # it cannot be correctly put in one archive. Therefore, we take the + # size of MANIFEST.new, which will give us a good estimation. + push(@files, 'PACKLIST'); + + ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, + $blksize,$blocks) = stat($NEWMANI); + $size{$PACKLIST} = $size; + + sub revnum { $size{$a} < $size{$b} ? 1 : $size{$a} > $size{$b} ? -1 : 0; } + @files = sort revnum @files; + + for (@files) { + $size = $size{$_}; + $size -= 1000000 if /README/; + $i=1; + while (($newtot = int($tot[$i] + $size + $size/40 + $FILEOVERHEAD)) > + $MAXKITSIZE-$KITOVERHEAD && $tot[$i]) { + $i++; + } + $tot[$i] = $newtot; + print "Adding $_ to kit $i giving $newtot bytes\n" if $opt_d; + $kit{$_} = $i; + $list[$i] .= " $_"; + } +} + +# Read manifest file and initialize the %comment array. +sub maniread { + do fatal("You don't have a $NEWMANI file. Run manifake") + unless -f "$NEWMANI"; + open(NEWMANI,$NEWMANI) || do fatal("Can't read $NEWMANI: $!"); + while (<NEWMANI>) { + ($key,$val) = split(' ',$_,1) unless ($key,$val) = /^(\S+)\s+(.*)/; + $comment{$key} = $val; + } + close NEWMANI; +} + +# MANIFEST and MANIFEST.new must say the same thing. Create the +# PACKLIST file (thus avoiding kit numbers in MANIFEST, which causes big +# patches when only re-ordering occurred). Note that PACKLIST should +# not appear in MANIFEST.new (the user may remove it). +sub manimake { + # Add built packlist + $comment{$PACKLIST} = 'Which files came with which kits'; + + open(PACKLIST, ">$PACKLIST") || do fatal("Can't create $PACKLIST: $!"); + print PACKLIST +"After all the $package kits are run you should have the following files: + +Filename Kit Description +-------- --- ----------- +"; + for (sort keys(comment)) { + printf PACKLIST "%-27s %2s %.47s\n", $_, $kit{$_}, $comment{$_}; + } + close PACKLIST; +} + +sub kitleader { + local($plevel); + $plevel = " at patchlevel $patch_level" if $patch_level ne ''; + print KIT <<EOH; +#! /bin/sh +# +# This is $package version $baserev$plevel. +# Make a new directory for the $package sources, cd to it, and run kits 1 up +# to $numkits through sh. When all $numkits kits have been run, read README. +# +echo " " +cat <<EOM +This is $package $baserev$plevel, kit $kitnum (of $numkits): +If this shell archive is complete, the line "End of kit $kitnum (of $numkits)" +will echo at the end. +EOM +export PATH || (echo "Please use sh to unpack this archive." ; kill \$\$) +EOH +} + +sub kittrailer { + $rangelist = ''; + for ($i = 1; $i <= $numkits; $i++) { + $rangelist .= ' ' . $i; + } + print KIT <<EOM; +echo \"End of kit $kitnum (of $numkits)\" +echo \" \" +cat /dev/null >kit${kitnum}isdone +run='' +config='' +for iskit in$rangelist; do + if test -f kit\${iskit}isdone; then + run=\"\$run \$iskit\" + else + todo=\"\$todo \$iskit\" + fi +done +case \$todo in + '') + echo \"You have run all your kits.\" +EOM + if (defined %Chopped) { # Some splitting occurred + print KIT <<EOM; + if test -f $PACKNOTES; then + sh $PACKNOTES + else + echo \"You have to rebuild split files by hand (see $PACKLIST).\" + fi +EOM + } + if (-f "README" && -f "Configure") { + print KIT +" echo \"Please read README and then type Configure.\" + chmod 755 Configure\n"; + } elsif (-f "README") { + print KIT +" echo \"Please read README first.\"\n"; + } elsif (-f "Configure") { + print KIT +" echo \"Please run Configure first.\" + chmod 755 Configure\n"; + } + print KIT <<EOM; + rm -f kit*isdone + ;; + *) echo \"You have run\$run.\" + echo \"You still need to run\$todo.\" + ;; +esac +: Someone might mail this, so exit before signature... +exit 0 +EOM +} + +sub get_patchlevel { + $patch_level = ''; + if (-f 'patchlevel.h') { + open(PL, 'patchlevel.h'); + while (<PL>) { + /^#define\s+PATCHLEVEL\s+(\w+)/ && ($patch_level = $1); + } + close PL; + } +} + +sub distfake { + return if $opt_q; + local($sw); + $sw = 's' unless $opt_v; + mkdir($tmpdir, 0700) || die "Can't create directory $tmpdir.\n"; + print "Building a copy of distribution in $tmpdir...\n" if $opt_v; + system 'perl', '-S', 'patcol', "-a$sw", '-f', $NEWMANI, '-d', $tmpdir; + system 'cp', $NEWMANI, "$tmpdir/$NEWMANI" + unless -f "$tmpdir/$NEWMANI" && !$opt_f; +} + +sub distcopy { + local($sw); # Switch to force patcol to copy checked out files + &makedir($opt_c); + print "Building a copy of distribution in $opt_c...\n" if $opt_v; + $sw = 'c' if $opt_q; + $sw .= 's' unless $opt_v; + system 'perl', '-S', 'patcol', "-aRC$sw", '-f', $NEWMANI, '-d', $opt_c; +} + +sub distrm { + return if $opt_q; + print "Removing distribution in $tmpdir...\n" if $opt_v; + chdir "/"; # Do not stay in removed directory... + system '/bin/rm', '-rf', "$tmpdir"; +} + +sub splitrm { + foreach $base (keys %Chopped) { + print "Removing split files for $base:\n" if $opt_v; + $piece = 'AA'; + while (-f "$base:$piece") { + print "\t$base:$piece\n" if $opt_v; + unlink "$base:$piece"; + $piece++; # AA -> AB, etc... + } + } +} + +sub cleanup { + &distrm if -d $tmpdir; + if ($opt_q) { + &splitrm; # Remove in-place split files + unlink $PACKLIST, $PACKNOTES; + } +} + +sub fatal { + local($reason) = shift(@_); + &cleanup; + die "$reason\n"; +} + +sub set_sig { + local($handler) = @_; + $SIG{'HUP'} = $handler; + $SIG{'INT'} = $handler; + $SIG{'QUIT'} = $handler; + $SIG{'TERM'} = $handler; +} + +sub aborted { + &set_sig('IGNORE'); + $opt_v = 1; # Force verbose message in distrm + &cleanup; + print "Aborted.\n"; + exit 1; +} + +sub usage { + print STDERR <<EOM; +Usage: makedist [-dhqvV] [-c dir] [-s size] [-f manifest] + -c : copy files in dir, do not build any shell archive. + -d : debug mode. + -f : use this file as manifest. + -h : print this help message and exits. + -q : quick mode: use checked-out files. + -s : set maximum pack size. + -v : verbose mode. + -V : print version number and exits. +EOM + exit 1; +} + +sub readpackage { + if (! -f '.package') { + if ( + -f '../.package' || + -f '../../.package' || + -f '../../../.package' || + -f '../../../../.package' + ) { + die "Run in top level directory only.\n"; + } else { + die "No .package file! Run packinit.\n"; + } + } + open(PACKAGE,'.package'); + while (<PACKAGE>) { + next if /^:/; + next if /^#/; + if (($var,$val) = /^\s*(\w+)=(.*)/) { + $val = "\"$val\"" unless $val =~ /^['"]/; + eval "\$$var = $val;"; + } + } + close PACKAGE; +} + +sub manifake { + # make MANIFEST and MANIFEST.new say the same thing + if (! -f $NEWMANI) { + if (-f $MANI) { + open(IN,$MANI) || die "Can't open $MANI"; + open(OUT,">$NEWMANI") || die "Can't create $NEWMANI"; + while (<IN>) { + if (/---/) { + # Everything until now was a header... + close OUT; + open(OUT,">$NEWMANI") || + die "Can't recreate $NEWMANI"; + next; + } + s/^\s*(\S+\s+)[0-9]*\s*(.*)/$1$2/; + print OUT; + print OUT "\n" unless /\n$/; # If no description + } + close IN; + close OUT; + } + else { +die "You need to make a $NEWMANI file, with names and descriptions.\n"; + } + } +} + +package copyright; + +# Read in copyright file +sub init { + local($file) = @_; # Copyright file + undef @copyright; + open(COPYRIGHT, $file) || die "Can't open $file: $!\n"; + chop(@copyright = <COPYRIGHT>); + close COPYRIGHT; +} + +# Reset the automaton for a new file. +sub reset { + $copyright_seen = @copyright ? 0 : 1; + $marker_seen = 0; +} + +# Filter file, line by line, and expand the copyright string. The @COPYRIGHT@ +# symbol may be preceded by some random comment. A leader can be defined and +# will be pre-pended to all the input lines. +sub filter { + local($line, $leader) = @_; # Leader is optional + return $leader . $line if $copyright_seen || $marker_seen; + $marker_seen = 1 if $line =~ /\$Log[:\$]/; + $copyright_seen = 1 if $line =~ /\@COPYRIGHT\@/; + return $leader . $line unless $copyright_seen; + local($comment, $trailer) = $line =~ /^(.*)\@COPYRIGHT\@\s*(.*)/; + $comment = $leader . $comment; + $comment . join("\n$comment", @copyright) . "\n"; +} + +# Filter output of $cmd redirected into $file by expanding copyright, if any. +sub expand { + local($cmd, $file) = @_; + if (@copyright) { + open(CMD,"$cmd|") || die "Can't start '$cmd': $!\n"; + open(OUT, ">$file") || die "Can't create $file: $!\n"; + &reset; + local($_); + while (<CMD>) { + print OUT &filter($_); + } + close OUT; + close CMD; + } else { + system "$cmd > $file"; + die "Command '$cmd' failed!" if $?; + } +} + +package main; + +# Make directories for files +# E.g, for /usr/lib/perl/foo, it will check for all the +# directories /usr, /usr/lib, /usr/lib/perl and make +# them if they do not exist. +sub makedir { + local($_) = shift; + local($dir) = $_; + if (!-d && $_ ne '') { + # Make dirname first + do makedir($_) if s|(.*)/.*|\1|; + mkdir($dir, 0700) if ! -d $dir; + } +} + +# Perform ~name expansion ala ksh... +# (banish csh from your vocabulary ;-) +sub tilda_expand { + local($path) = @_; + return $path unless $path =~ /^~/; + $path =~ s:^~([^/]+):(getpwnam($1))[$[+7]:e; # ~name + $path =~ s:^~:$ENV{'HOME'} || (getpwuid($<))[$[+7]:e; # ~ + $path; +} + +# Set up profile components into %Profile, add any profile-supplied options +# into @ARGV and return the command invocation name. +sub profile { + local($profile) = &tilda_expand($ENV{'DIST'} || '~/.dist_profile'); + local($me) = $0; # Command name + $me =~ s|.*/(.*)|$1|; # Keep only base name + return $me unless -s $profile; + local(*PROFILE); # Local file descriptor + local($options) = ''; # Options we get back from profile + unless (open(PROFILE, $profile)) { + warn "$me: cannot open $profile: $!\n"; + return; + } + local($_); + local($component); + while (<PROFILE>) { + next if /^\s*#/; # Skip comments + next unless /^$me/o; + if (s/^$me://o) { # progname: options + chop; + $options .= $_; # Merge options if more than one line + } + elsif (s/^$me-([^:]+)://o) { # progname-component: value + $component = $1; + chop; + s/^\s+//; # Trim leading and trailing spaces + s/\s+$//; + $Profile{$component} = $_; + } + } + close PROFILE; + return unless $options; + require 'shellwords.pl'; + local(@opts); + eval '@opts = &shellwords($options)'; # Protect against mismatched quotes + unshift(@ARGV, @opts); + return $me; # Return our invocation name +} + diff --git a/bin/manicheck b/bin/manicheck new file mode 100755 index 0000000..3e82030 --- /dev/null +++ b/bin/manicheck @@ -0,0 +1,59 @@ +#!/bin/sh +# $Id: manicheck.SH 1 2006-08-24 12:32:52Z rmanfredi $ +# +# Copyright (c) 1991-1997, 2004-2006, Raphael Manfredi +# +# You may redistribute only under the terms of the Artistic Licence, +# as specified in the README file that comes with the distribution. +# You may reuse parts of this distribution only within the terms of +# that same Artistic Licence; a copy of which may be found at the root +# of the source tree for dist 4.0. +# +# Original Author: Harlan Stenn <har...@mumps.pfcs.com> +# +# $Log: manicheck.SH,v $ +# Revision 3.0.1.1 1993/08/19 06:41:51 ram +# patch1: leading config.sh searching was not aborting properly +# +# Revision 3.0 1993/08/18 12:04:02 ram +# Baseline for dist 3.0 netwide release. +# + +find . ! -type d -print | sed -e ' +s|^./|| +/RCS\//d +/UU\//d +/core$/d +/\.bak$/d +/\.orig$/d +' | sort > check.present + +manifest='' +if test -r MANIFEST.new; then + manifest='MANIFEST.new' +else + if test -r MANIFEST; then + manifest='MANIFEST' + else + echo "No MANIFEST.new or MANIFEST file--don't know what to look for." + fi +fi + +awk '{print $1}' $manifest | sort > check.expected + +comm -23 check.expected check.present > check.want +comm -13 check.expected check.present > check.extra + +rm -f check.expected check.present + +if test -s check.want; then + echo "Some files listed in $manifest are missing; see check.want." +else + rm check.want +fi + +if test -s check.extra; then + echo "Some files not listed in $manifest are present; see check.extra." +else + rm check.extra +fi diff --git a/bin/manifake b/bin/manifake new file mode 100755 index 0000000..86d9302 --- /dev/null +++ b/bin/manifake @@ -0,0 +1,54 @@ +#!/usr/bin/perl + eval "exec perl -i~ -S $0 $*" + if $running_under_some_shell; + +# $Id: manifake.SH 1 2006-08-24 12:32:52Z rmanfredi $ +# +# Copyright (c) 1991-1997, 2004-2006, Raphael Manfredi **** PATCH TRUNCATED AT 2000 LINES -- 67108 NOT SHOWN **** -- perl5 metaconfig repository