Use strerror() not strerror_r()
authorBrian Behlendorf <behlendorf1@llnl.gov>
Mon, 28 Jan 2013 17:53:51 +0000 (09:53 -0800)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Mon, 28 Jan 2013 18:02:38 +0000 (10:02 -0800)
commit14ee71efbc28086406bb255f2292b9535d845625
tree2ef4640510a1e4d2bb84c40d9cf8c3995b01068a
parentddc07fa57a2e002822ae30f2e18c5427f4e3eb74
Use strerror() not strerror_r()

The differ() function used strerror_r() instead of strerror() because
it allowed the error message to be directly copied in to a buffer.
This causes two issues under Linux.

* There are two versions of strerror_r() available an XSI-compliant
  version which returns an 'int' error code.  And a GNU-specific
  version which return a 'char *' to the resulting error string.

    int strerror_r(int errnum, char *buf, size_t buflen);   /* XSI */
    char *strerror_r(int errnum, char *buf, size_t buflen); /* GNU */

* The most recent versions of strerror_r() are annotated with the
  warn_unused_result attribute.  This causes the following warning
  since the upstream implementation casts the result to void.

    warning: ignoring return value of 'strerror_r', declared with
    attribute warn_unused_result [-Wunused-result]

The cleanest way to resolve both of these problems is just to use
strerror() and make a copy of the result in to the buffer.  This
resolves both issues and this is the only instance of strerror_r()
in the code base.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #1231
lib/libzfs/libzfs_diff.c