Added support for saving requested attributes.
[crypto.git] / apps / irssi / src / silc / core / clientutil.c
index f660af3bff5bc2df25dd2ec4c3731626d8d49b78..5a0f3438375f7a564751e12359a440e38f5c47a9 100644 (file)
@@ -258,7 +258,7 @@ New pair of keys will be created.  Please, answer to following questions.\n\
 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;
@@ -287,6 +287,8 @@ int silc_client_check_silc_dir()
           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
@@ -376,6 +378,28 @@ int silc_client_check_silc_dir()
     }
   }
   
+  /*
+   * 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
    */