Diff for /doc/homework/homework5.html between versions 1.8 and 1.23

version 1.8, 2001/07/13 16:15:01 version 1.23, 2005/04/07 06:56:20
Line 57 Line 57
     </ul>      </ul>
   </li>    </li>
   <li>    <li>
       <b>&lt;parameter&gt;</b> exactly the same as
       &lt;responseparam&gt; currently, but should not appear
       inside of a &lt;*response&gt;
     </li>
     <li>
     <b>&lt;numericalresponse&gt;</b> implements a numerical      <b>&lt;numericalresponse&gt;</b> implements a numerical
     answer, it needs an internal <b>&lt;textline&gt;</b> for      answer, it needs an internal <b>&lt;textline&gt;</b> for
     the response to go in. It checks all styles of numerical      the response to go in. It checks all styles of numerical
Line 83 Line 88
     </ul>      </ul>
   <li>    <li>
     <b>&lt;essayresponse&gt;</b> implements a ungraded large      <b>&lt;essayresponse&gt;</b> implements a ungraded large
     text response, it need an internal <b>&lt;textarea&gt;</b>      text response, it need an internal <b>&lt;textfield&gt;</b>
     for the response to go in.      for the response to go in.
   </li>    </li>
   <li>    <li>
Line 122 Line 127
     <i>value</i> of a &lt;foil&gt;can only be "true" or      <i>value</i> of a &lt;foil&gt;can only be "true" or
     "false" or "unused"      "false" or "unused"
   </li>    </li>
     <li>
       <b>&lt;dataresponse&gt;</b> implements a straight data
       storage entry idea, needs and interveing input tag like
       &lt;textline&gt; to work correctly.<br>
       Arguments:
       <ul>
         <li>
    <i>name</i> internal name for the value, it will have
    the part id and respose id added on to it
         </li>
         <li>
    <i>type</i> type of data stored in this response
    field, should be one of the types supported by
    parameter.html
         </li> 
         <li>
    <i>display</i> a string that will be used to describe
    the field when interfacing with humans
         </li>
       </ul>
     </li>
     <li>
       <p>
         <b>&lt;externalresponse&gt;</b> implements the ability to have
         an external program grade a response, expects either a
         &lt;textline&gt; or &lt;textfield&gt; inside the tag. <br />
       </p>
       Arguments:
       <ul>
         <li>
    <i>url</i> the url to submit the answer and form to,
    does not need to be a LON-CAPA machine.
         </li>
         <li>
    <i>answer</i> a string or scalar variable that can
    encode something that should encode the correct
    answer, in some cases this may be nothing.
         </li>
         <li>
    <i>form</i> a hash variable name that will be
    submitted to the remote site as a HTTP form.
         </li>
       </ul>
       <p>
         The response of the remote server needs to be in XML as follows.
       </p>
       <pre>
   &lt;loncapagrade&gt;
       &lt;awardetail&gt;
   CORRECT
       &lt;/awardetail&gt;
       &lt;message&gt;
   A message to be shown to the students
       &lt;/message&gt;
   &lt;/loncapagrade&gt;
       </pre>
       <ul>
         <li>
    <b>&lt;loncapagrade&gt;</b> no arguments but must
    surround the response.
         </li>
         <li>
    <b>&lt;awardetail&gt;</b> required inner tag, the
    response inside must be one of the detailed responses
    that appears in the data storage documentation
    (CVS:loncapa/doce/homework/datastorage)
         </li>
         <li>
    <b>&lt;message&gt;</b> optional message to have shown
    to the student
         </li>
       </ul>
     </li>
  </ul>   </ul>
  <li>   <li>
  <a name="foil">Foil Structure Tags</a>   <a name="foil">Foil Structure Tags</a>
