]> code.citadel.org Git - citadel.git/commitdiff
* More intelligent selection of directory to save attachments
authorArt Cancro <ajc@citadel.org>
Sat, 13 Sep 2003 02:53:04 +0000 (02:53 +0000)
committerArt Cancro <ajc@citadel.org>
Sat, 13 Sep 2003 02:53:04 +0000 (02:53 +0000)
citadel/ChangeLog
citadel/rooms.c

index 8c38493acb908a952bd28e9a1d997485c37ef443..9c3e7c662bdefd95f011c98015e667ba881f336e 100644 (file)
@@ -1,4 +1,7 @@
  $Log$
+ Revision 610.16  2003/09/13 02:53:04  ajc
+ * More intelligent selection of directory to save attachments
+
  Revision 610.15  2003/09/12 15:48:55  ajc
  * serv_smtp.c: remember whether we're SMTP or LMTP across a RSET command.
 
@@ -5021,4 +5024,3 @@ Sat Jul 11 00:20:48 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
 
 Fri Jul 10 1998 Art Cancro <ajc@uncensored.citadel.org>
        * Initial CVS import
-
index 25565344620ab644df6b6b158414038a283de74b..2a7f886dd547060b1586613c6097af4cf43c5e11 100644 (file)
@@ -722,16 +722,34 @@ int save_buffer(void *file, size_t filelen, const char *pathname)
  */
 void destination_directory(char *dest, const char *supplied_filename)
 {
-       scr_printf("Enter the name of the directory to save '%s'\n"
-               "to, or press return for the current directory.\n",
-               supplied_filename);
-       newprompt("Directory: ", dest, PATH_MAX);
-       if (strlen(dest) == 0) {
-               dest[0] = '.';
-               dest[1] = 0;
-       }
-       strcat(dest, "/");
-       strcat(dest, supplied_filename);
+       static char save_dir[SIZ] = { 0 };
+
+       if (strlen(save_dir) == 0) {
+               if (getenv("HOME") == NULL) {
+                       strcpy(save_dir, ".");
+               }
+               else {
+                       sprintf(save_dir, "%s/Desktop", getenv("HOME"));
+                       if (access(save_dir, W_OK) != 0) {
+                               sprintf(save_dir, "%s", getenv("HOME"));
+                               if (access(save_dir, W_OK) != 0) {
+                                       sprintf(save_dir, ".");
+                               }
+                       }
+               }
+       }
+
+       sprintf(dest, "%s/%s", save_dir, supplied_filename);
+       strprompt("Save as", dest, PATH_MAX);
+
+       /* Remember the directory for next time */
+       strcpy(save_dir, dest);
+       if (strrchr(save_dir, '/') != NULL) {
+               strcpy(strrchr(save_dir, '/'), "");
+       }
+       else {
+               strcpy(save_dir, ".");
+       }
 }