NeoMutt  2021-02-05-89-gabe350
Teaching an old dog new tricks
DOXYGEN
state.c File Reference
#include "config.h"
#include <limits.h>
#include <stdarg.h>
#include <wchar.h>
#include "mutt/lib.h"
#include "state.h"
#include "mutt_globals.h"
+ Include dependency graph for state.c:

Go to the source code of this file.

Functions

void state_mark_attach (struct State *s)
 Write a unique marker around content. More...
 
void state_mark_protected_header (struct State *s)
 Write a unique marker around protected headers. More...
 
void state_attach_puts (struct State *s, const char *t)
 Write a string to the state. More...
 
static int state_putwc (struct State *s, wchar_t wc)
 Write a wide character to the state. More...
 
int state_putws (struct State *s, const wchar_t *ws)
 Write a wide string to the state. More...
 
void state_prefix_putc (struct State *s, char c)
 Write a prefixed character to the state. More...
 
int state_printf (struct State *s, const char *fmt,...)
 Write a formatted string to the State. More...
 
void state_prefix_put (struct State *s, const char *buf, size_t buflen)
 Write a prefixed fixed-string to the State. More...
 

Detailed Description

Keep track when processing files

Authors
  • Richard Russon

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Definition in file state.c.

Function Documentation

◆ state_mark_attach()

void state_mark_attach ( struct State s)

Write a unique marker around content.

Parameters
sState to write to

Definition at line 41 of file state.c.

42 {
43  if (!s || !s->fp_out)
44  return;
45  if ((s->flags & MUTT_DISPLAY) &&
46  (!C_Pager || mutt_str_equal(C_Pager, "builtin")))
47  {
49  }
50 }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ state_mark_protected_header()

void state_mark_protected_header ( struct State s)

Write a unique marker around protected headers.

Parameters
sState to write to

Definition at line 56 of file state.c.

57 {
58  if ((s->flags & MUTT_DISPLAY) &&
59  (!C_Pager || mutt_str_equal(C_Pager, "builtin")))
60  {
62  }
63 }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ state_attach_puts()

void state_attach_puts ( struct State s,
const char *  t 
)

Write a string to the state.

Parameters
sState to write to
tText to write

Definition at line 70 of file state.c.

71 {
72  if (!s || !s->fp_out || !t)
73  return;
74 
75  if (*t != '\n')
77  while (*t)
78  {
79  state_putc(s, *t);
80  if ((*t++ == '\n') && *t)
81  if (*t != '\n')
83  }
84 }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ state_putwc()

static int state_putwc ( struct State s,
wchar_t  wc 
)
static

Write a wide character to the state.

Parameters
sState to write to
wcWide character to write
Return values
0Success
-1Error

Definition at line 93 of file state.c.

94 {
95  char mb[MB_LEN_MAX] = { 0 };
96  int rc;
97 
98  rc = wcrtomb(mb, wc, NULL);
99  if (rc < 0)
100  return rc;
101  if (fputs(mb, s->fp_out) == EOF)
102  return -1;
103  return 0;
104 }
+ Here is the caller graph for this function:

◆ state_putws()

int state_putws ( struct State s,
const wchar_t *  ws 
)

Write a wide string to the state.

Parameters
sState to write to
wsWide string to write
Return values
0Success
-1Error

Definition at line 113 of file state.c.

114 {
115  const wchar_t *p = ws;
116 
117  while (p && (*p != L'\0'))
118  {
119  if (state_putwc(s, *p) < 0)
120  return -1;
121  p++;
122  }
123  return 0;
124 }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ state_prefix_putc()

void state_prefix_putc ( struct State s,
char  c 
)

Write a prefixed character to the state.

Parameters
sState to write to
cCharacter to write

Definition at line 131 of file state.c.

132 {
133  if (s->flags & MUTT_PENDINGPREFIX)
134  {
136  if (s->prefix)
137  state_puts(s, s->prefix);
138  }
139 
140  state_putc(s, c);
141 
142  if (c == '\n')
143  state_set_prefix(s);
144 }
+ Here is the caller graph for this function:

◆ state_printf()

int state_printf ( struct State s,
const char *  fmt,
  ... 
)

Write a formatted string to the State.

Parameters
sState to write to
fmtprintf format string
...Arguments to formatting string
Return values
numNumber of characters written

Definition at line 153 of file state.c.

154 {
155  int rc;
156  va_list ap;
157 
158  va_start(ap, fmt);
159  rc = vfprintf(s->fp_out, fmt, ap);
160  va_end(ap);
161 
162  return rc;
163 }
+ Here is the caller graph for this function:

◆ state_prefix_put()

void state_prefix_put ( struct State s,
const char *  buf,
size_t  buflen 
)

Write a prefixed fixed-string to the State.

Parameters
sState to write to
bufString to write
buflenLength of string

Definition at line 171 of file state.c.

172 {
173  if (s->prefix)
174  {
175  while (buflen--)
176  state_prefix_putc(s, *buf++);
177  }
178  else
179  fwrite(buf, buflen, 1, s->fp_out);
180 }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:
MUTT_DISPLAY
#define MUTT_DISPLAY
Output is displayed to the user.
Definition: state.h:32
state_putc
#define state_putc(STATE, STR)
Definition: state.h:56
State::fp_out
FILE * fp_out
File to write to.
Definition: state.h:47
State::prefix
char * prefix
String to add to the beginning of each output line.
Definition: state.h:48
mutt_str_equal
bool mutt_str_equal(const char *a, const char *b)
Compare two strings.
Definition: string.c:871
AttachmentMarker
WHERE char AttachmentMarker[256]
Unique ANSI string to mark PGP messages in an email.
Definition: mutt_globals.h:46
ProtectedHeaderMarker
WHERE char ProtectedHeaderMarker[256]
Unique ANSI string to mark protected headers in an email.
Definition: mutt_globals.h:47
state_prefix_putc
void state_prefix_putc(struct State *s, char c)
Write a prefixed character to the state.
Definition: state.c:131
C_Pager
WHERE char * C_Pager
Config: External command for viewing messages, or 'builtin' to use NeoMutt's.
Definition: mutt_globals.h:99
MUTT_PENDINGPREFIX
#define MUTT_PENDINGPREFIX
Prefix to write, but character must follow.
Definition: state.h:34
state_set_prefix
#define state_set_prefix(state)
Definition: state.h:53
state_putwc
static int state_putwc(struct State *s, wchar_t wc)
Write a wide character to the state.
Definition: state.c:93
State::flags
StateFlags flags
Flags, e.g. MUTT_DISPLAY.
Definition: state.h:49
state_reset_prefix
#define state_reset_prefix(state)
Definition: state.h:54
state_puts
#define state_puts(STATE, STR)
Definition: state.h:55
state_mark_attach
void state_mark_attach(struct State *s)
Write a unique marker around content.
Definition: state.c:41