Line 171 Line 249
     <i>name</i> which should be set to the value of which      <i>name</i> which should be set to the value of which
     &lt;hintpart&gt; will be shown.       &lt;hintpart&gt; will be shown. 
   </li>    </li>
     <li>
       <b>&lt;stringhint&gt;</b> has all the arguments that
       &lt;stringresponse&gt;, does and the required attribute
       <i>name</i> which should be set to the value of which
       &lt;hintpart&gt; will be shown. 
     </li>
     <li>
       <b>&lt;formulahint&gt;</b> has all the arguments that
       &lt;formularesponse&gt;, does and the required attribute
       <i>name</i> which should be set to the value of which
       &lt;hintpart&gt; will be shown. 
     </li>
     <li>
       <b>&lt;optionhint&gt;</b> required attribute <i>name</i>
       which should be set to the value of which &lt;hintpart&gt;
       will be shown.
     </li>
     <li>
       <b>&lt;radiobuttonhint&gt;</b> has the required attribute
       <i>name</i> which should be set to the value of which
       &lt;hintpart&gt; will be shown, and <i>answer</i> which
       should be a two element list, frist the type (foil or
       concept) and then either the foil's name or the concept's
       string
     </li>
  </ul>   </ul>
       </li>        </li>
       <li>        <li>
Line 182 Line 285
  </p>   </p>
  <ul>   <ul>
   <li>    <li>
     <b>&lt;textarea&gt;</b> creates a Large text input box, If      <b>&lt;textfield&gt;</b> creates a Large text input box, If
     data appears between the start and end tags, the data will      data appears between the start and end tags, the data will
     appear i the textarea if the student has not yet made a      appear in the textfield if the student has not yet made a
     submission. Additionally it takes two arguments <i>rows</i>      submission. Additionally it takes two arguments <i>rows</i>
     and <i>cols</i> which control the height and width of the      and <i>cols</i> which control the height and width of the
     area respectively. It defaults to 10 and 80.      area respectively. It defaults to 10 and 80.
Line 203 Line 306
  </p>   </p>
  <ul>   <ul>
   <li>    <li>
       <b>&lt;standalone&gt;</b> everything in between the start
       and end tag is shown only on the web, and only if the
       resource is not part of a course.
     </li>
     <li>
     <b>&lt;displayduedate&gt;</b> this will insert the current      <b>&lt;displayduedate&gt;</b> this will insert the current
     duedate if one is set into the document. It is generated      duedate if one is set into the document. It is generated
     to be inside a table of 1x1 elements      to be inside a table of 1x1 elements
