$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.
Fri Jul 10 1998 Art Cancro <ajc@uncensored.citadel.org>
* Initial CVS import
-
*/
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, ".");
+ }
}