return FALSE;
}
-unsigned char pem_enc[64] =
+static unsigned char pem_enc[64] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
/* Encodes data into PEM encoding. Returns NULL terminated PEM encoded
}
if (server) {
- *server = silc_calloc(strlen(string) - tlen, sizeof(char));
+ *server = silc_calloc((strlen(string) - tlen) + 1, sizeof(char));
memcpy(*server, string + tlen + 1, strlen(string) - tlen - 1);
}
} else {
*parsed_num = argc;
}
+
+/* Formats arguments to a string and returns it after allocating memory
+ for it. It must be remembered to free it later. */
+
+char *silc_format(char *fmt, ...)
+{
+ va_list args;
+ static char buf[8192];
+
+ memset(buf, 0, sizeof(buf));
+ va_start(args, fmt);
+ vsnprintf(buf, sizeof(buf) - 1, fmt, args);
+ va_end(args);
+
+ return strdup(buf);
+}
+
+/* Renders ID to suitable to print for example to log file. */
+
+static char rid[256];
+
+char *silc_id_render(void *id, unsigned short type)
+{
+ char tmp[100];
+ unsigned char tmps[2];
+
+ memset(rid, 0, sizeof(rid));
+ switch(type) {
+ case SILC_ID_SERVER:
+ {
+ SilcServerID *server_id = (SilcServerID *)id;
+ strcat(rid, inet_ntoa(server_id->ip));
+ memset(tmp, 0, sizeof(tmp));
+ snprintf(tmp, sizeof(tmp), ",%d,", ntohs(server_id->port));
+ strcat(rid, tmp);
+ SILC_PUT16_MSB(server_id->rnd, tmps);
+ memset(tmp, 0, sizeof(tmp));
+ snprintf(tmp, sizeof(tmp), "[%02x %02x]", tmps[0], tmps[1]);
+ strcat(rid, tmp);
+ }
+ break;
+ case SILC_ID_CLIENT:
+ {
+ SilcClientID *client_id = (SilcClientID *)id;
+ strcat(rid, inet_ntoa(client_id->ip));
+ memset(tmp, 0, sizeof(tmp));
+ snprintf(tmp, sizeof(tmp), ",%02x,", client_id->rnd);
+ strcat(rid, tmp);
+ memset(tmp, 0, sizeof(tmp));
+ snprintf(tmp, sizeof(tmp), "[%02x %02x %02x %02x...]",
+ client_id->hash[0], client_id->hash[1],
+ client_id->hash[2], client_id->hash[3]);
+ strcat(rid, tmp);
+ }
+ break;
+ case SILC_ID_CHANNEL:
+ {
+ SilcChannelID *channel_id = (SilcChannelID *)id;
+ strcat(rid, inet_ntoa(channel_id->ip));
+ memset(tmp, 0, sizeof(tmp));
+ snprintf(tmp, sizeof(tmp), ",%d,", ntohs(channel_id->port));
+ strcat(rid, tmp);
+ SILC_PUT16_MSB(channel_id->rnd, tmps);
+ memset(tmp, 0, sizeof(tmp));
+ snprintf(tmp, sizeof(tmp), "[%02x %02x]", tmps[0], tmps[1]);
+ strcat(rid, tmp);
+ }
+ break;
+ }
+
+ return rid;
+}