Main Page Alphabetical List Data Structures File List Data Fields Globals
loaders.h File Reference
Functions to load and unload the various configuration files.
More...
Go to the source code of this file.
Defines |
|
#define | LOADERS_H_VERSION "$Id: loaders.h,v 2.1 2002/06/04 17:22:37 jongfoster Exp $" |
| #define | NEWLINE_UNKNOWN 0 |
| #define | NEWLINE_UNIX 1 |
| #define | NEWLINE_DOS 2 |
| #define | NEWLINE_MAC 3 |
| #define | NEWLINE(style) |
Functions |
| void | sweep (void) |
| char * | read_config_line (char *buf, size_t buflen, FILE *fp, unsigned long *linenum) |
| int | check_file_changed (const struct file_list *current, const char *filename, struct file_list **newfl) |
| jb_err | edit_read_line (FILE *fp, char **raw_out, char **prefix_out, char **data_out, int *newline, unsigned long *line_number) |
| jb_err | simple_read_line (FILE *fp, char **dest, int *newline) |
| int | load_actions_file (struct client_state *csp) |
| int | load_re_filterfile (struct client_state *csp) |
| void | add_loader (int(*loader)(struct client_state *), struct configuration_spec *config) |
| int | run_loader (struct client_state *csp) |
Variables |
|
short int | MustReload |
| const char | loaders_rcs [] |
| const char | loaders_h_rcs [] |
Detailed Description
Functions to load and unload the various configuration files.
Also contains code to manage the list of active loaders, and to automatically unload files that are no longer in use.
-
Log:
-
loaders.h,v
Revision 2.1 2002/06/04 17:22:37 jongfoster Adding comments
Revision 2.0 2002/06/04 14:34:21 jongfoster Moving source files to src/
Revision 1.19 2002/03/26 22:29:55 swa we have a new homepage!
Revision 1.18 2002/03/24 13:25:43 swa name change related issues
Revision 1.17 2002/03/16 23:54:06 jongfoster Adding graceful termination feature, to help look for memory leaks. If you enable this (which, by design, has to be done by hand editing config.h) and then go to http://i.j.b/die, then the program will exit cleanly after the *next* request. It should free all the memory that was used.
Revision 1.16 2002/03/07 03:46:17 oes Fixed compiler warnings
Revision 1.15 2002/01/22 23:46:18 jongfoster Moving edit_read_line() and simple_read_line() to loaders.c, and extending them to support reading MS-DOS, Mac and UNIX style files on all platforms.
Modifying read_config_line() (without changing it's prototype) to be a trivial wrapper for edit_read_line(). This means that we have one function to read a line and handle comments, which is common between the initialization code and the edit interface.
Revision 1.14 2002/01/17 21:03:08 jongfoster Moving all our URL and URL pattern parsing code to urlmatch.c.
Renaming free_url to free_url_spec, since it frees a struct url_spec.
Revision 1.13 2001/12/30 14:07:32 steudten
- Add signal handling (unix)
- Add SIGHUP handler (unix)
- Add creation of pidfile (unix)
- Add action 'top' in rc file (RH)
- Add entry 'SIGNALS' to manpage
- Add exit message to logfile (unix)
Revision 1.12 2001/11/07 00:02:13 steudten Add line number in error output for lineparsing for actionsfile and configfile. Special handling for CLF added.
Revision 1.11 2001/10/23 21:38:53 jongfoster Adding error-checking to create_url_spec()
Revision 1.10 2001/09/22 16:36:59 jongfoster Removing unused parameter fs from read_config_line()
Revision 1.9 2001/07/30 22:08:36 jongfoster Tidying up defines:
- All feature defines are now of the form FEATURE_xxx
- Permanently turned off WIN_GUI_EDIT
- Permanently turned on WEBDAV and SPLIT_PROXY_ARGS
Revision 1.8 2001/07/29 18:58:15 jongfoster Removing nested includes, adding forward declarations for needed structures, and changing the define _FILENAME_H to FILENAME_H_INCLUDED.
Revision 1.7 2001/07/13 14:01:54 oes Removed all ifdef PCRS
Revision 1.6 2001/06/07 23:14:38 jongfoster Removing ACL and forward file loaders - these files have been merged into the config file.
Revision 1.5 2001/05/31 21:28:49 jongfoster Removed all permissionsfile code - it's now called the actions file, and (almost) all the code is in actions.c
Revision 1.4 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.3 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.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:00 oes Initial import of version 2.9.3 source tree
Define Documentation
| #define NEWLINE |
( |
style |
|
) |
|
|
|
|
Value: Types of newlines that a file may contain, as strings.
If you have an extremely wierd compiler that does not have '\r' == CR == ASCII 13 and '
' == LF == ASCII 10), then fix CHAR_CR and CHAR_LF in loaders.c as well as these definitions. |
|
|
Newline convention in file is '\r
' (ASCII 13,10).
|
|
|
Newline convention in file is '\r' (ASCII 13).
|
|
|
Newline convention in file is '
' (ASCII 10).
|
| #define NEWLINE_UNKNOWN 0
|
|
|
|
Newline convention in file is unknown.
|
Function Documentation
|
|
Called from `load_config'.
Called once for each input file found in config. -
Parameters:
-
| loader |
pointer to a function that can parse and load the appropriate config file. |
| config |
The configuration_spec to add the loader to. |
-
Returns:
-
N/A
|
| int check_file_changed |
( |
const struct file_list * |
current, |
|
|
const char * |
filename, |
|
|
struct file_list ** |
newfl |
|
) |
|
|
|
|
Helper function to check if a file needs reloading.
If "current" is still current, return it. Otherwise allocates a new (zeroed) "struct file_list", fills in the disk file name and timestamp, and returns it. -
Parameters:
-
| current |
The file_list currently being used - will be checked to see if it is out of date. May be NULL (which is treated as out of date). |
| filename |
Name of file to check. |
| newfl |
New file list. [Output only] This will be set to NULL, OR a struct file_list newly allocated on the heap, with the filename and lastmodified fields filled, and all others zeroed. |
-
Returns:
-
If file unchanged: 0 (and sets newfl == NULL) If file changed: 1 and sets newfl != NULL On error: 1 and sets newfl == NULL
|
| jb_err edit_read_line |
( |
FILE * |
fp, |
|
|
char ** |
raw_out, |
|
|
char ** |
prefix_out, |
|
|
char ** |
data_out, |
|
|
int * |
newline, |
|
|
unsigned long * |
line_number |
|
) |
|
|
|
|
Read a single non-empty line from a file and return it.
Trims comments, leading and trailing whitespace and respects escaping of newline and comment char. Provides the line in 2 alternative forms: raw and preprocessed.
- raw is the raw data read from the file. If the line is not modified, then this should be written to the new file.
- prefix is any comments and blank lines that were read from the file. If the line is modified, then this should be written out to the file followed by the modified data. (If this string is non-empty then it will have a newline at the end).
- data is the actual data that will be parsed further by appropriate routines. On EOF, the 3 strings will all be set to NULL and 0 will be returned.
-
Parameters:
-
| fp |
File to read from |
| raw_out |
destination for newly malloc'd pointer to raw line data. May be NULL if you don't want it. |
| prefix_out |
destination for newly malloc'd pointer to comments. May be NULL if you don't want it. |
| data_out |
destination for newly malloc'd pointer to line data with comments and leading/trailing spaces removed, and line continuation performed. May be NULL if you don't want it. |
| newline |
Standard for newlines in the file. On input, set to value to use or NEWLINE_UNKNOWN. On output, may be changed from NEWLINE_UNKNOWN to actual convention in file. May be NULL if you don't want it. |
| line_number |
Line number in file. In "lines" as reported by a text editor, not lines containing data. |
-
Returns:
-
JB_ERR_OK on success JB_ERR_MEMORY on out-of-memory JB_ERR_FILE on EOF.
|
|
|
Read and parse all the action files and add to files list.
-
Parameters:
-
| csp |
Current client state (buffers, headers, etc...) |
-
Returns:
-
0 => Ok, everything else is an error.
|
|
|
Load the re_filterfile.
Generate a chained list of re_filterfile_spec's from the "FILTER: " blocks, compiling all their substitutions into chained lists of pcrs_job structs. -
Parameters:
-
| csp |
Current client state (buffers, headers, etc...) |
-
Returns:
-
0 => Ok, everything else is an error.
|
| char* read_config_line |
( |
char * |
buf, |
|
|
size_t |
buflen, |
|
|
FILE * |
fp, |
|
|
unsigned long * |
linenum |
|
) |
|
|
|
|
Read a single non-empty line from a file and return it.
Trims comments, leading and trailing whitespace and respects escaping of newline and comment char. -
Parameters:
-
| buf |
Buffer to use. |
| buflen |
Size of buffer in bytes. |
| fp |
File to read from |
| linenum |
linenumber in file |
-
Returns:
-
NULL on EOF or error Otherwise, returns buf.
|
|
|
Called from `load_config' and `listen_loop'.
This function keeps the "csp" current with any file mods since the last loop. If a file is unchanged, the loader functions do NOT reload the file. -
Parameters:
-
| csp |
Current client state (buffers, headers, etc...) Must be non-null. Reads: "csp->config"
Writes various data members. |
-
Returns:
-
0 => Ok, everything else is an error.
|
| jb_err simple_read_line |
( |
FILE * |
fp, |
|
|
char ** |
dest, |
|
|
int * |
newline |
|
) |
|
|
|
|
Read a single line from a file and return it.
This is basically a version of fgets() that malloc()s it's own line buffer. Note that the buffer will always be a multiple of BUFFER_SIZE bytes long. Therefore if you are going to keep the string for an extended period of time, you should probably strdup() it and free() the original, to save memory. -
Parameters:
-
| dest |
destination for newly malloc'd pointer to line data. Will be set to NULL on error. |
| fp |
File to read from |
| newline |
Standard for newlines in the file. Will be unchanged if it's value on input is not NEWLINE_UNKNOWN. On output, may be changed from NEWLINE_UNKNOWN to actual convention in file. |
-
Returns:
-
JB_ERR_OK on success JB_ERR_MEMORY on out-of-memory JB_ERR_FILE on EOF.
|
|
|
Basically a mark and sweep garbage collector, it is run (by the parent thread) every once in a while to reclaim memory.
It uses a mark and sweep strategy: 1) mark all files as inactive 2) check with each client: if it is active, mark its files as active if it is inactive, free its resources 3) free the resources of all of the files that are still marked as inactive (and are obsolete). N.B. files that are not obsolete don't have an unloader defined.
-
Returns:
-
N/A
|
Variable Documentation
| const char loaders_h_rcs[]
|
|
Generated on Tue Jun 4 18:54:49 2002 for Privoxy 3.1.1 by
1.2.15