<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dw="https://www.dreamwidth.org">
  <id>tag:dreamwidth.org,2021-01-19:3740325</id>
  <title>amarao</title>
  <subtitle>amarao</subtitle>
  <author>
    <name>amarao</name>
  </author>
  <link rel="alternate" type="text/html" href="https://amarao.dreamwidth.org/"/>
  <link rel="self" type="text/xml" href="https://amarao.dreamwidth.org/data/atom"/>
  <updated>2022-10-18T13:31:56Z</updated>
  <dw:journal username="amarao" type="personal"/>
  <entry>
    <id>tag:dreamwidth.org,2021-01-19:3740325:49410</id>
    <link rel="alternate" type="text/html" href="https://amarao.dreamwidth.org/49410.html"/>
    <link rel="self" type="text/xml" href="https://amarao.dreamwidth.org/data/atom/?itemid=49410"/>
    <title>За что я люблю Rust</title>
    <published>2022-10-18T13:31:56Z</published>
    <updated>2022-10-18T13:31:56Z</updated>
    <category term="c"/>
    <dw:security>public</dw:security>
    <dw:reply-count>5</dw:reply-count>
    <content type="html">Это корректный код из mdadm. Многослойно-хтонический ужас С. Не программистов, которые это писали, самого языка.&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #d4d4d4;background-color: #1e1e1e;font-family: &amp;#39;Droid Sans Mono&amp;#39;, &amp;#39;monospace&amp;#39;, monospace, &amp;#39;Droid Sans Fallback&amp;#39;;font-weight: normal;font-size: 14px;line-height: 19px;white-space: pre;"&gt;&lt;div&gt;&lt;span style="color: #569cd6;"&gt;int&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt; sysfs_fd_get_two(&lt;/span&gt;&lt;span style="color: #569cd6;"&gt;int&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt; fd, &lt;/span&gt;&lt;span style="color: #569cd6;"&gt;unsigned&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt; &lt;/span&gt;&lt;span style="color: #569cd6;"&gt;long&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt; &lt;/span&gt;&lt;span style="color: #569cd6;"&gt;long&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt; *v1, &lt;/span&gt;&lt;span style="color: #569cd6;"&gt;unsigned&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt; &lt;/span&gt;&lt;span style="color: #569cd6;"&gt;long&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt; &lt;/span&gt;&lt;span style="color: #569cd6;"&gt;long&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt; *v2)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #d4d4d4;"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #d4d4d4;"&gt;        &lt;/span&gt;&lt;span style="color: #6a9955;"&gt;/* two numbers in this sysfs file, either&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #6a9955;"&gt;         *  NNN (NNN)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #6a9955;"&gt;         * or&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #6a9955;"&gt;         *  NNN / NNN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #6a9955;"&gt;         */&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #d4d4d4;"&gt;        &lt;/span&gt;&lt;span style="color: #569cd6;"&gt;char&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt; buf[&lt;/span&gt;&lt;span style="color: #b5cea8;"&gt;80&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #d4d4d4;"&gt;        &lt;/span&gt;&lt;span style="color: #569cd6;"&gt;int&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt; n;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #d4d4d4;"&gt;        &lt;/span&gt;&lt;span style="color: #569cd6;"&gt;char&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt; *ep, *ep2;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #d4d4d4;"&gt;                  &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #d4d4d4;"&gt;        lseek(fd, &lt;/span&gt;&lt;span style="color: #b5cea8;"&gt;0&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt;, &lt;/span&gt;&lt;span style="color: #b5cea8;"&gt;0&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #d4d4d4;"&gt;        n = read(fd, buf, &lt;/span&gt;&lt;span style="color: #569cd6;"&gt;sizeof&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt;(buf));&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #d4d4d4;"&gt;        &lt;/span&gt;&lt;span style="color: #569cd6;"&gt;if&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt; (n &amp;lt;= &lt;/span&gt;&lt;span style="color: #b5cea8;"&gt;0&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt; || n == &lt;/span&gt;&lt;span style="color: #569cd6;"&gt;sizeof&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt;(buf))&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #d4d4d4;"&gt;                &lt;/span&gt;&lt;span style="color: #569cd6;"&gt;return&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt; -&lt;/span&gt;&lt;span style="color: #b5cea8;"&gt;2&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #d4d4d4;"&gt;        buf[n] = &lt;/span&gt;&lt;span style="color: #b5cea8;"&gt;0&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #d4d4d4;"&gt;        *v1 = strtoull(buf, &amp;amp;ep, &lt;/span&gt;&lt;span style="color: #b5cea8;"&gt;0&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #d4d4d4;"&gt;        &lt;/span&gt;&lt;span style="color: #569cd6;"&gt;if&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt; (ep == buf || (*ep != &lt;/span&gt;&lt;span style="color: #b5cea8;"&gt;0&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt; &amp;amp;&amp;amp; *ep != &lt;/span&gt;&lt;span style="color: #ce9178;"&gt;'\n'&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt; &amp;amp;&amp;amp; *ep != &lt;/span&gt;&lt;span style="color: #ce9178;"&gt;' '&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt;))&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #d4d4d4;"&gt;                &lt;/span&gt;&lt;span style="color: #569cd6;"&gt;return&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt; -&lt;/span&gt;&lt;span style="color: #b5cea8;"&gt;1&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #d4d4d4;"&gt;        &lt;/span&gt;&lt;span style="color: #569cd6;"&gt;while&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt; (*ep == &lt;/span&gt;&lt;span style="color: #ce9178;"&gt;' '&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt; || *ep == &lt;/span&gt;&lt;span style="color: #ce9178;"&gt;'/'&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt; || *ep == &lt;/span&gt;&lt;span style="color: #ce9178;"&gt;'('&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #d4d4d4;"&gt;                ep++;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #d4d4d4;"&gt;        *v2 = strtoull(ep, &amp;amp;ep2, &lt;/span&gt;&lt;span style="color: #b5cea8;"&gt;0&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt;);    &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #d4d4d4;"&gt;        &lt;/span&gt;&lt;span style="color: #569cd6;"&gt;if&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt; (ep2 == ep || (*ep2 != &lt;/span&gt;&lt;span style="color: #b5cea8;"&gt;0&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt; &amp;amp;&amp;amp; *ep2 != &lt;/span&gt;&lt;span style="color: #ce9178;"&gt;'\n'&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt; &amp;amp;&amp;amp; *ep2 != &lt;/span&gt;&lt;span style="color: #ce9178;"&gt;' '&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt; &amp;amp;&amp;amp; *ep2 != &lt;/span&gt;&lt;span style="color: #ce9178;"&gt;')'&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt;)) {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #d4d4d4;"&gt;                *v2 = *v1;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #d4d4d4;"&gt;                &lt;/span&gt;&lt;span style="color: #569cd6;"&gt;return&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt; &lt;/span&gt;&lt;span style="color: #b5cea8;"&gt;1&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #d4d4d4;"&gt;        }&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #d4d4d4;"&gt;        &lt;/span&gt;&lt;span style="color: #569cd6;"&gt;return&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt; &lt;/span&gt;&lt;span style="color: #b5cea8;"&gt;2&lt;/span&gt;&lt;span style="color: #d4d4d4;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #d4d4d4;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=amarao&amp;ditemid=49410" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
</feed>
