mcabber/src/utils.c
author mikael
Sun, 27 Mar 2005 20:16:02 +0000
changeset 24 e88b15cbf2de
child 76 a8f8492abd44
permissions -rw-r--r--
[/trunk] Changeset 40 by mikael * Change structure -> src directory for mcabber source code...
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 <string.h>
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
     3
#include <stdlib.h>
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
     4
#include <ncurses.h>
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
     5
#include <stdarg.h>
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
     6
#include <time.h>
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
     7
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
     8
/* Variables globales a UTILS.C */
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
     9
int DebugEnabled = 0;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    10
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    11
void ut_InitDebug(int level)
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    12
{
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    13
  FILE *fp = fopen("/tmp/mcabberlog", "w");
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    14
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    15
  DebugEnabled = level;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    16
  fprintf(fp, "Debugging mode started...\n"
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    17
	  "-----------------------------------\n");
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    18
  fclose(fp);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    19
}
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    20
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    21
void ut_WriteLog(const char *fmt, ...)
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    22
{
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    23
  FILE *fp = NULL;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    24
  time_t ahora;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    25
  va_list ap;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    26
  char *buffer = NULL;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    27
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    28
  if (DebugEnabled) {
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    29
    fp = fopen("/tmp/mcabberlog", "a+");
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    30
    buffer = (char *) calloc(1, 64);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    31
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    32
    ahora = time(NULL);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    33
    strftime(buffer, 64, "[%H:%M:%S] ", localtime(&ahora));
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    34
    fprintf(fp, "%s", buffer);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    35
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    36
    va_start(ap, fmt);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    37
    vfprintf(fp, fmt, ap);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    38
    va_end(ap);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    39
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    40
    free(buffer);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    41
    fclose(fp);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    42
  }
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    43
}
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    44
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    45
char **ut_SplitMessage(char *message, int *nsubmsgs, unsigned int maxlong)
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    46
{
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    47
  /* BUGs:    recorta la palabra si la longitud maxlong es menor que la palabra
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    48
     //  maxlong = 4
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    49
     // message = "peaso bug!"
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    50
     // submsgs[0] = "peas"
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    51
     // submsgs[1] = "bug!"
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    52
     // por lo demas, rula de arte. De todos modos, podrias verificarla ???
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    53
   */
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    54
  char *running;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    55
  char *aux;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    56
  char *aux2;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    57
  char **submsgs;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    58
  char *buffer = (char *) malloc(strlen(message) * 2);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    59
  int maxnlines = 50;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    60
  int i = 0;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    61
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    62
  submsgs = (char **) malloc(maxnlines * sizeof(char *));
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    63
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    64
  running = strdup(message);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    65
  aux2 = strdup(message);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    66
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    67
  aux = index(running, '\n');     /* is there a CR? */
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    68
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    69
  while ((strlen(aux2) > maxlong) || (aux)) {
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    70
    memset(buffer, 0, strlen(message) * 2);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    71
    running[maxlong] = '\0';	    /* cut at $maxlong chars */
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    72
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    73
    if (aux != NULL) {              /* there is a CR */
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    74
      strncpy(buffer, running, strlen(running) - strlen(aux));
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    75
    } else {
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    76
      aux = rindex(running, ' ');   /* look for last blank */
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    77
      if (aux != NULL)		    /* hay blanco! */
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    78
        strncpy(buffer, running, strlen(running) - strlen(aux));
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    79
      else
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    80
        strcpy(buffer, running);    /* se supone que esto es pa evitar  el bug explicado arriba, pero no rula */
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    81
    }
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    82
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    83
    submsgs[i] = (char *) malloc(strlen(buffer) + 1);	/*reservamos memoria */
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    84
    strcpy(submsgs[i], buffer);	/*copiamos el buffer de arriba */
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    85
    i++;			/*aumentamos numero de mensajillos */
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    86
    aux2 += strlen(buffer) + 1;	/*eliminamos texto particionado */
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    87
    sprintf(running, "%s", aux2);	/*y lo copiamos de nuevo a la string de "curro" */
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    88
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    89
    // Check if we have allocated enough space
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    90
    if (i >= maxnlines) {
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    91
      maxnlines += 50;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    92
      submsgs = (char **) realloc(submsgs, maxnlines * sizeof(char *));
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    93
    }
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    94
    aux = index(running, '\n');     /* is there is a CR now? */
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    95
  }
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    96
  /* last part of the message */
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    97
  if (strlen(aux2) > 0) {
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    98
    submsgs[i] = (char *) malloc(strlen(aux2) + 1);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    99
    strcpy(submsgs[i], aux2);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   100
    i++;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   101
  }
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   102
  (*nsubmsgs) = i;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   103
  free(buffer);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   104
  return submsgs;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   105
}
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   106
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   107
/* Desc: get the rightmost substring
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   108
 *
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   109
 * In  : string, match
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   110
 * Out : ptr to substring (or NULL if not found)
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   111
 *
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   112
 * Note: this one has no namespace, cos it belongs to <string.h>
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   113
 */
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   114
char *ut_strrstr(const char *s1, const char *s2)
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   115
{
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   116
  int l = strlen(s2);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   117
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   118
  if (l) {
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   119
    const char *s = strchr(s1, '\0') - l;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   120
    while (s >= s1) {
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   121
      if (*s == *s2) {
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   122
	int _l = l - 1;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   123
	const char *_s = s + 1, *_s2 = s2 + 1;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   124
	while (_l) {
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   125
	  if (*_s++ != *_s2++) {
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   126
	    break;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   127
	  }
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   128
	  _l--;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   129
	}
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   130
	if (!_l) {
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   131
	  return (char *) s;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   132
	}
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   133
      }
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   134
      s--;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   135
    }
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   136
  }
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   137
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   138
  return NULL;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   139
}
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   140
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   141
char *gettag(char *buffer, char *what)
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   142
{
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   143
  char *aux;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   144
  char *aux2;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   145
  char *result = (char *) malloc(1024);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   146
  char *tmp = (char *) malloc(1024);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   147
  memset(result, 0, 1024);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   148
  memset(tmp, 0, 1024);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   149
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   150
  sprintf(tmp, "<%s>", what);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   151
  aux = strstr(buffer, tmp);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   152
  if (aux) {
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   153
    aux += strlen(tmp);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   154
    sprintf(tmp, "</%s>", what);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   155
    aux2 = strstr(aux, tmp);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   156
    if (aux2) {
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   157
      strncpy(result, aux, strlen(aux) - strlen(aux2));
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   158
      free(tmp);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   159
      return result;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   160
    }
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   161
  }
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   162
  free(tmp);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   163
  free(result);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   164
  return "UNKtag";
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   165
}
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   166
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   167
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   168
char *getattr(char *buffer, char *what)
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   169
{
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   170
  char *aux;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   171
  char *aux2;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   172
  char *result = (char *) malloc(1024);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   173
  memset(result, 0, 1024);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   174
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   175
  aux = strstr(buffer, what);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   176
  if (aux) {
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   177
    aux += strlen(what);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   178
    aux2 = strstr(aux, "'");
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   179
    if (aux2) {
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   180
      strncpy(result, aux, strlen(aux) - strlen(aux2));
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   181
      return result;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   182
    }
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   183
  }
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   184
  free(result);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   185
  return "UNKattr";
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   186
}
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   187
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   188
void ut_CenterMessage(char *text, int width, char *output)
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   189
{
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   190
  char *blank;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   191
  int ntest, nn;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   192
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   193
  memset(output, 0, strlen(output));
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   194
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   195
  ntest = (width - strlen(text)) / 2;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   196
  blank = (char *) malloc(ntest + 1);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   197
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   198
  for (nn = 0; nn < ntest; nn++)
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   199
    blank[nn] = ' ';
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   200
  blank[ntest] = '\0';
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   201
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   202
  strcpy(output, blank);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   203
  strcat(output, text);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   204
  strcat(output, blank);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   205
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   206
  free(blank);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   207
}