SANEI  1.0.27-229-gef85977e-dirty
Data Structures | Functions
sanei_config.h File Reference

Generic configuration support. More...

Go to the source code of this file.

Data Structures

struct  SANEI_Config
 this structure holds the description of configuration options. More...
 

Functions

FILE * sanei_config_open (const char *name)
 Search configuration file name along directory list and return file pointer if such a file exists. More...
 
char * sanei_config_read (char *str, int n, FILE *stream)
 Read a line from configuration file. More...
 
const char * sanei_config_skip_whitespace (const char *str)
 Remove all whitespace from the beginning of a string. More...
 
const char * sanei_config_get_string (const char *str, char **string_const)
 Scan a string constant from a line of text and return a malloced copy of it. More...
 
void sanei_config_attach_matching_devices (const char *name, SANE_Status(*attach)(const char *dev))
 Expand device name patterns into a list of devices. More...
 
SANE_Status sanei_configure_attach (const char *config_file, SANEI_Config *config, SANE_Status(*config_attach)(SANEI_Config *config, const char *devname))
 Parse configuration file, reading configuration options and trying to attach devices found in file. More...
 
const char * sanei_config_get_paths (void)
 Return the list of config directories, extracted from the SANE_CONFIG_DIR environment variable and the default paths. More...
 

Detailed Description

Generic configuration support.

Use the functions of this header file if you want to read and analyze configuration files.

Function Documentation

◆ sanei_config_open()

FILE* sanei_config_open ( const char *  name)

Search configuration file name along directory list and return file pointer if such a file exists.

The following directory list is used: 1st: SANE_CONFIG_DIR environment variable. 2nd: PATH_SANE_CONFIG_DIR set during configuration. 3rd: Current directory.

Parameters
namefilename with extension but without path (such as "mustek.conf")
Returns
file pointer, or NULL if not found

◆ sanei_config_read()

char* sanei_config_read ( char *  str,
int  n,
FILE *  stream 
)

Read a line from configuration file.

Strips all unwanted chars. Use this instead of fgets() to remove line ending chars on all known platforms.

Parameters
strpoints to the buffer for the line
nsize of the buffer
streamfile pointer
Returns
str on success and NULL on error

◆ sanei_config_skip_whitespace()

const char* sanei_config_skip_whitespace ( const char *  str)

Remove all whitespace from the beginning of a string.

Parameters
strstring
Returns
string without leading whitespace

◆ sanei_config_get_string()

const char* sanei_config_get_string ( const char *  str,
char **  string_const 
)

Scan a string constant from a line of text and return a malloced copy of it.

It's the responsibility of the caller to free the returned string constant at an appropriate time. Whitespace in front of the string constant is ignored. Whitespace can be included in the string constant by enclosing it in double-quotes.

Parameters
strline of text to scan for a string constant
string_constcopy of the string constant
Returns
a pointer to the position in str where the scan stopped

◆ sanei_config_attach_matching_devices()

void sanei_config_attach_matching_devices ( const char *  name,
SANE_Status(*)(const char *dev)  attach 
)

Expand device name patterns into a list of devices.

Apart from a normal device name (such as /dev/sdb), this function currently supports SCSI device specifications of the form:

 scsi VENDOR MODEL TYPE BUS CHANNEL ID LUN

Where VENDOR is the desired vendor name. MODEL is the desired model name. TYPE is the desired device type. All of these can be set to * to match anything. To include whitespace in these strings, enclose them in double-quotes ("). BUS, ID, and LUN are the desired SCSI bus, id, and logical-unit numbers. These can be set to * or simply omitted to match anything.

Parameters
namedevice name pattern
attachattach function

◆ sanei_configure_attach()

SANE_Status sanei_configure_attach ( const char *  config_file,
SANEI_Config config,
SANE_Status(*)(SANEI_Config *config, const char *devname)  config_attach 
)

Parse configuration file, reading configuration options and trying to attach devices found in file.

The option are gathered in a single configuration structure. Each time a line holds a value that is not an option, the attach function is called with the name found and the configuration structure with it's current values.

Parameters
config_filename of the configuration file to read
configconfiguration structure to be filled during configuration parsing and passed to the attach callback function
config_attachattach with config callback function
Returns
SANE_STATUS_GOOD if no errors SANE_STATUS_ACCESS_DENIED if configuration file can't be opened

◆ sanei_config_get_paths()

const char* sanei_config_get_paths ( void  )

Return the list of config directories, extracted from the SANE_CONFIG_DIR environment variable and the default paths.

Returns
a string containing the configuration paths, separated by the operating system's path separator