NeoMutt  2022-04-29-178-g3b62e6
Teaching an old dog new tricks
DOXYGEN
tag.c
Go to the documentation of this file.
1
29#include "config.h"
30#include <stddef.h>
31#include <ctype.h>
32#include "mutt/lib.h"
33#include "notmuch/tag.h"
34
40{
41 ARRAY_FREE(&tags->tags);
42 FREE(&tags->tag_str);
43}
44
51{
52 char *buf = mutt_str_dup(tag_str);
53
54 struct TagArray tags = { ARRAY_HEAD_INITIALIZER, buf };
55
56 char *end = NULL;
57 char *tag = NULL;
58
59 for (char *p = buf; p && (p[0] != '\0'); p++)
60 {
61 if (!tag && isspace(*p))
62 continue;
63 if (!tag)
64 tag = p; /* begin of the tag */
65 if ((p[0] == ',') || (p[0] == ' '))
66 end = p; /* terminate the tag */
67 else if (p[1] == '\0')
68 end = p + 1; /* end of optstr */
69 if (!tag || !end)
70 continue;
71 if (tag >= end)
72 break;
73 *end = '\0';
74
75 ARRAY_ADD(&tags.tags, tag);
76
77 end = NULL;
78 tag = NULL;
79 }
80
81 return tags;
82}
#define ARRAY_ADD(head, elem)
Add an element at the end of the array.
Definition: array.h:155
#define ARRAY_FREE(head)
Release all memory.
Definition: array.h:203
#define ARRAY_HEAD_INITIALIZER
Static initializer for arrays.
Definition: array.h:57
#define FREE(x)
Definition: memory.h:43
Convenience wrapper for the library headers.
char * mutt_str_dup(const char *str)
Copy a string, safely.
Definition: string.c:250
Array of Notmuch tags.
Definition: tag.h:37
struct Tags tags
Tags.
Definition: tag.h:38
char * tag_str
Source string.
Definition: tag.h:39
void nm_tag_array_free(struct TagArray *tags)
Free all memory of a TagArray.
Definition: tag.c:39
struct TagArray nm_tag_str_to_tags(const char *tag_str)
Converts a comma and/or space-delimited string of tags into an array.
Definition: tag.c:50
Notmuch tag functions.