static int put_ipv4addr (ID cepid, ULONGEST *addr, int width) { int len = 3; /* 3 は '.' の文字数 */ #if SIL_ENDIAN == SIL_ENDIAN_BIG len += put_num(cepid, (*addr >> 24) & 0xff, 10, radhex, 0, FALSE, ' '); put_char(cepid, '.'); len += put_num(cepid, (*addr >> 16) & 0xff, 10, radhex, 0, FALSE, ' '); put_char(cepid, '.'); len += put_num(cepid, (*addr >> 8) & 0xff, 10, radhex, 0, FALSE, ' '); put_char(cepid, '.'); len += put_num(cepid, *addr & 0xff, 10, radhex, 0, FALSE, ' '); #else /* of #if SIL_ENDIAN == SIL_ENDIAN_BIG */ len += put_num(cepid, *addr & 0xff, 10, radhex, 0, FALSE, ' '); put_char(cepid, '.'); len += put_num(cepid, (*addr >> 8) & 0xff, 10, radhex, 0, FALSE, ' '); put_char(cepid, '.'); len += put_num(cepid, (*addr >> 16) & 0xff, 10, radhex, 0, FALSE, ' '); put_char(cepid, '.'); len += put_num(cepid, (*addr >> 24) & 0xff, 10, radhex, 0, FALSE, ' '); #endif /* of #if SIL_ENDIAN == SIL_ENDIAN_BIG */ for ( ; len < width; len ++) put_char(cepid, ' '); return len; }
static void proc_printr(proc_entry *t, int level){ int i; if (t->count == 0){ return; } if (t->count > 1){ put_num(t->count); put_str("*["); } put(t->name.s, t->name.len); for(i=0;i<t->childs.len; ++i){ if (t->childs.s[i]->count == 0) continue; put_sep(t,t->childs.s[i],level); proc_printr(t->childs.s[i], level); } if (t->count > 1){ put_str("]"); } }
static int put_macaddr (ID cepid, char *mac, int width) { int oct, len; for (oct = 5; oct -- > 0; ) { put_num(cepid, *mac ++, 16, radhex, 2, FALSE, '0'); put_char(cepid, ':'); } put_num(cepid, *mac, 16, radhex, 2, FALSE, '0'); for (len = 17; len < width; len ++) put_char(cepid, ' '); return len; }
static int put_ipv6addr (ID cepid, const T_IN6_ADDR *addr, int width) { int len = 0, ix; BOOL omit = FALSE, zero = FALSE; if (addr == NULL) { put_char(cepid, '0'); put_char(cepid, ':'); put_char(cepid, ':'); put_char(cepid, '0'); len = 4; } else { for (ix = 0; ix < sizeof(T_IN6_ADDR) / 2; ix ++) { if (omit) { len += put_num(cepid, addr->s6_addr16[ix], 16, radhex, 0, FALSE, ' '); if (ix < 7) { put_char(cepid, ':'); len ++; } } else if (ix > 0 && ix < 7 && addr->s6_addr16[ix] == 0) zero = TRUE; else { if (zero) { omit = TRUE; put_char(cepid, ':'); len ++; } len += put_num(cepid, addr->s6_addr16[ix], 16, radhex, 0, FALSE, ' '); if (ix < 7) { put_char(cepid, ':'); len ++; } } } for ( ; len < width; len ++) put_char(cepid, ' '); } return len; }
static int_t put_ipv6addr (ID cepid, const T_IN6_ADDR *addr, int_t width) { int_t len = 0, ix; bool_t omit = false, zero = false; if (addr == NULL) { put_char(cepid, '0'); put_char(cepid, ':'); put_char(cepid, ':'); put_char(cepid, '0'); len = 4; } else { for (ix = 0; ix < sizeof(T_IN6_ADDR) / 2; ix ++) { if (omit) { len += put_num(cepid, addr->s6_addr16[ix], 16, radhex, 0, false, ' '); if (ix < 7) { put_char(cepid, ':'); len ++; } } else if (ix > 0 && ix < 7 && addr->s6_addr16[ix] == 0) zero = true; else { if (zero) { omit = true; put_char(cepid, ':'); len ++; } len += put_num(cepid, addr->s6_addr16[ix], 16, radhex, 0, false, ' '); if (ix < 7) { put_char(cepid, ':'); len ++; } } } for ( ; len < width; len ++) put_char(cepid, ' '); } return len; }
static void add(int i) { int tmp; mylock(&lock); get_num(&tmp); add_num(&tmp, i); put_num(&tmp); myunlock(&lock); }
ER net_syslog (UINT prio, const char *format, ...) { LONGEST val; SYSLOG log; va_list ap; char padchar, *str; int ch, width, longflag, left, i, c; if (connected) { syscall(wai_sem(SEM_TCP_SYSLOG)); va_start(ap, format); while ((ch = *format ++) != '\0') { if (ch != '%') { /* 書式指定以外 */ put_char(TCP_CEPID, (char)ch); continue; } width = longflag = 0; padchar = ' '; if (ch == '-') { /* 左詰め */ format ++; left = -1; } else left = 1; if ((ch = *format ++) == '0') { /* 上位桁の 0 */ padchar = '0'; ch = *format ++; } while ('0' <= ch && ch <= '9') { /* 出力幅 */ width = width * 10 + ch - '0'; ch = *format ++; } while (ch == 'l') { /* long (long) の指定 */ longflag ++; ch = *format ++; } switch (ch) { case 'd': val = GET_ARG(ap, longflag); if (val >= 0) put_num(TCP_CEPID, val, 10, radhex, width * left, FALSE, padchar); else put_num(TCP_CEPID, -val, 10, radhex, width * left, TRUE, padchar); break; case 'u': val = GET_ARG(ap, longflag); put_num(TCP_CEPID, val, 10, radhex, width * left, FALSE, padchar); break; case 'x': val = GET_ARG(ap, longflag); put_num(TCP_CEPID, val, 16, radhex, width * left, FALSE, padchar); break; case 'X': val = GET_ARG(ap, longflag); put_num(TCP_CEPID, val, 16, radHEX, width * left, FALSE, padchar); break; case 'c': ch = va_arg(ap, int); put_char(TCP_CEPID, (char)ch); break; case 's': str = va_arg(ap, char*); while ((ch = *str ++) != '\0') { put_char(TCP_CEPID, (char)ch); width --; } while (width -- > 0) put_char(TCP_CEPID, ' '); break; case 'I': #ifdef SUPPORT_INET4 val = GET_ARG(ap, longflag); put_ipv4addr(TCP_CEPID, (ULONGEST *)val, width); #endif /* of #ifdef SUPPORT_INET4 */ #ifdef SUPPORT_INET6 str = va_arg(ap, char*); put_ipv6addr(TCP_CEPID, (T_IN6_ADDR *)str, width); #endif /* of #ifdef SUPPORT_INET6 */ break; case 'M': str = va_arg(ap, char*); put_macaddr(TCP_CEPID, str, width); break; case '%': put_char(TCP_CEPID, '%'); break; case '0': format --; break; default: break; } } va_end(ap); put_char(TCP_CEPID, '\n'); flush_snd_buff(TCP_CEPID); syscall(sig_sem(SEM_TCP_SYSLOG)); return E_OK; } else {