<TITLE>getc</TITLE>
<body bgcolor="#ffffcc">
<hr>
<pre>



<h3>GETC(3)             Linux Programmer's Manual             GETC(3)
</h3>

<h3>NAME
</h3>       fgetc, fgets, getc, getchar, gets, ungetc - input of char-
       acters and strings

<h3>SYNOPSIS
</h3>       #include &lt;stdio.h&gt;

       int fgetc(FILE *stream);
       char *fgets(char *s, int size, FILE *stream);
       int getc(FILE *stream);
       int getchar(void);
       char *gets(char *s);
       int ungetc(int c, FILE *stream);

<h3>DESCRIPTION
</h3>       fgetc() reads the next character from stream  and  returns
       it  as  an  unsigned char cast to an int, or EOF on end of
       file or error.

       getc() is equivalent to fgetc()  except  that  it  may  be
       implemented  as  a  macro which evaluates stream more than
       once.

       getchar() is equivalent to getc(stdin).

       gets() reads a line from stdin into the buffer pointed  to
       by  s  until either a terminating newline or EOF, which it
       replaces with '\0'.  No check for buffer overrun  is  per-
       formed (see BUGS below).

       fgets()  reads  in at most one less than n characters from
       stream and stores them into the buffer pointed  to  by  s.
       Reading  stops after an EOF or a newline.  If a newline is
       read, it is stored into the  buffer.   A  '\0'  is  stored
       after the last character in the buffer.

       ungetc()  pushes  c back to stream, cast to unsigned char,
       where it is  available  for  subsequent  read  operations.
       Pushed  -  back  characters  will  be  returned in reverse
       order; only one pushback is guaranteed.

       Calls to the functions described here can  be  mixed  with
       each  other  and  with calls to other input functions from
       the stdio library for the same input stream.

<h3>RETURN VALUES
</h3>       fgetc(), getc() and getchar() return the character read as
       an  unsigned  char cast to an int or EOF on end of file or
       error.

       gets() and fgets() return s on success, and NULL on end of
       file or error.

       ungetc() returns c on success, or EOF on error.



<h3>GNU                       April 4, 1993                         1
</h3>




<h3>GETC(3)             Linux Programmer's Manual             GETC(3)
</h3>

<h3>CONFORMS TO
</h3>       ANSI - C, POSIX.1

<h3>BUGS
</h3>       Because  it is impossible to tell without knowing the data
       in advance how  many  characters  gets()  will  read,  and
       because  gets() will continue to store characters past the
       end of the buffer, it is extremely dangerous to  use.   It
       has  been  used  to  break computer security.  Use fgets()
       instead.

       It is not advisable to mix calls to input  functions  from
       the stdio library with low - level calls to read() for the
       file descriptor associated  with  the  input  stream;  the
       results  will  be undefined and very probably not what you
       want.

</pre>
<hr>
<h3>SEE ALSO
</h3><p>
<a href=read.htm>read</a>, 
<a href=write.htm>write</a>, 
<a href=fopen.htm>fopen</a>, 
<a href=fread.htm>fread</a>, 
<a href=scanf.htm>scanf</a>, 
<a href=puts.htm>puts</a>, 
<a href=fseek.htm>fseek</a>, 
<a href=ferror.htm>ferror</a>, 
<pre>





































<h3>GNU                       April 4, 1993                         2
</h3>


</pre>
<P>
<hr>
<p>
<center>
<table border=2 width=80%>
<tr align=center>
<td width=25%>
<a href=../cref.html>Top</a>
</td><td width=25%>
<a href=../master_index.html>Master Index</a>
</td><td width=25%>
<a href=../SYNTAX/keywords.html>Keywords</a>
</td><td width=25%>
<a href=../FUNCTIONS/funcref.htm>Functions</a>
</td>
</tr>
</table>
</center>
<p>
<hr>

This manual page was brought to you by <i>mjl_man V-2.0</i>
value='25'>25</option><option value='30'>30</option><option value='35'>35</option><option value='40'>40</option></select></td></tr><tr><td class='label'>space:</td><td class='ctrl'><select name='ignorews' onchange='this.form.submit();'><option value='0' selected='selected'>include</option><option value='1'>ignore</option></select></td></tr><tr><td class='label'>mode:</td><td class='ctrl'><select name='dt' onchange='this.form.submit();'><option value='0' selected='selected'>unified</option><option value='1'>ssdiff</option><option value='2'>stat only</option></select></td></tr><tr><td/><td class='ctrl'><noscript><input type='submit' value='reload'/></noscript></td></tr></table></form></div><table summary='commit info' class='commit-info'>
<tr><th>author</th><td>Pablo Neira &lt;pablo@netfilter.org&gt;</td><td class='right'>2017-01-26 22:56:21 +0100</td></tr>
<tr><th>committer</th><td>David S. Miller &lt;davem@davemloft.net&gt;</td><td class='right'>2017-01-27 10:33:56 -0500</td></tr>
<tr><th>commit</th><td colspan='2' class='oid'><a href='/cgit.cgi/linux/net-next.git/commit/net/sched/act_nat.c?id=92e55f412cffd016cc245a74278cb4d7b89bb3bc'>92e55f412cffd016cc245a74278cb4d7b89bb3bc</a> (<a href='/cgit.cgi/linux/net-next.git/patch/net/sched/act_nat.c?id=92e55f412cffd016cc245a74278cb4d7b89bb3bc'>patch</a>)</td></tr>
<tr><th>tree</th><td colspan='2' class='oid'><a href='/cgit.cgi/linux/net-next.git/tree/?id=92e55f412cffd016cc245a74278cb4d7b89bb3bc'>ab90e2e59c82daae60d2c953ef6c780e1f6e5550</a> /<a href='/cgit.cgi/linux/net-next.git/tree/net/sched/act_nat.c?id=92e55f412cffd016cc245a74278cb4d7b89bb3bc'>net/sched/act_nat.c</a></td></tr>
<tr><th>parent</th><td colspan='2' class='oid'><a href='/cgit.cgi/linux/net-next.git/commit/net/sched/act_nat.c?id=a47b70ea86bdeb3091341f5ae3ef580f1a1ad822'>a47b70ea86bdeb3091341f5ae3ef580f1a1ad822</a> (<a href='/cgit.cgi/linux/net-next.git/diff/net/sched/act_nat.c?id=92e55f412cffd016cc245a74278cb4d7b89bb3bc&amp;id2=a47b70ea86bdeb3091341f5ae3ef580f1a1ad822'>diff</a>)</td></tr></table>
<div class='commit-subject'>tcp: don't annotate mark on control socket from tcp_v6_send_response()</div><div class='commit-msg'>Unlike ipv4, this control socket is shared by all cpus so we cannot use
it as scratchpad area to annotate the mark that we pass to ip6_xmit().

Add a new parameter to ip6_xmit() to indicate the mark. The SCTP socket
family caches the flowi6 structure in the sctp_transport structure, so
we cannot use to carry the mark unless we later on reset it back, which
I discarded since it looks ugly to me.

Fixes: bf99b4ded5f8 ("tcp: fix mark propagation with fwmark_reflect enabled")
Suggested-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Signed-off-by: Pablo Neira Ayuso &lt;pablo@netfilter.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</div><div class='diffstat-header'><a href='/cgit.cgi/linux/net-next.git/diff/?id=92e55f412cffd016cc245a74278cb4d7b89bb3bc'>Diffstat</a> (limited to 'net/sched/act_nat.c')</div><table summary='diffstat' class='diffstat'>