mcabber/src/utils.c
author mikael
Thu, 28 Apr 2005 18:47:43 +0000
changeset 138 250f872c722f
parent 81 0bd578421ce9
child 241 8584f919d9b9
permissions -rw-r--r--
[/trunk] Changeset 150 by mikael * Debug defaults to disabled, but can be enabled with the "debug" option.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
24
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
     1
#include <stdio.h>
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
     2
#include <stdlib.h>
77
32f54ad6d729 [/trunk] Changeset 91 by mikael
mikael
parents: 76
diff changeset
     3
#include <string.h>
24
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
     4
#include <stdarg.h>
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
     5
#include <time.h>
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
     6
76
a8f8492abd44 [/trunk] Changeset 90 by mikael
mikael
parents: 24
diff changeset
     7
static int DebugEnabled;
77
32f54ad6d729 [/trunk] Changeset 91 by mikael
mikael
parents: 76
diff changeset
     8
static char *FName;
24
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
     9
138
250f872c722f [/trunk] Changeset 150 by mikael
mikael
parents: 81
diff changeset
    10
void ut_InitDebug(unsigned int level, char *filename)
24
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    11
{
77
32f54ad6d729 [/trunk] Changeset 91 by mikael
mikael
parents: 76
diff changeset
    12
  FILE *fp;
32f54ad6d729 [/trunk] Changeset 91 by mikael
mikael
parents: 76
diff changeset
    13
138
250f872c722f [/trunk] Changeset 150 by mikael
mikael
parents: 81
diff changeset
    14
  if (!level) {
250f872c722f [/trunk] Changeset 150 by mikael
mikael
parents: 81
diff changeset
    15
    DebugEnabled = 0;
250f872c722f [/trunk] Changeset 150 by mikael
mikael
parents: 81
diff changeset
    16
    FName = NULL;
250f872c722f [/trunk] Changeset 150 by mikael
mikael
parents: 81
diff changeset
    17
    return;
250f872c722f [/trunk] Changeset 150 by mikael
mikael
parents: 81
diff changeset
    18
  }
250f872c722f [/trunk] Changeset 150 by mikael
mikael
parents: 81
diff changeset
    19
250f872c722f [/trunk] Changeset 150 by mikael
mikael
parents: 81
diff changeset
    20
  if (filename)
250f872c722f [/trunk] Changeset 150 by mikael
mikael
parents: 81
diff changeset
    21
    FName = strdup(filename);
77
32f54ad6d729 [/trunk] Changeset 91 by mikael
mikael
parents: 76
diff changeset
    22
  else {
138
250f872c722f [/trunk] Changeset 150 by mikael
mikael
parents: 81
diff changeset
    23
    FName = getenv("HOME");
250f872c722f [/trunk] Changeset 150 by mikael
mikael
parents: 81
diff changeset
    24
    if (!FName)
250f872c722f [/trunk] Changeset 150 by mikael
mikael
parents: 81
diff changeset
    25
      FName = "/tmp/mcabberlog";
250f872c722f [/trunk] Changeset 150 by mikael
mikael
parents: 81
diff changeset
    26
    else {
250f872c722f [/trunk] Changeset 150 by mikael
mikael
parents: 81
diff changeset
    27
      char *tmpname = malloc(strlen(FName) + 12);
250f872c722f [/trunk] Changeset 150 by mikael
mikael
parents: 81
diff changeset
    28
      strcpy(tmpname, FName);
250f872c722f [/trunk] Changeset 150 by mikael
mikael
parents: 81
diff changeset
    29
      strcat(tmpname, "/mcabberlog");
250f872c722f [/trunk] Changeset 150 by mikael
mikael
parents: 81
diff changeset
    30
      FName = tmpname;
250f872c722f [/trunk] Changeset 150 by mikael
mikael
parents: 81
diff changeset
    31
    }
77
32f54ad6d729 [/trunk] Changeset 91 by mikael
mikael
parents: 76
diff changeset
    32
  }
24
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    33
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    34
  DebugEnabled = level;
76
a8f8492abd44 [/trunk] Changeset 90 by mikael
mikael
parents: 24
diff changeset
    35
77
32f54ad6d729 [/trunk] Changeset 91 by mikael
mikael
parents: 76
diff changeset
    36
  fp = fopen(FName, "w");
76
a8f8492abd44 [/trunk] Changeset 90 by mikael
mikael
parents: 24
diff changeset
    37
  if (!fp) return;
24
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    38
  fprintf(fp, "Debugging mode started...\n"
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    39
	  "-----------------------------------\n");
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    40
  fclose(fp);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    41
}
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    42
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    43
void ut_WriteLog(const char *fmt, ...)
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    44
{
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    45
  FILE *fp = NULL;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    46
  time_t ahora;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    47
  va_list ap;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    48
  char *buffer = NULL;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    49
138
250f872c722f [/trunk] Changeset 150 by mikael
mikael
parents: 81
diff changeset
    50
  if (DebugEnabled && FName) {
77
32f54ad6d729 [/trunk] Changeset 91 by mikael
mikael
parents: 76
diff changeset
    51
    fp = fopen(FName, "a+");
76
a8f8492abd44 [/trunk] Changeset 90 by mikael
mikael
parents: 24
diff changeset
    52
    if (!fp) return;
24
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    53
    buffer = (char *) calloc(1, 64);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    54
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    55
    ahora = time(NULL);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    56
    strftime(buffer, 64, "[%H:%M:%S] ", localtime(&ahora));
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    57
    fprintf(fp, "%s", buffer);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    58
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    59
    va_start(ap, fmt);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    60
    vfprintf(fp, fmt, ap);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    61
    va_end(ap);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    62
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    63
    free(buffer);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    64
    fclose(fp);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    65
  }
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    66
}
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    67