#include "ClientSocket.h"
static const struct default_language_entry msgtab[] = {
- {"TIME_MASK_2_ITEMS", "%s and %s"},
- {"TIME_MASK_3_ITEMS", "%s, %s and %s"},
+ {"TIME_MASK_2_ITEMS", "%s and %s"}, /* {ARGS: "2 days", "1 hour"} */
+ {"TIME_MASK_3_ITEMS", "%s, %s and %s"}, /* {ARGS: "2 days", "1 hour", "20 minutes"} */
{"TIME_YEAR", "year"},
{"TIME_YEARS", "years"},
{"TIME_MONTH", "month"},
int col;
if(table->entrys == table->length) return 0;
for(col = 0; col < table->width; col++) {
- table->contents[table->entrys][col] = ((table->flags & TABLE_FLAG_USE_POINTER) ? entry[col] : strdup(entry[col]));
- if(strlen(entry[col]) > table->maxwidth[col])
+ table->contents[table->entrys][col] = ((table->flags & TABLE_FLAG_USE_POINTER) || !entry[col] ? entry[col] : strdup(entry[col]));
+ if(table->contents[table->entrys][col])
+ table->col_flags[col] |= TABLE_FLAG_COL_CONTENTS;
+ if(entry[col] && strlen(entry[col]) > table->maxwidth[col])
table->maxwidth[col] = strlen(entry[col]);
}
table->entrys++;
return 1;
}
+int table_change(struct Table *table, int row, char **entry) {
+ int col;
+ if(row >= table->length) return 0;
+ for(col = 0; col < table->width; col++) {
+ if(table->contents[row][col] && !(table->flags & TABLE_FLAG_USE_POINTER))
+ free(table->contents[row][col]);
+ table->contents[row][col] = ((table->flags & TABLE_FLAG_USE_POINTER) || !entry[col] ? entry[col] : strdup(entry[col]));
+ if(table->contents[row][col])
+ table->col_flags[col] |= TABLE_FLAG_COL_CONTENTS;
+ if(entry[col] && strlen(entry[col]) > table->maxwidth[col])
+ table->maxwidth[col] = strlen(entry[col]);
+ }
+ return 1;
+}
+
+int table_change_field(struct Table *table, int row, int col, char *entry) {
+ if(row >= table->length) return 0;
+ if(col >= table->width) return 0;
+ if(table->contents[row][col] && !(table->flags & TABLE_FLAG_USE_POINTER))
+ free(table->contents[row][col]);
+ table->contents[row][col] = (((table->flags & TABLE_FLAG_USE_POINTER) || !entry) ? entry : strdup(entry));
+ if(table->contents[row][col])
+ table->col_flags[col] |= TABLE_FLAG_COL_CONTENTS;
+ if(entry && strlen(entry) > table->maxwidth[col])
+ table->maxwidth[col] = strlen(entry);
+ return 1;
+}
+
int table_set_bold(struct Table *table, int collum, int bold) {
if(bold)
table->col_flags[collum] |= TABLE_FLAG_COL_BOLD;
table->table_lines[row] = malloc(tablewidth * sizeof(*table->table_lines[row]));
pos = 0;
for(col = 0; col < table->width; col++) {
+ if(!(table->col_flags[col] & TABLE_FLAG_COL_CONTENTS)) continue;
if(table->col_flags[col] & TABLE_FLAG_COL_BOLD)
table->table_lines[row][pos++] = '\002';
for(i = 0; i < strlen(table->contents[row][col]); i++) {
for(row = 0; row < table->length; row++) {
if(!(table->flags & TABLE_FLAG_USE_POINTER) && table->entrys > row) {
for(col = 0; col < table->width; col++) {
- free(table->contents[row][col]);
+ if(table->contents[row][col])
+ free(table->contents[row][col]);
}
}
free(table->contents[row]);
}
buf[p++] = ' ';
}
- buf[p-1] = '\0';
+ buf[(p ? p-1 : 0)] = '\0';
}
return buf;
}
int unit_multiplikator;
while(*str) {
p = str;
+ while(*p && !isdigit(*p)) //skip leading chars
+ p++;
+ str = p;
while(*p && isdigit(*p)) //get the value
p++;
tmpchar = *p;
*p = '\0';
cvalue = isdigit(*str) ? atoi(str) : 0;
*p = tmpchar;
+ while(*p == ' ') //skip spaces
+ p++;
str = p;
while(*p && !isdigit(*p)) //get the unit
p++;
host = p+1;
} else if((p = strstr(input, "."))) {
host = input;
- } else if(*input == '*' && !strstr(input+1, "*")) {
+ } else if(*input == '*' && input[1] != '\0' && !strstr(input+1, "*")) {
//AUTH MASK
p = getAuthFakehost(input+1);
if(p)
else
nick = input;
}
+ if(nick && *nick == '\0') nick = NULL;
+ if(ident && *ident == '\0') ident = NULL;
+ if(host && *host == '\0') host = NULL;
sprintf(buffer, "%s!%s@%s", (nick ? nick : "*"), (ident ? ident : "*"), (host ? host : "*"));
return buffer;
}