annotate mcabber/src/utils.c @ 24:e88b15cbf2de

[/trunk] Changeset 40 by mikael * Change structure -> src directory for mcabber source code...
author mikael
date Sun, 27 Mar 2005 20:16:02 +0000
parents
children a8f8492abd44
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
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 }