char *gtr_localtime2(char *buf, time_t time, size_t buflen)
{
    char *tmp = gtr_localtime(time);
    g_strlcpy(buf, tmp, buflen);
    g_free(tmp);
    return buf;
}
Exemple #2
0
static void
doSave (GtkWindow * parent, struct MsgData * data, const char * filename)
{
  FILE * fp = fopen (filename, "w+");

  if (!fp)
    {
      GtkWidget * w = gtk_message_dialog_new (parent, 0, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, _("Couldn't save \"%s\""), filename);
      gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (w), "%s", g_strerror (errno));
      g_signal_connect_swapped (w, "response", G_CALLBACK (gtk_widget_destroy), w);
      gtk_widget_show (w);
    }
  else
    {
      GtkTreeIter iter;
      GtkTreeModel * model = GTK_TREE_MODEL (data->sort);
      if (gtk_tree_model_iter_children (model, &iter, NULL)) do
        {
          char * date;
          const char * levelStr;
          const struct tr_log_message * node;

          gtk_tree_model_get (model, &iter, COL_TR_MSG, &node, -1);
          date = gtr_localtime (node->when);
          switch (node->level)
           {
             case TR_LOG_DEBUG:
               levelStr = "debug";
               break;

             case TR_LOG_ERROR:
               levelStr = "error";
               break;

             default:
               levelStr = "     ";
               break;
            }

          fprintf (fp, "%s\t%s\t%s\t%s\n", date, levelStr,
                   (node->name ? node->name : ""),
                   (node->message ? node->message : ""));
          g_free (date);
        }
      while (gtk_tree_model_iter_next (model, &iter));

      fclose (fp);
    }
}