~percona-toolkit-dev/percona-toolkit/1.0

« back to all changes in this revision

Viewing changes to docs/dev/html/files/tools/pt-variable-advisor-pm.html

  • Committer: Daniel Nichter
  • Date: 2011-07-14 19:08:47 UTC
  • Revision ID: daniel@percona.com-20110714190847-lggalkuvdrh7c4jp
Add standard pkg files (COPYING, README, etc.), percona-toolkit.pod, and user docs.  Remove dev/docs/html.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
2
 
 
3
 
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>pt_variable_advisor</title><link rel="stylesheet" type="text/css" href="../../styles/main.css"><script language=JavaScript src="../../javascript/main.js"></script><script language=JavaScript src="../../javascript/prettify.js"></script><script language=JavaScript src="../../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
4
 
if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
5
 
 
6
 
<!--  Generated by Natural Docs, version 1.52 -->
7
 
<!--  http://www.naturaldocs.org  -->
8
 
 
9
 
<!-- saved from url=(0026)http://www.naturaldocs.org -->
10
 
 
11
 
 
12
 
 
13
 
 
14
 
<div id=Content><div class="CClass"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="pt_variable_advisor"></a>pt_variable_advisor</h1><div class=CBody><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SMain"><td class=SEntry><a href="#pt_variable_advisor" >pt_variable_advisor</a></td><td class=SDescription></td></tr><tr class="SGroup SIndent1"><td class=SEntry><a href="#pt_variable_advisor.Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#pt_variable_advisor.main" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">main</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#pt_variable_advisor.get_variables" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')">get_variables</a></td><td class=SDescription>Get SHOW VARIABLES from MySQL or a file.</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#pt_variable_advisor.print_advice" id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')">print_advice</a></td><td class=SDescription>Print information about rules that matched.</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#pt_variable_advisor._d" id=link4 onMouseOver="ShowTip(event, 'tt4', 'link4')" onMouseOut="HideTip('tt4')">_d</a></td><td class=SDescription></td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
15
 
 
16
 
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="pt_variable_advisor.Functions"></a>Functions</h3></div></div>
17
 
 
18
 
<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="pt_variable_advisor.main"></a>main</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub main</td></tr></table></blockquote></div></div></div>
19
 
 
20
 
<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="pt_variable_advisor.get_variables"></a>get_variables</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub get_variables</td></tr></table></blockquote><p>Get SHOW VARIABLES from MySQL or a file.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>%args</td><td class=CDLDescription>Arguments</td></tr></table><h4 class=CHeading>Required Arguments</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>source</td><td class=CDLDescription>&rdquo;mysql&rdquo; or a file name</td></tr></table><h4 class=CHeading>Optional Arguments</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>dbh</td><td class=CDLDescription>dbh if source==&rdquo;mysql&rdquo;</td></tr><tr><td class=CDLEntry>TextResultSetParser</td><td class=CDLDescription><a href="../modules/TextResultSetParser-pm.html#TextResultSetParser" class=LClass id=link5 onMouseOver="ShowTip(event, 'tt5', 'link5')" onMouseOut="HideTip('tt5')">TextResultSetParser</a> object if source==file</td></tr></table><h4 class=CHeading>Returns</h4><p>Hashref of SHOW /<b>40003 GLOBAL</b>/ VARIABLES values.</p></div></div></div>
21
 
 
22
 
<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="pt_variable_advisor.print_advice"></a>print_advice</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub print_advice</td></tr></table></blockquote><p>Print information about rules that matched.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>%args</td><td class=CDLDescription>Arguments</td></tr></table><h4 class=CHeading>Required Arguments</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>advice</td><td class=CDLDescription>Arrayref of rule IDs, returned by <a href="../modules/Advisor-pm.html#Advisor.run_rules" class=LFunction id=link6 onMouseOver="ShowTip(event, 'tt6', 'link6')" onMouseOut="HideTip('tt6')">Advisor::run_rules()</a></td></tr><tr><td class=CDLEntry>Advisor</td><td class=CDLDescription><a href="../modules/Advisor-pm.html#Advisor" class=LClass id=link7 onMouseOver="ShowTip(event, 'tt7', 'link7')" onMouseOut="HideTip('tt7')">Advisor</a> object</td></tr><tr><td class=CDLEntry>OptionParser</td><td class=CDLDescription><a href="../modules/OptionParser-pm.html#OptionParser" class=LClass id=link8 onMouseOver="ShowTip(event, 'tt8', 'link8')" onMouseOut="HideTip('tt8')">OptionParser</a> object</td></tr></table></div></div></div>
23
 
 
24
 
