users-prolog
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

A question about Create_Socket_Streams in sockets_c.c


From: emacstheviking
Subject: A question about Create_Socket_Streams in sockets_c.c
Date: Wed, 20 May 2015 18:30:32 +0100

As I attempt to complete my native gprolog FastCGI project I am digging into the source code to answer some questions and I have one so far.

I wanted to know what the sock_accept/4 predicate got up to behind the scenes. Traditionally in C you have used the new socket for send() and recv(). Anyway, this is what I saw:

#ifdef _WIN32
  int r;

  Os_Test_Error((fd = _open_osfhandle(sock, _O_BINARY | _O_RDWR | _O_BINARY)));
  Os_Test_Error((r = dup(fd)));
  Os_Test_Error_Null((f_out = fdopen(fd, "w")));
  Os_Test_Error_Null((f_in = fdopen(r, "r")));
#else
  Os_Test_Error((fd = dup(sock)));
  Os_Test_Error_Null((f_in = fdopen(sock, "rt")));
  Os_Test_Error_Null((f_out = fdopen(fd, "wt")));
#endif

I have bolded the code running on OSX... my question is a simple one. what does the "t" stand for. I have checked lots of documentation and nowhere is the "t" mentioned.

I am guessing it might be "text mode" but (a) the GNU docs say that streams created like this are always binary...

REF: http://www.gnu.org/software/libc/manual/html_node/Descriptors-and-Streams.html

and (b) I am dealing with binary packets and I really really don't want any CRLF translations happening without my knowledge.

So, is the "t" redundant and could be removed, can I relax, it all *seems* to work OK but I am just curious to know if the "t" may be an artefact from a really old release back in the day.

Thanks.
Sean Charles.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]