* 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.
+ *
+ * RCSID $Id$
*/
#include <sys/stat.h>
{
continue;
}
- if (!extract_token(&ids, ':', &line))
+ if (!extract_last_token(&ids, ':', &line))
{
DBG1(DBG_CFG, "line %d: missing ':' separator", line_nr);
goto error;
* 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.
+ *
+ * RCSID $Id$
*/
#include <string.h>
}
/**
- * extracts a token ending with a given termination symbol
+ * extracts a token ending with the first occurrence of a given termination symbol
*/
bool extract_token(chunk_t *token, const char termination, chunk_t *src)
{
return TRUE;
}
+/**
+ * extracts a token ending with the last occurrence of a given termination symbol
+ */
+bool extract_last_token(chunk_t *token, const char termination, chunk_t *src)
+{
+ u_char *eot = memrchr(src->ptr, termination, src->len);
+
+ /* initialize empty token */
+ *token = chunk_empty;
+
+ if (eot == NULL) /* termination symbol not found */
+ {
+ return FALSE;
+ }
+
+ /* extract token */
+ token->ptr = src->ptr;
+ token->len = (u_int)(eot - src->ptr);
+
+ /* advance src pointer after termination symbol */
+ src->ptr = eot + 1;
+ src->len -= (token->len + 1);
+
+ return TRUE;
+}
+
/**
* fetches a new line terminated by \n or \r\n
*/
* 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.
+ *
+ * RCSID $Id$
*/
#include <library.h>
bool match(const char *pattern, const chunk_t *ch);
/**
- * @brief Extracts a token ending with a given termination symbol
+ * @brief Extracts a token ending with the first occurence a given termination symbol
*/
bool extract_token(chunk_t *token, const char termination, chunk_t *src);
+/**
+ * @brief Extracts a token ending with the last occurence a given termination symbol
+ */
+bool extract_last_token(chunk_t *token, const char termination, chunk_t *src);
+
/**
* @brief Fetches a new text line terminated by \n or \r\n
*/