⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 text.tex

📁 早期freebsd实现
💻 TEX
📖 第 1 页 / 共 4 页
字号:
programs to accomplish complicated or specialized tasks.\tagdiagram{7}{The \pgm{mpick} Script}{mpick}For example,in the \MH/ distribution there is a shell scriptcalled \pgm{mpick} (shown in Figure~\mpick)which tries to locate all the messages which pertain to a given discussion,by looking at the \eg{Message-ID:} and \eg{In-reply-to:} headers,to find matching message-ids.%\nfootnote{Note that the shell scripts included in the \MH/ distributionare written for the {\it Bourne} shell,and have a `:' as the first character of the first line,so they will be portable to all versions of \unix/,not just those which support theBerkeley `\#!' enhancement.}\tagdiagram{8}{The \pgm{append} Editor}{appended}Unfortunately, some parts of \MH/ are somewhat monolithic.An example of this is the \whatnow/ prompt.There are only a few options at this prompt,and one cannot give a normal shell command.Some \MH/ users seem to feel that more options should be added tothe \whatnow/ prompt, such as an \pgm{insert-file} option.It was argued that just about any editor would allow you to insert a file, and another \whatnow/ option was not needed.These users persisted, however, so theproblem was solved, by writing a trivial shellscript ``editor'' (see Figure~\appended)which could be invoked by the \pgm{edit} option:\example What now?\ edit\ append\ filename\endexampleA better interface at this point is really needed, however.One possibility is to simply pass any unrecognized commands onto a shell for interpretation, supplying the path name of the draft fileas an argument.A solution which shows more promise is to give you a sub-shell{\it instead} of the \whatnow/ prompt,and setup certain envariables so thatthe \MH/ commands would act upon the \file{draft} by default.For example, \pgm{show} with no \arg{msgs} argumentswould show the draft instead of the current message.This alternative has recently been implemented and is under testing.\section{The \MH/ Distribution}			% mtrThe \mh5 distribution is now briefly described,both in terms of static configuration methodsand dynamic tailoring.Appendix~B describes the mechanics of receiving an \mh5 distribution.\subsection{Configurable \MH/}			% jlrThe \MH/ distribution currently runs on a large number of different \unix/versions,ranging from MicroSoft XENIX to Berkeley 4.2\bsd/.All the code which is specific to a particular target environment isenabled via the C-preprocessor \eg{\#ifdef} mechanism,so compilation under different versions of \unix/ is trivial.There are,however,a large number of compile-time options which may vary from site to site,so an automated configuration method was needed.\tagdiagram{9}{Sample \MH/ Configuration File}{mhconfig}The \MH/-installer must create a configuration file,which contains a list of the compile-time optionsand the values which are desired for them.Compile-time options include the installation location for \MH/,what kind of message transport system is to be used,and the default editor for the installation.An example of such a configuration file is shown in Figure~\mhconfig.After creating this file (several examples are included in the distribution),the installer runs the \pgm{mhconfig} program,which customizes the \file{Makefile\/}s and some of the programs,for that site's particular installation.No hand-editing of any source code should be necessary,under normal circumstances.\subsection{Interface to the Message Transport System}	% jlr & mtr\MH/ will run with a number of message transport systems,including \SendMail/, \MMDFII/, and a small stand-alone system.One flexible method of posting mail is through an SMTP connection.There are a couple of major wins in using this configuration: First,none of the \MH/ programs need to know where the interface programs tothe message transport system are located,which makes them easier to move between systems.Second,mail can be posted on relay hosts,and the local host of an \MH/ user may not need a message transport system atall (as alluded to in the preceeding discussion on the POP).\tagdiagram{10}{Sample MTS Tailor File}{mtstailor}Those parts of \MH/ which interact with the local message transport agentread additional tailoring information when they start.%\nfootnote{This simple facility is based on a more extensivetailoring capability found in \MMDFII/.}This information includesthe location of standard and alternate maildrops,maildrop delimiter strings,the locking directory and locking style,and other tailoring information specific for the particularmessage transport system in use(e.g., the default server search-list when mail is posted with the SMTP).In most cases,by using a tailor file,each site running a similar \MH/ configuration is able to simply transfer\MH/ binaries between hosts.An example of such a tailor file is shown in Figure~\mtstailor.A continuing question which is often raised is how intelligent should useragents (like \MH/ and UCB \pgm{Mail}\/) be with respect to the environment inwhich they operate.At present, \MH/ likes to determine the official hostnames for addresses when posting mail.Many argue that this is improper or unnecessary behavior for a user agent,and that the local message transport agent should handle these functions.Unfortunately,this implies that the message transport agent should munge headers when mailis posted to remove local host aliases and only permit address fields withfully-qualified addresses.Sadly, neither \SendMail/ nor \MMDFII/ really gets this right(flames to \file{/dev/null} please).The current \MH/ maintainers believe that the resolution of host aliases toofficial names should be a well-supported interface with the local messagetransport agent.However, to provide equal time to those who hold opposite views,\MH/ supports a configuration option called \eg{DUMB} which disables \MH/'sattempts to resolve addresses into fully-qualified strings.\section{Concluding Remarks}			% jlr and mtrWhile \MH/ has undergone significant development sincethe originalRand release, the authors havetried to keep the fundamental concepts of\MH/ unchanged.						% specific vs. generalThe authors have continually had to battle againstwell-meaning \MH/ users who wanted to make \MH/more like other (less powerful) user agents.More and more ``features'' were often suggested for \MH/,usually at the expense of making \MH/ less general, and more specific.In nearly all cases, the ``features'' which these users wantedwere already present in \MH/ in a slightly different form,or could be realized by simply writing a short shell script.A classic example is the repeated requests by one user to have \pgm{dist}take a list of messages rather than a single message and distribute each oneof them in turn.A simple shell script which called \pgm{dist} repeatedly,perhaps with ``canned'' arguments so the user typed in addressing informationonly once, would easily meet this request.						% generalityA number of \MH/ comands have a large number of options.When adding options, the authors have tried to make the optionsgeneral, while still accomodating the requests of specific users.An example of a specific request which was implemented as ageneral feature is the \eg{Previous-Sequence} profile entry(mentioned above).If you use this profile entry, every \MH/ command is forced to writeout \context/ changes, making every command somewhat slower.Since only a few users wanted this capability, it was implementedin such a way that users who didn't want it, didn't have to paythe cost of slowing down every \MH/ command.						% naive user :: MH\MH/ has a powerful tailoring capability provided by the \profile/.Using profile entries, users maycustomize their own environment without affecting others.Novice users often take advantage of the \MH/-tailoringcapabilities to try to make \MH/ work similarly toother user agents they've used.This has the advantage of allowing them to quickly beginusing \MH/ to handle their mail.However, since these novice users don't take advantange of all thecapabilities of \MH/,they frequently will complain about things they think can'tbe done with \MH/, or could be done ``better'' some other way.Fortunately,as these users become more experienced with both \MH/ and \unix/,they can modify their environment to take better advantage ofall of \MH/'s capabilities.Novice \MH/ users who see features lackingare encouraged to take a better look at what \MH/ {\it can} do,instead of trying to make \MH/ into something it isn't.This may sound rather inflammatory,but it would really be a much nicer world for us all if users of softwaresystems would read the manual prior to asking questions.						% speed considerationFor a moment, let's consider the evolution of one \MH/ feature which hasproved itself to be very useful.As users began employing \MH/ to handle their mail,the number of messages that could be processedin a given amount of time increased greatly.As the volume of messages increased however,it became clear that some \MH/ operations were too slow,in particular the interaction with the (slow) message transport system.To overcome this problem, the \pgm{push} optionwas added at the \whatnow/ prompt.Originally, this option was hidden from novice usersand did little more than send the message in the background:any output generated bythe background \pgm{send} process would be printedasyncronously on the terminal.If a message failed posting with the message transport system,it would simply be left in the \file{draft} file.Gradually, other features were added to \pgm{push}.Since users wanted to be able to send more than one draftat a time, \pgm{push} was changed to optionallyrename the draft file before posting it.(This is what the hidden \switch{unique} option does.)Having message transport system diagnosticswritten asyncronously on the user's terminal was annoying,so \pgm{push} was made to intercept these diagnostics,and mail the user a report containing them.Although the diagnostic report mailed back by \pgm{push} containsthe name of the draft which failed,a useful added feature was the ability to have \pgm{push}include the failed draft as well.Eventually, the draft-folder mechanism was implemented to makehandling multiple message drafts much easier.\subsection{TODO}				% mtrThere are, no doubt, a number of improvements which could be made to \MH/.At the present time,what further development should \MH/ suffer?Although not by any means inclusive,here's a list:\smallskip{\advance\leftskip by\parindent\item{1.} Performance Enhancements\hbreakHardware gets faster all the time, but people always complain that softwareis too slow.Owing to its user interface style,\MH/ is somewhat slower than monolithic programs like UCB \pgm{Mail}.It would be nice if \MH/ could be tuned or accelerated somehow.\item{2.} Port to System~5\hbreak\MH/ runs on 4.2\bsd/~\unix/ and Version~7 variants.It should not be difficult to port \MH/ to a SYS5 environment.This should significantly increase the number of hostson which \MH/ can run.The authors,lacking a SYS5 machine (and experience with SYS5) to perform the port,are actively seeking a System~5 guru to attempt this feat.\item{3.} Interface to the Network News\hbreakNot all sites that run \MH/ are in the ARPA Internet,and as such the UCI BBoards facility may not be of much use to them.A good \MH/ interface to the network news would allow users on hosts with anews feed to employ the same interface for reading and sending both mail andnews.\item{4.} Programmed Instruction for Beginners\hbreakThe complexity of \MH/ is often intimidating to new users.It would be nice to develop a set of \pgm{learn} lessons for those users whodon't like \pgm{man} pages and non-interactive tutorials.\item{5.} Message List Expansion\hbreakAt present, when a list of messages is given to an \MH/ command,it expands the list and processes each message in numerical orderrather than the order in which the messages were given(e.g., \eg{show\ 2\ 1} \pgm{show\/}s message~1and then message~2).It would be nice if \MH/ processed messages in the orderthey were given.\item{6.} Context Changes\hbreakIn nearly all cases,an \MH/ command does not write out context changes until it is about to exitsuccessfully.There is some controversy as to whether this is the correct behaviorin all cases.Some argue that once an \MH/ command has fully parsed its argument list,the context should be updated.\par}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -