Fixed minor memory leak.
[privoxy.git] / w32log.c
index 975c5e0..13e8469 100644 (file)
--- a/w32log.c
+++ b/w32log.c
@@ -1,7 +1,7 @@
-const char w32log_rcs[] = "$Id: w32log.c,v 1.1 2001/05/13 21:57:07 administrator Exp $";
+const char w32log_rcs[] = "$Id: w32log.c,v 1.9 2001/05/31 17:33:13 oes Exp $";
 /*********************************************************************
  *
- * File        :  $Source: /home/administrator/cvs/ijb/w32log.c,v $
+ * File        :  $Source: /cvsroot/ijbswa/current/w32log.c,v $
  *
  * Purpose     :  Functions for creating and destroying the log window,
  *                ouputting strings, processing messages and so on.
@@ -32,6 +32,70 @@ const char w32log_rcs[] = "$Id: w32log.c,v 1.1 2001/05/13 21:57:07 administrator
  *
  * Revisions   :
  *    $Log: w32log.c,v $
+ *    Revision 1.9  2001/05/31 17:33:13  oes
+ *
+ *    CRLF -> LF
+ *
+ *    Revision 1.8  2001/05/29 09:50:24  jongfoster
+ *    Unified blocklist/imagelist/permissionslist.
+ *    File format is still under discussion, but the internal changes
+ *    are (mostly) done.
+ *
+ *    Also modified interceptor behaviour:
+ *    - We now intercept all URLs beginning with one of the following
+ *      prefixes (and *only* these prefixes):
+ *        * http://i.j.b/
+ *        * http://ijbswa.sf.net/config/
+ *        * http://ijbswa.sourceforge.net/config/
+ *    - New interceptors "home page" - go to http://i.j.b/ to see it.
+ *    - Internal changes so that intercepted and fast redirect pages
+ *      are not replaced with an image.
+ *    - Interceptors now have the option to send a binary page direct
+ *      to the client. (i.e. ijb-send-banner uses this)
+ *    - Implemented show-url-info interceptor.  (Which is why I needed
+ *      the above interceptors changes - a typical URL is
+ *      "http://i.j.b/show-url-info?url=www.somesite.com/banner.gif".
+ *      The previous mechanism would not have intercepted that, and
+ *      if it had been intercepted then it then it would have replaced
+ *      it with an image.)
+ *
+ *    Revision 1.7  2001/05/26 01:26:34  jongfoster
+ *    New #define, WIN_GUI_EDIT, enables the (embryonic) Win32 GUI editor.
+ *    This #define cannot be set from ./configure - there's no point, it
+ *    doesn't work yet.  See feature request # 425722
+ *
+ *    Revision 1.6  2001/05/26 00:31:30  jongfoster
+ *    Fixing compiler warning about comparing signed/unsigned.
+ *
+ *    Revision 1.5  2001/05/26 00:28:36  jongfoster
+ *    Automatic reloading of config file.
+ *    Removed obsolete SIGHUP support (Unix) and Reload menu option (Win32).
+ *    Most of the global variables have been moved to a new
+ *    struct configuration_spec, accessed through csp->config->globalname
+ *    Most of the globals remaining are used by the Win32 GUI.
+ *
+ *    Revision 1.4  2001/05/22 18:56:28  oes
+ *    CRLF -> LF
+ *
+ *    Revision 1.3  2001/05/20 15:07:54  jongfoster
+ *    File is now ignored if _WIN_CONSOLE is defined.
+ *
+ *    Revision 1.2  2001/05/20 01:21:20  jongfoster
+ *    Version 2.9.4 checkin.
+ *    - Merged popupfile and cookiefile, and added control over PCRS
+ *      filtering, in new "permissionsfile".
+ *    - Implemented LOG_LEVEL_FATAL, so that if there is a configuration
+ *      file error you now get a message box (in the Win32 GUI) rather
+ *      than the program exiting with no explanation.
+ *    - Made killpopup use the PCRS MIME-type checking and HTTP-header
+ *      skipping.
+ *    - Removed tabs from "config"
+ *    - Moved duplicated url parsing code in "loaders.c" to a new funcition.
+ *    - Bumped up version number.
+ *
+ *    Revision 1.1.1.1  2001/05/15 13:59:07  oes
+ *    Initial import of version 2.9.3 source tree
+ *
  *
  *********************************************************************/
 \f
@@ -63,6 +127,8 @@ const char cygwin_h_rcs[] = CYGWIN_H_VERSION;
 
 const char w32log_h_rcs[] = W32LOG_H_VERSION;
 
+#ifndef _WIN_CONSOLE /* entire file */
+
 /*
  * Timers and the various durations
  */
@@ -126,6 +192,23 @@ char g_szFontFaceName[255] = DEFAULT_LOG_FONT_NAME;
 int g_nFontSize = DEFAULT_LOG_FONT_SIZE;
 
 
+/* FIXME: this is a kludge */
+
+const char * g_actions_file = NULL;
+const char * g_forwardfile = NULL;
+#ifdef ACL_FILES
+const char * g_aclfile = NULL;
+#endif /* def ACL_FILES */
+#ifdef PCRS
+const char * g_re_filterfile = NULL;
+#endif
+#ifdef TRUST_FILES
+const char * g_trustfile = NULL;
+#endif /* def TRUST_FILES */
+
+/* FIXME: end kludge */
+
+
 #ifdef REGEX
 /* Regular expression for detected URLs */
 #define RE_URL "http:[^ \n\r]*"
@@ -448,7 +531,7 @@ int LogPutString(const char *pszText)
                memset(pszBefore, 0, (match.rm_so + 1) * sizeof(char));
                strncpy(pszBefore, pszText, match.rm_so);
             }
-            if (match.rm_eo < strlen(pszText))
+            if (match.rm_eo < (regoff_t)strlen(pszText))
             {
                pszAfter = strdup(&pszText[match.rm_eo]);
             }
@@ -899,7 +982,9 @@ void OnLogRButtonUp(int nModifier, int x, int y)
    if (hMenu != NULL)
    {
       HMENU hMenuPopup = GetSubMenu(hMenu, 0);
+#ifdef WIN_GUI_EDIT
       char *szURL;
+#endif /* def WIN_GUI_EDIT */
 
       /* Check if there is a selection */
       CHARRANGE range;
@@ -913,6 +998,7 @@ void OnLogRButtonUp(int nModifier, int x, int y)
          EnableMenuItem(hMenuPopup, ID_EDIT_COPY, MF_BYCOMMAND | MF_ENABLED);
       }
 
+#ifdef WIN_GUI_EDIT
       /* Check if cursor is over a link */
       szURL = LogGetURLUnderCursor();
       if (szURL)
@@ -944,6 +1030,7 @@ void OnLogRButtonUp(int nModifier, int x, int y)
 
          free(szURL);
       }
+#endif /* def WIN_GUI_EDIT */
 
       /* Display the popup */
       TrackPopupMenu(hMenuPopup, TPM_LEFTALIGN | TPM_TOPALIGN | TPM_RIGHTBUTTON, x, y, 0, g_hwndLogFrame, NULL);
@@ -1020,69 +1107,41 @@ void OnLogCommand(int nCommand)
          break;
 #endif
 
-      case ID_RELOAD_CONFIG:
-         configret = 0;
-         load_config( 1 );
-
-         if ( configret )
-         {
-            log_error(LOG_LEVEL_ERROR, "load_config encountered a problem!  You should probably restart IJB.");
-         }
-         else
-         {
-            log_error(LOG_LEVEL_INFO, "Configuration has been reloaded.");
-         }
-         break;
-
       case ID_TOOLS_EDITJUNKBUSTER:
          EditFile(configfile);
          break;
 
-      case ID_TOOLS_EDITBLOCKERS:
-         EditFile(blockfile);
-         break;
-
-      case ID_TOOLS_EDITCOOKIES:
-         EditFile(cookiefile);
+      case ID_TOOLS_EDITACTIONS:
+         EditFile(g_actions_file);
          break;
 
       case ID_TOOLS_EDITFORWARD:
-         EditFile(forwardfile);
+         EditFile(g_forwardfile);
          break;
 
 #ifdef ACL_FILES
       case ID_TOOLS_EDITACLS:
-         EditFile(aclfile);
+         EditFile(g_aclfile);
          break;
 #endif /* def ACL_FILES */
 
