+Sat Mar 30 18:15:55 EET 2002 Pekka Riikonen <priikone@silcnet.org>
+
+ * Changed the silc_get_username and silc_get_real_name to
+ never fail. Affected file lib/silcutil/unix/silcunixutil.c.
+
+ * Fixed the Irssi SILC Client to use the silc_get_username and
+ silc_get_real_name insted of glib routines since the glib
+ routines only corrupt stack. Fixes the Irssi SILC to work in
+ Cygwin. Affected file irssi/src/silc/core/silc-core.c.
+
+ * Fixed the Irssi to not use g_get_home_dir since it crashes
+ or returns garbage on cygwin and corrupts stack. Added function
+ get_home_dir to Irssi routines. Affected files are
+ irssi/src/core/misc.[ch] and irssi/src/core/core.c.
+
Fri Mar 29 10:41:07 EET 2002 Pekka Riikonen <priikone@silcnet.org>
* And yet again reverted back the config thing since Johnny
args_register(options);
if (irssi_dir == NULL)
- irssi_dir = g_strdup_printf(IRSSI_DIR_FULL, g_get_home_dir());
+ irssi_dir = g_strdup_printf(IRSSI_DIR_FULL, get_home_dir());
if (irssi_config_file == NULL)
- irssi_config_file = g_strdup_printf("%s/"IRSSI_HOME_CONFIG, irssi_dir);
+ irssi_config_file = g_strdup_printf("%s/"IRSSI_HOME_CONFIG,
+ irssi_dir);
session_set_binary(argv[0]);
}
#ifdef HAVE_REGEX_H
# include <regex.h>
#endif
+#include <pwd.h>
typedef struct {
int condition;
return 0;
}
+/* Get home directory */
+const char *get_home_dir(void)
+{
+ struct passwd *pw = getpwuid(getuid());
+ if (!pw) {
+ if (g_getenv("HOME"))
+ return g_getenv("HOME");
+ else
+ return ".";
+ }
+ return pw->pw_dir;
+}
+
/* convert ~/ to $HOME */
char *convert_home(const char *path)
{
return *path == '~' && (*(path+1) == '/' || *(path+1) == '\0') ?
- g_strconcat(g_get_home_dir(), path+1, NULL) :
+ g_strconcat((char *)get_home_dir, path+1, NULL) :
g_strdup(path);
}
/* Create the directory and all it's parent directories */
int mkpath(const char *path, int mode);
+
+/* Get home directory */
+const char *get_home_dir(void);
+
/* convert ~/ to $HOME */
char *convert_home(const char *path);
if (!str)
str = g_getenv("IRCNAME");
settings_set_str("real_name",
- str != NULL ? str : g_get_real_name());
+ str != NULL ? str : silc_get_real_name());
}
/* username */
if (!str)
str = g_getenv("IRCUSER");
settings_set_str("user_name",
- str != NULL ? str : g_get_user_name());
-
+ str != NULL ? str : silc_get_username());
+
user_name = settings_get_str("user_name");
}
/* alternate nick */
set = settings_get_str("alternate_nick");
if (set == NULL || *set == '\0') {
- if (strlen(nick) < 9)
- str = g_strconcat(nick, "_", NULL);
- else {
- str = g_strdup(nick);
- str[strlen(str)-1] = '_';
- }
+ str = g_strconcat(nick, "_", NULL);
settings_set_str("alternate_nick", str);
g_free(str);
}
struct passwd *pw;
pw = getpwuid(getuid());
- if (!pw) {
- fprintf(stderr, "silc_get_username: %s\n", strerror(errno));
- return NULL;
- }
-
+ if (!pw)
+ return strdup("foo");
+
logname = pw->pw_name;
}
}
struct passwd *pw;
pw = getpwuid(getuid());
- if (!pw) {
- fprintf(stderr, "silc_get_username: %s\n", strerror(errno));
- return NULL;
- }
+ if (!pw)
+ return strdup("Foo T. Bar");
if (strchr(pw->pw_gecos, ','))
*strchr(pw->pw_gecos, ',') = 0;