parse.h File Reference

Contains some low-level parsing functions, mostly used in the _frm_str family of functions. More...

Go to the source code of this file.

## Macros

#define | LDNS_PARSE_SKIP_SPACE "\f\n\r\v"
#define | LDNS_PARSE_NORMAL " \f\n\r\t\v"
#define | LDNS_PARSE_NO_NL " \t"
#define | LDNS_MAX_LINELEN 10230
#define | LDNS_MAX_KEYWORDLEN 32

## Typedefs

typedef enum ldns_enum_directive | ldns_directive

## Enumerations

enum | ldns_enum_directive { LDNS_DIR_TTL , LDNS_DIR_ORIGIN , LDNS_DIR_INCLUDE }
| different type of directives in zone files We now deal with $TTL, $ORIGIN and $INCLUDE. More...

## Functions

ssize_t | ldns_fget_token (FILE *f, char *token, const char *delim, size_t limit)
| returns a token/char from the stream F.
ssize_t | ldns_fget_token_l (FILE *f, char *token, const char *delim, size_t limit, int *line_nr)
| returns a token/char from the stream F.
ssize_t | ldns_fget_token_l_resolv_conf (FILE *f, char *token, const char *delim, size_t limit, int *line_nr)
| returns a token/char from the stream F.
ldns_status | ldns_fget_token_l_st (FILE *f, char **token, size_t *limit, signed char fixed, const char *delim, int *line_nr)
| returns a token/char from the stream f.
ssize_t | ldns_bget_token (ldns_buffer *b, char *token, const char *delim, size_t limit)
| returns a token/char from the buffer b.
ssize_t | ldns_fget_keyword_data (FILE *f, const char *keyword, const char *k_del, char *data, const char *d_del, size_t data_limit)
ssize_t | ldns_fget_keyword_data_l (FILE *f, const char *keyword, const char *k_del, char *data, const char *d_del, size_t data_limit, int *line_nr)
ssize_t | ldns_bget_keyword_data (ldns_buffer *b, const char *keyword, const char *k_del, char *data, const char *d_del, size_t data_limit)
int | ldns_bgetc (ldns_buffer *buffer)
| returns the next character from a buffer.
void | ldns_bskipcs (ldns_buffer *buffer, const char *s)
| skips all of the characters in the given string in the buffer, moving the position to the first character that is not in *s.
void | ldns_fskipcs (FILE *fp, const char *s)
| skips all of the characters in the given string in the fp, moving the position to the first character that is not in *s.
void | ldns_fskipcs_l (FILE *fp, const char *s, int *line_nr)
| skips all of the characters in the given string in the fp, moving the position to the first character that is not in *s.

## Detailed Description

Contains some low-level parsing functions, mostly used in the _frm_str family of functions.

Definition in file parse.h.

## Macro Definition Documentation

## LDNS_PARSE_SKIP_SPACE

#define LDNS_PARSE_SKIP_SPACE "\f\n\r\v"

Definition at line 20 of file parse.h.

## LDNS_PARSE_NORMAL

#define LDNS_PARSE_NORMAL " \f\n\r\t\v"

Definition at line 21 of file parse.h.

## LDNS_PARSE_NO_NL

#define LDNS_PARSE_NO_NL " \t"

Definition at line 22 of file parse.h.

## LDNS_MAX_LINELEN

#define LDNS_MAX_LINELEN 10230

Definition at line 23 of file parse.h.

## LDNS_MAX_KEYWORDLEN

#define LDNS_MAX_KEYWORDLEN 32

Definition at line 24 of file parse.h.

## Typedef Documentation

## ldns_directive

typedef enum ldns_enum_directive ldns_directive

Definition at line 45 of file parse.h.

## Enumeration Type Documentation

## ldns_enum_directive

enum ldns_enum_directive

different type of directives in zone files We now deal with $TTL, $ORIGIN and $INCLUDE.

The latter is not implemented in ldns (yet)

Enumerator
LDNS_DIR_TTL |
LDNS_DIR_ORIGIN |
LDNS_DIR_INCLUDE |

Definition at line 39 of file parse.h.

## Function Documentation

## ldns_fget_token()

ssize_t ldns_fget_token | ( | FILE * | f,
|  | char * | token,
|  | const char * | delim,
|  | size_t | limit
| ) |  |

returns a token/char from the stream F.

This function deals with ( and ) in the stream, and ignores them when encountered

Parameters

  [in] | *f | the file to read from
  [out] | *token | the read token is put here
  [in] | *delim | chars at which the parsing should stop
  [in] | *limit | how much to read. If 0 the builtin maximum is used

Returns
  0 on error of EOF of the stream F. Otherwise return the length of what is read

Definition at line 25 of file parse.c.

References ldns_fget_token_l().

## ldns_fget_token_l()

ssize_t ldns_fget_token_l | ( | FILE * | f,
|  | char * | token,
|  | const char * | delim,
|  | size_t | limit,
|  | int * | line_nr
| ) |  |

returns a token/char from the stream F.

This function deals with ( and ) in the stream, and ignores when it finds them. This function also handles and ignores zonefile format comments starting with ;

Parameters

  [in] | *f | the file to read from
  [out] | *token | the token is put here
  [in] | *delim | chars at which the parsing should stop
  [in] | *limit | how much to read. If 0 use builtin maximum
  [in] | line_nr | pointer to an integer containing the current line number (for debugging purposes)

Returns
  0 on error of EOF of F otherwise return the length of what is read

Definition at line 247 of file parse.c.

References ldns_fget_token_l_st(), and LDNS_MAX_LINELEN.

## ldns_fget_token_l_resolv_conf()

ssize_t ldns_fget_token_l_resolv_conf | ( | FILE * | f,
|  | char * | token,
|  | const char * | delim,
|  | size_t | limit,
|  | int * | line_nr
| ) |  |

