This commit is contained in:
sylvestre
2021-09-08 02:27:26 +00:00
parent 31aa0e2c14
commit a7b1c98a64
14 changed files with 107 additions and 31 deletions
+2 -2
View File
File diff suppressed because one or more lines are too long
+67 -1
View File
@@ -697,6 +697,39 @@
<span id="695">695</span>
<span id="696">696</span>
<span id="697">697</span>
<span id="698">698</span>
<span id="699">699</span>
<span id="700">700</span>
<span id="701">701</span>
<span id="702">702</span>
<span id="703">703</span>
<span id="704">704</span>
<span id="705">705</span>
<span id="706">706</span>
<span id="707">707</span>
<span id="708">708</span>
<span id="709">709</span>
<span id="710">710</span>
<span id="711">711</span>
<span id="712">712</span>
<span id="713">713</span>
<span id="714">714</span>
<span id="715">715</span>
<span id="716">716</span>
<span id="717">717</span>
<span id="718">718</span>
<span id="719">719</span>
<span id="720">720</span>
<span id="721">721</span>
<span id="722">722</span>
<span id="723">723</span>
<span id="724">724</span>
<span id="725">725</span>
<span id="726">726</span>
<span id="727">727</span>
<span id="728">728</span>
<span id="729">729</span>
<span id="730">730</span>
</pre><pre class="rust">
<span class="kw">use</span> <span class="ident">std::char::from_digit</span>;
<span class="kw">use</span> <span class="ident">std::ffi::OsStr</span>;
@@ -987,7 +1020,7 @@
<span class="ident">show_control</span>,
} <span class="op">=</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">name</span> <span class="op">=</span> <span class="ident">name</span>.<span class="ident">to_string_lossy</span>();
<span class="kw">let</span> (<span class="ident">quotes</span>, <span class="ident">must_quote</span>) <span class="op">=</span> <span class="kw">if</span> <span class="ident">name</span>.<span class="ident">contains</span>(<span class="string">&#39;&quot;&#39;</span>) {
<span class="kw">let</span> (<span class="ident">quotes</span>, <span class="ident">must_quote</span>) <span class="op">=</span> <span class="kw">if</span> <span class="ident">name</span>.<span class="ident">contains</span>(<span class="kw-2">&amp;</span>[<span class="string">&#39;&quot;&#39;</span>, <span class="string">&#39;`&#39;</span>, <span class="string">&#39;$&#39;</span>, <span class="string">&#39;\\&#39;</span>][..]) {
(<span class="ident">Quotes::Single</span>, <span class="bool-val">true</span>)
} <span class="kw">else</span> <span class="kw">if</span> <span class="ident">name</span>.<span class="ident">contains</span>(<span class="string">&#39;\&#39;&#39;</span>) {
(<span class="ident">Quotes::Double</span>, <span class="bool-val">true</span>)
@@ -1394,6 +1427,39 @@
);
<span class="ident">check_names</span>(<span class="string">&quot;name#&quot;</span>, <span class="macro">vec!</span>[(<span class="string">&quot;name#&quot;</span>, <span class="string">&quot;shell&quot;</span>), (<span class="string">&quot;name#&quot;</span>, <span class="string">&quot;shell-escape&quot;</span>)]);
}
<span class="attribute">#[<span class="ident">test</span>]</span>
<span class="kw">fn</span> <span class="ident">test_special_chars_in_double_quotes</span>() {
<span class="ident">check_names</span>(
<span class="string">&quot;can&#39;$t&quot;</span>,
<span class="macro">vec!</span>[
(<span class="string">&quot;&#39;can&#39;\\&#39;&#39;$t&#39;&quot;</span>, <span class="string">&quot;shell&quot;</span>),
(<span class="string">&quot;&#39;can&#39;\\&#39;&#39;$t&#39;&quot;</span>, <span class="string">&quot;shell-always&quot;</span>),
(<span class="string">&quot;&#39;can&#39;\\&#39;&#39;$t&#39;&quot;</span>, <span class="string">&quot;shell-escape&quot;</span>),
(<span class="string">&quot;&#39;can&#39;\\&#39;&#39;$t&#39;&quot;</span>, <span class="string">&quot;shell-escape-always&quot;</span>),
],
);
<span class="ident">check_names</span>(
<span class="string">&quot;can&#39;`t&quot;</span>,
<span class="macro">vec!</span>[
(<span class="string">&quot;&#39;can&#39;\\&#39;&#39;`t&#39;&quot;</span>, <span class="string">&quot;shell&quot;</span>),
(<span class="string">&quot;&#39;can&#39;\\&#39;&#39;`t&#39;&quot;</span>, <span class="string">&quot;shell-always&quot;</span>),
(<span class="string">&quot;&#39;can&#39;\\&#39;&#39;`t&#39;&quot;</span>, <span class="string">&quot;shell-escape&quot;</span>),
(<span class="string">&quot;&#39;can&#39;\\&#39;&#39;`t&#39;&quot;</span>, <span class="string">&quot;shell-escape-always&quot;</span>),
],
);
<span class="ident">check_names</span>(
<span class="string">&quot;can&#39;\\t&quot;</span>,
<span class="macro">vec!</span>[
(<span class="string">&quot;&#39;can&#39;\\&#39;&#39;\\t&#39;&quot;</span>, <span class="string">&quot;shell&quot;</span>),
(<span class="string">&quot;&#39;can&#39;\\&#39;&#39;\\t&#39;&quot;</span>, <span class="string">&quot;shell-always&quot;</span>),
(<span class="string">&quot;&#39;can&#39;\\&#39;&#39;\\t&#39;&quot;</span>, <span class="string">&quot;shell-escape&quot;</span>),
(<span class="string">&quot;&#39;can&#39;\\&#39;&#39;\\t&#39;&quot;</span>, <span class="string">&quot;shell-escape-always&quot;</span>),
],
);
}
}
</pre></div>
</section><section id="search" class="content hidden"></section><div id="rustdoc-vars" data-root-path="../../" data-current-crate="uu_ls" data-search-index-js="../../search-index.js" data-search-js="../../search.js"></div><script src="../../main.js"></script><script src="../../source-script.js"></script><script src="../../source-files.js"></script></body></html>
+23 -11
View File
@@ -53,6 +53,12 @@
<span id="51">51</span>
<span id="52">52</span>
<span id="53">53</span>
<span id="54">54</span>
<span id="55">55</span>
<span id="56">56</span>
<span id="57">57</span>
<span id="58">58</span>
<span id="59">59</span>
</pre><pre class="rust">
<span class="kw">use</span> <span class="ident">clap::App</span>;
@@ -70,9 +76,12 @@
<span class="attribute">#[<span class="ident">macro_use</span>]</span>
<span class="kw">extern</span> <span class="kw">crate</span> <span class="ident">uucore</span>;
<span class="kw">use</span> <span class="ident">uucore::error</span>::{<span class="ident">UResult</span>, <span class="ident">USimpleError</span>};
<span class="kw">mod</span> <span class="ident">platform</span>;
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">uumain</span>(<span class="ident">args</span>: <span class="kw">impl</span> <span class="ident">uucore::Args</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">i32</span> {
<span class="attribute">#[<span class="ident">uucore_procs::gen_uumain</span>]</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">uumain</span>(<span class="ident">args</span>: <span class="kw">impl</span> <span class="ident">uucore::Args</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">UResult</span><span class="op">&lt;</span>()<span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">app</span> <span class="op">=</span> <span class="ident">uu_app</span>();
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Err</span>(<span class="ident">err</span>) <span class="op">=</span> <span class="ident">app</span>.<span class="ident">get_matches_from_safe</span>(<span class="ident">args</span>) {
@@ -80,15 +89,12 @@
<span class="op">|</span><span class="op">|</span> <span class="ident">err</span>.<span class="ident">kind</span> <span class="op">=</span><span class="op">=</span> <span class="ident">clap::ErrorKind::VersionDisplayed</span>
{
<span class="macro">println!</span>(<span class="string">&quot;{}&quot;</span>, <span class="ident">err</span>);
<span class="number">0</span>
<span class="prelude-val">Ok</span>(())
} <span class="kw">else</span> {
<span class="macro">show_error!</span>(<span class="string">&quot;{}&quot;</span>, <span class="ident">err</span>);
<span class="number">1</span>
<span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">USimpleError::new</span>(<span class="number">1</span>, <span class="macro">format!</span>(<span class="string">&quot;{}&quot;</span>, <span class="ident">err</span>)));
}
} <span class="kw">else</span> {
<span class="ident">exec</span>();
<span class="number">0</span>
<span class="ident">exec</span>()
}
}
@@ -96,13 +102,19 @@
<span class="macro">app_from_crate!</span>()
}
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">exec</span>() {
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">exec</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="ident">UResult</span><span class="op">&lt;</span>()<span class="op">&gt;</span> {
<span class="kw">unsafe</span> {
<span class="kw">match</span> <span class="ident">platform::get_username</span>() {
<span class="prelude-val">Ok</span>(<span class="ident">username</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="macro">println!</span>(<span class="string">&quot;{}&quot;</span>, <span class="ident">username</span>),
<span class="prelude-val">Ok</span>(<span class="ident">username</span>) <span class="op">=</span><span class="op">&gt;</span> {
<span class="macro">println!</span>(<span class="string">&quot;{}&quot;</span>, <span class="ident">username</span>);
<span class="prelude-val">Ok</span>(())
}
<span class="prelude-val">Err</span>(<span class="ident">err</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="kw">match</span> <span class="ident">err</span>.<span class="ident">raw_os_error</span>() {
<span class="prelude-val">Some</span>(<span class="number">0</span>) <span class="op">|</span> <span class="prelude-val">None</span> <span class="op">=</span><span class="op">&gt;</span> <span class="macro">crash!</span>(<span class="number">1</span>, <span class="string">&quot;failed to get username&quot;</span>),
<span class="prelude-val">Some</span>(<span class="kw">_</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="macro">crash!</span>(<span class="number">1</span>, <span class="string">&quot;failed to get username: {}&quot;</span>, <span class="ident">err</span>),
<span class="prelude-val">Some</span>(<span class="number">0</span>) <span class="op">|</span> <span class="prelude-val">None</span> <span class="op">=</span><span class="op">&gt;</span> <span class="prelude-val">Err</span>(<span class="ident">USimpleError::new</span>(<span class="number">1</span>, <span class="string">&quot;failed to get username&quot;</span>)),
<span class="prelude-val">Some</span>(<span class="kw">_</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="prelude-val">Err</span>(<span class="ident">USimpleError::new</span>(
<span class="number">1</span>,
<span class="macro">format!</span>(<span class="string">&quot;failed to get username: {}&quot;</span>, <span class="ident">err</span>),
)),
},
}
}
-2
View File
@@ -563,7 +563,6 @@
<span id="561">561</span>
<span id="562">562</span>
<span id="563">563</span>
<span id="564">564</span>
</pre><pre class="rust">
<span class="doccomment">//! All utils return exit with an exit code. Usually, the following scheme is used:</span>
<span class="doccomment">//! * `0`: succeeded</span>
@@ -966,7 +965,6 @@
<span class="ident">TimedOut</span> <span class="op">=</span><span class="op">&gt;</span> <span class="string">&quot;Timed out&quot;</span>,
<span class="ident">WriteZero</span> <span class="op">=</span><span class="op">&gt;</span> <span class="string">&quot;Write zero&quot;</span>,
<span class="ident">Interrupted</span> <span class="op">=</span><span class="op">&gt;</span> <span class="string">&quot;Interrupted&quot;</span>,
<span class="ident">Other</span> <span class="op">=</span><span class="op">&gt;</span> <span class="string">&quot;Other&quot;</span>,
<span class="ident">UnexpectedEof</span> <span class="op">=</span><span class="op">&gt;</span> <span class="string">&quot;Unexpected end of file&quot;</span>,
<span class="kw">_</span> <span class="op">=</span><span class="op">&gt;</span> {
<span class="comment">// TODO: using `strip_errno()` causes the error message</span>
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long