From a412fb16541620ed72da86daac0774afe4703d9d Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Fri, 25 Jul 2003 21:32:47 +0000 Subject: [PATCH] Remove some explicit Docbook markup which is no longer necessary since gtk-doc does the right thing. --- ChangeLog | 14 ++++++++++++++ ChangeLog.pre-2-10 | 14 ++++++++++++++ ChangeLog.pre-2-12 | 14 ++++++++++++++ ChangeLog.pre-2-4 | 14 ++++++++++++++ ChangeLog.pre-2-6 | 14 ++++++++++++++ ChangeLog.pre-2-8 | 14 ++++++++++++++ glib/gasyncqueue.c | 2 +- glib/gconvert.c | 8 ++++---- glib/gerror.c | 8 ++++---- glib/gfileutils.c | 18 +++++++++--------- glib/giochannel.c | 6 +++--- glib/gmain.c | 10 +++++----- glib/gmem.c | 9 ++++----- glib/gspawn.c | 42 +++++++++++++++++++----------------------- glib/gtree.c | 7 +++---- glib/gunicollate.c | 6 +++--- glib/gutf8.c | 2 +- glib/gwin32.c | 2 +- 18 files changed, 141 insertions(+), 63 deletions(-) diff --git a/ChangeLog b/ChangeLog index 34af8f7..93711d1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,19 @@ 2003-07-25 Matthias Clasen + * glib/gwin32.c: + * glib/gutf8.c: + * glib/gunicollate.c: + * glib/gtree.c: + * glib/gspawn.c: + * glib/gmain.c: + * glib/giochannel.c: + * glib/gfileutils.c: + * glib/gerror.c: + * glib/gconvert.c: + * glib/gasyncqueue.c: + * glib/gmem.c: Remove some explicit Docbook markup which is no longer necessary + since gtk-doc does the right thing. + * glib/gutf8.c (g_utf8_get_char_validated): Work around gtk-doc stupidity. 2003-07-20 Hans Breuer diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 34af8f7..93711d1 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,5 +1,19 @@ 2003-07-25 Matthias Clasen + * glib/gwin32.c: + * glib/gutf8.c: + * glib/gunicollate.c: + * glib/gtree.c: + * glib/gspawn.c: + * glib/gmain.c: + * glib/giochannel.c: + * glib/gfileutils.c: + * glib/gerror.c: + * glib/gconvert.c: + * glib/gasyncqueue.c: + * glib/gmem.c: Remove some explicit Docbook markup which is no longer necessary + since gtk-doc does the right thing. + * glib/gutf8.c (g_utf8_get_char_validated): Work around gtk-doc stupidity. 2003-07-20 Hans Breuer diff --git a/ChangeLog.pre-2-12 b/ChangeLog.pre-2-12 index 34af8f7..93711d1 100644 --- a/ChangeLog.pre-2-12 +++ b/ChangeLog.pre-2-12 @@ -1,5 +1,19 @@ 2003-07-25 Matthias Clasen + * glib/gwin32.c: + * glib/gutf8.c: + * glib/gunicollate.c: + * glib/gtree.c: + * glib/gspawn.c: + * glib/gmain.c: + * glib/giochannel.c: + * glib/gfileutils.c: + * glib/gerror.c: + * glib/gconvert.c: + * glib/gasyncqueue.c: + * glib/gmem.c: Remove some explicit Docbook markup which is no longer necessary + since gtk-doc does the right thing. + * glib/gutf8.c (g_utf8_get_char_validated): Work around gtk-doc stupidity. 2003-07-20 Hans Breuer diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 34af8f7..93711d1 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,5 +1,19 @@ 2003-07-25 Matthias Clasen + * glib/gwin32.c: + * glib/gutf8.c: + * glib/gunicollate.c: + * glib/gtree.c: + * glib/gspawn.c: + * glib/gmain.c: + * glib/giochannel.c: + * glib/gfileutils.c: + * glib/gerror.c: + * glib/gconvert.c: + * glib/gasyncqueue.c: + * glib/gmem.c: Remove some explicit Docbook markup which is no longer necessary + since gtk-doc does the right thing. + * glib/gutf8.c (g_utf8_get_char_validated): Work around gtk-doc stupidity. 2003-07-20 Hans Breuer diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 34af8f7..93711d1 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,5 +1,19 @@ 2003-07-25 Matthias Clasen + * glib/gwin32.c: + * glib/gutf8.c: + * glib/gunicollate.c: + * glib/gtree.c: + * glib/gspawn.c: + * glib/gmain.c: + * glib/giochannel.c: + * glib/gfileutils.c: + * glib/gerror.c: + * glib/gconvert.c: + * glib/gasyncqueue.c: + * glib/gmem.c: Remove some explicit Docbook markup which is no longer necessary + since gtk-doc does the right thing. + * glib/gutf8.c (g_utf8_get_char_validated): Work around gtk-doc stupidity. 2003-07-20 Hans Breuer diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 34af8f7..93711d1 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,5 +1,19 @@ 2003-07-25 Matthias Clasen + * glib/gwin32.c: + * glib/gutf8.c: + * glib/gunicollate.c: + * glib/gtree.c: + * glib/gspawn.c: + * glib/gmain.c: + * glib/giochannel.c: + * glib/gfileutils.c: + * glib/gerror.c: + * glib/gconvert.c: + * glib/gasyncqueue.c: + * glib/gmem.c: Remove some explicit Docbook markup which is no longer necessary + since gtk-doc does the right thing. + * glib/gutf8.c (g_utf8_get_char_validated): Work around gtk-doc stupidity. 2003-07-20 Hans Breuer diff --git a/glib/gasyncqueue.c b/glib/gasyncqueue.c index 071dedb..155e4ca 100644 --- a/glib/gasyncqueue.c +++ b/glib/gasyncqueue.c @@ -149,7 +149,7 @@ g_async_queue_unref (GAsyncQueue *queue) * @queue: a #GAsyncQueue. * * Acquires the @queue's lock. After that you can only call the - * g_async_queue_*_unlocked() function variants on that + * g_async_queue_*_unlocked() function variants on that * @queue. Otherwise it will deadlock. **/ void diff --git a/glib/gconvert.c b/glib/gconvert.c index 58cfc72..66ce7f2 100644 --- a/glib/gconvert.c +++ b/glib/gconvert.c @@ -97,7 +97,7 @@ extern const char **_g_charset_get_aliases (const char *canonical_name); * @to_codeset: destination codeset * @from_codeset: source codeset * - * Same as the standard UNIX routine iconv_open(), but + * Same as the standard UNIX routine iconv_open(), but * may be implemented via libiconv on UNIX flavors that lack * a native implementation. * @@ -149,7 +149,7 @@ g_iconv_open (const gchar *to_codeset, * @outbuf: converted output bytes * @outbytes_left: inout parameter, bytes available to fill in @outbuf * - * Same as the standard UNIX routine iconv(), but + * Same as the standard UNIX routine iconv(), but * may be implemented via libiconv on UNIX flavors that lack * a native implementation. * @@ -174,7 +174,7 @@ g_iconv (GIConv converter, * g_iconv_close: * @converter: a conversion descriptor from g_iconv_open() * - * Same as the standard UNIX routine iconv_close(), but + * Same as the standard UNIX routine iconv_close(), but * may be implemented via libiconv on UNIX flavors that lack * a native implementation. Should be called to clean up * the conversion descriptor from g_iconv_open() when @@ -668,7 +668,7 @@ g_convert_with_iconv (const gchar *str, * in the output. Note that it is not guaranteed that the specification * for the fallback sequences in @fallback will be honored. Some * systems may do a approximate conversion from @from_codeset - * to @to_codeset in their iconv() functions, + * to @to_codeset in their iconv() functions, * in which case GLib will simply return that approximate conversion. * * Return value: If the conversion was successful, a newly allocated diff --git a/glib/gerror.c b/glib/gerror.c index bd6a34b..9a0729f 100644 --- a/glib/gerror.c +++ b/glib/gerror.c @@ -50,7 +50,7 @@ g_error_new_valist(GQuark domain, * g_error_new: * @domain: error domain * @code: error code - * @format: printf()-style format for error message + * @format: printf()-style format for error message * @Varargs: parameters for message format * * Creates a new #GError with the given @domain and @code, @@ -84,9 +84,9 @@ g_error_new (GQuark domain, * @message: error message * * Creates a new #GError; unlike g_error_new(), @message is not - * a printf()-style format string. Use this + * a printf()-style format string. Use this * function if @message contains text you don't have control over, - * that could include printf() escape sequences. + * that could include printf() escape sequences. * * Return value: a new #GError **/ @@ -180,7 +180,7 @@ g_error_matches (const GError *error, * @err: a return location for a #GError, or %NULL * @domain: error domain * @code: error code - * @format: printf()-style format + * @format: printf()-style format * @Varargs: args for @format * * Does nothing if @err is %NULL; if @err is non-%NULL, then *@err must diff --git a/glib/gfileutils.c b/glib/gfileutils.c index 295a1df..5fb0e3d 100644 --- a/glib/gfileutils.c +++ b/glib/gfileutils.c @@ -639,19 +639,19 @@ g_file_get_contents (const gchar *filename, * g_mkstemp: * @tmpl: template filename * - * Opens a temporary file. See the mkstemp() documentation + * Opens a temporary file. See the mkstemp() documentation * on most UNIX-like systems. This is a portability wrapper, which simply calls - * mkstemp() on systems that have it, and implements + * mkstemp() on systems that have it, and implements * it in GLib otherwise. * * The parameter is a string that should match the rules for - * mkstemp(), i.e. end in "XXXXXX". The X string will + * mkstemp(), i.e. end in "XXXXXX". The X string will * be modified to form the name of a file that didn't exist. * - * Return value: A file handle (as from open()) to the file + * Return value: A file handle (as from open()) to the file * opened for reading and writing. The file is opened in binary mode * on platforms where there is a difference. The file handle should be - * closed with close(). In case of errors, -1 is returned. + * closed with close(). In case of errors, -1 is returned. */ int g_mkstemp (char *tmpl) @@ -723,21 +723,21 @@ g_mkstemp (char *tmpl) * files (as returned by g_get_tmp_dir()). * * @tmpl should be a string ending with six 'X' characters, as the - * parameter to g_mkstemp() (or mkstemp()). + * parameter to g_mkstemp() (or mkstemp()). * However, unlike these functions, the template should only be a * basename, no directory components are allowed. If template is %NULL, * a default template is used. * - * Note that in contrast to g_mkstemp() (and mkstemp()) + * Note that in contrast to g_mkstemp() (and mkstemp()) * @tmpl is not modified, and might thus be a read-only literal string. * * The actual name used is returned in @name_used if non-%NULL. This * string should be freed with g_free() when not needed any longer. * - * Return value: A file handle (as from open()) to + * Return value: A file handle (as from open()) to * the file opened for reading and writing. The file is opened in binary * mode on platforms where there is a difference. The file handle should be - * closed with close(). In case of errors, -1 is returned + * closed with close(). In case of errors, -1 is returned * and @error will be set. **/ int diff --git a/glib/giochannel.c b/glib/giochannel.c index 6b02cc8..2f384f3 100644 --- a/glib/giochannel.c +++ b/glib/giochannel.c @@ -246,7 +246,7 @@ g_io_channel_write (GIOChannel *channel, * file). * * Sets the current position in the #GIOChannel, similar to the standard library - * function fseek(). + * function fseek(). * * Return value: %G_IO_ERROR_NONE if the operation was successful. * @@ -293,7 +293,7 @@ g_io_channel_seek (GIOChannel *channel, * g_io_channel_new_file: * @filename: A string containing the name of a file. * @mode: One of "r", "w", "a", "r+", "w+", "a+". These have - * the same meaning as in fopen(). + * the same meaning as in fopen(). * @error: A location to return an error of type %G_FILE_ERROR. * * Open a file @filename as a #GIOChannel using mode @mode. This @@ -748,7 +748,7 @@ g_io_channel_set_flags (GIOChannel *channel, * The values of the flags %G_IO_FLAG_IS_READABLE and %G_IO_FLAG_IS_WRITEABLE * are cached for internal use by the channel when it is created. * If they should change at some later point (e.g. partial shutdown - * of a socket with the UNIX shutdown() function), the user + * of a socket with the UNIX shutdown() function), the user * should immediately call g_io_channel_get_flags () to update * the internal values of these flags. * diff --git a/glib/gmain.c b/glib/gmain.c index d732ffb..fccdae1 100644 --- a/glib/gmain.c +++ b/glib/gmain.c @@ -1595,7 +1595,7 @@ g_source_remove_by_funcs_user_data (GSourceFuncs *funcs, * g_get_current_time: * @result: #GTimeVal structure in which to store current time. * - * Equivalent to the UNIX gettimeofday() function, but portable. + * Equivalent to the UNIX gettimeofday() function, but portable. **/ void g_get_current_time (GTimeVal *result) @@ -2899,9 +2899,9 @@ g_source_get_current_time (GSource *source, * @func: the function to call to poll all file descriptors * * Sets the function to use to handle polling of file descriptors. It - * will be used instead of the poll() system call + * will be used instead of the poll() system call * (or GLib's replacement function, which is used where - * poll() isn't available). + * poll() isn't available). * * This function could possibly be used to integrate the GLib event * loop with an external event loop. @@ -2978,8 +2978,8 @@ g_main_context_wakeup_unlocked (GMainContext *context) * g_main_context_wakeup: * @context: a #GMainContext * - * If @context is currently waiting in a poll(), interrupt - * the poll(), and continue the iteration process. + * If @context is currently waiting in a poll(), interrupt + * the poll(), and continue the iteration process. **/ void g_main_context_wakeup (GMainContext *context) diff --git a/glib/gmem.c b/glib/gmem.c index 6f564f2..9fbbb80 100644 --- a/glib/gmem.c +++ b/glib/gmem.c @@ -228,14 +228,13 @@ static gboolean vtable_set = FALSE; * * Checks whether the allocator used by g_malloc() is the system's * malloc implementation. If it returns %TRUE memory allocated with - * malloc() can be used interchangeable with - * memory allocated using g_malloc(). This function is useful for - * avoiding an extra copy of allocated memory returned by a - * non-GLib-based API. + * malloc() can be used interchangeable with memory allocated using g_malloc(). + * This function is useful for avoiding an extra copy of allocated memory returned + * by a non-GLib-based API. * * A different allocator can be set using g_mem_set_vtable(). * - * Return value: if %TRUE, malloc() and g_malloc() can be mixed. + * Return value: if %TRUE, malloc() and g_malloc() can be mixed. **/ gboolean g_mem_is_system_malloc (void) diff --git a/glib/gspawn.c b/glib/gspawn.c index 77d44fb..c56b364 100644 --- a/glib/gspawn.c +++ b/glib/gspawn.c @@ -79,7 +79,7 @@ g_spawn_error_quark (void) * @argv: child's argument vector * @envp: child's environment, or %NULL to inherit parent's * @flags: flags from #GSpawnFlags - * @child_setup: function to run in the child just before exec() + * @child_setup: function to run in the child just before exec() * @user_data: user data for @child_setup * @child_pid: return location for child process ID, or %NULL * @error: return location for error @@ -179,19 +179,18 @@ read_data (GString *str, * @argv: child's argument vector * @envp: child's environment, or %NULL to inherit parent's * @flags: flags from #GSpawnFlags - * @child_setup: function to run in the child just before exec() + * @child_setup: function to run in the child just before exec() * @user_data: user data for @child_setup * @standard_output: return location for child output * @standard_error: return location for child error messages - * @exit_status: child exit status, as returned by waitpid() + * @exit_status: child exit status, as returned by waitpid() * @error: return location for error * * Executes a child synchronously (waits for the child to exit before returning). * All output from the child is stored in @standard_output and @standard_error, * if those parameters are non-%NULL. If @exit_status is non-%NULL, the exit * status of the child is stored there as it would be returned by - * waitpid(); standard UNIX macros such as - * WIFEXITED() and WEXITSTATUS() + * waitpid(); standard UNIX macros such as WIFEXITED() and WEXITSTATUS() * must be used to evaluate the exit status. If an error occurs, no data is * returned in @standard_output, @standard_error, or @exit_status. * @@ -415,7 +414,7 @@ g_spawn_sync (const gchar *working_directory, * @argv: child's argument vector * @envp: child's environment, or %NULL to inherit parent's * @flags: flags from #GSpawnFlags - * @child_setup: function to run in the child just before exec() + * @child_setup: function to run in the child just before exec() * @user_data: user data for @child_setup * @child_pid: return location for child process ID, or %NULL * @standard_input: return location for file descriptor to write to child's stdin, or %NULL @@ -433,22 +432,21 @@ g_spawn_sync (const gchar *working_directory, * will only be searched if you pass the %G_SPAWN_SEARCH_PATH flag. * * On Windows, the low-level child process creation API - * (CreateProcess())doesn't use argument vectors, + * (CreateProcess())doesn't use argument vectors, * but a command line. The C runtime library's * spawn*() family of functions (which * g_spawn_async_with_pipes() eventually calls) paste the argument * vector elements into a command line, and the C runtime startup code * does a corresponding recostruction of an argument vector from the - * command line, to be passed to - * main(). Complications arise when you have + * command line, to be passed to main(). Complications arise when you have * argument vector elements that contain spaces of double quotes. The - * spawn() functions don't do any quoting or + * spawn*() functions don't do any quoting or * escaping, but on the other hand the startup code does do unquoting * and unescaping in order to enable receiving arguments with embedded * spaces or double quotes. To work around this asymmetry, * g_spawn_async_with_pipes() will do quoting and escaping on argument * vector elements that need it before calling the C runtime - * spawn() function. + * spawn() function. * * @envp is a %NULL-terminated array of strings, where each string * has the form KEY=VALUE. This will become @@ -458,10 +456,10 @@ g_spawn_sync (const gchar *working_directory, * @flags should be the bitwise OR of any flags you want to affect the * function's behavior. On Unix, the %G_SPAWN_DO_NOT_REAP_CHILD means * that the child will not be automatically reaped; you must call - * waitpid() or handle %SIGCHLD yourself, or the + * waitpid() or handle %SIGCHLD yourself, or the * child will become a zombie. On Windows, the flag means that a * handle to the child will be returned @child_pid. You must call - * CloseHandle() on it eventually (or exit the + * CloseHandle() on it eventually (or exit the * process), or the child processs will continue to take up some table * space even after its death. Quite similar to zombies on Unix, * actually. @@ -469,7 +467,7 @@ g_spawn_sync (const gchar *working_directory, * %G_SPAWN_LEAVE_DESCRIPTORS_OPEN means that the parent's open file * descriptors will be inherited by the child; otherwise all * descriptors except stdin/stdout/stderr will be closed before - * calling exec() in the child. %G_SPAWN_SEARCH_PATH + * calling exec() in the child. %G_SPAWN_SEARCH_PATH * means that argv[0] need not be an absolute path, it * will be looked for in the user's PATH. * %G_SPAWN_STDOUT_TO_DEV_NULL means that the child's standard output will @@ -491,28 +489,26 @@ g_spawn_sync (const gchar *working_directory, * platforms, the function is called in the child after GLib has * performed all the setup it plans to perform (including creating * pipes, closing file descriptors, etc.) but before calling - * exec(). That is, @child_setup is called just - * before calling exec() in the child. Obviously + * exec(). That is, @child_setup is called just + * before calling exec() in the child. Obviously * actions taken in this function will only affect the child, not the - * parent. On Windows, there is no separate - * fork() and exec() + * parent. On Windows, there is no separate fork() and exec() * functionality. Child processes are created and run right away with - * one API call, CreateProcess(). @child_setup is + * one API call, CreateProcess(). @child_setup is * called in the parent process just before creating the child * process. You should carefully consider what you do in @child_setup * if you intend your software to be portable to Windows. * * If non-%NULL, @child_pid will on Unix be filled with the child's * process ID. You can use the process ID to send signals to the - * child, or to waitpid() if you specified the + * child, or to waitpid() if you specified the * %G_SPAWN_DO_NOT_REAP_CHILD flag. On Windows, @child_pid will be * filled with a handle to the child process only if you specified the * %G_SPAWN_DO_NOT_REAP_CHILD flag. You can then access the child * process using the Win32 API, for example wait for its termination * with the WaitFor*() functions, or examine its - * exit code with GetExitCodeProcess(). You - * should close the handle with CloseHandle() - * when you no longer need it. + * exit code with GetExitCodeProcess(). You should close the handle + * with CloseHandle() when you no longer need it. * * If non-%NULL, the @standard_input, @standard_output, @standard_error * locations will be filled with file descriptors for writing to the child's diff --git a/glib/gtree.c b/glib/gtree.c index 0fd3f4d..6d4f108 100644 --- a/glib/gtree.c +++ b/glib/gtree.c @@ -170,8 +170,7 @@ g_tree_node_destroy (GTreeNode *node, /** * g_tree_new: * @key_compare_func: the function used to order the nodes in the #GTree. - * It should return values similar to the standard - * strcmp() function - + * It should return values similar to the standard strcmp() function - * 0 if the two arguments are equal, a negative value if the first argument * comes before the second, or a positive value if the first argument comes * after the second. @@ -191,7 +190,7 @@ g_tree_new (GCompareFunc key_compare_func) /** * g_tree_new_with_data: - * @key_compare_func: qsort()-style comparison function. + * @key_compare_func: qsort()-style comparison function. * @key_compare_data: data to pass to comparison function. * * Creates a new #GTree with a comparison function that accepts user data. @@ -211,7 +210,7 @@ g_tree_new_with_data (GCompareDataFunc key_compare_func, /** * g_tree_new_full: - * @key_compare_func: qsort()-style comparison function. + * @key_compare_func: qsort()-style comparison function. * @key_compare_data: data to pass to comparison function. * @key_destroy_func: a function to free the memory allocated for the key * used when removing the entry from the #GTree or %NULL if you don't diff --git a/glib/gunicollate.c b/glib/gunicollate.c index 243b4fb..9dcc6d2 100644 --- a/glib/gunicollate.c +++ b/glib/gunicollate.c @@ -41,7 +41,7 @@ extern gunichar *_g_utf8_normalize_wc (const gchar *str, * correct rules for the current locale. When sorting a large * number of strings, it will be significantly faster to * obtain collation keys with g_utf8_collate_key() and - * compare the keys with strcmp() when + * compare the keys with strcmp() when * sorting instead of sorting the original strings. * * Return value: -1 if @str1 compares before @str2, 0 if they @@ -166,9 +166,9 @@ utf8_encode (char *buf, wchar_t val) * @len: length of @str, in bytes, or -1 if @str is nul-terminated. * * Converts a string into a collation key that can be compared - * with other collation keys using strcmp(). + * with other collation keys using strcmp(). * The results of comparing the collation keys of two strings - * with strcmp() will always be the same as + * with strcmp() will always be the same as * comparing the two original keys with g_utf8_collate(). * * Return value: a newly allocated string. This string should diff --git a/glib/gutf8.c b/glib/gutf8.c index a0f056e..88627a2 100644 --- a/glib/gutf8.c +++ b/glib/gutf8.c @@ -329,7 +329,7 @@ g_utf8_pointer_to_offset (const gchar *str, * @src: UTF-8 encoded string * @n: character count * - * Like the standard C strncpy() function, but + * Like the standard C strncpy() function, but * copies a given number of characters instead of a given number of * bytes. The @src string must be valid UTF-8 encoded text. * (Use g_utf8_validate() on all text before trying to use UTF-8 diff --git a/glib/gwin32.c b/glib/gwin32.c index 324ae09..10851e6 100644 --- a/glib/gwin32.c +++ b/glib/gwin32.c @@ -517,7 +517,7 @@ g_win32_getlocale (void) * Translate a Win32 error code (as returned by GetLastError()) into * the corresponding message. The message is either language neutral, * or in the thread's language, or the user's language, the system's - * language, or US English (see docs for FormatMessage()). * + * language, or US English (see docs for FormatMessage()). * * The returned string should be deallocated with g_free(). * * Returns: newly-allocated error message -- 2.7.4