diff options
Diffstat (limited to 'doc/history.0')
-rw-r--r-- | doc/history.0 | 660 |
1 files changed, 660 insertions, 0 deletions
diff --git a/doc/history.0 b/doc/history.0 new file mode 100644 index 0000000..5c0037d --- /dev/null +++ b/doc/history.0 @@ -0,0 +1,660 @@ + + + +HISTORY(3) HISTORY(3) + + +NNAAMMEE + history - GNU History Library + +CCOOPPYYRRIIGGHHTT + The GNU History Library is Copyright (C) 1989-2001 by the + Free Software Foundation, Inc. + +DDEESSCCRRIIPPTTIIOONN + Many programs read input from the user a line at a time. + The GNU History library is able to keep track of those + lines, associate arbitrary data with each line, and uti- + lize information from previous lines in composing new + ones. + + +HHIISSTTOORRYY EEXXPPAANNSSIIOONN + The history library supports a history expansion feature + that is identical to the history expansion in bbaasshh.. This + section describes what syntax features are available. + + History expansions introduce words from the history list + into the input stream, making it easy to repeat commands, + insert the arguments to a previous command into the cur- + rent input line, or fix errors in previous commands + quickly. + + History expansion is usually performed immediately after a + complete line is read. It takes place in two parts. The + first is to determine which line from the history list to + use during substitution. The second is to select portions + of that line for inclusion into the current one. The line + selected from the history is the _e_v_e_n_t, and the portions + of that line that are acted upon are _w_o_r_d_s. Various _m_o_d_i_- + _f_i_e_r_s are available to manipulate the selected words. The + line is broken into words in the same fashion as bbaasshh does + when reading input, so that several words that would oth- + erwise be separated are considered one word when sur- + rounded by quotes (see the description of hhiissttoorryy__ttookk-- + eenniizzee(()) below). History expansions are introduced by the + appearance of the history expansion character, which is !! + by default. Only backslash (\\) and single quotes can + quote the history expansion character. + + EEvveenntt DDeessiiggnnaattoorrss + An event designator is a reference to a command line entry + in the history list. + + !! Start a history substitution, except when followed + by a bbllaannkk, newline, = or (. + !!_n Refer to command line _n. + !!--_n Refer to the current command line minus _n. + !!!! Refer to the previous command. This is a synonym + for `!-1'. + + + + +GNU History 4.2 2001 Mar 6 1 + + + + + +HISTORY(3) HISTORY(3) + + + !!_s_t_r_i_n_g + Refer to the most recent command starting with + _s_t_r_i_n_g. + !!??_s_t_r_i_n_g[[??]] + Refer to the most recent command containing _s_t_r_i_n_g. + The trailing ?? may be omitted if _s_t_r_i_n_g is followed + immediately by a newline. + ^^_s_t_r_i_n_g_1^^_s_t_r_i_n_g_2^^ + Quick substitution. Repeat the last command, + replacing _s_t_r_i_n_g_1 with _s_t_r_i_n_g_2. Equivalent to + ``!!:s/_s_t_r_i_n_g_1/_s_t_r_i_n_g_2/'' (see MMooddiiffiieerrss below). + !!## The entire command line typed so far. + + WWoorrdd DDeessiiggnnaattoorrss + Word designators are used to select desired words from the + event. A :: separates the event specification from the + word designator. It may be omitted if the word designator + begins with a ^^, $$, **, --, or %%. Words are numbered from + the beginning of the line, with the first word being + denoted by 0 (zero). Words are inserted into the current + line separated by single spaces. + + 00 ((zzeerroo)) + The zeroth word. For the shell, this is the com- + mand word. + _n The _nth word. + ^^ The first argument. That is, word 1. + $$ The last argument. + %% The word matched by the most recent `?_s_t_r_i_n_g?' + search. + _x--_y A range of words; `-_y' abbreviates `0-_y'. + ** All of the words but the zeroth. This is a synonym + for `_1_-_$'. It is not an error to use ** if there is + just one word in the event; the empty string is + returned in that case. + xx** Abbreviates _x_-_$. + xx-- Abbreviates _x_-_$ like xx**, but omits the last word. + + If a word designator is supplied without an event specifi- + cation, the previous command is used as the event. + + MMooddiiffiieerrss + After the optional word designator, there may appear a + sequence of one or more of the following modifiers, each + preceded by a `:'. + + hh Remove a trailing file name component, leaving only + the head. + tt Remove all leading file name components, leaving + the tail. + rr Remove a trailing suffix of the form _._x_x_x, leaving + the basename. + ee Remove all but the trailing suffix. + pp Print the new command but do not execute it. + + + +GNU History 4.2 2001 Mar 6 2 + + + + + +HISTORY(3) HISTORY(3) + + + qq Quote the substituted words, escaping further sub- + stitutions. + xx Quote the substituted words as with qq, but break + into words at bbllaannkkss and newlines. + ss//_o_l_d//_n_e_w// + Substitute _n_e_w for the first occurrence of _o_l_d in + the event line. Any delimiter can be used in place + of /. The final delimiter is optional if it is the + last character of the event line. The delimiter + may be quoted in _o_l_d and _n_e_w with a single back- + slash. If & appears in _n_e_w, it is replaced by _o_l_d. + A single backslash will quote the &. If _o_l_d is + null, it is set to the last _o_l_d substituted, or, if + no previous history substitutions took place, the + last _s_t_r_i_n_g in a !!??_s_t_r_i_n_g[[??]] search. + && Repeat the previous substitution. + gg Cause changes to be applied over the entire event + line. This is used in conjunction with `::ss' (e.g., + `::ggss//_o_l_d//_n_e_w//') or `::&&'. If used with `::ss', any + delimiter can be used in place of /, and the final + delimiter is optional if it is the last character + of the event line. + +PPRROOGGRRAAMMMMIINNGG WWIITTHH HHIISSTTOORRYY FFUUNNCCTTIIOONNSS + This section describes how to use the History library in + other programs. + + IInnttrroodduuccttiioonn ttoo HHiissttoorryy + The programmer using the History library has available + functions for remembering lines on a history list, associ- + ating arbitrary data with a line, removing lines from the + list, searching through the list for a line containing an + arbitrary text string, and referencing any line in the + list directly. In addition, a history _e_x_p_a_n_s_i_o_n function + is available which provides for a consistent user inter- + face across different programs. + + The user using programs written with the History library + has the benefit of a consistent user interface with a set + of well-known commands for manipulating the text of previ- + ous lines and using that text in new commands. The basic + history manipulation commands are identical to the history + substitution provided by bbaasshh. + + If the programmer desires, he can use the Readline + library, which includes some history manipulation by + default, and has the added advantage of command line edit- + ing. + + Before declaring any functions using any functionality the + History library provides in other code, an application + writer should include the file _<_r_e_a_d_l_i_n_e_/_h_i_s_t_o_r_y_._h_> in any + file that uses the History library's features. It sup- + plies extern declarations for all of the library's public + + + +GNU History 4.2 2001 Mar 6 3 + + + + + +HISTORY(3) HISTORY(3) + + + functions and variables, and declares all of the public + data structures. + + + HHiissttoorryy SSttoorraaggee + The history list is an array of history entries. A his- + tory entry is declared as follows: + + _t_y_p_e_d_e_f _v_o_i_d _* hhiissttddaattaa__tt;; + + typedef struct _hist_entry { + char *line; + histdata_t data; + } HIST_ENTRY; + + The history list itself might therefore be declared as + + _H_I_S_T___E_N_T_R_Y _*_* tthhee__hhiissttoorryy__lliisstt;; + + The state of the History library is encapsulated into a + single structure: + + /* + * A structure used to pass around the current state of the history. + */ + typedef struct _hist_state { + HIST_ENTRY **entries; /* Pointer to the entries themselves. */ + int offset; /* The location pointer within this array. */ + int length; /* Number of elements within this array. */ + int size; /* Number of slots allocated to this array. */ + int flags; + } HISTORY_STATE; + + If the flags member includes HHSS__SSTTIIFFLLEEDD, the history has + been stifled. + +HHiissttoorryy FFuunnccttiioonnss + This section describes the calling sequence for the vari- + ous functions exported by the GNU History library. + + IInniittiiaalliizziinngg HHiissttoorryy aanndd SSttaattee MMaannaaggeemmeenntt + This section describes functions used to initialize and + manage the state of the History library when you want to + use the history functions in your program. + + _v_o_i_d uussiinngg__hhiissttoorryy (_v_o_i_d) + Begin a session in which the history functions might be + used. This initializes the interactive variables. + + _H_I_S_T_O_R_Y___S_T_A_T_E _* hhiissttoorryy__ggeett__hhiissttoorryy__ssttaattee (_v_o_i_d) + Return a structure describing the current state of the + input history. + + _v_o_i_d hhiissttoorryy__sseett__hhiissttoorryy__ssttaattee (_H_I_S_T_O_R_Y___S_T_A_T_E _*_s_t_a_t_e) + + + +GNU History 4.2 2001 Mar 6 4 + + + + + +HISTORY(3) HISTORY(3) + + + Set the state of the history list according to _s_t_a_t_e. + + + HHiissttoorryy LLiisstt MMaannaaggeemmeenntt + These functions manage individual entries on the history + list, or set parameters managing the list itself. + + _v_o_i_d aadddd__hhiissttoorryy (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g) + Place _s_t_r_i_n_g at the end of the history list. The associ- + ated data field (if any) is set to NNUULLLL. + + _H_I_S_T___E_N_T_R_Y _* rreemmoovvee__hhiissttoorryy (_i_n_t _w_h_i_c_h) + Remove history entry at offset _w_h_i_c_h from the history. + The removed element is returned so you can free the line, + data, and containing structure. + + _H_I_S_T___E_N_T_R_Y _* rreeppllaaccee__hhiissttoorryy__eennttrryy (_i_n_t _w_h_i_c_h_, _c_o_n_s_t _c_h_a_r + _*_l_i_n_e_, _h_i_s_t_d_a_t_a___t _d_a_t_a) + Make the history entry at offset _w_h_i_c_h have _l_i_n_e and _d_a_t_a. + This returns the old entry so you can dispose of the data. + In the case of an invalid _w_h_i_c_h, a NNUULLLL pointer is + returned. + + _v_o_i_d cclleeaarr__hhiissttoorryy (_v_o_i_d) + Clear the history list by deleting all the entries. + + _v_o_i_d ssttiiffllee__hhiissttoorryy (_i_n_t _m_a_x) + Stifle the history list, remembering only the last _m_a_x + entries. + + _i_n_t uunnssttiiffllee__hhiissttoorryy (_v_o_i_d) + Stop stifling the history. This returns the previous + amount the history was stifled. The value is positive if + the history was stifled, negative if it wasn't. + + _i_n_t hhiissttoorryy__iiss__ssttiifflleedd (_v_o_i_d) + Returns non-zero if the history is stifled, zero if it is + not. + + + IInnffoorrmmaattiioonn AAbboouutt tthhee HHiissttoorryy LLiisstt + These functions return information about the entire his- + tory list or individual list entries. + + _H_I_S_T___E_N_T_R_Y _*_* hhiissttoorryy__lliisstt (_v_o_i_d) + Return a NNUULLLL terminated array of _H_I_S_T___E_N_T_R_Y _* which is + the current input history. Element 0 of this list is the + beginning of time. If there is no history, return NNUULLLL. + + _i_n_t wwhheerree__hhiissttoorryy (_v_o_i_d) + Returns the offset of the current history element. + + _H_I_S_T___E_N_T_R_Y _* ccuurrrreenntt__hhiissttoorryy (_v_o_i_d) + Return the history entry at the current position, as + + + +GNU History 4.2 2001 Mar 6 5 + + + + + +HISTORY(3) HISTORY(3) + + + determined by wwhheerree__hhiissttoorryy(()). If there is no entry + there, return a NNUULLLL pointer. + + _H_I_S_T___E_N_T_R_Y _* hhiissttoorryy__ggeett (_i_n_t _o_f_f_s_e_t) + Return the history entry at position _o_f_f_s_e_t, starting from + hhiissttoorryy__bbaassee. If there is no entry there, or if _o_f_f_s_e_t is + greater than the history length, return a NNUULLLL pointer. + + _i_n_t hhiissttoorryy__ttoottaall__bbyytteess (_v_o_i_d) + Return the number of bytes that the primary history + entries are using. This function returns the sum of the + lengths of all the lines in the history. + + + MMoovviinngg AArroouunndd tthhee HHiissttoorryy LLiisstt + These functions allow the current index into the history + list to be set or changed. + + _i_n_t hhiissttoorryy__sseett__ppooss (_i_n_t _p_o_s) + Set the current history offset to _p_o_s, an absolute index + into the list. Returns 1 on success, 0 if _p_o_s is less + than zero or greater than the number of history entries. + + _H_I_S_T___E_N_T_R_Y _* pprreevviioouuss__hhiissttoorryy (_v_o_i_d) + Back up the current history offset to the previous history + entry, and return a pointer to that entry. If there is no + previous entry, return a NNUULLLL pointer. + + _H_I_S_T___E_N_T_R_Y _* nneexxtt__hhiissttoorryy (_v_o_i_d) + Move the current history offset forward to the next his- + tory entry, and return the a pointer to that entry. If + there is no next entry, return a NNUULLLL pointer. + + + SSeeaarrcchhiinngg tthhee HHiissttoorryy LLiisstt + These functions allow searching of the history list for + entries containing a specific string. Searching may be + performed both forward and backward from the current his- + tory position. The search may be _a_n_c_h_o_r_e_d, meaning that + the string must match at the beginning of the history + entry. + + _i_n_t hhiissttoorryy__sseeaarrcchh (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g_, _i_n_t _d_i_r_e_c_t_i_o_n) + Search the history for _s_t_r_i_n_g, starting at the current + history offset. If _d_i_r_e_c_t_i_o_n is less than 0, then the + search is through previous entries, otherwise through sub- + sequent entries. If _s_t_r_i_n_g is found, then the current + history index is set to that history entry, and the value + returned is the offset in the line of the entry where + _s_t_r_i_n_g was found. Otherwise, nothing is changed, and a -1 + is returned. + + _i_n_t hhiissttoorryy__sseeaarrcchh__pprreeffiixx (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g_, _i_n_t + _d_i_r_e_c_t_i_o_n) + + + +GNU History 4.2 2001 Mar 6 6 + + + + + +HISTORY(3) HISTORY(3) + + + Search the history for _s_t_r_i_n_g, starting at the current + history offset. The search is anchored: matching lines + must begin with _s_t_r_i_n_g. If _d_i_r_e_c_t_i_o_n is less than 0, then + the search is through previous entries, otherwise through + subsequent entries. If _s_t_r_i_n_g is found, then the current + history index is set to that entry, and the return value + is 0. Otherwise, nothing is changed, and a -1 is + returned. + + _i_n_t hhiissttoorryy__sseeaarrcchh__ppooss (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g_, _i_n_t _d_i_r_e_c_t_i_o_n_, + _i_n_t _p_o_s) + Search for _s_t_r_i_n_g in the history list, starting at _p_o_s, an + absolute index into the list. If _d_i_r_e_c_t_i_o_n is negative, + the search proceeds backward from _p_o_s, otherwise forward. + Returns the absolute index of the history element where + _s_t_r_i_n_g was found, or -1 otherwise. + + + MMaannaaggiinngg tthhee HHiissttoorryy FFiillee + The History library can read the history from and write it + to a file. This section documents the functions for man- + aging a history file. + + _i_n_t rreeaadd__hhiissttoorryy (_c_o_n_s_t _c_h_a_r _*_f_i_l_e_n_a_m_e) + Add the contents of _f_i_l_e_n_a_m_e to the history list, a line + at a time. If _f_i_l_e_n_a_m_e is NNUULLLL, then read from _~_/_._h_i_s_- + _t_o_r_y. Returns 0 if successful, or eerrrrnnoo if not. + + _i_n_t rreeaadd__hhiissttoorryy__rraannggee (_c_o_n_s_t _c_h_a_r _*_f_i_l_e_n_a_m_e_, _i_n_t _f_r_o_m_, + _i_n_t _t_o) + Read a range of lines from _f_i_l_e_n_a_m_e, adding them to the + history list. Start reading at line _f_r_o_m and end at _t_o. + If _f_r_o_m is zero, start at the beginning. If _t_o is less + than _f_r_o_m, then read until the end of the file. If _f_i_l_e_- + _n_a_m_e is NNUULLLL, then read from _~_/_._h_i_s_t_o_r_y. Returns 0 if + successful, or eerrrrnnoo if not. + + _i_n_t wwrriittee__hhiissttoorryy (_c_o_n_s_t _c_h_a_r _*_f_i_l_e_n_a_m_e) + Write the current history to _f_i_l_e_n_a_m_e, overwriting _f_i_l_e_- + _n_a_m_e if necessary. If _f_i_l_e_n_a_m_e is NNUULLLL, then write the + history list to _~_/_._h_i_s_t_o_r_y. Returns 0 on success, or + eerrrrnnoo on a read or write error. + + + _i_n_t aappppeenndd__hhiissttoorryy (_i_n_t _n_e_l_e_m_e_n_t_s_, _c_o_n_s_t _c_h_a_r _*_f_i_l_e_n_a_m_e) + Append the last _n_e_l_e_m_e_n_t_s of the history list to _f_i_l_e_n_a_m_e. + If _f_i_l_e_n_a_m_e is NNUULLLL, then append to _~_/_._h_i_s_t_o_r_y. Returns 0 + on success, or eerrrrnnoo on a read or write error. + + _i_n_t hhiissttoorryy__ttrruunnccaattee__ffiillee (_c_o_n_s_t _c_h_a_r _*_f_i_l_e_n_a_m_e_, _i_n_t + _n_l_i_n_e_s) + Truncate the history file _f_i_l_e_n_a_m_e, leaving only the last + _n_l_i_n_e_s lines. If _f_i_l_e_n_a_m_e is NNUULLLL, then _~_/_._h_i_s_t_o_r_y is + truncated. Returns 0 on success, or eerrrrnnoo on failure. + + + +GNU History 4.2 2001 Mar 6 7 + + + + + +HISTORY(3) HISTORY(3) + + + HHiissttoorryy EExxppaannssiioonn + These functions implement history expansion. + + _i_n_t hhiissttoorryy__eexxppaanndd (_c_h_a_r _*_s_t_r_i_n_g_, _c_h_a_r _*_*_o_u_t_p_u_t) + Expand _s_t_r_i_n_g, placing the result into _o_u_t_p_u_t, a pointer + to a string. Returns: + 0 If no expansions took place (or, if the only + change in the text was the removal of escape + characters preceding the history expansion + character); + 1 if expansions did take place; + -1 if there was an error in expansion; + 2 if the returned line should be displayed, + but not executed, as with the ::pp modifier. + If an error ocurred in expansion, then _o_u_t_p_u_t contains a + descriptive error message. + + _c_h_a_r _* ggeett__hhiissttoorryy__eevveenntt (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g_, _i_n_t _*_c_i_n_d_e_x_, + _i_n_t _q_c_h_a_r) + Returns the text of the history event beginning at _s_t_r_i_n_g + + _*_c_i_n_d_e_x. _*_c_i_n_d_e_x is modified to point to after the + event specifier. At function entry, _c_i_n_d_e_x points to the + index into _s_t_r_i_n_g where the history event specification + begins. _q_c_h_a_r is a character that is allowed to end the + event specification in addition to the ``normal'' termi- + nating characters. + + _c_h_a_r _*_* hhiissttoorryy__ttookkeenniizzee (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g) + Return an array of tokens parsed out of _s_t_r_i_n_g, much as + the shell might. The tokens are split on the characters + in the hhiissttoorryy__wwoorrdd__ddeelliimmiitteerrss variable, and shell quoting + conventions are obeyed. + + _c_h_a_r _* hhiissttoorryy__aarrgg__eexxttrraacctt (_i_n_t _f_i_r_s_t_, _i_n_t _l_a_s_t_, _c_o_n_s_t + _c_h_a_r _*_s_t_r_i_n_g) + Extract a string segment consisting of the _f_i_r_s_t through + _l_a_s_t arguments present in _s_t_r_i_n_g. Arguments are split + using hhiissttoorryy__ttookkeenniizzee(()). + + + HHiissttoorryy VVaarriiaabblleess + This section describes the externally-visible variables + exported by the GNU History Library. + + _i_n_t hhiissttoorryy__bbaassee + The logical offset of the first entry in the history list. + + _i_n_t hhiissttoorryy__lleennggtthh + The number of entries currently stored in the history + list. + + _i_n_t hhiissttoorryy__mmaaxx__eennttrriieess + The maximum number of history entries. This must be + changed using ssttiiffllee__hhiissttoorryy(()). + + + +GNU History 4.2 2001 Mar 6 8 + + + + + +HISTORY(3) HISTORY(3) + + + _c_h_a_r hhiissttoorryy__eexxppaannssiioonn__cchhaarr + The character that introduces a history event. The + default is !!. Setting this to 0 inhibits history expan- + sion. + + _c_h_a_r hhiissttoorryy__ssuubbsstt__cchhaarr + The character that invokes word substitution if found at + the start of a line. The default is ^^. + + _c_h_a_r hhiissttoorryy__ccoommmmeenntt__cchhaarr + During tokenization, if this character is seen as the + first character of a word, then it and all subsequent + characters up to a newline are ignored, suppressing his- + tory expansion for the remainder of the line. This is + disabled by default. + + _c_h_a_r _* hhiissttoorryy__wwoorrdd__ddeelliimmiitteerrss + The characters that separate tokens for hhiissttoorryy__ttookk-- + eenniizzee(()). The default value is "" \\tt\\nn(())<<>>;;&&||"". + + _c_h_a_r _* hhiissttoorryy__nnoo__eexxppaanndd__cchhaarrss + The list of characters which inhibit history expansion if + found immediately following hhiissttoorryy__eexxppaannssiioonn__cchhaarr. The + default is space, tab, newline, \\rr, and ==. + + _c_h_a_r _* hhiissttoorryy__sseeaarrcchh__ddeelliimmiitteerr__cchhaarrss + The list of additional characters which can delimit a his- + tory search string, in addition to space, tab, _: and _? in + the case of a substring search. The default is empty. + + _i_n_t hhiissttoorryy__qquuootteess__iinnhhiibbiitt__eexxppaannssiioonn + If non-zero, single-quoted words are not scanned for the + history expansion character. The default value is 0. + + _r_l___l_i_n_e_b_u_f___f_u_n_c___t _* hhiissttoorryy__iinnhhiibbiitt__eexxppaannssiioonn__ffuunnccttiioonn + This should be set to the address of a function that takes + two arguments: a cchhaarr ** (_s_t_r_i_n_g) and an iinntt index into + that string (_i). It should return a non-zero value if the + history expansion starting at _s_t_r_i_n_g_[_i_] should not be per- + formed; zero if the expansion should be done. It is + intended for use by applications like bbaasshh that use the + history expansion character for additional purposes. By + default, this variable is set to NNUULLLL. + +FFIILLEESS + _~_/_._h_i_s_t_o_r_y + Default filename for reading and writing saved his- + tory + +SSEEEE AALLSSOO + _T_h_e _G_n_u _R_e_a_d_l_i_n_e _L_i_b_r_a_r_y, Brian Fox and Chet Ramey + _T_h_e _G_n_u _H_i_s_t_o_r_y _L_i_b_r_a_r_y, Brian Fox and Chet Ramey + _b_a_s_h(1) + + + + +GNU History 4.2 2001 Mar 6 9 + + + + + +HISTORY(3) HISTORY(3) + + + _r_e_a_d_l_i_n_e(3) + +AAUUTTHHOORRSS + Brian Fox, Free Software Foundation + bfox@gnu.org + + Chet Ramey, Case Western Reserve University + chet@ins.CWRU.Edu + +BBUUGG RREEPPOORRTTSS + If you find a bug in the hhiissttoorryy library, you should + report it. But first, you should make sure that it really + is a bug, and that it appears in the latest version of the + hhiissttoorryy library that you have. + + Once you have determined that a bug actually exists, mail + a bug report to _b_u_g_-_r_e_a_d_l_i_n_e@_g_n_u_._o_r_g. If you have a fix, + you are welcome to mail that as well! Suggestions and + `philosophical' bug reports may be mailed to _b_u_g_-_r_e_a_d_- + _l_i_n_e@_g_n_u_._o_r_g or posted to the Usenet newsgroup + ggnnuu..bbaasshh..bbuugg. + + Comments and bug reports concerning this manual page + should be directed to _c_h_e_t_@_i_n_s_._C_W_R_U_._E_d_u. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +GNU History 4.2 2001 Mar 6 10 + + |