Line 215 Line 323
     <b>&lt;window&gt;</b> the text in between is put in a      <b>&lt;window&gt;</b> the text in between is put in a
     popup javascript window      popup javascript window
   </li>    </li>
     <li>
       <b>&lt;m&gt;</b> the inside text is LaTeX, and is
       converted to HTML (or MathML) on the fly, if the argument
       <i>eval</i> is set to "on" the intervening text will have
       a perl var expansion done to it before being converted.
     </li>
     <li>
       <b>&lt;randomlabel&gt;</b> shows a specified image with
       images or text labels randomly assigned to a set of
       specific locations, those locations may also have values
       assigned to them. There is a hash generated conating the
       mapping of labels to locations, labels to values, and
       locations to values. Example:
       <pre>
    &lt;randomlabel bgimg=&quot;URL&quot; width=&quot;12&quot; height=&quot;45&quot; texwidth=&quot;50&quot;&gt;
       &lt;labelgroup name=&quot;GroupOne&quot; type=&quot;image&quot;&gt;
         &lt;location x=&quot;123&quot; y=&quot;456&quot; value=&quot;10&quot; /&gt;
         &lt;location x=&quot;321&quot; y=&quot;654&quot; value=&quot;20&quot; /&gt;
         &lt;location x=&quot;213&quot; y=&quot;546&quot; value=&quot;13&quot; /&gt;
         &lt;label description=&quot;TEXT-1&quot;&gt;IMG-URL&lt;/label&gt;
         &lt;label description=&quot;TEXT-2&quot;&gt;IMG-URL&lt;/label&gt;
         &lt;label description=&quot;TEXT-3&quot;&gt;IMG-URL&lt;/label&gt;
       &lt;/labelgroup&gt;
       &lt;labelgroup name=&quot;GroupTwo&quot; type=&quot;text&quot;&gt;
         &lt;location x=&quot;12&quot; y=&quot;45&quot; /&gt;
         &lt;location x=&quot;32&quot; y=&quot;65&quot; /&gt;
         &lt;location x=&quot;21&quot; y=&quot;54&quot; /&gt;
         &lt;label&gt;TEXT-1&lt;/label&gt;
         &lt;label&gt;TEXT-2&lt;/label&gt;
         &lt;label&gt;TEXT-3&lt;/label&gt;
       &lt;/labelgroup&gt;
      &lt;/randomlabel&gt;
       </pre>
       Arguments:
       <ul>
         <li>
    <i>bgimg</i> either a fully qualified URL for an
    external image, or a loncapa resource, it supports
    relative references (../images/apicture.gif), the
    image must either be a GIF or JPEG
         </li>
         <li>
    <i>width</i> the width of the image in pixels
         </li>
         <li>
    <i>height</i> the height of the image in pixels
         </li>
         <li>
    <i>texwidth</i> the width of the image in millimeters
         </li>
       </ul>
       Internal tags:
       <ul>
         <li>
    <b>&lt;labelgroup&gt;</b> 1 required, multiple
    allowed. Declares a group of locations and labels
    associated with them.  <br />Arguments:
    <ul>
     <li>
       <i>name</i> this is the name of the group, a hash
       with this name will be generated holding the
       mappings for later use in the problem. For each
       location a value will be set for which label is
       there, (EX. $hash{'1'}="TEXT-2"). For locations
       with values the hash will contain 2 items, a
       location to value mapping ($hash{'value_1'}=10),
       and a label to value mapping
       ($hash{'labelvalue_2'}=10). For all image style of
       labels there will also be a label description to
       label URL mapping ($hash{'image_2'}=IMG-URL). Also
       the entry 'numlocations will be set to the total
       number of locations that exist.
       (Note that locations and labels start counting from 1.)
     </li>
     <li>
       <i>type</i> the type of labels in this group,
       either 'image' or 'text'
     </li>
    </ul>
         </li>
         <li>
    <b>&lt;location&gt;</b> declares a location on the
    image that a label should appear at <br />Arguments:
    <ul>
     <li>
       <i>x</i> the x value of the location in pixels 
     </li>
     <li>
       <i>y</i> the y value of the location in pixels 
     </li>
     <li>
       <i>value</i> a scalar value to associate at this
       location (optional)
     </li>
    </ul>
         </li>
         <li>
    <b>&lt;label&gt;</b> declaration of a label, if this
    is a text type labelgroup the internal text should be
    the text of the label (HTML is not currently
    supported), if this is an image type of label the
    internal text must be a LON-CAPA resource
    specification, and the description filed must be set.
    <br />Arguments:
    <ul>
     <li>
       <i>description</i> a required field for image
       labels, it will be used when setting values in the
       hash.
     </li>
    </ul>
         </li>
       </ul>
     </li>
  </ul>   </ul>
       </li>        </li>
       <li>        <li>
  Scripting   Scripting
  <p>        <p>
   These tags allow the document to behave programatically   These tags allow the document to behave programatically
  </p>        </p>
  <ul>        <ul>
   <li>   <li>
     <b>&lt;display&gt;</b> the intervening perl script is      <b>&lt;display&gt;</b> the intervening perl script is
     evaluated in the safe space and the return value of the      evaluated in the safe space and the return value of the
     script replaces the entire tag      script replaces the entire tag
Line 267 Line 489
   </li>    </li>
   <li>    <li>
     <b>&lt;randomlist&gt;</b> the enclosed tags are parsed in      <b>&lt;randomlist&gt;</b> the enclosed tags are parsed in
     a stable random order      a stable random order, optional argument <i>show</i>
       restricts the number of tags indie that are actually
       parsed the no more than <i>show</i>.
   </li>    </li>
   <li>    <li>
     <b>&lt;solved&gt;</b> everything inside the tag is      <b>&lt;solved&gt;</b> everything inside the tag is
Line 308 Line 532
     the web editor knows what sections should be edited in a      the web editor knows what sections should be edited in a
     plain text block on the web.      plain text block on the web.
   </li>    </li>
     <li>
       <b>&lt;comment&gt;</b> Allows one to comment out sections
       of code in a balanced manner, or to provide a comment
       description of how a problem works. Only shows up for the
       edit target, stripped out for all other targets.
     </li>
  </ul>   </ul>
       </li>        </li>
     </ul>      </ul>
