NeoMutt  2024-04-25-1-g3de005
Teaching an old dog new tricks
DOXYGEN
Loading...
Searching...
No Matches
state.c
Go to the documentation of this file.
1
29#include "config.h"
30#include <string.h>
31#include "mutt/lib.h"
32#include "state.h"
33
38void enter_state_free(struct EnterState **ptr)
39{
40 if (!ptr || !*ptr)
41 return;
42
43 struct EnterState *es = *ptr;
44
45 FREE(&es->wbuf);
46 FREE(ptr);
47}
48
54void enter_state_resize(struct EnterState *es, size_t num)
55{
56 if (!es)
57 return;
58
59 if (num <= es->wbuflen)
60 return;
61
62 num = ROUND_UP(num + 4, 128);
63 mutt_mem_realloc(&es->wbuf, num * sizeof(wchar_t));
64
65 memset(es->wbuf + es->wbuflen, 0, (num - es->wbuflen) * sizeof(wchar_t));
66
67 es->wbuflen = num;
68}
69
75{
76 struct EnterState *es = mutt_mem_calloc(1, sizeof(struct EnterState));
77
78 enter_state_resize(es, 1);
79
80 return es;
81}
struct EnterState * enter_state_new(void)
Create a new EnterState.
Definition: state.c:74
void enter_state_free(struct EnterState **ptr)
Free an EnterState.
Definition: state.c:38
void enter_state_resize(struct EnterState *es, size_t num)
Make the buffer bigger.
Definition: state.c:54
void * mutt_mem_calloc(size_t nmemb, size_t size)
Allocate zeroed memory on the heap.
Definition: memory.c:50
void mutt_mem_realloc(void *ptr, size_t size)
Resize a block of memory on the heap.
Definition: memory.c:114
#define FREE(x)
Definition: memory.h:45
#define ROUND_UP(NUM, STEP)
Definition: memory.h:36
Convenience wrapper for the library headers.
Keep track when processing files.
Keep our place when entering a string.
Definition: state.h:32
size_t wbuflen
Length of buffer.
Definition: state.h:34
wchar_t * wbuf
Buffer for the string being entered.
Definition: state.h:33