<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="pt_variable_advisor._d"></a>_d</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub _d</td></tr></table></blockquote></div></div></div>
25
 
 
26
 
</div><!--Content-->
27
 
 
28
 
 
29
 
<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
30
 
 
31
 
 
32
 
<div id=Menu><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Modules</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MFile><a href="../modules/Advisor-pm.html">Advisor</a></div></div><div class=MEntry><div class=MFile><a href="../modules/AdvisorRules-pm.html">AdvisorRules</a></div></div><div class=MEntry><div class=MFile><a href="../modules/BinaryLogParser-pm.html">BinaryLogParser</a></div></div><div class=MEntry><div class=MFile><a href="../modules/ChangeHandler-pm.html">ChangeHandler</a></div></div><div class=MEntry><div class=MFile><a href="../modules/CompareQueryTimes-pm.html">CompareQueryTimes</a></div></div><div class=MEntry><div class=MFile><a href="../modules/CompareResults-pm.html">CompareResults</a></div></div><div class=MEntry><div class=MFile><a href="../modules/CompareTableStructs-pm.html">CompareTableStructs</a></div></div><div class=MEntry><div class=MFile><a href="../modules/CompareWarnings-pm.html">CompareWarnings</a></div></div><div class=MEntry><div class=MFile><a href="../modules/CopyRowsInsertSelect-pm.html">CopyRowsInsertSelect</a></div></div><div class=MEntry><div class=MFile><a href="../modules/Daemon-pm.html">Daemon</a></div></div><div class=MEntry><div class=MFile><a href="../modules/DSNParser-pm.html">DSNParser</a></div></div><div class=MEntry><div class=MFile><a href="../modules/DuplicateKeyFinder-pm.html">DuplicateKeyFinder</a></div></div><div class=MEntry><div class=MFile><a href="../modules/EventAggregator-pm.html">EventAggregator</a></div></div><div class=MEntry><div class=MFile><a href="../modules/EventTimeline-pm.html">EventTimeline</a></div></div><div class=MEntry><div class=MFile><a href="../modules/ExecutionThrottler-pm.html">ExecutionThrottler</a></div></div><div class=MEntry><div class=MFile><a href="../modules/ExplainAnalyzer-pm.html">ExplainAnalyzer</a></div></div><div class=MEntry><div class=MFile><a href="../modules/FileIterator-pm.html">FileIterator</a></div></div><div class=MEntry><div class=MFile><a href="../modules/ForeignKeyIterator-pm.html">ForeignKeyIterator</a></div></div><div class=MEntry><div class=MFile><a href="../modules/GeneralLogParser-pm.html">GeneralLogParser</a></div></div><div class=MEntry><div class=MFile><a href="../modules/HTTPProtocolParser-pm.html">HTTPProtocolParser</a></div></div><div class=MEntry><div class=MFile><a href="../modules/IndexUsage-pm.html">IndexUsage</a></div></div><div class=MEntry><div class=MFile><a href="../modules/InnoDBStatusParser-pm.html">InnoDBStatusParser</a></div></div><div class=MEntry><div class=MFile><a href="../modules/KeySize-pm.html">KeySize</a></div></div><div class=MEntry><div class=MFile><a href="../modules/LogSplitter-pm.html">LogSplitter</a></div></div><div class=MEntry><div class=MFile><a href="../modules/MaatkitTest-pm.html">MaatkitTest</a></div></div><div class=MEntry><div class=MFile><a href="../modules/MasterSlave-pm.html">MasterSlave</a></div></div><div class=MEntry><div class=MFile><a href="../modules/MemcachedEvent-pm.html">MemcachedEvent</a></div></div><div class=MEntry><div class=MFile><a href="../modules/MemcachedProtocolParser-pm.html">MemcachedProtocolParser</a></div></div><div class=MEntry><div class=MFile><a href="../modules/MockSth-pm.html">MockSth</a></div></div><div class=MEntry><div class=MFile><a href="../modules/MockSync-pm.html">MockSync</a></div></div><div class=MEntry><div class=MFile><a href="../modules/MockSyncStream-pm.html">MockSyncStream</a></div></div><div class=MEntry><div class=MFile><a href="../modules/MySQLConfig-pm.html">MySQLConfig</a></div></div><div class=MEntry><div class=MFile><a href="../modules/MySQLConfigComparer-pm.html">MySQLConfigComparer</a></div></div><div class=MEntry><div class=MFile><a href="../modules/MySQLDump-pm.html">MySQLDump</a></div></div><div class=MEntry><div class=MFile><a href="../modules/MySQLProtocolParser-pm.html">MySQLProtocolParser</a></div></div><div class=MEntry><div class=MFile><a href="../modules/OptionParser-pm.html">OptionParser</a></div></div><div class=MEntry><div class=MFile><a href="../modules/OSCCaptureSync-pm.html">OSCCaptureSync</a></div></div><div class=MEntry><div class=MFile><a href="../modules/Outfile-pm.html">Outfile</a></div></div><div class=MEntry><div class=MFile><a href="../modules/PgLogParser-pm.html">PgLogParser</a></div></div><div class=MEntry><div class=MFile><a href="../modules/Pipeline-pm.html">Pipeline</a></div></div><div class=MEntry><div class=MFile><a href="../modules/PodParser-pm.html">PodParser</a></div></div><div class=MEntry><div class=MFile><a href="../modules/Processlist-pm.html">Processlist</a></div></div><div class=MEntry><div class=MFile><a href="../modules/ProcesslistAggregator-pm.html">ProcesslistAggregator</a></div></div><div class=MEntry><div class=MFile><a href="../modules/Progress-pm.html">Progress</a></div></div><div class=MEntry><div class=MFile><a href="../modules/ProtocolParser-pm.html">ProtocolParser</a></div></div><div class=MEntry><div class=MFile><a href="../modules/QueryAdvisorRules-pm.html">QueryAdvisorRules</a></div></div><div class=MEntry><div class=MFile><a href="../modules/QueryParser-pm.html">QueryParser</a></div></div><div class=MEntry><div class=MFile><a href="../modules/QueryReportFormatter-pm.html">QueryReportFormatter</a></div></div><div class=MEntry><div class=MFile><a href="../modules/QueryReview-pm.html">QueryReview</a></div></div><div class=MEntry><div class=MFile><a href="../modules/QueryRewriter-pm.html">QueryRewriter</a></div></div><div class=MEntry><div class=MFile><a href="../modules/Quoter-pm.html">Quoter</a></div></div><div class=MEntry><div class=MFile><a href="../modules/ReportFormatter-pm.html">ReportFormatter</a></div></div><div class=MEntry><div class=MFile><a href="../modules/Retry-pm.html">Retry</a></div></div><div class=MEntry><div class=MFile><a href="../modules/RowDiff-pm.html">RowDiff</a></div></div><div class=MEntry><div class=MFile><a href="../modules/Runtime-pm.html">Runtime</a></div></div><div class=MEntry><div class=MFile><a href="../modules/Sandbox-pm.html">Sandbox</a></div></div><div class=MEntry><div class=MFile><a href="../modules/Schema-pm.html">Schema</a></div></div><div class=MEntry><div class=MFile><a href="../modules/SchemaIterator-pm.html">SchemaIterator</a></div></div><div class=MEntry><div class=MFile><a href="../modules/SimpleTCPDumpParser-pm.html">SimpleTCPDumpParser</a></div></div><div class=MEntry><div class=MFile><a href="../modules/SlowLogParser-pm.html">SlowLogParser</a></div></div><div class=MEntry><div class=MFile><a href="../modules/SlowLogWriter-pm.html">SlowLogWriter</a></div></div><div class=MEntry><div class=MFile><a href="../modules/SQLParser-pm.html">SQLParser</a></div></div><div class=MEntry><div class=MFile><a href="../modules/SysLogParser-pm.html">SysLogParser</a></div></div><div class=MEntry><div class=MFile><a href="../modules/TableChecksum-pm.html">TableChecksum</a></div></div><div class=MEntry><div class=MFile><a href="../modules/TableChunker-pm.html">TableChunker</a></div></div><div class=MEntry><div class=MFile><a href="../modules/TableNibbler-pm.html">TableNibbler</a></div></div><div class=MEntry><div class=MFile><a href="../modules/TableParser-pm.html">TableParser</a></div></div><div class=MEntry><div class=MFile><a href="../modules/TableSyncChunk-pm.html">TableSyncChunk</a></div></div><div class=MEntry><div class=MFile><a href="../modules/TableSyncer-pm.html">TableSyncer</a></div></div><div class=MEntry><div class=MFile><a href="../modules/TableSyncGroupBy-pm.html">TableSyncGroupBy</a></div></div><div class=MEntry><div class=MFile><a href="../modules/TableSyncNibble-pm.html">TableSyncNibble</a></div></div><div class=MEntry><div class=MFile><a href="../modules/TableSyncStream-pm.html">TableSyncStream</a></div></div><div class=MEntry><div class=MFile><a href="../modules/TableUsage-pm.html">TableUsage</a></div></div><div class=MEntry><div class=MFile><a href="../modules/TcpdumpParser-pm.html">TcpdumpParser</a></div></div><div class=MEntry><div class=MFile><a href="../modules/TCPRequestAggregator-pm.html">TCPRequestAggregator</a></div></div><div class=MEntry><div class=MFile><a href="../modules/TextResultSetParser-pm.html">TextResultSetParser</a></div></div><div class=MEntry><div class=MFile><a href="../modules/TimeSeriesTrender-pm.html">TimeSeriesTrender</a></div></div><div class=MEntry><div class=MFile><a href="../modules/Transformers-pm.html">Transformers</a></div></div><div class=MEntry><div class=MFile><a href="../modules/UpgradeReportFormatter-pm.html">UpgradeReportFormatter</a></div></div><div class=MEntry><div class=MFile><a href="../modules/VariableAdvisorRules-pm.html">VariableAdvisorRules</a></div></div><div class=MEntry><div class=MFile><a href="../modules/VersionParser-pm.html">VersionParser</a></div></div></div></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent2')">Tools</a><div class=MGroupContent id=MGroupContent2><div class=MEntry><div class=MFile><a href="pt-archiver-pm.html">pt_archiver</a></div></div><div class=MEntry><div class=MFile><a href="pt-config-diff-pm.html">pt_config_diff</a></div></div><div class=MEntry><div class=MFile><a href="pt-deadlock-logger-pm.html">pt_deadlock_logger</a></div></div><div class=MEntry><div class=MFile><a href="pt-duplicate-key-checker-pm.html">pt_duplicate_key_checker</a></div></div><div class=MEntry><div class=MFile><a href="pt-fifo-split-pm.html">pt_fifo_split</a></div></div><div class=MEntry><div class=MFile><a href="pt-find-pm.html">pt_find</a></div></div><div class=MEntry><div class=MFile><a href="pt-fk-error-logger-pm.html">pt_fk_error_logger</a></div></div><div class=MEntry><div class=MFile><a href="pt-heartbeat-pm.html">pt_heartbeat</a></div></div><div class=MEntry><div class=MFile><a href="pt-index-usage-pm.html">pt_index_usage</a></div></div><div class=MEntry><div class=MFile><a href="pt-kill-pm.html">pt_kill</a></div></div><div class=MEntry><div class=MFile><a href="pt-log-player-pm.html">pt_log_player</a></div></div><div class=MEntry><div class=MFile><a href="pt-online-schema-change-pm.html">pt_online_schema_change</a></div></div><div class=MEntry><div class=MFile><a href="pt-profile-compact-pm.html">pt_profile_compact</a></div></div><div class=MEntry><div class=MFile><a href="pt-query-advisor-pm.html">pt_query_advisor</a></div></div><div class=MEntry><div class=MFile><a href="pt-query-digest-pm.html">pt_query_digest</a></div></div><div class=MEntry><div class=MFile><a href="pt-query-profiler-pm.html">pt_query_profiler</a></div></div><div class=MEntry><div class=MFile><a href="pt-schema-advisor-pm.html">pt_schema_advisor</a></div></div><div class=MEntry><div class=MFile><a href="pt-show-grants-pm.html">pt_show_grants</a></div></div><div class=MEntry><div class=MFile><a href="pt-slave-delay-pm.html">pt_slave_delay</a></div></div><div class=MEntry><div class=MFile><a href="pt-slave-find-pm.html">pt_slave_find</a></div></div><div class=MEntry><div class=MFile><a href="pt-slave-restart-pm.html">pt_slave_restart</a></div></div><div class=MEntry><div class=MFile><a href="pt-table-checksum-pm.html">pt_table_checksum</a></div></div><div class=MEntry><div class=MFile><a href="pt-table-sync-pm.html">pt_table_sync</a></div></div><div class=MEntry><div class=MFile><a href="pt-table-usage-pm.html">pt_table_usage</a></div></div><div class=MEntry><div class=MFile><a href="pt-tcp-model-pm.html">pt_tcp_model</a></div></div><div class=MEntry><div class=MFile><a href="pt-trend-pm.html">pt_trend</a></div></div><div class=MEntry><div class=MFile><a href="pt-upgrade-pm.html">pt_upgrade</a></div></div><div class=MEntry><div class=MFile id=MSelected>pt_variable_advisor</div></div><div class=MEntry><div class=MFile><a href="pt-visual-explain-pm.html">pt_visual_explain</a></div></div></div></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent3')">Index</a><div class=MGroupContent id=MGroupContent3><div class=MEntry><div class=MIndex><a href="../../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../../index/Classes.html">Classes</a></div></div><div class=MEntry><div class=MIndex><a href="../../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../../index/Variables.html">Variables</a></div></div></div></div></div><script type="text/javascript"><!--
33
 
