NeoMutt  2024-12-12-14-g7b49f7
Teaching an old dog new tricks
DOXYGEN
Loading...
Searching...
No Matches
node_conddate.h File Reference

Expando Node for a Conditional Date. More...

+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  NodeCondDatePrivate
 Private data for a Conditional Date -. More...
 

Functions

struct ExpandoNodenode_conddate_parse (const char *str, int did, int uid, const char **parsed_until, struct ExpandoParseError *err)
 Parse a CondDate format string.
 

Detailed Description

Expando Node for a Conditional Date.

Authors
  • Tóth János
  • 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 node_conddate.h.

Function Documentation

◆ node_conddate_parse()

struct ExpandoNode * node_conddate_parse ( const char *  str,
int  did,
int  uid,
const char **  parsed_until,
struct ExpandoParseError err 
)

Parse a CondDate format string.

Parameters
[in]strString to parse
[in]didDomain ID
[in]uidUnique ID
[out]parsed_untilFirst character after parsed string
[out]errBuffer for errors

Definition at line 221 of file node_conddate.c.

224{
225 if (!str || (str[0] == '\0') || !parsed_until || !err)
226 return NULL;
227
228 int count = 0;
229 char period = '\0';
230
231 str++;
232
233 if (isdigit(*str))
234 {
235 unsigned short number = 0;
236 const char *end_ptr = mutt_str_atous(str, &number);
237
238 // NOTE(g0mb4): str is NOT null-terminated
239 if (!end_ptr || (number == USHRT_MAX))
240 {
241 err->position = str;
242 snprintf(err->message, sizeof(err->message), _("Invalid number: %s"), str);
243 return NULL;
244 }
245
246 count = number;
247 str = end_ptr;
248 };
249
250 // Allowed periods: year, month, week, day, hour, minute
251 if (!strchr("ymwdHM", *str))
252 {
253 err->position = str;
254 snprintf(err->message, sizeof(err->message),
255 // L10N: The 'ymwdHM' should not be translated
256 _("Invalid time period: '%c', must be one of 'ymwdHM'"), *str);
257 return NULL;
258 }
259
260 period = *str;
261 *parsed_until = str + 1;
262
263 return node_conddate_new(count, period, did, uid);
264}
const char * mutt_str_atous(const char *str, unsigned short *dst)
Convert ASCII string to an unsigned short.
Definition: atoi.c:270
#define _(a)
Definition: message.h:28
struct ExpandoNode * node_conddate_new(int count, char period, int did, int uid)
Create a new CondDate ExpandoNode.
char message[1024]
Error message.
Definition: parse.h:38
const char * position
Position of error in original string.
Definition: parse.h:39
+ Here is the call graph for this function:
+ Here is the caller graph for this function: