use getpass() to get the user's password
unlink the temp file if we are unable to fetch a new message from the server. update version to 0.3
This commit is contained in:
parent
fa1e46f6ec
commit
bbbe88e07d
|
@ -1,5 +1,5 @@
|
||||||
AC_INIT(isync.h)
|
AC_INIT(isync.h)
|
||||||
AM_INIT_AUTOMAKE(isync,0.2)
|
AM_INIT_AUTOMAKE(isync,0.3)
|
||||||
AM_PROG_CC_STDC
|
AM_PROG_CC_STDC
|
||||||
if test $CC = gcc; then
|
if test $CC = gcc; then
|
||||||
CFLAGS="$CFLAGS -pipe"
|
CFLAGS="$CFLAGS -pipe"
|
||||||
|
|
27
main.c
27
main.c
|
@ -86,27 +86,6 @@ usage (void)
|
||||||
exit (0);
|
exit (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *
|
|
||||||
enter_password (void)
|
|
||||||
{
|
|
||||||
struct termios t;
|
|
||||||
char pass[32];
|
|
||||||
|
|
||||||
tcgetattr (0, &t);
|
|
||||||
t.c_lflag &= ~ECHO;
|
|
||||||
tcsetattr (0, TCSANOW, &t);
|
|
||||||
printf ("Password: ");
|
|
||||||
fflush (stdout);
|
|
||||||
pass[sizeof (pass) - 1] = 0;
|
|
||||||
fgets (pass, sizeof (pass) - 1, stdin);
|
|
||||||
if (pass[0])
|
|
||||||
pass[strlen (pass) - 1] = 0; /* kill newline */
|
|
||||||
t.c_lflag |= ECHO;
|
|
||||||
tcsetattr (0, TCSANOW, &t);
|
|
||||||
puts ("");
|
|
||||||
return strdup (pass);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* set defaults from the global configuration section */
|
/* set defaults from the global configuration section */
|
||||||
static void
|
static void
|
||||||
config_defaults (config_t * conf)
|
config_defaults (config_t * conf)
|
||||||
|
@ -383,12 +362,14 @@ main (int argc, char **argv)
|
||||||
|
|
||||||
if (!box->pass)
|
if (!box->pass)
|
||||||
{
|
{
|
||||||
box->pass = enter_password ();
|
char *pass = getpass ("Password:");
|
||||||
if (!box->pass)
|
|
||||||
|
if (pass)
|
||||||
{
|
{
|
||||||
puts ("Aborting, no password");
|
puts ("Aborting, no password");
|
||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
|
box->pass = strdup (pass);
|
||||||
}
|
}
|
||||||
|
|
||||||
printf ("Reading %s\n", box->path);
|
printf ("Reading %s\n", box->path);
|
||||||
|
|
20
sync.c
20
sync.c
|
@ -47,6 +47,7 @@ sync_mailbox (mailbox_t * mbox, imap_t * imap, int flags)
|
||||||
char newpath[_POSIX_PATH_MAX];
|
char newpath[_POSIX_PATH_MAX];
|
||||||
char *p;
|
char *p;
|
||||||
int fd;
|
int fd;
|
||||||
|
int ret;
|
||||||
|
|
||||||
for (cur = mbox->msgs; cur; cur = cur->next)
|
for (cur = mbox->msgs; cur; cur = cur->next)
|
||||||
{
|
{
|
||||||
|
@ -132,19 +133,24 @@ sync_mailbox (mailbox_t * mbox, imap_t * imap, int flags)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
imap_fetch_message (imap, cur->uid, fd);
|
ret = imap_fetch_message (imap, cur->uid, fd);
|
||||||
|
|
||||||
close (fd);
|
close (fd);
|
||||||
|
|
||||||
p = strrchr (path, '/');
|
if (!ret)
|
||||||
|
{
|
||||||
|
p = strrchr (path, '/');
|
||||||
|
|
||||||
snprintf (newpath, sizeof (newpath), "%s/%s%s", mbox->path,
|
snprintf (newpath, sizeof (newpath), "%s/%s%s", mbox->path,
|
||||||
(cur->flags & D_SEEN) ? "cur" : "new", p);
|
(cur->flags & D_SEEN) ? "cur" : "new", p);
|
||||||
|
|
||||||
// printf ("moving %s to %s\n", path, newpath);
|
// printf ("moving %s to %s\n", path, newpath);
|
||||||
|
|
||||||
if (rename (path, newpath))
|
if (rename (path, newpath))
|
||||||
perror ("rename");
|
perror ("rename");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
unlink(path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
puts ("");
|
puts ("");
|
||||||
|
|
Loading…
Reference in New Issue
Block a user