returns a token/char from the stream F.

This function deals with ( and ) in the stream, and ignores when it finds them. This function also handles and ignores comments such as they can be used in resolv.conf files. Starting with either ; or #.

Parameters

  [in] | *f | the file to read from
  [out] | *token | the token is put here
  [in] | *delim | chars at which the parsing should stop
  [in] | *limit | how much to read. If 0 use builtin maximum
  [in] | line_nr | pointer to an integer containing the current line number (for debugging purposes)

Returns
  0 on error of EOF of F otherwise return the length of what is read

Definition at line 234 of file parse.c.

References LDNS_MAX_LINELEN, and resolv_conf_file_type.

## ldns_fget_token_l_st()

ldns_status ldns_fget_token_l_st | ( | FILE * | f,
|  | char ** | token,
|  | size_t * | limit,
|  | signed char | fixed,
|  | const char * | delim,
|  | int * | line_nr
| ) |  |

returns a token/char from the stream f.

This function deals with ( and ) in the stream, and ignores when it finds them.

Parameters

  [in] | *f | the file to read from

  [out]

  **token

  this should be a reference to a string buffer in which the token is put. A new buffer will be allocated when *token is NULL and fixed is false. If the buffer is too small to hold the token, the buffer is reallocated with double the size (of limit). If fixed is true, the string buffer may not be NULL and limit must be set to the buffer size. In that case no reallocations will be done.

  [in,out] | *limit | reference to the size of the token buffer. Will be reset to the new limit of the token buffer if the buffer is reallocated.
  [in] | fixed | If fixed is false, the token buffer is allowed to grow when needed (by way of reallocation). If true, the token buffer will not be resized.
  [in] | *delim | chars at which the parsing should stop
  [in] | line_nr | pointer to an integer containing the current line number (for debugging purposes)

Returns
  LDNS_STATUS_OK on success, LDNS_STATUS_SYNTAX_EMPTY when no token was read and an error otherwise.

## ldns_bget_token()

ssize_t ldns_bget_token | ( | ldns_buffer * | b,
|  | char * | token,
|  | const char * | delim,
|  | size_t | limit
| ) |  |

returns a token/char from the buffer b.

This function deals with ( and ) in the buffer, and ignores when it finds them.

Parameters

  [in] | *b | the buffer to read from
  [out] | *token | the token is put here
  [in] | *delim | chars at which the parsing should stop
  [in] | *limit | how much to read. If 0 the builtin maximum is used

Returns
  0 on error of EOF of b. Otherwise return the length of what is read

Definition at line 301 of file parse.c.

References ldns_bgetc(), ldns_bskipcs(), and LDNS_PARSE_NORMAL.

## ldns_fget_keyword_data()

ssize_t ldns_fget_keyword_data | ( | FILE * | f,
|  | const char * | keyword,
|  | const char * | k_del,
|  | char * | data,
|  | const char * | d_del,
|  | size_t | data_limit
| ) |  |

Definition at line 258 of file parse.c.

References ldns_fget_keyword_data_l().

## ldns_fget_keyword_data_l()

ssize_t ldns_fget_keyword_data_l | ( | FILE * | f,
|  | const char * | keyword,
|  | const char * | k_del,
|  | char * | data,
|  | const char * | d_del,
|  | size_t | data_limit,
|  | int * | line_nr
| ) |  |

Definition at line 266 of file parse.c.

References ldns_fget_token(), ldns_fget_token_l(), LDNS_FREE, LDNS_MAX_KEYWORDLEN, and LDNS_XMALLOC.

## ldns_bget_keyword_data()

ssize_t ldns_bget_keyword_data | ( | ldns_buffer * | b,
|  | const char * | keyword,
|  | const char * | k_del,
|  | char * | data,
|  | const char * | d_del,
|  | size_t | data_limit
| ) |  |

Definition at line 485 of file parse.c.

References ldns_bget_token(), LDNS_FREE, LDNS_MAX_KEYWORDLEN, and LDNS_XMALLOC.

## ldns_bgetc()

int ldns_bgetc | ( | ldns_buffer * | buffer | ) |

returns the next character from a buffer.

Advances the position pointer with 1. When end of buffer is reached returns EOF. This is the buffer's equivalent for getc().

Parameters

  [in] | *buffer | buffer to read from

Returns
  EOF on failure otherwise return the character

Definition at line 157 of file buffer.c.

References ldns_struct_buffer::_position.

## ldns_bskipcs()

void ldns_bskipcs | ( | ldns_buffer * | buffer,
|  | const char * | s
| ) |  |

skips all of the characters in the given string in the buffer, moving the position to the first character that is not in *s.

Parameters

  [in] | *buffer | buffer to use
  [in] | *s | characters to skip

Returns
  void

Definition at line 431 of file parse.c.

References ldns_struct_buffer::_limit, and ldns_struct_buffer::_position.

## ldns_fskipcs()

void ldns_fskipcs | ( | FILE * | fp,
|  | const char * | s
| ) |  |

skips all of the characters in the given string in the fp, moving the position to the first character that is not in *s.

Parameters

  [in] | *fp | file to use
  [in] | *s | characters to skip

Returns
  void

Definition at line 454 of file parse.c.

References ldns_fskipcs_l().

## ldns_fskipcs_l()

void ldns_fskipcs_l | ( | FILE * | fp,
|  | const char * | s,
|  | int * | line_nr
| ) |  |

skips all of the characters in the given string in the fp, moving the position to the first character that is not in *s.

Parameters

  [in] | *fp | file to use
  [in] | *s | characters to skip
  [in] | line_nr | pointer to an integer containing the current line number (for debugging purposes)

Returns
  void

Definition at line 460 of file parse.c.