From 578e284d4a8c55c1355566765c0457d3988c5d10 Mon Sep 17 00:00:00 2001 From: Belkadi & Buret Date: Mon, 27 Jun 2011 18:46:45 +0200 Subject: cleo/app/libspid: add libspid_config_{read|write}_items(), refs #2449 If a file may be accessed concurrently by different processes, then reading or writing related items one at a time (with libspid_config_read_item() or libspid_config_write_item()) may result in incoherent results. For example: Process1 Process2 read(fileA, item1) write(fileA, item1) write(fileA, item2) read(fileA, item2) Process1 may now be working with an invalid pair (item1, item2). This commit adds two functions (libspid_config_read_items() and libspid_config_write_items()) to be able to read/write many items at once, thus avoiding incoherent results. --- cleopatre/application/libspid/inc/libspid.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'cleopatre/application/libspid/inc/libspid.h') diff --git a/cleopatre/application/libspid/inc/libspid.h b/cleopatre/application/libspid/inc/libspid.h index e5964e16c7..e6b91a0dfb 100644 --- a/cleopatre/application/libspid/inc/libspid.h +++ b/cleopatre/application/libspid/inc/libspid.h @@ -117,7 +117,9 @@ typedef enum { typedef void (*libspid_signal_handler_t) (int); extern libspid_error_t libspid_config_read_item (const char *filename, const char *label, char *value, int buffer_len); +extern libspid_error_t libspid_config_read_items (const char *filename, const char * const labels[], char *values[], const int buffers_len[], unsigned int count); extern libspid_error_t libspid_config_write_item(const char *filename, const char *label, const char *value); +extern libspid_error_t libspid_config_write_items (const char *filename, const char * const labels[], const char * const values[], unsigned int count); extern libspid_error_t libspid_config_read_line(const char *filename, const char* delimiters, char *key, unsigned int *elt_number, char *elt[], char *buffer, unsigned int buffer_len); extern libspid_error_t libspid_config_write_line(const char *filename, const char delimiter, const char *key, unsigned int elt_number, char *elt[]); extern libspid_error_t libspid_config_remove_line(const char *filename, const char *delimiters, const char *key); -- cgit v1.2.3