-#ifdef USE_IMAGE_LIST
-      case ID_TOOLS_EDITIMAGE:
-         EditFile(imagefile);
-         break;
-#endif /* def USE_IMAGE_LIST */
-
 #ifdef PCRS
       case ID_TOOLS_EDITPERLRE:
-         EditFile(re_filterfile);
+         EditFile(g_re_filterfile);
          break;
 #endif
 
-#ifdef KILLPOPUPS
-      case ID_TOOLS_EDITPOPUPS:
-         EditFile(popupfile);
-         break;
-#endif /* def KILLPOPUPS */
-
 #ifdef TRUST_FILES
       case ID_TOOLS_EDITTRUST:
-         EditFile(trustfile);
+         EditFile(g_trustfile);
          break;
 #endif /* def TRUST_FILES */
 
+#ifdef WIN_GUI_EDIT
       case ID_NEW_BLOCKER:
          ShowRulesDialog(g_hwndLogFrame);
          break;
+#endif /* def WIN_GUI_EDIT */
 
       case ID_HELP_GPL:
          ShellExecute(g_hwndLogFrame, "open", "gpl.html", NULL, NULL, SW_SHOWNORMAL);
@@ -1128,23 +1187,16 @@ void OnLogCommand(int nCommand)
 void OnLogInitMenu(HMENU hmenu)
 {
    /* Only enable editors if there is a file to edit */
-   EnableMenuItem(hmenu, ID_TOOLS_EDITCOOKIES, MF_BYCOMMAND | (cookiefile ? MF_ENABLED : MF_GRAYED));
-   EnableMenuItem(hmenu, ID_TOOLS_EDITBLOCKERS, MF_BYCOMMAND | (blockfile ? MF_ENABLED : MF_GRAYED));
-   EnableMenuItem(hmenu, ID_TOOLS_EDITFORWARD, MF_BYCOMMAND | (forwardfile ? MF_ENABLED : MF_GRAYED));
+   EnableMenuItem(hmenu, ID_TOOLS_EDITACTIONS, MF_BYCOMMAND | (g_actions_file ? MF_ENABLED : MF_GRAYED));
+   EnableMenuItem(hmenu, ID_TOOLS_EDITFORWARD, MF_BYCOMMAND | (g_forwardfile ? MF_ENABLED : MF_GRAYED));
 #ifdef ACL_FILES
-   EnableMenuItem(hmenu, ID_TOOLS_EDITACLS, MF_BYCOMMAND | (aclfile ? MF_ENABLED : MF_GRAYED));
+   EnableMenuItem(hmenu, ID_TOOLS_EDITACLS, MF_BYCOMMAND | (g_aclfile ? MF_ENABLED : MF_GRAYED));
 #endif /* def ACL_FILES */
-#ifdef USE_IMAGE_LIST
-   EnableMenuItem(hmenu, ID_TOOLS_EDITIMAGE, MF_BYCOMMAND | (imagefile ? MF_ENABLED : MF_GRAYED));
-#endif /* def USE_IMAGE_LIST */
-#ifdef KILLPOPUPS
-   EnableMenuItem(hmenu, ID_TOOLS_EDITPOPUPS, MF_BYCOMMAND | (popupfile ? MF_ENABLED : MF_GRAYED));
-#endif /* def KILLPOPUPS */
 #ifdef PCRS
-   EnableMenuItem(hmenu, ID_TOOLS_EDITPERLRE, MF_BYCOMMAND | (re_filterfile ? MF_ENABLED : MF_GRAYED));
+   EnableMenuItem(hmenu, ID_TOOLS_EDITPERLRE, MF_BYCOMMAND | (g_re_filterfile ? MF_ENABLED : MF_GRAYED));
 #endif
 #ifdef TRUST_FILES
-   EnableMenuItem(hmenu, ID_TOOLS_EDITTRUST, MF_BYCOMMAND | (trustfile ? MF_ENABLED : MF_GRAYED));
+   EnableMenuItem(hmenu, ID_TOOLS_EDITTRUST, MF_BYCOMMAND | (g_trustfile ? MF_ENABLED : MF_GRAYED));
 #endif /* def TRUST_FILES */
 
    /* Check/uncheck options */
@@ -1313,6 +1365,7 @@ LRESULT CALLBACK LogWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lPara
 
 }
 
+#endif /* ndef _WIN_CONSOLE - entire file */
 
 /*
   Local Variables: