You can't do it this way, you need a union. This will break some 
compiler's strict aliasing.

--
Tom.

On 23/09/15 08:49, Carsten Haitzler (Rasterman) wrote:
> raster pushed a commit to branch master.
>
> http://git.enlightenment.org/apps/rage.git/commit/?id=1d492a68475d9d3c387691445dbeaacafd92a384
>
> commit 1d492a68475d9d3c387691445dbeaacafd92a384
> Author: Carsten Haitzler (Rasterman) <[email protected]>
> Date:   Wed Sep 23 16:48:41 2015 +0900
>
>      rage - avoid htonl due to windows issues - makes things simpler
> ---
>   src/bin/sha1.c | 22 +++++++++++++++-------
>   1 file changed, 15 insertions(+), 7 deletions(-)
>
> diff --git a/src/bin/sha1.c b/src/bin/sha1.c
> index 94661c3..84a943b 100644
> --- a/src/bin/sha1.c
> +++ b/src/bin/sha1.c
> @@ -1,8 +1,16 @@
> -#include <string.h>
> -#include <arpa/inet.h>
> +#include <Eina.h>
>
>   #define SHSH(n, v) ((((v) << (n)) & 0xffffffff) | ((v) >> (32 - (n))))
>
> +static inline int
> +int_to_bigendian(int in)
> +{
> +   static const unsigned char test[4] = { 0x11, 0x22, 0x33, 0x44 };
> +   static const unsigned int *test_i = (const unsigned int *)test;
> +   if (test_i[0] == 0x44332211) return eina_swap32(in);
> +   return in;
> +}
> +
>   int
>   sha1(unsigned char *data, int size, unsigned char *dst)
>   {
> @@ -85,11 +93,11 @@ sha1(unsigned char *data, int size, unsigned char *dst)
>             }
>        }
>
> -   t = htonl(digest[0]); digest[0] = t;
> -   t = htonl(digest[1]); digest[1] = t;
> -   t = htonl(digest[2]); digest[2] = t;
> -   t = htonl(digest[3]); digest[3] = t;
> -   t = htonl(digest[4]); digest[4] = t;
> +   t = int_to_bigendian(digest[0]); digest[0] = t;
> +   t = int_to_bigendian(digest[1]); digest[1] = t;
> +   t = int_to_bigendian(digest[2]); digest[2] = t;
> +   t = int_to_bigendian(digest[3]); digest[3] = t;
> +   t = int_to_bigendian(digest[4]); digest[4] = t;
>
>      memcpy(dst, digest, 5 * 4);
>      return 1;
>


------------------------------------------------------------------------------
Monitor Your Dynamic Infrastructure at Any Scale With Datadog!
Get real-time metrics from all of your servers, apps and tools
in one place.
SourceForge users - Click here to start your Free Trial of Datadog now!
http://pubads.g.doubleclick.net/gampad/clk?id=241902991&iu=/4140
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to