@@ -69,7 +69,6 @@ static void imap_warn(const char *, ...);
6969static char * next_arg (char * * );
7070
7171struct imap_server_conf {
72- const char * name ;
7372 char * tunnel ;
7473 char * host ;
7574 int port ;
@@ -1300,23 +1299,28 @@ static int git_imap_config(const char *var, const char *val,
13001299{
13011300 struct imap_server_conf * cfg = cb ;
13021301
1303- if (!strcmp ("imap.sslverify" , var ))
1302+ if (!strcmp ("imap.sslverify" , var )) {
13041303 cfg -> ssl_verify = git_config_bool (var , val );
1305- else if (!strcmp ("imap.preformattedhtml" , var ))
1304+ } else if (!strcmp ("imap.preformattedhtml" , var )) {
13061305 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 );
13081308 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 );
13101311 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 );
13121314 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 );
13141317 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 );
13161320 return git_config_string (& cfg -> auth_method , var , val );
1317- else if (!strcmp ("imap.port" , var ))
1321+ } else if (!strcmp ("imap.port" , var )) {
13181322 cfg -> port = git_config_int (var , val , ctx -> kvi );
1319- else if (!strcmp ("imap.host" , var )) {
1323+ } else if (!strcmp ("imap.host" , var )) {
13201324 if (!val ) {
13211325 return config_error_nonbool (var );
13221326 } else {
@@ -1330,8 +1334,9 @@ static int git_imap_config(const char *var, const char *val,
13301334 val += 2 ;
13311335 cfg -> host = xstrdup (val );
13321336 }
1333- } else
1337+ } else {
13341338 return git_default_config (var , val , ctx , cb );
1339+ }
13351340
13361341 return 0 ;
13371342}
@@ -1503,6 +1508,7 @@ int cmd_main(int argc, const char **argv)
15031508 struct strbuf all_msgs = STRBUF_INIT ;
15041509 int total ;
15051510 int nongit_ok ;
1511+ int ret ;
15061512
15071513 setup_git_directory_gently (& nongit_ok );
15081514 git_config (git_imap_config , & server );
@@ -1529,42 +1535,55 @@ int cmd_main(int argc, const char **argv)
15291535
15301536 if (!server .folder ) {
15311537 fprintf (stderr , "no imap store specified\n" );
1532- return 1 ;
1538+ ret = 1 ;
1539+ goto out ;
15331540 }
15341541 if (!server .host ) {
15351542 if (!server .tunnel ) {
15361543 fprintf (stderr , "no imap host specified\n" );
1537- return 1 ;
1544+ ret = 1 ;
1545+ goto out ;
15381546 }
1539- server .host = "tunnel" ;
1547+ server .host = xstrdup ( "tunnel" ) ;
15401548 }
15411549
15421550 /* read the messages */
15431551 if (strbuf_read (& all_msgs , 0 , 0 ) < 0 ) {
15441552 error_errno (_ ("could not read from stdin" ));
1545- return 1 ;
1553+ ret = 1 ;
1554+ goto out ;
15461555 }
15471556
15481557 if (all_msgs .len == 0 ) {
15491558 fprintf (stderr , "nothing to send\n" );
1550- return 1 ;
1559+ ret = 1 ;
1560+ goto out ;
15511561 }
15521562
15531563 total = count_messages (& all_msgs );
15541564 if (!total ) {
15551565 fprintf (stderr , "no messages to send\n" );
1556- return 1 ;
1566+ ret = 1 ;
1567+ goto out ;
15571568 }
15581569
15591570 /* write it to the imap server */
15601571
15611572 if (server .tunnel )
1562- return append_msgs_to_imap (& server , & all_msgs , total );
1563-
1573+ ret = append_msgs_to_imap (& server , & all_msgs , total );
15641574#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 );
15671577#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 ;
15701589}
0 commit comments