1
0
mirror of https://github.com/irssi/irssi.git synced 2024-11-03 04:27:19 -05:00
Commit Graph

62 Commits

Author SHA1 Message Date
Lukas Waymann
7d3eb47ab5 Fix potential rename(3) across file systems
Make sure the temporary file in the `config_write` function is created
on the same file system as the file we `rename` it to later.
2018-08-12 10:55:47 +00:00
Lukas Waymann
764f8215a9 Fix /save replacing symlinks with regular files
A side-effect of 8deb618 is that `/save` may replace configuration files
that are symlinks with regular files.  Fix this by resolving all
symlinks before renaming the temporary file.
2018-08-12 07:22:14 +00:00
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