Hi, On Thu, Dec 16, 2010 at 11:28 AM, Luiz Augusto von Dentz <luiz.dentz@xxxxxxxxx> wrote: > Hi, > > On Wed, Dec 15, 2010 at 8:19 PM, Anderson Lizardo > <anderson.lizardo@xxxxxxxxxxxxx> wrote: >> On Tue, Dec 14, 2010 at 2:20 PM, Lukasz Pawlik <lucas.pawlik@xxxxxxxxx> wrote: >>> Hi, >>> >>>> If somebody can explain what that code is supposed to do, then writing a >>>> glib-ish version should be trivial, without having to duplicate the >>>> contents again. Then again, using something like: >>>> g_mapped_file_new (); >>>> g_strsplit (); >>>> g_mapped_file_unref (); >>> >>> That won't fix anything since g_mapped_file_new uses mmap function so >>> contents may not be zero-terminated and we want use string function >>> next. >> >> What about using g_strstr_len() instead of strpbrk() on the original >> code? See http://library.gnome.org/devel/glib/unstable/glib-String-Utility-Functions.html#g-strstr-len > > That looks to be a good replacement for strpbrk, probably 1 line patch. I guess we cannot use any of glib functions here since textfile.c is also used in some tools which doesn't link with glib, so if we don't want to add this dependency to the than we need some other way to fix it. What about this: diff --git a/src/textfile.c b/src/textfile.c index 2429cc7..2e4c642 100644 --- a/src/textfile.c +++ b/src/textfile.c @@ -394,7 +394,7 @@ int textfile_foreach(const char *pathname, textfile_cb func, void *data) goto unlock; } - size = st.st_size; + size = st.st_size + 1; map = mmap(NULL, size, PROT_READ, MAP_SHARED, fd, 0); if (!map || map == MAP_FAILED) { It will probably use 1 more page if the file size is multiple of the page size but it seems correct if you compare to e.g. malloc, well if the possibility of the extra page is too much than we need our own version of g_strstr_len/strpbrk_len like the following: http://www.google.com/codesearch/p?hl=en#cZwlSNS7aEw/external/bluetooth/glib/glib/gstrfuncs.c&q=g_strstr_len&d=4 -- Luiz Augusto von Dentz Computer Engineer -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html