Beispiel #1
0
static gboolean
tf_num_parse(gint argc, GString *argv[],
	     const gchar *func_name, gint64 *n, gint64 *m)
{
  if (argc != 2)
    {
      msg_debug("Template function requires two arguments.",
		evt_tag_str("function", func_name), NULL);
      return FALSE;
    }

  if (!parse_number_with_suffix(argv[0]->str, n))
    {
      msg_debug("Parsing failed, template function's first argument is not a number",
		evt_tag_str("function", func_name),
		evt_tag_str("arg1", argv[0]->str), NULL);
      return FALSE;
    }

  if (!parse_number_with_suffix(argv[1]->str, m))
    {
      msg_debug("Parsing failed, template function's second argument is not a number",
		evt_tag_str("function", func_name),
		evt_tag_str("arg2", argv[1]->str), NULL);
      return FALSE;
    }

  return TRUE;
}
static void
assert_parse_with_suffix_fails(const gchar *str)
{
  gint64 n;
  gboolean res;

  res = parse_number_with_suffix(str, &n);
  cr_assert_eq(res,FALSE, "Parsing (w/ suffix) %s succeeded, while expecting failure", str);
}
static void
assert_parse_with_suffix(const gchar *str, gint64 expected)
{
  gint64 n;
  gboolean res;

  res = parse_number_with_suffix(str, &n);

  cr_assert_eq(res,TRUE,"Parsing (w/ suffix) %s failed", str);
  cr_assert_eq(n,expected,"Parsing (w/ suffix) %s failed", str);
}
static void
tf_string_padding(LogMessage *msg, gint argc, GString *argv[], GString *result)
{
  GString *text = argv[0];
  GString *padding;
  gint64 width, i;
  
  if (argc <= 1)
    {
      msg_debug("Not enough arguments for padding template function!", NULL);
      return;
    }

  if (!parse_number_with_suffix(argv[1]->str, &width))
    {
      msg_debug("Padding template function requires a number as second argument!", NULL);
      return;
    }

  if (argc <= 2)
    padding = g_string_new(" "); 
  else
    padding = argv[2];

  if (text->len < width)
    {
      for (i = 0; i < width - text->len; i++)
        {
          g_string_append_c(result, *(padding->str + (i % padding->len)));
        }  
    }

  g_string_append_len(result, text->str, text->len);

  if (argc <= 2)
    {
      g_string_free(padding, TRUE);
    }
}