dequis
8deb6182c6
Make config_write more atomic to prevent truncation when out of space
...
This is modeled after glib's g_file_set_contents. It doesn't use that
function directly because the writing is done with GIOChannel
streaming-like writes and g_file_set_contents expects the whole thing to
be in-memory.
Main differences with g_file_set_contents:
- complete lack of win32 special casing (cygwin/WSL should work though)
- no fallocate() (linux only, but we don't know the size upfront, anyway)
- always calls fsync (glib skips it on btrfs or when not overwriting)
Other than that, it's the same old mkstemp + fsync + rename.
2018-04-08 15:52:09 -03:00
LemonBoy
7fb84b5b7d
Enforce the is_node_list contract in lib-config setters.
...
An assertion failure is better than a segfault.
2016-11-29 23:08:45 +01:00
Peder Stray
6b56f098e9
Change g_hash_table_contains() for compatibility with glib < 2.32
2015-04-20 08:01:01 +02:00
Alexander Færøy
eb0f09073c
Merge pull request #199 from ailin-nemui/config-parser
...
Make config parser more robust
2015-04-17 21:23:03 +02:00
dequis
f14199d9c1
Change all strcmp() to g_strcmp0() to handle nulls gracefully
...
Just a string replacement (but i did check every one of them)
sed -i 's/strcmp(/g_strcmp0(/g' **/*.c
2015-04-07 22:41:05 -03:00
Ailin Nemui
fef25d6a35
Make the config parser more robust
...
We add some additional checks into the config parser's
node_section_index, node_traverse and node_set_str functions. In
particular, we check if the requested node is of scalar or complex type
and whether this matches the value found in the config. If it does not
match, then a warning is issued appropriately and the config is
corrected.
2015-02-17 09:50:55 +01:00
Ailin Nemui
af6b789d2a
Warn the user instead of crashing on wrong config
...
The change introduced in #191 will crash irssi immediately if you
accidentally try to /reload certain broken config files. It is enough to
warn the user in this case, so we turn g_error into g_critical.
2015-02-17 09:50:55 +01:00
Ailin Nemui
96d4fb9156
add CONFIG_REC to config_node_section* APIs
...
this adds the CONFIG_REC * to the config_node_section and
config_node_section_index APIs as they will require access to the config
cache later on to make the config parser more robust.
2015-02-17 09:50:55 +01:00
David Leadbeater
db62ddfd55
Die if the wrong type of node is found when traversing config
...
Fixes issue #187 . It's a bit annoying this can't do anything other than
exit, however as there's no schema for the config it's only possible to
validate on use. This level of config can't be accessed from Perl so a
script can't cause Irssi to die (via this method at least).
2014-12-16 12:14:23 +00:00
Dave Reisner
f0925de16b
s/INCLUDES/AM_CPPFLAGS/g
...
Silences warnings on recent automake such as:
src/core/Makefile.am:3: warning: 'INCLUDES' is the old name for
'AM_CPPFLAGS' (or '*_CPPFLAGS')
2014-06-27 09:06:21 -04:00
David Hill
0d4f13d20f
Replace deprecated g_str[n]casecmp with g_ascii_str[n]cmp.
2014-06-10 12:06:19 -04:00
Emanuele Giaquinta
b38b75bbb4
Add forgotten g_io_channel_set_close_on_unref call to close the config file fd
...
after saving, patch by Sven Wegener.
git-svn-id: file:///var/www/svn.irssi.org/SVN/irssi/trunk@5101 dbcabf3a-b0e7-0310-adc4-f8d773084564
2009-10-23 21:17:03 +00:00
Alexander Færøy
c561ba35e6
Code Cleanup:
...
Use g_string_append_printf() instead of g_string_sprintfa() (which is considered deprecated.)
git-svn-id: file:///var/www/svn.irssi.org/SVN/irssi/trunk@5003 dbcabf3a-b0e7-0310-adc4-f8d773084564
2009-02-08 17:22:42 +00:00
Emanuele Giaquinta
4534ef242d
Use an io channel to write the config file.
...
git-svn-id: file:///var/www/svn.irssi.org/SVN/irssi/trunk@4990 dbcabf3a-b0e7-0310-adc4-f8d773084564
2009-01-16 17:12:27 +00:00
Emanuele Giaquinta
1da5914177
Remove unused and odd function.
...
git-svn-id: file:///var/www/svn.irssi.org/SVN/irssi/trunk@4985 dbcabf3a-b0e7-0310-adc4-f8d773084564
2009-01-14 17:53:57 +00:00
Emanuele Giaquinta
01042aec2d
Fix typos.
...
git-svn-id: file:///var/www/svn.irssi.org/SVN/irssi/trunk@4984 dbcabf3a-b0e7-0310-adc4-f8d773084564
2009-01-14 17:19:42 +00:00
Emanuele Giaquinta
169c55b949
Simplify, use 'o' printf conversion specifier to print number in octal.
...
git-svn-id: file:///var/www/svn.irssi.org/SVN/irssi/trunk@4904 dbcabf3a-b0e7-0310-adc4-f8d773084564
2008-11-12 23:13:57 +00:00
Emanuele Giaquinta
30aee7b46c
Move lib-config typedefs in iconfig.h.
...
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4759 dbcabf3a-b0e7-0310-adc4-f8d773084564
2008-03-11 14:55:46 +00:00
Emanuele Giaquinta
9da9751aca
Document config_node_set_str.
...
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4757 dbcabf3a-b0e7-0310-adc4-f8d773084564
2008-03-11 14:32:04 +00:00
Emanuele Giaquinta
4ca476d465
Fix typos.
...
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4756 dbcabf3a-b0e7-0310-adc4-f8d773084564
2008-03-11 13:26:33 +00:00
Emanuele Giaquinta
75352a5998
Keep documentation for public api only in headers to avoid duplication.
...
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4755 dbcabf3a-b0e7-0310-adc4-f8d773084564
2008-03-11 13:25:33 +00:00
Emanuele Giaquinta
3c7c3941d7
Remove .cvsignore files.
...
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4672 dbcabf3a-b0e7-0310-adc4-f8d773084564
2008-01-21 11:49:10 +00:00
Wouter Coekaerts
9c2d621cc6
Oops. Update address correctly now.
...
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4490 dbcabf3a-b0e7-0310-adc4-f8d773084564
2007-05-08 18:41:10 +00:00
Wouter Coekaerts
023026e12b
Update FSF address
...
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4489 dbcabf3a-b0e7-0310-adc4-f8d773084564
2007-05-08 18:16:58 +00:00
Emanuele Giaquinta
bcbadbb74f
Allow identifiers to start with a digit, bug #177 .
...
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4409 dbcabf3a-b0e7-0310-adc4-f8d773084564
2007-01-11 23:11:30 +00:00
Timo Sirainen
777bb76195
noinst_HEADERS -> pkginc_HEADERS
...
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@3250 dbcabf3a-b0e7-0310-adc4-f8d773084564
2004-05-10 20:30:57 +00:00
Timo Sirainen
b05cfc62e0
config_node_nth() and config_node_index() don't count comments in config
...
anymore. fixes problems having comments in channels and servers block.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2971 dbcabf3a-b0e7-0310-adc4-f8d773084564
2002-10-25 13:57:16 +00:00
Timo Sirainen
7b2f9bc50a
removed useless functions
...
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2804 dbcabf3a-b0e7-0310-adc4-f8d773084564
2002-05-17 21:00:38 +00:00
Timo Sirainen
b38f4da166
renamed old config_node_index() to config_node_nth(). added new
...
config_node_index() function. added config_node_section_index() for
adding/moving node to specified position in list.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2460 dbcabf3a-b0e7-0310-adc4-f8d773084564
2002-02-15 22:18:35 +00:00
Timo Sirainen
f4897860b5
toupper(), tolower(), isspace(), is..etc..() aren't safe with chars in some
...
systems, use our own is_...() functions now instead.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2348 dbcabf3a-b0e7-0310-adc4-f8d773084564
2002-01-27 20:45:59 +00:00
Timo Sirainen
0ffcbdc9b4
Removed memory debugging code. It's a lot easier to check for buffer
...
overflows with electric fence and memory leaks with memprof.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2095 dbcabf3a-b0e7-0310-adc4-f8d773084564
2001-11-19 20:30:19 +00:00
Timo Sirainen
6a82e806b4
Moved $(GLIB_CFLAGS) after -I includes, to make sure our own .h files get before possibly identically named headers in the glib's include directory.
...
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1975 dbcabf3a-b0e7-0310-adc4-f8d773084564
2001-11-05 14:48:03 +00:00
Timo Sirainen
80df4378d3
added config_node_first() function to get the first non-comment node.
...
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1812 dbcabf3a-b0e7-0310-adc4-f8d773084564
2001-09-22 15:24:40 +00:00
Timo Sirainen
5976d82fa7
config_node_next() - Returns the next non-comment node in list. Use this
...
function when reading blocks/lists in config file.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1811 dbcabf3a-b0e7-0310-adc4-f8d773084564
2001-09-22 14:53:54 +00:00
Timo Sirainen
8d6d0ee43e
config_node_remove() - NULL parent is treated as root node
...
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1490 dbcabf3a-b0e7-0310-adc4-f8d773084564
2001-05-11 19:53:39 +00:00
Timo Sirainen
c741abe23f
'=' isn't really necessary, warn if it's missing but don't fail without
...
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1185 dbcabf3a-b0e7-0310-adc4-f8d773084564
2001-02-06 21:42:58 +00:00
Timo Sirainen
a2d9661982
Don't write indent spaces to empty lines
...
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1085 dbcabf3a-b0e7-0310-adc4-f8d773084564
2001-01-07 08:05:14 +00:00
Timo Sirainen
4a33801669
Added/moved several "typedef struct _XXX XXX;" to common.h so that
...
they're known to all files and I don't need those stupid "void *xxx"
anymore just to avoid useless #include. Header files themselves don't
either include others as often anymore.
Added channel->ownnick to point to our NICK_REC in channel's nicks.
Gives a minor speedup in few places :)
Moved completion specific lastmsgs from channel/server core records to
fe-common/core specific records. Also changed the nick completion logic
a bit so it should work better now. Removed
completion_keep_publics_count setting, but changed the meaning of
completion_keep_publics to same as _count was before. Nick completion
doesn't have any time specific code anymore.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1034 dbcabf3a-b0e7-0310-adc4-f8d773084564
2001-01-01 07:45:54 +00:00
Timo Sirainen
fbad9ef2ba
Config file handle wasn't closed if config_write_block() failed
...
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@993 dbcabf3a-b0e7-0310-adc4-f8d773084564
2000-12-16 23:38:12 +00:00
Timo Sirainen
f2a8cab907
config_close() didn't work correctly when config was parsed from string
...
instead of file.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@909 dbcabf3a-b0e7-0310-adc4-f8d773084564
2000-12-02 02:01:28 +00:00
Timo Sirainen
0d8239e40e
config changes, CONFIG_REC is now required parameter for
...
config_node_set_int/bool() and config_node_add_list()
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@886 dbcabf3a-b0e7-0310-adc4-f8d773084564
2000-11-26 10:24:30 +00:00
Timo Sirainen
f9653a5e1e
some updates for checking when to not autosave config.
...
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@872 dbcabf3a-b0e7-0310-adc4-f8d773084564
2000-11-26 02:26:13 +00:00
Timo Sirainen
a954fa03d0
Added modify counter which is increased every time something is changed
...
in configuration.
Autosaving settings doesn't even try to save them if config isn't
changed.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@871 dbcabf3a-b0e7-0310-adc4-f8d773084564
2000-11-26 02:17:14 +00:00
Timo Sirainen
5f2f6886c8
more enum fixes
...
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@862 dbcabf3a-b0e7-0310-adc4-f8d773084564
2000-11-23 22:59:14 +00:00
Timo Sirainen
8ce36c05ea
several fixes to make irssi compile without warnings with MIPSpro
...
also fixed ctcp_queue_clean() - it might have crashed sometimes..
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@859 dbcabf3a-b0e7-0310-adc4-f8d773084564
2000-11-23 21:40:07 +00:00
Timo Sirainen
008ec45db2
config_node_clear() didn't work right.
...
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@648 dbcabf3a-b0e7-0310-adc4-f8d773084564
2000-09-06 21:02:32 +00:00
Timo Sirainen
e395e87ded
Lots of moving stuff around - hopefully I didn't break too much :)
...
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@632 dbcabf3a-b0e7-0310-adc4-f8d773084564
2000-08-26 15:39:44 +00:00
Timo Sirainen
8dab451d18
Small memleak fixed
...
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@613 dbcabf3a-b0e7-0310-adc4-f8d773084564
2000-08-16 00:48:51 +00:00
Timo Sirainen
8209e131d9
fix
...
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@573 dbcabf3a-b0e7-0310-adc4-f8d773084564
2000-08-01 01:31:49 +00:00
Timo Sirainen
dcc2e89b2e
Enabled lots of GCC warnings, fixed those that were easy to fix.
...
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@456 dbcabf3a-b0e7-0310-adc4-f8d773084564
2000-07-10 23:00:56 +00:00