Line 344 Line 574
       <li>open_date(), due_date(), answer_date()</li>        <li>open_date(), due_date(), answer_date()</li>
       <li>sub_string()</li>        <li>sub_string()</li>
       <li>array_moments(array)</li>        <li>array_moments(array)</li>
       <li>format(x,y)</li>        <li>format(x,y),prettyprint(x,y)</li>
       <li>map(...)</li>        <li>map(...)</li>
       <li>caparesponse_check</li>        <li>caparesponse_check</li>
       <li>caparesponse_check_list</li>        <li>caparesponse_check_list</li>
Line 365 Line 595
             <td valign="top"><b>Differences (if any)</b</td>              <td valign="top"><b>Differences (if any)</b</td>
      </tr>       </tr>
   
      <tr>  
              <td valign="top">sin(x), cos(x), tan(x)</td>  
              <td valign="top">&amp;sin($x), &amp;cos($x), &amp;tan($x)</td>  
              <td valign="top">Trigonometric functions where x is in radians. $x  
          can be a pure number, i.e., you can call &amp;sin(3.1415)</td>  
              <td valign="top">&nbsp</td>  
     </tr>  
   
     <tr>      <tr>
              <td valign="top">sin(x), cos(x), tan(x)</td>               <td valign="top">sin(x), cos(x), tan(x)</td>
              <td valign="top">&amp;sin($x), &amp;cos($x), &amp;tan($x)</td>               <td valign="top">&amp;sin($x), &amp;cos($x), &amp;tan($x)</td>
