Hacker Newsnew | past | comments | ask | show | jobs | submit | rainbowgarden's commentslogin

Here's the link to the project repository: https://github.com/arjun024/wikicoding


It will overflow to filler[3]. ie the 4th byte. see the struct sockaddr:

	 * first 2 bytes: Address Family,

	 * next 2 bytes: port,

	 * next 2 bytes: ipaddr,

	 * next 8 bytes: zeroes.
so filler[2] and filler[3] will form a short which will contain the port number.


"It will overflow to filler[3]"

Not with any correct C compiler, it wont. Here's a simple test program I ran on Linux:

    #include <stdio.h>

    int main()
    {
      char filler[16] = {0};
      int i;
      unsigned short s1 = 0xFFFF;
      unsigned long  l1 = 0xFFFFFFFF;

      filler[0] = (unsigned short)s1;
      filler[2] = (unsigned short)s1;
      filler[4] = (unsigned long)l1;

      for (i = 0; i < 8; i++)
        printf("filler[%d] = %d\n", i, filler[i]);
    }
And when you run it, all the elements of filler that haven't been explicitly assigned to are still 0, even though the unsigned shorts and longs that were assigned to them have '1' in all their bits:

    $ gcc filler.c
    $ ./a.out
    filler[0] = -1
    filler[1] = 0
    filler[2] = -1
    filler[3] = 0
    filler[4] = -1
    filler[5] = 0
    filler[6] = 0
    filler[7] = 0
Since htons() swaps the bytes in its result, you should just be able to assign the value it returns directly:

    struct sockaddr_in serv_addr;
    ...
    serv_addr.sin_port = htons(port);
(See, for example: https://en.wikibooks.org/wiki/C_Programming/Networking_in_UN...)


not better than splitting a 1000 character message??


When dealing with floats, it should be noted that unlike a 32-bit `int` which is a signed 2's complement representation; a 32-bit `float` follows single precision floating point representation which is 1 sign bit, 8 exponent bits and 23 mantissa bits. Not that there's anything wrong with the article, i just wanted to put it here.


Can you blame Linus for saying that? I can't speak with precision about 1999, but someone assumed to have a CS education should know the difference between semaphore and spinlock.


Whether they did or didn't know about the definitions, they should have at least looked it up to confirm before posting to the Linux Kernel Dev list or taking on Linus on the matter.


'sandwich' gives a great result. there is some song called sandwiches and it's taking that into context. may be looking for the closest match of the given word.


it's fun to browse through. I started with "India", ended up at Charlie Sheen ..


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: