Ignore:
Timestamp:
Dec 20, 2016, 4:07:32 PM (7 years ago)
Author:
Bruno Cornec
Message:

New 3?3 banch for incorporation of latest busybox 1.25. Changing minor version to handle potential incompatibilities.

Location:
branches/3.3
Files:
1 edited
1 copied

Legend:

Unmodified
Added
Removed
  • branches/3.3/mindi-busybox/libbb/verror_msg.c

    r2725 r3621  
    1212#endif
    1313
     14#if ENABLE_FEATURE_SYSLOG
     15smallint syslog_level = LOG_ERR;
     16#endif
    1417smallint logmode = LOGMODE_STDIO;
    1518const char *msg_eol = "\n";
     
    1821{
    1922    char *msg, *msg1;
     23    char stack_msg[80];
    2024    int applet_len, strerr_len, msgeol_len, used;
    2125
     
    2529    if (!s) /* nomsg[_and_die] uses NULL fmt */
    2630        s = ""; /* some libc don't like printf(NULL) */
     31
     32    applet_len = strlen(applet_name) + 2; /* "applet: " */
     33    strerr_len = strerr ? strlen(strerr) : 0;
     34    msgeol_len = strlen(msg_eol);
     35
     36    /* This costs ~90 bytes of code, but avoids costly
     37     * malloc()[in vasprintf]+realloc()+memmove()+free() in 99% of cases.
     38     * ~40% speedup.
     39     */
     40    if ((int)sizeof(stack_msg) - applet_len > 0) {
     41        va_list p2;
     42
     43        /* It is not portable to use va_list twice, need to va_copy it */
     44        va_copy(p2, p);
     45        used = vsnprintf(stack_msg + applet_len, (int)sizeof(stack_msg) - applet_len, s, p2);
     46        va_end(p2);
     47        msg = stack_msg;
     48        used += applet_len;
     49        if (used < (int)sizeof(stack_msg) - 3 - msgeol_len - strerr_len)
     50            goto add_pfx_and_sfx;
     51    }
    2752
    2853    used = vasprintf(&msg, s, p);
     
    3560     * children can produce log messages simultaneously. */
    3661
    37     applet_len = strlen(applet_name) + 2; /* "applet: " */
    38     strerr_len = strerr ? strlen(strerr) : 0;
    39     msgeol_len = strlen(msg_eol);
    4062    /* can't use xrealloc: it calls error_msg on failure,
    4163     * that may result in a recursion */
     
    5072        memmove(msg + applet_len, msg, used);
    5173        used += applet_len;
     74 add_pfx_and_sfx:
    5275        strcpy(msg, applet_name);
    5376        msg[applet_len - 2] = ':';
     
    7194#if ENABLE_FEATURE_SYSLOG
    7295    if (logmode & LOGMODE_SYSLOG) {
    73         syslog(LOG_ERR, "%s", msg + applet_len);
     96        syslog(syslog_level, "%s", msg + applet_len);
    7497    }
    7598#endif
    76     free(msg);
     99    if (msg != stack_msg)
     100        free(msg);
    77101}
    78102
Note: See TracChangeset for help on using the changeset viewer.