int silc_client_check_silc_dir()
{
char filename[256], file_public_key[256], file_private_key[256];
- char servfilename[256], clientfilename[256];
+ char servfilename[256], clientfilename[256], friendsfilename[256];
char *identifier;
struct stat st;
struct passwd *pw;
get_irssi_dir());
snprintf(clientfilename, sizeof(clientfilename) - 1, "%s/clientkeys",
get_irssi_dir());
+ snprintf(friendsfilename, sizeof(friendsfilename) - 1, "%s/friends",
+ get_irssi_dir());
/*
* Check ~/.silc directory
}
}
+ /*
+ * Check ~./silc/friends directory
+ */
+ if ((stat(friendsfilename, &st)) == -1) {
+ /* If dir doesn't exist */
+ if (errno == ENOENT) {
+ if (pw->pw_uid == geteuid()) {
+ if ((mkdir(friendsfilename, 0755)) == -1) {
+ fprintf(stderr, "Couldn't create `%s' directory\n", friendsfilename);
+ return FALSE;
+ }
+ } else {
+ fprintf(stderr, "Couldn't create `%s' directory due to a wrong uid!\n",
+ friendsfilename);
+ return FALSE;
+ }
+ } else {
+ fprintf(stderr, "%s\n", strerror(errno));
+ return FALSE;
+ }
+ }
+
/*
* Check Public and Private keys
*/