Added <stdbool.h> for standard bool definitions
[dockapps/wmnotify.git] / src / imap.c
index 798d5b6..0e4c03e 100644 (file)
@@ -67,11 +67,8 @@ IMAP4_ReceiveResponse( void )
   
  get_packet:
   len = WmnotifyGetResponse( rx_buffer, WMNOTIFY_BUFSIZE );
-
   if( len < 0 ) {
-    /* An error occured. */
-    perror( PACKAGE );
-    ErrorLocation( __FILE__, __LINE__ );
+    /* An error occured. WmnotifyGetResponse() should have printed an error message. */
     goto error;
   }
   else if( len == 0 ) {
@@ -92,7 +89,7 @@ IMAP4_ReceiveResponse( void )
 
   /* We suppose that, if a partial response packet was sent, it is not broken in the middle
      of a line (to confirm). Normally, each string is terminated by CRLF. */
-  if( STREQ_LEN( &rx_buffer[ len - 2 ], IMAP4_ENDL, 2 ) == FALSE ) {
+  if( STREQ_LEN( &rx_buffer[ len - 2 ], IMAP4_ENDL, 2 ) == false ) {
     /* No CRLF found at the end of the buffer --> not handled by wmnotify. */
     ErrorLocation( __FILE__, __LINE__ );
     fprintf( stderr, "Response buffer doesn't contain CRLF at the end.\n" );
@@ -120,12 +117,19 @@ IMAP4_ReceiveResponse( void )
     /* In case no delimiter was found, the token is  taken  to
        be the entire string *stringp, and *stringp is made NULL. */
     if( stringp == NULL ) {
-      /* This should never happen. */
-      ErrorLocation( __FILE__, __LINE__ );
-      fprintf( stderr, "  Delimiter not found in strsep() call.\n" );
-      goto error;
+      if( token[0] == '\0' ) {
+       /* This means we finished parsing the last line of the buffer, but we need to
+          get more data to continue process the next part of the IMAP4 response. */
+       goto get_packet;
+      }
+      else {
+       /* This should never happen. */
+       ErrorLocation( __FILE__, __LINE__ );
+       fprintf( stderr, "  Delimiter not found in strsep() call.\n" );
+       goto error;
+      }
     }
-
+    
     if( token == NULL ) {
       /* This should never happen. */
       ErrorLocation( __FILE__, __LINE__ );
@@ -136,24 +140,24 @@ IMAP4_ReceiveResponse( void )
     if( token[0] == '*' ) {
       /* Untagged response. If there is a space after the SEARCH response, it means
        * at least 1 message is unseen. */
-      if( STREQ_LEN( token, IMAP4_RSP_SEARCH_UNSEEN, strlen(IMAP4_RSP_SEARCH_UNSEEN) ) == TRUE ) {
-       unseen_string_found = TRUE;
+      if( STREQ_LEN( token, IMAP4_RSP_SEARCH_UNSEEN, strlen(IMAP4_RSP_SEARCH_UNSEEN) ) == true ) {
+       unseen_string_found = true;
       }
     }
     else {
       /* Must be the status... */
 
       /* We check for the correct transaction label plus a space. */
-      if( STREQ_LEN( token, tx_buffer, tlabel_len + 1 ) == TRUE ) {
+      if( STREQ_LEN( token, tx_buffer, tlabel_len + 1 ) == true ) {
        token += tlabel_len + 1;
-       if( STREQ_LEN( token, IMAP4_RSP_SUCCESS, strlen(IMAP4_RSP_SUCCESS) ) == TRUE ) {
+       if( STREQ_LEN( token, IMAP4_RSP_SUCCESS, strlen(IMAP4_RSP_SUCCESS) ) == true ) {
          goto end; /* OK, no errors. */
        }
-       else if( STREQ_LEN( token, IMAP4_RSP_PROTOCOL_ERR, strlen(IMAP4_RSP_PROTOCOL_ERR) ) == TRUE ) {
+       else if( STREQ_LEN( token, IMAP4_RSP_PROTOCOL_ERR, strlen(IMAP4_RSP_PROTOCOL_ERR) ) == true ) {
          fprintf( stderr, "%s: Protocol error (%s).\n", PACKAGE, token );
          goto error;
        }
-       else if( STREQ_LEN( token, IMAP4_RSP_FAILURE, strlen(IMAP4_RSP_FAILURE) ) == TRUE ) {
+       else if( STREQ_LEN( token, IMAP4_RSP_FAILURE, strlen(IMAP4_RSP_FAILURE) ) == true ) {
          fprintf( stderr, "%s: Failure (%s).\n", PACKAGE, token );
          goto error;
        }
@@ -259,7 +263,7 @@ IMAP4_CheckForNewMail( void )
    * and UNSEEN will have entries. But if we recheck again later, RECENT will report zero.
    * RECENT, when set, simply means that there are new messages since our last visit.
      But, on the other hand, when using EXAMINE, no messages should lose their RECENT flag. */
-  unseen_string_found = FALSE;
+  unseen_string_found = false;
   argv[0] = IMAP4_CMD_SEARCH_UNSEEN;
   argv[1] = "";
   status = IMAP4_SendCommand( 1, argv );
@@ -268,7 +272,7 @@ IMAP4_CheckForNewMail( void )
     goto imap4_logout;
   }
   
-  if( unseen_string_found == TRUE ) {
+  if( unseen_string_found == true ) {
     new_messages = 1;
   }