Magellan Linux

Diff of /trunk/mkinitrd-magellan/busybox/libbb/verror_msg.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 983 by niro, Fri Apr 24 18:33:46 2009 UTC revision 984 by niro, Sun May 30 11:32:42 2010 UTC
# Line 15  const char *msg_eol = "\n"; Line 15  const char *msg_eol = "\n";
15    
16  void FAST_FUNC bb_verror_msg(const char *s, va_list p, const char* strerr)  void FAST_FUNC bb_verror_msg(const char *s, va_list p, const char* strerr)
17  {  {
18   char *msg;   char *msg, *msg1;
19   int applet_len, strerr_len, msgeol_len, used;   int applet_len, strerr_len, msgeol_len, used;
20    
21   if (!logmode)   if (!logmode)
# Line 36  void FAST_FUNC bb_verror_msg(const char Line 36  void FAST_FUNC bb_verror_msg(const char
36   applet_len = strlen(applet_name) + 2; /* "applet: " */   applet_len = strlen(applet_name) + 2; /* "applet: " */
37   strerr_len = strerr ? strlen(strerr) : 0;   strerr_len = strerr ? strlen(strerr) : 0;
38   msgeol_len = strlen(msg_eol);   msgeol_len = strlen(msg_eol);
39     /* can't use xrealloc: it calls error_msg on failure,
40     * that may result in a recursion */
41   /* +3 is for ": " before strerr and for terminating NUL */   /* +3 is for ": " before strerr and for terminating NUL */
42   msg = xrealloc(msg, applet_len + used + strerr_len + msgeol_len + 3);   msg1 = realloc(msg, applet_len + used + strerr_len + msgeol_len + 3);
43   /* TODO: maybe use writev instead of memmoving? Need full_writev? */   if (!msg1) {
44   memmove(msg + applet_len, msg, used);   msg[used++] = '\n'; /* overwrites NUL */
45   used += applet_len;   applet_len = 0;
46   strcpy(msg, applet_name);   } else {
47   msg[applet_len - 2] = ':';   msg = msg1;
48   msg[applet_len - 1] = ' ';   /* TODO: maybe use writev instead of memmoving? Need full_writev? */
49   if (strerr) {   memmove(msg + applet_len, msg, used);
50   if (s[0]) { /* not perror_nomsg? */   used += applet_len;
51   msg[used++] = ':';   strcpy(msg, applet_name);
52   msg[used++] = ' ';   msg[applet_len - 2] = ':';
53     msg[applet_len - 1] = ' ';
54     if (strerr) {
55     if (s[0]) { /* not perror_nomsg? */
56     msg[used++] = ':';
57     msg[used++] = ' ';
58     }
59     strcpy(&msg[used], strerr);
60     used += strerr_len;
61   }   }
62   strcpy(&msg[used], strerr);   strcpy(&msg[used], msg_eol);
63   used += strerr_len;   used += msgeol_len;
64   }   }
  strcpy(&msg[used], msg_eol);  
65    
66   if (logmode & LOGMODE_STDIO) {   if (logmode & LOGMODE_STDIO) {
67   fflush(stdout);   fflush_all();
68   full_write(STDERR_FILENO, msg, used + msgeol_len);   full_write(STDERR_FILENO, msg, used);
69   }   }
70   if (logmode & LOGMODE_SYSLOG) {   if (logmode & LOGMODE_SYSLOG) {
71   syslog(LOG_ERR, "%s", msg + applet_len);   syslog(LOG_ERR, "%s", msg + applet_len);
# Line 116  void FAST_FUNC bb_verror_msg(const char Line 125  void FAST_FUNC bb_verror_msg(const char
125   iov[1].iov_len = 2;   iov[1].iov_len = 2;
126   /*iov[2].iov_base = msgc;*/   /*iov[2].iov_base = msgc;*/
127   /*iov[2].iov_len = used;*/   /*iov[2].iov_len = used;*/
128   fflush(stdout);   fflush_all();
129   writev(2, iov, 3);   writev(STDERR_FILENO, iov, 3);
130   }   }
131   if (logmode & LOGMODE_SYSLOG) {   if (logmode & LOGMODE_SYSLOG) {
132   syslog(LOG_ERR, "%s", msgc);   syslog(LOG_ERR, "%s", msgc);

Legend:
Removed from v.983  
changed lines
  Added in v.984