@@ -69,7 +69,6 @@ static void imap_warn(const char *, ...);
69
69
static char * next_arg (char * * );
70
70
71
71
struct imap_server_conf {
72
- const char * name ;
73
72
char * tunnel ;
74
73
char * host ;
75
74
int port ;
@@ -1300,23 +1299,28 @@ static int git_imap_config(const char *var, const char *val,
1300
1299
{
1301
1300
struct imap_server_conf * cfg = cb ;
1302
1301
1303
- if (!strcmp ("imap.sslverify" , var ))
1302
+ if (!strcmp ("imap.sslverify" , var )) {
1304
1303
cfg -> ssl_verify = git_config_bool (var , val );
1305
- else if (!strcmp ("imap.preformattedhtml" , var ))
1304
+ } else if (!strcmp ("imap.preformattedhtml" , var )) {
1306
1305
cfg -> use_html = git_config_bool (var , val );
1307
- else if (!strcmp ("imap.folder" , var ))
1306
+ } else if (!strcmp ("imap.folder" , var )) {
1307
+ FREE_AND_NULL (cfg -> folder );
1308
1308
return git_config_string (& cfg -> folder , var , val );
1309
- else if (!strcmp ("imap.user" , var ))
1309
+ } else if (!strcmp ("imap.user" , var )) {
1310
+ FREE_AND_NULL (cfg -> folder );
1310
1311
return git_config_string (& cfg -> user , var , val );
1311
- else if (!strcmp ("imap.pass" , var ))
1312
+ } else if (!strcmp ("imap.pass" , var )) {
1313
+ FREE_AND_NULL (cfg -> folder );
1312
1314
return git_config_string (& cfg -> pass , var , val );
1313
- else if (!strcmp ("imap.tunnel" , var ))
1315
+ } else if (!strcmp ("imap.tunnel" , var )) {
1316
+ FREE_AND_NULL (cfg -> folder );
1314
1317
return git_config_string (& cfg -> tunnel , var , val );
1315
- else if (!strcmp ("imap.authmethod" , var ))
1318
+ } else if (!strcmp ("imap.authmethod" , var )) {
1319
+ FREE_AND_NULL (cfg -> folder );
1316
1320
return git_config_string (& cfg -> auth_method , var , val );
1317
- else if (!strcmp ("imap.port" , var ))
1321
+ } else if (!strcmp ("imap.port" , var )) {
1318
1322
cfg -> port = git_config_int (var , val , ctx -> kvi );
1319
- else if (!strcmp ("imap.host" , var )) {
1323
+ } else if (!strcmp ("imap.host" , var )) {
1320
1324
if (!val ) {
1321
1325
return config_error_nonbool (var );
1322
1326
} else {
@@ -1330,8 +1334,9 @@ static int git_imap_config(const char *var, const char *val,
1330
1334
val += 2 ;
1331
1335
cfg -> host = xstrdup (val );
1332
1336
}
1333
- } else
1337
+ } else {
1334
1338
return git_default_config (var , val , ctx , cb );
1339
+ }
1335
1340
1336
1341
return 0 ;
1337
1342
}
@@ -1503,6 +1508,7 @@ int cmd_main(int argc, const char **argv)
1503
1508
struct strbuf all_msgs = STRBUF_INIT ;
1504
1509
int total ;
1505
1510
int nongit_ok ;
1511
+ int ret ;
1506
1512
1507
1513
setup_git_directory_gently (& nongit_ok );
1508
1514
git_config (git_imap_config , & server );
@@ -1529,42 +1535,55 @@ int cmd_main(int argc, const char **argv)
1529
1535
1530
1536
if (!server .folder ) {
1531
1537
fprintf (stderr , "no imap store specified\n" );
1532
- return 1 ;
1538
+ ret = 1 ;
1539
+ goto out ;
1533
1540
}
1534
1541
if (!server .host ) {
1535
1542
if (!server .tunnel ) {
1536
1543
fprintf (stderr , "no imap host specified\n" );
1537
- return 1 ;
1544
+ ret = 1 ;
1545
+ goto out ;
1538
1546
}
1539
- server .host = "tunnel" ;
1547
+ server .host = xstrdup ( "tunnel" ) ;
1540
1548
}
1541
1549
1542
1550
/* read the messages */
1543
1551
if (strbuf_read (& all_msgs , 0 , 0 ) < 0 ) {
1544
1552
error_errno (_ ("could not read from stdin" ));
1545
- return 1 ;
1553
+ ret = 1 ;
1554
+ goto out ;
1546
1555
}
1547
1556
1548
1557
if (all_msgs .len == 0 ) {
1549
1558
fprintf (stderr , "nothing to send\n" );
1550
- return 1 ;
1559
+ ret = 1 ;
1560
+ goto out ;
1551
1561
}
1552
1562
1553
1563
total = count_messages (& all_msgs );
1554
1564
if (!total ) {
1555
1565
fprintf (stderr , "no messages to send\n" );
1556
- return 1 ;
1566
+ ret = 1 ;
1567
+ goto out ;
1557
1568
}
1558
1569
1559
1570
/* write it to the imap server */
1560
1571
1561
1572
if (server .tunnel )
1562
- return append_msgs_to_imap (& server , & all_msgs , total );
1563
-
1573
+ ret = append_msgs_to_imap (& server , & all_msgs , total );
1564
1574
#ifdef USE_CURL_FOR_IMAP_SEND
1565
- if (use_curl )
1566
- return curl_append_msgs_to_imap (& server , & all_msgs , total );
1575
+ else if (use_curl )
1576
+ ret = curl_append_msgs_to_imap (& server , & all_msgs , total );
1567
1577
#endif
1568
-
1569
- return append_msgs_to_imap (& server , & all_msgs , total );
1578
+ else
1579
+ ret = append_msgs_to_imap (& server , & all_msgs , total );
1580
+
1581
+ out :
1582
+ free (server .tunnel );
1583
+ free (server .host );
1584
+ free (server .folder );
1585
+ free (server .user );
1586
+ free (server .pass );
1587
+ free (server .auth_method );
1588
+ return ret ;
1570
1589
}
0 commit comments