var searchPanel = new SearchPanel("searchPanel", "HTML", "../../search");
34
 
--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option  id=MSearchEverything selected value="General">Everything</option><option value="Classes">Classes</option><option value="Functions">Functions</option><option value="Variables">Variables</option></select></div><script language=JavaScript><!--
35
 
HideAllBut([2], 4);// --></script></div><!--Menu-->
36
 
 
37
 
 
38
 
 
39
 
<!--START_ND_TOOLTIPS-->
40
 
<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub main</td></tr></table></blockquote></div></div><div class=CToolTip id="tt2"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub get_variables</td></tr></table></blockquote>Get SHOW VARIABLES from MySQL or a file.</div></div><div class=CToolTip id="tt3"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub print_advice</td></tr></table></blockquote>Print information about rules that matched.</div></div><div class=CToolTip id="tt4"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub _d</td></tr></table></blockquote></div></div><div class=CToolTip id="tt5"><div class=CClass>TextResultSetParser converts a text result set to a data struct like DBI::selectall_arrayref(). </div></div><div class=CToolTip id="tt6"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">sub run_rules</td></tr></table></blockquote>Run all rules from all advisors loaded ealier.</div></div><div class=CToolTip id="tt7"><div class=CClass>Advisor loads, checks, and runs rules for the various mk-*-advisor tools.</div></div><div class=CToolTip id="tt8"><div class=CClass>OptionParser parses command line options from a tool&rsquo;s POD. </div></div><!--END_ND_TOOLTIPS-->
41
 
 
42
 
 
43
 
 
44
 
 
45
 
<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></div>
46
 
 
47
 
 
48
 
<script language=JavaScript><!--
49
 
if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
 
 
b'\\ No newline at end of file'