Line 472 Line 694
     </tr>      </tr>
   
     <tr>      <tr>
                <td valign="top">/DIS($x,"nn")</td>
                <td valign="top">&amp;format($x,"nn")</td>
                <td valign="top">Display or format $x as nn where nn is nF or nE and n is an integer. Also supports the first character being a $, it thjen will format the result with a call to &dollarformat() described below.</td>
                <td valign="top">&nbsp;The difference is obvious.</td>
       </tr>
   
       <tr>
                <td valign="top">Not in CAPA</td>
                <td valign="top">&amp;prettyprint($x,"nn")</td>
                <td valign="top">Display or format $x as nn where nn is nF or nE and n is an integer. Also supports the first character being a $, it then will format the result with a a call to &dollarformat() described below. In E mode it will attempt to generate a pretty x10^3 rather than a E3 following the number</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">Not in CAPA</td>
                <td valign="top">&amp;dollarformat($x</td>
                <td valign="top">Reformats $x to have a $ (or \$ if in tex mode) and to have , grouping thousands.</td>
                <td valign="top">&nbsp;</td>
       </tr>
       <tr>
              <td valign="top">roundto(x,n)</td>               <td valign="top">roundto(x,n)</td>
              <td valign="top">&amp;roundto($x,$n)</td>               <td valign="top">&amp;roundto($x,$n)</td>
              <td valign="top">Rounds a real number to n decimal points. $x and               <td valign="top">Rounds a real number to n decimal points. $x and
Line 537 Line 779
     </tr>      </tr>
   
     <tr>      <tr>
              <td valign="top">map(seed;a,b,c,d;w,x,y,z)</td>               <td valign="top">/MAP(seed;w,x,y,z;a,b,c,d)</td>
              <td valign="top">Option 1 - &amp;map($seed,[\$w,\$x,\$y,\$z],[$a,$b,$c,$d]) or <br>                <td valign="top">Option 1 - &amp;map($seed,[\$w,\$x,\$y,\$z],[$a,$b,$c,$d]) or <br> 
                   Option 2 - &amp;map($seed,\@mappedArray,[$a,$b,$c,$d]) <br>                    Option 2 - &amp;map($seed,\@mappedArray,[$a,$b,$c,$d]) <br>
                   Option 3 - @mappedArray = &amp;map($seed,[$a,$b,$c,$d]) <br>                    Option 3 - @mappedArray = &amp;map($seed,[$a,$b,$c,$d]) <br>
Line 574 Line 816
                         $w, $x, $y, and $z are variables</td>                          $w, $x, $y, and $z are variables</td>
              <td valign="top">The rmap functions does the reverse action of map if the same seed               <td valign="top">The rmap functions does the reverse action of map if the same seed
                   is used in calling map and rmap. </td>                    is used in calling map and rmap. </td>
              <td valign="top">In CAPA, the arguments are divided into three groups separated               <td valign="top">In CAPA, the arguments are divided into
                   by a semicolon ;. In LON-CAPA, the separation is done by using [] brackets or               three groups separated by a semicolon ;. In LON-CAPA, the
                   using an array @a. Note the backslash (\) before the arguments in the               separation is done by using [] brackets (with create an
                   second and third groups.</td>               unamed vector reference) or using an array @a. Note the
                backslash (\) before the arguments in the second and
                third groups (Which cause Perl to send to variable
                locations rather than the variable values, similar to a C
                pointer).</td>
     </tr>      </tr>
               
      <tr>       <tr>
Line 781 Line 1027
              <td valign="top">New to LON-CAPA</td>               <td valign="top">New to LON-CAPA</td>
     </tr>      </tr>
      <tr>       <tr>
              <td valign="top">NOT IMPLEMENTED IN CAPA</td>               <td valign="top">NOT DOCUMENTED IN CAPA</td>
              <td valign="top">@return_array=&random_multivariate_normal ($item_cnt,$seed,@mean,@covar) <br>               <td valign="top">@return_array=&random_multivariate_normal ($item_cnt,$seed,\@mean,\@covar) <br>
                         NOTE: @mean should be a length p array of real numbers. @covar should be a length                          NOTE: @mean should be of length p array of real numbers. @covar should be a length
                         p array of references to length p arrays or real numbers (i.e. a p by p matrix.</td>                          p array of references to length p arrays of real numbers (i.e. a p by p matrix.</td>
              <td valign="top">Generate $item_cnt deviates of multivariate_normal distribution with                 <td valign="top">Generate $item_cnt deviates of multivariate_normal distribution with  
                         mean vector @mean and variance-covariance matrix. </td>                          mean vector @mean and variance-covariance matrix. </td>
              <td valign="top">New to LON-CAPA</td>               <td valign="top">Note the backslash before the @mean and @covar arrays.</td>
     </tr>      </tr>
      <tr>       <tr>
              <td valign="top">NOT IMPLEMENTED IN CAPA</td>               <td valign="top">NOT IMPLEMENTED IN CAPA</td>
Line 804 Line 1050
     </tr>      </tr>
      <tr>       <tr>
              <td valign="top">NOT IMPLEMENTED IN CAPA</td>               <td valign="top">NOT IMPLEMENTED IN CAPA</td>
              <td valign="top">@return_array=&random_permutation ($item_cnt,@array) </td>               <td valign="top">@return_array=&random_permutation ($seed,@array) </td>
              <td valign="top">Returns @array randomly permuted.</td>               <td valign="top">Returns @array randomly permuted.</td>
              <td valign="top">New to LON-CAPA</td>               <td valign="top">New to LON-CAPA</td>
     </tr>      </tr>
Line 843 Line 1089
              <td valign="top">New to LON-CAPA</td>               <td valign="top">New to LON-CAPA</td>
     </tr>      </tr>
  </table>   </table>
       <p>
         We also support these functions from Math::Cephes
   <pre>
    bdtr:  Binomial distribution
    bdtrc:  Complemented binomial distribution
    bdtri:  Inverse binomial distribution
    btdtr:  Beta distribution
    chdtr:  Chi-square distribution
    chdtrc:  Complemented Chi-square distribution
    chdtri:  Inverse of complemented Chi-square distribution
    fdtr:  F distribution
    fdtrc:  Complemented F distribution
    fdtri:  Inverse of complemented F distribution
    gdtr:  Gamma distribution function
    gdtrc:  Complemented gamma distribution function
    nbdtr:  Negative binomial distribution
    nbdtrc:  Complemented negative binomial distribution
    nbdtri:  Functional inverse of negative binomial distribution
    ndtr:  Normal distribution function
    ndtri:  Inverse of Normal distribution function
    pdtr:  Poisson distribution
    pdtrc:  Complemented poisson distribution
    pdtri:  Inverse Poisson distribution
    stdtr:  Student's t distribution
    stdtri:  Functional inverse of Student's t distribution
   </pre>
   Plase see <a href="http://search.cpan.org/author/RKOBES/Math-Cephes-0.36/lib/Math/Cephes.pod">Math::Cephes</a> for more information
   
       </p>
 <!-- insertion ends -->  <!-- insertion ends -->
   
     <h2>&lt;script&gt; Variables</h2>      <h2>&lt;script&gt; Variables</h2>
Line 853 Line 1128
       </li>        </li>
       <li>        <li>
  $external::part - set to the <i>id</i> of the current problem   $external::part - set to the <i>id</i> of the current problem
  &lt;part&gt;; zero if there are now &lt;part&gt;   &lt;part&gt;; zero if there are no &lt;part&gt;
       </li>        </li>
       <li>        <li>
  $external::gradestatus - set to the value of the current   $external::gradestatus - set to the value of the current
Line 861 Line 1136
       </li>        </li>
       <li>        <li>
  $external::datestatus - set to the current status of the clock   $external::datestatus - set to the current status of the clock
  either CLOSED, CAN_ANSWER, CANNOT_ANSWER, or SHOW_ANSWER   either CLOSED, CAN_ANSWER, CANNOT_ANSWER, SHOW_ANSWER, or UNCHECKEDOUT
       </li>        </li>
       <li>        <li>
  $external::randomseed - set to the number that was used to   $external::randomseed - set to the number that was used to
Line 871 Line 1146
       <li>$rad2deg - converts radians to degrees </li>        <li>$rad2deg - converts radians to degrees </li>
       <li>$deg2rad - converts degrees to radians </li>        <li>$deg2rad - converts degrees to radians </li>
     </ul>      </ul>
       
       <h2> Form internals </h2>
       <p> Form elements used for homework editing/response </p>
       <p> the form is named lonhomework </p>
       <h3> Viewing a problem (either CSTR or RES space)</h3>
       <ul>
         <li>
    grade_target, grade_username, grade_domain, grade_symb - the
    vaules take precedence over the the normal env settings of
    these, use &Apache::lonxml::whichuser() to get back the
    correct vaues of the items
         </li>
         <li>
    HWVAL_response:number - the name of the input elements for each response. The response is the response's ID, and the :number part exists only for response with multiple foils, and is a unique number in order of the submission
         </li>
         <li>
    changerandseed - the 'Change' button, only exists right after
    the Change button is clicked
         </li>
         <li>
    problemmode - in CSTR, it is either 'View','Edit','EditXML' or
    'Analyze' depending on the desired view
         </li>
         <li>
    rndseed - the currently requested random seed
         </li>
         <li>
    showallfoils - if it exists, and we are in CSTR space, the
    problem should ignore &lt;conceptgroup&gt; and the response's
    max setting and show all possible foils
         </li>
         <li>
    submit - the name of the Submit button
         </li>
         <li>
    submitted - a hidden form parameter that can be used to tell
    if the student has submitted answers or not, if it is set,
    there should be answers to grade.
         </li>
       </ul>
       <h3> Editing a problem (Edit mode)</h3>
       <p> tagdepth referes to the current value of the xmlparsers tagdepth couter ($Apache::lonxml::currentdepth)</p>
   <p> Note: the file edit.pm has many helper functions for creating the standard elements for editing a tag and it's attributes, all of those functions follow these conventions </p>
       <ul>
         <li>
    tagdepth_argname - I.E. 1_3.max, a parameter editing value,
    max is the name of the parameter and it is for the third tag
    inside the first tag
         </li>
         <li>
    delete_tagdepth - if set to yes, delete tag tagdepth and all
    tags inside of it
         </li>
         <li>
    homework_edit_tagdepth - used by both &Apache::edit::editline
    and &Apache::edit::editfield for the &lt;textarea&gt; and
    &lt;input&gt; form elements they create
         </li>
         <li>
    insert_tagdepth - used to request an tag insert, it is set to
    the id number of the requested tag in the
    %Apache::lonxml::insertlist
       </ul>
     <hr>      <hr>
     <address><a href="mailto:albertel@marvin.lite.msu.edu">Guy Albertelli</a></address>      <address><a href="mailto:albertel@marvin.lite.msu.edu">Guy Albertelli</a></address>
 <!-- Created: Thu May 17 15:05:35 EDT 2001 -->  <!-- Created: Thu May 17 15:05:35 EDT 2001 -->
 <!-- hhmts start -->  <!-- hhmts start -->
 Last modified: Fri Jul 13 12:10:52 EDT 2001  Last modified: Wed Nov 13 17:33:43 EST 2002
 <!-- hhmts end -->  <!-- hhmts end -->
   </body>    </body>
 </html>  </html>

Removed from v.1.8  
changed lines
  Added in v.1.23


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>