mcabber/src/histolog.c
author Mikael Berthe <mikael@lilotux.net>
Wed, 15 Nov 2006 00:04:57 +0100
changeset 1016 4d3c48844746
parent 899 a833f3d6119a
child 1058 c0d44a9a99bc
permissions -rw-r--r--
Add /roster note Implement XEP-0145 (Annotations) Usage: /roster note [-|note_text]
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
110
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
     1
/*
699
ee03b56b93ee Update Copyright (2006)
Mikael Berthe <mikael@lilotux.net>
parents: 635
diff changeset
     2
 * histolog.c   -- File history handling
395
3e4f2f98c0bf Whitespace cleanup (histolog.c)
Mikael Berthe <mikael@lilotux.net>
parents: 394
diff changeset
     3
 *
699
ee03b56b93ee Update Copyright (2006)
Mikael Berthe <mikael@lilotux.net>
parents: 635
diff changeset
     4
 * Copyright (C) 2005, 2006 Mikael Berthe <bmikael@lists.lilotux.net>
110
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
     5
 *
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
     6
 * This program is free software; you can redistribute it and/or modify
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
     7
 * it under the terms of the GNU General Public License as published by
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
     8
 * the Free Software Foundation; either version 2 of the License, or (at
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
     9
 * your option) any later version.
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    10
 *
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    11
 * This program is distributed in the hope that it will be useful, but
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    12
 * WITHOUT ANY WARRANTY; without even the implied warranty of
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    14
 * General Public License for more details.
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    15
 *
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    16
 * You should have received a copy of the GNU General Public License
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    17
 * along with this program; if not, write to the Free Software
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    18
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    19
 * USA
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    20
 */
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    21
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    22
#include <string.h>
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    23
#include <stdlib.h>
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    24
#include <time.h>
113
8ac67e951eab [/trunk] Changeset 127 by mikael
mikael
parents: 111
diff changeset
    25
#include <ctype.h>
8ac67e951eab [/trunk] Changeset 127 by mikael
mikael
parents: 111
diff changeset
    26
#include <sys/types.h>
8ac67e951eab [/trunk] Changeset 127 by mikael
mikael
parents: 111
diff changeset
    27
#include <sys/stat.h>
8ac67e951eab [/trunk] Changeset 127 by mikael
mikael
parents: 111
diff changeset
    28
#include <fcntl.h>
110
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    29
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    30
#include "histolog.h"
178
cfefae4b6de9 [/trunk] Changeset 190 by mikael
mikael
parents: 177
diff changeset
    31
#include "hbuf.h"
113
8ac67e951eab [/trunk] Changeset 127 by mikael
mikael
parents: 111
diff changeset
    32
#include "jabglue.h"
241
8584f919d9b9 [/trunk] Changeset 254 by mikael
mikael
parents: 221
diff changeset
    33
#include "utils.h"
378
2e6c7b1440d1 Improve debugging/logging
Mikael Berthe <mikael@lilotux.net>
parents: 374
diff changeset
    34
#include "logprint.h"
635
d4119cb85aeb New "load_muc_logs" option
Mikael Berthe <mikael@lilotux.net>
parents: 580
diff changeset
    35
#include "settings.h"
727
1c3620668857 Expand tabs when reading history files
Mikael Berthe <mikael@lilotux.net>
parents: 699
diff changeset
    36
#include "utils.h"
110
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    37
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    38
static guint UseFileLogging;
177
a51ce78a0e2a [/trunk] Changeset 189 by mikael
mikael
parents: 169
diff changeset
    39
static guint FileLoadLogs;
110
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    40
static char *RootDir;
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    41
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    42
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    43
//  user_histo_file()
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    44
// Returns history filename for the given jid
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    45
// Note: the caller *must* free the filename after use (if not null).
111
d896962c16fa [/trunk] Changeset 125 by mikael
mikael
parents: 110
diff changeset
    46
static char *user_histo_file(const char *jid)
110
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    47
{
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    48
  char *filename;
186
888ad9f15346 [/trunk] Changeset 198 by mikael
mikael
parents: 184
diff changeset
    49
  char *lowerid, *p;
178
cfefae4b6de9 [/trunk] Changeset 190 by mikael
mikael
parents: 177
diff changeset
    50
  if (!UseFileLogging && !FileLoadLogs) return NULL;
110
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    51
186
888ad9f15346 [/trunk] Changeset 198 by mikael
mikael
parents: 184
diff changeset
    52
  lowerid = g_strdup(jid);
888ad9f15346 [/trunk] Changeset 198 by mikael
mikael
parents: 184
diff changeset
    53
  for (p=lowerid; *p ; p++)
888ad9f15346 [/trunk] Changeset 198 by mikael
mikael
parents: 184
diff changeset
    54
    *p = tolower(*p);
888ad9f15346 [/trunk] Changeset 198 by mikael
mikael
parents: 184
diff changeset
    55
110
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    56
  filename = g_new(char, strlen(RootDir) + strlen(jid) + 1);
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    57
  strcpy(filename, RootDir);
186
888ad9f15346 [/trunk] Changeset 198 by mikael
mikael
parents: 184
diff changeset
    58
  strcat(filename, lowerid);
888ad9f15346 [/trunk] Changeset 198 by mikael
mikael
parents: 184
diff changeset
    59
  g_free(lowerid);
110
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    60
  return filename;
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    61
}
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    62
178
cfefae4b6de9 [/trunk] Changeset 190 by mikael
mikael
parents: 177
diff changeset
    63
//  write_histo_line()
110
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    64
// Adds a history (multi-)line to the jid's history logfile
113
8ac67e951eab [/trunk] Changeset 127 by mikael
mikael
parents: 111
diff changeset
    65
static void write_histo_line(const char *jid,
8ac67e951eab [/trunk] Changeset 127 by mikael
mikael
parents: 111
diff changeset
    66
        time_t timestamp, guchar type, guchar info, const char *data)
110
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    67
{
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    68
  guint len = 0;
113
8ac67e951eab [/trunk] Changeset 127 by mikael
mikael
parents: 111
diff changeset
    69
  FILE *fp;
110
3d41aca3d878 [/trunk] Changeset 124 by mikael
mikael
parents:
diff changeset
    70
  time_t ts;
113
8ac67e951eab [/trunk] Changeset 127 by mikael
mikael
parents: 111
diff changeset
    71
  const char *p;
178
cfefae4b6de9 [/trunk] Changeset 190 by mikael
mikael
parents: 177
diff changeset
    72
  char *filename;
241
8584f919d9b9 [/trunk] Changeset 254 by mikael
mikael
parents: 221
diff changeset
    73
  char str_ts[20];
273
fe438fe67b6f Error checking when writing log files
mikael@frmp8452
parents: 259
diff changeset
    74
  int err;