<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Hello,<br>
    <br>
    I believe that this is already a known and fixed issue. The fix[1]
    will be part of the R16B01 release or you can get the latest maint
    from github.<br>
    <br>
    If this does not fix your issue please use git to send in your
    proposed fixes as described at github.com[2].<br>
    <br>
    Lukas<br>
    <br>
       [1]:
    <a class="moz-txt-link-freetext" href="http://erlang.org/pipermail/erlang-patches/2013-February/003611.html">http://erlang.org/pipermail/erlang-patches/2013-February/003611.html</a><br>
       [2]: <a class="moz-txt-link-freetext" href="https://github.com/erlang/otp/wiki/Submitting-patches">https://github.com/erlang/otp/wiki/Submitting-patches</a><br>
    <br>
    <div class="moz-cite-prefix">On 23/04/13 01:16, John Bard wrote:<br>
    </div>
    <blockquote
cite="mid:CAJqXVEDcRNY=_Zep_syosmxDCCZQCHmjCHMuDNfkr0Wau+ae3Q@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <p class="">disksup:get_disk_data() is returning garbage in OS X
          10.8 (on my system)</p>
        <p class=""><br>
        </p>
        <p class="">[I have verified this in R15B02, R15B03 & 16B]<br>
        </p>
        <p class=""><br>
        </p>
        <p class="">1> ok = application:start(sasl).</p>
        <p class=""><snip></p>
        <p class="">2> ok = application:start(os_mon).</p>
        <p class=""><snip></p>
        <p class="">3> disksup:get_disk_data().</p>
        <p class="">[{"18704735",244277768,31}]</p>
        <p class="">4> </p>
        <p class=""><br>
        </p>
        <p class="">The expectation is: [{"/",244277768,31}]</p>
        <p class=""><br>
        </p>
        <p class="">The problem is that the format of the df command
          changed in OS X 10.8 for some reason (at least it is different
          on my machine... I checked and I don't appear to have any bash
          functions or aliases getting in the way).</p>
        <p class=""><br>
        </p>
        <p class="">In OS X 10.7.? (a colleague's mac mini: hdd):</p>
        <p class="">$ df -k -t ufs,hfs</p>
        <p class="">Filesystem   1024-blocks      Used Available
          Capacity  Mounted on</p>
        <p class="">/dev/disk0s2   487546976 156364392 330926584    33%
             /</p>
        <p class="">$</p>
        <p class=""><br>
        </p>
        <p class="">The 6th column is "Mounted on".</p>
        <p class=""><br>
        </p>
        <p class="">In OS X 10.8.3 (my mac book pro: ssd):</p>
        <p class="">$ df -k -t ufs,hfs</p>
        <p class="">Filesystem   1024-blocks     Used Available Capacity
           iused    ifree %iused  Mounted on</p>
        <p class="">/dev/disk0s2   244277768 74564136 169457632    31%
          18705032 42364408   31%   /</p>
        <p class="">$</p>
        <p class=""><br>
        </p>
        <p class="">The 6th column is "iused" instead of "Mounted on".</p>
        <p class=""><br>
        </p>
        <p class=""><br>
        </p>
        <p class="">If this is a simply difference in 10.8 [darwin 12]
          and isn't a more complex situation than that (macs
          pre-installed with ssds vs. hdds? some configuration
          somewhere?), a fix could be:</p>
        <p class="">[I toyed around in R16B, but the code is pretty much
          the same in R15B03 and I assume the same in R15B02]</p>
        <p class=""><br>
        </p>
        <p class="">in os_mon's disksup.erl:</p>
        <p class=""><br>
        </p>
        <p class="">add a guard for the specific darwin in init's case
          statement:</p>
        <p class=""><br>
        </p>
        <p class="">Port = case OS of</p>
        <p class="">    {unix, Flavor} when Flavor==sunos4;</p>
        <p class="">            Flavor==solaris;</p>
        <p class="">            Flavor==freebsd;</p>
        <p class="">            Flavor==dragonfly;</p>
        <p class="">            Flavor==darwin;</p>
        <p class="">            Flavor==darwin_12;</p>
        <p class="">            Flavor==linux;</p>
        <p class="">            Flavor==openbsd;</p>
        <p class="">            Flavor==netbsd;</p>
        <p class="">            Flavor==irix64;</p>
        <p class="">            Flavor==irix -></p>
        <p class="">        start_portprogram();</p>
        <p class="">    {win32, _OSname} -></p>
        <p class="">        not_used;</p>
        <p class="">    _ -></p>
        <p class="">        exit({unsupported_os, OS})</p>
        <p class="">    end,</p>
        <p class=""><br>
        </p>
        <p class="">add a clause to the case statement in the get_os()
          function:</p>
        <p class=""><br>
        </p>
        <p class="">get_os() -></p>
        <p class="">    case os:type() of</p>
        <p class="">        {unix, sunos} -></p>
        <p class="">            case os:version() of</p>
        <p class="">                {5,_,_} -> {unix, solaris};</p>
        <p class="">                {4,_,_} -> {unix, sunos4};</p>
        <p class="">                V -> exit({unknown_os_version,
          V})</p>
        <p class="">            end;</p>
        <p class="">        {unix, irix64} -></p>
        <p class="">            {unix, irix};</p>
        <p class="">        {unix, darwin} -></p>
        <p class="">            case os:version() of</p>
        <p class="">                {12,_,_} -> {unix, darwin_12};</p>
        <p class="">                _ -> {unix, darwin}</p>
        <p class="">            end;</p>
        <p class="">        OS -></p>
        <p class="">            OS</p>
        <p class="">    end.</p>
        <p class=""><br>
        </p>
        <p class=""><br>
        </p>
        <p class="">add a function that will pattern match on the new
          darwin_12 atom specified in the other places and will call
          into a function to parse the df command differently:</p>
        <p class=""><br>
        </p>
        <p class="">check_disk_space({unix, darwin_12}, Port, Threshold)
          -></p>
        <p class="">    Result = my_cmd("/bin/df -k -t ufs,hfs", Port),</p>
        <p class="">    check_disks_darwin_12(skip_to_eol(Result),
          Threshold);</p>
        <p class=""><br>
        </p>
        <p class=""><br>
        </p>
        <p class="">and add that new function to parse the df command:</p>
        <p class=""><br>
        </p>
        <p class="">%% Special cases like this annoy me...</p>
        <p class="">check_disks_darwin_12("", _Threshold) -></p>
        <p class="">    [];</p>
        <p class="">check_disks_darwin_12("\n", _Threshold) -></p>
        <p class="">    [];</p>
        <p class="">check_disks_darwin_12(Str, Threshold) -></p>
        <p class="">    case io_lib:fread("~s~d~d~d~d%~d~d~d%~s", Str)
          of</p>
        <p class="">        {ok, [_FS, KB, _Used, _Avail, Cap, _IUsed,
          _IFree, _ICap, MntOn], RestStr} -></p>
        <p class="">            if</p>
        <p class="">                Cap >= Threshold -></p>
        <p class="">                    set_alarm({disk_almost_full,
          MntOn}, []);</p>
        <p class="">                true -></p>
        <p class="">                    clear_alarm({disk_almost_full,
          MntOn})</p>
        <p class="">            end,</p>
        <p class="">            [{MntOn, KB, Cap} |
          check_disks_darwin_12(RestStr, Threshold)];</p>
        <p class="">        _Other -></p>
        <p class="">           
          check_disks_darwin_12(skip_to_eol(Str),Threshold)</p>
        <p class="">    end.</p>
        <div><br>
        </div>
        <div><br>
        </div>
        <div style="">Sorry if I butchered the whitespace (gmail ate the
          tabs, so I had to manually fix the whitespace with consistent
          spaces).</div>
        <div><br>
        </div>
        -- <br>
        Ryan
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
erlang-bugs mailing list
<a class="moz-txt-link-abbreviated" href="mailto:erlang-bugs@erlang.org">erlang-bugs@erlang.org</a>
<a class="moz-txt-link-freetext" href="http://erlang.org/mailman/listinfo/erlang-bugs">http://erlang.org/mailman/listinfo/erlang-bugs</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>